『チュートリアル: 一般的な攻撃に対する保護のための AWS WAF の迅速な設定』をやってみた

2019.07.22

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

概要

大阪オフィスのちゃだいんです。

今回は手を動かして実際に学ぶために、公式ドキュメントのチュートリアルをやってみました。

内容は以下の通りです。

チュートリアル: 一般的な攻撃に対する保護のための AWS WAF の迅速な設定 - AWS WAF

このチュートリアルでは、以下の一般的な攻撃に対して保護するように、AWS CloudFormation を使用して、AWS WAF を迅速に設定する方法を示しています。

  • クロスサイトスクリプティング攻撃 – 攻撃者は、ウェブアプリケーションの脆弱性を悪用するために、スクリプトをウェブリクエストに挿入することがあります。クロスサイトスクリプティング一致条件では、AWS WAF によって悪意のあるスクリプトが検査されるウェブリクエストの部分 (URI やクエリ文字列など) を識別します。

  • SQLインジェクション攻撃 – 攻撃者は、データベースからデータを抽出するために、ウェブリクエストに悪意のある SQL コードを挿入することがあります。SQL インジェクション一致条件では、AWS WAF によって悪意のある SQL コードが検査されるウェブリクエストの部分を識別します。

  • 既知の不正なIPアドレスからの攻撃 - IP一致条件を使用して、ウェブリクエストをその発生元の IP アドレスに基づいて、許可、ブロック、またはカウントできます。IP 一致条件では、特定の IP アドレスまたは IP アドレス範囲を 1,000 個まで指定できます。

引用元:上記公式ドキュメントより

CloudFrontで配信しているウェブサイトがあれば、手っ取り早くCloudFormationを使って、一般的な攻撃の保護を有効にできます。

前提条件

実際にWAFを関連付けるCloudFrontディストリビューションと、オリジンサイトが構築済みの状態で行います。

こちらの準備がまだの方は以下の記事などを参考に、CloudFrontとオリジンサイトを構築してみてください。

CloudFrontを使用してS3静的ウェブサイトを提供する手順

実際にやってみた

1.AWS WAFの設定を、CloudFormationで一撃で作る

  • マネジメントコンソールにてCloudFormationの画面を開きます。

  • 以下のリンクにCloudFormaitonテンプレートが保存されています。

https://s3.amazonaws.com/cloudformation-examples/community/common-attacks.json​

  • CloudFormaitonスタックを作成し、このS3にあるテンプレートを使用します。

  • スタックの名前はデフォルトのCommonAttackProtectionを使用し、スタックを作成します。

  • 数分後、スタックが作成されました。

2.ウェブACLをCloudFrontディストリビューションに関連づける

  • AWS WAFの画面を開きます。

  • ナビゲーションペインのWeb ACLsを開くとCommonAttackProtectionができていました。

  • RulesタブのAWS resources using this web ACLで、Add associationを選択します。

  • ここで関連づけたいCloudFrontディストリビューションを選び、決定します。

  • Web Aclsをディストリビューションに関連づけられました。

  • CloudFrontの画面を開きます。

  • 反映に数分かかりますが、対象のディストリビューションを開くと、無事反映されてました。

3.(オプション) IP 一致条件に IP アドレスを追加する

AWS CloudFormation スタックを作成したとき、AWS CloudFormation によって IP 一致条件が作成され、ルールに追加され、ルールがウェブ ACL に追加されました。また、IP アドレスに基づいてリクエストをブロックするように、ウェブ ACL が設定されました。ただし、IP 一致条件に IP アドレスは含まれていません。IP アドレスに基づいてリクエストをブロックする場合は、以下の手順を実行します。

引用元:上記公式ドキュメントより

  • 再度、AWS WAFの画面を開き、IP adressesのページにて、Add IP adresses or rangesを押します。

  • 現在の拠点IPアドレスを登録します。

  • ブロックしたいIPアドレスの登録が完了しました。

  • では、実際にブラウザにてURLを入力してみると、ちゃんとブロックされました。

  • ちなみに、上記IPの設定を削除し、再度アクセスするとページは表示されました。

    (ほぼ即時反映でした)

感想

AWS WAFの設定はCloudFormationで一発だったので、簡単に反映ができました。

防御の検証としては、IPアドレスのブロックのみですが、ブロックされることが確認できました。

「CloudFrontで配信してるけど、WAFまだ何もやってないよ!」という方は、ほんの30分程度で反映できるのでぜひ一度お試しください。

それではまた。大阪オフィスのちゃだいんでした。