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

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


linux:administration:fail2ban

Различия

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

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

Следующая версия
Предыдущая версия
linux:administration:fail2ban [2026/08/26 09:24] – создано so_v_alinux:administration:fail2ban [2026/11/10 10:13] (текущий) – so_v_a
Строка 1: Строка 1:
 <!DOCTYPE markdown> <!DOCTYPE markdown>
  
-# Fail2ban. Пример настройки на Ubuntu 24.04 для защиты от брутфорса SSH.+# Fail2ban. Настройка на Ubuntu 24.04 для защиты от брутфорса.
  
-**Fail2ban** — это утилита, которая отслеживает системные журналы. Обнаружив подозрительную активность, fail2ban временно блокирует IP-адреса, с которых поступают попытки взлома. +**Fail2ban** — это утилита, которая отслеживает системные журналы. Обнаружив подозрительную активность, fail2ban временно блокирует IP-адреса, с которых поступают попытки взлома.  
-Чаще всего 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+## Установка и пример настройки Fail2ban для защиты SSH
  
 Установка пакета: Установка пакета:
Строка 20: Строка 22:
 sudo apt install fail2ban sudo apt install fail2ban
 ``` ```
 +если есть необходимость добавить какие-то зависимые пакеты установщик обычно делает это сам.
  
-После завершения установки сервис запускается сам, но на этом этапе он ещё не делает ничего полезного, т.к. _по умолчанию все фильтры выключены_.+После завершения установки сервис запускается самостоятельно, но на этом этапе он ещё не делает ничего полезного, т.к. _по умолчанию все фильтры выключены_.
  
 Стандартные настройки находятся в файле: Стандартные настройки находятся в файле:
Строка 28: Строка 31:
 ``` ```
  
-> **!Note**: Не следует изменять файл **jail.conf** — это основной конфигурационный файл, и при обновлении пакета _он может быть перезаписан_. +> **(!)Note**: Не следует изменять файл **jail.conf** — это основной конфигурационный файл, и при обновлении пакета _он может быть перезаписан_. 
  
 Настраивать утилиту следует через файл **jail.local**, он создаётся вручную на основе примера **jail.conf** и в нём переопределяются только нужные параметры: Настраивать утилиту следует через файл **jail.local**, он создаётся вручную на основе примера **jail.conf** и в нём переопределяются только нужные параметры:
Строка 39: Строка 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: Строка 67:
 То есть с указанными выше настройками 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 адресов-исключений, которые не должны попадать в бан. 
 + 
 +После внесения изменений в файл конфигурации службу следует перезапустить:
 ```bash ```bash
 sudo systemctl restart fail2ban sudo systemctl restart fail2ban
Строка 84: Строка 105:
 ``` ```
  
-Приведенного выше примера настроек достаточно, чтобы защитить SSH от атак перебора паролей. +Приведенного выше примера настроек достаточно, чтобы защитить SSH от атак перебора паролей.   
-Если есть и другие сервисы, которые могут быть атакованы, включите для них аналогичные секции в файле `jail.local` — например, **[nginx-http-auth]** или **[postfix]**. + 
-Но важно настраивать только то, что реально используется, иначе можно легко заблокировать легитимный трафик.+Если есть и другие сервисы, которые могут быть атакованы, включите для них аналогичные секции в файле `jail.local` — например, **[nginx-http-auth]** или **[postfix]**.   
 + 
 +Но важно настраивать только то, что реально используется, иначе можно легко заблокировать легитимный трафик.  
  
 ## Интеграция Fail2ban с UFW и тестирование защиты ## Интеграция Fail2ban с UFW и тестирование защиты
Строка 101: Строка 124:
 После этого Fail2ban будет применять команды `ufw deny from <ip> to any` для бана и `ufw delete deny from <ip> to any` для разблокировки. После этого Fail2ban будет применять команды `ufw deny from <ip> to any` для бана и `ufw delete deny from <ip> to any` для разблокировки.
  
-Такой подход удобен, если вы уже полностью управляете файрволом через UFW и хотите, чтобы все действия логировались в одном месте. +Такой подход удобен, если вы уже полностью управляете файрволом через UFW и хотите, чтобы все действия логировались в одном месте.   
-Однако учитывайте, что UFW и Fail2ban могут конфликтовать, если одновременно использовать несколько разных способов управления правилами. Например, если используются нестандартные iptables-действия в других **jails**, то правила могут накладываться некорректно. +Однако учитывайте, что UFW и Fail2ban могут конфликтовать, если одновременно использовать несколько разных способов управления правилами. Например, если используются нестандартные iptables-действия в других **jails**, то правила могут накладываться некорректно.  
  
-Лучше придерживаться _одного метода на всём сервере_ — _или только _UFW_, или только **iptables**_.+Лучше придерживаться *одного метода на всём сервере* — или только **UFW**, или только **iptables**.
  
-Когда настройка завершена, следует убедиться, что защита системы работает.+Когда настройка завершена, следует убедиться, что защита системы работает.  
 Самый простой способ — попытаться войти по SSH с другого IP, несколько раз введя неправильный пароль. После пяти неудачных попыток IP-адрес должен быть заблокирован.  Самый простой способ — попытаться войти по SSH с другого IP, несколько раз введя неправильный пароль. После пяти неудачных попыток IP-адрес должен быть заблокирован. 
  
Строка 133: Строка 156:
 ``` ```
  
 +------
 Ссылка на [статью-источник](https://adminvps.ru/blog/nastrojka-fail2ban-na-ubuntu-24-04-lts-i-zashhita-ot-brutforsa/?ysclid=mt9s1tza43162135215) Ссылка на [статью-источник](https://adminvps.ru/blog/nastrojka-fail2ban-na-ubuntu-24-04-lts-i-zashhita-ot-brutforsa/?ysclid=mt9s1tza43162135215)
  
-#fail2ban +{{tag>fail2ban}}
/var/www/html/dokuwiki/data/attic/linux/administration/fail2ban.1787736267.txt.gz · Последнее изменение: — so_v_a