Sécurité des services et droits d’accès
le modèle de sécurité Windows vous permet de contrôler l’accès au gestionnaire de contrôle des services (SCM) et aux objets de service. Les sections suivantes fournissent des informations détaillées :
Droits d’accès pour le gestionnaire de contrôle des services
Voici les droits d’accès spécifiques au SCM.
| Droit d’accès | Description |
|---|---|
| SC _ _Tous les _ accès au gestionnaire (0xF003F) | Comprend les _ droits standard _ requis, ainsi que tous les droits d’accès figurant dans ce tableau. |
| SC _ _ _ Service de création de gestionnaire (0x0002) | Obligatoire pour appeler la fonction CreateService afin de créer un objet de service et de l’ajouter à la base de données. |
| SC _ Gestionnaire de _ connexion (0x0001) | Requis pour se connecter au gestionnaire de contrôle des services. |
| SC _ _ _ Service d’énumération du gestionnaire (0x0004) | Requis pour appeler la fonction EnumServicesStatus ou EnumServicesStatusEx pour répertorier les services qui se trouvent dans la base de données. Requis pour appeler la fonction NotifyServiceStatusChange pour recevoir une notification lorsqu’un service est créé ou supprimé. |
| SC _ _Verrou du gestionnaire (0x0008) | Requis pour appeler la fonction LockServiceDatabase pour acquérir un verrou sur la base de données. |
| SC _ Gestionnaire de modification de la _ _ _ configuration de démarrage (0x0020) | Requis pour appeler la fonction NotifyBootConfigStatus . |
| SC _ _État du _ verrou _ de requête du gestionnaire (0x0010) | Requis pour appeler la fonction QueryServiceLockStatus pour récupérer les informations d’état de verrouillage de la base de données. |
Vous trouverez ci-dessous les droits d’accès génériques pour le SCM.
| Droit d’accès | Description |
|---|---|
| GENERIC_READ |
SC_MANAGER_ENUMERATE_SERVICE SC_MANAGER_QUERY_LOCK_STATUS |
| GENERIC_WRITE |
SC_MANAGER_CREATE_SERVICE SC_MANAGER_MODIFY_BOOT_CONFIG |
| GENERIC_EXECUTE |
SC_MANAGER_CONNECT SC_MANAGER_LOCK |
| GENERIC_ALL |
|
Un processus avec les droits d’accès corrects peut ouvrir un handle vers le SCM qui peut être utilisé dans les fonctions OpenService, EnumServicesStatusExet QueryServiceLockStatus . Seuls les processus avec des privilèges d’administrateur peuvent ouvrir des descripteurs sur le SCM qui peuvent être utilisés par les fonctions CreateService et LockServiceDatabase .
Le système crée le descripteur de sécurité pour le SCM. Pour obtenir ou définir le descripteur de sécurité pour le SCM, utilisez les fonctions QueryServiceObjectSecurity et SetServiceObjectSecurity avec un handle vers l’objet SCManager.
Windows Server 2003 et Windows XP : Contrairement à la plupart des autres objets sécurisables, le descripteur de sécurité du SCM ne peut pas être modifié. ce comportement a été modifié à partir de Windows Server 2003 avec Service Pack 1 (SP1).
Les droits d’accès suivants sont accordés.
| Compte | Droits d’accès |
|---|---|
| Utilisateurs authentifiés distants |
|
| Utilisateurs authentifiés locaux (y compris LocalService et NetworkService) |
SC_MANAGER_ENUMERATE_SERVICE SC_MANAGER_QUERY_LOCK_STATUS STANDARD_RIGHTS_READ |
| LocalSystem |
SC_MANAGER_ENUMERATE_SERVICE SC_MANAGER_MODIFY_BOOT_CONFIG SC_MANAGER_QUERY_LOCK_STATUS STANDARD_RIGHTS_READ |
| Administrateurs |
|
Notez que les utilisateurs distants authentifiés sur le réseau mais non connectés de manière interactive peuvent se connecter au SCM mais pas effectuer des opérations qui nécessitent d’autres droits d’accès. Pour effectuer ces opérations, l’utilisateur doit être connecté de manière interactive ou le service doit utiliser l’un des comptes de service.
Windows Server 2003 et Windows XP : Les utilisateurs authentifiés distants reçoivent les droits de _ _ connexion du gestionnaire SC, du _ _ _ service d’énumération SC Manager, de l' _ État du verrou de _ requête _ _ SC Manager et des droits d’accès _ _ en lecture des droits standard . ces droits d’accès sont restreints comme décrit dans le tableau précédent à partir de Windows Server 2003 avec SP1
Lorsqu’un processus utilise la fonction OpenSCManager pour ouvrir un handle vers une base de données de services installés, il peut demander des droits d’accès. Le système effectue une vérification de sécurité par rapport au descripteur de sécurité du SCM avant d’accorder les droits d’accès demandés.
Droits d’accès pour un service
Les droits d’accès spécifiques à un service sont les suivants :
| Droit d’accès | Description |
|---|---|
| Service _ TOUT _ accès (0xF01FF) | Comprend les _ droits standard _ requis en plus de tous les droits d’accès de ce tableau. |
| Service _ MODIFIER la _ configuration (0x0002) | Requis pour appeler la fonction ChangeServiceConfig ou ChangeServiceConfig2 pour modifier la configuration du service. Étant donné que l’appelant a le droit de modifier le fichier exécutable exécuté par le système, il doit être accordé uniquement aux administrateurs. |
| Service _ ÉNUMÉRer les _ dépendants (0x0008) | Requis pour appeler la fonction EnumDependentServices pour énumérer tous les services dépendants du service. |
| Service _ Interroger (0x0080) | Requis pour appeler la fonction ControlService pour demander au service de signaler son état immédiatement. |
| Service _ PAUSE _ continue (0x0040) | Requis pour appeler la fonction ControlService pour suspendre ou poursuivre le service. |
| Service _ _Configuration de la requête (0x0001) | Requis pour appeler les fonctions QueryServiceConfig et QueryServiceConfig2 pour interroger la configuration du service. |
| Service _ _État de la requête (0x0004) | Requis pour appeler la fonction QueryServiceStatus ou QueryServiceStatusEx pour demander au gestionnaire de contrôle des services l’état du service. Requis pour appeler la fonction NotifyServiceStatusChange pour recevoir une notification quand un service change d’État. |
| Service _ DÉBUT (0x0010) | Requis pour appeler la fonction StartService pour démarrer le service. |
| Service _ ARRÊTER (0x0020) | Requis pour appeler la fonction ControlService pour arrêter le service. |
| Service _ _ _ Contrôle défini par l’utilisateur(0x0100) | Requis pour appeler la fonction ControlService pour spécifier un code de contrôle défini par l’utilisateur. |
Les droits d’accès standard pour un service sont les suivants :
| Droit d’accès | Description |
|---|---|
| ACCÉDER à la _ sécurité du système _ | Requis pour appeler la fonction QueryServiceObjectSecurity ou SetServiceObjectSecurity pour accéder à la liste SACL. la méthode appropriée pour obtenir cet accès consiste à activer le privilège SE _ _ nom de sécurité dans le jeton d’accès actuel de l’appelant, à ouvrir le handle pour accès à la _ _ sécurité du système , puis à désactiver le privilège. |
| Supprimer (0x10000) | Requis pour appeler la fonction DeleteService pour supprimer le service. |
| Lecture _ CONTRÔLE (0x20000) | Requis pour appeler la fonction QueryServiceObjectSecurity pour interroger le descripteur de sécurité de l’objet de service. |
| Écriture _ DAC (0x40000) | Requis pour appeler la fonction SetServiceObjectSecurity pour modifier le membre DACL du descripteur de sécurité de l’objet de service. |
| Écriture _ PROPRIÉTAIRE (0x80000) | Requis pour appeler la fonction SetServiceObjectSecurity pour modifier les membres propriétaire et groupe du descripteur de sécurité de l’objet de service. |
Les droits d’accès génériques pour un service sont les suivants :
| Droit d’accès | Description |
|---|---|
| GENERIC_READ |
SERVICE_QUERY_CONFIG SERVICE_QUERY_STATUS SERVICE_INTERROGATE SERVICE_ENUMERATE_DEPENDENTS |
| GENERIC_WRITE |
SERVICE_CHANGE_CONFIG |
| GENERIC_EXECUTE |
SERVICE_START SERVICE_STOP SERVICE_PAUSE_CONTINUE SERVICE_USER_DEFINED_CONTROL |
Le SCM crée le descripteur de sécurité d’un objet de service lorsque le service est installé par la fonction CreateService . Le descripteur de sécurité par défaut d’un objet de service accorde l’accès suivant.
| Compte | Droits d’accès |
|---|---|
| Utilisateurs authentifiés distants | Non accordé par défaut. Windows Server 2003 avec SP1 : SERVICE_USER_DEFINED_CONTROL Windows Server 2003 et Windows XP : Les droits d’accès pour les utilisateurs authentifiés distants sont les mêmes que pour les utilisateurs authentifiés locaux. |
| Utilisateurs authentifiés locaux (y compris LocalService et NetworkService) |
SERVICE_ENUMERATE_DEPENDENTS SERVICE_INTERROGATE SERVICE_QUERY_CONFIG SERVICE_QUERY_STATUS SERVICE_USER_DEFINED_CONTROL |
| LocalSystem |
SERVICE_ENUMERATE_DEPENDENTS SERVICE_INTERROGATE SERVICE_PAUSE_CONTINUE SERVICE_QUERY_CONFIG SERVICE_QUERY_STATUS SERVICE_START SERVICE_STOP SERVICE_USER_DEFINED_CONTROL |
| Administrateurs |
READ_CONTROL SERVICE_ALL_ACCESS WRITE_DAC WRITE_OWNER |
Pour effectuer des opérations, l’utilisateur doit être connecté de manière interactive ou le service doit utiliser l’un des comptes de service.
Pour obtenir ou définir le descripteur de sécurité d’un objet de service, utilisez les fonctions QueryServiceObjectSecurity et SetServiceObjectSecurity . Pour plus d’informations, consultez modification de la liste DACL pour un service.
Lorsqu’un processus utilise la fonction OpenService , le système vérifie les droits d’accès demandés par rapport au descripteur de sécurité de l’objet de service.
L’octroi de certains droits d’accès à des utilisateurs non approuvés (tels que la _ _ configuration de la modification du service ou l' _ arrêt du service) peut leur permettre d’interférer avec l’exécution de votre service et éventuellement de les autoriser à exécuter des applications sous le compte LocalSystem.
Quand la fonction EnumServicesStatusEx est appelée, si l’appelant n’a pas le droit d’accès à l’état de la _ requête _ de service à un service, le service est omis en mode silencieux de la liste des services renvoyés au client.