Запускаю UFW, делаю блокирующее правило, а оно не работает
мне нужно закрыть порты некотрых сервисов на публичном хостинге. Пока экспериментирую на локальном сервере. Установлена Ubuntu 24 LTS, postgres запущен в докере.
Устанавливаю ufw:
sudo apt-get install ufw
Запихиваю в сервисы:
systemctl enable --now ufw
Добавляю правило разрешающее ssh:
sudo ufw allow ssh
Проверяю список правил через
sudo ufw show added
Вроде всё нормально.
Проверяю порт с другой машины через nmap:
sudo nmap -p 5432 192.168.0.106
вижу что порт открыт:
5432/tcp open pgbouncer
Окей, думаю я. Добавляю общее правило:
sudo ufw default deny incoming
растарую службу
sudo systemctl restart ufw.service
порт открыт.
В недоумении я добавляю именно этот порт отдельным правилом:
sudo ufw deny 5432
перегружаю сервер. Порт открыт.
Сейчас конфишурация ufw выглядит вот так:
sudo ufw show added:
ufw allow 22/tcp
ufw deny 5432
команда
sudo 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
5432 DENY IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
5432 (v6) DENY IN Anywhere (v6)
и порт остаётся открытым.... и я понимаю, что лыжи - не едут
Посоветуйте, пожалуйста, как правильно закрыть порт?
Спасибо.
Ответы (1 шт):
не нужно экспериментировать с UFW в докере. Можно сразу пойти на публичный хостинг и
Запретить по-умолчанию все входящие порты:
sudo ufw default deny incomingопционально. по-умолчанию ufw и так запрещает всё, что не разрешает
Разрешить SSH:
sudo ufw allow sshВключить UFW:
sudo ufw enable
Порядок важен! Если сначала включить UFW, он сразу отрубит все соединения, и вы больше никогда не зайдёте в свой сервер.
после этого можно уже вдумчиво разрешать те порты, которые вам нужны.