Nginxで特定IPアドレスのリクエストを拒否する
特定IPアドレスのリクエストを拒否したいのであれば、ロードバランサーやリバースプロキシなどのセキュリティ設定を書き換えれば済む話だが、環境によっては他のサービスなどに影響を及ぼす可能性もある。
そこで、Nginxの設定を書き換え、特定のサービスだけで特定のIPアドレスを使用したリクエストを拒否する方法をここに記す。
設定ファイルに追加する
Nginxの設定ファイル( /etc/nginx/nginx.conf
)に下記を追加する。
deny 192.168.XXX.XXX;
/etc/nginx/site-available/任意のファイル
に追加してもOK。
設定を追加したら、restart
させる。
sudo systemctl restart nginx
拒否されるとこうなる。
ただ、これだとNginxにリクエストが到達するので、サーバーサイドの処理は動かないものの、リクエストを受け取り、403のレスポンスを返す処理が実行される。そのためDDos攻撃に対してはこの拒否設定を行うのではなく、リバースプロキシやロードバランサなどの、なるべくクライアント側に近い装置のセキュリティ設定を書き換えることで対策をする。
また、デフォルトだと使用しているOSとNginxのバージョンが表示されているため、攻撃者にヒントを与えてしまう。これは対策が必要。
Nginxのログ設定を変更したい場合は下記を読む。