Linux系统防火墙配置详细指南

防火墙是保护Linux系统安全的重要工具,它可以控制网络流量,阻止未经授权的访问,同时允许合法的通信。在Linux系统中,常用的防火墙工具有 iptablesnftablesfirewalld(基于iptables/nftables的高级封装)。本指南将详细介绍这些工具的配置方法。

图片[1]_Linux系统防火墙配置详细指南_知途无界

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的替代品)

nftablesiptables 的现代替代方案,语法更简洁,性能更好。

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. 防火墙最佳实践

  1. 默认拒绝所有流量
   iptables -P INPUT DROP
   iptables -P FORWARD DROP
  1. 仅开放必要的端口(如SSH、HTTP/HTTPS)。
  2. 使用 fail2ban 防止暴力破解
   sudo apt install fail2ban  # Debian/Ubuntu
   sudo yum install fail2ban  # RHEL/CentOS
  1. 定期检查日志
   tail -f /var/log/syslog | grep "iptables"
   journalctl -u firewalld --no-pager -n 50  # 查看firewalld日志

5. 总结

工具适用场景特点
iptables传统Linux防火墙规则复杂但灵活
nftables现代Linux防火墙语法更简洁,性能更好
firewalldRHEL/CentOS/Fedora动态管理,适合服务器

根据你的Linux发行版选择合适的防火墙工具,并遵循最小权限原则,确保系统安全! 🚀

© 版权声明
THE END
喜欢就点个赞,支持一下吧!
点赞73 分享
评论 抢沙发
头像
欢迎您留下评论!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容