Команда Linux fail2ban
fail2ban — это инструмент предотвращения вторжений с открытым исходным кодом, используемый для защиты Linux-серверов от атак методом перебора. Он обнаруживает вредоносное поведение, например множественные неудачные попытки входа по SSH, путем мониторинга системных журналов (например, /var/log/auth.log), а затем автоматически обновляет правила брандмауэра, чтобы блокировать IP-адреса этих злоумышленников.
Основные возможности fail2ban
Мониторинг журналов в реальном времени
fail2ban непрерывно отслеживает указанные файлы журналов для поиска предопределенных шаблонов вредоносного поведения.
Автоматическая блокировка IP
Когда обнаруживается несколько неудачных попыток с одного и того же IP (порог настраивается), fail2ban автоматически добавляет этот IP в список блокировки брандмауэра.
Настраиваемая длительность блокировки
Администраторы могут задать начальное время блокировки и время увеличения блокировки после повторных нарушений.
Поддержка нескольких сервисов
Он поддерживает не только SSH, но и защиту для нескольких сервисов, таких как Apache, Nginx, FTP и почтовые сервисы.
Уведомление по электронной почте
Его можно настроить для отправки уведомлений по электронной почте администраторам, когда IP-адрес заблокирован.
Установка и настройка fail2ban
Способы установки
В системах на базе Debian/Ubuntu:
Пример
sudo apt install fail2ban
В системах на базе RHEL/CentOS:
Пример
sudo yum install fail2ban
Базовая конфигурация
Основные файлы конфигурации fail2ban находятся в:
/etc/fail2ban/jail.conf- Основной файл конфигурации (не рекомендуется изменять напрямую)/etc/fail2ban/jail.local- Пользовательская конфигурация (рекомендуется изменять здесь)
Создайте пользовательский файл конфигурации:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Основные команды fail2ban
Запуск/Остановка/Перезапуск службы
Пример
sudo systemctl stop fail2ban # Остановка службы
sudo systemctl restart fail2ban # Перезапуск службы
sudo systemctl enable fail2ban # Включить автозапуск при загрузке
Просмотр состояния службы
sudo systemctl status fail2ban
Просмотр заблокированных IP-адресов
sudo fail2ban-client status sshd
Разблокировать определённый IP
sudo fail2ban-client set sshd unbanip 192.168.1.100
Вручную заблокировать IP
sudo fail2ban-client set sshd banip 192.168.1.100
Сведения о файле конфигурации fail2ban
Основные параметры конфигурации
Пример
# Игнорируемые IP-адреса (белый список)
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24
# Время блокировки (в секундах)
bantime = 600
# Окно времени обнаружения (в секундах)
findtime = 600
# Максимальное количество попыток
maxretry = 3
# Используемый бэкенд брандмауэра
banaction = iptables-multiport
[sshd]
# Включать ли защиту SSH
enabled = true
# Путь к файлу журнала
logpath = %(sshd_log)s
# Имя фильтра
filter = sshd
# Номер порта
port = ssh
Пользовательские фильтры
Фильтры определяются в/etc/fail2ban/filter.d/каталоге. Например, создайте пользовательский фильтр SSH:
-
Скопируйте фильтр SSH по умолчанию:
sudo cp /etc/fail2ban/filter.d/sshd.conf /etc/fail2ban/filter.d/sshd-custom.conf
-
Отредактируйте пользовательский фильтр и измените регулярное выражение, чтобы оно соответствовало определённым шаблонам сбоев.
Практические примеры fail2ban
Защита службы SSH
-
Отредактируйте файл jail.local:
sudo nano /etc/fail2ban/jail.local
-
Добавьте или измените следующее содержимое:
[sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = 3600 findtime = 600
-
Перезапустите службу fail2ban:
sudo systemctl restart fail2ban
Защита службы Apache
-
Убедитесь, что jail.local содержит следующее содержимое:
[apache] enabled = true port = http,https filter = apache-auth logpath = /var/log/apache2/error.log maxretry = 3 bantime = 86400
-
Перезапустите службу, чтобы применить конфигурацию.
Расширенное использование fail2ban
Использование fail2ban для защиты пользовательских служб
-
Создайте файл пользовательского фильтра:
sudo nano /etc/fail2ban/filter.d/myapp.conf
-
Добавьте правила фильтра (пример):
[Definition] failregex = ^.* .* "POST /login.php.* 401 ignoreregex =
-
Добавьте соответствующий jail в jail.local:
enabled = true port = http,https filter = myapp logpath = /var/log/myapp/access.log maxretry = 5 bantime = 3600
Настройка уведомлений по электронной почте
-
Отредактируйте файл jail.local:
[DEFAULT] destemail = admin@example.com sender = fail2ban@example.com mta = sendmail action = %(action_mwl)s
-
Убедитесь, что на системе установлен и настроен инструмент доставки почты (например, sendmail или postfix).
Логи fail2ban и устранение неполадок
Просмотр логов fail2ban
sudo tail -f /var/log/fail2ban.log
Решение распространённых проблем
fail2ban не работает
- Проверьте, запущена ли служба:
sudo systemctl status fail2ban - Проверьте логи на наличие ошибок:
sudo journalctl -u fail2ban
IP не заблокирован
- Убедитесь, что путь к логу указан правильно
- Проверьте, соответствует ли регулярное выражение фильтра записям лога
- Повысьте уровень логирования для отладки: задайте его в jail.local
loglevel = DEBUG
Ложное срабатывание блокировки IP
- Добавьте доверенные IP в список ignoreip
- Уменьшите maxretry или увеличьте findtime
Лучшие практики fail2ban
-
Регулярно обновляйте: поддерживайте fail2ban в актуальном состоянии, чтобы получать последние исправления безопасности и улучшения функций.
-
Разумная конфигурация:
- Задайте подходящие maxretry и bantime
- Не устанавливайте bantime слишком большим, чтобы случайно не заблокировать легитимных пользователей
- Не задавайте его и слишком коротким, иначе эффект защиты будет ограничен
-
Мониторинг и проверка:
- Регулярно проверяйте список заблокированных IP
- Анализируйте логи, чтобы понять схемы атак
-
Многоуровневая защита:
- Сочетайте fail2ban с другими мерами безопасности (такими как межсетевые экраны и политики надежных паролей)
- Рассмотрите возможность изменения стандартного порта SSH
-
Резервное копирование конфигурации:
- Резервное копирование пользовательских файлов конфигурации и фильтров
- Фиксируйте все изменения для восстановления после сбоев
Итог
fail2ban — важный инструмент для безопасности системы Linux. Автоматически обнаруживая и блокируя вредоносное поведение, он эффективно предотвращает атаки методом перебора. Правильная настройка и использование fail2ban могут значительно повысить безопасность сервера, одновременно снижая объем ручного вмешательства администраторов. Из этой статьи вы должны были освоить базовое использование и продвинутые методы настройки fail2ban, а также научиться настраивать собственную стратегию защиты в соответствии с реальными потребностями.
Другие расширения
Полный список команд Linux