インフラエンジニアとしてAWS WAFを現場で導入した際、最初は設定の複雑さに戸惑いました。しかしCloudFrontと組み合わせることで、不正トラフィックを約15%削減でき、その分のサーバーコストも抑えられた経験があります。今回はその手順と実践的なポイントを解説します。
WAF(Web Application Firewall)とは
WAFは、ウェブアプリケーションをサイバー攻撃から守るセキュリティの仕組みです。HTTP/HTTPSの通信をリアルタイムで監視し、悪意のあるリクエストをアプリケーションに届く前にブロックします。
主な保護対象は以下の脅威です。
- SQLインジェクション
- クロスサイトスクリプティング(XSS)
- クロスサイトリクエストフォージェリ(CSRF)
AWS WAFはAmazon CloudFrontと連携し、世界中に分散したエッジロケーションでトラフィックをフィルタリングします。攻撃がオリジンサーバーに到達する前に遮断できるのが大きな強みです。
CloudFrontとWAFを連携させるメリット
CloudFrontとWAFを組み合わせると、セキュリティとパフォーマンスを同時に強化できます。現場で実感したメリットは以下の3つです。
- エッジでの脅威防御:SQLインジェクションやXSS、DDoS攻撃をエッジで遮断し、オリジンサーバーへの負荷を大幅に削減できます。
- パフォーマンスの向上:不正トラフィックをブロックすることで、正規ユーザーへのコンテンツ配信が安定・高速化します。
- 柔軟なルール設定:IPアドレスやHTTPヘッダーなど、アプリケーションに合わせた細かいセキュリティルールを設定できます。
AWS WAFの基本設定の流れ
WAFの設定は最初複雑に見えますが、手順を理解すればスムーズに進められます。基本的な流れは以下の通りです。
- Web ACL作成:WAFの本体となるWeb ACL(Web Access Control List)を作成します。
- ルールグループの設定:AWSが提供するマネージドルールやカスタムルールを追加します。
- CloudFrontへの関連付け:作成したWeb ACLを対象のCloudFrontディストリビューションに紐付けます。
- 動作確認と監視:設定後に意図通り動作するか確認し、継続的にルールを調整します。
個人的な経験では、最初にマネージドルールだけで運用を始め、ログを見ながら徐々にカスタムルールを追加していくやり方がトラブルが少なくおすすめです。
WAFルールの設定と適用
WAFルールは大きく3種類あります。
- マネージドルール:AWSが提供するIPレピュテーションリストやOWASP Top 10ルールセットを活用することで、一般的な脅威に素早く対応できます。専門知識がなくても導入しやすいのがメリットです。
- カスタムルール:アプリケーション固有の脆弱性に対応するルールを自分で設定します。特定の国やIPからのアクセス制限、不正なHTTPヘッダーの遮断などが可能です。
- レートベースルール:短時間での大量リクエストを制限し、DDoS攻撃やブルートフォースアタック対策として有効です。
コストとパフォーマンスの最適化
CloudFrontとWAFは利用量課金なので、設定を最適化しないとコストが想定以上に膨らむことがあります。実際に導入初期は過剰なルール設定でレイテンシが増加したことがありました。以下の3点を意識すると改善できます。
- CloudFrontキャッシュのヒット率を最大化する:オリジンへのアクセスを減らすことで転送コストを削減できます。
- WAFルールは必要最小限に絞る:ルールが多すぎると誤検知が増え、正規ユーザーへの影響が出ます。
- 定期的にモニタリングする:コストとパフォーマンスのバランスを継続的に確認することが重要です。
マネージドルールセットの活用
マネージドルールセットを使うと、セキュリティの専門知識がなくても高度な保護を素早く導入できます。代表的なものは以下の通りです。
- AWS Managed Rules for AWS WAF:一般的なWeb脆弱性に対する基本的な保護を提供します。
- Bot Control:悪意のあるボットトラフィックを識別してブロックし、リソースの無駄遣いを防ぎます。
- IP reputation list:既知の脅威アクターからのIPアドレスを自動的にブロックします。
ログ分析とアラート設定
WAFを導入したら、ログの監視体制を整えることが重要です。ログデータはAmazon CloudWatch Logsに集約し、以下の項目を監視しましょう。
- CloudFrontからのエラー率の急増
- 特定IPアドレスからの異常なアクセス集中
- WAFによるブロック数の急増
異常を検知した際はAmazon CloudWatch AlarmsとAmazon SNSを連携させることで、即座に通知を受け取ることができます。現場では「ブロック数が急増したが実は正規ユーザーだった」というケースも経験しており、定期的なルールの見直しが欠かせません。
まとめ
AWS CloudFrontとWAFを組み合わせることで、セキュリティとコスト削減を同時に実現できます。最初は設定が難しく感じるかもしれませんが、マネージドルールから始めてログを見ながら徐々に最適化していくのが現実的なアプローチです。まずは基本設定から試してみてください。