Nginx DoS対策 ngx_http_limit_req_module

ホーム > 業務日誌 > スタッフ別 > > Nginx DoS対策 ngx_http_limit_req_module

F5のような連続アクセスによる負荷をかけるDoSに対してWEBサーバにはRate Limitingのモジュールが用意されています。このモジュールは悪戯目的の単純なものであれば、同一IPのアクセス数からバーストさせることにより十分凌ぐことが出来ます。

 

予め何も対策しておかなかった場合は、DoS攻撃中はSSH等のリモート接続も出来なくなるのでどうしようもなくなります。そんなわけで今回はNginxで出来るDoS対策のご紹介。

 

DoSの小規模レベル対策

  • サーバ側の対策
    FW, IPS/IDS, DoS対策モジュールの導入, カーネルチューニング(SYN flood….etc), Rate Limiting
  • クラウド側のFWでの遮断
    遮断後にログからサーバ側でのフィルタリング
  • 物理のスイッチでの遮断
    遮断後にログからサーバ側でのフィルタリング
  • CDN導入
  • クラウド型WAF
  • DDoS対応のクラウドを使う
    IBM Bluemixなど・・・DDoS検知でPublicIPでの公開が遮断されるものの、プライベートネットワークで設定操作可能
  • 海外IPからのアクセスを弾く
    GeoIP, ipsetなどで海外IPを弾き、国内IPのみ許可する。
    国内IPで犯罪行為する人は少ないので、認証系など特定ポートにこのフィルターをかけておくと固定IPでなくてもだいぶセキュアになりますよ!

 

 

WEBサーバ NginxでのRate Limiting対応

Apache Nginx

 

今回はサーバ側の対策としてNginxのRate Limitingである、ngx_http_limit_req_moduleを使ってみます。

 

 

公式サンプル

@see Module ngx_http_limit_req_module

 

上記のサンプルでは同一IPからの秒間1回のリクエスト対して503エラーを返します。但し、locationディレクティブのほうを見ると5回までのバーストを許す設定です。

 

 

設定サンプル

クライアント側環境の何かの不具合で誤検知による不具合が発生してもいけないので、そこまで敏感でもなく、でも念の為といったゆったりした設定にすると良いかもしれません。

また、nodelayオプションをかけることでburstまでそのまま通過させてくれます。

 

実際のところ、ブログ系でキャッシュを効かせていい環境ならF5程度は大丈夫…(۶•̀ᴗ•́)۶セイッ

お疲れ様です。

金広 優(エンジニア)

この記事を書いた人:金広 優(エンジニア)

システムガーディアン爆弾処理班。アクセス負荷対策やNginxへの移行案件が多いこの頃。IBM BlueMix InfrastructureやAWSなどクラウド案件が多くなってきました。

この記事に関してのお問い合わせ
御連絡・ご返信は原則2営業日以内を予定しております。
お急ぎの場合は、お手数ですが下記電話でもご対応をしております。

システムガーディアン株式会社
受付時間:平日9:00~18:00
受付担当:坪郷(つぼごう)・加藤
電話:03-6758-9166