AWS WAFを使って、特定のURLへの接続をブロックしてみた

はじめに

AWS WAFを使って、特定のURLへの接続をブロックしてみました。
特定拠点以外からの管理用ページへのアクセスを遮断します。

Webサーバーでは、以下のようにコンテンツを配置します。
index.htmlは一般公開し、kanriディレクトリ以下は特定拠点からのみ接続を許可します。

$ tree /var/www/html/
/var/www/html/
├── index.html
└── kanri
    ├── kanri1-2.html
    ├── kanri1.html
    └── kanri2
        └── kanri2.html

AWS 構成

ALBにEC2を登録し、ALBにAWS WAFを登録します

AWS WAFの作成

ウェブ ACL "myWebACL"を作成します。
ルールのデフォルトアクションはAllowにします。
通信がルールに該当しない場合、許可されます。

ウェブ ACLに、ルール"Manage Page Restrictions Rule"を登録します。
URI.*/kanri*に対して、特定IP以外からの接続があった場合にブロックします。

IP一致条件の作成

IP match conditionsを作成します。

条件の名前は、TrustIPAddressとしました。
ALBを配置したリージョンを選択します。
管理拠点など信頼できるIPアドレスを登録します。

文字列と正規表現一致条件の作成

String and regex match conditionsを作成します。

条件の名前は、Manage Page Restrictionsとしました。
TypeはRegex matchにします。
Filter settingsでは、"URI"を"URL decode"し、.*/kanri*の一致を確認するパターンを登録します。

ルールの作成

ルールを作成します。

ルールの名前は、Manage Page Restrictionsとしました。
TrustIPAddressに一致しない(=信頼できない接続元)かつ、Manage Page Restrictionsに一致する(=管理ページのアクセス)に一致するかを確認します。

Web ACLの作成

Web ACLを作成します。

名前はmyWebACLとしました。
ALBのあるリージョンを指定し、Web ACLを割り当てるALBを選択します。

「Step 2: Create conditions」では、条件を作成します。
予め作成したため、Nextを選択します。

「Step 3: Create rules」では、ルールのアクションとデフォルトのアクションを指定します。
ルール"Manage Page Restrictions"に一致する場合、通信をブロックします。
ルールに一致しない場合、許可します。

動作確認

特定拠点から、kanri以下のページに接続すると、ページの内容を確認できます。

特定拠点以外から、kanri以下のページに接続すると、"403 Forbidden"になります。

さいごに

AWS WAFを使って、特定のURLへの接続をブロックしてみました。
特定拠点以外からの管理用ページへのアクセスを遮断しました。

参考