配置内核模块黑名单本身不能直接防范rootkit,真正起效的是install /bin/false强制失败、auditd源头监控和内核签名强制三者协同;单独blacklist几乎总失效,必须成对使用blacklist与install指令,并配合initramfs更新、modules_disabled启用及grub参数加固。

配置内核模块黑名单本身不能直接“防范 Rootkit”,它只是阻断已知风险模块的加载路径;真正起效的是 install 指令强制失败 + auditd 源头监控 + 内核签名强制 三者协同。单独 blacklist 几乎总失效,必须堵死所有加载入口。
用 install /bin/false 彻底封死模块加载
blacklist 只拦 modprobe 命令,拦不住 udev 自动加载、依赖触发、initramfs 预加载。真正可靠的写法是成对出现:
- 在 /etc/modprobe.d/ 下新建文件,如 disable-risky.conf,后缀必须为 .conf
- 每项禁用需同时写两行:
blacklist usb-storage
install usb-storage /bin/false - 模块名不带 .ko 或路径,只写内核识别名(如 btusb、n_hdlc、appletalk)
- 权限设为 644,否则 modprobe 静默跳过
验证是否真生效,不能只看 lsmod
改完配置后必须做三项检查,缺一不可:
一款AI工具,主要用于Monitor and clean up invalid Codex authentication files in CPA. Check quota status, disable files returning 401 errors, and perform dual verification before deletion.,适合需要提升相关任务效率的用户。
- 运行 modprobe -n -v 模块名:输出中必须含 install /bin/false,而非 insmod /lib/modules/...
- 插入对应硬件(如 U 盘),立刻执行 dmesg | tail -10:不应出现该模块 probe 成功日志(如 usb-storage 1-1:1.0: USB Mass Storage device)
- lsmod | grep 模块名 应无输出;若已加载,先 sudo modprobe -r 模块名 再查
配套加固:让黑名单不被绕过
仅靠黑名单不够,Rootkit 常绕过或伪造加载行为:
- 更新 initramfs:
Debian/Ubuntu 执行 sudo update-initramfs -u
RHEL/CentOS 执行 sudo dracut --force - 启用内核模块签名强制:
确认 CONFIG_MODULE_SIG_FORCE=y 已编译,且已部署可信密钥 - 运行时禁用加载:
echo 1 > /proc/sys/kernel/modules_disabled(重启失效,可写入 /etc/sysctl.conf) - 若模块是 built-in(grep CONFIG_USB_STORAGE /boot/config-$(uname -r) 输出为 =y),黑名单无效,只能加内核参数:modprobe.blacklist=usb-storage 到 GRUB_CMDLINE_LINUX_DEFAULT 并 update-grub 或 grub2-mkconfig
结合 auditd 实现行为级检测
黑名单防不住未知模块,auditd 能捕获真实加载行为:
- 在 /etc/audit/rules.d/10-lkm.rules 中添加:
-a always,exit -F arch=b64 -S init_module -k lkm_load
-a always,exit -F arch=b64 -S delete_module -k lkm_unload - 重载规则:sudo augenrules --load 或重启 auditd
- 重点筛查日志字段:
comm 异常(如 sh、python3)
exe 指向 /tmp/ 或 /dev/shm/
cwd="/tmp"
auid=4294967295(未审计用户) - 关联分析:
ausearch -m SYSCALL -sc init_module | grep "sig=0" 查无签名模块
ausearch -m SYSCALL -sc openat -f '.*\.ko$' 追踪 .ko 文件来源










