Як встановити та налаштувати Fail2ban
Debian 11
Основне її призначення — захист хоста від несанкціонованого доступу, що можливе завдяки ретельному відстеженню активності мережі на основних портах і читанню журналів записів (лог-файлів). Програма особливо ефективна проти так званих brute-force атак, оскільки вона нейтралізує атакуючого таким чином, що всі пакети, відправлені з пристрою, IP-адреса якого з тієї чи іншої причини потрап ила до чорного списку, відкидаються. Блокування налаштовується шляхом внесення змін до правил iptables.
sudo apt-get update
sudo apt-get install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
Зверніть увагу на секцію [DEFAULT]
.
Вона містить основні правила, задані за замовчуванням для Fail2ban.
ignoreip
- значення цього параметра говорять про те, які IP-адреси не будуть блокуватися зовсім. Якщо ви хочете, щоб Fail2ban ігнорував при перевірці кілька IP-адрес, їх необхідно вказати у значенні ignoreip через пропуск.
bantime
- цей параметр означає час у секундах, протягом якого підозрілий IP буде заблоковано. Спочатку його значення становить 10 хвилин.
//Щоб заборонити IP хосту доступ до серверу після бану "назавжди" потрібно встановити цей параметр в -1
sudo nano /etc/fail2ban/jail.local
sudo systemctl restart fail2ban
findtime
- визначає проміжок часу в секундах, протягом якого програмою буде визначатися наявність підозрілої активності.
maxretry
- допустима кількість неуспішних спроб отримання доступу до сервера. При перевищенні вказаного IP значення потрапляє в бан.
Після редагування jail.local обов'язково зробіть перезапуск команд Fail2ban
sudo service fail2ban restart
tail /var/log/fail2ban.log
Налаштування Fail2ban
Налаштування Fail2ban
Насамперед налаштуємо захист свого VPS за протоколом SSH за допомогою програми Fail2ban. Для цього знайдемо
у файлі jail.local секцію [ssh]
.
Вона має бути активною за умовчанням. Проте, про всяк випадок, переконайтеся, що значення параметра enabled
встановлено
true
, а не false
.
Вкажіть значення параметрів, на основі яких Fail2ban повинен відстежувати активність:
filter
– фільтр, який буде використовуватись. За замовчуванням це /etc/fail2ban/filter.d/sshd.conf;
action
— дії, які виконуватиме Fail2ban при виявленні атакуючої IP-адреси, всі правила реагування на дії зловмисника
описані у файлі /etc/fail2ban/action.d. Відповідно, як значення параметра action не може бути зазначена інформація,
якої немає у файлі /etc/fail2ban/action.d;
logpath
- повний шлях до файлу, в який буде записуватись інформація про спроби отримання доступу до VPS.
findtime
- час у секундах, протягом якого спостерігається підозріла активність;
maxretry
- дозволена кількість повторних спроб підключення до сервера;
bantime
— проміжок часу, протягом якого IP, що потрапив у чорний список, залишатиметься заблокованим.
Варто звер нути увагу на той факт, що зовсім необов'язково прописувати значення вищезазначених параметрів у кожній секції.
Якщо їх не згадувати, наберуть чинності налаштування, зазначені в головному розділі [DEFAULT]
.
Головне, щоб для змінної enabled
було вказано значення true
.
Захист протоколу SSH
Розглянемо застосування параметрів реагування детальніше. Приклад конфігурації Fail2ban на порту SSH:
[ssh]
enabled = true
port = ssh
filter = sshd
action = iptables[name=sshd, port=ssh, protocol=tcp]
sendmail-whois[name=ssh, dest=****@gmail.com, sender=fail2ban@***.com]
logpath = /var/log/auth.log
maxretry = 3
bantime = 600
Запис вище означає, що якщо виконано понад 3 невдалих спроби підключення до VPS через основні порти SSH, то IP-адреса, з якої виконувалася авторизація, потрапить у бан на 10 хвилин. Правило заборони буде додано до iptables. Водночас власник сервера отримає повідомлення на e-mail, вказаний у значенні змінної dest, про те, що вказаний IP був заблокований за спробу отримання несанкціонованого доступу за протоколом SSH. Також у повідомленні буде вказана WHOIS інформація про заблокований IP.
Важливо! Щоб повідомлення про блокування зловмисника надсилалося на ваш e-mail, необхідна наявність поштового сервера на VPS.