在我的DigitalOcean(DO)Droplet中,我安装此图像: Ubuntu Docker 17.12.0~ce on 16.04 (可在** DO网站> droplet> destroy> rebuild droplet **),在ssh中(用户配置后),我运行
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable
sudo ufw status verbose
得到:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), allow (routed)
New profiles: skip
To Action From
-- ------ ----
22 LIMIT IN Anywhere
2375/tcp ALLOW IN Anywhere
2376/tcp ALLOW IN Anywhere
22 (v6) LIMIT IN Anywhere (v6)
2375/tcp (v6) ALLOW IN Anywhere (v6)
2376/tcp (v6) ALLOW IN Anywhere (v6)
我们看到我们不允许从端口80(http)进行任何连接 . 确定测试防火墙确实有效我运行以下docker:
sudo docker run -d -p 80:80 -e ENABLE_IPV6=true -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy:alpine
但是当我去chrome并键入我的Droplet IP时,我看到nginx响应(!!!)
我也尝试这个Ubuntu 17图像(手动安装docker),但仍然遇到同样的问题 .
结论:ufw防火墙在Ubuntu中根本不起作用
Question :如何配置ufw / ubuntu来解决这个问题?
2 回答
Docker和UFW不能很好地协同工作,因为它们都修改iptables但是有办法解决这个问题 . 您需要将Docker配置为不使用iptables . 加
到
/etc/default/docker
并重新启动主机(或重新启动Docker守护程序和UFW) .这两个链接有关于该问题的更多信息:
https://blog.viktorpetersson.com/2014/11/03/the-dangers-of-ufw-docker.html
https://www.techrepublic.com/article/how-to-fix-the-docker-and-ufw-security-flaw/
Alternative solution :丢弃UFW,而是使用数字海洋控制面板(网站上)提供的网络防火墙 .