最近在使用docker时,发现了docker开启的端口居然不受ufw防火墙的限制,就这么绕过我的防火墙让我非常滴没面子啊...必须得治!
遂去网上查询原因与解决方案,发现发生原因是docker会自动修改iptables打开相应防火墙端口,使得ufw完全无效,要是这样的话我nginx反代还有什么意义?(吐槽:哪怕ufw无效nginx意义也大着吧...)必须得治治docker!
不过网上的教程大多是禁止docker更新iptables,这样会留下的问题不用我解释了吧~
寻找片刻,去技术论坛上寻到了个基于ufw的低侵入性解决方案~
首先修改ufw配置文件:
vim /etc/ufw/after.rules
在末尾加上:
# BEGIN UFW AND DOCKER
*filter
:ufw-user-forward - [0:0]
:DOCKER-USER - [0:0]
-A DOCKER-USER -j RETURN -s 10.0.0.0/8
-A DOCKER-USER -j RETURN -s 172.16.0.0/12
-A DOCKER-USER -j RETURN -s 192.168.0.0/16
-A DOCKER-USER -j ufw-user-forward
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 192.168.0.0/16
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 10.0.0.0/8
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 172.16.0.0/12
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 192.168.0.0/16
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 10.0.0.0/8
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 172.16.0.0/12
-A DOCKER-USER -j RETURN
COMMIT
# END UFW AND DOCKER
保存并重启ufw即可~
sudo systemctl restart ufw
确实十分简单,不过这种低侵入性的方案比较少见,而这个漏洞还是要处理的~所以记录一下~



Comments NOTHING