Команда Linux fail2ban

Linux 命令大全Полный список команд Linux


fail2ban — это инструмент предотвращения вторжений с открытым исходным кодом, используемый для защиты Linux-серверов от атак методом перебора. Он обнаруживает вредоносное поведение, например множественные неудачные попытки входа по SSH, путем мониторинга системных журналов (например, /var/log/auth.log), а затем автоматически обновляет правила брандмауэра, чтобы блокировать IP-адреса этих злоумышленников.


Основные возможности fail2ban

Мониторинг журналов в реальном времени

fail2ban непрерывно отслеживает указанные файлы журналов для поиска предопределенных шаблонов вредоносного поведения.

Автоматическая блокировка IP

Когда обнаруживается несколько неудачных попыток с одного и того же IP (порог настраивается), fail2ban автоматически добавляет этот IP в список блокировки брандмауэра.

Настраиваемая длительность блокировки

Администраторы могут задать начальное время блокировки и время увеличения блокировки после повторных нарушений.

Поддержка нескольких сервисов

Он поддерживает не только SSH, но и защиту для нескольких сервисов, таких как Apache, Nginx, FTP и почтовые сервисы.

Уведомление по электронной почте

Его можно настроить для отправки уведомлений по электронной почте администраторам, когда IP-адрес заблокирован.


Установка и настройка fail2ban

Способы установки

В системах на базе Debian/Ubuntu:

Пример

sudo apt update
sudo apt install fail2ban

В системах на базе RHEL/CentOS:

Пример

sudo yum install epel-release
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 start 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

Основные параметры конфигурации

Пример

[DEFAULT]
# Игнорируемые 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:

  1. Скопируйте фильтр SSH по умолчанию:

    sudo cp /etc/fail2ban/filter.d/sshd.conf /etc/fail2ban/filter.d/sshd-custom.conf
  2. Отредактируйте пользовательский фильтр и измените регулярное выражение, чтобы оно соответствовало определённым шаблонам сбоев.


Практические примеры fail2ban

Защита службы SSH

  1. Отредактируйте файл jail.local:

    sudo nano /etc/fail2ban/jail.local
  2. Добавьте или измените следующее содержимое:

    [sshd]
    enabled = true
    port = ssh
    filter = sshd
    logpath = /var/log/auth.log
    maxretry = 3
    bantime = 3600
    findtime = 600
  3. Перезапустите службу fail2ban:

    sudo systemctl restart fail2ban

Защита службы Apache

  1. Убедитесь, что jail.local содержит следующее содержимое:

    [apache]
    enabled = true
    port = http,https
    filter = apache-auth
    logpath = /var/log/apache2/error.log
    maxretry = 3
    bantime = 86400
  2. Перезапустите службу, чтобы применить конфигурацию.


Расширенное использование fail2ban

Использование fail2ban для защиты пользовательских служб

  1. Создайте файл пользовательского фильтра:

    sudo nano /etc/fail2ban/filter.d/myapp.conf
  2. Добавьте правила фильтра (пример):

    [Definition]
    failregex = ^.*  .* "POST /login.php.* 401
    ignoreregex =
  3. Добавьте соответствующий jail в jail.local:

    enabled = true
    port = http,https
    filter = myapp
    logpath = /var/log/myapp/access.log
    maxretry = 5
    bantime = 3600

Настройка уведомлений по электронной почте

  1. Отредактируйте файл jail.local:

    [DEFAULT]
    destemail = admin@example.com
    sender = fail2ban@example.com
    mta = sendmail
    action = %(action_mwl)s
  2. Убедитесь, что на системе установлен и настроен инструмент доставки почты (например, sendmail или postfix).


Логи fail2ban и устранение неполадок

Просмотр логов fail2ban

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

Решение распространённых проблем

fail2ban не работает

  • Проверьте, запущена ли служба:sudo systemctl status fail2ban
  • Проверьте логи на наличие ошибок:sudo journalctl -u fail2ban

IP не заблокирован

  • Убедитесь, что путь к логу указан правильно
  • Проверьте, соответствует ли регулярное выражение фильтра записям лога
  • Повысьте уровень логирования для отладки: задайте его в jail.localloglevel = DEBUG

Ложное срабатывание блокировки IP

  • Добавьте доверенные IP в список ignoreip
  • Уменьшите maxretry или увеличьте findtime

Лучшие практики fail2ban

  1. Регулярно обновляйте: поддерживайте fail2ban в актуальном состоянии, чтобы получать последние исправления безопасности и улучшения функций.

  2. Разумная конфигурация:

    • Задайте подходящие maxretry и bantime
    • Не устанавливайте bantime слишком большим, чтобы случайно не заблокировать легитимных пользователей
    • Не задавайте его и слишком коротким, иначе эффект защиты будет ограничен
  3. Мониторинг и проверка:

    • Регулярно проверяйте список заблокированных IP
    • Анализируйте логи, чтобы понять схемы атак
  4. Многоуровневая защита:

    • Сочетайте fail2ban с другими мерами безопасности (такими как межсетевые экраны и политики надежных паролей)
    • Рассмотрите возможность изменения стандартного порта SSH
  5. Резервное копирование конфигурации:

    • Резервное копирование пользовательских файлов конфигурации и фильтров
    • Фиксируйте все изменения для восстановления после сбоев

Итог

fail2ban — важный инструмент для безопасности системы Linux. Автоматически обнаруживая и блокируя вредоносное поведение, он эффективно предотвращает атаки методом перебора. Правильная настройка и использование fail2ban могут значительно повысить безопасность сервера, одновременно снижая объем ручного вмешательства администраторов. Из этой статьи вы должны были освоить базовое использование и продвинутые методы настройки fail2ban, а также научиться настраивать собственную стратегию защиты в соответствии с реальными потребностями.


Linux 命令大全Полный список команд Linux

Другие расширения