ufw防火墙不能在digitalocean中使用ubuntu

时间:2018-03-29 06:59:11

标签: ubuntu-16.04 firewall digital-ocean ufw

在我的DigitalOcean(DO)Droplet中,我安装此图像: Ubuntu Docker 17.12.0~ce于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中根本不起作用

问题:如何配置ufw / ubuntu来解决此问题?

3 个答案:

答案 0 :(得分:6)

Docker和UFW并没有很好地协同工作,因为他们都修改了iptables,但是有办法解决这个问题。 您需要将Docker配置为不使用iptables。添加

DOCKER_OPTS="--iptables=false"

/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/

答案 1 :(得分:3)

替代解决方案:删除UFW,改为使用数字海洋控制面板(网站上)提供的网络防火墙。

答案 2 :(得分:3)

执行此操作DOCKER_OPTS =“-iptables = false”对我不起作用。

我建议在/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 -p udp -m udp --sport 53 --dport 1024:65535 -j RETURN

-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

这是来源https://github.com/chaifeng/ufw-docker