蘭雅sRGB 个人笔记 https://262235.xyz
提供编程和电脑应用视频教程,工具和源代码
C, C++, Python Programming, Source Code, Video

旧Hexo博客 | Github | IP定位WebAPI | Docker Hub
编程中文文档 | 网盘分享 | 中文Linux命令

实践--iptables设置白名单只允许Cloudflare访问Docker容器

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

方法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
本原创文章自由转载,转载请注明本博来源及网址 | 当前页面:兰雅sRGB个人笔记 » 实践--iptables设置白名单只允许Cloudflare访问Docker容器