web-dev-qa-db-ja.com

fail2ban-正規表現は文字列と一致しますが、ログファイルとconfファイルとは一致しません。なぜですか?

走ったら

fail2ban-regex '31.22.105.115 - - [11/Apr/2014:18:09:54 +0100] "GET /admin/config.php 
HTTP/1.0" 301 573 "-" "-"' '^<Host> - - (?:\[[^]]*\] )+\"(GET|POST)/(?i)(PMA|phptest|phpmyadmin|myadmin|mysql|mysqladmin|sqladmin|mypma|admin|xampp|mysqldb|mydb|db|pmadb|phpmyadmin1|phpmyadmin2|cgi-bin)'

次に、Success, the total number of match is 1を取得します。それでも私がaccess.logを含む場合

 .
 .
109.68.191.26 - - [11/Apr/2014:12:47:50 +0100] "GET / HTTP/1.0" 301 541 "-" "masscan/1.0 (https://github.com/robertdavidgraham/masscan)"
31.22.105.115 - - [11/Apr/2014:18:09:54 +0100] "GET /admin/config.php HTTP/1.0" 301 573 "-" "-"

およびfilter.d.confファイルを含む

failregex  = '^<Host> - - (?:\[[^]]*\] )+\"(GET|POST) /(?i)(PMA|phptest|phpmyadmin|myadmin|mysql|mysqladmin|sqladmin|mypma|admin|xampp|mysqldb|mydb|db|pmadb|phpmyadmin1|phpmyadmin2|cgi-bin)'

、そしてfail2ban-regex path/to/access.log /etc/fail2ban/filter.d/Apache-getphp.confを実行してみますSorry, no matchを取得します、なぜですか?

4
fpghost

ああ、単にfilter.dファイルで正規表現を引用するべきではないということです。つまり、次のようにする必要があります。

failregex  = ^<Host> - - (?:\[[^]]*\] )+\"(GET|POST) /(?i)(PMA|phptest|phpmyadmin|myadmin|mysql|mysqladmin|sqladmin|mypma|admin|xampp|mysqldb|mydb|db|pmadb|phpmyadmin1|phpmyadmin2|cgi-bin)
3
fpghost