Linux服务器防火墙配置终极指南:从iptables到firewalld
在当今互联网环境中,服务器安全是每个系统管理员最关心的问题之一。作为Linux服务器防护的第一道防线,防火墙的正确配置至关重要。本文将详细介绍Linux系统中最常用的两种防火墙解决方案:传统的iptables和现代的firewalld,帮助您构建坚不可摧的服务器安全防线。
一、理解Linux防火墙基础
Linux防火墙工作在系统的网络层,通过检查进出的数据包来执行安全策略。其核心功能包括:
- 包过滤:基于源/目标IP、端口和协议类型进行过滤
- 网络地址转换(NAT):隐藏内部网络结构
- 状态检测:跟踪连接状态以提供更智能的过滤
二、传统iptables防火墙配置
iptables是Linux系统最经典的防火墙工具,虽然现在逐渐被firewalld取代,但仍是许多系统的默认选择。
1. 基本iptables命令
# 查看当前规则 sudo iptables -L -n -v # 允许SSH连接(22端口) sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许本地回环接口 sudo iptables -A INPUT -i lo -j ACCEPT # 默认拒绝所有入站连接 sudo iptables -P INPUT DROP
2. 保存iptables规则
在大多数发行版中,iptables规则需要手动保存:
# Ubuntu/Debian sudo apt install iptables-persistent sudo netfilter-persistent save # CentOS/RHEL sudo service iptables save
三、现代firewalld防火墙配置
firewalld是RHEL/CentOS 7+和Fedora的默认防火墙管理工具,提供更高级的功能和更简单的管理界面。
1. 基本firewalld操作
# 查看防火墙状态 sudo firewall-cmd --state # 启用防火墙 sudo systemctl start firewalld sudo systemctl enable firewalld # 查看所有可用区域 sudo firewall-cmd --get-zones
2. 常用规则配置
# 开放HTTP和HTTPS端口 sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https # 开放自定义端口(如8080) sudo firewall-cmd --permanent --add-port=8080/tcp # 重新加载配置 sudo firewall-cmd --reload
四、高级防火墙策略
1. 限制连接速率防止DoS攻击
# iptables方式 sudo iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT # firewalld方式 sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="http" limit value="25/m" accept'
2. 地理IP封锁
# 使用ipset配合iptables sudo apt install ipset sudo ipset create blocked_countries hash:net sudo iptables -I INPUT -m set --match-set blocked_countries src -j DROP # 添加特定国家IP段 wget -O- http://www.ipdeny.com/ipblocks/data/countries/cn.zone | xargs -n1 sudo ipset add blocked_countries
五、防火墙管理最佳实践
- 始终遵循最小权限原则,只开放必要的端口
- 定期审查和更新防火墙规则
- 使用区域概念(firewalld)或链(iptables)来组织规则
- 将关键规则放在防火墙配置文件的顶部
- 考虑使用fail2ban等工具增强防护
通过合理配置Linux防火墙,您可以显著提升服务器安全性,有效抵御网络攻击。无论是选择传统的iptables还是现代的firewalld,关键是要理解其工作原理并持续维护安全策略。
