Як налаштувати брандмауер на сервері Ubuntu
Опубліковано: 15 лютого 2025 р. о 21:34:36 UTC
Останнє оновлення: 12 січня 2026 р. о 08:37:32 UTC
У цій статті пояснюється та наводяться деякі приклади налаштування брандмауера в GNU/Linux за допомогою ufw, що є скороченням від Uncomplicated FireWall (Нескладний брандмауер) – і назва цілком доречна, це справді дуже простий спосіб переконатися, що у вас відкрито не більше портів, ніж потрібно.
How to Set Up a Firewall on Ubuntu Server
Інформація в цій публікації базується на Ubuntu Server 14.04 x64. Вона може бути актуальною для інших версій, а може й ні. (Оновлення: Я можу підтвердити, що інформація в цій публікації в основному все ще актуальна та функціональна для Ubuntu Server 24.04, проте за проміжні 10 років ufw став дещо "розумнішим", отримавши профілі для поширених серверних програм (наприклад, ви можете ввімкнути "Nginx full" замість портів 80 та 443 окремо), а ввімкнення/вимкнення всього брандмауера для застосування нових правил більше не є необхідним).
Коли я тільки починав працювати з серверами GNU/Linux (Ubuntu), налаштування брандмауера передбачало ручне створення та підтримку потенційно складного файлу конфігурації для iptables. Однак нещодавно я відкрив для себе ufw, що є скороченням від Uncomplicated Firewall (Нескладний брандмауер) – і це справді так :-)
У моїй інсталяції Ubuntu Server 14.04 вже було встановлено ufw, але якщо у вас його немає, просто встановіть його з репозиторіїв:
UFW насправді є лише інструментом, який спрощує налаштування iptables – за лаштунками фільтрацію все ще виконують iptables та брандмауер ядра Linux, тому ufw не є ні менш, ні більш безпечним, ніж ці інструменти. Однак, оскільки ufw значно спрощує правильне налаштування брандмауера, він може зменшити ризик людської помилки і, отже, можливо, є безпечнішим для недосвідчених адміністраторів.
Якщо ваш сервер налаштовано як з IPv6, так і з IPv4, переконайтеся, що це також увімкнено для UFW. Відредагуйте файл /etc/default/ufw та знайдіть рядок з IPV6=yes. У моїй інсталяції він вже був там, але якщо ні, або якщо відображається повідомлення «ні», вам слід відредагувати його.
Потім просто скористайтеся командним рядком, щоб увімкнути потрібні порти. Якщо ви підключені до сервера через ssh, переконайтеся, що ви також дозволили це, інакше це може перервати ваше з’єднання та, можливо, заблокувати вас від сервера під час його активації – залежно від того, чи маєте ви фізичний доступ до сервера, це може бути дещо незручно ;-)
Наприклад, якщо ви використовуєте ssh на стандартному порту 22 і налаштовуєте веб-сервер, який підтримує як незашифровані (HTTP на порту 80), так і зашифровані (HTTPS на порту 443) з'єднання, вам слід виконати такі команди для налаштування ufw:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Якщо вам потрібно більше правил, просто додайте їх, як зазначено вище.
Якщо у вас статична IP-адреса і вам потрібно мати можливість підключатися через ssh лише з одного місця, ви також можете обмежити ssh-з'єднання однією адресою походження, ось так:
Звісно, введіть замість цього свою власну IP-адресу.
Після завершення увімкніть ufw, ввівши:
І все готово! Брандмауер працює і автоматично запуститься після перезавантаження сервера :-)
Якщо ви внесете зміни до конфігурації ufw, вам може знадобитися вимкнути та знову ввімкнути його, щоб вони набули чинності, ось так:
sudo ufw enable
Щоб переглянути поточну конфігурацію, просто введіть:
Якщо ufw не ввімкнено, буде просто відображено повідомлення «неактивний», інакше буде перераховано поточні правила.
