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`
ルールのリストに「悪い」クエリを入力すると、悪魔はあなたの兄弟ではありません!