Ubuntu测试ip白名单

需求:为了安全,生产机上需要做ip白名单限制访问的ip,现在需要测试限制ip后程序能否正常运作(若不能,需要提供及时恢复的机会)
解决方法:使用iptables来创建IP和域名白名单进行测试。

基本思路

  1. 先设置宽松规则:允许本地连接和已建立的连接
  2. 添加白名单:允许特定IP和域名
  3. 设置默认拒绝:但保留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或根据需要调整

安全建议

  1. 保持SSH连接:在设置规则前确保SSH规则已添加

  2. 逐步测试:先测试单个程序,再扩展

  3. 设置恢复计划

    # 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
# 查看程序是否能正常运行

这样可以安全地测试白名单机制,同时保留恢复能力。建议在非生产环境或维护窗口期进行测试。

posted @ 2025-09-02 11:22  kksk43  阅读(12)  评论(0)    收藏  举报
特效
黑夜
侧边栏隐藏