Pocket

お久しぶりにH2Oネタなのですが、このブログにDDos対策による設定を追加してみました。
NginxだとRate Limitingであるngx_http_limit_req_moduleを使って設定できるのですが、
もちろんH2Oでも可能です。mrubyなのでちゃちゃっと導入してみましょう!!


■Configure > Using DoS Detection

https://h2o.examp1e.net/configure/dos_detection.html

Basic Usage

Below example uses the mruby script to detect DoS attacks. The default detecting strategy is simply counting requests within configured period. If the count exceeds configured threshold, the handler returns a 403 Forbidden response. Otherwise, the handler returns a 399 response, and the request is delegated internally to the next handler.

(訳)
mrubyスクリプトを使用してDoS攻撃を検出します。 構成された期間内の要求をカウントすることができて、しきい値を超えた場合ハンドラは403 Forbidden応答を返します。 それ以外の場合、ハンドラは399応答を返し、内部的に次のハンドラに委譲されます。

IPアドレスベースで一定期間BANしてくれる!


■enviroments

・dos_detector.rb

https://github.com/h2o/h2o/blob/master/share/h2o/mruby/dos_detector.rb

上記のmrubyスクリプトを配置します。


■blog.adachin.me.conf

デフォルトでも良さそうですが一分間に300リクエスト来たら300秒間BANするように追記しました。


■Test BAN

実際に10秒間に3リクエストしたらBANするようにテストしてみましょう(ほぼ403で見れないww)
危険なのでちゃんとiPhoneのWifiはオフります。

ちゃんと動いてるのでOK!!


■まとめ

オプションのcallbackアラート飛ばしたりログ吐かせたりカスタマイズできるみたいですね。
fail2banでよく設定したけどH2Oの設定でいらんな…しかし簡単!!皆さんもお試しあれ!!

設定しくじるとこうなるのでうまく調整しましょう!!w

Pocket

カテゴリー: DDoSH2OSecurity

adachin

1989年生まれのSRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。好きなツールはAnsible,Terraform,CircleCIで、ECS/Fargateでのインフラ構築を得意とする。副業では数社サーバー保守とベンチャー企業のインフラコンサルティングやMENTAで未経験者にインフラのコーチングを実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、緊急対応、インフラコード化、リファクタリング、セキュリティ強化、新技術の検証、Docker開発環境の提供、AWSでのインフラ構築、GCPでのGKE/Kubernetes保守などを担当している。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください