=Start=
缘由:
【漏洞预警】雪藏11年:Linux kernel DCCP double-free 权限提升漏洞(CVE-2017-6074)
正文:
参考解答:
对内核模块来说,黑名单是指禁止某个模块装入的机制。当对应的硬件不存在或者装入某个模块会导致问题时很有用。 # vim /etc/modprobe.d/blacklist.conf ... install MODULE_NAME /bin/false ... 这样就可以 "屏蔽" 模块(MODULE_NAME)及所有依赖它的模块。
&
install modulename command... 这是最强大的原语:它告诉 modprobe 运行你的命令,而不是常规地将模块插入到内核中。该命令可以是任何shell命令:这允许您进行任何类型的复杂处理,您可能希望。例如,如果模块“fred”在已经安装的模块“barney”上运行得更好(但是它不依赖于它,所以modprobe不会自动加载它),你可以说"install fred /sbin/modprobe barney; /sbin/modprobe --ignore-install fred",这将做你想要的。注意--ignore-install,这会阻止第二个modprobe再次运行相同的安装命令。 您也可以使用 install 来创造不存在的模块。例如:"install probe-ethernet /sbin/modprobe e100 || /sbin/modprobe eepro100",当您执行"modprobe probe-ethernet"时,这将首先尝试加载e100驱动程序,如果失败,再尝试加载eepro100驱动程序。 如果在命令中使用字符串"$CMDLINE_OPTS",它将被modprobe命令行上指定的任何选项替换。这可能是有用的,因为用户期望"modprobe fred opt=1"将"opt=1"中的arg传递给模块,即使配置文件中有一个install命令。所以我们上面的例子变成了"install fred /sbin/modprobe barney; /sbin/modprobe --ignore-install fred $CMDLINE_OPTS"
参考链接:
- https://linux.die.net/man/5/modprobe.d
- https://www.systutorials.com/docs/linux/man/5-modprobe.d/
- https://wiki.archlinux.org/index.php/Kernel_modules_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
- https://wiki.archlinux.org/index.php/Kernel_modules
- https://askubuntu.com/questions/110341/how-to-blacklist-kernel-modules
=END=
《 “Linux下如何禁止加载某些模块” 》 有 3 条评论
LKRG – 可动态加载的一个 Linux 内核运行时保护模块,用于内核完整性检查、关于数据篡改检查、内核漏洞攻击检测
https://twitter.com/i/web/status/958398684982661120
http://www.openwall.com/lists/announce/2018/01/29/1
http://www.openwall.com/lkrg/
如何装载/卸载 Linux 内核模块 | Linux 中国
https://mp.weixin.qq.com/s/WvYqNzcNRoL5ZToShovFrA
https://opensource.com/article/18/5/how-load-or-unload-linux-kernel-module
`
# 查找内核模块
按照公认的约定,内核模块是位于 /lib/modules/ 目录下的具有 .ko(内核对象)扩展名的文件。
$ ls /lib/modules/$(uname -r)
$ ls /lib/modules/$(uname -r)/kernel
$ lsmod
$ lsmod | wc -l
$ modprobe -c | wc -l
$ find /lib/modules/$(uname -r) -type f -name ath9k*
# modprobe ath9k
# rmmod uvcvideo
# modprobe uvcvideo
`
如何使用 Linux Kernel Runtime Guard (LKRG) 的详细介绍
https://www.defensive-security.com/blog/playing-with-linux-kernel-runtime-guard-lkrg
`
# uname -a
# yum install kernel-devel
# pwd
/root
# wget https://www.openwall.com/lkrg/lkrg-0.5.tar.gz
# tar -zxvf lkrg-0.5.tar.gz
# cd lkrg-0.5
# make
# modinfo p_lkrg.ko
# git clone https://github.com/mncoppola/suterusu.git
# cd suterusu
# make linux-x86_64 KDIR=/usr/src/kernels/3.10.0-862.14.4.el7.x86_64/
# insmod suterusu.ko
# gcc sock.c -o sock
# cp socker /tmp/
# cd /root/lkrg-0.5
# insmod p_lkrg.ko
# dmesg | tail
# su – cr0
$ id
uid=1000(cr0) gid=1000(cr0) groups=1000(cr0)
$ /tmp/sock
Dropping to root shell
Killed
$ dmesg | tail
`