Linux云服务器防火墙配置全攻略:iptables与firewalld双方案详解
一、为什么需要配置云服务器防火墙?
在云环境中,安全组虽然提供了一层网络防护,但系统级防火墙仍然是不可或缺的第二道防线。根据2023年云安全报告显示,未配置防火墙的云服务器遭受攻击的概率比配置完善的服务器高出47%。
二、iptables:经典防火墙配置方案
2.1 基础命令速查表
| 功能 | 命令示例 |
|---|---|
| 查看规则 | iptables -L -n -v |
| 允许SSH | iptables -A INPUT -p tcp --dport 22 -j ACCEPT |
| 拒绝特定IP | iptables -A INPUT -s 192.168.1.100 -j DROP |
2.2 实战配置脚本
#!/bin/bash
# 清空现有规则
iptables -F
iptables -X
# 设置默认策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# 允许本地回环
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 开放必要端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # SSH
iptables -A INPUT -p tcp --dport 80 -j ACCEPT # HTTP
iptables -A INPUT -p tcp --dport 443 -j ACCEPT # HTTPS
# 保存规则(根据系统选择)
service iptables save # CentOS 6
iptables-save > /etc/iptables.rules # 其他系统
三、firewalld:现代化防火墙管理工具
为什么选择firewalld?
- 动态更新规则,无需重启服务
- 区域(zone)概念更贴近实际网络环境
- 与NetworkManager深度整合
- 支持D-Bus接口,便于程序控制
3.1 常用操作命令
- 启动服务:
systemctl start firewalld - 查看活跃区域:
firewall-cmd --get-active-zones - 永久开放HTTP服务:
firewall-cmd --permanent --add-service=http - 临时允许端口:
firewall-cmd --add-port=8080/tcp - 重载配置:
firewall-cmd --reload
3.2 典型应用场景配置
案例:配置Web服务器防火墙
# 创建新的zone
firewall-cmd --permanent --new-zone=webserver
# 设置默认规则
firewall-cmd --permanent --zone=webserver --set-target=DROP
# 添加服务
firewall-cmd --permanent --zone=webserver --add-service=http
firewall-cmd --permanent --zone=webserver --add-service=https
# 限制SSH访问源IP
firewall-cmd --permanent --zone=webserver --add-rich-rule='rule family="ipv4" source address="203.0.113.15/32" service name="ssh" accept'
# 应用配置
firewall-cmd --reload
firewall-cmd --set-default-zone=webserver
四、高级配置技巧与故障排查
专家建议
- 定期备份防火墙规则:
iptables-save > /backup/iptables-$(date +%F).rules - 使用
conntrack工具监控网络连接状态 - 通过
journalctl -u firewalld查看firewalld日志 - 测试规则前先用
--dry-run参数模拟
常见问题解决方案
问题1:规则不生效?
检查:1) 是否有更具体的规则覆盖 2) 规则顺序是否正确 3) 是否忘记了--permanent参数
问题2:误锁自己?
云平台控制台通常提供"救援模式",也可以通过VNC连接修复。
五、总结与最佳实践
无论选择iptables还是firewalld,都要遵循最小权限原则。建议:
- 生产环境每次修改前先在测试环境验证
- 使用版本控制管理防火墙规则变更
- 结合fail2ban等工具增强防护
- 定期审计防火墙规则有效性
根据Linux基金会的最新调查,正确配置的防火墙可以阻止85%的自动化攻击尝试。花时间完善防火墙配置,是保障服务器安全最经济有效的方式。
