UFW防火墙在DigitalOcean中的Ubuntu上不起作用

Kam*_*ski 2 firewall digital-ocean ufw ubuntu-16.04

在我的DigitalOcean(DO)Drop中,我安装了此映像:16.04上的Ubuntu Docker 17.12.0〜ce(可在** DO网站> Droplet > destroy>重建Droplet **中找到),在ssh中(用户配置后),我跑

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable
sudo ufw status verbose
Run Code Online (Sandbox Code Playgroud)

并获得:

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) 
Run Code Online (Sandbox Code Playgroud)

如您所见,我不允许端口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
Run Code Online (Sandbox Code Playgroud)

但是,当我进入chrome并输入我的Droplet IP时,我看到了nginx响应(!!!)

我也为Ubuntu 17映像尝试了此操作(手动安装了docker),但仍然遇到相同的问题。

结论:ufw防火墙在Ubuntu中根本不起作用

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

fvi*_*oso 10

这样做DOCKER_OPTS="--iptables=false"对我不起作用。

我建议在末尾添加这些行 /etc/ufw/after.rules

# BEGIN UFW AND DOCKER
*filter
:ufw-user-forward - [0:0]
:ufw-docker-logging-deny - [0:0]
:DOCKER-USER - [0:0]
-A DOCKER-USER -j ufw-user-forward

-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-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 192.168.0.0/16
-A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 10.0.0.0/8
-A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 172.16.0.0/12
-A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 192.168.0.0/16
-A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 10.0.0.0/8
-A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 172.16.0.0/12

-A DOCKER-USER -j RETURN

-A ufw-docker-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW DOCKER BLOCK] "
-A ufw-docker-logging-deny -j DROP

COMMIT
# END UFW AND DOCKER
Run Code Online (Sandbox Code Playgroud)

这里的来源


Oli*_*ver 9

Docker和UFW不能很好地协同工作,因为它们都修改了iptables,但是有一种解决方法。您需要将Docker配置为不使用iptables。加

DOCKER_OPTS="--iptables=false"
Run Code Online (Sandbox Code Playgroud)

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

  • 就我而言,我必须编辑 `/etc/docker/daemon.json` 以包含 `{"iptables": false}`。`/etc/default/docker` 上面有一个很大的警告:“此文件不适用于 SYSTEMD” (6认同)