Autorisations IIS_IUSRS et IUSR dans IIS8

147

Je viens de passer d'IIS6 sur Win2003 à IIS8 sur Win2012 pour l'hébergement d'applications ASP.NET.

Dans un dossier particulier de mon application, je dois créer et supprimer des fichiers. Après avoir copié les fichiers sur le nouveau serveur, j'ai continué à voir les erreurs suivantes lorsque j'ai essayé de supprimer des fichiers:

L'accès au chemin «D: \ WebSites \ myapp.co.uk \ companydata \ filename.pdf» est refusé.

Lorsque je vérifie IIS, je constate que l'application s'exécute sous le compte DefaultAppPool, cependant, je n'ai jamais configuré les autorisations Windows sur ce dossier pour inclure IIS AppPool \ DefaultAppPool

Au lieu de cela, pour arrêter de crier les clients, j'ai accordé les autorisations suivantes sur le dossier:

IUSR

  • Lire et exécuter
  • Liste du contenu du dossier
  • Lis
  • Écrire

IIS_IUSRS

  • Modifier
  • Lire et exécuter
  • Liste du contenu du dossier
  • Lis
  • Écrire

Cela semble avoir fonctionné, mais je crains que trop de privilèges aient été définis. J'ai lu des informations contradictoires en ligne pour savoir si l' IUSR est réellement nécessaire ici. Quelqu'un peut-il préciser quels utilisateurs / autorisations suffiraient pour créer et supprimer des documents sur ce dossier s'il vous plaît? En outre, IUSR fait-il partie du groupe IIS_IUSRS?

Mise à jour et solution

Veuillez voir ma réponse ci-dessous . J'ai malheureusement dû le faire car certaines suggestions récentes n'étaient pas bien pensées, ni même sûres (IMO).

MalDr
la source
Pour faire fonctionner WordPress sur IIS 8 sur une machine virtuelle Azure (Windows Server 2012 Datacenter), je devais accorder les autorisations que vous avez répertoriées pour IIS_IUSRS à IUSR pour le répertoire du blog dans inetpub / wwwroot
dumbledad
Pour ceux qui viennent sur ce fil parce qu'ils essaient d'exécuter Joomla sous IIS et ont des problèmes avec les paramètres de sécurité des fichiers, j'ai écrit un article de blog avec ce que je pense être la solution appropriée. Probablement également applicable à WordPress ou à d'autres programmes de serveur Web basés sur PHP. renniestechblog.com/index.php/information/…
RenniePet
Double
KyleMit
Fonctionne correctement après l'ajout d'une autorisation complète pour le dossier du groupe d'utilisateurs IIS_IUSRS.
Thulasiram
@Thulasiram mais vous avez ensuite accordé tous les privilèges à tous les utilisateurs IIS. Pensez-y du point de vue d'un pirate informatique. Un site faible et ils prennent le contrôle total de tout le reste
EvilDr

Réponses:

146

Je déteste publier ma propre réponse, mais certaines réponses ont récemment ignoré la solution que j'ai publiée dans ma propre question, suggérant des approches qui sont tout simplement imprudentes.

En bref, vous n'avez pas du tout besoin de modifier les privilèges de compte d'utilisateur Windows . Cela ne fait qu'introduire un risque. Le processus est entièrement géré dans IIS à l'aide de privilèges hérités.

Application des autorisations de modification / écriture au compte d'utilisateur correct

  1. Cliquez avec le bouton droit sur le domaine lorsqu'il apparaît sous la liste des sites et choisissez Modifier les autorisations

    entrez la description de l'image ici

    Sous l' onglet Sécurité , vous verrez MACHINE_NAME\IIS_IUSRSest répertorié. Cela signifie qu'IIS dispose automatiquement d'une autorisation en lecture seule sur l'annuaire (par exemple pour exécuter ASP.Net sur le site). Vous n'avez pas besoin de modifier cette entrée .

    entrez la description de l'image ici

  2. Cliquez sur le bouton Modifier , puis sur Ajouter ...

  3. Dans la zone de texte, tapez IIS AppPool\MyApplicationPoolName, en le remplaçant MyApplicationPoolNamepar votre nom de domaine ou tout autre pool d'applications accédant à votre site, par exempleIIS AppPool\mydomain.com

    entrez la description de l'image ici

  4. Appuyez sur le bouton Vérifier les noms . Le texte que vous avez tapé se transformera (notez le soulignement):

    entrez la description de l'image ici

  5. Appuyez sur OK pour ajouter l'utilisateur

  6. Avec le nouvel utilisateur (votre domaine) sélectionné, vous pouvez désormais fournir en toute sécurité les autorisations de modification ou d' écriture

    entrez la description de l'image ici

MalDr
la source
2
Cela n'a pas fonctionné sur mon serveur IIS 8.5. Ajout d' IUSRœuvres. L'ajout de IIS AppPool\Cache(le nom de mon pool d'applications) donneHTTP Error 401.3 - Unauthorized
Charles Burns
14
@CharlesBurns J'ai eu le même problème, j'ai trouvé que c'était ma cause principale: techras.wordpress.com/2016/03/09/… (l' authentification anonyme a été définie pour utiliser IUSR au lieu de l'identité du pool d'applications)
Jon
2
J'avais un dossier utilisé uniquement comme répertoire virtuel et cela fonctionnait bien jusqu'à ce que je le partage (le dossier Windows vers lequel il pointait) avec un autre compte de domaine, afin qu'il puisse afficher les fichiers sur notre intranet. Lorsque j'ai fait cela, les fichiers du répertoire virtuel sont soudainement devenus inaccessibles. J'ai fini par devoir ajouter les deux MyComputerName\IIS_IUSRSet IUSRavec des autorisations en lecture seule pour que cela fonctionne à nouveau. Ceci est juste pour les répertoires virtuels (pas les applications .net), mais pensez que quelqu'un peut le trouver utile.
MikeTeeVee
13
Juste une remarque: lorsque vous recherchez l'utilisateur et que l'ordinateur est membre d'un domaine, IIS AppPool \ MyApplicationPoolName peut ne pas être trouvé. Dans mon cas, je devais cliquer sur le bouton Emplacements et changer l'emplacement sur l'ordinateur local.
statler
3
Dans mes tests, le nom de l'utilisateur spécial à utiliser ici n'a rien à voir avec un nom de domaine. Il s'agit du nom du pool d'applications attribué au site dans IIS. Ce pool d'applications peut ou non avoir un nom qui correspond au domaine de votre site Web. Ainsi , le modèle est: IIS AppPool\[APPLICATION POOL NAME]. Les espaces vides dans le nom du pool d'applications sont acceptés. Veuillez également noter que cet utilisateur ne sera trouvé que si "Principes de sécurité intégrés" est coché comme type d'objet pour la recherche de nom (champ supérieur de la boîte de dialogue "Sélectionner des utilisateurs ou des groupes").
Jpsy
50

IUSR fait partie du groupe IIS_IUSER, donc je suppose que vous pouvez supprimer les autorisations pour IUSR sans vous inquiéter. Lectures complémentaires

Cependant, un problème est survenu au fil du temps car de plus en plus de services système Windows ont commencé à s'exécuter en tant que NETWORKSERVICE. Cela est dû au fait que les services exécutés en tant que NETWORKSERVICE peuvent altérer d'autres services exécutés sous la même identité. Étant donné que les processus de travail IIS exécutent par défaut du code tiers (ASP classique, ASP.NET, code PHP), il était temps d'isoler les processus de travail IIS des autres services système Windows et d'exécuter les processus de travail IIS sous des identités uniques. Le système d'exploitation Windows fournit une fonctionnalité appelée «Comptes virtuels» qui permet à IIS de créer des identités uniques pour chacun de ses pools d'applications. DefaultAppPool est le pool par défaut affecté à tous les pools d'applications que vous créez.

Pour le rendre plus sécurisé, vous pouvez modifier l'identité IIS DefaultAppPool en ApplicationPoolIdentity.

Concernant les autorisations, Créer et Supprimer résume tous les droits qui peuvent être accordés. Donc, tout ce que vous avez attribué au groupe IIS_USERS est qu'ils en auront besoin. Ni plus ni moins.

J'espère que cela t'aides.

Travis G
la source
3
Je viens d'installer IIS 8 sous Server Essentials 2012 R2. Cette machine est également un contrôleur de domaine. Dans Utilisateurs et ordinateurs AD, le groupe IIS_IUSRS est vide - il ne contient pas l'utilisateur IUSR. Je suppose que je pourrais l'ajouter au groupe, mais pour les sites anonymes, je vais simplement accorder des autorisations à l'utilisateur IUSR.
Mark Berry
7
Lorsque j'ai accordé des autorisations pour l'IUSR, cela a fonctionné. Lorsque j'ai accordé des autorisations à IIS_IUSER, cela ne fonctionnait pas.
ihebiheb
Iusr n'est pas membre de IIS_Iusrs. (ou Windows a un bogue) En général, Windows utilise IIS_Iusrs. (exécution de pages dynamiques ou accès à des pages statiques) mais dans certains cas, Windows utilise Iusr, pas IIS_Iusrs. le téléchargement de fichiers à l'aide de PHP est l'un de ces cas. (et si vous n'accordez que iis_iusr, vous rencontrerez l'exception de privilège) Je pense que M $ devrait donner "Une meilleure pratique" pour accorder la permission d'Iusr et IIS_Iusrs ...
finejustice
Je pense que maintenant c'est changé en groupe de pool d'applications, c'est-à-dire (IWGP). J'ai donné des autorisations à IWGP et cela a fonctionné.
Rohit Arora
6
IUSR fait partie de IIS_IUSER. NON CE N'EST PAS! IUSR est l'utilisateur anonyme, IIS_IUSER est le groupe des utilisateurs
apppool
6

Lorsque j'ai ajouté l'autorisation IIS_IUSRS au dossier du site - les ressources, comme js et css, étaient toujours inaccessibles (erreur 401, interdite). Cependant, quand j'ai ajouté IUSR - c'est devenu ok. Donc, bien sûr, "vous NE POUVEZ PAS supprimer les autorisations pour l'IUSR sans vous inquiéter", cher @Travis G @

Alexandre
la source
7
N'oubliez pas que (si vous avez IIS7 +), la bonne solution est d'utiliser IIS AppPool\MyApplicationPoolNameselon ma réponse mise à jour. Vous n'avez plus besoin de vous embêter avec IUSR (S)!
EvilDr
2
J'ai essayé votre suggestion, mais cela ne fonctionne pas. J'ai supprimé IUSR (S) de l'autorisation et je ne suis resté que le nom du pool, l'application s'exécute sous. Les ressources sont devenues inaccessibles. IIS 8.5. Quand j'ai ajouté IUSR - cela a fonctionné.
Alexander
Vous devez poster votre propre question avec autant d'informations sur votre situation s'il vous plaît.
EvilDr
4

@EvilDr Vous pouvez créer un compte IUSR_ [identifiant] dans votre environnement AD et laisser le pool d'applications particulier s'exécuter sous ce compte IUSR_ [identifiant]:

"Pool d'applications"> "Paramètres avancés"> "Identité"> "Compte personnalisé"

Réglez votre site Web sur "Utilisateur Applicaton (authentification pass-through)" et non sur "Utilisateur spécifique", dans les paramètres avancés.

Maintenant, donnez à cet IUSR_ [identificateur] les autorisations NTFS appropriées sur les fichiers et dossiers, par exemple: modifier sur les données de l'entreprise.

Jan Reilink
la source
Merci mais je n'utilise pas AD. Toujours selon la documentation MS récente, IIS 7 et 8 sont déjà configurés pour fonctionner comme vous le décrivez. La question est vraiment de savoir si l'un des comptes spécifiés est réellement nécessaire ou non, et lequel fait l'entreprise?
EvilDr
@EvilDr Merci d'avoir précisé que vous n'utilisez pas d'annonce. Eh bien, IIS_IUSRS n'est pas un utilisateur, c'est un groupe. Comme IIS_WPG sur IIS 6.0. Vous pouvez en savoir plus sur IIS_IUSRS et IUSR ici: lien . Vous pouvez définir des autorisations de modification sur companydata * pour le compte IUSR et vous pouvez ajouter cet utilisateur au groupe IIS_IUSRS et utiliser ce compte d'utilisateur pour exécuter votre pool d'applications sous. Vous n'avez besoin de grandir les autorisations pour IIS_IUSRS que sur les dossiers partagés (TMP par exemple), si vous avez plusieurs comptes IUSR.
Jan Reilink
Jan, j'ai toujours pensé que IUSR faisait partie du groupe IIS_IUSRS par défaut? Comment pouvez-vous vérifier si tel est le cas, car le compte IUSR est un compte intégré. Voulez-vous dire que je devrais décocher Modifier pour IIS_USRS et le vérifier pour IUSR à la place? Compte tenu de l'exigence d'une seule demande, je ne pense pas que cela fera vraiment une différence, n'est-ce pas?
EvilDr
3

Le groupe IIS_IUSRS n'a de l'importance que si vous utilisez ApplicationPool Identity. Même si vous avez ce groupe semble vide au moment de l'exécution, IIS ajoute à ce groupe pour exécuter un processus de travail selon la littérature Microsoft.

Ashburn RK
la source
Je ne sais pas pourquoi cela a été rejeté. docs.microsoft.com/en-us/iis/get-started/planning-for-security/…
Greg
0

J'utiliserais un utilisateur spécifique (et NON un utilisateur d'application). Ensuite, je vais activer l'emprunt d'identité dans l'application. Une fois que vous faites cela, quel que soit le compte défini comme utilisateur spécifique, ces informations d'identification seraient utilisées pour accéder aux ressources locales sur ce serveur (pas pour les ressources externes).

Le paramètre utilisateur spécifique est spécifiquement destiné à accéder aux ressources locales.

développeur747
la source