複数の攻撃を行う発信元からの保護¶
Wallarmがblocking modeのときは、悪意のあるペイロードを含むすべてのリクエストを自動的にブロックし、正当なリクエストのみを通過させます。同一IPからの異なる悪意のあるペイロードの数(一般に「複数攻撃実行者」と呼びます)が指定したしきい値を超えた場合のWallarmの動作を設定することで、アプリケーションやAPIに対する追加の保護を構成できます。
そのような実行者は自動的にdenylistに追加でき、以後その発信元からのすべてのリクエストをブロックします。過去に多数の悪意のあるリクエストを送っているという事実にもとづき、個々のリクエストが悪性かどうかの解析に時間をかけずに遮断します。
設定¶
以下の例を参考に、複数種類の攻撃を行う発信元からの保護の設定方法を確認します。
たとえば、あるIPから1時間に3件を超える悪意のあるペイロードが検出されたら、そのIPを完全にブロックするとします。そのために、対応するしきい値を設定し、発信元IPを1時間ブロックするようにシステムに指示します。
この保護を有効にするには:
-
Wallarm Console → Triggersを開き、トリガー作成のウィンドウを開きます。
-
条件としてNumber of malicious payloadsを選択します。
-
しきい値を
同一IPからの悪意のあるリクエストが1時間に3件を超える
に設定します。カウントされないもの
カスタム正規表現に基づく実験的なペイロード。
-
フィルターは設定しませんが、他のケースでは次を単独または組み合わせて使用できます。
-
Denylist IP address -
Block for 1 hour
のトリガーリアクションを選択します。しきい値を超えると、Wallarmは発信元IPをdenylistに追加し、その後のすべてのリクエストをブロックします。なお、複数攻撃実行者に対する保護によってボットIPがdenylistに入れられた場合でも、デフォルトでは、当該発信元からのブロックされたリクエストに関する統計をWallarmが収集し、表示します。
-
トリガーを保存し、Cloudとノードの同期が完了するのを待ちます(通常は2〜4分です)。
Pre-configured trigger¶
新規の会社アカウントには、事前構成済み(デフォルト)のNumber of malicious payloadsトリガーが用意されており、1時間以内に3種類を超える悪意のあるペイロードを送信した場合に、IPを1時間Graylistに入れます。
Graylistは疑わしいIPアドレスの一覧で、ノードは次のように処理します。GraylistにあるIPが悪意のあるリクエストを送ると、ノードはそれらをブロックし、正当なリクエストは許可します。これに対し、denylistはアプリケーションへの到達が一切許可されないIPアドレスを示し、denylistにある送信元からのトラフィックは正当なものであってもノードがブロックします。IPのGraylistingは、false positivesの低減を目的としたオプションの1つです。
このトリガーはノードのどのフィルタリングモードでも有効になるため、ノードのモードに関係なくIPをGraylistに入れます。
ただし、ノードがGraylistを分析するのはsafe blockingモードのときだけです。GraylistにあるIPからの悪意のあるリクエストをブロックするには、まずその特徴を理解したうえで、ノードのmodeをsafe blockingに切り替えてください。
Brute force、Forced browsing、Resource overlimit、Data bomb、Virtual patchの攻撃タイプのhitsは、このトリガーでは対象外です。
デフォルトのトリガーは一時的に無効化、変更、削除できます。
テスト¶
以下は事前構成済みのトリガー向けのテスト例です。ご利用のトリガーに合わせて調整できます。
-
保護対象のリソースに次のリクエストを送信します。
curl 'http://localhost/?id=1%27%20UNION%20SELECT%20username,%20password%20FROM%20users--<script>prompt(1)</script>' curl 'http://localhost/?id=1%27%20select%20version();' curl http://localhost/instructions.php/etc/passwd
ここには、SQLi、XSS、Path Traversalタイプの悪意のあるペイロードが4つ含まれています。
-
Wallarm Console → IP lists → Graylistを開き、リクエストの送信元IPアドレスが1時間Graylistに入っていることを確認します。
-
Attacksセクションを開き、攻撃が一覧に表示されていることを確認します。
攻撃を検索するには、
multiple_payloads
のsearch tagを使用できます。