Як встановити та налаштувати Fail2Ban в Linux

9 хв читання - 14 травня 2026 р.

hero section cover
Зміст
  • Як встановити та налаштувати Fail2Ban у Linux
  • Необхідні умови
  • Встановлення Fail2Ban на Ubuntu/Debian
  • Налаштування Jails
  • Тестування та моніторинг
  • Розширена конфігурація
Поділитися

Покрокове керівництво по встановленню, налаштуванню та тестуванню Fail2Ban на серверах Linux на базі Ubuntu, Debian та RHEL.

Як встановити та налаштувати Fail2Ban у Linux

Fail2Ban відстежує журнали вашого сервера на предмет підозрілої активності та автоматично блокує IP-адреси порушників, оновлюючи правила брандмауера. Він зупиняє атаки методом грубої сили, зменшує шум у журналах і після налаштування тихо працює у фоновому режимі. Цей посібник охоплює встановлення на Ubuntu/Debian, основне налаштування, налаштування jail та кілька додаткових опцій, про які варто знати.

Необхідні умови

Fail2Ban працює на більшості дистрибутивів Linux: Ubuntu, Debian, AlmaLinux, CentOS, RHEL, Rocky Linux та Fedora. Вам знадобиться:

  • Python 3, встановлений у системі
  • Доступ з правами root або sudo для встановлення пакетів та внесення змін до брандмауера
  • Активний брандмауер (iptables, nftables, ufw або firewalld)
  • Файли журналів, що фіксують невдалі спроби входу (/var/log/auth.log на системах на базі Debian, /var/log/secure на системах на базі RHEL)

У системах на базі RHEL спочатку увімкніть репозиторій EPEL. Перед встановленням Fail2Ban переконайтеся, що брандмауер працює, за допомогою команди ufw status або systemctl status firewalld.

Встановлення Fail2Ban на Ubuntu/Debian

Оновіть пакети та встановіть Fail2Ban:

sudo apt update && sudo apt upgrade -y
sudo apt install fail2ban

Увімкніть службу, щоб вона запускалася під час завантаження, а потім запустіть її:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Скопіюйте конфігурацію за замовчуванням у локальний файл перезапису. Завжди редагуйте jail.local, а не jail.conf, щоб оновлення пакетів не перезаписали ваші налаштування:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Перевірте, чи все працює:

sudo systemctl status fail2ban
sudo fail2ban-client status

Перша команда повинна показувати "Active: active (running)". Друга команда показує список активних jails. Переконайтеся, що Fail2Ban увімкнено при завантаженні за допомогою sudo systemctl is-enabled fail2ban.

Налаштування Jails

Налаштування за замовчуванням

Відкрийте /etc/fail2ban/jail.local і налаштуйте [DEFAULT] . Ці налаштування застосовуються до всіх джейл, якщо їх не замінено:

ПараметрРекомендоване значенняЩо робить
bantime3600Блокує IP-адресу на 1 годину
findtime600Підраховує помилки протягом 10-хвилинного вікна
maxretry3 до 5Кількість помилок, після яких спрацьовує блокування
ignoreip127.0.0.1/8 ::1IP-адреси, які ніколи не блокуються

Додайте власну IP-адресу адміністратора, щоб ignoreip щоб не заблокувати собі доступ. Приклад: ignoreip = 127.0.0.1/8 ::1 203.0.113.50.

Захист SSH

Увімкніть SSH-тюрму в jail.local:

[sshd]
enabled = true

Перевірте, чи logpath вказує на правильний файл журналу для вашого дистрибутива. Якщо ви перенесли SSH на нестандартний порт (наприклад, 2222), оновіть port відповідним чином.

Захист веб-сервера

Увімкніть jail, що відповідає вашому веб-серверу:

  • Nginx: [nginx-http-auth] для помилок автентифікації, [nginx-botsearch] для шкідливих ботів
  • Apache: [apache-auth] для аутентифікації, [apache-badbots] для ботів

Recidive Jail

Recidive [recidive] jail виловлює IP-адреси, які постійно блокуються в інших jail, і застосовує до них більш тривале покарання, зазвичай на один тиждень (604 800 секунд). Це корисно для наполегливих зловмисників, які змінюють свої методи.

Після внесення змін перезавантажте сторінку:

sudo systemctl restart fail2ban
sudo fail2ban-client status

Тестування та моніторинг

Тестування блокувань

Перш ніж покладатися на Fail2Ban у виробничому середовищі, протестуйте його. З віддаленої машини (не з вашої адміністраторської IP-адреси) спробуйте увійти через SSH, поки не перевищите maxretry. Вас має заблокувати. Перевірте за допомогою:

sudo fail2ban-client status sshd

Спостерігайте за блокуваннями в режимі реального часу:

tail -f /var/log/fail2ban.log

Якщо ви випадково заблокували легітимну IP-адресу, розблокуйте її:

sudo fail2ban-client set sshd unbanip 203.0.113.50

Повсякденний моніторинг

Перегляньте історію блокувань, просканувавши журнал за допомогою grep:

grep "Ban\|Unban" /var/log/fail2ban.log

Корисні команди управління:

КомандаПризначення
fail2ban-client statusПерелік усіх активних блокувань
fail2ban-client bannedПоказати всі IP-адреси, які наразі заблоковані
fail2ban-client set <jail> unbanip <IP>Зняти заборону з певної IP-адреси
fail2ban-client unban --allСкинути всі заборони
fail2ban-client set <jail> banip <IP>Заблокувати IP вручну

Блокування зберігаються після перезапуску. Fail2Ban зберігає їх у базі даних SQLite за адресою /var/lib/fail2ban/fail2ban.sqlite3.

Розширена конфігурація

Перехід на nftables

nftables — це сучасна заміна iptables. Вона обробляє IPv4 та IPv6 в єдиній структурі, краще масштабується з великими списками заборонених адрес та має вбудовану функцію обмеження швидкості. Якщо ви використовуєте Ubuntu 22.04+, Debian 11+ або будь-який інший сучасний дистрибутив, це кращий вибір.

Налаштуйте його jail.local:

[DEFAULT]
banaction = nftables-multiport

Перезапустіть Fail2Ban, а потім перевірте за допомогою sudo nft list ruleset. Ви повинні побачити f2b-table та f2b-chain у вихідних даних. Залишайтеся на iptables лише у тому випадку, якщо ви використовуєте старішу систему або маєте вимоги щодо сумісності.

Повідомлення електронною поштою

За замовчуванням Fail2Ban блокує користувачів без попередження. Щоб отримувати сповіщення електронною поштою, додайте наступне до розділу [DEFAULT] розділ jail.local:

[DEFAULT]
destemail = [email protected]
sender = [email protected]
mta = sendmail
action = %(action_mwl)s

Ця action_mwl action надсилає електронний лист із деталями блокування, даними WHOIS та рядками журналу, що спричинили блокування. Використовуйте action_mw , якщо вам потрібні лише дані WHOIS. Вам знадобиться встановлений агент передачі пошти, такий як sendmail, або SMTP-ретранслятор, налаштований за допомогою чогось на зразок msmtp.

Для сповіщень у Slack або Discord створіть скрипт, який надсилає веб-хук, і підключіть його через файл користувацької дії у /etc/fail2ban/action.d/.

Якщо ви шукаєте сервер з повним root-доступом та необмеженою пропускною здатністю для запуску Fail2Ban, ознайомтеся з виділеними серверами FDC.

background image
Ваш сервер стримує ваш розвиток?

Втомилися від повільного розгортання або обмежень пропускної здатності? FDC Servers пропонує миттєве виділення потужності, глобальне охоплення та гнучкі плани, створені для будь-якого масштабу. Готові до оновлення?

Розблокувати продуктивність зараз

Блог

На цьому тижні

Більше статей
Посібник з налаштування Prometheus та node_exporter

Посібник з налаштування Prometheus та node_exporter

Встановіть Prometheus та node_exporter, налаштуйте цілі вилучення, налаштуйте системні служби та захистіть стек моніторингу. Покрокова інструкція для Linux.

15 хв читання - 29 травня 2026 р.

XDP та eBPF для обробки пакетів у Linux

14 хв читання - 27 травня 2026 р.

Більше статей
background image

Маєте запитання або потребуєте індивідуального рішення?

icon

Гнучкі варіанти

icon

Глобальне охоплення

icon

Миттєве розгортання

icon

Гнучкі варіанти

icon

Глобальне охоплення

icon

Миттєве розгортання