防火墙是保护Linux系统安全的重要工具,它可以控制网络流量,阻止未经授权的访问,同时允许合法的通信。在Linux系统中,常用的防火墙工具有 iptables、nftables 和 firewalld(基于iptables/nftables的高级封装)。本指南将详细介绍这些工具的配置方法。
![图片[1]_Linux系统防火墙配置详细指南_知途无界](https://zhituwujie.com/wp-content/uploads/2025/06/d2b5ca33bd20250619102155.png)
1. iptables 防火墙配置
iptables 是Linux传统的防火墙工具,基于规则链(Chains)和表(Tables)进行流量控制。
1.1 基本概念
- 表(Tables):
filter(默认):用于包过滤(允许/拒绝流量)nat:用于网络地址转换(NAT)mangle:用于修改数据包(如TTL)raw:用于连接跟踪豁免- 链(Chains):
INPUT:处理进入本机的数据包OUTPUT:处理本机发出的数据包FORWARD:处理转发的数据包PREROUTING(nat表):修改目标地址(DNAT)POSTROUTING(nat表):修改源地址(SNAT)
1.2 常用命令
查看当前规则
iptables -L -n -v # 查看filter表规则
iptables -t nat -L -n -v # 查看NAT表规则
允许/拒绝特定流量
# 允许SSH(22端口)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许HTTP(80端口)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 拒绝所有其他入站流量
iptables -A INPUT -j DROP
允许已建立的连接
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
NAT 规则(端口转发)
# 将外部80端口转发到内部192.168.1.100:80
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80
iptables -t nat -A POSTROUTING -j MASQUERADE # 启用SNAT
保存规则
iptables-save > /etc/iptables.rules # 保存规则
iptables-restore < /etc/iptables.rules # 恢复规则
注意:在Ubuntu/Debian上,可以安装
iptables-persistent自动加载规则:sudo apt install iptables-persistent sudo netfilter-persistent save
2. nftables 防火墙(iptables的替代品)
nftables 是 iptables 的现代替代方案,语法更简洁,性能更好。
2.1 基本配置
查看当前规则
nft list ruleset
配置示例
nft add table inet filter # 创建表
nft add chain inet filter input { type filter hook input priority 0 \; } # 创建链
nft add rule inet filter input tcp dport 22 accept # 允许SSH
nft add rule inet filter input tcp dport 80 accept # 允许HTTP
nft add rule inet filter input drop # 拒绝其他流量
保存规则
nft list ruleset > /etc/nftables.conf # 保存
systemctl restart nftables # 重启生效
3. firewalld(适用于RHEL/CentOS/Fedora)
firewalld 是Red Hat系列Linux的默认防火墙工具,基于 iptables/nftables,提供更高级的管理方式。
3.1 基本命令
systemctl start firewalld # 启动
systemctl enable firewalld # 开机自启
firewall-cmd --state # 查看状态
3.2 开放端口
firewall-cmd --zone=public --add-port=80/tcp --permanent # 开放80端口(永久)
firewall-cmd --reload # 重新加载配置
3.3 允许服务
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload
3.4 端口转发
firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.100 --permanent
firewall-cmd --reload
4. 防火墙最佳实践
- 默认拒绝所有流量:
iptables -P INPUT DROP
iptables -P FORWARD DROP
- 仅开放必要的端口(如SSH、HTTP/HTTPS)。
- 使用
fail2ban防止暴力破解:
sudo apt install fail2ban # Debian/Ubuntu
sudo yum install fail2ban # RHEL/CentOS
- 定期检查日志:
tail -f /var/log/syslog | grep "iptables"
journalctl -u firewalld --no-pager -n 50 # 查看firewalld日志
5. 总结
| 工具 | 适用场景 | 特点 |
|---|---|---|
| iptables | 传统Linux防火墙 | 规则复杂但灵活 |
| nftables | 现代Linux防火墙 | 语法更简洁,性能更好 |
| firewalld | RHEL/CentOS/Fedora | 动态管理,适合服务器 |
根据你的Linux发行版选择合适的防火墙工具,并遵循最小权限原则,确保系统安全! 🚀
© 版权声明
文中内容均来源于公开资料,受限于信息的时效性和复杂性,可能存在误差或遗漏。我们已尽力确保内容的准确性,但对于因信息变更或错误导致的任何后果,本站不承担任何责任。如需引用本文内容,请注明出处并尊重原作者的版权。
THE END

























暂无评论内容