nginx Webサーバーレベルでのボットと不要なユーザーのブロック

私にとって、そして私はあなたのために、ウェブサーバーのログは次の形式のリクエストでしばしば詰まっています:



62.193.233.148 - - [28/May/2009:18:20:27 +0600] "GET /roundcube/ HTTP/1.0" 404 208 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5"

62.193.233.148 - - [28/May/2009:18:20:28 +0600] "GET /webmail/ HTTP/1.0" 404 206 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5"

212.150.123.234 - - [29/May/2009:20:51:12 +0600] "GET /admin/main.php HTTP/1.0" 404 212 "-" "-"

212.150.123.234 - - [29/May/2009:20:51:12 +0600] "GET /phpmyadmin/main.php HTTP/1.0" 404 217 "-" "-"

212.150.123.234 - - [29/May/2009:20:51:12 +0600] "GET /phpMyAdmin/main.php HTTP/1.0" 404 217 "-" "-"

212.150.123.234 - - [29/May/2009:20:51:13 +0600] "GET /db/main.php HTTP/1.0" 404 209 "-" "-"

212.150.123.234 - - [29/May/2009:20:51:13 +0600] "GET /PMA/main.php HTTP/1.0" 404 210 "-" "-"

212.150.123.234 - - [29/May/2009:20:51:14 +0600] "GET /admin/main.php HTTP/1.0" 404 212 "-" "-"

212.150.123.234 - - [29/May/2009:20:51:14 +0600] "GET /mysql/main.php HTTP/1.0" 404 212 "-" "-"

212.150.123.234 - - [29/May/2009:20:51:15 +0600] "GET /myadmin/main.php HTTP/1.0" 404 214 "-" "-"

212.150.123.234 - - [29/May/2009:20:51:15 +0600] "GET /phpadmin/main.php HTTP/1.0" 404 215 "-" "-"

212.150.123.234 - - [29/May/2009:20:51:16 +0600] "GET /webadmin/main.php HTTP/1.0" 404 215 "-" "-"









これらは主にボットです。サーバーをスキャンしてフォルダーを探し、脆弱性を探すユーザーもいます。

そこで、nginxツールを使用してサーバーをスキャンしようとした直後に、これらのIPアドレスをブロックしたかったのです。





geo njinxモジュールが助けになります



まず、場所セクションに「IPアドレス1;」という形式の新しいlog_formatを書き込みます。これは、geoモジュールが理解します。



log_format deny '$remote_addr 1;';









httpセクションに次のように記述します。



geo $deny {

default 0;

include /www/logs/deny;

}











これにより、ファイル/ www / logs / denyを読み取り、ブロックするIPアドレスのリストを取得できます。



次に、場所のセクションで、IPアドレスをブロックする必要がある「悪い」状況について説明します。次に例を示します。



set $ua $http_user_agent;



if ($ua ~* wget) {

access_log /www/logs/deny deny;

return 403;

}



if ($ua ~* curl) {

access_log /www/logs/deny deny;

return 403;

}



if ($request ~* "webadmin") {

access_log /www/logs/deny deny;

return 403;

}



if ($request ~* "\/admin\/main.php") {

access_log /www/logs/deny deny;

return 403;

}









その結果、不正なリクエストとユーザーエージェントは、「IPアドレス1;」の形式でファイル/ www / logs / denyに到達し、構成を再読み取りすると、IPアドレスがブロックされます。



設定を再読み込みするために(必要に応じて)1-5-10分ごとに一度クラウンのjinxにコマンドを投げるだけで、ブロックされたIPアドレスのリストはサーバーへのアクセスを拒否されます。



シソエフによると、次のようになります。

kill –HUP `cat /var/log/nginx/nginx.pid`







ルールのリストに「悪い」クエリを入力すると、悪魔はあなたの兄弟ではありません!



All Articles