Pergunta

Meu aplicativo da web é executado no IIS 6.0 no Windows Server 2003, e todos sabemos que, nessa situação, o "serviço de rede" de conta de usuário é usado pelo IIS.

Por acaso, tenho que permitir que um determinado usuário execute alguma ação na minha página da web, e essa ação requer privilégio de administrador.

A solução mais preguiçosa para mim parece adicionar "serviço de rede" ao grupo de administradores, e realmente funciona.

Minha pergunta é, como PERIGOSO Esta solução é, e de que maneira pode comprometer a segurança do meu servidor da web?

Foi útil?

Solução

Isso geralmente é "uma má ideia". Se este é um servidor público, é uma ideia muito ruim.

O que você deve fazer, e é assim que abordamos problemas como esse, a caixa de renda é as tarefas de administrador específicas que você precisa realizar em outro processo, como um serviço do Windows que tem direitos elevados.

Em seguida, hospedamos um servidor remoto no serviço do Windows e nos comunicamos com o serviço sobre um tubo nomeado ou TCP/IP (se a máquina para a máquina e isso é sobre uma rede privada de back -end).

Para mais informações, consulte esta resposta que deixei para outro usuário sobre um problema semelhante:

Conta de usuário do Windows que executa apenas disposições do IIS7

Uma abordagem ainda melhor seria nunca ter comunicação direta entre o aplicativo da web e o serviço do Windows, mas passar por um intermediário, como uma fila de emprego ou mensagem. Seu aplicativo de baixo privilégio coloca a solicitação para que a tarefa de administrador seja realizada, seu serviço privilegiado elevado lê essas tarefas da fila e as executa.

Nos dois casos, você deve garantir que não exagere na responsabilidade de cada tarefa. ou seja, verifique se a tarefa é criar uma nova conta do Windows no servidor, não permita que essa nova conta obtenha mais direitos do que precisa.

Outras dicas

Se eu escrevesse alguma função da Web que exigisse administrador no nível da caixa, faria com que seu próprio aplicativo em seu próprio pool de aplicativos, bloqueie esse aplicativo o mais firmemente possível, dê a esse conjunto de aplicativos uma conta nomeada (um recurso de domínio, se estiver em um diretório ativo) e, em seguida, forneça os privilégios do administrador da conta na caixa. Manter -o em seu próprio pool de aplicativos o trava efetivamente do seu aplicativo regular.

A autoridade NT/serviço de rede interage com uma tonelada de coisas na sua máquina. Não posso encontrar nenhum bom motivo para obter privilégios de administrador de serviços de rede.

Sob nenhuma circunstância fazer isso.

Se você adicionar serviço de rede ao grupo de administração, todos os usuários anônimos que acessam seu aplicativo da web serão administradores por padrão e o potencial de danos será enorme.

Por sua pergunta

Por acaso, tenho que permitir que um determinado usuário execute alguma ação na minha página da web, e essa ação requer privilégio de administrador.

Isso é bom - use a autenticação do Windows nessa página da web e faça do usuário um administrador normal do Windows. Agora eles e todos os outros administradores podem executar as tarefas que você configurou.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top