AWS WAFでアクセス制御

2016/01/19 AWS, 技術系 投稿者:千本木

今回は2015年10月にリリースとなったAWS WAFを弄ってみたいと思います。

WAFって何?

WAFとはWeb Application Firewallのことです。

一般的なファイアウォールがIPアドレスやポートに対して制御を行うのに対し、WAFではSQLインジェクション攻撃などの、構築したWEBアプリケーションに対しての攻撃から防御する役割を担っています。

AWS WAFの特徴

AWS WAFは前回紹介したCloudFrontと組み合わせて利用します。逆に言えばCloudFrontが設定されていないとAWS WAFを使用することができません。

AWS WAFで指定できる条件は以下の3つです。

  • IPアドレスが一致した場合の制御
  • 文字列が一致した場合の制御
  • SQLインジェクション対応

また料金の詳細はAWS公式ページをご覧いただきたいのですが、公式ページの料金例では月額26USD(約3,100円)と非常に安価であることがわかります。

実際には上記に加えてCloudFrontの料金も必要になります。

AWS WAFを設定する

では実際にAWS WAFを使ってみましょう。

まずはAWS WAFへアクセスします。

waf01

設定目標

今回は特定のIPアドレスから「test」の文字列が含まれるWebページへのアクセスを遮断できるかを確認したいと思います。

設定の流れ

次画面ではAWS WAFの概要が書かれています。

waf02-1

英語ですが大体以下のような流れが説明されています。

  • 条件(Conditions)を作成
  • ルールを作成(条件を組み合わせ、拒否するのか許可するのか)
  • Web ACLを作成(複数のルールを組み合わせてグループ化する)

この画面で設定する項目はありませんので、右下のNextボタンを押して進みます。

waf02-2

Web ACL名の設定

作成するWeb ACLの名前を設定します。CloudWatch metric nameはCloudWatchを使用してグラフ化する際に必要なメトリックの名前です。

waf03

条件を作成

まずは条件(Conditions)の作成です。

ここではIPアドレス、文字列、SQLインジェクションに対して条件を設定します。

waf05