内核模块黑名单是做什么的
减少攻击面的常规做法之一是禁用业务不需要的内核模块:等保核查常点名 cramfs、freevxfs、udf 等文件系统与 usb-storage 接口,因为外来介质挂载与特殊文件系统是常见的绕过路径。做法是在 /etc/modprobe.d 下写规则文件,用 install 加 /bin/false 的写法让模块既不能被自动加载,也不能被显式加载;若模块存在于 initramfs 中,还需要重建才能保证引导阶段同样禁用。
基本信息
| 配置目录 | /etc/modprobe.d/,自定义文件放这里 |
|---|---|
| 常用写法 | install 模块名 /bin/false |
| 生效范围 | 禁止自动加载与显式 modprobe |
| 卸载已加载模块 | modprobe -r 模块名 |
| 需重建场景 | 模块被打包进 initramfs 时需重新生成 |
典型使用场景
- 等保安全检查项整改:禁用不必要文件系统与外来存储接口
- 服务器加固:移除不需要的协议栈与外设支持,降低被利用面
- 桌面终端按需评估:禁用存储接口会影响 U 盘使用,需先确认业务需求
- 配合文件完整性与入侵检测,减少系统被插入异常模块的可能
- 迁移前的差异分析:确认被禁用模块是否被业务软件依赖
- 验收阶段逐台核对规则文件与实际加载状态是否一致
配置黑名单
配置黑名单
cat > /etc/modprobe.d/security-blacklist.conf <<'EOF'
install cramfs /bin/false # 禁用 cramfs 文件系统
install freevxfs /bin/false # 禁用 freevxfs 文件系统
install udf /bin/false # 禁用 UDF(光盘镜像)支持
install usb-storage /bin/false # 禁用 USB 存储接口(评估外设需求后)
EOF
modprobe -r cramfs 2>/dev/null # 已加载的先卸载
lsmod | grep -E 'cramfs|usb_storage' # 应无输出,确认已卸载
ls -l /etc/modprobe.d/security-blacklist.conf # 确认规则文件存在
# 若模块存在于 initramfs 中(如 usb-storage):
# dracut -f # 重建后再安排重启验证写法与效果对照
| 写法 | 拦截范围 | 适用建议 |
|---|---|---|
| blacklist 模块 | 只挡自动加载 | 需要保留手工加载能力时使用 |
| install 模块 /bin/false | 自动与显式加载都拦截 | 加固场景的推荐写法 |
| modprobe -r | 卸载当前已加载实例 | 配置后清理运行态 |
| lsmod 检查 | 确认实际加载状态 | 验证整改是否落地 |
| dracut -f | 重建引导阶段镜像 | 模块在 initramfs 中时必需 |
禁用 usb-storage 会同时影响 U 盘与部分 USB 光驱等外设,桌面终端应先评估外设需求再执行;服务器场景影响相对可控,但也要确认是否用于应急介质引导。
修改影响启动路径的模块配置前备份原文件,重建 initramfs 后安排一次重启验证;只在运行态 modprobe -r 而不落配置,重启后一切恢复原样。