如何在Linux系统中使用Modprobe的黑名单功能禁用不安全的内核模块?
- 内容介绍
- 文章标签
- 相关推荐
本文共计908个文字,预计阅读时间需要4分钟。
blacklist module_name 几乎总会在生产环境失效——它阻止不了 udev 自动加载、阻止不了依赖的触发,也阻止不了模块已被预加载的情况。
为什么 blacklist 单独用不保险
modprobe 的 blacklist 只在 modprobe xxx 命令被显式调用时起作用。但现实中,USB 设备插入后由 udev 规则自动执行 modprobe usb-storage;某个网络模块可能被 nft 间接依赖而触发加载;甚至 initramfs 阶段就已把模块拉进内存。这些场景下,blacklist 完全不生效。
更关键的是:配置文件权限不对、后缀不是 .conf、或模块本身是 built-in(编译进内核而非 .ko 文件),都会让整条黑名单“静默失败”。
install module_name /bin/false 才是真正可靠的禁用方式
这条指令会覆盖所有加载路径——包括 modprobe 直接调用、依赖链触发、udev 自动加载。只要系统尝试加载该模块,就会执行 /bin/false 并立即返回失败。
本文共计908个文字,预计阅读时间需要4分钟。
blacklist module_name 几乎总会在生产环境失效——它阻止不了 udev 自动加载、阻止不了依赖的触发,也阻止不了模块已被预加载的情况。
为什么 blacklist 单独用不保险
modprobe 的 blacklist 只在 modprobe xxx 命令被显式调用时起作用。但现实中,USB 设备插入后由 udev 规则自动执行 modprobe usb-storage;某个网络模块可能被 nft 间接依赖而触发加载;甚至 initramfs 阶段就已把模块拉进内存。这些场景下,blacklist 完全不生效。
更关键的是:配置文件权限不对、后缀不是 .conf、或模块本身是 built-in(编译进内核而非 .ko 文件),都会让整条黑名单“静默失败”。
install module_name /bin/false 才是真正可靠的禁用方式
这条指令会覆盖所有加载路径——包括 modprobe 直接调用、依赖链触发、udev 自动加载。只要系统尝试加载该模块,就会执行 /bin/false 并立即返回失败。

