Como impedir que o usuário faça login em uma conta usada apenas para representação?

2

Atualmente, tenho um serviço do Windows escrito em C # (executando como LocalSystem), que cria uma conta de usuário, necessária para representação, usando o DirectoryEntry para adicionar o usuário / senha e UserFlags associados. Em seguida, ele simplesmente usa essa conta para executar algumas tarefas (usando a representação) usando a funcionalidade LogonUser () - funciona perfeitamente.

No entanto, esta conta deve ser usada apenas para a representação do meu serviço, um usuário nunca deve ser capaz de fazer o login (mesmo se ele tiver as credenciais) localmente ou através da rede.

Para conseguir isso, tentei definir as Políticas locais para "Negar logon localmente" e "Negar acesso a este computador pela rede" e adicionei o usuário criado por meu serviço. Agora, no entanto, a representação falha com o seguinte:     Falha de logon: o usuário não recebeu o tipo de logon solicitado neste computador (1385)

Portanto, acho que NÃO é o jeito certo de fazer isso ... mas preciso proteger a conta para que ela só possa ser usada pelo meu serviço para fins de representação e para garantir que ninguém mais possa fazer logon na conta (mesmo que tenham todas as credenciais).

Existe algo em LSA que eu possa usar? Ou usando o código DirectoryEntry semelhante a quando a conta foi criada? Existe uma maneira de permitir que uma conta exista, mas não permite que os usuários façam login interativamente?

Qualquer ajuda seria muito apreciada. Obrigado,

    
por Shaitan00 29.03.2011 / 21:07

3 respostas

0

Gostaria de sugerir que o Process Monitor do sysinternals descubra qual arquivo, registro e rede acessar a imitação exige. Em seguida, trabalhe de trás para frente para encontrar a atribuição mínima de direitos do usuário na política local à qual você pode negar ou simplesmente remover o acesso. Eu usei-o muitas vezes na solução de problemas de segurança em servidores da Web que acessam sandlots, arquivos de dados, diretórios temporários what-have-ya.

-Gft

    
por 29.03.2011 / 22:31
0

Minha experiência é que o logon local e a representação são a mesma permissão (logon local) e não podem ser separados. Ou seja, clicar com o botão direito do mouse em um programa e executar "Executar como usuário diferente" é o mesmo que fazer login diretamente como usuário e executar o programa.

É possível conceder a uma conta a capacidade de executar um serviço separadamente da permissão de logon local, e você pode descobrir que, em vez de executar o serviço com o sistema local, pode executá-lo com a conta do usuário. O serviço e a conta de usuário podem ser criados através do sistema local por meio do PSExec ou de outras ferramentas / métodos.

Em última análise, acho que a maneira como você está tentando realizar sua meta não é possível e você precisará fazer uma alteração no design. Boa sorte, por favor, deixe-me saber se você encontrar uma maneira de me provar errado. Eu adoraria forçar algumas contas de administrador a trabalhar apenas em um 'run as'.

    
por 15.03.2016 / 21:56
0

Este programa está sendo executado em um domínio? Nesse caso, você poderia criar uma conta de serviço para fazer o que você necessidade.

    
por 15.03.2016 / 22:11