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 AlbuquerqueMuitas 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 user
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.