Nginxでの不正アクセス防止
ある程度、業務経験のあるエンジニアであれば独自の不正アクセス対策方針を持っているものですが、私の場合、利用しているかどうかに関わらずアクセスが多いパスはすべて403を返すように設定しています。
- .svn、.git、.htaccess、.envなどの設定関係のファイルはすべて403
- WordPressの脆弱性狙いでアクセスされやすい wp-config.php、xmlrpc.php、wp-admin、wp-includesなどは403*1
- 最近 /api/v1/time というパスへのアクセスがとても多いのでこれも 403
上記を踏まえて設定すると下記のようになります。
location ~* /((wp-config|xmlrpc)\.php|\.(svn|git|env|htaccess))$ { return 403; } location ~* (/api/v1/time|/wp-admin|/wp-includes) { return 403; }
さらに、phpをまったく使わないか、あるいはphpという拡張子をつけてアクセスさせることが一切ないようなサーバーの場合にはphpが拡張子のURLをすべて禁止します。
location ~* /(.*\.php|\.(svn|git|env|htaccess))$ { return 403; } location ~* (/api/v1/time|/wp-admin|/wp-includes) { return 403; }
設定ができたら「nginx -t」でシンタックスエラーがないことを確認の上、サーバーをreloadします。
$ nginx -t $ systemctl reload nginx