WebSurfer's Home

Filter by APML

IIS での IP アドレスによるアクセス制限

by WebSurfer 3. June 2025 10:17

自分のブログに良からぬことをする輩がいるので IP アドレスでアクセス制限をかけました。以下にどのように設定したかを備忘録として書いておきます。

IIS Manager が使える場合は、Microsoft のドキュメント「IP セキュリティ <ipSecurity>」および「IP セキュリティの追加 <add>」に従って設定すればよさそうです。

しかしながら、自分が使っているホスティングサービスでは IIS Manager は利用できず、ホスティングサービスが用意しているコントロールパネル上では GUI による操作ができません。なので、直接 web.config を編集してアクセス制限のための ipSecurity 要素を書き加えなければなりません。

自分の開発マシンは Windows 10 Pro 64-bit ですので IIS 10 と IIS Manager が使えます。それを使って GUI でアクセス制限のための ipSecurity 要素を作成できます。それを運用環境の web.config にコピーすればよさそうです。

注意:
自分の環境では ApplicationHost.config に <section name="ipSecurity" overrideModeDefault="Deny" /> という制約があって、下位のサイト/アプリケーションの web.config には ipSecurity 要素を設定できません。なので、自分の環境では 以下の IIS Manager を使っての操作では ipSecurity 要素は ApplicationHost.config に追加されます。ホスティングサービスの ApplicationHost.config にはそのような制約はなく、作成した ipSecurity 要素はサイト/アプリケーションの web.config にコピーできます。

デフォルトでは IIS 10 には IP セキュリティの機能は含まれません。機能を追加するには、 Windows 10 PC の場合、下の画像のように「Windows の機能の有効化または無効化」のダイアログで [IP セキュリティ] にチェックを入れて機能を有効化します。(Windows Server では [役割と機能の追加] で [IP and Domain Restriction] にチェックを入れて有効化します)

IP セキュリティの機能を追加

IP セキュリティの機能を追加すると、IIS Manager 上に「IP アドレスおよびドメインの制限」という機能が表示されるようになります。下の画像がそれです。

IP アドレスおよびドメインの制限

ローカルの適当なサイトまたはアプリケーションを選び「IP アドレスおよびドメインの制限」機能を開いて作業を行います。上の画像の例では、Default Web Site 下の MvcApp という名前のアプリケーションを選んでいます。そのアプリケーション用の ipSecurity 要素を追加します。

「IP アドレスおよびドメインの制限」のアイコンをダブルクリックして機能を開き、IIS Manager 上の「操作」ウィンドウの [拒否エントリの追加...] をクリックすると下のダイアログが表示されます。問題の IP アドレスは 185.208.8.76 でしたが、今回は 185.208.8.0 から 185.208.8.255 までの帯域をアクセス制限します。

拒否の制限規則の追加

[OK] ボタンをクリックすると下の画面が表示されるので、上の操作で追加した規則を選んで「操作」ウィンドウの [機能設定の編集...] をクリックします。

機能設定の編集

下の画像の「IP およびドメインの制限の編集」ダイアログが表示されますので、画像のように設定し [OK] ボタンをクリックします。

IP およびドメインの制限の編集

上の画像で[特定できないクライアントのアクセス(A):]は[許可](デフォルト) にします。[拒否]にすると制限した IP アドレス以外も拒否されてしまいます。

[拒否アクションの種類(D):]はドロップダウンの 4 項目の中から選べます。今回は[検出されていません](HTTP 404 Not Found 応答を返す) を選びました。

その他の項目についての説明は Microsoft のドキュメント「IIS 8.0 動的 IP アドレス制限」を見てください。

[OK] ボタンをクリックするとルールが作成され、ApplicationHost.config に以下の通り ipSecurity 要素が追加されているはずなので確認してください。(未検証ですが、ApplicationHost.config で ipSecurity の overrideModeDefault が Allow となっていれば当該サイト/アプリケーションの web.config に追加されると思われます)

<location path="Default Web Site/MvcApp">
  <system.webServer>
    <security>
      <ipSecurity denyAction="NotFound">
        <add ipAddress="185.208.8.0" 
             subnetMask="255.255.255.0" 
             allowed="false" />
      </ipSecurity>
    </security>
  </system.webServer>
</location>

上の ipSecurity 要素を web.config にコピーしました。その作業を行ったのが 2025/5/20 です。それ以来、この記事を書いた今日まで 2 週間は問題のアクセスはないです・・・が、アクセス制限の効果があったのか、問題の輩がアクセスをやめただけなのかは分かりません。前者に期待したいですが。(笑)

Tags: , ,

Windows Server

About this blog

2010年5月にこのブログを立ち上げました。主に ASP.NET Web アプリ関係の記事です。ブログ2はそれ以外の日々の出来事などのトピックスになっています。

Calendar

<<  June 2025  >>
MoTuWeThFrSaSu
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

View posts in large calendar