SSD Nodes Learn
Посібники Matt ConnorВід Matt Connor · Оновлено 2026-07-24

Як налаштувати UFW firewall на VPS

Посібник з налаштування UFW на VPS. Дізнайтеся, як безпечно дозволити SSH та відкрити потрібні порти, щоб не втратити доступ до сервера після увімкнення.

Що таке UFW і навіщо він потрібен

UFW розшифровується як Uncomplicated Firewall, і ця назва відповідає дійсності. Це зручний інтерфейс для брандмауера, який вже є в ядрі Linux. Замість написання складних правил ви використовуєте короткі команди, наприклад ufw allow 22/tcp. На новому VPS за замовчуванням усі служби, що прослуховують порти, доступні з інтернету. Брандмауер змінює цей підхід: спочатку ви забороняєте все, а потім дозволяєте доступ лише до потрібних портів. Ця зміна за допомогою лише чотирьох команд значно зменшує поверхню атаки.

Перш ніж налаштовувати UFW, дізнайтеся, які служби прослуховують порти, оскільки саме їх брандмауер буде контролювати. Перегляд активних служб за допомогою ss -tlnp — це правильний перший крок.

Одне правило, яке запобігає повному блокуванню доступу

Ось помилка, через яку люди бояться налаштовувати firewalls. Ви вмикаєте UFW з політикою default-deny, але не дозволяєте SSH. У результаті після активації firewall ваше з'єднання розривається, і ви втрачаєте доступ до системи. Щоб уникнути цього, завжди дозволяйте SSH перед увімкненням UFW. Це єдине важливе правило; наведені нижче кроки виконуються у безпечному порядку.

Якщо це все ж сталося, ви не втратили контроль: веб-консоль провайдера (через VNC або serial) не використовує SSH. Ви можете увійти через неї та виконати ufw disable або додати відсутнє правило.

Step 1: Встановіть політики за замовчуванням

Спочатку налаштуйте UFW так, щоб він забороняв усі вхідні з'єднання та дозволяв усі вихідні:

sudo ufw default deny incoming
sudo ufw default allow outgoing

deny incoming — це важлива частина. Це означає, що будь-який порт без явного правила allow закритий для зовнішнього світу, навіть якщо на ньому запущено службу. allow outgoing дозволяє вашому серверу з'єднуватися з інтернетом для оновлень тощо. Ці дві команди змінюють лише політику; нічого не буде застосовано, доки ви не увімкнете UFW на кроці 3.

Step 2: Дозвольте лише необхідні порти

Перед увімкненням відкрийте SSH, щоб не втратити з'єднання:

sudo ufw allow 22/tcp

UFW також дозволяє обмежити швидкість з'єднань для SSH: sudo ufw limit 22/tcp дозволяє доступ до порту, але блокує будь-яку адресу, яка створює шість або більше з'єднань за тридцять секунд. Це захищає від brute-force скриптів без встановлення додаткового ПЗ.

Якщо ви використовуєте вебсервер, також дозвольте HTTP та HTTPS:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Дозволяйте лише те, що призначено для публічного доступу. База даних, наприклад Postgres на порту 5432, майже ніколи не повинна мати правило allow. Замість цього прив'яжіть її до 127.0.0.1, щоб вона була доступна лише на локальній машині. Кожен відкритий порт — це точка потенційної атаки, тому тримайте список дозволених портів мінімальним.

Ви можете скласти повну послідовність команд ufw для вашого сервера тут, а потім виконати їх по черзі:

ToolUFW rule generator

Step 3: Enable, and confirm it is on

sudo ufw enable

Команда може перервати існуючі SSH-з'єднання. Оскільки на кроці 2 ви дозволили 22/tcp, ваша сесія збережеться. Перевірте результат:

sudo ufw status verbose
Status: active
Default: deny (incoming), allow (outgoing)

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere
22/tcp (v6)                ALLOW IN    Anywhere (v6)
80/tcp                     ALLOW IN    Anywhere

Зверніть увагу на два моменти. Status: active означає, що firewall запущено. Кожне правило відображається двічі: звичайне та з позначкою (v6). Це підтверджує, що UFW керує як IPv4, так і IPv6. Якщо рядки (v6) відсутні, IPv6 не керований, що створює ризики безпеки, описані в the IPv6 firewall post.

Управління правилами пізніше

Щоб переглянути правила з номерами для їхнього видалення:

sudo ufw status numbered
sudo ufw delete 3

Щоб дозволити доступ до порту лише з однієї адреси (це надійний спосіб відкрити адмін-сервіс тільки для вашої IP):

sudo ufw allow from 10.0.0.24 to any port 5432 proto tcp

Firewall — це лише один рівень захисту. Він контролює, що саме може дістатися до порту, але він не сповільнює зловмисника, який здійснює перебір (hammering) відкритого порту, наприклад SSH. Для захисту від цього додайте Fail2ban перед SSH, щоб блокувати порушників. Defence in depth означає, що кожен рівень захищає те, що не під силу іншим рівням.

Використання firewall має сенс лише після того, як ви зрозумієте що таке порти та як працюють сервіси, а його налаштування є обов'язковим етапом перших 10 хвилин роботи з новим VPS.

FAQ

Чи розірве SSH-сесію після увімкнення UFW?

Ні, якщо спочатку дозволити SSH. Виконайте sudo ufw allow 22/tcp перед sudo ufw enable, і з'єднання збережеться, оскільки брандмауер дозволить порт 22. Небезпека полягає у ввімкненні брандмауера з політикою "заборони всього за замовчуванням" без правила дозволу SSH, що призведе до втрати доступу. Якщо це сталося, увійдіть через VNC або консоль керування вашого провайдера та виконайте ufw disable.

Які порти слід відкрити на VPS?

Тільки ті, що призначені для публічного доступу. SSH (22/tcp) для керування сервером, а також HTTP та HTTPS (80/tcp, 443/tcp), якщо ви хостите вебсайт. Все інше має бути заборонено. Внутрішні сервіси, такі як бази даних, повинні бути прив'язані до 127.0.0.1 і не мати жодних правил у брандмауері, щоб вони були недоступні з мережі.

Чи підтримує UFW IPv6?

У сучасних версіях Ubuntu — так: IPV6=yes встановлено у /etc/default/ufw, тому кожне правило застосовується до обох стеків, а ufw status відображає правила IPv6 із суфіксом (v6). Про можливі помилки описано в пастці IPv6 firewall.

Як видалити правило UFW?

Виконайте sudo ufw status numbered, щоб вивести список правил з індексами, потім виконайте sudo ufw delete N, де N — це номер правила, яке потрібно видалити. Також можна видаляти за параметрами, наприклад sudo ufw delete allow 80/tcp.

Як дозволити доступ до порту лише з однієї IP-адреси?

Використовуйте правило from замість звичайного allow. Щоб дозволити доступ до PostgreSQL лише з вашої офісної адреси, виконайте sudo ufw allow from 10.0.0.10 to any port 5432 proto tcp. При політиці "заборони всього за замовчуванням" порт закритий для всіх, доки правило не відкриє його, тому це правило from є єдиним способом доступу: весь інтернет залишається заблокованим, і проходить лише вказана вами адреса. Не додавайте звичайне правило allow 5432/tcp, оскільки воно відкриє порт для всіх. Це найбезпечніший спосіб відкрити доступ до бази даних або панелі адміністратора. Перевірте результат за допомогою sudo ufw status verbose, яка показує адресу джерела поруч із портом.