ちょっと話題の記事

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

2017.11.23

はじめに

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への接続をブロックしてみました。 特定拠点以外からの管理用ページへのアクセスを遮断しました。

参考