Я установил fail2ban в пакете Debian на контролируемый мной сервер. Так как у меня есть несколько ошибок, которые использовались ранее, я помещаю их в файл определения локального фильтра, чтобы они также были учтены. Следовательно, я получаю, например, /etc/fail2ban/filter.d/sshd.conf и /etc/fail2ban/filter.d/sshd.local. Именно так рекомендуется настроить и, похоже, он работает нормально для того, что есть.
Однако в локальном файле я на самом деле замена весь список failregexes из файла .conf. Документация похоже, не указывает на то, что есть другой способ сделать это, и чтобы заставить его работать, я просто скопировал предоставленный дистрибутивом файл .conf в файл .local и сделал некоторые дополнения.
Было бы здорово, если бы я мог просто поправить список, извлеченный из работы разработчиков апстрима и сопровождающих Debian, чтобы быть в курсе изменений в регулярных выражениях фильтра записей журнала, поддерживаемых дистрибутивом.
Единственный реальный обходной путь, который я могу придумать, - это создать две тюрьмы, одну с использованием конфигурации, предоставленной дистрибутивом, и одну с моей собственной. Это, по-видимому, имеет (довольно существенный) недостаток, заключающийся в том, что они рассматриваются как независимые тюрьмы (чего и следовало ожидать при такой настройке).
Конечно, я не единственный, кто хочет просто добавить несколько моих собственных failregexes в уже существующую коллекцию с минимумом проблем с обслуживанием.
Это возможно поправить списки failregex и ignoreregex в определении фильтра fail2ban через локальный для сайта или хост-локальный файл без внесения каких-либо изменений в соответствующий глобальный файл или файл, предоставляемый дистрибутивом? Если да, то как это сделать?
Давайте посмотрим на часть /etc/fail2ban/filter.d/sshd.conf
файл.
[INCLUDES]
# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf
Вы можете подумать, что можете добавить сюда: after = sshd.local
и заставьте его прочитать такой файл; любые настройки в нем переопределят настройки в этом файле.
И это работает. За исключением того, что вы не можете просто изменить записи в failregex
или любая другая директива; их можно только заменить.
Ваше чувство правильное. Это определенно недостаток форматов файлов конфигурации fail2ban. Я бы пожаловался разработчику.
У меня было такое же требование, и я опубликовал его как проблему. Автор, похоже, работает над этим: https://github.com/fail2ban/fail2ban/issues/867.
После слияния он должен работать следующим образом (этот пример любезно предоставлен разработчиком Сергом Брестером):
# filter test.conf:
[Definition]
failregex = failure test 1 (filter.d/test.conf) <HOST>
# filter test.local:
[Definition]
failregex = %(known/failregex)s
failure test 2 (filter.d/test.local) <HOST>
и регулярные выражения можно добавлять в тюрьмы таким же образом ...
# jail.local
[test3known-interp]
filter=test
enabled = true
failregex = %(known/failregex)s
failure test 3 (jail.local) <HOST>
за результат:
$ bin/fail2ban-client -d -c config | grep addfail
['set', 'test3known-interp', 'addfailregex', 'failure test 1 (filter.d/test.conf)]
['set', 'test3known-interp', 'addfailregex', 'failure test 2 (filter.d/test.local)]
['set', 'test3known-interp', 'addfailregex', 'failure test 3 (jail.local) <HOST>']