きっかけ
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にログイン
- AWS Management Consoleにログインし、WAF & Shieldサービスに移動します。
Web ACLの作成
- Web ACLsを選択し、Create web ACLをクリックします。
- NameとDescriptionを入力します。
- 例: Name:
SQLi-Protection-WebACL
, Description:Web ACL to protect against SQL injection
- Resource typeで保護対象のリソースタイプを選択します。
- Global resources (CloudFront Distributions): CloudFrontを使用している場合。
- Regional resources (Application Load Balancers, API Gatewayなど): ALBやAPI Gatewayを使用している場合。
- Regionを選択します(Regional resourcesの場合)。
- Nextをクリックします。
ルールとルールグループの追加
- Add rulesをクリックし、Add managed rule groupsを選択します。
- AWSManagedRulesSQLiRuleSetを選択します。
- このルールグループは、SQLインジェクション攻撃を防ぐためのマネージドルールを提供します。
- Add ruleをクリックしてルールを追加します。
- Nextをクリックします。
ルールの優先順位を設定
- 追加したルールの優先順位を確認します。
- 必要に応じて、ルールの順序を調整します。
- Nextをクリックします。
メトリクスの設定
- Configure metricsで、CloudWatchメトリクスを有効にするかどうかを選択します。
- メトリクスを有効にすると、WAFの動作状況をモニタリングできます。
- Nextをクリックします。
Web ACLの確認と作成
- 設定内容を確認します。
- Create web ACLをクリックして、Web ACLを作成します。
リソースへの関連付け
- 作成したWeb ACLを、保護したいリソース(CloudFrontディストリビューションまたはALB)に関連付けます。
- Associated AWS resourcesセクションで、関連付けるリソースを選択します。
動作確認
- SQLインジェクションのブロック確認:
- SQLインジェクションを試行し、AWS WAFがリクエストをブロックすることを確認します。
- 例:
https://example.com/login?username=admin&password=password' OR '1'='1
- 通常のリクエストの通過確認:
- 通常のリクエストが通過し、アプリケーションが正常に動作することを確認します。
ログの設定(オプション)
- Logging and metricsセクションで、ログの設定を行います。
- ログをCloudWatch LogsやS3に出力し、後で分析できるようにします。
まとめ
- AWS WAFを使用して、SQLインジェクションを防ぐためのルールを設定。
- マネージドルールグループを活用し、簡単にセキュリティを強化。
- ログとメトリクスを設定し、WAFの動作状況をモニタリング。
コメント