Я пытаюсь создать фильтр для fail2ban, который распознает сканирование портов в журналах UFW.
Я подтвердил, что мое действие запрета работает правильно с другими фильтрами, и у меня возникли проблемы с созданием правильного выражения фильтра / регулярного выражения в этом случае - я уверен, что это окажется глупой ошибкой с моей стороны.
Я попробовал утилиту fail2ban-regex и получил 0 совпадений.
Мой jail.local
содержит:
[ufw-port-scan]
enabled = true
port = all
filter = ufw-port-scan
banaction = ufw-action
logpath = /var/log/ufw.log
maxretry = 10
Фильтр, который я пытаюсь создать (помещен в /etc/fail2ban/filter.d/ufw-port-scan.conf
) выглядит так:
[Definition]
failregex = kernel: \[UFW BLOCK\] IN=.* SRC=<HOST>
ignoreregex =
Образец строки, которую я пытаюсь идентифицировать в ufw.log
:
Sep 18 21:06:08 trial kernel: [ 3014.939702] [UFW BLOCK] IN=eth0 OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:00:00 SRC=192.168.0.5 DST=192.168.0.10 LEN=44 TOS=0x00 PREC=0x00 TTL=45 ID=36825 PROTO=TCP SPT=50704 DPT=80 WINDOW=1024 RES=0x00 SYN URGP=0
Будем признательны за любые рекомендации - спасибо.
Вы были близки.
failregex = .*\[UFW BLOCK\] IN=.* SRC=<HOST>
И возможно удалить port = all
(Это необязательно)
Вы можете запускать тесты с помощью fail2ban-regex. например:
fail2ban-regex /var/log/ufw.log '.*\[UFW BLOCK\] IN=.* SRC=<HOST>'