Fail2Ban
Fail2Ban — это утилита для защиты серверов от брутфорс-атак и других видов несанкционированного доступа путем временной блокировки IP-адресов.
1)Установка Fail2Ban
Debian/Ubuntu:
1 |
sudo apt update && sudo apt install fail2ban -y |
CentOS/RHEL:
1 2 |
sudo yum install epel-release -y sudo yum install fail2ban -y |
Arch Linux:
1 |
sudo pacman -S fail2ban |
2)Управление сервисом
Запуск и включение Fail2Ban
1 2 |
sudo systemctl start fail2ban sudo systemctl enable fail2ban |
Перезапуск и проверка статуса
1 2 |
sudo systemctl restart fail2ban sudo systemctl status fail2ban |
3)Конфигурация Fail2Ban
Файл конфигурации по умолчанию:
1 |
/etc/fail2ban/jail.conf |
Рекомендуется создать локальную копию:
1 |
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local |
Редактировать:
1 |
sudo nano /etc/fail2ban/jail.local |
Основные параметры:
1 2 3 4 5 |
[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
):
1 2 3 |
[Definition] failregex = ^%(__prefix_line)sFailed password for .* from <HOST> port \d+ ssh2 ignoreregex = |
5)Настройка jail для SSH
Файл /etc/fail2ban/jail.local:
1 2 3 4 5 6 7 8 |
[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)Перезапуск и проверка работы
1 2 |
sudo systemctl restart fail2ban sudo fail2ban-client status |
Проверить конкретный jail:
1 |
sudo fail2ban-client status sshd |
7)Разблокировка IP
Список заблокированных IP:
1 |
sudo fail2ban-client status sshd |
Разблокировать IP:
1 |
sudo fail2ban-client set sshd unbanip 192.168.1.100 |
8)Логирование и отладка
Просмотр журнала Fail2Ban:
1 |
sudo journalctl -u fail2ban --no-pager |
Лог-файл:
1 |
sudo tail -f /var/log/fail2ban.log |
9)Полезные команды
Блокировка IP вручную
1 |
sudo fail2ban-client set sshd banip 192.168.1.200 |
Добавление в белый список (whitelist)
Добавьте IP в ignoreip в /etc/fail2ban/jail.local:
1 |
ignoreip = 127.0.0.1/8 192.168.1.100 |
Удаление бана с IP
1 |
sudo fail2ban-client set sshd unbanip 192.168.1.100 |
Удаление всех банов
1 |
sudo fail2ban-client set sshd unban --all |
10)Автозапуск после перезагрузки
1 |
sudo systemctl enable fail2ban |
11)Интеграция с UFW (Ubuntu)
Если используется UFW:
1 |
sudo nano /etc/fail2ban/jail.local |
Добавьте:
1 2 3 4 5 6 |
[sshd] enabled = true backend = auto port = ssh filter = sshd banaction = ufw |
Перезапустите Fail2Ban:
1 |
sudo systemctl restart fail2ban |
Эта шпаргалка содержит основные команды и конфигурации для защиты сервера от атак с помощью Fail2Ban.