🐙

AWS WAFを使って本気でAWSアカウントを守る

2023/12/19に公開

はじめに

この記事はDevOps on AWS大全の一部です。
DevOps on AWS大全の一覧はこちら

この記事ではAWS WAFに関連する内容を超詳細にまとめています。

具体的には以下流れで説明します。

  • AWS WAFとは
  • AWS WAFの仕組み
  • AWS WAFの活用
  • AWS WAFのベストプラクティス

AWSの区分でいう「Level 200:トピックの入門知識を持っていることを前提に、ベストプラクティス、サービス機能を解説するレベル」の内容です。

この記事を読んでほしい人

  • AWS WAFがどういうサービスか説明できるようになりたい人
  • AWS WAFを採用するときのベストプラクティスを説明できるようになりたい人
  • AWS Certified DevOps Engineer Professionalを目指している人

AWS WAFとは

AWS WAFは、Webアプリケーションファイアウォールという意味のサービスです。
Webアプリケーションファイアウォールとは、Webアプリケーションに対する悪意のある攻撃を検知し、防御する仕組みのことで、AWS WAFでは、Webアプリケーションに送られるHTTPリクエストをルールに基づいて検査し、許可するか拒否するかを判断します。

AWS WAFは、AWSのロードバランサーやAPI Gatewayなどのサービスと連携して、Webアプリケーションのセキュリティを向上させます。

なお、WAFはその名の通りL7の防御用でありL3/L4のセキュリティ対策には使えないという点は注意しましょう。

AWS WAFの仕組み

AWS WAFでは、作成したルールをWeb ACL(Web Access Control List)というグループにまとめます。

Web ACLは、Webアプリケーションに適用するセキュリティポリシーとして機能し、ロードバランサーやAPI Gatewayなどのサービスに関連付けることで、そのサービスに対するHTTPリクエストをフィルタリングできます。

AWS WAFでは、以下の要素を組み合わせてルールを作成します。

条件

HTTPリクエストの特定の部分(例えばIPアドレスやヘッダーなど)に対するマッチング条件です。
条件はホワイトリストやブラックリストなどのタイプに分けられます。

アクション

条件にマッチした場合に実行する動作です。アクションは許可(Allow)、拒否(Block)、カウント(Count)の3種類があります。
許可はHTTPリクエストを通過させることを意味し、拒否はHTTPリクエストを拒絶することを意味します。
カウントはHTTPリクエストを通過させるとともに、マッチした回数を記録することを意味します。

優先度

複数のルールが存在する場合に、どのルールから評価するかを決める順序です。
優先度が高いルールほど先に評価されます。

メトリクス

ルールのマッチング回数や処理時間などの統計情報です。
メトリクスはCloudWatchで確認できます。

AWS WAFの活用

アクセスパターン解析

AWS WAFはログをCloudWatchやS3に出力できるため、アクセスパターンの解析に活用することができます。

CloudFrontオリジンのセキュリティ向上

AWS WAFはAWS Secrets Managerと組み合わせることでCloudFrontオリジンのサイトのセキュリティを向上させることができます。

Webアプリケーションのセキュリティ向上

また、AWS WAFでは、以下のような攻撃や脅威からWebアプリケーションを守ることができます。

SQLインジェクション

データベースに対する不正な操作を行う攻撃です。条件にSQL文が含まれるかどうかを判定することで防ぐことができます。

クロスサイトスクリプティング(XSS)

Webページに不正なスクリプトを埋め込む攻撃です。条件にスクリプトタグや特定の文字列が含まれるかどうかを判定することで防ぐことができます。

ボットやスクレイピング

自動化されたプログラムやツールによる不正なアクセスです。条件にIPアドレスやUser-Agentなどの情報が含まれるかどうかを判定することで防ぐことができます。

AWS WAFのベストプラクティス

AWS WAFを効果的に利用するためには、以下のようなベストプラクティスを参考にしてください。

ベストプラクティス 説明
ルールのテスト AWS WAFでは、ルールを作成した後にカウントアクションを適用して、ルールのマッチング回数やメトリクスを確認できます。これにより、ルールの効果や影響をテストすることができます。テストが完了したら、カウントアクションを許可や拒否に変更してください。
ルールの更新 Webアプリケーションや攻撃の状況は常に変化するため、ルールも定期的に見直しや更新が必要です。AWS WAFでは、ルールのマッチング回数やメトリクスをCloudWatchで監視することができます。これにより、ルールの有効性やパフォーマンスを評価することができます。また、AWS WAFでは、AWS Marketplaceから有料や無料のルールセットを購入して利用することができます。これにより、専門的な知識や手間なくルールを更新することができます。
ルールの最適化 AWS WAFでは、ルールの数や条件の数に応じて課金されます。そのため、不要なルールや条件は削除することでコストを削減できます。また、ルールの優先度を適切に設定することで、処理時間を短縮できます。一般的には、マッチング回数が多いかつ重要度が高いルールほど優先度を高く設定すると良いです。

まとめ

この記事ではAWS WAFに関連する内容を超詳細にまとめました。

  • AWS WAFとは
  • AWS WAFの仕組み
  • AWS WAFの活用
  • AWS WAFのベストプラクティス

次回はAWS Firewall Managerを超詳細解説します。

Discussion