Linux防火墙配置与实践指南
一、Linux防火墙基础
1. 防火墙类型
- netfilter/iptables:传统Linux防火墙框架
- nftables:iptables的替代品,更高效
- firewalld:动态防火墙管理器(常用于RHEL/CentOS)
- UFW:Ubuntu的简化防火墙工具
2. 常见防火墙工具比较
| 工具 | 易用性 | 灵活性 | 适用场景 |
|------|--------|--------|----------|
| iptables | 低 | 高 | 需要精细控制的系统 |
| nftables | 中 | 高 | 新系统,替代iptables |
| firewalld | 高 | 中 | RHEL/CentOS/Fedora |
| UFW | 高 | 低 | Ubuntu/Debian桌面/服务器 |
二、iptables配置与实践
1. 基本概念
- 表(Tables):filter(默认)、nat、mangle、raw
- 链(Chains):INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING
- 规则(Rules):匹配条件和目标动作
2. 常用命令
# 查看当前规则
iptables -L -n -v
# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许SSH连接(22端口)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许HTTP/HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 默认拒绝所有输入
iptables -P INPUT DROP
# 保存规则(根据发行版不同)
iptables-save > /etc/iptables.rules
三、firewalld配置
1. 基本概念
- 区域(Zones):预定义的规则集(public, work, home等)
- 服务(Services):预定义的服务规则(ssh, http等)
- 端口(Ports):直接端口控制
2. 常用命令
# 查看活动区域
firewall-cmd --get-active-zones
# 添加HTTP服务
firewall-cmd --zone=public --add-service=http --permanent
# 开放特定端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
# 重新加载配置
firewall-cmd --reload
# 列出所有允许的服务
firewall-cmd --list-services
四、UFW配置(适用于Ubuntu/Debian)
1. 基本命令
# 启用UFW
ufw enable
# 默认拒绝所有入站,允许所有出站
ufw default deny incoming
ufw default allow outgoing
# 允许SSH
ufw allow ssh
# 允许特定端口
ufw allow 80/tcp
ufw allow 443/tcp
# 拒绝特定IP
ufw deny from 192.168.1.100
# 查看状态
ufw status verbose
五、高级防火墙实践
1. 防止DDoS攻击
# 限制单个IP的连接数
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20 -j DROP
# 限制新建连接速率
iptables -A INPUT -p tcp --dport 80 -m limit --limit 50/minute --limit-burst 200 -j ACCEPT
2. 端口转发
# 将外部8080转发到内部80端口
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
3. 日志记录
# 创建日志链
iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A LOGGING -j DROP
六、防火墙管理实践
- 最小权限原则:只开放必要的端口和服务
- 默认拒绝策略:先设置默认拒绝所有,再逐个开放
- 定期审计规则:检查不再需要的规则
- 使用注释:为复杂规则添加注释
- 测试规则:应用前先测试,避免锁定自己
- 备份配置:修改前备份当前配置
七、故障排除
-
检查防火墙是否运行:
systemctl status firewalld # 对于firewalld systemctl status ufw # 对于UFW
-
查看完整规则:
iptables -L -n -v --line-numbers
-
检查被阻止的连接:
journalctl -xe # 查看系统日志 dmesg | grep firewall # 查看内核日志
-
临时禁用防火墙:
systemctl stop firewalld # firewalld ufw disable # UFW
通过以上配置和实践,您可以有效地保护Linux系统免受未经授权的访问,同时确保合法流量的正常通行。
(本文来源:nzw6.com)