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

8

Я установил некоторые правила на своем 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-контейнер для запуска этого нового сервиса, на случай, если это имеет значение.

Иван
источник
Можете ли вы перезагрузить UFW? Вы пытались перезагрузить сервер? Есть ли в iptables правила? Пожалуйста, добавьтеiptables -L
Кристофер Перрин
Спасибо, просмотрев вывод iptables -L, я обнаружил, что докер напрямую редактирует iptables. Я могу изменить это, изменив конфигурацию докера
Ivan

Ответы:

6

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

Докер вмешивается непосредственно в 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.
Иван
источник