免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2979 | 回复: 9
打印 上一主题 下一主题

[内核模块] 如何禁止内核加载模块? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-01-08 07:08 |只看该作者 |倒序浏览
如何禁止内核加载某些模块?

需求:
1)内核要保证有插入模块的能力,因为现网定位问题需要插入模块。
2)维护不会太麻烦,因为数据中心的机器上万台,要考虑维护工作量

方法有一些:
如:
1)把模块全部编译进内核, 缺点是可能经常要编译内核,不能满足需求1)
2)修改/etc/modprobe.conf.local , 缺点是只能禁止modprobe 去加载,不能禁止insmod
3)在业务正常run之后把modprobe ,insmod 等程序删除掉,缺点是有些系统命令运行时需要modprobe模块,这时会运行失败,影响客户体验,如ss


各位大侠看看还有哪些方法?

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
2 [报告]
发表于 2014-01-08 08:33 |只看该作者
todaygood 发表于 2014-01-08 07:08
如何禁止内核加载某些模块?

需求:

是需要禁止手工加载?还是自动加载?如果是禁止系统自动加载的话,可以将需要禁用的模块加入blacklist。
如果是需要禁止手工加载,则可以考虑通过insmod和modprobe的权限(ACL)来控制使用范围。

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
3 [报告]
发表于 2014-01-08 09:49 |只看该作者
回复 1# todaygood
如何禁止内核加载某些模块?

需求:
1)内核要保证有插入模块的能力,因为现网定位问题需要插入模块。
2)维护不会太麻烦,因为数据中心的机器上万台,要考虑维护工作量

方法有一些:
如:
1)把模块全部编译进内核, 缺点是可能经常要编译内核,不能满足需求1)
2)修改/etc/modprobe.conf.local , 缺点是只能禁止modprobe 去加载,不能禁止insmod
3)在业务正常run之后把modprobe ,insmod 等程序删除掉,缺点是有些系统命令运行时需要modprobe模块,这时会运行失败,影响客户体验,如ss


各位大侠看看还有哪些方法?


这个功能可以SUSE和Centos的签名功能,只有通过签名的模块才可以加载

论坛徽章:
0
4 [报告]
发表于 2014-01-08 16:32 |只看该作者
回复 3# 瀚海书香

不错,但是有些通过Suse/Centos签名的模块,我也不想让他加载,怎么办? 是不是需求不太明确?

其实,我想有这么一个东西:

平常disable 模块加载功能, 特殊情况下(如在线调试,一些系统命令)需要插入模块时 enable一下, 完事了再 disable 一下。
   

论坛徽章:
0
5 [报告]
发表于 2014-01-08 16:38 |只看该作者
回复 2# humjb_1983

需要加载模块的场景,一般都是root用户, 这时用ACL能限制吗?
   

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
6 [报告]
发表于 2014-01-08 16:46 |只看该作者
todaygood 发表于 2014-01-08 16:38
回复 2# humjb_1983

需要加载模块的场景,一般都是root用户, 这时用ACL能限制吗?

root用户不好限制,建议最好限制root用户的使用,这样的话,可以通过sudo或者sticky位来控制用户可以执行的命令。

论坛徽章:
0
7 [报告]
发表于 2014-01-08 16:54 |只看该作者
我的需求是不是有些变态?
平常disable 模块加载功能, 特殊情况下(如在线调试,一些系统命令)需要插入模块时 enable一下, 完事了再 disable 一下。
实际上在root权限下,啥都可以做,这个开关好像是多了一道门槛,实际上只要root用户知道怎么打开,也是可以加载模块了,现在我就是想有一个普通人一般不知道的东西,只有少数人在需要时才能启用这个功能。

不知道是否有意义?

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
8 [报告]
发表于 2014-01-08 17:16 |只看该作者
todaygood 发表于 2014-01-08 16:54
我的需求是不是有些变态?
平常disable 模块加载功能, 特殊情况下(如在线调试,一些系统命令)需要插入 ...

确实有点怪异,想了一下,何不把insmod和modprobe文件改个名字,这个名字只有你和少数人知道,别人不知道,那么就只有你们能执行这个。
另外,应该也可以使用selinux对root用户的访问进行限制。

论坛徽章:
2
CU十二周年纪念徽章
日期:2013-10-24 15:41:34处女座
日期:2013-12-27 22:22:41
9 [报告]
发表于 2014-01-08 18:57 |只看该作者
/proc/sys/kernel/modules_disabled

想埋得更深就自己实现这个功能,把接口藏在某个驱动里。还可以更进一步隐蔽,比如必需echo进一个密码才能开启模块功能。

论坛徽章:
2
酉鸡
日期:2013-09-26 11:11:15摩羯座
日期:2014-01-08 13:45:19
10 [报告]
发表于 2014-01-10 10:17 |只看该作者
回复 4# todaygood
土法如何?
在线调试先上传所需模块,调试完后删除


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP