お久しぶりに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


カテゴリー: DDoSH2OSecurity

adachin

1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

0件のコメント

コメントを残す

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