首页/安全/安全加固速查/iptables 最小基线规则集(白名单模型)
防火墙与访问控制50 条

iptables 最小基线规则集(白名单模型)

iptables 加固的标准骨架:默认策略 DROP,先放 loopback 与已建立连接,再逐条放行业务端口——先拒绝后放行的白名单模型。

安全加固速查安全更新于 2026-10-13

白名单模型的最小骨架

iptables 加固的标准结构是白名单:先把默认策略设为拒绝,再逐条放行确需的流量。顺序上必须先写放行规则再改默认策略,否则中间会出现「拒绝一切」的瞬间窗口。骨架本身很短——放行本机回环、放行已建立的连接、放行业务端口、记录被拒流量、最后拒绝其余,理解这几行比记住几十条规则更有用。

基本信息

加固项默认拒绝与状态跟踪
适用平台Linux(iptables 与 nft 兼容层)
风险等级高
基线INPUT 与 FORWARD 默认 DROP,OUTPUT 按组织策略
关键机制conntrack 状态跟踪,避免为返回流量单独开规则

典型使用场景

  • 新机器初始化:以骨架为起点按业务逐条放行,比事后清理宽松规则更可控
  • 对外服务器收口:把默认姿态从接受改为拒绝,消除未登记端口
  • 故障排查:临时放开后逐条收紧,逐步定位是哪个端口或来源受限
  • 容器与网关主机:确认 FORWARD 策略是否需要调整以配合转发
  • 合规整改:默认拒绝是边界防护条款里最常见的落地要求

基线骨架(配合 iptables-apply 或带外通道执行)

基线骨架(配合 iptables-apply 或带外通道执行)
iptables -A INPUT -i lo -j ACCEPT                                   # 放行回环
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT   # 放行已建立连接
iptables -A INPUT -p tcp --dport 22 -j ACCEPT                       # 放行业务端口(示例)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -m limit --limit 10/min -j LOG --log-prefix 'IPT-DROP: '   # 限速记录
iptables -A INPUT -j DROP                                           # 其余拒绝
iptables -P INPUT DROP                                              # 最后再收默认策略
iptables -P FORWARD DROP; iptables -P OUTPUT ACCEPT

规则逐条读法

规则要素作用注意事项
-P INPUT DROP默认策略,未匹配即拒绝必须最后设置,否则会立即断开现有会话
-i lo -j ACCEPT放行本机回环通信删掉会出现本地服务互相调用失败等奇怪问题
conntrack 状态匹配放行已有连接的返回包有了它才不需要为返回流量写反向规则
--dport 放行按端口开放业务入口能加 -s 来源限制就不要留全开
LOG 加 limit记录被拒流量便于排查必须限速并放在拒绝之前,否则被扫描时日志暴涨
-j DROP兜底拒绝放在链尾,属白名单模型的收口动作
FORWARD 默认拒绝会影响容器与路由转发场景:宿主机是否运行容器、是否承担网关角色,直接决定这条策略是否合适。执行前先确认本机职责,远程操作时全程使用 iptables-apply 或准备好控制台带外通道。
iptables 规则默认只在内存中生效,重启即丢失。持久化方式随发行版不同:可用 iptables-save 与 iptables-restore 自建脚本,或使用发行版提供的服务(如 netfilter-persistent、iptables-services)。选一种并纳入配置管理,避免出现「重启后规则全没了」的情况。

上线顺序与验证

执行顺序建议固定为四步:先看当前规则留档,再添加放行规则,然后设置默认策略,最后从另一台机器实测业务端口连通性。任何一步失败都能立即用留档恢复。规则稳定后写入持久化配置,并在下次变更时重复同样的流程,避免规则在多次临时调整后失去结构。

易错点

  • 先设默认拒绝再写放行规则:中间窗口会让现有连接立即中断,远程操作时等同于把自己锁在外面
  • LOG 规则不限速或不放在拒绝之前:被扫描时日志量暴涨,既拖慢系统又冲掉有用记录
  • 删掉回环放行规则:本地服务之间的调用会莫名失败,排查时很难联想到防火墙
  • 忽略规则持久化:重启后策略回到全开放状态,是最常见的复查失败原因
  • 在容器宿主机上照抄骨架:FORWARD 默认拒绝会打断容器网络转发,需要按宿主机职责调整

数据来源与参考

  • netfilter 官方文档:iptables
  • NIST SP 800-41 rev1:防火墙策略指南

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌