IISを実行しているWebサーバーがあります。情報を追跡するために、共有ブログなどを実行したいと思います。セキュリティ上の問題があるため、その部分はローカルホストからのみ表示できるようにし、ユーザーがリモートで使用する必要があるようにします。
それで、私の質問を繰り返すために、ウェブサイトの一部をローカルホストからのみ表示できるようにすることはできますか?
IIS6では、Webのプロパティを表示して、[ディレクトリセキュリティ]タブをクリックできます。タブの中央にあるボタンをクリックして、IPとドメインの制限を編集します。このタブで、すべてのコンピューターを拒否として設定し、このサイトへのアクセスを許可するIPの例外を追加します。
IIS7でこれを構成する方法がわかりません。見ましたが見つかりませんでした。見つけたらこの回答を編集します。
編集: IIS7の構成
IIS 8
/Windows 2012
でそれをしている人のために
1)Server Manager
で、Manage, Add Roles and Features
、Next、Next(Server Roles
に移動)に移動し、Web Server (IIS)
まで下にスクロールして、その行を展開し、次にWeb Server
を展開し、最後にSecurity
を展開します。 IPおよびドメイン制限がインストールされていることを確認してください。
2)IIS Manager
で、保護するフォルダーにドリルダウンし、左クリックして選択します。そのフォルダのFeatures View
でIPおよびドメイン制限を選択します。Actions
でEdit Feature Settings
を選択します。 'Access for unspecified clients:'
を'Deny'
に変更してから[OK]をクリックします。
3)最後に、Action
sメニューの'Add Allow Entry'
に移動します。サーバーの特定のIPアドレスを入力します。
これで、サーバーからのリクエストのみがアクセスを許可されます。または、そのIPアドレスを共有するサーバー。したがって、小規模なネットワークでは、オフィスはそのオフィス内のすべてのPC間でIPアドレスを共有できるため、それらのPCすべてがそのフォルダーにアクセスできます。
最後になりましたが、ネットワークに動的IPアドレスがある場合、そのIPが変更されると、ブログ管理フォルダーがそのIPを現在使用しているユーザーに公開されることを覚えておいてください。また、その新しいIPアドレスのすべてのユーザーは、そのフォルダーにアクセスできなくなります...
IP制限の代わりにバインディングを使用することもできます。アクセスを制限するWebサイトのバインディングを編集する場合は、そのサイトで使用できるIPアドレスを選択できます。 IPアドレスを127.0.0.1に設定すると、サイトはこのIPアドレスでのみ応答し、このIPアドレスはもちろんマシン上でローカルにのみ機能します。
IIS 8.5を使用してこれをテストしました。
誰かがコマンドラインでこれを実行したい場合、これはIIS 7+
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site" -section:system.webServer/security/ipSecurity /+"[ipAddress='0',allowed='False']" /commit:apphost
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site" -section:system.webServer/security/ipSecurity /+"[ipAddress='127.0.0.1',allowed='True']" /commit:apphost
私は当初、配布を容易にするためにweb.configでこれを実行したかったのですが、次のように機能するようでした。
<security>
<ipSecurity allowUnlisted="false"> <!-- this line blocks everybody, except those listed below -->
<clear/> <!-- removes all upstream restrictions -->
<add ipAddress="127.0.0.1" allowed="true"/> <!-- allow requests from the local machine -->
</ipSecurity>
</security>
ただし、中央のIIS構成で関数のロックを解除する必要があるため、最初のコマンドを使用して直接変更を行うことに勝る利点はありませんでした。
IIS "Directory Security"を使用して127.0.0.1(localhost)を除くすべてのIPアドレスをブロックするという推奨事項に同意します。
そうは言っても、ユーザーにリモートインを要求するというこの戦略が、どのようにしてmore安全になるのだろうかと思います。サーバーマシンでWindowsの役割とアクセス許可を管理するよりも、標準のIIS認証メカニズム)を使用する方が安全(およびはるかに簡単)ではないでしょうか。
https://stackoverflow.com/a/39870955/2279059 で提案されているように、ループバックインターフェイスでのみリッスンするようにサイトのバインディングを構成することができます。これにより、IPアドレスの制限を使用せずに、ネットワークからサイトにアクセスできなくなります。
IPv4とIPv6の両方をサポートするには、127.0.0.1
用と[::1]
用の2つのバインディングを追加し、ホスト名を*
に設定して、IPアドレスまたはlocalhost
のいずれかができるようにします。スクリーンショットに示すように、アクセスに使用します。
プログラムで「ローカル」サイトを追加するには、次を使用できます。
appcmd add site /name:MyLoalSite /bindings:http/127.0.0.1:7103:*,http/[::1]:7103:* /physicalPath:"C:\path\to\site\"
特定のIPからサイトまたはフォルダーへのサイトまたはフォルダーへのアクセスを許可または拒否できます。 IISで、問題のサイトまたはフォルダーのプロパティに移動します。
(1)「DiectorySecurity」タブをクリックします
(2)「IPアドレスとドメイン名の制限」フレームの下にある「編集」をクリックします。
(3)[アクセスの拒否]をクリックします(これにより、IISは、リストしたものを除くすべてのIPをブロックするように指示されます)
(4)「追加...」をクリックします
(5)「シングルコンピュータ」をクリックします
(6)127.0.0.1(localhostのIP)を入力します
ドメインはhostsファイルを使用して簡単に偽造できるため、ここではドメイン名ではなくIPを使用するのが最善であることに注意してください(説明しました)。
許可されていないユーザーがアクセスしようとした場合に何をしたいかによって異なります。
特定のセクションを仮想ディレクトリとして設定してから、匿名ユーザーへの表示を拒否することができます。ただし、ログインを求めるプロンプトが表示され、ログインできる場合は表示されます。
IIS MMCにあるオプションから判断すると、特定のIP範囲でのみアクセスできる仮想ディレクトリを作成することもできます。127.0.0.1以外のすべてのユーザーをブロックできます。これは試していません。しかしながら。