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

あだちん

1989年生まれ。 ランサーズ/SRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、他社インフラレスポンス改善、ランサーズでの副業、ansibleでのインフラコード化を推進し、未経験によるエンジニアのMENTAなども実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/広報/VulsRepo init file,chatwork通知のコントリビュータでもある。現在はDocker開発環境の提供,AWSで新サービスのインフラ構築,PHPバージョンアップ,分析基盤を担当しておりDigdag,embulk,BigQueryを使いこなし中。

コメントを残す

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