loader image

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

きっかけ

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
  1. Resource typeで保護対象のリソースタイプを選択します。
  • Global resources (CloudFront Distributions): CloudFrontを使用している場合。
  • Regional resources (Application Load Balancers, API Gatewayなど): ALBやAPI Gatewayを使用している場合。
  1. Regionを選択します(Regional resourcesの場合)。
  2. Nextをクリックします。

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

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

ルールの優先順位を設定

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

メトリクスの設定

  1. Configure metricsで、CloudWatchメトリクスを有効にするかどうかを選択します。
  • メトリクスを有効にすると、WAFの動作状況をモニタリングできます。
  1. 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
  1. 通常のリクエストの通過確認:
  • 通常のリクエストが通過し、アプリケーションが正常に動作することを確認します。

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

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

まとめ

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

コメント

タイトルとURLをコピーしました