~/notes

Почему опубликованный порт Docker не закрывается UFW

август 2026

Классическая ловушка: в UFW стоит deny на порт, а сервис в контейнере с -p 8080:8080 всё равно доступен снаружи.

В чём дело

Docker сам добавляет правила iptables для проброса портов: DNAT в таблице nat и разрешения в цепочке FORWARD. Трафик к контейнеру после DNAT идёт через FORWARD, а правила UFW для входящих соединений висят на INPUT — до них пакет просто не доходит.

Что делать

iptables -I DOCKER-USER -i eth0 -p tcp --dport 8080 ! -s 198.51.100.10 -j DROP

Учтите, что в DOCKER-USER порт уже после DNAT — это порт контейнера, а не хоста. Правило нужно сохранить так, чтобы оно переживало перезагрузку.