Linux防火墙规则设计_iptables实战

6次阅读

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

Linux防火墙规则设计_iptables实战

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目标观察匹配行为:

  • 记录被拒绝的包(便于分析):iptables -A INPUT -j LOG –log-prefix “IPTABLES-DROP: “
  • centos 7+用iptables-save > /etc/sysconfig/iptablesubuntuiptables-persistent
  • 加规则前用iptables -L -n -v看当前计数,确认新规则是否生效
  • 误操作锁死后,可通过物理机/控制台重置,或提前配置定时任务恢复临时规则
text=ZqhQzanResources