iptables 防火墙基础:如何编写生产环境安全过滤规则

生产环境iptables防火墙配置核心是“最小必要通行”逻辑:先放行本地回环、已建立连接及关键服务端口(如SSH、HTTPS),再设INPUT默认策略为DROP,确保未匹配规则的入站流量一律拒绝。

iptables 防火墙基础:如何编写生产环境安全过滤规则

生产环境用 iptables 写防火墙规则,核心不是堆命令,而是建立“最小必要通行”逻辑:先放行关键路径,再堵住所有其他入口。默认策略设为 DROP,再一条条加白名单,比从 ACCEPT 开始删更安全。

明确 INPUT 链是主战场

对外服务的访问控制几乎全在 filter 表的 INPUT 链上。OUTPUT 和 FORWARD 在多数单机服务场景中可保持宽松(OUTPUT 默认 ACCEPT,FORWARD 通常不启用或设 DROP)。

  • INPUT:处理所有进来的包——SSH 登录、Web 请求、数据库连接都走这里,必须精细控制
  • OUTPUT:本机发出去的包(如 curl 外网、发邮件),一般无需限制,设为 ACCEPT 即可
  • FORWARD:仅当机器做路由/NAT 才启用;纯应用服务器应设为 DROP 并跳过配置

四步构建最小安全基线

按执行顺序写规则,iptables 从上到下匹配,第一条命中即执行动作,不再往下看。顺序错了,规则就失效。

  • 放行本地回环:iptables -A INPUT -i lo -j ACCEPT(127.0.0.1 通信不能断)
  • 放行已有连接:iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT(确保 SSH 会话不断、HTTP 响应能回来)
  • 按需开放服务端口:iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT(SSH 只允内网)、iptables -A INPUT -p tcp --dport 443 -j ACCEPT(HTTPS 全放开)
  • 最后设默认拒绝:iptables -P INPUT DROP(没被前面规则放过的包,一律丢弃)

关键服务放行要带条件

开放端口 ≠ 开放全部。生产环境务必叠加来源限制、协议校验和状态判断。

  • SSH 不裸开:-s 10.0.0.0/8--src-range 192.168.5.10-192.168.5.20 限定管理网段
  • Web 服务加 ICMP 支持:iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT,方便基础连通性排查
  • 数据库端口(如 3306)必须指定源 IP:-s 10.20.30.40,禁止全网扫描
  • DNS 查询需双向放行:iptables -A INPUT -p udp --sport 53 -j ACCEPT(允许上游返回),iptables -A OUTPUT -p udp --dport 53 -j ACCEPT(允许本机发请求)

规则持久化与安全操作习惯

内存规则重启即丢,且误操作可能锁死 SSH。必须固化+备份。

  • 保存当前规则:iptables-save > /etc/sysconfig/iptables(CentOS/RHEL)或 iptables-save > /etc/iptables/rules.v4(Debian/Ubuntu)
  • 操作前必备份:iptables-save > /root/iptables.bak.$(date +%s)
  • 清空规则前先放宽默认策略:iptables -P INPUT ACCEPT,避免清空瞬间失联
  • 测试新规则时,加一条“10 分钟后自动回滚”的 cron(例如 sleep 600 && iptables-restore < /root/iptables.bak.last),留逃生通道

文章来自机圈观察员网,发布者:,转载请注明出处:https://www.jqgcy.com/shoujipingce/21068.html

vivo手机怎么开启定时开关机 vivo手机系统维护教程
上一篇 2026-06-25 10:20
C++如何判断一个路径字符串是否包含平台非法字符
下一篇 2026-06-25 10:20

相关推荐