web-dev-qa-db-ja.com

IIS 7.5Windows認証が外部で機能しない

作成したasp.netWebサイトに接続しようとしています。 Windows認証を使用し、認証されていないユーザーへのアクセスを拒否します

web.config:

<authentication mode="Windows" />
<authorization>
    <deny users="?" />
</authorization>

ウェブサイトはDMZにあります。サーバーはドメインに接続されています。内部ネットワークからサイトに接続しようとすると、問題なく動作します。 Authentication Requiredポップアップボックスが表示されたら、資格情報を入力すると、サイトに入ることができます。

外部ネットワークから接続すると動作しません。ブラウザはサイトに接続していますが、ポップアップボックスは表示されません。最終的に私は接続がリセットされましたを取得します

どうやらファイアウォールは私のリクエストを脆弱性と見なし、それをブロックしているようです。このメッセージは、ファイアウォールのネットワークパッケージに含まれています。

401 - Unauthorized: Access is denied due to invalid credentials.

これは、内部の場所からサイトに接続し、[キャンセル]をクリックするか、間違った資格情報を入力したときに発生するエラーと同じです。

私はすでにこれを運がなく試しました:

  • NTLMをプロバイダーの一番上に移動します
  • Kerberos認証を使用する
  • IISのモジュールを確認してください:WindowsAuthenticationとWindowsAuthenticationModuleの両方があります
  • DisableStrictNameCheckingとDisableLoopbackCheckをレジストリに追加する
  • 匿名認証を許可する(IISレベル)
  • 基本認証を許可する(IISレベル)
  • Windows認証(web.config内)を持つすべてのユーザーを許可する:基本的に認証ノードを削除します。これは匿名を使用し、機能します。サイトにアクセスすることはできますが、ユーザーは認証されておらず、個人レポートも表示されません(使用できないため)
  • アプリケーションプールユーザーを変更する
  • Arpフォルダーへのアクセス権をIUSRに付与する

サイトにアクセスしたときに401ステータスが2つあるのはなぜですか?これにより、ファイアウォールがトラフィックをブロックするため、[認証が必要]ポップアップが表示されなくなります。

2
Rubanov

NTLMを使用しているため、401パケットで複数のラウンドトリップが行われます。私たちのファイアウォールはそれをブルートフォース攻撃と見なし、ブロックしました。最終的に、ファイアウォールを構成し、ファイアウォールが脆弱性と見なす前に数個の401パケットを許可することで、これを修正しました。システムの設定方法では、Kerberosを使用できません。これは401パッケージを1つだけ送信し、ファイアウォールによってブロックされません(元の構成で)

答えは@TristanKのクレジットです。

3
Rubanov