Linux添加防火墙策略:全面指南与最佳实践(2025最新版)

在当今复杂多变的网络环境中,Linux系统安全防护的第一道防线就是防火墙。无论你是运维工程师、开发者还是个人用户,掌握如何正确地为Linux系统添加防火墙策略,是保障服务器和数据安全的核心技能。

Linux添加防火墙策略:全面指南与最佳实践(2025最新版)

本文将带你深入浅出地了解Linux中主流的防火墙工具,详细讲解如何使用 firewalldiptables 添加防火墙策略,并结合实际场景提供配置示例与安全加固建议,助你构建坚不可摧的安全屏障。


为什么需要添加防火墙策略?

防火墙(Firewall)是一种网络安全系统,它根据预设规则监控并控制进出系统的网络流量。其核心作用包括:

  • ✅ 阻止非法访问:防止未经授权的用户或程序连接到你的服务器。

  • ✅ 限制暴露端口:遵循“最小权限原则”,只开放必要的服务端口。

  • ✅ 防御攻击行为:抵御DDoS、端口扫描、暴力破解等常见网络攻击。

  • ✅ 实现网络隔离:通过区域管理实现内外网流量的精细化控制。

📌 提示:新安装的Linux系统默认往往没有启用防火墙,第一时间配置防火墙策略至关重要


主流防火墙工具对比:该用哪个?

Linux下有多种防火墙管理工具,选择合适的工具能事半功倍。以下是常见工具及其适用场景:

工具适用发行版特点
firewalldRHEL/CentOS/Fedora动态管理、支持区域(zone)、易于使用
UFW (Uncomplicated Firewall)Ubuntu/Debian简单易用,适合新手
iptables所有传统Linux系统精细控制,功能强大,但语法复杂
nftables新内核系统(Linux 3.13+)iptables 的现代替代品,性能更优

🔍 推荐优先级

  • 新手或现代系统 → 使用 firewalld 或 UFW

  • 需要精细控制或维护旧系统 → 使用 iptables


使用 firewalld 添加防火墙策略(推荐方式)

firewalld 是目前 Red Hat 系列发行版(如 CentOS、RHEL)的默认防火墙管理工具,支持动态更新且无需重启服务。

1️⃣ 启动并启用 firewalld

sudo systemctl enable firewalld    # 开机自启
sudo systemctl start firewalld     # 立即启动

验证状态:

sudo firewall-cmd --state
# 输出 running 表示正常运行

2️⃣ 查看默认区域与规则

# 查看当前默认区域
firewall-cmd --get-default-zone

# 查看指定区域的详细规则(如 public)
firewall-cmd --list-all --zone=public

3️⃣ 添加常用服务端口

✅ 允许 SSH、HTTP、HTTPS 服务

# 永久允许SSH(端口22)
sudo firewall-cmd --permanent --add-service=ssh

# 允许HTTP(80)和HTTPS(443)
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

# 重新加载使配置生效
sudo firewall-cmd --reload

⚠️ 注意:--permanent 参数确保规则在重启后依然有效,否则仅为临时规则。

✅ 开放自定义端口(如8080)

# 允许TCP协议的8080端口
sudo firewall-cmd --permanent --add-port=8080/tcp

# 若需开放UDP端口
sudo firewall-cmd --permanent --add-port=53/udp

# 重载配置
sudo firewall-cmd --reload

4️⃣ 基于IP地址的访问控制(黑白名单)

🔒 仅允许特定IP访问SSH

# 只允许 192.168.1.100 访问SSH
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept'

# 重新加载
sudo firewall-cmd --reload

🛑 封禁恶意IP或IP段

# 封禁单个IP
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="1.2.3.4" drop'

# 封禁整个子网
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" reject'

sudo firewall-cmd --reload

使用 iptables 添加防火墙策略(经典方式)

对于需要底层控制或老旧系统,iptables 依然是强大的选择。

1️⃣ 清除旧规则并设置默认策略

# 清空所有规则
sudo iptables -F
sudo iptables -X

# 设置默认策略:入站拒绝,出站允许
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

2️⃣ 添加基本安全规则

# 允许本地回环接口通信
sudo iptables -A INPUT -i lo -j ACCEPT

# 允许已建立的连接和相关流量
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# 开放SSH端口(可改为非标准端口增强安全)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 开放HTTP/HTTPS
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

3️⃣ 高级策略:防DDoS与扫描

# 限制每IP并发连接数(防SYN Flood)
sudo iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 50 -j DROP

# 阻止端口扫描行为
sudo iptables -N PORTSCAN
sudo iptables -A PORTSCAN -m recent --set --name BLOCKED
sudo iptables -A PORTSCAN -j LOG --log-prefix "PORT-SCAN: "
sudo iptables -A PORTSCAN -j DROP

4️⃣ 保存规则(持久化)

不同发行版保存方式不同:

# Debian/Ubuntu
sudo apt install iptables-persistent netfilter-persistent
sudo netfilter-persistent save

# CentOS/RHEL
sudo service iptables save

安全加固建议:不止于防火墙

🔐 强化SSH安全

# 修改 /etc/ssh/sshd_config
Port 22222                    # 更改默认端口
PermitRootLogin no            # 禁止root登录
PasswordAuthentication no     # 启用密钥认证
AllowUsers user1 user2        # 限制可登录用户

修改后重启SSH服务:

sudo systemctl restart sshd

🔄 定期系统更新

# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y

# CentOS/RHEL
sudo yum update -y

🛡️ 启用SELinux或AppArmor

# 查看SELinux状态
sestatus

# 设置为Enforcing模式(生产环境推荐)
sudo setenforce 1

监控与排错:确保策略生效

实时查看防火墙规则

# firewalld
firewall-cmd --list-all

# iptables
iptables -L -n -v --line-numbers

# UFW
ufw status numbered

查看连接日志

# 查看被拒绝的连接(需提前配置LOG规则)
tail -f /var/log/syslog | grep "IPTABLES-DROPPED"
journalctl -f | grep firewalld

备份与恢复防火墙策略

备份规则

# iptables
sudo iptables-save > /backup/firewall_rules.v4

# firewalld 配置目录
sudo cp -r /etc/firewalld /backup/

快速恢复

# 恢复iptables规则
sudo iptables-restore < firewall_rules.v4

安全是持续的过程

添加防火墙策略只是Linux安全防护的第一步。真正的安全在于持续监控、定期审计、及时更新和应急响应机制的建立。

💡 记住黄金法则
默认拒绝一切,只开放必需服务 —— 这是最有效的安全策略。

现在就为你正在使用的Linux服务器配置一道坚固的防火墙吧!如果你觉得这篇文章对你有帮助,欢迎点赞、收藏并分享给更多需要的朋友。

发表评论

评论列表

还没有评论,快来说点什么吧~