防火墙是Linux系统安全的第一道防线。CentOS 7默认使用firewalld,但底层仍兼容iptables。本文带你掌握两种工具的核心用法。
四表:
五链:INPUT(入站)、OUTPUT(出站)、FORWARD(转发)、PREROUTING(路由前)、POSTROUTING(路由后)
iptables命令语法
iptables [-t 表名] [操作选项] [链名] [匹配条件] [-j 动作]# 示例:允许来自192.168.1.50的SSH访问sudo iptables -A INPUT -p tcp -s 192.168.1.50 --dport 22 -j ACCEPT# 拒绝其他所有SSH连接sudo iptables -A INPUT -p tcp --dport 22 -j DROP# 保存规则(需安装iptables-persistent)sudo iptables-save > /etc/iptables/rules.v4核心概念:区域(Zone)、服务(Service)、富规则(Rich Rules)。
常用命令
# 服务管理systemctl start firewalldsystemctl enable firewalld# 区域操作firewall-cmd --get-default-zonefirewall-cmd --set-default-zone=trusted# 开放服务/端口(永久生效需加--permanent并reload)firewall-cmd --add-service=http --permanentfirewall-cmd --add-port=8080/tcp --permanentfirewall-cmd --reload# 查看规则firewall-cmd --list-all富规则示例(只允许指定IP访问SSH)
# 移除默认SSH放行firewall-cmd --remove-service=ssh --permanent# 添加富规则firewall-cmd --add-rich-rule='rule family="ipv4" source address="203.0.113.5" service name="ssh" accept' --permanentfirewall-cmd --reloadDNAT(目标地址转换):外网访问内网服务。示例(将公网IP 203.0.113.5:80转发到内网10.0.0.2:80)
sudo firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=80:toaddr=10.0.0.2sudo firewall-cmd --reload或使用iptables:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.1.100:80iptables -t nat -A POSTROUTING -j MASQUERADESNAT(源地址转换):内网设备通过公网IP访问外网。
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 公网IP# 误锁自己后的恢复(通过物理控制台)firewall-cmd --panic-offfirewall-cmd --reload# 备份配置cp /etc/firewalld/{firewalld.conf,zones/*.xml} /backup/💡 提示:firewalld规则优先级:富规则 > 服务/端口规则,越具体的规则优先级越高。
📎 标签:#防火墙 #iptables #firewalld #NAT #网络安全