实践操作前,请参考下面文章
- https://www.lyvba.com/index.php/tag/iptables/
- https://support.cloudflare.com/hc/zh-cn/articles/201897700
方法1: 批量添加 cloudflare ips-v4
到 iptables
白名单
# 清空整个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 条评论