2015-09-18 4 views
2

Я пытаюсь заблокировать скрипты, которые сканируют мои сайты для админ-страниц, используя fail2ban с моими nginx-журналами. Но я получаю ошибки, глядя, как это в моем fail2ban-журнале (с различными запросами/useragents/remote_addresses):fail2ban.filter: ERROR No 'host' найдено в

2015-09-18 14:45:42,137 fail2ban.filter : ERROR No 'host' found in ' +0200 - ***.**.***.*** http://www.example.com - - "GET /admin HTTP/1.1" 404 737 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/44.0.2403.89 Chrome/44.0.2403.89 Safari/537.36"' using '<_sre.SRE_Pattern object at 0xc53590>' 

Мой fail2ban-регулярное выражение выглядит следующим образом:

failregex = \+0200 - <HOST> https?://.*[Aa]dmin.* ((301)|(404)) 

мои Nginx-LogFormat выглядит как это:

log_format vhosts '$time_local - $remote_addr $scheme://$host - $remote_user "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"'; 

когда я бегу fail2ban-регулярное выражение с этим лог-линии я получаю:

fail2ban-regex '18/Sep/2015:14:45:42 +0200 - ***.**.***.*** http://www.example.com - - "GET /admin HTTP/1.1" 404 737 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/44.0.2403.89 Chrome/44.0.2403.89 Safari/537.36"' '\+0200 - <HOST> https?://.*[Aa]dmin.* ((301)|(404))' 

Running tests 
============= 

Use failregex line : \+0200 - <HOST> https?://.*[Aa]dmin.* ((301)|(404)) 
Use  single line : 18/Sep/2015:14:45:42 +0200 - ***.**.***.*** http:/... 


Results 
======= 

Failregex: 1 total 
|- #) [# of hits] regular expression 
| 1) [1] \+0200 - <HOST> https?://.*[Aa]dmin.* ((301)|(404)) 
`- 

Ignoreregex: 0 total 

Date template hits: 
|- [# of hits] date format 
| [1] Day/MONTH/Year:Hour:Minute:Second 
`- 

Lines: 1 lines, 0 ignored, 1 matched, 0 missed 

IP заменяется на .. . *. Хост-адрес с www.example.com. В fail2ban-regex я использовал реальный ip и host.

ответ

0

Я точно не помню, как я решил эту проблему, но в настоящее время работает моя failregex выглядит следующим образом:

failregex = ^.*?<HOST> https?://.*?[Aa]dmin.*? ((301)|(404)).*$ 

Я предполагаю, что исправление было eighter .*? вместо \+0200 - или ^ в начале и $ в конце.