Инструменты пользователя

Инструменты сайта


linux:administration:fail2ban

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
linux:administration:fail2ban [2026/08/26 14:06] – [Fail2ban. Настройка на Ubuntu 24.04 для защиты от брутфорса.] so_v_alinux:administration:fail2ban [2026/11/10 10:13] (текущий) – so_v_a
Строка 7: Строка 7:
 Чаще всего fail2ban применяют для защиты SSH, но он умеет работать и с другими сервисами: FTP, почтовыми демонами, веб-серверами.   Чаще всего fail2ban применяют для защиты SSH, но он умеет работать и с другими сервисами: FTP, почтовыми демонами, веб-серверами.  
 На VPS такие попытки особенно часты, поэтому важно  настроить защиту заранее. На VPS такие попытки особенно часты, поэтому важно  настроить защиту заранее.
-> **!Note**: Главное условие — чтобы сервис писал логи, по которым можно определить неудачные попытки входа или ат + 
-аки.+> **(!)Note**: Главное условие — чтобы сервис писал логи, по которым можно определить неудачные попытки входа или атаки.
  
 ## Как работает Fail2ban ## Как работает Fail2ban
  
 Для работы Fail2ban запускает демона, который следит за логами (например для **SSH** это **/var/log/auth.log**), и если за определённое время с одного и того же IP идёт слишком много попыток входа, заканчивающихся неудачей, то этот IP блокируется через брандмауэр.   Для работы Fail2ban запускает демона, который следит за логами (например для **SSH** это **/var/log/auth.log**), и если за определённое время с одного и того же IP идёт слишком много попыток входа, заканчивающихся неудачей, то этот IP блокируется через брандмауэр.  
-По умолчанию в Ubuntu 24.04 Fail2ban взаимодействует с **UFW**, но если нужно, то может использовать и **iptables** напрямую.+По умолчанию в Ubuntu 24.04 Fail2ban взаимодействует с **UFW**, но если нужно, то может использовать и **iptables** напрямую 
 +.
  
 ## Установка и пример настройки Fail2ban для защиты SSH ## Установка и пример настройки Fail2ban для защиты SSH
Строка 21: Строка 22:
 sudo apt install fail2ban sudo apt install fail2ban
 ``` ```
 +если есть необходимость добавить какие-то зависимые пакеты установщик обычно делает это сам.
  
-После завершения установки сервис запускается сам, но на этом этапе он ещё не делает ничего полезного, т.к. _по умолчанию все фильтры выключены_.+После завершения установки сервис запускается самостоятельно, но на этом этапе он ещё не делает ничего полезного, т.к. _по умолчанию все фильтры выключены_.
  
 Стандартные настройки находятся в файле: Стандартные настройки находятся в файле:
Строка 29: Строка 31:
 ``` ```
  
-> **!Note**: Не следует изменять файл **jail.conf** — это основной конфигурационный файл, и при обновлении пакета _он может быть перезаписан_. +> **(!)Note**: Не следует изменять файл **jail.conf** — это основной конфигурационный файл, и при обновлении пакета _он может быть перезаписан_. 
  
 Настраивать утилиту следует через файл **jail.local**, он создаётся вручную на основе примера **jail.conf** и в нём переопределяются только нужные параметры: Настраивать утилиту следует через файл **jail.local**, он создаётся вручную на основе примера **jail.conf** и в нём переопределяются только нужные параметры:
Строка 40: Строка 42:
 [sshd] [sshd]
 enabled = true enabled = true
 +mode = aggressive
 port = ssh port = ssh
 logpath = %(sshd_log)s logpath = %(sshd_log)s
 backend = systemd backend = systemd
 ``` ```
 +здесь:
 +- **enabled** — включение/отключение защиты
 +- **mode = aggressive** — агрессивный режим, ловит больше ошибок SSH включая ошибки при аутентификации по ключу
 +- **port** — порт на котором работает SSH (_если используется нестандартный порт_, то это следует указать явно, например **port = 2222**)
 +- **logpath** — путь до отслеживаемого лога (здесь указан в виде системной переменной, но м.б. указан и явно, в виде `/var/log/auth.log`)
  
-В этой секции настроек включаем защиту сервиса **sshd**, указываем порт, на котором работает SSH (_если используется нестандартный порт_, то это следует указать явно, например **port = 2222**), и путь к отслеживаемому логу. +Настройки **параметров срабатывания** могут быть заданы глобально, в секции [DEFAULT], или для конкретного **jail**. Лучше задавать явно в соответствующей же секции:
- +
-Настройки **параметров срабатывания** могут быть заданы глобально или для конкретного **jail**. Лучше задавать явно в соответствующей же секции:+
 ```bash ```bash
 [sshd] [sshd]
Строка 60: Строка 66:
  
 То есть с указанными выше настройками Fail2ban будет блокировать IP на час, если за 10 минут с него поступит 5 неудавшихся попыток входа. То есть с указанными выше настройками Fail2ban будет блокировать IP на час, если за 10 минут с него поступит 5 неудавшихся попыток входа.
 +
 +Пример указания настроек **параметров срабатывания** в секции [DEFAULT]:
 +```
 +[DEFAULT]
 +# IP-адреса, которые НИКОГДА НЕ БАНИМ (добавьте свои IP)
 +ignoreip = 127.0.0.1/8 ::1 ВАШ_IP_1 ВАШ_IP_2
 +# Время блокировки (1 час = 3600 сек, 'm' - минуты, 'h' - часы)
 +bantime  = 1h
 +# Время поиска (смотрим попытки за последние 10 минут)
 +findtime = 10m
 +# Количество ошибок для блокировки
 +maxretry = 5
 +```
 +здесь **ignoreip** - список IP адресов-исключений, которые не должны попадать в бан.
  
 После внесения изменений в файл конфигурации службу следует перезапустить: После внесения изменений в файл конфигурации службу следует перезапустить:
Строка 86: Строка 106:
  
 Приведенного выше примера настроек достаточно, чтобы защитить SSH от атак перебора паролей.   Приведенного выше примера настроек достаточно, чтобы защитить SSH от атак перебора паролей.  
 +
 Если есть и другие сервисы, которые могут быть атакованы, включите для них аналогичные секции в файле `jail.local` — например, **[nginx-http-auth]** или **[postfix]**.   Если есть и другие сервисы, которые могут быть атакованы, включите для них аналогичные секции в файле `jail.local` — например, **[nginx-http-auth]** или **[postfix]**.  
 +
 Но важно настраивать только то, что реально используется, иначе можно легко заблокировать легитимный трафик.   Но важно настраивать только то, что реально используется, иначе можно легко заблокировать легитимный трафик.  
  
 ## Интеграция Fail2ban с UFW и тестирование защиты ## Интеграция Fail2ban с UFW и тестирование защиты
  
-Когда Fail2ba +Когда Fail2ban фиксирует подозрительную активность — например, серию неудачных попыток входа по SSH, — он блокирует IP-адрес источника. Для этого используются действия (**action**), которые указывает, каким способом банить IP. В большинстве случаев это добавление правила в файрволл.
-n фиксирует подозрительную активность — например, серию неудачных попыток входа по SSH, — он блокирует IP-адрес источника. Для этого используются действия (**action**), которые указывает, каким способом банить IP. В большинстве случаев это добавление правила в файрволл.+
  
 По умолчанию Fail2ban на Ubuntu 24.04 умеет работать с UFW. Чтобы активировать именно этот способ блокировки, нужно в секции нужного **jail** (например, **[sshd]**) задать действие **ufw**. По умолчанию Fail2ban на Ubuntu 24.04 умеет работать с UFW. Чтобы активировать именно этот способ блокировки, нужно в секции нужного **jail** (например, **[sshd]**) задать действие **ufw**.
Строка 106: Строка 127:
 Однако учитывайте, что UFW и Fail2ban могут конфликтовать, если одновременно использовать несколько разных способов управления правилами. Например, если используются нестандартные iptables-действия в других **jails**, то правила могут накладываться некорректно.   Однако учитывайте, что UFW и Fail2ban могут конфликтовать, если одновременно использовать несколько разных способов управления правилами. Например, если используются нестандартные iptables-действия в других **jails**, то правила могут накладываться некорректно.  
  
-Лучше придерживаться _одного метода на всём сервере_ — _или только _UFW_, или только **iptables**_.+Лучше придерживаться *одного метода на всём сервере* — или только **UFW**, или только **iptables**.
  
 Когда настройка завершена, следует убедиться, что защита системы работает.   Когда настройка завершена, следует убедиться, что защита системы работает.  
/var/www/html/dokuwiki/data/attic/linux/administration/fail2ban.1787753200.txt.gz · Последнее изменение: — so_v_a