Як налаштувати брандмауер на сервері Ubuntu
Опубліковано: 15 лютого 2025 р. о 21:34:36 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 не увімкнено, це просто покаже повідомлення "неактивне", інакше буде вказано поточні визначені правила.