Найти в Дзене
Помощник сисадмина

Защита сервера от атак с помощью Fail2Ban. 🚀

📌Fail2Ban — это утилита для защиты серверов от брутфорс-атак и других видов несанкционированного доступа путем временной блокировки IP-адресов.  1. Установка Fail2Ban    Debian/Ubuntu:   sudo apt update && sudo apt install fail2ban -y  CentOS/RHEL:   sudo yum install epel-release -y sudo yum install fail2ban -y  Arch Linux:   sudo pacman -S fail2ban  2. Управление сервисом  Запуск и включение Fail2Ban sudo systemctl start fail2ban sudo systemctl enable fail2ban  Перезапуск и проверка статуса sudo systemctl restart fail2ban sudo systemctl status fail2ban  3. Конфигурация Fail2Ban Файл конфигурации по умолчанию:   /etc/fail2ban/jail.conf Рекомендуется создать локальную копию: sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local Редактировать: sudo nano /etc/fail2ban/jail.local  Основные параметры [DEFAULT] bantime = 10m     # Время бана (10 минут) findtime = 10m     # Временной промежуток для поиска нарушений maxretry = 5      # Количество неудачных попыток до бл

📌Fail2Ban — это утилита для защиты серверов от брутфорс-атак и других видов несанкционированного доступа путем временной блокировки IP-адресов.

 1. Установка Fail2Ban  

 Debian/Ubuntu:  

sudo apt update && sudo apt install fail2ban -y

 CentOS/RHEL:  

sudo yum install epel-release -y

sudo yum install fail2ban -y

 Arch Linux:  

sudo pacman -S fail2ban

 2. Управление сервисом

 Запуск и включение Fail2Ban

sudo systemctl start fail2ban

sudo systemctl enable fail2ban

 Перезапуск и проверка статуса

sudo systemctl restart fail2ban

sudo systemctl status fail2ban

 3. Конфигурация Fail2Ban

Файл конфигурации по умолчанию:  

/etc/fail2ban/jail.conf

Рекомендуется создать локальную копию:

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

Редактировать:

sudo nano /etc/fail2ban/jail.local

 Основные параметры

[DEFAULT]

bantime = 10m     # Время бана (10 минут)

findtime = 10m     # Временной промежуток для поиска нарушений

maxretry = 5      # Количество неудачных попыток до блокировки

ignoreip = 127.0.0.1/8 # IP-адреса, которые не будут заблокированы

 4. Настройка фильтров

Фильтры хранятся в /etc/fail2ban/filter.d/.  

Пример фильтра sshd.conf (`/etc/fail2ban/filter.d/sshd.conf`):

[Definition]

failregex = ^%(__prefix_line)sFailed password for .* from <HOST> port \d+ ssh2

ignoreregex =

 5. Настройка jail для SSH

Файл /etc/fail2ban/jail.local:

[sshd]

enabled = true

port = ssh

filter = sshd

logpath = /var/log/auth.log # Для Debian/Ubuntu

# logpath = /var/log/secure # Для CentOS/RHEL

maxretry = 3

bantime = 1h

 6. Перезапуск и проверка работы

sudo systemctl restart fail2ban

sudo fail2ban-client status

Проверить конкретный jail:

sudo fail2ban-client status sshd

 7. Разблокировка IP

Список заблокированных IP:

sudo fail2ban-client status sshd

Разблокировать IP:

sudo fail2ban-client set sshd unbanip 192.168.1.100

 8. Логирование и отладка

Просмотр журнала Fail2Ban:

sudo journalctl -u fail2ban --no-pager

Лог-файл:

sudo tail -f /var/log/fail2ban.log

 9. Полезные команды

 Блокировка IP вручную

sudo fail2ban-client set sshd banip 192.168.1.200

 Добавление в белый список (whitelist)

Добавьте IP в ignoreip в /etc/fail2ban/jail.local:

ignoreip = 127.0.0.1/8 192.168.1.100

 Удаление бана с IP

sudo fail2ban-client set sshd unbanip 192.168.1.100

 Удаление всех банов

sudo fail2ban-client set sshd unban --all

 10. Автозапуск после перезагрузки

sudo systemctl enable fail2ban

 11. Интеграция с UFW (Ubuntu)

Если используется UFW:

sudo nano /etc/fail2ban/jail.local

Добавьте:

[sshd]

enabled = true

backend = auto

port = ssh

filter = sshd

banaction = ufw

Перезапустите Fail2Ban:

sudo systemctl restart fail2ban