Windows Server 2012, o aplicativo precisa de acesso administrativo para abrir a porta

3

Como posso conceder acesso a um aplicativo para escutar em uma porta específica, sem executá-lo como administrador ou desabilitar o UAC?

Por política, teve que fazer a transição de um servidor antigo (Windows Server 2003) para o Windows Server 2012.

O objetivo principal deste servidor é executar um aplicativo de terceiros que ouça em uma porta específica (não padrão) e responda a solicitações. (Tem que ser executado manualmente, não é um serviço do Windows.)

No servidor antigo, funcionava bem como qualquer usuário antigo, desde que o firewall estivesse configurado para permitir que essa porta fosse aberta. Em 2012, mesmo com o firewall configurado para permitir isso, ele precisa ser executado como administrador para poder abrir a porta.

Eu entendo a necessidade disso por motivos de segurança (usuários arbitrários não devem ser capazes de abrir portas arbitrárias no servidor, mesmo que tenham acesso de login), mas e quando eu realmente preciso permitir esse acesso?

Nota: NÃO quero que o aplicativo seja executado como administrador. Eu não quero desabilitar o UAC. Eu quero que todas as medidas de segurança permaneçam no lugar, apenas permita que este aplicativo (ele pode ter sua própria conta de usuário) seja capaz de abrir uma porta e ouvi-la.

Pesquisei alguns termos de pesquisa promissores, mas só obtive informações sobre quais portas o Windows Server 2012 exige para seus próprios serviços.

EDIT Mais informações sobre o aplicativo. Ele apenas usa o Winsock simples com bind() e listen() e accept() . Não usa nenhum serviço do Windows como o HTTPListener. Então, como eu posso rastrear o que está causando o soquete não ser aberto quando executado como um usuário normal?

    
por Snowbody 12.03.2015 / 19:53

1 resposta

6

Editado porque o OP forneceu mais informações:

Ouvir as portas TCP não requer direitos de administrador. No entanto, alguns ajudantes como o HTTPListener exigiriam direitos de administrador. Nesse caso, tente configurar uma reserva para que um usuário possa escutar nessa porta.

netsh http add urlacl url=http://+:80/MyUri user=DOMAIN\user

link

No seu caso, usando winsock, a ligação a uma porta não está acionando o UAC ou exigindo direitos de administrador. É outra coisa. Uma ferramenta que eu absolutamente adoro quando se trata de problemas de permissão é o Monitor de Processos da Sysinternal !

Adicione um filtro (CTRL + L) "O resultado é ACCESS DENIED". Isso mostrará todos os processos que tentam acessar um caminho, onde o processo não tem permissões. Você pode brincar com os filtros para diminuir o problema.

    
por 12.03.2015 / 20:50