Nginx DoS対策 ngx_http_limit_req_module

  • 2017年11月27日
  • 2018年1月5日
  • ,
  • 1203view

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

 

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

 

DoSの小規模レベル対策

  • サーバ側の対策
    FW, IPS/IDS, DoS対策モジュールの導入, カーネルチューニング(SYN flood….etc), Rate Limiting
  • クラウド側のFWでの遮断
    遮断後にログからサーバ側でのフィルタリング
  • 物理のスイッチでの遮断
    遮断後にログからサーバ側でのフィルタリング
  • CDN導入
  • クラウド型WAF
  • DDoS対応のクラウドを使う
    AWS・・・UDP関連のDNSはALBを導入することで対応可能。HTTPのDDoSははサーバを並べることで解決できる。またはAWS WAFやShieldの有料プランを利用する。
    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程度は大丈夫…(۶•̀ᴗ•́)۶セイッ

お疲れ様です。

最新情報をチェックしよう!
>システム構築・保守に特化した会社です。

システム構築・保守に特化した会社です。

システムの構築・保守運用「システムガーディアン」 社内システム担当が欲しいが、専属で雇うほどの仕事量はない。 必要な時に必要なだけ頼りたいというお悩みを持つ企業様へ専門知識を持って対応を行っております。 サーバから各種システムまで自社・他社で構築されたシステムに対してサポートを行っております。

CTR IMG