IIS上のサイトの一部をローカルホストからのみ表示可能にすることは可能ですか?
質問
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 and Domain Restrictions を選択します Actions
で Edit Feature Settings
を選択します。 '未指定クライアントのアクセス:'
を 'Deny'
に変更し、OKをクリックします。
3)最後に、 Action
sメニューの 'Add Allow Entry'
に移動します。サーバーの特定のIPアドレスを入力します。
現在、サーバーからのリクエストのみがアクセスを許可されます。または、そのIPアドレスを共有するサーバー。そのため、小規模なネットワークでは、オフィスはそのオフィス内のすべてのPC間でIPアドレスを共有できるため、それらのすべてのPCはそのフォルダーにアクセスできます。
最後になりましたが、ネットワークに動的IPアドレスがある場合、そのIPが変更されると、そのIPを使用している人にブログ管理フォルダーが公開されることに注意してください。また、その新しいIPアドレスのすべてのユーザーは、そのフォルダーへのアクセスを失います...
誰かがコマンドラインでこれを実行したい場合、これは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構成で機能のロックを解除する必要があるため、最初のコマンドを使用して直接変更するよりも利点はありませんでした。
IP制限の代わりにバインディングを使用することもできます。アクセスを制限したいWebサイトのバインディングを編集する場合、サイトが利用可能なIPアドレスを選択できます。 IPアドレスを127.0.0.1に設定すると、サイトはこのIPアドレスでのみ応答し、このIPアドレスはもちろんマシン上でローカルでのみ機能します。
IIS 8.5を使用してこれをテストしました。
権限のないユーザーがアクセスしようとした場合の正確な動作に依存します。
特定のセクションを仮想ディレクトリとして設定してから、匿名ユーザーの表示を拒否することができます。ただし、ログインが求められ、ログインできる場合は表示されます。
IIS MMCに存在するオプションから判断すると、特定のIP範囲からのみアクセス可能な仮想ディレクトリを持つこともできます。 127.0.0.1を除くすべてのユーザーをブロックできます。ただし、これは試していません。
特定のIPからサイトまたはフォルダーへのサイトまたはフォルダーへのアクセスを許可または拒否できます。 IISで、問題のサイトまたはフォルダーのプロパティに移動します。
(1)&quot; Diectory Security&quot;をクリックします。タブ
(2)[IPアドレスとドメイン名の制限]の下の[編集]をクリックします。フレーム。
(3)[拒否されたアクセス]をクリックします。 (これは、リストしたものを除くすべてのIPをブロックするようIISに指示します)
(4)「追加...」をクリックします
(5)「単一コンピューター」をクリックします
(6)127.0.0.1(localhostのIP)を入力します
ホストファイルを使用してドメインを簡単に偽造できるため、ドメイン名よりもここでIPを使用することをお勧めします(説明したように)。
IISの「ディレクトリセキュリティ」の使用に関する推奨事項に同意します。 127.0.0.1(localhost)を除くすべてのIPアドレスをブロックします。
とはいえ、ユーザーにリモートアクセスを要求するこの戦略は、どのようにより安全になるのでしょうか。サーバーマシンでWindowsのロールとアクセス許可を管理するよりも、標準のIIS認証メカニズムを使用する方がより安全(かつ単純)になりませんか?
この.NETをページの上部に追加するだけです。
string MyWebServerName = currentContext.Request.ServerVariables["SERVER_NAME"];
if ( MyWebServerName == "127.0.0.1" || MyWebServerName == "localhost" )
{
// the user is local
}
else
{
// the user is NOT local
}