Вступ
UFW (Uncomplicated Firewall) – зручний інтерфейс управління політиками безпеки міжмережевого екрана. Наші сервери постійно піддаються різним атакам або скануються під час пошуку уразливостей. Як тільки ці вразливості перебувають, ми ризикуємо стати частиною ботнету, розкрити конфіденційні дані чи втратити гроші через збої у роботі вебдодатків. Одним із перших заходів щодо зниження ризиків безпеки є грамотне налаштування правил міжмережевого екрана. У нашому посібнику ми розглянемо основні команди та правила роботи з утилітою UFW.
Попередні вимоги
- Для початку роботи з UFW вам знадобиться суперкористувач (можливість виконання команд під sudo).
- Утиліта UFW встановлена в системі. Якщо з якоїсь причини вона була відсутня, ви можете встановити її за допомогою команди:
sudo apt-get install ufw
Перевірка правил та поточного стану UFW
У будь-яку годину ви можете перевірити стан UFW за допомогою команди:
sudo ufw status verbose
За замовчуванням UFW вимкнено, так що ви повинні побачити щось на зразок цього:
Status: inactive
Якщо UFW увімкнено, то консолі будуть перелічуватись задані правила. Наприклад, якщо firewall налаштований таким чином – SSH (порт 22) з’єднання з будь-якої точки світу, консоль може виглядати так:
Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 22 ALLOW IN Anywhere 22 (v6) ALLOW IN Anywhere (v6)
Так ви завжди можете дізнатися як налаштований фаєрвол.
Увага! Перед увімкненням UFW проведіть початкове налаштування. Зокрема, має бути доступний SSH(22 порт). В іншому випадку ви ризикуєте втратити доступ до сервера.
Початкове налаштування
За замовчуванням UFW налаштування забороняють усі вхідні з’єднання та дозволяють усі вихідні. Це означає, що якщо хтось спробує досягти ваш сервер, він не зможе під’єднатися, тоді коли будь-яка програма на сервері має доступ до зовнішніх з’єднань.
Відповідні правила фаєрволу прописуються так:
sudo ufw default deny incoming
sudo ufw default allow outgoing
Додавання правила для SSH-з’єднань
Щоб дозволити вхідні SSH-з’єднання, виконайте команду:
sudo ufw allow ssh
SSH демон прослуховує 22 порти. UFW знає про імена найпоширеніших служб (ssh, sftp, http, https), тому ви можете використовувати їх замість порту.
Якщо ваш SSH демон використовує інший порт, вам необхідно вказати його у явному вигляді, наприклад:
sudo ufw allow 2222
Тепер, коли ваш міжмережевий екран налаштований, можете увімкнути його.
Запуск UFW
Щоб увімкнути UFW, використовуйте таку команду:
sudo ufw enable
Ви отримаєте схоже попередження:
Command may disrupt existing ssh connections. Proceed with operation (y|n)?
Це означає, що запуск цього сервісу може розірвати потокове з’єднання ssh.
Але оскільки ми його вже додали ssh у правила, цього не станеться. Тому просто натисніть (y).
Додавання правил для інших підключень
Щоб додатки працювали правильно, вам необхідно додати інші правила. Нижче буде показано налаштування для найпоширеніших служб.
HTTP (80 порт)
Для роботи не зашифрованих вебсерверів використовуйте таку команду:
sudo ufw allow http
або:
sudo ufw allow 80
HTTPS (443 порт)
Те саме, що й у попередньому прикладі, але для зашифрованих з’єднань:
sudo ufw allow https
або:
sudo ufw allow 443
FTP (21 порт)
Цей порт використовується для незашифрованої передачі файлів:
sudo ufw allow ftp
або:
sudo ufw allow 21/tcp
Додавання діапазонів портів
sudo ufw allow 3000:3100
Також можна вказувати конкретний протокол:ф
sudo ufw allow 3000:3100/tcp
sudo ufw allow 3000:3100/udp
Додавання IP-адрес
Ви можете вказати IP-адресу, якій дозволено доступ.
sudo ufw allow from 123.45.67.89
У наведеному прикладі зазначеною адресою дозволяється доступ до всіх портів сервера.
Якщо ви хочете вказати доступ до конкретного порту, скористайтесь командою виду:
sudo ufw allow from 123.45.67.89 to any port 22
Аналогічно ви можете працювати з діапазонами IP-адрес:
sudo ufw allow from 123.45.67.89/24
sudo ufw allow from 123.45.67.89/24 to any port 22
Обмеження підключень
Щоб заборонити з’єднання HTTP, можна використовувати наступну команду:
sudo ufw deny http
Якщо ви бажаєте заборонити всі з’єднання з 123.45.67.89, скористайтесь наступною командою:
sudo ufw deny from 123.45.67.89
Видалення правил
Існує два способи видалення правил. Перший – за номером правила. Виконайте команду:
sudo ufw status numbered
Status: active To Action From -- ------ ---- [ 1] 22 ALLOW IN Anywhere [ 2] 80 ALLOW IN Anywhere [ 3] 22 (v6) ALLOW IN Anywhere (v6) [ 4] 80 (v6) ALLOW IN Anywhere (v6)
Після цього виконайте команду ufw delete та вкажіть номер правила, яке слід видалити:
sudo ufw delete 2
Інший спосіб полягає в тому, що після команди ufw delete використовують фактичне правило, наприклад:
sudo ufw delete allow http
або:
sudo ufw delete allow 80
Вимкнення UFW
Вимкнути UFW можна за допомогою команди:
sudo ufw disable
Внаслідок її виконання всі створені раніше правила втратити чинність.
Скидання правил
Якщо вам потрібно скинути поточні налаштування, скористайтесь командою:
sudo ufw reset
Внаслідок її виконання всі правила будуть відключені та видалені.
Логи
Ufw має опцію збереження логів – журнал подій. Для запуску використовуйте команду:
sudo ufw logging on
Ufw підтримує кілька рівнів логування:
- off – вимкнено.
- low – реєструє всі заблоковані пакети, що не відповідають заданій політиці (з обмеженням швидкості), а також пакети, що відповідають зареєстрованим правилам.
- medium – всі ті, що при значенні low. Плюс всі дозволені пакети, що не відповідають заданій політиці, всі недопустимі пакети, та все нові з’єднання. Усі записи ведуться з обмеженням швидкості.
- high – працює також як і medium. Плюс усі пакети з обмеженням швидкості.
- full – так само як і high, але без обмеження швидкості.
Щоб встановити рівень, вкажіть його як параметр:
sudo ufw logging high
За замовчування використовується рівень low.
Для перегляду файлів, що стосуються логів ufw, використовуйте команду:
ls /var/log/ufw*
Висновок
Тепер ваш фаєрвол має мінімально необхідні налаштування для подальшої роботи. Далі переконайтеся, що всі підключення, що використовують ваш вебдодаток, також дозволені й заблокуйте ті, в яких нема потреби. Це зменшить ризики проникнення на ваш сервер та здійснення хакерами шкідливих дій.
Якщо помітили помилки чи неточності, будь ласка, залишіть коментар чи напишіть листа на поштову адресу [email protected]