Nginxでの不正アクセス防止

Category:
Last Updated: 2021/12/13 12:40:54

ある程度、業務経験のあるエンジニアであれば独自の不正アクセス対策方針を持っているものですが、私の場合、利用しているかどうかに関わらずアクセスが多いパスはすべて403を返すように設定しています。

  • .svn、.git、.htaccess、.envなどの設定関係のファイルはすべて403
  • WordPressの脆弱性狙いでアクセスされやすい wp-config.php、xmlrpc.php、wp-admin、wp-includesなどは403
  • 最近 /api/v1/time というパスへのアクセスがとても多いのでこれも 403

TIP

ただし、WordPressを使っている場合はwp-admin、wp-includesは制限してはいけません。また、WordPressでXMLRPC APIを使っている場合はxmlrpc.php も制限してはいけません。

上記を踏まえて設定すると下記のようになります。

location ~* /((wp-config|xmlrpc)\.php|\.(svn|git|env|htaccess))$ {
	return 403;
}
location ~* (/api/v1/time|/wp-admin|/wp-includes) {
	return 403;
}
1
2
3
4
5
6

さらに、phpをまったく使わないか、あるいはphpという拡張子をつけてアクセスさせることが一切ないようなサーバーの場合にはphpが拡張子のURLをすべて禁止します。

location ~* /(.*\.php|\.(svn|git|env|htaccess))$ {
	return 403;
}
location ~* (/api/v1/time|/wp-admin|/wp-includes) {
	return 403;
}
1
2
3
4
5
6

設定ができたら「nginx -t」でシンタックスエラーがないことを確認の上、サーバーをreloadします。

$ nginx -t 
$ systemctl reload nginx
1
2

Category:
Last Updated: 2021/12/13 12:40:54
Copyright © Web Ninja All Rights Reserved.