WAF ルールを含むトラフィックフィルタールールのベストプラクティス
WAF ルールを含むトラフィックフィルタールールの推奨ベストプラクティスについて説明します。この記事に記載されているベストプラクティスは完全なものではなく、独自のセキュリティポリシーや手順の代用になるものではない点に注意してください。
一般的なベストプラクティス
- 組織に適したルールを決定するには、セキュリティチームと共同作業します。
- ルールをステージング環境と実稼動環境にデプロイする前に、開発環境でルールを常にテストします。
- ルールを宣言して検証する際は、
action
タイプlog
から開始し、ルールが正当なトラフィックをブロックしていないことを常に確認します。 - 特定のルールでは、
log
からblock
への移行は、十分なサイトトラフィックの分析にのみ基づく必要があります。 - ルールを段階的に導入し、テストチーム(QA、パフォーマンス、侵入テスト)をプロセスに含めることを検討します。
- ダッシュボードツールを使用して、ルールの影響を定期的に分析します。サイトのトラフィック量に応じて、分析は日別、週別、月別に実行できます。
- 分析後に判明した悪意のあるトラフィックをブロックするには、ルールを追加します。例えば、サイトを攻撃している特定の IP などです。
- ルールの作成、デプロイメント、分析は、継続的な反復的なプロセスである必要があります。これは 1 回限りのアクティビティです。
トラフィックフィルタールールのベストプラクティス
AEM プロジェクトに対して、以下のトラフィックフィルタールールを有効にします。ただし、rateLimit
および clientCountry
プロパティに必要な値は、セキュリティチームと共に決定する必要があります。
kind: CDN
version: '1'
metadata:
envTypes:
- dev
- stage
- prod
data:
trafficFilters:
rules:
# Prevent DoS attacks by blocking client for 5 minutes if they make more than 100 requests in 1 second.
- name: prevent-dos-attacks
when:
reqProperty: path
like: '*'
rateLimit:
limit: 100
window: 1
penalty: 300
groupBy:
- reqProperty: clientIp
action: block
# Block requests coming from OFAC countries
- name: block-ofac-countries
when:
allOf:
- reqProperty: tier
- matches: publish
- reqProperty: clientCountry
in:
- SY
- BY
- MM
- KP
- IQ
- CD
- SD
- IR
- LR
- ZW
- CU
- CI
WARNING
実稼動環境では、web セキュリティチームと共同作業して、
rateLimit
の適切な値を決定します。WAF ルールのベストプラクティス
WAF のライセンスを取得し、プログラムで有効にすると、ルールで宣言していない場合でも、WAF フラグに一致するトラフィックがグラフとリクエストログに表示されます。したがって、潜在的に新たな悪意のあるトラフィックを常に認識し、必要に応じてルールを作成できるようになります。宣言したルールに反映されていない WAF フラグを確認し、宣言することを検討します。
AEM プロジェクトでは、以下の WAF ルールを検討します。ただし、action
および wafFlags
プロパティに必要な値は、セキュリティチームと共に決定する必要があります。
kind: CDN
version: '1'
metadata:
envTypes:
- dev
- stage
- prod
data:
trafficFilters:
rules:
# Traffic Filter rules shown in above section
...
# Enable WAF protections (only works if WAF is enabled for your environment)
- name: block-waf-flags
when:
reqProperty: tier
matches: "author|publish"
action:
type: block
wafFlags:
- SANS
- TORNODE
- NOUA
- SCANNER
- USERAGENT
- PRIVATEFILE
- ABNORMALPATH
- TRAVERSAL
- NULLBYTE
- BACKDOOR
- LOG4J-JNDI
- SQLI
- XSS
- CODEINJECTION
- CMDEXE
- NO-CONTENT-TYPE
- UTF8
# Disable protection against CMDEXE on /bin
- name: allow-cdmexe-on-root-bin
when:
allOf:
- reqProperty: tier
matches: "author|publish"
- reqProperty: path
matches: "^/bin/.*"
action:
type: allow
wafFlags:
- CMDEXE
概要
最後に、このチュートリアルでは、Adobe Experience Manager as a Cloud Service(AEMCS)で web アプリケーションのセキュリティを強化するために必要な知識とツールを習得しました。実用的なルールの例と結果分析のインサイトを使用すると、web サイトとアプリケーションを効果的に保護できます。
recommendation-more-help
4859a77c-7971-4ac9-8f5c-4260823c6f69