IIS8のIIS_IUSRSおよびIUSR権限


146

ASP.NETアプリケーションをホストするために、Win2003のIIS6からWin2012のIIS8に移動しました。

アプリケーションの特定のフォルダ内で、ファイルを作成および削除する必要があります。新しいサーバーにファイルをコピーした後、ファイルを削除しようとすると、次のエラーが何度も表示されます。

パス「D:\ WebSites \ myapp.co.uk \ companydata \ filename.pdf」へのアクセスが拒否されました。

IISを確認すると、アプリケーションがDefaultAppPoolアカウントで実行されていることがわかりますが、IIS AppPool \ DefaultAppPoolを含めるようにこのフォルダのWindows権限を設定したことはありません

代わりに、叫び声を上げるのをやめるために、フォルダに次のアクセス許可を与えました。

IUSR

  • 読み取りと実行
  • フォルダの内容の一覧表示
  • 読んだ
  • 書く

IIS_IUSRS

  • 修正
  • 読み取りと実行
  • フォルダの内容の一覧表示
  • 読んだ
  • 書く

これはうまくいったようですが、あまりにも多くの特権が設定されているのではないかと心配しています。ここで、IUSRが実際に必要かどうかについて、矛盾する情報をオンラインで読みました。誰でも、このフォルダでドキュメントを作成および削除するのに十分なユーザー/権限を明確にできますか?また、IUSRはIIS_IUSRSグループの一部ですか?

更新と解決策

以下の私の答えをください。最近のいくつかの提案がよく考えられておらず、安全でもないため(IMO)、私は悲しいことにこれを行わなければなりませんでした。


GETワードプレスAzureの仮想マシン(WindowsのServer 2012のデータセンター)にIIS 8で作業に私はあなたがのinetpub / wwwrootにでブログのディレクトリのIUSRにIIS_IUSRSのためにリストされている権限を付与するために必要な
dumbledad

IISでJoomlaを実行しようとしていて、ファイルのセキュリティ設定に問題があるためにこのスレッドにアクセスした人のために、適切な解決策であると私が思うブログ記事を書きました。おそらくWordPressまたは他のPHPベースのWebサーバープログラムにも適用できます。renniestechblog.com/index.php/information/...
RenniePet


ユーザーグループIIS_IUSRSのフォルダーに対する完全なアクセス許可を追加した後、正常に動作する
Thulasiram

@Thulasiramただし、すべてのIISユーザーに完全な権限を付与しました。ハッカーの観点から考えてみてください。1つの脆弱なサイトと残りのすべてを完全に制御
EvilDr

回答:


146

私は自分の回答を投稿するのが嫌いですが、最近、いくつかの回答が私が自分の質問に投稿した解決策を無視しており、無茶苦茶に他ならないアプローチを示唆しています。

つまり、Windowsユーザーアカウントの権限を編集する必要はまったくありません。そうすることはリスクをもたらすだけです。プロセスは、継承された特権を使用してIISで完全に管理されます。

正しいユーザーアカウントへの変更/書き込み権限の適用

  1. [サイト]リストに表示されたドメインを右クリックし、[ 権限の編集]を選択します

    ここに画像の説明を入力してください

    下にセキュリティ ]タブ、次のように表示されますMACHINE_NAME\IIS_IUSRS表示されます。これは、IISがディレクトリに対する読み取り専用のアクセス許可を自動的に持つことを意味します(サイトでASP.Netを実行するなど)。 このエントリを編集する必要はありません

    ここに画像の説明を入力してください

  2. [ 編集 ]ボタンをクリックし、[ 追加... ]をクリックします

  3. テキストボックスに「」と入力し、ドメイン名またはサイトにアクセスしているアプリケーションプールIIS AppPool\MyApplicationPoolNameに置き換えMyApplicationPoolNameます。例:IIS AppPool\mydomain.com

    ここに画像の説明を入力してください

  4. 名前確認ボタンを押します。入力したテキストが変形します(下線に注意してください)。

    ここに画像の説明を入力してください

  5. OKを押してユーザーを追加します

  6. 新しいユーザー(ドメイン)を選択すると、変更または書き込み権限を安全に提供できるようになります

    ここに画像の説明を入力してください


2
これは、IIS 8.5サーバーでは機能しませんでした。IUSR作品を追加しています。追加IIS AppPool\Cache(私のアプリケーションプールの名前を)利回りHTTP Error 401.3 - Unauthorized
チャールズ・バーンズ

14
@CharlesBurns同じ問題があり、これが私の根本的な原因であることがわかりました:techras.wordpress.com/2016/03/09/…(匿名認証は、アプリケーションプールIDではなくIUSRを使用するように設定されています)
Jon

2
私は仮想ディレクトリとしてのみ使用されるフォルダーを持っていて、別のドメインアカウントとそれを共有する(それが指すWindowsフォルダー)まで問題なく動作したため、イントラネット経由でファイルを表示できました。これを行ったとき、仮想ディレクトリ内のファイルが突然到達できなくなりました。私は両方を追加するためになってしまったMyComputerName\IIS_IUSRSIUSR、それが再び機能するために読み取り専用の権限を持ちます。これは仮想ディレクトリ(.netアプリではありません)向けですが、誰かが便利だと思うかもしれません。
MikeTeeVee 2017

13
注:ユーザーを検索し、コンピューターがドメインのメンバーである場合、IIS AppPool \ MyApplicationPoolNameが見つからない場合があります。私の場合、[場所]ボタンをクリックして、場所をローカルコンピューターに変更する必要がありました。
statler

3
私のテストでは、ここで使用する特別なユーザーの名前はドメイン名とは関係ありません。IISでサイトに割り当てられているアプリケーションプールの名前です。このアプリケーションプールには、Webサイトのドメインと一致する名前がある場合とない場合があります。したがって、パターンは次のとおり IIS AppPool\[APPLICATION POOL NAME]です。アプリケーションプール名の空白は受け入れられます。このユーザーは、名前検索のオブジェクトタイプとして[組み込みのセキュリティプリンシパル]がオンになっている場合にのみ表示されることにも注意してください([ユーザーまたはグループの選択]ダイアログの上部のフィールド)。
Jpsy

49

IUSRはIIS_IUSERグループの一部です。したがって、心配することなくIUSRのアクセス許可を削除できます。参考文献

ただし、ますます多くのWindowsシステムサービスがNETWORKSERVICEとして実行されるようになり、時間の経過とともに問題が発生しました。これは、NETWORKSERVICEとして実行されているサービスが、同じIDで実行されている他のサービスを改ざんできるためです。IISワーカープロセスは既定でサードパーティコード(クラシックASP、ASP.NET、PHPコード)を実行するため、IISワーカープロセスを他のWindowsシステムサービスから分離し、一意のIDでIISワーカープロセスを実行するときがきました。Windowsオペレーティングシステムには、IISがアプリケーションプールごとに一意のIDを作成できる「仮想アカウント」と呼ばれる機能が用意されています。DefaultAppPoolは、作成するすべてのアプリケーションプールに割り当てられるデフォルトのプールです。

より安全にするために、IIS DefaultAppPool IdentityをApplicationPoolIdentityに変更できます。

許可に関して、作成と削除は与えられるすべての権利を要約します。したがって、IIS_USERSグループに割り当てたものは何でも必要です。それ以上でもそれ以下でもありません。

お役に立てれば。


3
Server Essentials 2012 R2にIIS 8をインストールしました。このマシンはドメインコントローラでもあります。ADユーザーとコンピューターでは、IIS_IUSRSグループは空で、IUSRユーザーは含まれていません。グループに追加できると思いますが、匿名サイトの場合は、IUSRユーザーにアクセス許可を付与するだけです。
Mark Berry、

7
IUSRのアクセス許可を与えたとき、それは機能しました。IIS_IUSERにアクセス許可を与えたところ、機能しませんでした。
ihebiheb 2014年

IusrはIIS_Iusrsのメンバーではありません。(またはウィンドウにバグがあります)通常、WindowsはIIS_Iusrsを使用します。(動的ページの実行または静的ページへのアクセス)しかし、WindowsがIIS_IusrsではなくIusrを使用する場合があります。PHPを使用したファイルのアップロードは、そのケースの1つです。(そして、iis_iusrのみを許可した場合は、特権の例外に遭遇します)M $は、IusrとIIS_Iusrsのパーミッションを許可するための「ベストプラクティス」を与えるべきだと思います...
finejustice

今では、アプリケーションプールグループ(IWGP)に変更されたと思います。私はIWGPに許可を与えました、そしてそれは働きました。
Rohit Arora

6
IUSRはIIS_IUSERの一部です。いいえそうではありません!IUSRは匿名ユーザー、IIS_IUSERはアプリプールユーザーのグループ
giammin

6

IIS_IUSRS権限をサイトフォルダーに追加したとき-jsやcssなどのリソースにアクセスできません(エラー401、禁止)。ただし、IUSRを追加すると、問題がなくなりました。したがって、「心配することなくIUSRの権限を削除することはできません」ということを確認してください。


7
(IIS7 +を使用しIIS AppPool\MyApplicationPoolNameている場合)正しい解決策は私の更新された回答に従って使用することであることを忘れないでください。IUSR(S)をもういじる必要はありません!
EvilDr 14

2
私はあなたの提案を試しましたが、うまくいきません。IUSR(S)を許可から削除し、プール名のみを残しました。リソースにアクセスできなくなりました。IIS 8.5。IUSRを追加したとき-機能しました。
アレクサンダー14

あなたはあなたの状況についてできるだけ多くの情報を添えてあなた自身の質問を投稿する必要があります。
-EvilDr

4

@EvilDr AD環境内にIUSR_ [identifier]アカウントを作成し、特定のアプリケーションプールをそのIUSR_ [identifier]アカウントで実行できます。

「アプリケーションプール」>「詳細設定」>「ID」>「カスタムアカウント」

詳細設定で、Webサイトを「特定のユーザー」ではなく「アプリケーションユーザー(パススルー認証)」に設定します。

次に、そのIUSR_ [identifier]にファイルとフォルダに対する適切なNTFSアクセス許可を付与します。たとえば、companydataで変更します。


おかげで、私はADを使用していません。また、最近のMSのドキュメントによると、IIS 7と8はすでに説明したように機能するように構成されています。問題は、指定されたアカウントの1つが実際に必要かどうか、そしてどのアカウントがビジネスを実行するかということです。
EvilDr 2013

@EvilDr ADを使用していないことを明確にしていただきありがとうございます。IIS_IUSRSはユーザーではなく、グループです。IIS 6.0のIIS_WPGに似ています。IIS_IUSRSとIUSRについては、こちらのリンクをご覧ください。IUSRアカウントのcompanydata *に変更権限を設定し、このユーザーをIIS_IUSRSグループに追加して、そのユーザーアカウントを使用してアプリケーションプールを実行できます。複数のIUSR_accountがある場合は、共有フォルダー(TMPなど)に対するIIS_IUSRSの権限のみを付与する必要があります。
Jan Reilink 2013

1月、私はいつもIUSRがデフォルトでIIS_IUSRSグループの一部であると思っていましたか?IUSRアカウントは組み込みアカウントであるため、これがそうであるかどうかをどのように確認できますか?IIS_USRSの変更をオフにし、代わりにIUSRをオンにする必要があると言っていますか?単一アプリケーションの要件を考えると、実際に違いが出るとは思いませんか?
EvilDr 2013


0

特定のユーザー(アプリケーションユーザーではなく)を使用します。次に、アプリケーションで偽装を有効にします。特定のユーザーとして設定されているアカウントを実行すると、それらの資格情報がそのサーバーのローカルリソースにアクセスするために使用されます(外部リソース用ではありません)。

特定のユーザー設定は、特にローカルリソースにアクセスするためのものです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.