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

Docker на Debian / Ubuntu без соблюдения параметров ufw firewall с открытыми портами

Docker обходит настройки ufw firewall и подвергает порты внешнему миру, что является очень серьезной утечкой информации.

9 декабря 2019
В Docker
post main image
https://unsplash.com/@andrewtneel

Еще одна неожиданная проблема Docker . В предыдущем сообщении я описывал, почему и как вы должны заставить Docker использовать subnet, чтобы предотвратить неожиданные изменения в сети с такими последствиями, как прекращение работы почты.

Это сообщение о Docker не соответствует параметрам firewall , по крайней мере при запуске Debian / Ubuntu и ufw (Q4_537_TNEEKALPER). Docker не говорит вам об этом и обнажает порты, поэтому такое поведение совершенно неожиданно.

Мой сервер ISPConfig работает под управлением Debian Stretch. Я использую ufw в качестве firewall, ниже приведены основные настройки.

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       

Как видите, все входящие соединения заблокированы, за исключением нескольких разрешенных.

Мои веб-приложения Docker Python используют сервер Gunicorn WSGI HTTP для обслуживания приложения Python Flask . Nginx работает на хосте и конфигурируется как обратный proxy для этих приложений. Работает как шарм. В файле docker-compose.yml порты загружаются из файла .env:

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

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

Для одного приложения .env файл содержит эти строки:

SERVER_PORT_HOST=8001
SERVER_PORT_CONTAINER=8001

Таким образом, фактически используется строка docker-compose :

    ports:
      - "8001:8001"

Проблема: Docker порт 8001 подвергается воздействию внешней сети, даже если ufw настроен на блокировку входящих соединений.

Это означает, что приложение/сервис Docker также отображается на <SERVER-IP>:8001. Это не только очень плохо, но и совершенно неожиданно, поскольку ufw был настроен на блокировку всех входящих соединений.

Решения

Для этого есть несколько решений, здесь я выбираю привязку порта к хост-машине. Тогда строки docker-compose.yml становятся:

    ports:
      - "127.0.0.1:8001:8001"

Это работает на меня.

Другими способами решения этой проблемы являются предотвращение того, чтобы Docker связывался с firewall, добавление правил в файл ufw /etc/ufw/ After.rules и т.д. См. ссылки ниже.

Резюме

Некоторые люди рассматривают поведение Docker как ошибку, и я могу только согласиться с этим. Ufw - это программа firewall, очень важная для управления безопасностью. Ufw очень широко используется и если другая программа обходит свое поведение, пользователь должен быть проинформирован. До тех пор пока это не будет исправлено, как минимум Docker должен выдавать большое предупреждающее сообщение при запуске приложения.

Ссылки / кредиты

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

Подробнее

Docker

Оставить комментарий

Комментируйте анонимно или войдите в систему, чтобы прокомментировать.

Комментарии (1)

Оставьте ответ

Ответьте анонимно или войдите в систему, чтобы ответить.

avatar

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