Назад | Перейти на главную страницу

Правило регулярного выражения Fail2ban Anti-DDos Apache2

У меня есть fail2ban, но мой Failregex ни с чем не соответствует, что-то не так.

Запрос, который я хотел бы заблокировать, выглядит так:

186.6.65.199 - - [06/May/2013:18:46:21 +0400] "GET / HTTP/1.1" 200 10488 "coolsearch37845.com/b/eve/618aef08......
186.6.65.199 - - [06/May/2013:18:46:21 +0400] "GET / HTTP/1.1" 200 10531 "liteapps.mcafee.com.......
186.6.65.199 - - [06/May/2013:18:46:21 +0400] "GET / HTTP/1.1" 200 10531 "jfueznxchgsef.pl......

Что я получил на данный момент:

/etc/fail2ban/filter.d/apache-attackers.conf:

failregex = <HOST> - - [[^]]+] "GET / HTTP/1.1"

/etc/fail2ban/jail.local:

[apache-attackers]
enabled = true
port    = http,https
filter  = apache-attackers
bantime = 25920000
logpath = /var/www/mysite/log/access.log
maxretry = 2
findtime = 1

Когда я делаю

fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/apache-attackers.conf

я получил

Failregex
|- Regular expressions:
|  [1] <HOST> - - [[^]]+] "GET / HTTP/1.1"
|
`- Number of matches:
   [1] 0 match(es)

Итак, мое регулярное выражение не работает и ничего не соответствует.

Я хочу сопоставить любой IP-адрес, который запрашивает «GET / HTTP / 1.1» дважды или более за 1 секунду.

Что я делаю не так?

Так как [ и ] являются зарезервированными символами в регулярном выражении, их нужно экранировать:

<HOST> - - [[^]]+] "GET / HTTP/1.1"

должно быть это:

<HOST> - - \[[^]]+\] "GET / HTTP/1.1"

или это:

<HOST> - - [[][^]]+[]] "GET / HTTP/1.1"