为什么禁用罕见协议模块
dccp、sctp、rds、tipc 这几个内核协议模块在普通服务器上几乎没有业务在用,却各自带着历史漏洞,dccp 的 CVE-2017-6074 就是本地提权里常被引用的例子。把用不到的协议栈关掉是缩小内核攻击面的低成本操作:模块不加载,对应的漏洞代码就不会被触发。
基本信息
| 加固项 | 网络协议栈收敛 |
|---|---|
| 适用平台 | Linux 常规服务器 |
| 实现方式 | modprobe.d 黑名单,install <模块> /bin/true |
| 涉及模块 | dccp、sctp、rds、tipc |
| 生效时机 | 已加载的模块需卸载或重启后才完整生效 |
| 风险等级 | 中 |
典型使用场景
- 通用互联网服务器:这四类协议完全用不到,直接关闭
- 协议栈爆出可提权漏洞、内核又暂时无法升级时,先禁用争取时间
- 合规基线核查:CIS 对这几项有明确要求
- 精简镜像与容器宿主:减少不必要的内核模块暴露
- 电信或工业场景:SCTP、TIPC 可能被真实业务使用,必须先逐项确认
加固与核查
加固与核查
# 写入黑名单:显式 modprobe 也会“成功但无效”
cat > /etc/modprobe.d/99-blacklist-net.conf <<'EOF'
install dccp /bin/true
install sctp /bin/true
install rds /bin/true
install tipc /bin/true
EOF
# 尝试卸载已加载的模块,被占用时失败属正常
modprobe -r dccp sctp rds tipc 2>/dev/null || true
# 核查:无输出即说明已干净
lsmod | grep -E '^(dccp|sctp|rds|tipc)' || echo clean逐项确认要点
| 模块 | 常见使用方 | 关闭前确认 |
|---|---|---|
| dccp | 普通服务器几乎不用 | 可优先关闭 |
| sctp | 电信网元、部分负载设备 | 确认无 SS7 over IP 类业务依赖 |
| rds | 少数集群与数据库互联方案 | 确认无对应集群特性在使用 |
| tipc | 特定集群与工业场景 | 确认无 TIPC 依赖后关闭 |
install 模块 /bin/true 的写法会让加载请求“成功返回但不生效”,排障时若看到 modprobe 不报错、模块却没起来,先查这个黑名单文件。
黑名单只对新加载生效:已经躺在内核里的模块行为不变,重启之后策略才算完整落地。
电信核心网、部分工业与集群方案会真实依赖 SCTP 或 TIPC,禁用前逐项确认协议依赖,不要一把全关。