すこぶる.net

技術系備忘録など

nginx

【Nginx】DoS対策_limit_req_zone

投稿日:2021年2月17日 更新日:

Nginx で DoS 対策を行う方法

Web サイトを公開するにあたり、Nginx で簡単な DoS 攻撃対策を行う方法を紹介します。特別な方法ではなく最初から Nginx にある機能の紹介です。

  1. limit_req_zone
    $binary_remote_addr は接続元の IP アドレスを示しており、上記の例では、1秒間に 5 リクエスト程度同一のクライアント(IP)からアクセスが来ることを想定しています。
    また、zone の設定で 5MB 分の IP アドレスを保持するという設定になっています。このあたりはサイトのアクセス数に応じて引き上げてください。
    ただし、この設定だけではアクセスをブロックすることはありません。
  2. limit_req
    この設定を入れたコンテキストで、limit_req_zone で設定した制限が適用されることになります。
    burst を設定することで、制限を超えたリクエストも指定した数だけ待たせておくことができます。併せて nodelay を設定することで、制限を超えたリクエストを遅延させることなく直ちに 503 レスポンスを返します。逆に delay で指定した秒数遅延させることもできますが、攻撃のような予期せぬスパイクには nodelay で問題ないかと思います。

以上が、Nginx で簡単な DoS 対策になります。
注意点としては、上記は .php (ページ)に対して制限を有効にしていますが、これを全体に対して制限をかけてしまうと、画像やCSSファイルなどあらゆる静的ファイルに対してアクセスが来るのが普通なのですぐに制限にかかってしまいます。limit_req の設定を入れる際はステージング環境などで負荷試験等を行いつつ慎重に設定してください。

-nginx
-,

執筆者:

関連記事

NginxからプライベートのS3にリバースプロキシ

概要 Nginx から AWS にあるプライベートな S3 のバケットにリバースプロキシしたいという要件があったため、その方法をご紹介します。 AWS にある EC2 上からであれば、IAM Role …

【Nginx】キャッシュ作成時のバックエンドへのリクエストをproxy_cache_lockで制限する

概要 Nginx でキャッシュの有効期限が切れたとき、一勢にリクエストがバックエンドに流れることになります。。 そうなると、当然バックエンドサーバの負荷が大きくなりサービス障害につながるので注意が必要 …

【Nginx】add_headerを複数箇所に記載すると消える(上書きされる)

Nginx でadd_headerを複数箇所に書く際の注意点 Nginxの設定ファイルでヘッダーを追加する場面は当然あると思います。 そんなとき server ディレクティブで add_header …

Nginxでconfigチェックした時にSSLエラーがでる「SSL_CTX_use_PrivateKey_file」

Nginxの設定ファイルが正しく記述されているかテストするときに、「nginx -t」コマンドを実行しテストします。 その実行時、下記のようなSSLに関するエラーが出ました。 [crayon-6042 …

HTTPS化に向けてWebサーバでSSL設定をするときのコツ

概要 Webサイトのセキュリティが案じられている現状で、各サイトのHTTPS(SSL化)への移行が急速に進んでいる。 GoogleもHTTPSサイトへの移行を推奨しており、SEO観点でも大きく影響して …