🌪️

【AWS】AWS WAFでSQLインジェクションを防ぐ具体的な設定方法

2025/01/30に公開

きっかけ

OWASP ZAPでSQLインジェクションの脆弱性を検知

  • OWASP ZAP(Zed Attack Proxy)を使用して、対象のWebアプリケーションに対して自動スキャンを実施。
  • SQLインジェクションの脆弱性が検知されたことを確認。

対象ドメインにSQLインジェクションを試す

  • 検知された脆弱性を確認するため、対象ドメインに対して手動でSQLインジェクションを試行。
    • 例: https://example.com/login?username=admin&password=password' OR '1'='1
  • SQLインジェクションが成功し、不正なアクセスが可能であることを確認。

設定手順

AWS Management Consoleにログイン

Web ACLの作成

  1. Web ACLsを選択し、Create web ACLをクリックします。
  2. NameDescriptionを入力します。
    • 例: Name: SQLi-Protection-WebACL, Description: Web ACL to protect against SQL injection
  3. Resource typeで保護対象のリソースタイプを選択します。
    • Global resources (CloudFront Distributions): CloudFrontを使用している場合。
    • Regional resources (Application Load Balancers, API Gatewayなど): ALBやAPI Gatewayを使用している場合。
  4. Regionを選択します(Regional resourcesの場合)。
  5. Nextをクリックします。

ルールとルールグループの追加

  1. Add rulesをクリックし、Add managed rule groupsを選択します。
  2. AWSManagedRulesSQLiRuleSetを選択します。
    • このルールグループは、SQLインジェクション攻撃を防ぐためのマネージドルールを提供します。
  3. Add ruleをクリックしてルールを追加します。
  4. Nextをクリックします。

ルールの優先順位を設定

  1. 追加したルールの優先順位を確認します。
    • 必要に応じて、ルールの順序を調整します。
  2. Nextをクリックします。

メトリクスの設定

  1. Configure metricsで、CloudWatchメトリクスを有効にするかどうかを選択します。
    • メトリクスを有効にすると、WAFの動作状況をモニタリングできます。
  2. Nextをクリックします。

Web ACLの確認と作成

  1. 設定内容を確認します。
  2. Create web ACLをクリックして、Web ACLを作成します。

リソースへの関連付け

  1. 作成したWeb ACLを、保護したいリソース(CloudFrontディストリビューションまたはALB)に関連付けます。
    • Associated AWS resourcesセクションで、関連付けるリソースを選択します。

動作確認

  1. SQLインジェクションのブロック確認:
    • SQLインジェクションを試行し、AWS WAFがリクエストをブロックすることを確認します。
    • 例: https://example.com/login?username=admin&password=password' OR '1'='1
  2. 通常のリクエストの通過確認:
    • 通常のリクエストが通過し、アプリケーションが正常に動作することを確認します。

ログの設定(オプション)

  1. Logging and metricsセクションで、ログの設定を行います。
    • ログをCloudWatch LogsやS3に出力し、後で分析できるようにします。

まとめ

  • AWS WAFを使用して、SQLインジェクションを防ぐためのルールを設定。
  • マネージドルールグループを活用し、簡単にセキュリティを強化。
  • ログとメトリクスを設定し、WAFの動作状況をモニタリング。
GitHubで編集を提案

Discussion