【AWS勉強メモ】WAFを使ってSQLインジェクションから保護する方法
🔰 AWS WAFとは?
AWS WAF(Web Application Firewall)は、Webアプリケーションを様々な攻撃から保護するためのサービスです。主に以下のような攻撃を防ぐ目的で使用されます:
- SQLインジェクション(SQLi)
- クロスサイトスクリプティング(XSS)
- ボット、IP制限、不正なリクエストパターンなど
🎯 今回の目的
SQLインジェクション(SQLi)攻撃からWebアプリケーションを保護する。
🛠️ 例:Web ACLルール構成
| ルール名 | 内容 | アクション |
|----------|------|------------|
| SQLiRule | AWSが提供するマネージドルールセット(`AWSManagedRulesSQLiRuleSet`)を使用してSQLインジェクション攻撃を検出・ブロック | Block |
| XSSRule | XSS対策用に`AWSManagedRulesCommonRuleSet`を適用 | Block |
| BlockIPorGeo | 特定のIPアドレスまたは国(例:KR)からのアクセスをブロック | Block |
| PayloadSizeLimit | リクエストボディが一定サイズ(例:1000バイト)を超える場合にブロック | Block |
🌐 アーキテクチャ構成図(簡易)
[User Request]
↓
[AWS WAF (Web ACL)]
├─ SQLiRule
├─ XSSRule
├─ BlockIPorGeo
└─ PayloadSizeLimit
↓
[ALB / CloudFront / API Gateway]
↓
[Webアプリケーション]
✅ 実装ステップ(概要)
1. WAFコンソールから **Web ACL** を作成
2. ルールとして `AWSManagedRulesSQLiRuleSet` を追加
3. 必要に応じてカスタムルール(IPブロックなど)も追加
4. Web ACLをALBやCloudFrontなどのリソースにアタッチ
🧪 補足:SQLインジェクションの例
https://example.com/item?id=1 OR 1=1
上記のような不正なリクエストがあった場合、WAFが検出してリクエストをブロックしてくれます。
📝 まとめ
- AWS WAFを使えば、SQLインジェクションなどの攻撃を簡単に防止可能。
- AWS Managed Ruleを使うことで、自前で正規表現などを定義しなくてもセキュリティ対策が可能。
- Web ACLの設計次第で、IP制御やサイズ制限など多様なセキュリティポリシーを適用可能。
---
📌 明日は実際にTerraformでAWS WAFを構築してみる予定です。