この記事の目次
AWS WAFとは?

- Application Load Balancer(ALB)
- Amazon API GatewayのREST API
- AWS AppSyncのGraphQL API
- Amazon CloudFront
AWS WAFのメリット

素早く簡単に脅威からWwbアプリケーションやAPIを保護できる
AWS WAFでは、AWSやAWS Marketplace販売者が「脅威からWebアプリケーションやAPIを保護するルール」を提供しています。ユーザーは、提供されたルールを素早く簡単にWebアプリケーションやAPIへ設定することが可能です。 また、AWS WAFの設定は数分で反映が完了します。ユーザーが独自にアプリケーション保護のルールを追加できる
AWS WAFでは、ユーザーが独自にアプリケーション保護のルールを追加できます。独自にルールを追加した場合は、条件と条件に一致したときのアクションが設定可能です。 AWS WAFでは、ユーザーがきめ細かくリクエストを制御できるように次の条件を用意しています。- リクエストの送信元IPアドレスやそのIPアドレスの範囲
- リクエストの送信元国
- リクエストの特定箇所と、任意の文字列や正規表現パターンとの比較
- リクエストサイズの上限
- リクエストが悪意あるSQLコードを含むかの検索
- リクエストが悪意あるスクリプトコードを含むかの検索
- 一定期間内のリクエスト数の上限
Webトラフィックを可視化できる
AWS WAFは、AWSが提供するアプリケーションのモニタリングサービス「Amazon CloudWatch(CloudWatch)」と統合されています。 そのため、AWS WAFで検知した特定の攻撃・しきい値の超過をCloudWatchからリアルタイムでモニタリングしたり、アラートを通知したりすることが可能です。AWS WAFの設定手順

【Step1】Web ACLの基本情報を設定する
AWS WAFコンソールからWeb ACLの作成画面を表示し、Web ACLの基本情報を設定します。- AWS WAFコンソールを表示します。
- 左のメニューから「AWS WAF」の下の「Web ACLs」をクリックします。
- 「Create web ACL」ボタンをクリックします。
- Name欄にWeb ACLの名前を入力します。
- 必要に応じて、Description欄にWeb ACLの説明を入力します。
- 必要に応じて、CloudWatch metric name欄にWeb ACL用のメトリクス名をデフォルトから変更します。メトリクス名はWeb ACLを作成した後に変更できないため、ご注意ください。
- Resource type欄には、Web ACLを設定するリソースタイプを選択します。今回、Amazon CloudFrontのWeb ACLを作成するため、「CloudFront distributions」を選択します。
- 必要に応じて、「Add AWS resources」ボタンをクリックして、Web ACLを紐付けるリソースを追加します。
- 入力が完了したら、「Next」ボタンをクリックします。
【Step2】独自のルールを設定する
ここでは、例としてリクエストのユーザーエージェントが「BadBot」の場合、リクエストをカウントする独自のルールを設定します。- Rulesエリアの「Add rules」ボタンをクリックし、「Add my own rules and rule groups」をクリックします。
- RuleエリアのName欄にルールの名前を入力します。
- RuleエリアのType欄で「Regular rule」を選択します。
- If a request欄で「matches the statement」を選択します。
- StatementエリアのInspect欄に「Request components」の下の「Header」を選択します。
- 「Header」を選択すると、Inspect欄の下にHeader field name欄が表示されます。Header field name欄に「User-Agent」を入力します。
- StatementエリアのMatch type欄で「Exactly matches string」を選択します。
- 「Exactly matches string」を選択すると、Match typ欄の下にString to match欄が表示されます。String to match欄に「BadBot」を入力します。
- StatementエリアのText transformation欄は「None」を設定したままにします。
- ActionエリアのAction欄で「Count」を選択し、「Add rule」ボタンをクリックします。
【Step3】マネージドルールグループを追加する
マネージドルールグループは、AWS販売者やAWS Marketplace販売者が無料で提供・管理する「Webアプリケーションを保護する」ルールです。 例として、マネージドルールグループの中から「悪意のあるSQLを含むリクエストが検出できる」ルールを有効にし、悪意のあるSQLを含むリクエストがカウントできるよう設定します。- Rulesエリアの「Add rules」ボタンをクリックし、「Add managed rule groups」をクリックします。
- 「AWS managed rule groups」をクリックします。
- 「SQL database」の行にある「Add to web ACL」を有効にします。
- 「Add to web ACL」を有効にすると、下に「Set rules action to count」が表示されますので、有効にします。「Set rules action to count」を有効にすると、悪意のあるSQLを含むリクエストをブロックせず、カウントします。
- 「Add rules」ボタンをクリックし、「Next」ボタンをクリックします。
【Step4】Web ACLの入力内容を元に作成する
ルールの優先順位やメトリクスを設定し、入力内容を確認した後、Web ACLを作成します。- Rules一覧から追加したルールの優先順位を設定します。順位移動はルールのチェックボックスをチェックし、上に移動する場合は「Move up」、下に移動する場合は「Move down」をクリックすることで可能です。
- 「Next」ボタンをクリックし、Configure metrics画面に遷移します。
- Amazon CloudWatch metricsエリアには、Web ACLに設定したルール、ルールグループのメトリクスが表示されます。メトリクスが不要な場合は、チェックボックスの選択を解除します。また、必要に応じて、メトリクス名を変更します。
- 「Next」ボタンをクリックし、Review and create web ACL画面に遷移します。
- 最後にWeb ACLの入力内容を確認します。入力内容に問題があれば「Edit」ボタンをクリックし、修正します。入力内容に問題がなければ「Create web ACL」ボタンをクリックし、Web ACLを作成します。
AWS WAFを設定してセキュリティを上げよう!

この記事の監修者・著者

-
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞