Назад | Перейти на главную страницу

Почему UFW не блокирует порты, открытые с помощью докера?

Я установил некоторые правила для своего ufw, но я думаю, что он просто ничего не блокирует. Это его текущий статус:

~# ufw status verbose

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

To                         Action      From
--                         ------      ----
22                         ALLOW IN    Anywhere
80                         ALLOW IN    Anywhere
27015:27115/udp            ALLOW IN    Anywhere
27015:27115/tcp            ALLOW IN    Anywhere
22 (v6)                    ALLOW IN    Anywhere (v6)
80 (v6)                    ALLOW IN    Anywhere (v6)
27015:27115/udp (v6)       ALLOW IN    Anywhere (v6)
27015:27115/tcp (v6)       ALLOW IN    Anywhere (v6)

Как видите, он по умолчанию запрещает входящие соединения и разрешает только определенные порты. Но все же я только что установил новую службу на порт 8083 и могу получить к ней доступ извне. Почему это так?

Я использовал контейнер докеров для запуска этой новой службы, если это имеет значение.

Это выглядит как

Docker напрямую вмешивается в IPTables

. Это поведение можно изменить, добавив --iptables = false в демон Docker.

Отредактируйте / etc / default / docker и раскомментировать строка DOCKER_OPTS:

DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --iptables=false"

Автор пришел к следующему выводу:

  • UFW не сообщает вам истинное состояние iptables (не шокирует, но все же).
  • Никогда не используйте параметр -p (или -P) в Docker для того, что не хотите публиковать.
  • Связывайте только с интерфейсом обратной связи или внутренним IP.