linux防火墙规则设计核心是精准控制流量,iptables通过input/output/forward链实现,建议默认drop再按需放行,严格遵循最小权限原则,结合state、limit等模块增强安全性,并及时保存调试日志。

Linux防火墙规则设计核心在于明确流量控制目标,iptables是实现这一目标的底层工具,但规则不是越多越好,而是越精准越安全。
明确进出方向与默认策略
iptables有INPUT、OUTPUT、FORWARD三张链,服务器场景重点关注INPUT(进)和OUTPUT(出)。建议先设默认策略为DROP,再按需放行,避免遗漏导致暴露:
- INPUT默认拒绝:防止未授权访问,如iptables -P INPUT DROP
- OUTPUT默认允许或限制:生产环境建议设为ACCEPT(保障服务主动外连),敏感系统可设DROP后白名单放行
- 设置前务必保留ssh端口放行规则,否则可能锁死远程连接
只放行必需端口与协议
最小权限原则是防火墙设计铁律。例如Web服务器只需开放80/443,数据库仅允许可信IP访问3306:
- 放行本机回环:iptables -A INPUT -i lo -j ACCEPT
- 放行已建立连接:iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
- 开放SSH(带源IP限制更佳):iptables -A INPUT -p tcp –dport 22 -s 192.168.1.100 -j ACCEPT
- 禁止全网ping:iptables -A INPUT -p icmp –icmp-type echo-request -j DROP
利用扩展模块提升精度
基础规则易被绕过,用state、iprange、limit等模块可增强控制力:
- 防SSH暴力破解:iptables -A INPUT -p tcp –dport 22 -m limit –limit 3/min –limit-burst 3 -j ACCEPT
- 限制同一IP并发连接数:iptables -A INPUT -p tcp –dport 80 -m connlimit –connlimit-above 20 -j REJECT
- 指定IP段访问DB:iptables -A INPUT -p tcp –dport 3306 -m iprange –src-range 10.0.2.10-10.0.2.20 -j ACCEPT
保存与调试要同步进行
iptables规则重启即失效,必须显式保存;调试阶段禁用默认DROP,用LOG目标观察匹配行为: