Linux云服务器防火墙配置全攻略:iptables与firewalld双解
在云计算时代,服务器安全配置成为每个运维人员的必修课。本文将深入解析Linux环境下两种主流防火墙工具——传统iptables与现代firewalld的配置方法,助您打造铜墙铁壁般的云服务器防护体系。
一、防火墙技术选型:新旧之争
| 对比项 | iptables | firewalld |
|---|---|---|
| 出现时间 | Linux 2.4内核(2001年) | RHEL/CentOS 7(2014年) |
| 配置方式 | 命令行直接规则 | 基于zone的抽象管理 |
| 动态更新 | 需要重启服务 | 支持运行时动态加载 |
| 适用场景 | 需要精细控制的老手 | 追求便捷管理的场景 |
二、iptables实战配置
1. 基础规则设置
# 清空现有规则
iptables -F
iptables -X
# 设置默认策略(推荐配置)
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
2. 开放必要端口
# 允许SSH连接(示例端口2222)
iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
# 允许HTTP/HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 允许ping检测
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
3. 防御常见攻击
# 防止SYN洪水攻击
iptables -N SYN_FLOOD
iptables -A SYN_FLOOD -p tcp --syn -m limit --limit 1/s -j RETURN
iptables -A SYN_FLOOD -j DROP
iptables -A INPUT -p tcp --syn -j SYN_FLOOD
三、firewalld现代管理
1. 区域(zone)管理
# 查看可用区域
firewall-cmd --get-zones
# 设置默认区域为dmz
firewall-cmd --set-default-zone=dmz
2. 服务与端口管理
# 永久开放https服务
firewall-cmd --permanent --add-service=https
# 临时开放自定义端口
firewall-cmd --add-port=8080/tcp
# 端口转发示例(将80转到8080)
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080
3. 富规则(Rich Rules)应用
# 允许特定IP访问SSH
firewall-cmd --permanent --zone=public \
--add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept'
# 拒绝某个网段的ICMP请求
firewall-cmd --permanent --zone=public \
--add-rich-rule='rule family="ipv4" source address="10.0.0.0/24" protocol value="icmp" reject'
四、配置保存与故障排查
iptables配置持久化
# Ubuntu/Debian
apt install iptables-persistent
netfilter-persistent save
# CentOS/RHEL
service iptables save
firewalld重载与状态检查
# 重载配置不中断连接
firewall-cmd --reload
# 查看活动区域配置
firewall-cmd --list-all-zones
常见问题解决方案
- 规则不生效:检查是否冲突规则,规则顺序是否正确
- 连接被拒绝:确认协议(tcp/udp)和端口号是否匹配
- 服务异常:通过
systemctl status firewalld查看服务状态
无论是选择经典的iptables还是现代的firewalld,理解其工作原理和掌握核心配置技巧都至关重要。建议新用户从firewalld入门,而需要精细控制的高级用户可深入研究iptables。记住,好的防火墙策略应该遵循最小权限原则,在安全与便利之间找到平衡点。
最佳实践提示:定期审计防火墙规则,使用iptables-save或firewall-cmd --list-all备份当前配置,建立变更日志制度。
