Azure WebサイトでソースIPアドレスによるアクセス許可/拒否(制限)を設定するTech TIPS

セキュリティ上の都合などから、あるWebページの閲覧を特定のアクセス元(ソースIPアドレス)だけに制限したいことがしばしばある。これをMicrosoft Azure Webサイトで実現するには?

» 2014年06月20日 14時37分 公開
[島田広道デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象サービス:Microsoft Azure Webサイト



解説

 Webサイトを構築・運用していると、あるWebページの閲覧を特定のアクセス元だけに許可して、その他は禁止する、というように制限したいことがある。例えばコンテンツ管理に関わるページはよく脆弱性を狙う攻撃に晒されやすいので、一般に広く公開せず、管理拠点からのアクセスだけに限定したいところだ。この場合、特定のソースIPアドレスからのアクセスだけ許可して、その他のIPアドレスからのアクセスを拒否することになる。

 Apache Webサーバーであれば、こうした制限は「httpd.conf」や「.htaccess」という設定ファイルに記述することで実現できる(関連記事)。では、Microsoft AzureのWebサイトではどのように設定すればよいのだろうか?

Microsoft Azure WebサイトでIPアドレスの制限を設定する Microsoft Azure WebサイトでIPアドレスの制限を設定する
これは/adminフォルダー(とその中のWebページ)に対して、特定のIPアドレス枠からのアクセスのみ許可し、その他は拒否するという例。Azure Webサイトでは「web.config」という設定ファイルを利用して、こうした制限を実現できる。

操作方法

●制限したいフォルダーにweb.configファイルを設定・保存する

 Microsoft Azure WebサイトでソースIPアドレスによるアクセス制限をするには、対象のWebページを含むフォルダーに、「web.config」というテキストベースの設定ファイルを保存する必要がある(この設定方法はもともとWindows ServerのIIS 7.0から実装されている)。例えば「/admin」というフォルダーへのアクセスを制限したい場合は、次のようなXML形式のテキストをUTF-8コードでweb.configファイルに記述し、/adminフォルダーに配置する(具体的な記述内容については、すぐ後で説明する)。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
       <system.webServer>
              <security>
                     <ipSecurity allowUnlisted="false" denyAction="NotFound">
                            <add allowed="true" ipAddress="192.168.0.101" />
                            <add allowed="true" ipAddress="172.16.0.0" subnetMask="255.255.255.240" />
                     </ipSecurity>
              </security>
       </system.webServer>
</configuration>



 すでにweb.configファイルが存在する場合は、その「<system.webServer>」の「<security>」セクション内に、上記の「<ipSecurity>〜</ipSecurity>」を追加挿入すること。

 すると/adminフォルダーとその中のファイルはもちろん、/admin以下のサブフォルダーにも、このweb.configに記述した制限が適用される。

●特定のIPアドレスからのアクセスのみ許可し、他は拒否する

 Azure Webサイトはデフォルトでは、どのIPアドレスからでもアクセスを許可している(制限していない)。これを、原則はアクセスを拒否し、例外として特定のIPアドレスだけ許可するように変更するには、次のように「<ipSecurity>〜</ipSecurity>」を記述する。ここでは「192.168.0.101」と「172.16.0.0〜172.16.0.15」からのアクセスのみ許可している。

<ipSecurity allowUnlisted="false">
       <add allowed="true" ipAddress="192.168.0.101" />
       <add allowed="true" ipAddress="172.16.0.0" subnetMask="255.255.255.240" />
</ipSecurity>



●特定のIPアドレスからのアクセスのみ拒否し、他は許可する

 上記とは逆に、原則はアクセスを許可し、例外として特定のIPアドレスだけ拒否するように変更するには、次のように「<ipSecurity>〜</ipSecurity>」を記述する。ここでは「10.1.1.0〜10.1.1.255」からのアクセスを拒否し、その他は許可している。

<ipSecurity allowUnlisted="true">
       <add allowed="false" ipAddress="10.1.1.0" subnetMask="255.255.255.0" />
</ipSecurity>



●アクセス拒否時に返されるステータスコードを変更する

 アクセスを許可していないソースIPアドレスからアクセスされたとき、デフォルトではHTTPステータスコードとして「403 Forbidden」がクライアントに返される。このステータスコードを変更するには、「<ipSecurity>」にdenyAction属性を設定する。例えば「404 Not Found」を返すには、次のように記述する

<ipSecurity denyAction="NotFound">



ステータスコード denyAction属性の設定
401 Unauthorized denyAction="Unauthorized"
403 Forbidden denyAction="Forbidden"
404 Not Found denyAction="NotFound"
502 Bad Gatewayなど(応答中止) denyAction="AbortRequest"
アクセス拒否時に返されるステータスコードの指定
<ipSecurity>にdenyAction属性を指定することで、デフォルトの「403 Forbidden」以外のステータスコードを返すように変更できる。

●親フォルダーとは異なるIPアドレス制限をサブフォルダーに設定する

 前述のようにweb.configに記述したIPアドレス制限の設定は、それを配置したフォルダーのサブフォルダーにも適用される。その場合、特定のサブフォルダーでIPアドレス制限の設定を変更するには、そこにもweb.configファイルを配置する。

 例えば/adminフォルダーに次の「<ipSecurity>〜</ipSecurity>」を含むweb.configを保存し、「192.168.0.101」と「172.16.0.0〜172.16.0.15」からのアクセスのみ許可したとする。

<ipSecurity allowUnlisted="false">
       <add allowed="true" ipAddress="192.168.0.101" />
       <add allowed="true" ipAddress="172.16.0.0" subnetMask="255.255.255.240" />
</ipSecurity>



 ここで「/admin/blogadmin」というフォルダーに対し、「172.16.0.0〜172.16.0.15」からのアクセスを禁止して、代わりに「10.1.1.0〜10.1.1.255」を許可するには、次の「<ipSecurity>〜</ipSecurity>」を含むweb.configを/admin/blogadminフォルダーに保存すればよい。

<ipSecurity allowUnlisted="false">
       <remove ipAddress="172.16.0.0" subnetMask="255.255.255.240" />
       <add allowed="true" ipAddress="10.1.1.0" subnetMask="255.255.255.0" />
</ipSecurity>



 このように、サブフォルダー側で適用したくないIPアドレス制限は、「<remove 〜 />」を用いることで削除できる。

 もし親フォルダーによるIPアドレス制限が全て不要なら、次のように「<clear/>」を指定する。

<ipSecurity allowUnlisted="true">
       <clear/>
</ipSecurity>



 この場合、上記を含むweb.configを配置したサブフォルダーは、その親フォルダーでのIPアドレス制限に関係なく、全てのIPアドレスからアクセスできる。

 また、「<clear/>」の直後に「<add 〜 />」を書き連ねていくことで、親フォルダーでのIPアドレス制限をキャンセルしつつ、独自の制限を加えることも可能だ。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。