Skip to content
VDS · Мережа, IP-адреса та домени

Фаєрвол ufw: закриваємо зайве

Як налаштувати ufw за п'ять хвилин: відкрити потрібні порти, закрити решту, обмежити доступ за адресою і не відрізати собі SSH.

Оновлено 23 серпня 2026 р.

На новій машині відкрито все, що слухає мережу. Частину сервісів ви встановили навмисно, частина прийшла разом із пакетами. Фаєрвол вирішує це одним махом: заборонено все, крім того, що ви перелічите.

ufw — це проста обгортка над правилами ядра. Її достатньо в переважній більшості випадків; складніші конфігурації розглянуті в статті про nftables.

Базова конфігурація

apt install -y ufw
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw enable
ufw status verbose

Тут важливий порядок: правило для SSH додається до увімкнення. Інакше ufw enable обірве ваше з'єднання, і доведеться повертатися через консоль у панелі /hosting/vds/m/<id> або режим відновлення.

Консоль у панелі працює незалежно від мережі, тож повністю відрізати себе не вийде — але це коштує часу.

Типові правила

ufw allow 80/tcp
ufw allow 443/tcp
ufw allow from 203.0.113.5 to any port 22 proto tcp
ufw limit 22/tcp
ufw delete allow 80/tcp
ufw status numbered
ufw delete 3

ufw limit сповільнює кожного, хто відкриває понад шість з'єднань за 30 секунд — дешевий захист від перебору паролів. Точніший інструмент для цієї ж задачі — fail2ban.

Правило allow from стане в пригоді для сервісів, які не повинні бути публічними: баз даних, адмінпанелей, експортерів метрик.

ufw allow from 203.0.113.5 to any port 5432 proto tcp

Перевірка результату

ufw status verbose
ss -tulpn

ss показує, що система слухає, ufw status — що пропущено ззовні. Різниця між списками — це закриті вами сервіси, і це нормально. Погано, коли навпаки: порт відкритий в ufw, але слухача немає.

Ззовні перевіряйте портом, а не пінгом:

nc -vz <address> 443

Docker і ufw

Якщо на машині працює Docker, майте на увазі: переадресація портів контейнерів обробляється в ланцюжках ядра до правил ufw. Контейнер, запущений із -p 5432:5432, буде доступний ззовні навіть тоді, коли ufw status показує deny. Прив'язуйте такі порти до локального інтерфейсу:

docker run -p 127.0.0.1:5432:5432 postgres

Типові помилки

ПомилкаНаслідокРішення
ufw enable без правила для SSHВтрата доступу до мережіЗайдіть через консоль у панелі, ufw allow 22/tcp
Змінили порт SSH, залишили старе правилоТе самеСпершу правило, потім порт
Порт відкритий, сервіс не відповідаєСервіс слухає на 127.0.0.1Змініть адресу прив'язки
Контейнер доступний попри denyDocker обходить ufwПрив'яжіть до 127.0.0.1

Перш ніж закривати порт, виконайте ss -tulpn і переконайтеся, що розумієте, що на ньому сидить. Закритий порт моніторингу згодом виглядає як «сервіс упав».