Autorizzazioni IIS_IUSRS e IUSR in IIS8


147

Sono appena passato da IIS6 su Win2003 a IIS8 su Win2012 per l'hosting di applicazioni ASP.NET.

All'interno di una cartella particolare nella mia applicazione ho bisogno di creare ed eliminare file. Dopo aver copiato i file sul nuovo server, ho continuato a vedere i seguenti errori quando ho provato a eliminare i file:

L'accesso al percorso 'D: \ WebSites \ myapp.co.uk \ companydata \ nomefile.pdf' è negato.

Quando controllo IIS, vedo che l'applicazione è in esecuzione con l'account DefaultAppPool, tuttavia, non ho mai impostato le autorizzazioni di Windows su questa cartella per includere IIS AppPool \ DefaultAppPool

Invece, per smettere di urlare i clienti ho concesso le seguenti autorizzazioni alla cartella:

IUSR

  • Leggi ed esegui
  • Elenco contenuti della cartella
  • Leggere
  • Scrivi

IIS_IUSRS

  • Modificare
  • Leggi ed esegui
  • Elenco contenuti della cartella
  • Leggere
  • Scrivi

Questo sembra aver funzionato, ma temo che siano stati impostati troppi privilegi. Ho letto informazioni contrastanti online sul fatto che IUSR sia effettivamente necessario qui. Qualcuno può chiarire quali utenti / autorizzazioni sarebbero sufficienti per creare ed eliminare documenti in questa cartella per favore? Inoltre, IUSR fa parte del gruppo IIS_IUSRS?

Aggiornamento e soluzione

Si prega di vedere la mia risposta qui sotto . Ho dovuto farlo tristemente poiché alcuni suggerimenti recenti non sono stati ben ponderati o addirittura sicuri (IMO).


Per far funzionare WordPress su IIS 8 in una macchina virtuale di Azure (Windows Server 2012 Datacenter), dovevo concedere le autorizzazioni che hai elencato per IIS_IUSRS a IUSR per la directory del blog in inetpub / wwwroot
silente

Per coloro che arrivano a questo thread perché stanno cercando di eseguire Joomla sotto IIS e stanno riscontrando problemi con le impostazioni di sicurezza dei file, ho scritto un articolo sul blog con quello che penso sia la soluzione corretta. Probabilmente applicabile anche a WordPress o altri programmi web server basati su PHP. renniestechblog.com/index.php/information/…
RenniePet


Funziona bene dopo aver aggiunto l'autorizzazione completa per la cartella per il gruppo utenti IIS_IUSRS.
Thulasiram,

@Thulasiram ma poi hai dato tutti i privilegi a tutti gli utenti IIS. Pensaci dal punto di vista di un hacker. Un sito debole e ottengono il controllo totale di tutto il resto
EvilDr

Risposte:


146

Odio pubblicare la mia risposta, ma alcune risposte recentemente hanno ignorato la soluzione che ho pubblicato nella mia domanda, suggerendo approcci a dir poco insensati.

In breve: non è necessario modificare alcun privilegio dell'account utente di Windows . Ciò comporta solo rischi. Il processo è interamente gestito in IIS utilizzando i privilegi ereditati.

Applicazione delle autorizzazioni di modifica / scrittura all'account utente corretto

  1. Fai clic con il pulsante destro del mouse sul dominio quando appare nell'elenco Siti e scegli Modifica autorizzazioni

    inserisci qui la descrizione dell'immagine

    Nella scheda Sicurezza , vedrai che MACHINE_NAME\IIS_IUSRSè elencato. Ciò significa che IIS dispone automaticamente dell'autorizzazione di sola lettura per la directory (ad es. Per eseguire ASP.Net nel sito). Non è necessario modificare questa voce .

    inserisci qui la descrizione dell'immagine

  2. Fai clic sul pulsante Modifica , quindi Aggiungi ...

  3. Nella casella di testo, digita IIS AppPool\MyApplicationPoolName, sostituendo MyApplicationPoolNamecon il tuo nome di dominio o qualunque pool di applicazioni acceda al tuo sito, ad esIIS AppPool\mydomain.com

    inserisci qui la descrizione dell'immagine

  4. Premi il pulsante Controlla nomi . Il testo digitato si trasformerà (notare la sottolineatura):

    inserisci qui la descrizione dell'immagine

  5. Premere OK per aggiungere l'utente

  6. Con il nuovo utente (il tuo dominio) selezionato, ora puoi fornire in sicurezza qualsiasi autorizzazione di modifica o scrittura

    inserisci qui la descrizione dell'immagine


2
Questo non ha funzionato sul mio server IIS 8.5. Aggiunta di IUSRopere. L'aggiunta IIS AppPool\Cache(il nome del mio pool di applicazioni) produceHTTP Error 401.3 - Unauthorized
Charles Burns il

14
@CharlesBurns Ho avuto lo stesso problema, ho scoperto che questa è la mia causa principale: techras.wordpress.com/2016/03/09/… (l'autenticazione anonima è stata impostata per utilizzare IUSR invece di Application Pool Identity)
Jon

2
Avevo una cartella utilizzata solo come Directory virtuale e ha funzionato bene fino a quando non l'ho condivisa (la cartella Windows a cui puntava) con un altro account di dominio, in modo da poter visualizzare i file sulla nostra intranet. Quando l'ho fatto, i file nella directory virtuale sono diventati improvvisamente irraggiungibili. Ho finito per dover aggiungere entrambi MyComputerName\IIS_IUSRSe IUSRcon le autorizzazioni di sola lettura affinché funzioni nuovamente. Questo è solo per Directory virtuali (non App .net), ma immagina che qualcuno possa trovarlo utile.
MikeTeeVee,

13
Solo una nota: quando si cerca l'utente e il computer è membro di un dominio, è possibile che IIS AppPool \ MyApplicationPoolName non venga trovato. Nel mio caso, dovevo fare clic sul pulsante Posizioni e modificare la posizione sul computer locale.
statler

3
Nei miei test il nome dell'utente speciale da utilizzare qui non ha nulla a che fare con un nome di dominio. È il nome del pool di applicazioni assegnato al sito in IIS. Questo pool di applicazioni potrebbe avere o meno un nome corrispondente al dominio del tuo sito Web. Quindi il modello è: IIS AppPool\[APPLICATION POOL NAME]. Sono accettati spazi vuoti nel nome del pool di applicazioni. Si noti inoltre che questo utente verrà trovato solo se "Principi di sicurezza integrati" è selezionato come tipo di oggetto per la ricerca del nome (campo superiore nella finestra di dialogo "Seleziona utenti o gruppi").
Jpsy,

50

IUSR fa parte del gruppo IIS_IUSER. Quindi immagino che sia possibile rimuovere le autorizzazioni per IUSR senza preoccuparsi. Ulteriori letture

Tuttavia, nel tempo si è verificato un problema poiché sempre più servizi di sistema di Windows hanno iniziato a funzionare come NETWORKSERVICE. Questo perché i servizi in esecuzione come NETWORKSERVICE possono manomettere altri servizi eseguiti con la stessa identità. Poiché i processi di lavoro IIS eseguono il codice di terze parti per impostazione predefinita (ASP classico, ASP.NET, codice PHP), era tempo di isolare i processi di lavoro IIS da altri servizi di sistema di Windows ed eseguire i processi di lavoro IIS con identità univoche. Il sistema operativo Windows fornisce una funzionalità denominata "Account virtuali" che consente a IIS di creare identità univoche per ciascuno dei suoi pool di applicazioni. DefaultAppPool è il pool predefinito assegnato a tutto il pool di applicazioni creato.

Per renderlo più sicuro, è possibile modificare l'identità IIS DefaultAppPool in ApplicationPoolIdentity.

Per quanto riguarda l'autorizzazione, Crea ed Elimina riepiloga tutti i diritti che possono essere concessi. Quindi, qualunque cosa tu abbia assegnato al gruppo IIS_USERS è che lo richiederanno. Niente di più, niente di meno.

spero che questo ti aiuti.


3
Ho appena installato IIS 8 in Server Essentials 2012 R2. Questa macchina è anche un controller di dominio. In Utenti e computer AD, il gruppo IIS_IUSRS è vuoto - non contiene l'utente IUSR. Suppongo di poterlo aggiungere al gruppo, ma per i siti anonimi concederò solo autorizzazioni all'utente IUSR.
Mark Berry,

7
Quando ho concesso le autorizzazioni per IUSR ha funzionato. Quando ho concesso le autorizzazioni a IIS_IUSER non ha funzionato.
ihebiheb,

Iusr non è un membro di IIS_Iusrs. (o Windows ha un bug) In genere, Windows utilizza IIS_Iusrs. (esecuzione di pagine dinamiche o accesso a pagine statiche) ma in alcuni casi Windows utilizza Iusr, non IIS_Iusrs. il caricamento di file tramite PHP è uno di questi casi. (e se hai concesso solo iis_iusr, incontrerai un'eccezione di privilegio) Penso che M $ dovrebbe dare "Una best practice" per la concessione di permessi di Iusr e IIS_Iusrs ...
finejustice,

Penso che ora sia cambiato nel gruppo di pool di applicazioni (IWGP). Ho dato i permessi a IWGP e ha funzionato.
Rohit Arora,

6
IUSR fa parte di IIS_IUSER. NO NON LO È! IUSR è l'utente anonimo, IIS_IUSER è il gruppo per gli utenti di
apppool

6

Quando ho aggiunto l'autorizzazione IIS_IUSRS alla cartella del sito - le risorse, come js e css, erano ancora inaccessibili (errore 401, vietato). Tuttavia, quando ho aggiunto IUSR, è diventato ok. Quindi sicuramente "NON PUOI rimuovere le autorizzazioni per IUSR senza preoccuparti", caro @Travis G @


7
Non dimenticare che (se hai IIS7 +) la soluzione corretta è quella di utilizzare IIS AppPool\MyApplicationPoolNamela mia risposta aggiornata. Non devi più scherzare con IUSR (S)!
EvilDr

2
Ho provato il tuo suggerimento, ma non funziona. Ho rimosso IUSR (S) dall'autorizzazione e sono rimasto solo il nome pool, l'app è in esecuzione sotto. Le risorse sono diventate inaccessibili. IIS 8.5. Quando ho aggiunto IUSR, ha funzionato.
Alexander,

Devi pubblicare la tua domanda con quante più informazioni sulla tua situazione, per favore.
EvilDr

4

@EvilDr Puoi creare un account IUSR_ [identificatore] nel tuo ambiente AD e lasciare che il particolare pool di applicazioni venga eseguito con quell'account IUSR_ [identificatore]:

"Pool di applicazioni"> "Impostazioni avanzate"> "Identità"> "Account personalizzato"

Imposta il tuo sito Web su "Utente applicaton (autenticazione pass-through)" e non "Utente specifico", nelle Impostazioni avanzate.

Ora date a IUSR_ [identificatore] le autorizzazioni NTFS appropriate su file e cartelle, ad esempio: modifica su dati aziendali.


Grazie ma non sto usando AD. Inoltre, secondo la recente documentazione MS, IIS 7 e 8 sono già configurati per funzionare come descritto. La domanda è davvero se uno degli account specificati è effettivamente necessario o meno, e quale fa l'azienda?
EvilDr

@EvilDr Grazie per aver chiarito che non stai usando un annuncio. Bene, IIS_IUSRS non è un utente, è un gruppo. Come IIS_WPG su IIS 6.0. Puoi leggere di IIS_IUSRS e IUSR qui: link . È possibile impostare le autorizzazioni di modifica sui dati aziendali * per l'account IUSR e aggiungere questo utente al gruppo IIS_IUSRS e utilizzare tale account utente per eseguire il pool di applicazioni. Devi disporre solo di autorizzazioni grandi per IIS_IUSRS su cartelle condivise (TMP ad esempio), se disponi di più account IUSR.
Jan Reilink,

Jan, ho sempre pensato che IUSR facesse parte del gruppo IIS_IUSRS per impostazione predefinita? Come puoi verificare se è così, poiché l'account IUSR è un account integrato. Stai dicendo che dovrei deselezionare Modifica per IIS_USRS e selezionarlo invece per IUSR? Dato il requisito dell'applicazione singola, non penso che farà davvero la differenza, vero?
EvilDr


0

Vorrei utilizzare un utente specifico (e NON un utente dell'applicazione). Quindi abiliterò la rappresentazione nell'applicazione. Una volta fatto questo, qualunque sia l'account impostato come utente specifico, tali credenziali verrebbero utilizzate per accedere alle risorse locali su quel server (non per risorse esterne).

L'impostazione dell'utente specifico è specifica per l'accesso alle risorse locali.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.