实践操作前,请参考下面文章

方法1: 批量添加 cloudflare ips-v4iptables 白名单

# 清空整个DOCKER-USER组
iptables -F DOCKER-USER

# 只允许cloudflare代理源站其他都DROP
for i in "curl https://www.cloudflare.com/ips-v4";
    do iptables -I DOCKER-USER -p tcp -m multiport --dports http,https -s $i -j ACCEPT;
done

iptables -A DOCKER-USER -p tcp -m multiport --dports http,https -j DROP
iptables -A DOCKER-USER -j RETURN

# 显示刚设置的DOCKER-USER组规则
iptables  -nvL   DOCKER-USER

方法2: 使用 ipset 集合管理白名单,更加灵活

# 清空整个DOCKER-USER组
iptables -F DOCKER-USER

# 允许白名单IPSET集访问DOCKER-USER组,其他都 DROP
iptables -I DOCKER-USER -m set --match-set whitelist src -p tcp -j ACCEPT
iptables -A DOCKER-USER -p tcp -m multiport --dports http,https -j DROP
iptables -A DOCKER-USER -j RETURN
  • 需要预先建立 whitelist 白名单集合

    apt install ipset -y                 # 先安装ipset软件
    
    ipset create whitelist hash:net maxelem 1000000    # 白名单
    ipset add  whitelist 172.17.0.0/24   # 增加一条ip段记录
    
    for i in "curl https://www.cloudflare.com/ips-v4";
      do ipset add  whitelist $i ; done
    
    ipset list whitelist                 # 查看白名单
    ipset destroy whitelist              # 销毁白名单
    
    # 其他命令:  添加测试IP  白名单允许多端口  黑名单全 DROP
    iptables -I DOCKER-USER -s 自己IP地址  -p tcp -m multiport --dport 80,443,8000,9000  -j ACCEPT
    iptables -I DOCKER-USER -m set --match-set whitelist src -p tcp -m multiport --dport 80,443,8000,9000 -j ACCEPT
    iptables -I DOCKER-USER -m set --match-set blacklist src -p tcp -j DROP

    注意: ipset 白名单是保存在内存中,重启系统后丢失,会导致 iptables 恢复 DOCKER-USER 相关命令无效

    # 重启前先备份 whitelist 白名单
    ipset save whitelist -f whitelist.txt
    
    # 重启服务器后,执行恢复 whitelist 白名单
    ipset restore -f whitelist.txt
    
    # 重新建立 DOCKER-USER 组规则
    iptables -F DOCKER-USER
    iptables -I DOCKER-USER -m set --match-set whitelist src -p tcp -j ACCEPT
    iptables -A DOCKER-USER -p tcp -m multiport --dports http,https -j DROP
    iptables -A DOCKER-USER -j RETURN

0 条评论

发表回复

Avatar placeholder

您的邮箱地址不会被公开。 必填项已用 * 标注