Fail2ban можно настроить во многих местах.
$ fail2ban-client -i
Fail2Ban v0.10.2 reads log file that contains password failure report
and bans the corresponding IP addresses using firewall rules.
В Debian Buster я могу редактировать свои настройки в нескольких файлах конфигурации:
/etc/fail2ban/jail.d/defaults-debian.conf
/etc/fail2ban/fail2ban.conf
/etc/fail2ban/jail.conf
/etc/fail2ban/action.d/
Некоторые руководства рекомендуют:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
В документации по fail2ban говорится:
Изменения должны происходить в .local, а не в .conf. Это позволяет избежать проблемы слияния при обновлении. Эти файлы хорошо документированы, и там должна быть доступна подробная информация.
Означает ли это, что каждый файл .conf, который я хочу редактировать, должен существовать как файл .local?
Я смущен! Кто-нибудь может пролить свет на это, пожалуйста?
Вам нужно отредактировать только один файл.
Чтобы избежать проблем при обновлении системы, всегда следует копировать jail.conf
к jail.local
и изменять только последнее. То же самое для всех других файлов конфигурации fail2ban.
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Затем отредактируйте этот файл и прокрутите вниз до фильтров, которые вы хотите использовать.
В этих фильтрах добавьте enabled = true
. Я рекомендую не включать слишком много фильтров вначале. Достаточно одного или двух. Будьте осторожны с фильтром SSH, если вы подключены через SSH. Вы можете заблокировать себя.
Фильтры
Посмотрите в filter.d
каталог, чтобы увидеть все доступные фильтры. Выберите один-два подходящих. Обязательно поймите, с чем совпадают их регулярные выражения и какие файлы журналов вам нужны.
Fail2ban работает с файлами журналов. Таким образом, фильтры должны соответствовать соответствующим файлам журнала. Вы можете проверить это с помощью
fail2ban-regex <logfile> <filter>
Например
fail2ban-regex /var/log/nginx/default_access.log /etc/fail2ban/filter.d/nginx-botsearch.conf
Этот фильтр, например, ищет 404
ошибки в вашем NGINX access.log
и блокирует их, если условия совпадают. Условия см. Ниже.
После завершения редактирования перезапустите fail2ban:
systemctl restart fail2ban
Другие настройки в вашем jail.local
файл:
Все настройки могут быть как глобальными, так и специфичными для фильтра.
bantime = 7200
findtime = 10m
maxretry = 10
означает, что 10 ошибок за 10 минут приведут к бану на 2 часа.
Если вы не хотите использовать iptables для бана, вы можете изменить свой banaction
. По умолчанию для запрета используется iptables, который должен работать во всех известных мне системах, но вы можете не увидеть запреты в привычном интерфейсе брандмауэра.
banaction = ufw
Смотрите действия в action.d
. С этим параметром fail2ban будет использовать ufw для блокировки IP-адресов. Тогда вы можете увидеть бан через «fw status».
Обязательно исключите из блокировки свой локальный диапазон IP-адресов, особенно для SSH, чтобы вы не могли заблокировать себя. :
ignoreip = 127.0.0.1/8 ::1 192.168.178.0/24
Я бы предложил вам не для создания или изменения новых фильтров или действий. Используйте включенные и будьте счастливы. Создать свои собственные шаблоны rges непросто.