Permissões IIS_IUSRS e IUSR no IIS8

146

Acabei de me mudar do IIS6 no Win2003 para o IIS8 no Win2012 para hospedar aplicativos ASP.NET.

Dentro de uma pasta específica do meu aplicativo, preciso criar e excluir arquivos. Depois de copiar os arquivos para o novo servidor, continuei vendo os seguintes erros ao tentar excluir os arquivos:

O acesso ao caminho 'D: \ WebSites \ myapp.co.uk \ companydata \ filename.pdf' foi negado.

Ao verificar o IIS, vejo que o aplicativo está sendo executado na conta DefaultAppPool, no entanto, nunca configurei permissões do Windows nesta pasta para incluir o IIS AppPool \ DefaultAppPool

Em vez disso, para parar de gritar clientes, concedi as seguintes permissões na pasta:

IUSR

  • Leitura e execução
  • Listar conteúdo da pasta
  • Ler
  • Escrever

IIS_IUSRS

  • Modificar
  • Leitura e execução
  • Listar conteúdo da pasta
  • Ler
  • Escrever

Isso parece ter funcionado, mas estou preocupado que muitos privilégios tenham sido definidos. Li online informações conflitantes sobre se o IUSR é realmente necessário aqui. Alguém pode esclarecer quais usuários / permissões seriam suficientes para criar e excluir documentos nesta pasta, por favor? Além disso, o IUSR faz parte do grupo IIS_IUSRS?

Atualização e solução

Por favor, veja minha resposta abaixo . Eu tive que fazer isso com tristeza, pois algumas sugestões recentes não foram bem pensadas ou até seguras (IMO).

EvilDr
fonte
Para se WordPress trabalhando no IIS 8 em uma máquina virtual Azure (Windows Server 2012 Datacenter) eu precisava para conceder as permissões que você tenha listado para IIS_IUSRS para IUSR para o blog diretório em inetpub / wwwroot
dumbledad
Para aqueles que chegam a esse segmento porque estão tentando executar o Joomla no IIS e estão tendo problemas com as configurações de segurança de arquivos, escrevi um artigo de blog com o que considero a solução adequada. Provavelmente também aplicável ao WordPress ou outros programas de servidor da Web baseados em PHP. Você
usar o seguinte
Funcionando bem após adicionar permissão total para a pasta do grupo de usuários IIS_IUSRS.
Thulasiram 20/08/19
@ Thulasiram, mas você deu privilégios totais a todos os usuários do IIS. Pense nisso da perspectiva de um hacker. Um site fraca e eles ganhar o controle total de todo o resto
EvilDr

Respostas:

146

Eu odeio postar minha própria resposta, mas algumas respostas recentemente ignoraram a solução que eu postei em minha própria pergunta, sugerindo abordagens que são nada menos do que imprudentes.

Em resumo - você não precisa editar nenhum privilégio de conta de usuário do Windows . Fazer isso apenas apresenta riscos. O processo é totalmente gerenciado no IIS usando privilégios herdados.

Aplicando permissões de modificação / gravação à conta de usuário correta

  1. Clique com o botão direito do mouse no domínio quando ele aparecer na lista Sites e escolha Editar permissões.

    insira a descrição da imagem aqui

    Na guia Segurança , você verá MACHINE_NAME\IIS_IUSRSuma lista. Isso significa que o IIS automaticamente tem permissão somente leitura no diretório (por exemplo, para executar o ASP.Net no site). Você não precisa editar esta entrada .

    insira a descrição da imagem aqui

  2. Clique no botão Editar e, em seguida, Adicionar ...

  3. Na caixa de texto, digite IIS AppPool\MyApplicationPoolName, substituindo MyApplicationPoolNamepelo seu nome de domínio ou qualquer pool de aplicativos que esteja acessando seu site, por exemplo,IIS AppPool\mydomain.com

    insira a descrição da imagem aqui

  4. Pressione o botão Verificar nomes . O texto digitado será transformado (observe o sublinhado):

    insira a descrição da imagem aqui

  5. Pressione OK para adicionar o usuário

  6. Com o novo usuário (seu domínio) selecionado, agora você pode fornecer com segurança quaisquer permissões de modificação ou gravação

    insira a descrição da imagem aqui

EvilDr
fonte
2
Isso não funcionou no meu servidor IIS 8.5. Adicionando IUSRobras. Adicionando IIS AppPool\Cache(o nome do meu pool de aplicativos) produzHTTP Error 401.3 - Unauthorized
Charles Burns
14
@CharlesBurns Eu tive o mesmo problema, achei que essa era minha causa raiz: techras.wordpress.com/2016/03/09/… (a autenticação anônima foi configurada para usar o IUSR em vez da identidade do pool de aplicativos)
Jon
2
Eu tinha uma pasta usada apenas como diretório virtual e funcionou bem até que eu a compartilhei (a pasta do Windows que apontava) com outra conta de domínio, para que pudesse visualizar os arquivos em nossa intranet. Quando eu fiz isso, os arquivos no diretório virtual tornaram-se subitamente inacessíveis. Acabei tendo que adicionar os dois MyComputerName\IIS_IUSRSe IUSRcom permissões somente leitura para que funcionasse novamente. Isso é apenas para diretórios virtuais (não para aplicativos .net), mas imagine que alguém possa achar útil.
MikeTeeVee
13
Apenas uma observação: quando você pesquisa o usuário e o computador é membro de um domínio, o IIS AppPool \ MyApplicationPoolName pode não ser encontrado. No meu caso, eu precisava clicar no botão Locais e alterar o local para o computador local.
statler
3
Nos meus testes, o nome do usuário especial a ser usado aqui não tem nada a ver com um nome de domínio. É o nome do pool de aplicativos atribuído ao site no IIS. Esse pool de aplicativos pode ou não ter um nome que corresponda ao domínio do seu site. Assim, o padrão é: IIS AppPool\[APPLICATION POOL NAME]. Espaços em branco no nome do Pool de aplicativos são aceitos. Observe também que esse usuário será encontrado apenas se "Princípios de segurança internos" estiver marcado como um tipo de objeto para a pesquisa de nomes (campo superior na caixa de diálogo "Selecionar usuários ou grupos").
Jpsy
49

IUSR faz parte do IIS_IUSER group.so eu acho que você pode remover as permissões para IUSR sem se preocupar. Leitura adicional

No entanto, um problema surgiu com o tempo, à medida que mais e mais serviços do sistema Windows começaram a ser executados como NETWORKSERVICE. Isso ocorre porque os serviços executados como NETWORKSERVICE podem violar outros serviços executados com a mesma identidade. Como os processos de trabalho do IIS executam código de terceiros por padrão (código ASP clássico, ASP.NET, PHP), era hora de isolar os processos de trabalho do IIS de outros serviços do sistema Windows e executar os processos de trabalho do IIS sob identidades exclusivas. O sistema operacional Windows fornece um recurso chamado "Contas virtuais" que permite ao IIS criar identidades exclusivas para cada um de seus pools de aplicativos. DefaultAppPool é o pool por padrão atribuído a todos os pools de aplicativos criados por você.

Para torná-lo mais seguro, você pode alterar a identidade do IIS DefaultAppPool para ApplicationPoolIdentity.

Em relação à permissão, Criar e Excluir resume todos os direitos que podem ser concedidos. Portanto, o que você atribuiu ao grupo IIS_USERS é que eles exigirão. Nada mais nada menos.

espero que isto ajude.

Travis G
fonte
3
Acabei de instalar o IIS 8 no Server Essentials 2012 R2. Esta máquina também é um controlador de domínio. Em Usuários e computadores do AD, o grupo IIS_IUSRS está vazio - ele não contém o usuário IUSR. Suponho que poderia adicioná-lo ao grupo, mas para sites anônimos, concederei permissões ao usuário IUSR.
Mark Berry
7
Quando concedi permissões para IUSR, funcionou. Quando concedi permissões ao IIS_IUSER, não funcionou.
Ihebiheb
Iusr não é membro do IIS_Iusrs. (ou o Windows tem um bug) Geralmente, o Windows usa IIS_Iusrs. (executando páginas dinâmicas ou acessando páginas estáticas), mas há alguns casos em que o Windows usa Iusr, não IIS_Iusrs. o upload de arquivos usando PHP é um desses casos. (e se você concedida apenas iis_iusr, você vai conhecer exceção privilégio) Acho M $ deveria dar "A melhor prática" para a concessão PERMSSION de IUSR e IIS_IUSRS ...
finejustice
Eu acho que agora mudou para o grupo de pools de aplicativos, ou seja, (IWGP). Eu dei permissões ao IWGP e funcionou.
Rohit Arora
6
IUSR faz parte do IIS_IUSER. NÃO NÃO É! IUSR é o usuário anônimo, IIS_IUSER é o grupo para usuários de
aplicativos
6

Quando adicionei a permissão IIS_IUSRS à pasta do site - recursos, como js e css, ainda estavam inacessíveis (erro 401, proibido). No entanto, quando eu adicionei IUSR - ficou ok. Então, com certeza "você NÃO PODE remover as permissões do IUSR sem se preocupar", querido @Travis G @

Alexander
fonte
7
Não esqueça que (se você tiver o IIS7 +), a solução correta é usar IIS AppPool\MyApplicationPoolNameconforme minha resposta atualizada. Você não precisa mais mexer com IUSR (S)!
EvilDr
2
Eu tentei sua sugestão, mas ela não funciona. Eu removi o IUSR (S) da permissão e permaneci apenas o nome da piscina, o aplicativo está sendo executado em. Os recursos tornaram-se inacessíveis. IIS 8.5. Quando adicionei o IUSR - funcionou.
Alexander
Você precisa postar sua própria pergunta com o máximo de informações sobre sua situação, por favor.
24519 EvilDr
4

@EvilDr Você pode criar uma conta IUSR_ [identifier] no seu ambiente do AD e permitir que o pool de aplicativos específico seja executado sob essa conta IUSR_ [identifier]:

"Pool de aplicativos"> "Configurações avançadas"> "Identidade"> "Conta personalizada"

Defina seu site como "Usuário do aplicativo (autenticação de passagem)" e não "Usuário específico", nas Configurações avançadas.

Agora forneça a esse IUSR_ [identificador] as permissões NTFS apropriadas em arquivos e pastas, por exemplo: modifique nos dados da empresa.

Jan Reilink
fonte
Obrigado, mas não estou usando o AD. Também de acordo com a documentação recente da Microsoft, o IIS 7 e 8 já estão configurados para funcionar como você descreve. A questão é realmente se uma das contas especificadas é realmente necessária ou não, e qual delas opera?
precisa saber é o seguinte
Obrigado por esclarecer que você não está usando um AD. Bem, IIS_IUSRS não é um usuário, é um grupo. Como o IIS_WPG no IIS 6.0. Você pode ler sobre IIS_IUSRS e IUSR aqui: link . Você pode definir permissões de modificação nos dados da empresa * para a conta IUSR e adicionar esse usuário ao grupo IIS_IUSRS e usar essa conta de usuário para executar seu pool de aplicativos. Você só precisa de permissões grandes para IIS_IUSRS em pastas compartilhadas (TMP por exemplo), se você tiver várias contas IUSR.
Jan Reilink
Jan, sempre achei que o IUSR fazia parte do grupo IIS_IUSRS por padrão? Como você pode verificar se é assim, pois a conta IUSR é uma conta interna. Você está dizendo que eu deveria desmarcar Modificar para IIS_USRS e, em vez disso, procurar IUSR? Dado o requisito de aplicação única, não acho que realmente fará diferença, fará?
EvilDr
3

O grupo IIS_IUSRS terá destaque apenas se você estiver usando o ApplicationPool Identity. Embora esse grupo pareça vazio no tempo de execução, o IIS adiciona a esse grupo para executar um processo de trabalho, de acordo com a literatura da Microsoft.

Ashburn RK
fonte
Não sei por que isso foi prejudicado. docs.microsoft.com/en-us/iis/get-started/planning-for-security/…
Greg
0

Eu usaria usuário específico (e NÃO usuário de aplicativo). Então, habilitarei a representação no aplicativo. Depois de fazer isso, qualquer que seja a conta definida como usuário específico, essas credenciais serão usadas para acessar recursos locais nesse servidor (não para recursos externos).

A configuração específica do usuário é destinada especificamente para acessar recursos locais.

developer747
fonte