Linux系统IPtables防火墙规则配置完全指南
在Linux运维工作中,IPtables作为内核级防火墙工具,是保护服务器安全的重要屏障。本文将详细介绍IPtables的基本概念、配置方法和实用技巧,帮助您掌握这一强大的网络安全工具。
一、IPtables基础概念
IPtables是Linux内核集成的包过滤系统,通过定义规则链(Chain)来控制网络流量的进出。主要包含三个默认链:
- INPUT链:处理进入本机的数据包
- OUTPUT链:处理从本机发出的数据包
- FORWARD链:处理转发到其他主机的数据包
每个规则链都按照从上到下的顺序匹配规则,一旦匹配成功就会执行相应的动作(ACCEPT/DROP/REJECT等)。
二、IPtables基本命令格式
iptables [-t 表名] 命令选项 [链名] [规则匹配条件] [-j 目标动作]
常用命令选项:
- -A:在链尾追加规则
- -I:在指定位置插入规则
- -D:删除规则
- -L:列出规则
- -F:清空规则
- -P:设置链的默认策略
三、实战配置步骤
1. 查看当前规则
iptables -L -n -v
2. 设置默认策略
iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP
3. 允许本地回环
iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT
4. 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
5. 开放特定端口
# 允许SSH(22端口) iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许HTTP(80端口) iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 允许HTTPS(443端口) iptables -A INPUT -p tcp --dport 443 -j ACCEPT
四、高级配置技巧
1. 限制连接速率
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
2. 阻止特定IP
iptables -A INPUT -s 192.168.1.100 -j DROP
3. 端口转发
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
4. 记录被拒绝的包
iptables -A INPUT -j LOG --log-prefix "IPTABLES DENIED: " --log-level 4
五、规则持久化
CentOS/RHEL系统:
service iptables save
Ubuntu/Debian系统:
apt-get install iptables-persistent netfilter-persistent save
六、常见问题排查
- 规则不生效:检查规则顺序,确认是否有更早的匹配规则
- 无法远程连接:检查INPUT链是否开放了相应端口
- 网络不通:检查FORWARD链和NAT表的配置
- 查看日志:/var/log/messages或/var/log/syslog
掌握IPtables配置是Linux系统管理员的必备技能。通过合理的规则设置,可以有效保护服务器免受网络攻击。建议定期检查防火墙规则,并根据实际需求进行调整优化。对于生产环境,应先在小范围测试新规则,确认无误后再全面应用。
