Linux防火墙规则设计_iptables实战

5次阅读

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/iptables,Ubuntu 用iptables-persistent
  • 加规则前用 iptables -L -n -v 看当前计数,确认新规则是否生效
  • 误操作锁死后,可通过物理机 / 控制台重置,或提前配置定时任务恢复临时规则
text=ZqhQzanResources