Linux运维、防火墙、端口放行、服务器安全、iptables、nftables、firewalld、ufw
做 Linux 运维,防火墙配置是基本功,也是最容易翻车的环节。很多人搞不懂:为什么 CentOS 用 firewalld?Ubuntu 用 ufw?现在最新系统都在推 nftables?iptables 到底过时没?
Linux 目前主流一共 4 套防火墙体系:
•iptables:经典老牌,运维必懂,通用性极强
•nftables:Linux 官方新一代替代品,未来主流
•firewalld:CentOS/RHEL 自带,简单、支持区域管理
•ufw:Ubuntu 极简防火墙,新手友好、上手最快
今天总结全部用法、区别、实战命令、生产规范,日常放行端口、限制IP、安全加固直接复制即用。
一、四大防火墙类型区别
1. iptables(传统经典)
优点:兼容性无敌、所有系统通用、生产环境存量巨大
缺点:语法复杂、规则无序、重启失效、逐渐被淘汰
适用:老服务器、老旧业务、运维排查
2. nftables(新一代官方替代)
Linux 内核主推,替代 iptables,语法简洁、性能更强、支持模块化
适用:新服务器、国产化系统、长期维护业务
3. firewalld(红帽系专属)
CentOS7+/RHEL 默认,支持区域、热重载、无需重启
适用:CentOS、企业服务器、云主机
4. ufw(Ubuntu 极简防火墙)
极简封装,命令极少,零基础也会用
适用:Ubuntu、桌面、开发机、小型服务器
二、iptables实战命令
核心特点:逐条匹配、顺序优先、默认重启失效、必须手动保存
1. 放行指定端口(最常用)
Plain Text iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT |
2. 放行指定 IP 访问
Plain Text iptables -A INPUT -s 192.168.1.100 -j ACCEPT |
3. 放行已有连接
Plain Text iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT |
4. 拒绝所有未放行端口
Plain Text iptables -A INPUT -j DROP |
5. 保存规则
Plain Text # Ubuntu/Debian iptables-save > /etc/iptables/rules.v4 # CentOS6 service iptables save |
避坑:iptables 规则临时生效,不保存重启直接清空 |
三、nftables 新一代防火墙
完全替代 iptables,语法简单、性能更高、结构清晰,新服务器、国产化系统优先使用。
1. 放行端口
Plain Text nft add rule inet filter input tcp dport 22 accept nft add rule inet filter input tcp dport 80 accept nft add rule inet filter input tcp dport 443 accept |
2. 放行指定 IP
Plain Text nft add rule inet filter input ip saddr 192.168.1.0/24 accept |
3. 查看所有规则
Plain Text nft list ruleset |
4. 持久化保存
Plain Text nft list ruleset > /etc/nftables.conf |
四、firewalld实战
特点:支持热重载、不中断业务、区域管理、永久生效
1. 放行端口(永久生效)
Plain Text firewall-cmd --zone=public --add-port=443/tcp --permanent firewall-cmd --zone=public --add-port=80/tcp --permanent |
2. 放行内置服务(http/https/ssh)
Plain Text firewall-cmd --zone=public --add-service=http --permanent firewall-cmd --zone=public --add-service=https --permanent |
3. 放行指定 IP/网段
Plain Text firewall-cmd --zone=public --add-source=192.168.1.0/24 --permanent |
4. 重载生效(必须执行)
Plain Text firewall-cmd --reload |
5. 查看规则列表
Plain Text firewall-cmd --list-all |
五、ufw 极简防火墙
Ubuntu 自带极简防火墙,命令最少、最不容易翻车。
1. 放行端口
Plain Text ufw allow 22/tcp ufw allow 80/tcp ufw allow 443/tcp |
2. 放行指定 IP
Plain Text ufw allow from 192.168.1.100 |
3. 启用/关闭防火墙
Plain Text ufw enable ufw disable |
4. 查看状态与规则
Plain Text ufw status verbose |
六、生产环境必看:防火墙避坑准则
1. 永远先放行 SSH 再拒绝端口
一旦先 DROP 所有,直接断连服务器,机房现场重启才能救。
2. iptables 务必手动保存
临时规则重启清零,很多业务故障都是因为没保存规则。
3. 规则顺序决定成败
Linux 防火墙 从上到下匹配,允许规则必须写在拒绝规则前面。
4. 新系统优先 nftables / firewalld
iptables 已经停止迭代,新项目不要再堆砌老旧规则。
5. 线上禁止随意清空防火墙
公网服务器无脑清空规则,会直接暴露所有端口,极易被入侵。
七、总结
•CentOS7+/RHEL → 用 firewalld
•Ubuntu / 开发机 → 用 ufw
•新服务器、国产化、长期运维 → 用 nftables
•老设备、排错、老旧业务 → 懂 iptables