6

Docker コンテナで nginx を使用しており、nginx docker コンテナのログ ファイルをホストと簡単に共有できます。ログはその上にあり、/var/log/nginxフォルダーで動作します。

特にログファイルを確認するために、ホストにfail2banをインストールしましたaccess.log

簡単なフィルターをテストします

# Fail2Ban configuration file
# Author: Miniwark

[Definition]
failregex = ^<HOST> .*"GET .*w00tw00t
# try to access to admin directory
            ^<HOST> .*"GET .*admin.* 403
            ^<HOST> .*"GET .*admin.* 404
# try to access to install directory
            ^<HOST> .*"GET .*install.* 404
# try to access to phpmyadmin
            ^<HOST> .*"GET .*dbadmin.* 404
            ^<HOST> .*"GET .*myadmin.* 404
            ^<HOST> .*"GET .*MyAdmin.* 404
            ^<HOST> .*"GET .*mysql.* 404
            ^<HOST> .*"GET .*websql.* 404
            ^<HOST> .*"GET \/pma\/.* 404
# try to access to wordpress (we use another CMS)
            ^<HOST> .*"GET .*wp-content.* 404
            ^<HOST> .*"GET .*wp-login.* 404
# try to access to typo3 (we use another CMS)
            ^<HOST> .*"GET .*typo3.* 404
# try to access to tomcat (we do not use it)      
            ^<HOST> .*"HEAD .*manager.* 404
# try to access various strange scripts and malwares
            ^<HOST> .*"HEAD .*blackcat.* 404
            ^<HOST> .*"HEAD .*sprawdza.php.* 404

ignoreregex = 

そして手軽にアクティブに/etc/fail2ban/jail.local

[nginx-nokiddies]
# ban script kiddies
enabled  = true
port     = http,https
filter   = nginx-nokiddies
logpath  = /var/log/nginx*/*access.log
maxretry = 1

fail2ban サービスを再起動/停止/開始/リロードします。次に、この正規表現をテストします

fail2ban-regex /var/log/nginx/access.log /etc/fail2ban/filter.d/nginx-nokiddies.conf

特に管理者のリクエストでは、何千もの行に一致します。

主な問題は、fail2ban が自動的に機能しないため、以前のようにメールが送信されないことです。実際、ホストに直接 nginx インストールを使用すると、完全に機能します。

ログは基本的な形式であり、次のような「結合」形式を呼び出します。

log_format combined '$remote_addr - $remote_user [$time_local]  '
            '"$request" $status $body_bytes_sent '
            '"$http_referer" "$http_user_agent"';

私のnginxコンテナーとその子は完全なパーミッション(777)であるため、パーミッションの問題はありません。もちろん、後で変更します!

fail2ban プロセスが ip を禁止せず、 docker と一致しないのはなぜですか?

4

1 に答える 1