linux:administration:fail2ban
Различия
Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
| linux:administration:fail2ban [2026/08/26 09:24] – создано so_v_a | linux:administration:fail2ban [2026/11/10 10:13] (текущий) – so_v_a | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| < | < | ||
| - | # Fail2ban. | + | # Fail2ban. |
| - | **Fail2ban** — это утилита, | + | **Fail2ban** — это утилита, |
| - | Чаще всего fail2ban применяют для защиты SSH, но он умеет работать и с другими сервисами: | + | |
| + | Чаще всего fail2ban применяют для защиты SSH, но он умеет работать и с другими сервисами: | ||
| На VPS такие попытки особенно часты, поэтому важно | На VPS такие попытки особенно часты, поэтому важно | ||
| - | > **!Note**: | + | |
| + | > **(!)Note**: Главное условие — чтобы сервис писал логи, по которым можно определить неудачные попытки входа или атаки. | ||
| ## Как работает Fail2ban | ## Как работает Fail2ban | ||
| - | Для работы Fail2ban запускает демона, | + | Для работы Fail2ban запускает демона, |
| - | По умолчанию в Ubuntu 24.04 Fail2ban взаимодействует с **UFW**, но если нужно, то может использовать и **iptables** напрямую. | + | По умолчанию в Ubuntu 24.04 Fail2ban взаимодействует с **UFW**, но если нужно, то может использовать и **iptables** напрямую |
| + | . | ||
| - | ## Установка и настройка Fail2ban | + | ## Установка и пример |
| Установка пакета: | Установка пакета: | ||
| Строка 20: | Строка 22: | ||
| sudo apt install fail2ban | sudo apt install fail2ban | ||
| ``` | ``` | ||
| + | если есть необходимость добавить какие-то зависимые пакеты установщик обычно делает это сам. | ||
| - | После завершения установки сервис запускается сам, но на этом этапе он ещё не делает ничего полезного, | + | После завершения установки сервис запускается самостоятельно, но на этом этапе он ещё не делает ничего полезного, |
| Стандартные настройки находятся в файле: | Стандартные настройки находятся в файле: | ||
| Строка 28: | Строка 31: | ||
| ``` | ``` | ||
| - | > **!Note**: Не следует изменять файл **jail.conf** — это основной конфигурационный файл, и при обновлении пакета _он может быть перезаписан_. | + | > **(!)Note**: Не следует изменять файл **jail.conf** — это основной конфигурационный файл, и при обновлении пакета _он может быть перезаписан_. |
| Настраивать утилиту следует через файл **jail.local**, | Настраивать утилиту следует через файл **jail.local**, | ||
| Строка 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** — путь до отслеживаемого лога (здесь указан в виде системной переменной, | ||
| - | В этой секции настроек включаем защиту сервиса **sshd**, указываем порт, на котором работает SSH (_если используется нестандартный порт_, то это следует указать явно, например **port = 2222**), и путь к отслеживаемому логу. | + | Настройки **параметров срабатывания** могут быть заданы глобально, в секции [DEFAULT], |
| - | + | ||
| - | Настройки **параметров срабатывания** могут быть заданы глобально или для конкретного **jail**. Лучше задавать явно в соответствующей же секции: | + | |
| ```bash | ```bash | ||
| [sshd] | [sshd] | ||
| Строка 60: | Строка 67: | ||
| То есть с указанными выше настройками Fail2ban будет блокировать IP на час, если за 10 минут с него поступит 5 неудавшихся попыток входа. | То есть с указанными выше настройками Fail2ban будет блокировать IP на час, если за 10 минут с него поступит 5 неудавшихся попыток входа. | ||
| - | После внесения изменений в файл конфигурации перезапускаем службу: | + | Пример указания настроек **параметров срабатывания** в секции [DEFAULT]: |
| + | ``` | ||
| + | [DEFAULT] | ||
| + | # IP-адреса, | ||
| + | ignoreip = 127.0.0.1/8 ::1 ВАШ_IP_1 ВАШ_IP_2 | ||
| + | # Время блокировки (1 час = 3600 сек, ' | ||
| + | bantime | ||
| + | # Время поиска (смотрим попытки за последние 10 минут) | ||
| + | findtime = 10m | ||
| + | # Количество ошибок для блокировки | ||
| + | maxretry = 5 | ||
| + | ``` | ||
| + | здесь **ignoreip** - список IP адресов-исключений, | ||
| + | |||
| + | После внесения изменений в файл конфигурации | ||
| ```bash | ```bash | ||
| sudo systemctl restart fail2ban | sudo systemctl restart fail2ban | ||
| Строка 84: | Строка 105: | ||
| ``` | ``` | ||
| - | Приведенного выше примера настроек достаточно, | + | Приведенного выше примера настроек достаточно, |
| - | Если есть и другие сервисы, | + | |
| - | Но важно настраивать только то, что реально используется, | + | Если есть и другие сервисы, |
| + | |||
| + | Но важно настраивать только то, что реально используется, | ||
| ## Интеграция 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` для разблокировки. | ||
| - | Такой подход удобен, | + | Такой подход удобен, |
| - | Однако учитывайте, | + | Однако учитывайте, |
| - | Лучше придерживаться | + | Лучше придерживаться |
| - | Когда настройка завершена, | + | Когда настройка завершена, |
| Самый простой способ — попытаться войти по SSH с другого IP, несколько раз введя неправильный пароль. После пяти неудачных попыток IP-адрес должен быть заблокирован. | Самый простой способ — попытаться войти по SSH с другого IP, несколько раз введя неправильный пароль. После пяти неудачных попыток IP-адрес должен быть заблокирован. | ||
| Строка 133: | Строка 156: | ||
| ``` | ``` | ||
| + | ------ | ||
| Ссылка на [статью-источник](https:// | Ссылка на [статью-источник](https:// | ||
| - | #fail2ban | + | {{tag>fail2ban}} |
/var/www/html/dokuwiki/data/attic/linux/administration/fail2ban.1787736267.txt.gz · Последнее изменение: — so_v_a
