Linux下如何禁止加载某些模块


=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"
参考链接:

=END=

, ,

《 “Linux下如何禁止加载某些模块” 》 有 3 条评论

  1. 如何装载/卸载 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
    `

  2. 如何使用 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
    `

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注