Ubuntu - ufw firewall not working at all

March 28, 2018 2.1k views
Firewall Ubuntu 16.04

I install this image: Ubuntu Docker 17.12.0~ce on 16.04, in ssh i run sudo ufw status verbose and get:

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)       

Ok to test that this firewall works i run some docker image on port 80 (nginx proxy):

sudo docker run -d -p 80:80 -e ENABLE_IPV6=true -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy:alpine

Theoretically I should be not able to connect to por 80 but when I go to browser and type droplet IP i see nginx screen - this means that firewall ufw NOT WORKS at all (!!!).

When I install pure Ubuntu image (without docker) and manually instal ufw and docker I get similar error.

So what I should do to make UFW firewall works ?

I try this:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable

But doesn't work :(

Above error is very easy to reproduce - may be the ubuntu images are broken?

1 Answer

Here some good guy give answer:

https://stackoverflow.com/a/49563279/860099

The root of problem is fact that UFW and DOCKER have CONFLICT in iptables (link1, link2).

Two separate solutions:

  1. Configure Docker to not use iptables

    DOCKER_OPTS="--iptables=false"
    

    to /etc/default/docker and restart your host (or restart the Docker daemon and UFW).

  2. Drop UFW and instead use Network Firewall available in digital ocean control panel (on website).

Have another answer? Share your knowledge.