Linux服务器IPtables防火墙配置全攻略
作为Linux系统管理员,掌握IPtables防火墙配置是必备技能。本文将详细介绍从基础概念到实战配置的全过程,帮助您构建安全的服务器环境。
一、IPtables基础概念
IPtables是Linux内核集成的包过滤系统,通过定义规则来控制网络流量。它包含三个默认链(chain):
- INPUT链:处理进入本机的数据包
- OUTPUT链:处理从本机发出的数据包
- FORWARD链:处理经过本机转发的数据包
二、基本配置命令
# 查看当前规则 iptables -L -n -v # 清空所有规则 iptables -F # 删除用户自定义链 iptables -X # 重置计数器 iptables -Z
三、实战配置示例
1. 基本安全规则
# 允许本地回环接口 iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # 允许已建立的连接 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 默认策略设置为DROP iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP
2. 开放必要端口
# 允许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
3. 防御常见攻击
# 防止SYN洪水攻击 iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT # 阻止ICMP洪水 iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 1 -j ACCEPT # 防止端口扫描 iptables -N ANTISCAN iptables -A ANTISCAN -m limit --limit 1/s -j RETURN iptables -A ANTISCAN -j DROP iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j ANTISCAN
四、规则持久化保存
配置的规则重启后会丢失,需要保存:
# Ubuntu/Debian系统 iptables-save > /etc/iptables.rules echo "pre-up iptables-restore < /etc/iptables.rules" >> /etc/network/interfaces # CentOS/RHEL系统 service iptables save chkconfig iptables on
五、高级技巧
1. 使用IPset提升性能
# 创建IPset集合 ipset create blacklist hash:ip # 添加IP到黑名单 ipset add blacklist 192.168.1.100 # 在iptables中引用 iptables -A INPUT -m set --match-set blacklist src -j DROP
2. 日志记录
# 创建日志链 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
六、常见问题解决
- 规则不生效:检查规则顺序,iptables按顺序匹配
- 连接被拒绝:确认OUTPUT链是否允许响应包
- 性能问题:考虑使用IPset或减少复杂规则
通过本文的学习,您应该已经掌握了IPtables的基本配置方法。实际应用中,应根据服务器具体需求调整安全策略,并定期审查防火墙规则。建议配合fail2ban等工具增强防护能力。
