2016-06-23 14 views
1

ドッキング用のコンテナでnginxを使用しているので、自分のログファイルをnginxドッカーのコンテナでホストと簡単に共有できます。ログはその上にあり、/var/log/nginxフォルダで動作します。Fail2banとDockerを使用した安全なサーバー

ログファイルをチェックするために、特にaccess.logというホストにfail2banをインストールしました。

私は単純なフィルタ

# 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 

にI /ストップ/スタート/ 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を禁止せず、ドッカーと何も一致しないのですか?

答えて

0

nginxがdockerイメージで実行されている場合は、恐らくdockerコンテナでfail2banを実行することもできますか?

+1

良いアイデアだけど、ホストのメインファイアウォールのユーザーをコンテナに入れないようにしたいのですが、nginxのコンテナやメインファイアウォールの誰かをブロックすることは可能ですか?誰かをnginxのコンテナでブロックするのに十分ですか?それは誤解ですか? – kiedis

+0

誤解はありません@kiedis、あなたは正しいです。誰かがfail2banをフォークしてドッカーホスト上のファイアウォールと通信しない限り、ドッキング用のコンテナ内のfail2banを実行するとどんなメリットがあるのか​​は分かりません –

0

ホストにfail2banをインストールし、nginxコンテナからホストにアクセスログファイルをマップすることができます。 docker run -v /path/in/host:/var/log/nginx/access.log nginxのようなものです。次にfail2banでそのファイルを参照してください。

関連する問題