CentOS 7でApacheリバースプロキシと一緒にfail2ban 0.9.7を使用して、次のようなオープンプロキシとしてサーバーにアクセスしようとするボットを禁止しようとしています。
221.8.179.164 - - [10/Jun/2019:22:04:19 +0200] "CONNECT auth.riotgames.com:443 HTTP/1.1" 405 235 "-" "Mozilla/5.0 (Windows NT 6.1; rv:27.0) Gecko/20100101 Firefox/27.0"
ProxyRequests
はオフになっていますが、これらのリクエストのいくつかは、何らかの理由で200を返します。
これが私の設定です:
[Definition]
failregex = ^<Host> - -.*"(GET|POST|HEAD|CONNECT).*(bad_Host_1|bad_Host_2|bad_Host_3).*"$
ignoreregex =
[Apache-badhosts]
port = http,https
# I made sure this is the proper path
logpath = /var/log/httpd/access_log
bantime = 172800
maxretry = 1
enabled = true
そして、これがfail2ban-regex
の結果です。
user@Host /e/fail2ban> Sudo fail2ban-regex /var/log/httpd/access_log /etc/fail2ban/filter.d/Apache-badhosts.conf
Running tests
=============
Use failregex filter file : Apache-badhosts, basedir: /etc/fail2ban
Use log file : /var/log/httpd/access_log
Use encoding : UTF-8
Results
=======
Failregex: 10797 total
|- #) [# of hits] regular expression
| 1) [10797] ^<Host> - -.*"(GET|POST|HEAD|CONNECT).*(bad_Host_1|bad_Host_2|bad_Host_3).*"$
`-
Ignoreregex: 0 total
Date template hits:
|- [# of hits] date format
| [13813] Day(?P<_sep>[-/])MON(?P=_sep)Year[ :]?24hour:Minute:Second(?:\.Microseconds)?(?: Zone offset)?
`-
Lines: 13813 lines, 0 ignored, 10797 matched, 3016 missed
[processed in 2.44 sec]
ログはほとんど空で、sshd
の禁止のみが表示されます。
上記の正規表現を使用して一致を見つけるのに、fail2banがIPを禁止しないのはなぜですか?
ほとんどの場合、システムにpyinotify
がインストールされていないため、fail2banがログファイルの変更を取得できません。同じ問題があり、これを使用して修正しました。
インストールpyinotify
yum install python-inotify
インストールしたら、jail.local
そして、置きます
[myjail]
...
backend = pyinotify
...
systemctl restart fail2ban