首页/系统/信创系统运维速查/iptables 常用规则示例
安全加固65 条

iptables 常用规则示例

把常用规则一次写全:放行本机回环与已建立连接、按来源放行 SSH、放行 Web 端口、ICMP 限速,再设默认拒绝策略收尾。

信创系统运维速查系统更新于 2026-10-13

iptables 规则集怎么看

iptables 是内核 netfilter 的用户态工具,规则按链(INPUT/OUTPUT/FORWARD)顺序匹配,命中即按目标动作处理,因此顺序比内容更重要。一份可用的主机防火墙规则集通常包含四类:放行回环、放行已建立连接的回包、按业务与来源放行必要端口、最后设默认策略。信创系统上 firewalld 与 iptables 服务二选一,混用会出现规则互相覆盖。

基本信息

适用平台RHEL/CentOS 6/7、openEuler、麒麟、UOS(内核 netfilter)
查看规则iptables -L -n -v --line-numbers
保存规则iptables-save,持久化见对应条目
与 firewalld 关系firewalld 是上层管理工具,二者不要同时启用
权限要求root 或 CAP_NET_ADMIN

典型使用场景

  • 最小化放行:服务器只开 SSH 与业务端口,其余默认拒绝
  • 来源限制:管理端口只允许运维网段访问,公网不可达
  • 限速与抗扫:ICMP 与新建连接做速率限制,减轻探测压力
  • 临时加白:新增业务端口用 -I 插到链首快速生效,验证后再固化
  • 故障定位:用规则计数器判断某个数据包是否被策略丢弃

典型规则集

典型规则集
iptables -A INPUT -i lo -j ACCEPT                        # 放行回环,本机通信必须
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT  # 放行已建立连接的回包
iptables -A INPUT -p tcp --dport 22 -s 10.10.0.0/16 -j ACCEPT  # 仅运维网段可 SSH
iptables -A INPUT -p tcp --dport 80 -j ACCEPT             # 放行 Web
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 5/s -j ACCEPT  # ICMP 限速
iptables -P INPUT DROP                                    # 默认拒绝,务必最后设
iptables -P FORWARD DROP
iptables -L INPUT -n -v --line-numbers | head             # 复核顺序与命中计数

插入、删除与保存

插入、删除与保存
iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT   # 插到第 1 条,立即生效
iptables -L INPUT --line-numbers                     # 查行号
iptables -D INPUT 3                                  # 按行号删除
iptables-save > /etc/sysconfig/iptables               # 保存(按发行版路径)
systemctl restart iptables                            # 部分系统需重载服务

规则与计数读法

字段含义正常/异常
num规则序号决定匹配顺序,序号越小越先匹配
pkts命中包数长期为 0 说明策略没生效或流量走了别处
target动作ACCEPT/DROP/REJECT,REJECT 会回错误包
prot / dpt协议与目的端口dpt 非空表示按端口匹配
source来源地址为空表示任意来源
policy链默认策略DROP 表示未匹配即丢弃,是收紧后的期望状态
设默认 DROP 前必须先放行 SSH 来源;远程机器上顺序错一步就会失联。操作前保留一份现网规则文件(iptables-save),并准备好带外控制台或定时回滚任务。
OUTPUT 链一般保持 ACCEPT,服务器主动连外部依赖(时间源、数据库、DNS)被拦时表现像业务故障,排查先看 OUTPUT 与 FORWARD 是否被你设成了 DROP。

易错点

  • 默认 DROP 后忘记保留 ESTABLISHED,RELATED,已建立连接的回包也被丢弃,表现为连接时通时断。
  • -A 追加到链尾,前面若已有 DROP 或 REJECT,新规则永远匹配不到,排查先从 --line-numbers 看顺序。
  • 规则只写在内存里没保存,重启后全部失效,安全扫描会直接判定为不达标。
  • firewalld 与 iptables 服务同时启用时互相覆盖,表现是规则莫名消失,先在系统里确认唯一的管理入口。
  • 把放行端口写成 --sport 而不是 --dport,方向搞反导致业务不通,属于最常见的书写错误。

数据来源与参考

  • man 8 iptables
  • RHEL 安全指南(iptables 章节)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌