#regex #fail2ban
#регулярное выражение #fail2ban
Вопрос:
может быть, кто-нибудь может помочь мне с этим регулярным выражением для fail2ban….
Мне нужно создать failregex для фильтрации строк с этим содержимым:
2020-09-11 18:44:05.122235|INFO |VirtualServer |1 |ban added reason='' ip='127.0.0.1' bantime=0 by client 'name'(id:1345)
Я перепробовал так много регулярных выражений, но я всегда получаю эту ошибку из команды fail2ban-regex :
ОШИБКА: не удается скомпилировать регулярное выражение ‘etc fail2banfilter.d1teamspeak-ban.conf’
я пробовал примеры :
failregex = /([12]d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]d|3[01])) (?:(?:([01]?d|2[0-3]):)?([0-5]?d):)?([0-5]?d).*[|]INFO [|]VirtualServer [|].* [|]ban added reason='.*' ip='(<HOST>)' bantime=0 by client '.*[)]/g
failregex = ^([12]d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]d|3[01])) (?:(?:([01]?d|2[0-3]):)?([0-5]?d):)?([0-5]?d).*[|]INFO [|]VirtualServer [|].* [|]ban added reason='.*' ip='(<HOST>)' bantime=0 by client '.*[)]$
failregex = /ban added reason='.*' ip='(<HOST>)' bantime=0 by client '.*'/g
failregex = ^ban added reason='.*' ip='(<HOST>)' bantime=0 by client '.*'$
Пример файла журнала :
2020-09-10 19:11:00.040440|INFO |VirtualServerBase|1 |file download from (id:0), '/icon_2496849585' by client 'Nickn4me-1'(id:340)
2020-09-10 19:11:00.044615|INFO |VirtualServerBase|1 |file download from (id:0), '/icon_237847164' by client 'Nickn4me-1'(id:340)
2020-09-10 19:11:04.259132|INFO |VirtualServerBase|1 |file download from (id:0), '/icon_428821049' by client 'Nickn4me-1'(id:340)
2020-09-10 19:13:10.717086|INFO |VirtualServerBase|1 |client disconnected 'Nickn4me-1'(id:340) reason 'reasonmsg=Verlassen'
2020-09-10 19:19:10.804754|INFO |VirtualServerBase|1 |client connected 'oThername_324'(id:341) from 10.241.207.142:54986
2020-09-10 19:19:10.980756|INFO |VirtualServerBase|1 |file download from (id:0), '/icon_3456573507' by client 'oThername_324'(id:341)
2020-09-10 19:19:11.217004|INFO |VirtualServerBase|1 |file download from (id:0), '/icon_237847164' by client 'oThername_324'(id:341)
2020-09-10 19:19:11.230140|INFO |VirtualServerBase|1 |file download from (id:0), '/icon_2496849585' by client 'oThername_324'(id:341)
2020-09-10 19:43:28.740111|INFO |VirtualServerBase|1 |client disconnected 'someoneelse02'(id:908) reason 'reasonmsg=Verlassen'
2020-09-10 19:56:26.494598|INFO |VirtualServerBase|1 |client connected 'Nickn4me-1'(id:340) from 10.201.196.50:43750
2020-09-10 19:58:16.371691|INFO |VirtualServerBase|1 |client disconnected 'Nickn4me-1'(id:340) reason 'reasonmsg=Verlassen'
2020-09-10 19:58:28.682639|INFO |VirtualServer |1 |ban added reason='' cluid='RuLfa2hkMrwAz43vVgnOTLOXKruw=' bantime=2678400 by client 'Adminnick'(id:656)
2020-09-10 19:58:28.682973|INFO |VirtualServer |1 |ban added reason='' ip='10.201.196.50' bantime=2678400 by client 'Adminnick'(id:656)
2020-09-10 20:16:49.381087|INFO |VirtualServerBase|1 |client disconnected 'oThername_324'(id:341) reason 'reasonmsg=Gute Nacht'
2020-09-10 20:21:23.440568|INFO |VirtualServerBase|1 |client disconnected 'Adminnick'(id:656) reason 'reasonmsg=cu'
2020-09-10 20:38:46.197539|INFO |VirtualServerBase|1 |client disconnected 'Member001'(id:779) reason 'reasonmsg=Verlassen'
2020-09-10 21:23:12.803953|INFO |VirtualServerBase|1 |client connected 'oThername_324'(id:341) from 10.241.207.142:55647
2020-09-10 21:23:31.667814|INFO |VirtualServerBase|1 |client disconnected 'oThername_324'(id:341) reason 'reasonmsg=Gute Nacht'
2020-09-10 22:17:07.171090|INFO |VirtualServerBase|1 |client connected 'this-is_aNick.name (:o)'(id:342) from 10.176.87.220:63576
2020-09-10 22:17:13.466953|INFO |VirtualServerBase|1 |client disconnected 'this-is_aNick.name (:o)'(id:342) reason 'reasonmsg=leaving'
2020-09-10 22:19:14.935197|INFO |VirtualServerBase|1 |client disconnected 'rMember0034'(id:581) reason 'reasonmsg=Verlassen'
Комментарии:
1.
^d -d -d .*$
как выглядят другие строки? В чем разница? Что конкретно для строки, которую вы хотите перехватить, есть какое-то слово, подобноеban
?2. я добавил пример файла журнала — да, добавлены строки с = запретом ….. ip=…..
3. Из файла журнала вам нужно перехватывать только строки 12 и 13? Если это так, пожалуйста, отредактируйте вопрос и сделайте его более понятным.
4. в этом коротком примере из файла журнала большего размера, да, просто строка 13 с IP-адресом.
5.
^.*ban.*ip=.*$
это перехватит только строку 13 и аналогичные ей.
Ответ №1:
рабочий шаблон в моем случае :
/etc/fail2ban/filter.d/01teamspeak-permanentban.conf
[INCLUDES]
before = common.conf
[Definition]
failregex = ^.*ban.*ip='(<ADDR>)' bantime=0.*
ignoreregex =
Благодаря onetwo12