本文详细介绍使用iptables配置网络白名单的完整流程,包括基础规则设置、IP地址管理、端口控制等核心技巧,并提供生产环境中的实用配置示例,帮助管理员实现精准的访问控制策略。
一、iptables白名单基本原理
iptables作为Linux内核集成的防火墙工具,通过规则链(Chain)实现网络流量控制。白名单机制本质是通过以下逻辑实现:
基本逻辑流程
1. 拒绝所有入站流量(INPUT链)
2. 仅允许特定IP/网段的访问
3. 保持出站流量(OUTPUT链)正常
二、基础白名单配置
1. 清空现有规则
iptables -F 清空所有链规则
iptables -X 删除用户自定义链
iptables -Z 计数器归零
2. 设置默认策略
iptables -P INPUT DROP 默认拒绝所有入站
iptables -P FORWARD DROP 禁止转发
iptables -P OUTPUT ACCEPT 允许所有出站
3. 添加白名单规则
允许单个IP访问所有端口
iptables -A INPUT -s 192.168.1.100 -j ACCEPT
允许网段访问特定端口(如SSH)
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
允许本地回环
iptables -A INPUT -i lo -j ACCEPT
三、高级配置技巧
1. 使用ipset优化管理
当需要管理大量IP时,建议使用ipset工具:
创建IP集合
ipset create whitelist hash:ip
添加IP到集合
ipset add whitelist 203.0.113.45
ipset add whitelist 198.51.100.0/24
在iptables中引用
iptables -A INPUT -m set --match-set whitelist src -j ACCEPT
2. 状态检测配置
允许已建立的连接和相关的数据包
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
3. 防止暴力破解保护
限制SSH连接频率
iptables -A INPUT -p tcp --dport 22 -m recent --name ssh_attack --set
iptables -A INPUT -p tcp --dport 22 -m recent --name ssh_attack --update --seconds 60 --hitcount 3 -j DROP
四、规则持久化保存
CentOS/RHEL系统:
service iptables save
或
iptables-save > /etc/sysconfig/iptables
Debian/Ubuntu系统:
apt install iptables-persistent
netfilter-persistent save
五、生产环境建议
- 使用脚本管理规则变更,避免直接操作
- 重要操作前备份现有规则:
iptables-save > iptables.backup
- 结合fail2ban增强安全防护
- 定期审计白名单IP的有效性
通过以上配置,您可以构建一个灵活高效的网络白名单系统。根据实际需求调整IP范围和端口设置,平衡安全性与可用性。
评论