Linux防火墙规则编写核心是理解iptables/nftables的链、表、匹配条件与动作;iptables仍广泛用于旧系统,nftables为新系统默认,掌握网络流向与默认策略(如INPUT/OUTPUT/FORWARD设为DROP前先验证)比死记命令更重要。

Linux防火墙规则编写核心在于理解 iptables 或 nftables 的链(chain)、表(table)、匹配条件与目标动作。实际运维中,iptables 仍广泛使用(尤其CentOS 7/Ubuntu 18.04及更早),而较新系统(如Ubuntu 20.04+、CentOS 8+)默认启用 nftables(iptables命令可能只是nft的兼容封装)。掌握底层逻辑比死记命令更重要。
明确网络流向与默认策略
防火墙本质是控制进出本机的数据包。iptables有三张基础表:filter(过滤,默认)、nat(地址转换)、mangle(修改包头)。常用操作集中在 filter 表的三个链:
- INPUT:处理发往本机的入站流量(如SSH连接、Web服务请求)
- OUTPUT:处理本机发出的出站流量(如curl访问外部API)
- FORWARD:处理经本机转发的流量(仅当开启IP转发时生效)
每条链都有默认策略(policy),常见为 ACCEPT 或 DROP。生产环境建议先设为 ACCEPT,添加规则验证无误后,再将 INPUT/OUTPUT/FORWARD 的默认策略改为 DROP,避免锁死自己。
编写实用规则的典型场景与写法
以 iptables 为例,所有规则按顺序匹配,第一条匹配即执行对应动作,不再继续向下检查。因此“允许”规则应放在“拒绝”规则之前。
-
放行已建立的连接(必须加在最前面):
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -
开放SSH端口(22)并限制来源IP(增强安全):
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT
若允许多个IP,可用 -s 192.168.1.0/24 或多次添加;也可用 ipset 提高效率 -
开放HTTP/HTTPS服务(80/443)给所有公网访问:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT -
禁止某IP段暴力扫描:
iptables -I INPUT -s 203.0.113.0/24 -j DROP(-I 插入到最前,优先拦截)
保存、恢复与调试技巧
iptables 规则默认不持久——重启后丢失。务必手动保存:
标签: linux centos 防火墙 端口 ubuntu curl ai 系统升级
还木有评论哦,快来抢沙发吧~