Я пробовал все известные мне подходы для получения хоста из журнала доступа apache, но ни один из них не работал
мой базовый подход к тестированию следующий:
fail2ban-regex '87.97.244.57 - - [05/Nov/2015:12:46:24 -0500] "GET /index.php/?a=30%60%22( HTTP/1.1" 200 22639 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)' '^<HOST> - - [[^]+] ".*60.20.*'
я пытался ^<HOST> - - [[^]+] ".*60.20.*
<HOST> - - [[^]+] ".*60.20.*
[[]client []].*60.20.*
^<HOST>.*60.20.*$
.*60.20.*
... и т.д.
Они либо не попадают в цель, либо я получаю ошибку fail2ban.server.failregex.RegexException: No 'host' group in [...]
Действительно сложно понять, что вы пытаетесь сделать, сопоставить хосту это так же просто, как
'^<host>'
Если вы хотите сопоставить более конкретные вещи, тогда
'^<host> - - .*30%60%22'
работает.
Сообщение об ошибке, которое вы получаете, связано с тем, что (
интерпретируется как часть группы регулярных выражений, которую вы оставляете незавершенной. Вы должны убежать от этого вот так
'^<host> - - .*30%60%22\('