標準トラフィックフィルタールールを使用した AEM web サイトの保護
AEM as a Cloud Service で アドビが推奨する標準トラフィックフィルタールール を使用して、AEM web サイトをサービス拒否(DoS)攻撃、分散型サービス拒否(DDoS)攻撃およびボットの不正使用から保護する方法について説明します。
学習目標
- アドビの推奨される標準トラフィックフィルタールールを確認します。
- ルールの結果を定義、デプロイ、テストおよび分析します。
- トラフィックパターンに基づいてルールを絞り込むタイミングと方法を理解します。
- AEM アクションセンターを使用して、ルールによって生成されたアラートを確認する方法を学びます。
実装の概要
実装手順には、次が含まれます。
- AEM WKND プロジェクトの
/config/cdn.yaml
ファイルに標準トラフィックフィルタールールを追加します。 - 変更をコミットして Cloud Manager Git リポジトリにプッシュします。
- Cloud Manager 設定パイプラインを使用して、変更を AEM 環境にデプロイします。
- Vegeta を使用して DoS 攻撃をシミュレートして、ルールをテストします
- AEMCS CDN ログと ELK ダッシュボードツールを使用して、結果を分析します。
前提条件
続行する前に、トラフィックフィルタールールと WAF ルールの設定方法チュートリアルの説明に従って必要な基盤の設定が完了していることを確認します。また、AEM WKND Sites プロジェクトのクローンを作成し、AEM 環境にデプロイしておきます。
ルールの主なアクション
標準トラフィックフィルタールールの詳細に入る前に、これらのルールで実行される主なアクションについて理解しましょう。各ルールの action
属性は、条件が満たされた場合にトラフィックフィルターがどのように応答するかを定義します。アクションには、次が含まれます。
-
ログ:ルールでは、監視と分析のためにイベントをログに記録します。これにより、トラフィックパターンを確認し、必要に応じてしきい値を調整できます。これは、
type: log
属性で指定します。 -
アラート:ルールでは、条件が満たされた場合にアラートをトリガーし、潜在的な問題を特定するのに役立ちます。これは、
alert: true
属性で指定します。 -
ブロック:ルールでは、条件が満たされた場合にトラフィックをブロックし、AEM サイトへのアクセスを防ぎます。これは、
action: block
属性で指定します。
ルールの確認と定義
アドビの推奨される標準トラフィックフィルタールールは、IP ベースのレート制限の超過などのイベントをログに記録することで、潜在的に悪意のあるトラフィックパターンを特定し、特定の国からのトラフィックをブロックするための基盤レイヤーとして機能します。これらのログは、チームがしきい値を検証し、正当なトラフィックを中断することなく、最終的に ブロックモードへの移行 ルールについて十分な情報に基づいた決定を行うのに役立ちます。
AEM WKND プロジェクトの /config/cdn.yaml
ファイルに追加する必要がある 3 つの標準トラフィックフィルタールールを確認しましょう。
- Edge での DoS の防止:このルールは、クライアント IP からの 1 秒あたりのリクエスト数(RPS)を監視することで、CDN エッジでの潜在的なサービス拒否(DoS)攻撃を検出します。
- 接触チャネルでの DoS の防止:このルールは、クライアント IP からのフェッチリクエストを監視することで、接触チャネルでの潜在的なサービス拒否(DoS)攻撃を検出します。
- OFAC 対象国のブロック:このルールは、OFAC(米国財務省外国資産管理室)の規制対象となる特定の国からのアクセスをブロックします。
1. Edge での DoS の防止
このルールでは、CDN で潜在的なサービス拒否(DoS)攻撃を検出すると アラートを送信 します。このルールをトリガーする条件は、クライアントがエッジの CDN POP(ポイントオブプレゼンス)ごとに 1 秒あたり 100 件のリクエスト(10 秒間の平均)を超えた場合です。
すべて のリクエストをカウントし、クライアント IP ごとにグループ化します。
kind: "CDN"
version: "1"
metadata:
envTypes: ["dev", "stage", "prod"]
data:
trafficFilters:
rules:
- name: prevent-dos-attacks-edge
when:
reqProperty: tier
equals: 'publish'
rateLimit:
limit: 500
window: 10
penalty: 300
count: all
groupBy:
- reqProperty: clientIp
action:
type: log
alert: true
action
属性は、条件が満たされた場合にイベントをログに記録し、アラートをトリガーするようにルールに指定します。したがって、正当なトラフィックをブロックすることなく、潜在的な DoS 攻撃を監視するのに役立ちます。ただし、トラフィックパターンを検証し、しきい値を調整したら、最終的にこのルールをブロックモードに移行することが目標です。
2. 接触チャネルでの DoS の防止
このルールでは、接触チャネルで潜在的なサービス拒否(DoS)攻撃を検出すると アラートを送信 します。このルールをトリガーする条件は、クライアントが接触チャネルのクライアント IP ごとに 1 秒あたり 100 件のリクエスト(10 秒間の平均)を超えた場合です。
フェッチ(キャッシュバイパスリクエスト)をカウントし、クライアント IP ごとにグループ化します。
...
- name: prevent-dos-attacks-origin
when:
reqProperty: tier
equals: 'publish'
rateLimit:
limit: 100
window: 10
penalty: 300
count: fetches
groupBy:
- reqProperty: clientIp
action:
type: log
alert: true
action
属性は、条件が満たされた場合にイベントをログに記録し、アラートをトリガーするようにルールに指定します。したがって、正当なトラフィックをブロックすることなく、潜在的な DoS 攻撃を監視するのに役立ちます。ただし、トラフィックパターンを検証し、しきい値を調整したら、最終的にこのルールをブロックモードに移行することが目標です。
3. OFAC 対象国のブロック
このルールでは、OFAC の規制対象となる特定の国からのアクセスをブロックします。
必要に応じて、国リストを確認および変更できます。
...
- name: block-ofac-countries
when:
allOf:
- { reqProperty: tier, in: ["author", "publish"] }
- reqProperty: clientCountry
in:
- SY
- BY
- MM
- KP
- IQ
- CD
- SD
- IR
- LR
- ZW
- CU
- CI
action: block
action
属性は、指定された国からのアクセスをブロックするようにルールに指定します。これにより、セキュリティリスクをもたらす可能性のある地域からの AEM サイトへのアクセスを防ぐことができます。
上記のルールを含む完全な cdn.yaml
ファイルは、次のようになります。
ルールのデプロイ
上記のルールをデプロイするには、次の手順に従います。
-
変更をコミットして Cloud Manager Git リポジトリにプッシュします。
-
以前に作成した Cloud Manager 設定パイプラインを使用して、変更を AEM 環境にデプロイします。
ルールのテスト
標準トラフィックフィルタールールの効果を確認するには、CDN Edge と 接触チャネル の両方で、汎用性の高い HTTP 負荷テストツールである Vegeta を使用して、高いリクエストトラフィックをシミュレートします。
-
Edge で DoS ルールをテストします(500 rps の制限)。次のコマンドは、Edge のしきい値(500 rps)を超える、1 秒あたり 200 リクエストを 15 秒間シミュレートします。
code language-shell $echo "GET https://publish-p63947-e1249010.adobeaemcloud.com/us/en.html" | vegeta attack -rate=200 -duration=15s | vegeta report
note important IMPORTANT 上記のレポートでは、100% 成功と 200 ステータスコードが示されています。ルールは log
とalert
に設定されているので、リクエストは_ブロックされません_が、監視、分析、アラート生成のためにログに記録されます。 -
接触チャネルで DoS ルールをテストします(100 rps の制限)。次のコマンドは、接触チャネルのしきい値(100 rps)を超える、1 秒あたり 110 フェッチリクエストをシミュレートします。キャッシュバイパスリクエストをシミュレートするために、各リクエストがフェッチリクエストとして処理されるように、一意のクエリパラメーターを含む
targets.txt
ファイルを作成します。code language-shell # Create targets.txt with unique query parameters $for i in {1..110}; do echo "GET https://publish-p63947-e1249010.adobeaemcloud.com/us/en.html?ts=$(date +%s)$i" done > targets.txt # Use the targets.txt file to simulate fetch requests $vegeta attack -rate=110 -duration=1s -targets=targets.txt | vegeta report
note important IMPORTANT 上記のレポートでは、100% 成功と 200 ステータスコードが示されています。ルールは log
とalert
に設定されているので、リクエストは_ブロックされません_が、監視、分析、アラート生成のためにログに記録されます。 -
簡単にするために、ここでは OFAC ルールのテストは行いません。
アラートの確認
トラフィックフィルタールールをトリガーすると、アラートが生成されます。これらのアラートは、AEM アクションセンターで確認できます。
結果の分析
トラフィックフィルタールールの結果を分析するには、AEMCS CDN ログと ELK ダッシュボードツールを使用します。CDN ログの取り込み設定の節の指示に従って、CDN ログを ELK スタックに取り込みます。
次のスクリーンショットでは、AEM 開発環境の CDN ログが ELK スタックに取り込まれていることがわかります。
ELK アプリケーション内の CDN トラフィックダッシュボード には、DoS 攻撃のシミュレーション中に Edge と 接触チャネル でのスパイクが表示されます。
クライアント IP および POP あたりの Edge の RPS と クライアント IP および POP あたりの接触チャネルの RPS の 2 つのパネルには、それぞれ Edge と接触チャネルでの 1 秒あたりのリクエスト数(RPS)が、クライアント IP とポイントオブプレゼンス(POP)ごとにグループ化されて表示されます。
また、CDNトラフィックダッシュボードの他のパネル(上位のクライアント IP、上位の国、上位のユーザーエージェント など)を使用して、トラフィックパターンを分析することもできます。これらのパネルは、潜在的な脅威を特定し、それに応じてトラフィックフィルタールールを調整するのに役立ちます。
Splunk 統合
Splunk ログの転送が有効になっている場合は、新しいダッシュボードを作成してトラフィックパターンを分析できます。
Splunk でダッシュボードを作成するには、AEMCS CDN ログ分析用の Splunk ダッシュボードの手順に従います。
次のスクリーンショットは、IP ごとの最大接触チャネルリクエスト数とエッジリクエスト数を表示する Splunk ダッシュボードの例を示しています。これは、潜在的な DoS 攻撃を特定するのに役立ちます。
ルールを絞り込むタイミングと方法
目標は、正当なトラフィックのブロックを回避し、AEM サイトを潜在的な脅威から引き続き保護することです。標準トラフィックフィルタールールは、正当なトラフィックをブロックすることなく、脅威を警告し、ログに記録する(およびモードが切り替わった際に最終的にブロックする)ように設計されています。
ルールを絞り込むには、次の手順を考慮します。
-
トラフィックパターンを監視:CDN ログと ELK ダッシュボードを使用して、トラフィックパターンを監視し、トラフィックの異常やスパイクを特定します。
-
しきい値を調整:トラフィックパターンに基づいて、ルールのしきい値(レート制限の増減)を調整し、特定の要件に適合させます。例えば、正当なトラフィックがアラートをトリガーしたことに気付いた場合は、レート制限を増やしたり、グループ化を調整したりできます。
しきい値の選択方法のガイダンスについては、次の表を参照してください。table 0-row-2 1-row-2 2-row-2 1-align-left 2-align-left 4-align-left 5-align-left 7-align-left 8-align-left バリエーション 値 接触チャネル 通常 のトラフィック条件(つまり、DDoS 時のレートではない)における IP/POP あたりの最大接触チャネルリクエストの最大値を取得し、倍数で増やします。 Edge 通常 のトラフィック条件(つまり、DDoS 時のレートではない)における IP/POP あたりの最大 Edge リクエストの最大値を取得し、倍数で増やします。 詳しくは、しきい値の選択の節も参照してください。
-
ブロックルールに移行:トラフィックパターンを検証し、しきい値を調整したら、ルールをブロックモードに移行する必要があります。
概要
このチュートリアルでは、AEM as a Cloud Service でアドビの推奨される標準トラフィックフィルタールールを使用して、AEM web サイトをサービス拒否(DoS)攻撃、分散型サービス拒否(DDoS)攻撃およびボットの不正使用から保護する方法について説明します。
推奨される WAF ルール
高度な手法を使用して従来のセキュリティ対策を回避する高度な脅威から AEM web サイトを保護するために、アドビの推奨される WAF ルールを実装する方法について説明します。
WAF トラフィックフィルタールールを使用した AEM web サイトの保護
AEM as a Cloud Service でアドビの推奨される web アプリケーションファイアウォール(WAF)トラフィックフィルタールールを使用して、DoS 攻撃、DDoS 攻撃、ボットの不正使用などの高度な脅威から AEM web サイトを保護する方法について説明します。
ユースケース - 標準ルール以外
より高度なシナリオについて詳しくは、特定のビジネス要件に基づいてカスタムトラフィックフィルタールールを実装する方法を示す次のユースケースを参照してください。