Хочете, щоб ваш сервер Linux пережив натиск ботів і брутфорсів? Тоді час увімкнути перевірену зв’язку: UFW як простий firewall Linux, Fail2ban для блокування «поганих» IP по логах, і e‑mail сповіщення, щоб оперативно реагувати. У цій інструкції я, Kernelka, покажу, як захистити SSH підключення та зміцнити Nginx крок за кроком — без магії й зайвих рухів. 🛡️
Що будемо робити і що нам потрібно
- Увімкнемо UFW з безпечною політикою за замовчуванням та дозволимо SSH і Nginx.
- Встановимо Fail2ban і додамо jail-и для sshd та Nginx.
- Увімкнемо e‑mail сповіщення про бани з деталями.
- Розглянемо альтернативи, GUI-інструменти та типові проблеми.
Перед стартом: потрібні права sudo, встановлений Nginx і активоване SSH підключення. Приклади нижче підходять для Debian/Ubuntu; на інших дистрибутивах команди пакетного менеджера відрізнятимуться.
Крок 1. Налаштовуємо UFW (firewall Linux)
UFW — простий інтерфейс до netfilter. Вмикаємо політику «заборонити все вхідне, дозволити вихідне», після чого явно відкриємо потрібні сервіси.
Перевірка правил
Тепер базовий захист для сервер Linux активний: SSH і Nginx працюють, інше — закрито.
Крок 2. Встановлюємо та налаштовуємо Fail2ban
Fail2ban стежить за логами, знаходить підозрілі шаблони та банить IP через запущений firewall. Далі — мінімальний, але дієвий конфіг.
Створюємо /etc/fail2ban/jail.local
Спочатку відкриємо файл у редакторі, потім вставимо конфіг нижче.
Перезапускаємо сервіс і перевіряємо статус:
Щоб переконатися, що правила коректні, можна прогнати тест на вибірці логів:
Крок 3. Увімкнути e‑mail сповіщення
Fail2ban уміє надсилати листи через локальний MTA. Найпростіше поставити Postfix у режимі «Internet Site» і перевірити доставку.
Якщо лист дійшов, у jail.local вже вказана дія action = %(action_mwl)s, яка шле повідомлення з вирізками логів і whois. За потреби замініть на %(action_mw)s (без логів) або іншу дію з каталогу /etc/fail2ban/action.d/.
Альтернативні способи та корисні доповнення
- Замість UFW: firewalld (Fedora, RHEL). Принцип той самий — deny за замовчуванням, allow потрібні сервіси.
- Посилення SSH: використовуйте ключі та вимкніть паролі.
- Якщо Nginx стоїть за CDN/проксі, ввімкніть real_ip, щоб Fail2ban бачив реальні IP, а не IP балансера.
GUI-спосіб (якщо доречно)
На десктопних системах можна скористатися GUFW — графічною оболонкою до UFW:
Відкрийте GUFW, увімкніть брандмауер, додайте правила для OpenSSH та «WWW Full». Для Fail2ban офіційного GUI майже немає; на серверах зручно працювати в терміналі.
FAQ
Чи не конфліктують UFW і Fail2ban?
Ні. Fail2ban використовує UFW як бекенд для бану IP (або безпосередньо iptables/nftables). Вони доповнюють одне одного.
Як розбанити IP?
Не приходять листи від Fail2ban — що робити?
- Перевірте MTA: на Ubuntu це
postfix. Подивіться/var/log/mail.log. - Виконайте тестовий лист через
mail. - У
jail.localпереконайтеся, щоdestemailіactionзадані, аmtaвідповідає вашій системі.
Де зберігаються логи?
- SSH:
/var/log/auth.log(Debian/Ubuntu). - Nginx:
/var/log/nginx/access.log,error.log. - Fail2ban:
/var/log/fail2ban.log.
Nginx за CDN/проксі — бани не працюють як слід
Сконфігуруйте set_real_ip_from і real_ip_header у Nginx, щоб у логах з’явився реальний IP клієнта. Інакше Fail2ban банитиме IP балансера.
Чи можна додати «білий список»?
Так, змініть ignoreip у [DEFAULT], додавши свої підмережі: напр. ignoreip = 127.0.0.1/8 ::1 10.0.0.0/8.
Порада від Kernelka
Якщо отримуєте багато фальшивих спрацьовувань по Nginx, спершу знизьте чутливість (параметри maxretry/findtime) і перевірте власні health‑check-и. А для критичних вузлів додайте окремий канал сповіщень (наприклад, через webhook) поряд з e‑mail — так ви нічого не пропустите. ✨
Підсумок
- UFW: deny вхідного трафіку, allow OpenSSH і «Nginx Full», увімкнений rate limit.
- Fail2ban: активні jail-и для sshd і Nginx, збалансовані bantime/findtime/maxretry.
- E‑mail: Postfix + action %(action_mwl)s для інформативних сповіщень.
- Додатково: ключі SSH, вимкнення паролів, реальні IP за проксі, білий список.
- Моніторинг: регулярно перевіряйте
fail2ban-client statusта логи.

Прокоментувати
На сайті відображається лише твоє ім'я та коментар. Електронна пошта зберігається виключно для зв'язку з тобою за потреби та в жодному разі не передається стороннім особам.