angle-uparrow-clockwisearrow-counterclockwisearrow-down-uparrow-leftatcalendarcard-listchatcheckenvelopefolderhouseinfo-circlepencilpeoplepersonperson-fillperson-plusphoneplusquestion-circlesearchtagtrashx

Docker op Debian / Ubuntu niet in overeenstemming met ufw firewall instellingen voor het blootstellen van de havens.

Docker omzeilt ufw firewall instellingen en stelt poorten bloot aan de buitenwereld, een zeer ernstig veiligheidslek.

9 december 2019
In Docker
post main image
https://unsplash.com/@andrewtneel

Weer een andere onverwachte Docker kwestie. In een vorige post beschreef ik waarom en hoe je Docker moet dwingen om een subnet te gebruiken, om plotselinge onverwachte veranderingen in het netwerk te voorkomen, met als gevolg dat mail niet meer werkt.

Dit bericht gaat over Docker die firewall niet respecteert, althans wanneer Debian / Ubuntu en ufw (Uncomplicated Firewall) wordt uitgevoerd. Docker vertelt je dit niet, en legt de poorten bloot, dus dit gedrag is totaal onverwacht.

Mijn ISPConfig server draait Debian Stretch. Ik gebruik ufw als firewall, hieronder staan de belangrijkste instellingen.

ufw  status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere                  
80/tcp                     ALLOW IN    Anywhere                  
443/tcp                    ALLOW IN    Anywhere                  
8080/tcp                   ALLOW IN    Anywhere                  
25                         ALLOW IN    Anywhere       

Zoals u kunt zien, zijn alle inkomende verbindingen geblokkeerd, op enkele uitzonderingen na.

Mijn Docker Q4_TNEMECALPER_4Q webapplicaties gebruiken de Gunicorn WSGI HTTP-server om de Python Flask -applicatie te bedienen. Nginx draait op de host en is voor deze toepassingen geconfigureerd als een omgekeerde proxy . Werkt als een charme. In het docker-compose.yml bestand worden de poorten geladen vanuit het .env bestand:

services:
  web:
    ...
    env_file:
      - ./.env

    ports:
      - "${SERVER_PORT_HOST}:${SERVER_PORT_CONTAINER}"

Voor één toepassing bevat het .env-bestand deze regels:

SERVER_PORT_HOST=8001
SERVER_PORT_CONTAINER=8001

De gebruikte regel docker-compose is dus in feite de regel docker-compose :

    ports:
      - "8001:8001"

Het probleem: Docker -poort 8001 wordt blootgesteld aan het externe netwerk, zelfs als ufw is geconfigureerd om inkomende verbindingen te blokkeren.

Dit betekent dat de Docker applicatie/dienst ook zichtbaar is bij <SERVER-IP>:8001. Dit is niet alleen erg slecht, het is ook totaal onverwacht omdat ufw is geconfigureerd om alle inkomende verbindingen te blokkeren.

Oplossingen

Er zijn verschillende oplossingen hiervoor, hier heb ik ervoor gekozen om de poort aan de hostmachine te binden. De docker-compose.yml lijnen worden dan:

    ports:
      - "127.0.0.1:8001:8001"

Dit werkt voor mij.

Andere manieren om dit op te lossen zijn het voorkomen van Docker geknoei met firewall, regels toevoegen aan het ufw -bestand /etc/ufw/after.rules, enz. Zie onderstaande links.

Samenvatting

Sommige mensen beschouwen dit Docker gedrag als een bug, en ik kan hier alleen maar mee instemmen. Ufw is een firewall, een zeer belangrijk programma om de veiligheid te controleren. Ufw wordt op grote schaal gebruikt en als een ander programma zijn gedrag omzeilt, moet de gebruiker worden geïnformeerd. Totdat dit vaststaat, moet minimaal Docker een groot waarschuwingsbericht afgeven bij het starten van een toepassing.

Links / credits

Be careful with Docker ports!
https://dev.to/kovah/be-careful-with-docker-ports-3pih

Docker service exposed publicly though made to expose ports to localhost only
https://stackoverflow.com/questions/50621936/docker-service-exposed-publicly-though-made-to-expose-ports-to-localhost-only

Docker services only available to the local host
https://stackoverflow.com/questions/54261105/docker-services-only-available-to-the-local-host

How to fix the Docker and UFW security flaw
https://www.techrepublic.com/article/how-to-fix-the-docker-and-ufw-security-flaw/

The dangers of UFW + Docker
https://blog.viktorpetersson.com/2014/11/03/the-dangers-of-ufw-docker.html

What is the best practice of docker + ufw under Ubuntu
https://stackoverflow.com/questions/30383845/what-is-the-best-practice-of-docker-ufw-under-ubuntu

Lees meer

Docker

Laat een reactie achter

Reageer anoniem of log in om commentaar te geven.

Opmerkingen (1)

Laat een antwoord achter

Antwoord anoniem of log in om te antwoorden.

avatar

Ein wirklich schweres und immer noch aktuelles Sicherheitsproblem. Danke für die schnelle Lösung für Docker Compose.