Présentation |
|
Sous Windows, l'accès aux ressources système et aux tâches liées au système peut être contrôlé à l'aide de privilèges contenus dans un objet appelé jeton d'accès. Lorsque le Wrapper est exécuté pour le compte d'un utilisateur, le processus reçoit une copie du jeton d'accès contenant les privilèges de l'utilisateur. L'édition Professionnelle du Wrapper permet d'ajuster ces privilèges à différents niveaux :
Pour des raisons de sécurité, il est recommandé qu'une application n'active que les privilèges dont elle a besoin. Si un privilège peut être utilisé occasionnellement, ou s'il doit être utilisé par certains de ses processus enfants, il peut être désactivé afin de conserver la possibilité de le réactiver ultérieurement. Cependant, pour empêcher qu'un privilège soit réactivé par l'application ou l'un de ses processus enfants, la solution la plus sûre consiste à supprimer complètement le privilège. Si aucun privilège requis n'est spécifié pour un service Windows, le SCM ne modifiera pas le jeton d'accès du service au démarrage, le laissant avec les privilèges attribués par défaut, c'est-à-dire ceux détenus par l'utilisateur et les groupes auxquels appartient le compte de service. Les privilèges suivants sont couramment attribués aux utilisateurs exécutant des services :
En général, les privilèges ci-dessus sont appropriés (et parfois nécessaires) pour le processus Wrapper, de sorte que dans la plupart des situations, vous n'aurez pas besoin de les modifier. Cependant, selon l'utilisation de votre application, il peut être préférable, pour des raisons de sécurité, de supprimer certains privilèges du jeton d'accès du processus Java ou des processus enfants s'exécutant en réponse à des événements. NOTEDepuis la version 3.7.0, l'emprunt d'identité (impersonation) est utilisé, lorsqu'il est disponible, pour vérifier le SID du processus Java se connectant lorsque le type de backend est PIPE (la valeur par défaut). Cela permet une confirmation rigoureuse de l'identité du processus Java, offrant le niveau d'authentification le plus robuste pour la communication inter-processus sous Windows. Bien que la vérification du SID offre une sécurité maximale, elle n'est pas strictement requise pour une communication sécurisée avec la JVM ; le système reste protégé par plusieurs couches indépendantes, notamment l'authentification par clé cryptographique et la vérification du PID. AVERTISSEMENTUne attention particulière doit être portée au privilège SeImpersonatePrivilege. Bien qu'activé par défaut pour les services Windows, ce privilège peut être utilisé de manière abusive pour passer d'un compte local à NT AUTHORITY\SYSTEM si l'application Java donne à l'utilisateur la possibilité d'exécuter des commandes arbitraires. Dans de tels cas, il est fortement recommandé de supprimer SeImpersonatePrivilege du processus Java. Il en va de même pour les commandes d'événements. Il convient toujours de s'assurer que le programme ou le script cible dispose des autorisations de fichiers appropriées afin qu'il ne puisse pas être modifié ou replaced. De plus, si la commande configurée donne à l'utilisateur la possibilité d'exécuter ses propres commandes ou d'ouvrir une console, le privilège SeImpersonatePrivilege devrait également être supprimé. NT AUTHORITY\SYSTEM est un compte puissant qui possède encore plus de privilèges qu'un Administrateur sous Windows. Y accéder constitue un réel problème de sécurité, car cela permettrait un contrôle presque total de la machine.
Veuillez consulter la description de la propriété wrapper. Les propriétés suivantes sont disponibles pour configurer les privilèges :
|
Privilèges requis pour un service Windows |
||||||||||||
|
Privilèges d'exécution pour le processus Wrapper |
||||||||||||||||||||||||||||||||||||||||||||||||
|
Les propriétés suivantes sont utilisées pour ajuster les privilèges du processus Wrapper. Seuls les privilèges qui existent dans le jeton d'accès du processus Wrapper peuvent être ajustés. Par défaut, le jeton d'accès contient les privilèges détenus par l'utilisateur sous lequel le Wrapper s'exécute ainsi que les privilèges des groupes auxquels cet utilisateur appartient. Pour les services Windows, les privilèges par défaut peuvent être remplacés en définissant une liste de privilèges requis. Si un privilège est manquant, il est possible de l'ajouter à la liste wrapper.ntservice.required_privileges et de réinstaller ou de mettre à jour le service. Au prochain démarrage, le jeton d'accès du Wrapper devrait alors contenir le privilège. Notez que ces propriétés ne prendront effet qu'au premier chargement de la configuration et seront ignorées si la configuration est rechargée.
|
Privilèges d'exécution pour le processus Java |
||||||||||||||||||||||||
|
Les propriétés suivantes sont utilisées pour ajuster les privilèges du processus Java. Si l'une de ces propriétés est définie, le jeton d'accès du processus Wrapper sera dupliqué et les privilèges spécifiés seront ajustés dans la copie du jeton. Le processus Java sera alors lancé dans le contexte de sécurité représenté par ce nouveau jeton. Seuls les privilèges qui existent dans le jeton d'accès du processus Java (et qui existent donc également dans le jeton du processus Wrapper) peuvent être ajustés. Gardez à l'esprit que la liste des privilèges peut être modifiée à deux niveaux avant le lancement du processus Java : lors de l'installation d'un service Windows si des privilèges requis ont été spécifiés, ou si un ou plusieurs privilèges ont été supprimés au démarrage du Wrapper. Les privilèges seront réajustés à chaque lancement d'une nouvelle JVM. Si le rechargement du fichier de configuration est autorisé, ces propriétés peuvent être modifiées afin d'utiliser des paramètres de privilèges différents lors de la prochaine invocation de la JVM.
|
Privilèges d'exécution pour les commandes d'événements |
||||||||||||||||||||||||||||||||||||||||||||
|
Les propriétés suivantes sont utilisées pour ajuster les privilèges des commandes lancées en réponse à certains événements. Si l'une de ces propriétés est définie, le jeton d'accès du processus Wrapper sera dupliqué et les privilèges spécifiés seront ajustés dans la copie du jeton. La commande d'événement sera alors lancée dans le contexte de sécurité représenté par ce nouveau jeton. Seuls les privilèges qui existent dans le jeton d'accès de la commande d'événement (et qui existent donc également dans le jeton du processus Wrapper) peuvent être ajustés. Gardez à l'esprit que la liste des privilèges peut être modifiée à deux niveaux avant le lancement d'une commande d'événement : lors de l'installation d'un service Windows si des privilèges requis ont été spécifiés, ou si un ou plusieurs privilèges ont été supprimés au démarrage du Wrapper. NOTELa possibilité de contrôler les privilèges à différents niveaux lors du lancement des processus permet des configurations comme la suivante : Afin d'activer un certain privilège pour une commande d'événement, celui-ci doit également exister pour le processus Wrapper. Cependant, le processus Java peut supprimer complètement ce privilège, garantissant ainsi qu'il ne sera utilisé ni par l'application Java ni par aucun de ses processus enfants.
|
Journalisation |
||||||||||||
|
Interroger les privilèges d'un service Windows |
||||||||||||
Il est possible d'interroger les privilèges requis d'un service Windows, ainsi que les privilèges d'exécution du processus Wrapper et de ses processus enfants, avec une seule commande : .\wrapper.exe -qr .
Il est également possible d'interroger les privilèges d'un autre service en ajoutant « = », suivi du nom du service, à l'option -qr (« -qr=serviceName »).
|










