Ubuntu测试ip白名单
需求:为了安全,生产机上需要做ip白名单限制访问的ip,现在需要测试限制ip后程序能否正常运作(若不能,需要提供及时恢复的机会)
解决方法:使用iptables来创建IP和域名白名单进行测试。
基本思路
- 先设置宽松规则:允许本地连接和已建立的连接
- 添加白名单:允许特定IP和域名
- 设置默认拒绝:但保留SSH等管理通道
实施步骤
1. 备份当前规则
sudo iptables-save > /tmp/iptables-backup.rules
2. 设置基础安全规则
# 允许本地回环
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
# 允许已建立的连接
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# 保留SSH连接(避免被锁定)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
3. 添加IP白名单
# 允许特定IP出入站
sudo iptables -A OUTPUT -d 8.8.8.8 -j ACCEPT
sudo iptables -A OUTPUT -d 114.114.114.114 -j ACCEPT
sudo iptables -A INPUT -s 允许的服务器IP -j ACCEPT
4. 添加域名白名单(通过DNS解析)
# 先解析域名获取IP
nslookup example.com
# 然后添加解析出的IP到白名单
sudo iptables -A OUTPUT -d 解析出的IP -j ACCEPT
5. 设置默认策略(谨慎操作)
# 设置默认拒绝出站(测试用)
sudo iptables -P OUTPUT DROP
# 入站保持默认ACCEPT或根据需要调整
安全建议
-
保持SSH连接:在设置规则前确保SSH规则已添加
-
逐步测试:先测试单个程序,再扩展
-
设置恢复计划:
# 15分钟后自动恢复规则(防止锁定) echo "sudo iptables-restore < /tmp/iptables-backup.rules" | at now + 15 minutes
恢复方法
# 如果出现问题,立即恢复
sudo iptables-restore < /tmp/iptables-backup.rules
# 或者清空所有规则
sudo iptables -F
sudo iptables -P INPUT ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
测试程序连通性
# 测试网络连接
curl -I http://允许的域名
ping 允许的IP
# 查看程序是否能正常运行
这样可以安全地测试白名单机制,同时保留恢复能力。建议在非生产环境或维护窗口期进行测试。

浙公网安备 33010602011771号