IIS_IUSRS- und IUSR-Berechtigungen in IIS8

146

Ich bin gerade von IIS6 unter Win2003 zu IIS8 unter Win2012 gewechselt, um ASP.NET-Anwendungen zu hosten.

Innerhalb eines bestimmten Ordners in meiner Anwendung muss ich Dateien erstellen und löschen. Nach dem Kopieren der Dateien auf den neuen Server wurden beim Versuch, Dateien zu löschen, immer wieder die folgenden Fehler angezeigt:

Der Zugriff auf den Pfad 'D: \ WebSites \ myapp.co.uk \ companydata \ filename.pdf' wird verweigert.

Wenn ich IIS überprüfe, sehe ich, dass die Anwendung unter dem DefaultAppPool-Konto ausgeführt wird. Ich habe jedoch niemals Windows-Berechtigungen für diesen Ordner so eingerichtet, dass sie IIS AppPool \ DefaultAppPool enthalten

Um keine Kunden mehr zu schreien, habe ich stattdessen die folgenden Berechtigungen für den Ordner erteilt:

IUSR

  • Lesen & Ausführen
  • Ordnerinhalt auflisten
  • Lesen
  • Schreiben

IIS_IUSRS

  • Ändern
  • Lesen & Ausführen
  • Ordnerinhalt auflisten
  • Lesen
  • Schreiben

Dies scheint funktioniert zu haben, aber ich bin besorgt, dass zu viele Berechtigungen festgelegt wurden. Ich habe hier widersprüchliche Informationen darüber gelesen, ob IUSR überhaupt benötigt wird. Kann jemand klären, welche Benutzer / Berechtigungen ausreichen würden, um Dokumente in diesem Ordner zu erstellen und zu löschen? Ist IUSR auch Teil der Gruppe IIS_IUSRS?

Update & Lösung

Bitte sehen Sie meine Antwort unten . Ich musste dies leider tun, da einige aktuelle Vorschläge nicht gut durchdacht oder sogar sicher waren (IMO).

EvilDr
quelle
Damit WordPress unter IIS 8 auf einer virtuellen Azure-Maschine (Windows Server 2012 Datacenter) funktioniert, musste ich IUSR die für IIS_IUSRS aufgelisteten Berechtigungen für das Blog-Verzeichnis in inetpub / wwwroot
dumbledad
Für diejenigen, die zu diesem Thread kommen, weil sie versuchen, Joomla unter IIS auszuführen und Probleme mit den Dateisicherheitseinstellungen haben, habe ich einen Blog-Artikel mit der meiner Meinung nach richtigen Lösung geschrieben. Wahrscheinlich auch für WordPress oder andere PHP-basierte Webserver-Programme anwendbar. renniestechblog.com/index.php/information/…
RenniePet
Mögliches Duplikat der Schreibzugriffsberechtigungen
KyleMit
Funktioniert einwandfrei, nachdem die vollständige Berechtigung für den Ordner für die Benutzergruppe IIS_IUSRS hinzugefügt wurde.
Thulasiram
@Thulasiram, aber dann haben Sie allen IIS-Benutzern die vollen Berechtigungen erteilt. Denken Sie darüber aus der Perspektive eines Hackers nach. Eine schwache Stelle und sie erlangen die totale Kontrolle über alle anderen
EvilDr

Antworten:

146

Ich hasse es, meine eigene Antwort zu veröffentlichen, aber einige Antworten haben kürzlich die Lösung, die ich in meiner eigenen Frage gepostet habe, ignoriert und Ansätze vorgeschlagen, die geradezu tollkühn sind.

Kurz gesagt: Sie müssen überhaupt keine Windows-Benutzerkontenberechtigungen bearbeiten . Dies birgt nur Risiken. Der Prozess wird vollständig in IIS mit geerbten Berechtigungen verwaltet.

Anwenden von Änderungs- / Schreibberechtigungen auf das richtige Benutzerkonto

  1. Klicken Sie mit der rechten Maustaste auf die Domain, wenn sie in der Liste Sites angezeigt wird, und wählen Sie Berechtigungen bearbeiten

    Geben Sie hier die Bildbeschreibung ein

    Auf der Registerkarte Sicherheit wird angezeigt MACHINE_NAME\IIS_IUSRS. Dies bedeutet, dass IIS automatisch über schreibgeschützte Berechtigungen für das Verzeichnis verfügt (z. B. zum Ausführen von ASP.Net auf der Site). Sie müssen diesen Eintrag nicht bearbeiten .

    Geben Sie hier die Bildbeschreibung ein

  2. Klicken Sie auf die Schaltfläche Bearbeiten und dann auf Hinzufügen ...

  3. Geben Sie in das Textfeld ein IIS AppPool\MyApplicationPoolNameund ersetzen Sie es MyApplicationPoolNamedurch Ihren Domainnamen oder den Anwendungspool, der auf Ihre Site zugreift, zIIS AppPool\mydomain.com

    Geben Sie hier die Bildbeschreibung ein

  4. Klicken Sie auf die Schaltfläche Namen prüfen. Der eingegebene Text wird transformiert (beachten Sie die Unterstreichung):

    Geben Sie hier die Bildbeschreibung ein

  5. Drücken Sie OK , um den Benutzer hinzuzufügen

  6. Mit dem neuen Benutzer (Ihre Domäne) ausgewählt, jetzt können Sie sicher alle bieten Ändern oder Schreibberechtigungen

    Geben Sie hier die Bildbeschreibung ein

EvilDr
quelle
2
Dies funktionierte auf meinem IIS 8.5-Server nicht. IUSRWerke hinzufügen . Hinzufügen IIS AppPool\Cache(der Name meines Anwendungspools) ergibtHTTP Error 401.3 - Unauthorized
Charles Burns
14
@CharlesBurns Ich hatte das gleiche Problem. Ich fand, dass dies meine Hauptursache ist: techras.wordpress.com/2016/03/09/… (anonyme Authentifizierung wurde so eingestellt, dass IUSR anstelle von Application Pool Identity verwendet wird)
Jon
2
Ich hatte einen Ordner, der nur als virtuelles Verzeichnis verwendet wurde, und er funktionierte einwandfrei, bis ich ihn (den Windows-Ordner, auf den er zeigte) für ein anderes Domänenkonto freigegeben hatte, damit er die Dateien über unser Intranet anzeigen konnte. Als ich das tat, waren die Dateien im virtuellen Verzeichnis plötzlich nicht mehr erreichbar. Am Ende musste ich beide hinzufügen MyComputerName\IIS_IUSRSund hatte IUSRnur Leseberechtigungen, damit es wieder funktioniert. Dies ist nur für virtuelle Verzeichnisse (nicht für .net-Apps) gedacht, aber es könnte hilfreich sein.
MikeTeeVee
13
Nur ein Hinweis: Wenn Sie nach dem Benutzer suchen und der Computer Mitglied einer Domäne ist, wird der IIS AppPool \ MyApplicationPoolName möglicherweise nicht gefunden. In meinem Fall musste ich auf die Schaltfläche Standorte klicken und den Standort auf den lokalen Computer ändern.
Statler
3
In meinen Tests hat der Name des hier zu verwendenden speziellen Benutzers nichts mit einem Domainnamen zu tun. Dies ist der Name des Anwendungspools, der der Site in IIS zugewiesen ist. Dieser Anwendungspool kann einen Namen haben, der mit der Domain Ihrer Website übereinstimmt. Das Muster lautet also : IIS AppPool\[APPLICATION POOL NAME]. Leerzeichen im Namen des Anwendungspools werden akzeptiert. Bitte beachten Sie auch, dass dieser Benutzer nur gefunden wird, wenn "Integrierte Sicherheitsprinzipale" als Objekttyp für die Namenssuche aktiviert ist (oberes Feld im Dialogfeld "Benutzer oder Gruppen auswählen").
Jpsy
49

IUSR ist Teil der IIS_IUSER-Gruppe. Ich denke, Sie können die Berechtigungen für IUSR ohne Bedenken entfernen. Weiterführende Literatur

Im Laufe der Zeit trat jedoch ein Problem auf, da immer mehr Windows-Systemdienste als NETWORKSERVICE ausgeführt wurden. Dies liegt daran, dass Dienste, die als NETWORKSERVICE ausgeführt werden, andere Dienste manipulieren können, die unter derselben Identität ausgeführt werden. Da IIS-Arbeitsprozesse standardmäßig Code von Drittanbietern ausführen (klassischer ASP, ASP.NET, PHP-Code), war es an der Zeit, IIS-Arbeitsprozesse von anderen Windows-Systemdiensten zu isolieren und IIS-Arbeitsprozesse unter eindeutigen Identitäten auszuführen. Das Windows-Betriebssystem bietet eine Funktion namens "Virtuelle Konten", mit der IIS eindeutige Identitäten für jeden seiner Anwendungspools erstellen kann. DefaultAppPool ist der Standardpool, der allen von Ihnen erstellten Anwendungspools zugewiesen ist.

Um die Sicherheit zu erhöhen, können Sie die IIS DefaultAppPool-Identität in ApplicationPoolIdentity ändern.

In Bezug auf die Berechtigung fasst Erstellen und Löschen alle Rechte zusammen, die erteilt werden können. Was auch immer Sie der Gruppe IIS_USERS zugewiesen haben, es ist erforderlich. Nicht mehr, nicht weniger.

hoffe das hilft.

Travis G.
quelle
3
Ich habe gerade IIS 8 unter Server Essentials 2012 R2 installiert. Dieser Computer ist auch ein Domänencontroller. In AD-Benutzern und -Computern ist die Gruppe IIS_IUSRS leer - sie enthält nicht den IUSR-Benutzer. Ich nehme an, ich könnte es der Gruppe hinzufügen, aber für anonyme Websites erteile ich dem IUSR-Benutzer nur Berechtigungen.
Mark Berry
7
Als ich Berechtigungen für IUSR erteilte, funktionierte es. Als ich IIS_IUSER Berechtigungen erteilte, funktionierte dies nicht.
Ihebiheb
Iusr ist kein Mitglied von IIS_Iusrs. (oder Windows hat einen Fehler) Im Allgemeinen verwendet Windows IIS_Iusrs. (Ausführen dynamischer Seiten oder Zugreifen auf statische Seiten) In einigen Fällen verwendet Windows jedoch Iusr und nicht IIS_Iusrs. Das Hochladen von Dateien mit PHP ist einer dieser Fälle. (und wenn Sie nur iis_iusr gewährt haben, werden Sie die Privilegienausnahme erfüllen) Ich denke, M $ sollte "A best-Practice" für die Erteilung der Erlaubnis von Iusr und IIS_Iusrs geben ...
finejustice
Ich denke, jetzt ist es geändert in Application Pool Group dh (IWGP). Ich habe IWGP Berechtigungen erteilt und es hat funktioniert.
Rohit Arora
6
IUSR ist Teil von IIS_IUSER. NEIN IST ES NICHT! IUSR ist der anonyme Benutzer, IIS_IUSER ist die Gruppe für Apppool-Benutzer
Giammin
6

Als ich dem Site-Ordner die Berechtigung IIS_IUSRS hinzufügte, war auf Ressourcen wie js und css immer noch nicht zugegriffen (Fehler 401, verboten). Als ich jedoch IUSR hinzufügte, wurde es in Ordnung. Also sicher "Sie können die Berechtigungen für IUSR NICHT ohne Bedenken entfernen", lieber @Travis G @

Alexander
quelle
7
Vergessen Sie nicht, dass (wenn Sie IIS7 + haben) die richtige Lösung darin besteht, IIS AppPool\MyApplicationPoolNamegemäß meiner aktualisierten Antwort zu verwenden. Sie müssen nicht mehr mit IUSR (S) herumspielen!
EvilDr
2
Ich habe Ihren Vorschlag ausprobiert, aber er funktioniert nicht. Ich habe IUSR (S) aus der Berechtigung entfernt und bin nur der Poolname geblieben, unter dem die App ausgeführt wird. Ressourcen wurden unzugänglich. IIS 8.5. Als ich IUSR hinzufügte, funktionierte es.
Alexander
Sie müssen Ihre eigene Frage mit möglichst vielen Informationen zu Ihrer Situation stellen.
EvilDr
4

@EvilDr Sie können ein IUSR_-Konto (Bezeichner) in Ihrer AD-Umgebung erstellen und den jeweiligen Anwendungspool unter diesem IUSR-Konto ausführen lassen:

"Anwendungspool"> "Erweiterte Einstellungen"> "Identität"> "Benutzerdefiniertes Konto"

Stellen Sie Ihre Website in den erweiterten Einstellungen auf "Anwendungsbenutzer (Pass-Through-Authentifizierung)" und nicht auf "Bestimmter Benutzer" ein.

Geben Sie diesem IUSR_ [Bezeichner] nun die entsprechenden NTFS-Berechtigungen für Dateien und Ordner, z. B.: Ändern Sie die Unternehmensdaten.

Jan Reilink
quelle
Danke, aber ich benutze kein AD. Gemäß der aktuellen MS-Dokumentation sind IIS 7 und 8 bereits so konfiguriert, dass sie wie beschrieben funktionieren. Die Frage ist wirklich, ob eines der angegebenen Konten tatsächlich benötigt wird oder nicht, und welches macht das Geschäft?
EvilDr
@ EvilDr Vielen Dank für die Klarstellung, dass Sie keine AD verwenden. Nun, IIS_IUSRS ist kein Benutzer, sondern eine Gruppe. Wie IIS_WPG unter IIS 6.0. Sie können über IIS_IUSRS und IUSR hier lesen: Link . Sie können Änderungsberechtigungen für Unternehmensdaten * für das IUSR-Konto festlegen und diesen Benutzer zur Gruppe IIS_IUSRS hinzufügen und dieses Benutzerkonto verwenden, um Ihren Anwendungspool unter auszuführen. Sie benötigen nur dann Großberechtigungen für IIS_IUSRS für freigegebene Ordner (z. B. TMP), wenn Sie über mehrere IUSR_accounts verfügen.
Jan Reilink
Jan, ich habe immer gedacht, dass IUSR standardmäßig Teil der IIS_IUSRS-Gruppe ist? Wie können Sie überprüfen, ob dies der Fall ist, da das IUSR-Konto ein integriertes Konto ist? Wollen Sie damit sagen, dass ich Modifizieren für IIS_USRS deaktivieren und stattdessen für IUSR aktivieren soll? Angesichts der Anforderung einer Einzelanwendung denke ich nicht, dass es wirklich einen Unterschied machen wird, oder?
EvilDr
3

Die IIS_IUSRS-Gruppe ist nur dann von Bedeutung, wenn Sie ApplicationPool Identity verwenden. Obwohl diese Gruppe zur Laufzeit leer aussieht, fügt IIS dieser Gruppe hinzu, um einen Arbeitsprozess gemäß Microsoft-Literatur auszuführen.

Ashburn RK
quelle
Ich bin mir nicht sicher, warum dies abgelehnt wurde. docs.microsoft.com/en-us/iis/get-started/planning-for-security/…
Greg
0

Ich würde einen bestimmten Benutzer (und NICHT einen Anwendungsbenutzer) verwenden. Dann werde ich den Identitätswechsel in der Anwendung aktivieren. Sobald Sie dies tun, unabhängig davon, welches Konto als bestimmter Benutzer festgelegt ist, werden diese Anmeldeinformationen verwendet, um auf lokale Ressourcen auf diesem Server zuzugreifen (nicht für externe Ressourcen).

Die spezifische Benutzereinstellung ist speziell für den Zugriff auf lokale Ressourcen vorgesehen.

Entwickler747
quelle