Infra - Windows

Conceder permissões para usuário restrito em serviços do Windows

Neste artigo o autor irá mostrar como conceder permissões para usuário restrito em serviços do Windows.

por Erick Albuquerque



Muitas vezes enfrentamos situações que não queremos deixar o usuário como Administrator Local e/ou outros.

Neste artigo vamos falar sobre permissões em serviços do Windows.

Cenário: Usuário Lab, está no grupo Domain Users e no grupo local Remote Desktop Users, para acesso remoto.

O usuário LAB não possui permissão para fazer exatamente nada que esteja fora do seu perfil, como exemplo iremos pegar o Service.Lab, quando o usuário Lab acessa o services.msc e tenta manipular o serviço “Service.Lab” ele nota que não possui permissão nem mesmo para fazer um stop/start no serviço.

Muitos administradores de redes simplesmente acrescentam o usuário no grupo local de Administrators pensando que irão resolver o problema, que na verdade irão, mas podem causar muitos problemas no futuros.

Ex: Vírus, deleção acidental e entre outros.

1. Primeiro passo é descobrir quais permissões o nosso serviço possui, pois na hora de definir as permissões para o usuário teremos que manter a antiga.

2. Iniciar > Executar > cmd > OK

3. Lembrando que é necessário executar o CMD como Administrator.

4. Digite: sc sdshow “nome do serviço”

A saída do comando será algo parecido com isso:

D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCR

RC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

Essas são as permissões que o serviço já possui.

Vamos pegar esse trecho “D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)” para entender como funciona a nomenclatura das permissões.

D:- Discretionary ACL (DACL), Controle de permissões.

A:- Allow – Aqui você passa parâmetros que está liberando as permissões de controle e de grupos/usuários.

CCLCSWRPWPDTLOCRRC = São as permissões que está liberado para o usuário trabalhar com o serviço. Ex: stop/start do serviço.

CC - SERVICE_QUERY_CONFIG - ask the SCM for the service"s current configuration
DC - Delete All Child Objects
LC - SERVICE_QUERY_STATUS - ask the SCM for the service"s current status
SW - SERVICE_ENUMERATE_DEPENDENTS - list dependent services
RP - Read all properties
WP - SERVICE_STOP - stop the service
DT - SERVICE_PAUSE_CONTINUE - pause / continue the service
LO - SERVICE_INTERROGATE - ask the service its current status
CR - SERVICE_USER_DEFINED_CONTROL - send a service control defined by the service"s authors
SD - Delete
RC - READ_CONTROL - read the security descriptor on this service.
WD - Modify permissions
WO - Modify owner
BA- Built-in administrators

Abaixo algumas siglas nos quais podemos usar para dar permissão por grupo:

"AO"Account operators
"RU"Alias to allow previous Windows 2000
"AN"Anonymous logon
"AU"Authenticated users
"BA"Built-in administrators
"BG"Built-in guests
"BO"Backup operators
"BU"Built-in users
"CA"Certificate server administrators
"CG"Creator group
"CO"Creator owner
"DA"Domain administrators
"DC"Domain computers
"DD"Domain controllers
"DG"Domain guests
"DU"Domain users
"EA"Enterprise administrators
"ED"Enterprise domain controllers
"WD"Everyone
"PA"Group Policy administrators
"IU"Interactively logged-on user
"LA"Local administrator
"LG"Local guest
"LS"Local service account
"SY"Local system
"NU"Network logon user
"NO"Network configuration operators
"NS"Network service account
"PO"Printer operators
"PS"Personal self
"PU"Power users
"RS"RAS servers group
"RD"Terminal server users
"RE"Replicator
"RC"Restricted code
"SA"Schema administrators
"SO"Server operators
"SU"Service logon use
r

Lembrando que podemos ser mais restritivo e dar a permissão por SID do usuário.

Para pegar o SID de um usuário use o comando dsget em seu Active Directory:

Exp: dsget user “CN=Lab,OU=Users,DC=lab,DC=local” –sid

5. Agora vamos setar a permissão apenas para o usuário Lab

Sintaxe:  sc sdget “nome do serviço” <permissões>

Sc sdget “Service.Lab” D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCR

RC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

Notem que estamos mantendo as permissões antigas e agora iremos dar a permissão para o usuário Lab.

Sc sdget “Service.Lab” D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCR

RC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD) (A;;CCLCSWRPWPDTLOCRRC;;; S-1-5-21-1607579371-585640051-1745129182-1147)

Executado com sucesso.

Agora peça para o usuário entrar no servidor e tentar manipular o serviço.

Lembrando que este procedimento serve para outros serviços do Windows.

Até a próxima.

Conclusão

Neste artigo aprendemos a dar permissões para serviços do Windows sendo que o usuário não possui nenhum outro tipo de permissão que não seja Domain Users.

Erick Albuquerque

Erick Albuquerque - Atua no mercado há 5 anos, especializando-se na área de infra-estrutura baseada na plataforma Microsoft. Especializado em Windows Server, IIS e Active Directory, atuou na Lita Mortari (www.litamortari.com.br) como Analista de Infraestrutura em São Paulo. Atualmente trabalha na ZAP S/A Internet (www.zap.com.br), uma empresa que surgiu dos dois maíores jornais do País, Estadão e O GLOBO. Você pode entrar em contato através do BLOG: http://erickalbuquerque.spaces.live.com.