お盆のお休みを利用し、DoS攻撃を防ぐツールを開発しています。
Dos攻撃は、いまさら説明は不要ですね。
サイトにリクエストを大量に送りつけ、サーバやネットワークのリソースを使い果たしてサービス停止に追い込む。とても原始的な攻撃です。 F5 アタックによる2chのサービス停止事件
DoS攻撃の防御は、以下のフリーツールが有名です。
・mod_dosdetector
・mod_evasive
しかし、、、
これらツールは、ウェブサーバ単体の”時間あたりのアクセス数”を”しきい値”としているため、流行りの仮想化環境(クラウド)では若干メンドウな運用が発生します。
例えば、アクセス上昇が見込まれるので、ウェブサーバを一時的に追加したい。
このようなケースでラウンドロビン構成をとっている場合、サーバ追加後の全ウェブサーバの台数で割った値を”しきい値”として設定し、終了とともにサーバ削減後の値に戻さなくてはなりません。
トレンドがたびたび変わるサービスでは、この”見直し作業”がめんどかったりします
もし設定を忘れると、簡単にサービスが停止してしまいます。
なので、、、
ウェブサーバの増減に関わらず、同じ”しきい値”を参照できないか?を考えてみました。
しきい値共有にはKVSで有名な”Redis“を採用し、各ウェブサーバからはこのKVSを参照する方式でDoS制御させてみます。
# このサイトで実験しています。
# F5押下で一定数のアクセス数を越えると 503エラー を返却するようにしています。
多々あるKVSのなかでなぜRedis?については、データの永続性、高速な読み書き、Redis-Sentinelによる冗長化、yumによる簡単導入、が採用に至った理由です。
運用試験の結果は、、、こうご期待を