- Впровадження системи динамічного блокування IP-адрес на основі аналізу журналів доступу.
- Використання файлів конфігурації .local для запобігання втраті налаштувань під час оновлень системи.
- Можливість багатоканального захисту для критично важливих сервісів, таких як SSH, веб-сервери, бази даних та FTP.
- Керування заборонами та розблокуванням у режимі реального часу за допомогою інструмента командного рядка fail2ban-client.
Підключення сервера Linux до мережі по суті схоже на створення магніту для ботів. Якщо ви не налаштували жодних заходів безпеки, у ваших журналах, ймовірно, вже є тисячі невдалих спроб входу; автоматизовані машини постійно пробують комбінації імені користувача та пароля, щоб спробувати взяти під контроль вашу машину за допомогою атак методом грубої сили.
Саме тут і з'являється Fail2ban, інструмент, який виконує роль невтомного сторожового пса. Це не брандмауер у найвужчому сенсі, а радше аналіз системних журналів і, коли виявляє, що хтось намагається проникнути всередину, грюкає дверима перед його носом, блокуючи його IP-адресу за допомогою таких інструментів, як iptables або nftables. Давайте подивимося, як налаштувати його, щоб зробити ваш сервер міцним горішком.
Що таке Fail2ban і як він працює?
Простіше кажучи, Fail2ban — це демон, який постійно контролює файли журналів ваших сервісів. Коли він знаходить підозрілі шаблони, що відповідають заздалегідь визначеним правилам, які називаються фільтрами , він починає рахувати невдачі. Якщо IP-адреса досягає ліміту дозволених спроб протягом певного часу, програма виконує дію , яка зазвичай включає додавання цієї IP-адреси до чорного списку брандмауера.
Ці конфігурації організовані в так звані в'язниці (jails ). В'язниця — це, по суті, набір правил, що застосовуються до певної служби (наприклад, SSH, Apache або MySQL). Таким чином, ви можете мати дуже сувору політику для віддаленого доступу та більш дозвільну для веб-сервера, що гарантує автоматичне блокування зловмисників без необхідності вручну перевіряти журнали кожні п'ять хвилин.

Встановлення відповідно до вашого дистрибутива Linux
Залежно від того, яку систему ви використовуєте, команда для її встановлення дещо відрізняється, але загалом вона доступна майже у всіх офіційних репозиторіях.
- В Ubuntu та Debian: Це дуже просто, потрібно лише бігти
sudo apt updateслідуєsudo apt install fail2ban. - У Rocky Linux або AlmaLinux: Оскільки це дистрибутиви Enterprise, спочатку потрібно ввімкнути репозиторій EPEL за допомогою
sudo dnf install epel-releaseа потім встановіть пакет за допомогоюsudo dnf install fail2ban fail2ban-firewalld. - В Alpine Linux: Використовуйте менеджер APK з
sudo apk add fail2banІ, оскільки він використовує OpenRC, ви повинні ввімкнути його за допомогоюsudo rc-update add fail2ban defaultі почніть це зsudo rc-service fail2ban start.

Головна конфігурація: секрет файлу .local
Дуже поширеною помилкою є безпосереднє редагування файлу. jail.confНе робіть цього! Цей файл може бути перезаписаний під час оновлення системи. Золоте правило — створити копію під назвою в'язниця. місцевийБудь-які параметри, які ви додасте до цього другого файлу, матимуть пріоритет над оригіналом, а ваші зміни будуть перезаписані. захищений від оновлень.
Для початку ви можете клонувати оригінальний файл за допомогою sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local а потім відкрийте його за допомогою вашого улюбленого редактора, такого як nano або vim. У розділі [DEFAULT] Тут ви визначаєте загальну поведінку системи:
- час заборони: Тривалість часу, протягом якого шкідлива IP-адреса залишатиметься замороженою. Це може бути в секундах або за допомогою «m» для хвилин (наприклад, 10 хв).
- знайти час: Інтервал часу, протягом якого Fail2ban перевіряє наявність помилок. Якщо хтось зазнає невдачі 5 разів протягом години, але час пошуку становить 10 хвилин, його не буде забанено.
- макс.повторна спроба: Кількість невдалих спроб, після якої система повідомить Досить і блокувати IP-адресу.
- ігнорувати ip: Важливо уникнути самозабанювання. Тут ви повинні ввести свій публічна IP-адреса або ваш діапазон VPN.

Захист конкретних послуг крок за кроком
Після налаштування загальних параметрів, час активувати джейли для служб, які вас найбільше цікавлять. Щоб захист працював, необхідно встановити enabled = true у відповідному розділі в межах jail.local.
SSH-доступ (найважливіша точка)
Порт 22 є цільовим об'єктом номер один. Надійна конфігурація визначила б maxretry = 3 і bantime = 3600 (одна година). Fail2ban зчитає файл. /var/log/auth.log (на Debian/Ubuntu) або / var / log / secure (на CentOS/RHEL) для виявлення помилок автентифікації та закриття доступу зловмиснику.
Веб-сервери (Apache та Nginx)
Якщо у вас є веб-сайт або інтернет-магазин, боти намагатимуться отримати доступ до конфіденційних маршрутів, таких як /wp-admin o /login.phpВи можете створювати власні фільтри в /etc/fail2ban/filter.d/ виявити ці закономірності. Наприклад, Захист WordPressПомилки 403 або невдалі спроби відстежуються в wp-login.php, блокуючи IP-адресу, якщо вона перевищує обмеження, встановлені у в'язниці Apache або Nginx.
Бази даних та FTP
Для MySQL ви можете відстежувати журнал помилок для фрази Доступ заборонено користувачевіУ випадку FTP (наприклад, ProFTPD) вкрай важливо забезпечити, щоб logpath зіставте фактичний шлях до ваших журналів, оскільки якщо Fail2ban не зможе знайти файл журналу, захист просто не працюватиме.
Розширене керування за допомогою fail2ban-client
Вам не завжди потрібно редагувати файли та перезапускати службу, щоб швидко внести зміни. Команда fail2ban-client Це дозволяє керувати системою на льоту з консолі.
Щоб побачити, які в'язниці активні та скільки IP-адрес заблоковано, використовуйте sudo fail2ban-client statusЯкщо ви хочете глибше зануритися в роботу сервісу, такого як SSH, виконайте команду sudo fail2ban-client status sshdКрім того, якщо помилково Ви заблокували колегу Або ви можете швидко звільнити IP-адресу самостійно за допомогою команди sudo fail2ban-client set sshd unbanip IP_A_DESBLOQUEAR.
Технічне обслуговування та усунення несправностей
Якщо ви помітили, що Fail2ban не блокує належним чином, перше місце, де потрібно подивитися, це власний файл журналу інструменту. /var/log/fail2ban.log. Використовуючи tail -f Ви можете бачити в режимі реального часу, кого заборонено та чому.
Пам'ятайте, що Fail2ban зберігає стан блокування в базі даних SQLite в /var/lib/fail2ban/fail2ban.sqlite3Таким чином, якщо ви перезапустите сервер, заборонені IP-адреси будуть розбанені. залишатиметься заблокованим доки не закінчиться термін дії штрафу. Щоразу, коли ви вносите зміни до файлів конфігурації, не забудьте застосувати ці зміни за допомогою sudo systemctl restart fail2ban.
Впровадження цього інструменту перетворює ваш сервер з легкої мішені на автоматизовану фортецю, зменшуючи навантаження на процесор, відкидаючи шкідливий трафік на мережевому рівні, і дозволяючи вам спати спокійно, знаючи, що боти не зможуть проникнути всередину методом грубої сили. Поєднуючи використання файлів .local, керування певними джейлами та постійний моніторинг журналів, ви отримуєте систему глибокого захисту, необхідну для будь-якого системного адміністратора Linux.