c3.16 AWS WAF のカスタムルールを追加する
マネージドルールは一般的な脅威をカバーしますが、各アプリには独自の保護が必要です。レート制限、特定の脆弱性への仮想パッチ、サインアップとログインの不正対策です。これらをマネージドのベースラインの上にカスタム AWS WAF ルールとして構築します。
実装ガイダンス
マネージドルールを超えて
AWS WAF マネージドルールは一般的な脅威に素早く対処しますが、一部の保護はアプリ固有です。コンソールまたは JSON でカスタムルールを作成し(バージョン管理のためコンソールのルールを JSON にエクスポート)、次をカバーします。
レート制限
アプリの通常トラフィックに合わせたリクエストレート制限を設定し、レイヤー 7 DDoS(HTTP フラッド)、ボット攻撃(クレデンシャルスタッフィング)、偵察を抑えます。ルールを Count モードで開始し、通常利用がしきい値を下回ることを確認してから Block に切り替えます。トラフィックが想定されない地域向けに地理ベースのレート制限も設定できます。
仮想パッチ
脆弱性が見つかり、すぐにコードで修正できない場合は、カスタムルールを一時的な「仮想パッチ」としてデプロイします。たとえば、検出された SQL インジェクション経路で使われる文字を含むフォーム送信をブロックし、コード修正が出るまでの間しのぎます。
サインアップとログインを保護する
- Account Creation Fraud Prevention(ACFP) は、登録フォームを偽の、あるいは不正なサインアップ(無料枠の悪用など)から保護します。
- Account Takeover Prevention(ATP) は、ログインフォームをクレデンシャルスタッフィングやパスワードスプレーから保護します。
パートナー WAF を検討するとき
AWS WAF がニーズを満たすか、パートナー WAF(AWS Marketplace の Imperva、F5、Fortinet)の方が適しているかを評価します。SaaS(ドメインをプロバイダーに向ける)としても、入口 VPC の仮想アプライアンスとしても使えます。
例: レートベースルール
この WAF ルールは、5 分間のウィンドウで送信元 IP ごとのリクエスト数を制限します。まず Count で閾値を確認し、その後アクションを Block に変更します:
{
"Name": "rate-limit-per-ip",
"Priority": 10,
"Statement": {
"RateBasedStatement": {
"Limit": 2000,
"AggregateKeyType": "IP"
}
},
"Action": { "Count": {} },
"VisibilityConfig": {
"SampledRequestsEnabled": true,
"CloudWatchMetricsEnabled": true,
"MetricName": "rate-limit-per-ip"
}
}How to validate
- アプリ固有の保護(レート制限、仮想パッチ)のためのカスタムルールを追加しましたか?
- レート制限は Block に切り替える前に Count モードで調整していますか?
- サインアップ(ACFP)とログイン(ATP)のエンドポイントを不正利用から保護していますか?
Threats addressed
- アプリ固有の不正利用(レイヤー 7 DDoS、クレデンシャルスタッフィング、サインアップ詐欺、既知だが未修正の脆弱性の悪用)は、個別の保護がないと汎用のマネージドルールをすり抜けます。
AWS サービス
料金
AWS WAF の料金を参照してください。
Cloud Security Maturity Model