none
Remover permissão para GetObject RRS feed

  • Pergunta

  • Olá.

    Preciso remover a permissão dos usuários comuns e deixar somente os usuários que estão no grupo Administradores poderem usar GetObject através de script. Atualmente qualquer usuário tem permissão de executar isso.

    Por exemplo:

    Set iis = GetObject("IIS://LocalHost/W3SVC")

    Quando um usuário do grupo administradores executar isso, conseguirá. Quando um usuário que não esteja no grupo administradores, receberá uma mensagem de erro de acesso negado.

    Alguém pode me ajudar informando onde posso controlar isso?

    ------------------------------------------------
    - Editado
    ------------------------------------------------
    Editando, porque acho que não fui muito específico: Na verdade, o que quero não é bloquear somente o GetObject, é impedir que usuários normais tenham acesso a configuração do IIS (GetObject("IIS://LocalHost/W3SVC")), ou então conseguir listar os usuários cadastrados na máquina, ou então listar os processos que estão sendo executados, tudo isso através de scripts (.vbs / .asp / .aspx / etc)

    Obrigado!
    • Movido Richard Juhasz segunda-feira, 21 de dezembro de 2009 17:11 Thread adequada para o problema. (De:Windows Server 2003)
    quarta-feira, 16 de dezembro de 2009 17:27

Respostas

  • Fala Rafael,

    Recebi seu e-mail e vi sua dúvida aqui. Tenta fazer o seguinte. Editira o machine.config (C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG). Na linha 171, coloca:
    <trust level="Medium" originUrl="" />. Ele fica fica em Full, e você deve reduzir para uma melhor segurança. Na versão 2.0 para cima, editia o web.config que fica no mesmo diretório e faz a mesma coisa.
    Para entender melhor como funciona o modo Full, Medium, Low e Minimal acessa o site: http://www.devmedia.com.br/articles/viewcomp.asp?comp=845 e procura por ASP.NET e CAS.
    Depois posta como ficou.

    Abraços!
    Pablo Weyne - http://www.iishelp.com.br
    • Marcado como Resposta Rafael_P terça-feira, 22 de dezembro de 2009 15:23
    segunda-feira, 21 de dezembro de 2009 18:21

Todas as Respostas

  • Olá Rafael.

    Bloquear somente o GetObject, não é possível. Caso você tenha dúvida sobre a criação de scripts, sugiro que você poste no fórum de scripts administrativos.

    http://social.technet.microsoft.com/Forums/pt-BR/scriptadminpt/threads
    Richard Juhasz
    sexta-feira, 18 de dezembro de 2009 13:53
  • Olá Richard. Obrigado pela resposta.

    Então, a minha dúvida não é em relação a criação de scripts. Vou explicar melhor...

    Tenho um servidor (Windows 2003) com o IIS instalado. No IIS tem alguns websites cadastrados. Para cada website crio um usuário e uma pool única pra ele (a pool e o site rodam sobre o usuário criado). O usuário somente tem acesso ao seu diretório.

    Porém através de um script (ASPXspy - http://www.rootkit.net.cn/), o usuário consegue listar todos os websites criados, todos os usuários e algumas outras coisas. Como o IIS grava a senha e o usuário em texto simples (não criptografado), há um problema de segurança, pois ele tem o nome de usuário e a senha do mesmo.

    Para listar através do ASP 3, o início do script é esse q postei, com ASP.Net é um pouco diferente, mais somente na questão de codificação, pois usa o mesmo recurso.

    Cada usuário que crio para o website, o coloco no grupo IIS_WPG e em um outro grupo DominiosTodos para permissões iguais a todos. Como já citei, o website e a Aplicação Pool desse site roda sobre esse usuário criado.

    O que descobri, que é o problema: Quando o usuário criado está no grupo IIS_WPG, ele tem acesso a essas informações. Quando não está, ele não tem acesso. Bom, seria então somente remover esse usuário do grupo IIS_WPG, porém não sei porque motivo o ASP3 roda sobre o usuário de autenticação do website, o ASP.Net roda sobre o usuário da Aplicação Pool. Se eu remover o usuário do grupo IIS_WPG, o dominio não consegue iniciar a pool e dá erro. Quando coloco a Pool pra rodar como Serviço de Rede, através de scripts ASP3 ele não consegue listar as informações, porém através do ASP.Net consegue, já que ele está com permissão de Serviço de Rede.

    Então a questão é que preciso remover o usuário do grupo IIS_WPG, e rodar o site e a pool sobre esse usuário, só que nesse caso dá erro na inicialização da pool (falta de privilégios suficientes).

    Não sei se consegui me expressar direito. Se alguém não entender por favor, diga que tento descrever melhor.

    Abraço.
    sexta-feira, 18 de dezembro de 2009 14:36
  • Olá Rafael.

    Entendi agora, obrigado pela explicação. O seu problema parece estar mais relacionado com o IIS do que com o próprio Windows. Vou mover sua Thread para o fórum de IIS, acredito que la o pessoal vai te ajudar melhor nesse assunto. Tanto é que aqui no fórum de Windows Server 2003, você não teve muitas respostas.

    Abraço.




    Richard Juhasz
    segunda-feira, 21 de dezembro de 2009 17:10
  • Fala Rafael,

    Recebi seu e-mail e vi sua dúvida aqui. Tenta fazer o seguinte. Editira o machine.config (C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG). Na linha 171, coloca:
    <trust level="Medium" originUrl="" />. Ele fica fica em Full, e você deve reduzir para uma melhor segurança. Na versão 2.0 para cima, editia o web.config que fica no mesmo diretório e faz a mesma coisa.
    Para entender melhor como funciona o modo Full, Medium, Low e Minimal acessa o site: http://www.devmedia.com.br/articles/viewcomp.asp?comp=845 e procura por ASP.NET e CAS.
    Depois posta como ficou.

    Abraços!
    Pablo Weyne - http://www.iishelp.com.br
    • Marcado como Resposta Rafael_P terça-feira, 22 de dezembro de 2009 15:23
    segunda-feira, 21 de dezembro de 2009 18:21
  • Olá Pablo e Richard.

    Obrigado Richard por mover o tópico para o local correto e pela sua atenção.

    Pablo, primeiro, muito obrigado pela resposta aqui no Fórum e tbm na atenção pelo e-mail.

    Bom, como citei, tenho a seguinte estrutura:

    - Diretório: d:\home\dominio.com.br\
    - Usuário: UsuarioDominioComBr
    - Pool: PoolDominioComBr
    - IIS: Website: dominio.com.br

    O diretório tinha a permissão de acesso para o usuário UsuarioDominioComBr, a Pool e o Website rodavam sobre esse mesmo usuário. O usuário por sua vez, pertence ao grupo IIS_WPG e a um grupo para permissões gerais (GrupoDominios).

    Realizei as alterações que você citou no machine.config e no web.config em uma ambiente de teste. Retirei o usuário do grupo IIS_WPG e coloquei a Pool para rodar com a identidade "Serviço de Rede".

    Com essas alterações, o script que citei (ASPXspy) não consegue mais ser executado, e com ASP3, tbm não tem mais acesso.

    Com isso acho que resolve a situação. Mas só tenho mais uma dúvida, se eu deixar o usuário "Serviço de Rede" para rodar a Pool, não teria algum outro problema de segurança? E se o usuário não estiver no grupo IIS_WPG não teria algum problema diferente tbm?

    PS.: Obrigado pelo link também, vou dar uma lida com mais atenção no documento inteiro.

    Obrigado
    terça-feira, 22 de dezembro de 2009 15:23
  • O usuário é importante que esteja no IIS_WPG para que tenha permissão aos arquivos do IIS, temp, etc. Como você colocou no Serviço de Rede, ele também terá acesso a esses arquivos, e um pouco mais. No IIS 7.5 a segurança foi melhorada, se for possível, aconselho você migrar.
    Se não for possível, você também já resolveu o seu problema.

    Pablo Weyne - http://www.iishelp.com.br
    terça-feira, 22 de dezembro de 2009 19:10
  • Salve Pablo.

    Então. A questão que que quando o usuário está no IIS_WPG, ele tem acesso a essas informações. Consegue listar os sites (com usuário e senha), listar usuários cadastrados (sem senha), etc... Quando não está no IIS_WPG, não consegue listar.

    Nesse caso, tentando listar sobre o ASP.Net não permite mais (editando os arquivos que vc citou), porém ainda permanece no mesmo quando rodo sobre o ASP, consegue listar essas informações, pois o usuário está no IIS_WPG.

    A intenção é realmente migrar pro IIS7, porém no momento não é possível por questões fora do meu alcance infelizmente.

    Quanto a isso, o certo ainda seria manter o usuário no IIS_WPG, ou existe alguma solução paleativa de seu conhecimento?

    Abraço Pablo, e novamente, muito obrigado!
    terça-feira, 22 de dezembro de 2009 19:25
  • Seguindo aquela documentação do meu blog, ainda consegue listar? Me passa o script para que eu possa testar e tentar te ajudar. 
    Pablo Weyne - http://www.iishelp.com.br
    terça-feira, 22 de dezembro de 2009 19:36
  • Ainda sim consegue listar. O usuário por padrão tem acesso ao diretório c:\windows\system32\inetsrv , setei o usuário e também o grupo que ele está para não ter nenhum tipo de acesso ao diretório e mesmo assim ainda executa.

    Segue abaixo o script:

    <table border="1">
    	<tr>
    		<th>#</th>
    		<th>ServerComment</th>
    		<th>Name</th>
    		<th>ServerState</th>
    		<th>AnonymousUserName</th>
    		<th>AnonymousUserPass</th>
    		<th>Pool</th>
    	</tr>
    	<%
    
    	int_Num = 0
    
    	Set iis = GetObject("IIS://LocalHost/W3SVC")
    	For Each site IN iis
    		If (site.Class = "IIsWebServer") Then
    			int_Num = int_Num + 1
    			Response.Write "<tr>" & VbCrLf
    			Response.Write "	<td>"& int_Num &"</td>" & VbCrLf
    			Response.Write "	<td>"& site.ServerComment &"</td>" & VbCrLf
    			Response.Write "	<td>"& site.Name &"</td>" & VbCrLf
    			Response.Write "	<td>"& site.ServerState &"</td>" & VbCrLf
    			Response.Write "	<td>"& site.AnonymousUserName &"</td>" & VbCrLf
    			Response.Write "	<td>"& site.AnonymousUserPass &"</td>" & VbCrLf
    			Response.Write "	<td>"& site.AppPoolID &"</td>" & VbCrLf
    			Response.Write "</tr>" & VbCrLf
    		End If
    	Next
    	Set iis = Nothing
    
    	%>
    </table>

    O diretório c:\windows\system32\inetsrv está com os seguintes usuários:

    - Administradores -> Permissão total.
    - UsuarioDominioComBr -> Negar total.
    - Proprietário Criador -> Permissões especiais.
    - GrupoDominios -> Negar total.
    - System -> Permissão total.
    - Usuários -> Permissão de leitura.
    - Usuários Avançados -> Permissão de leitura e gravação.

    PS.: O usuário UsuarioDominioComBr está no grupo IIS_WPG e GrupoDominios. A pool e o site rodam sobre esse usuário.

    Abraço!
    terça-feira, 22 de dezembro de 2009 19:53