LINEで送る
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

LINEで送る
Pocket

カテゴリー: DDoSH2OSecurity

adachin

1989年生まれのSRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、AnsibleやTerraformでのインフラコード化を推進。未経験によるエンジニアのメンターなども実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。現在はサービスの信頼性向上、可用性、レイテンシ、パフォーマンス、モニタリング、緊急対応、インフラコード化、リファクタリング、セキュリティ強化、新技術の検証、Docker開発環境の提供、AWSでのインフラ構築、Wordpressによるコーポレートサイトの修正、メンター、分析基盤の運用を担当している。

0件のコメント

コメントを残す

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