J'ai développé une application qui utilise NTP pour changer l'heure du réseau, pour synchroniser deux de mes ordinateurs. Il fonctionne comme root
, puisque seul ce dernier est autorisé à changer l'heure et la date sur Linux (je suppose).
Maintenant, je veux l'exécuter en tant qu'utilisateur. Mais, je dois accéder à l'heure.
- Est-ce une bonne pratique d'exécuter un démon sous un compte utilisateur non root?
- Dois-je donner à mon application une capacité telle que
CAP_SYS_TIME
? - N'introduit-il pas une faille de sécurité?
- Y a-t-il une meilleure façon?
security
daemon
access-control
Anonyme12223
la source
la source
ntp
compte d'utilisateur (au moins sur les systèmes Linux), vous ne devriez donc pas être obligé d'effectuer cette modification. Quel package NTP avez-vous installé?Réponses:
Oui, et c'est courant. Par exemple, Apache démarre en tant que root, puis lance un nouveau processus en tant que www-data (par défaut).
Comme dit précédemment, si votre programme est piraté (ex: injection de code), l'attaquant n'obtiendra pas un accès root, mais sera limité aux privilèges que vous avez accordés à cet utilisateur spécifique.
C'est une bonne idée car vous évitez d'utiliser setuid et limitez les autorisations à cette capacité très spécifique.
Vous pouvez augmenter la sécurité, par exemple:
la source
USER
dans un répertoire, utilisezchroot
(exécutez-le en tant qu'utilisateur root). Cependant, vous devez créer et initialiser une prison (répertoire) avant. En bref, vous devez placer les bibliothèques et les fichiers binaires dont votre processus a besoin dans cette prison, puis appelerchroot <path/to/jail> <command>
. Un bon tutoriel avec quelques exemples dont vous avez besoin est disponible iciSauf si vous avez des raisons solides et irréfutables, vous devez simplement utiliser le package NTP fourni avec votre distribution GNU / Linux. Le démon NTP standard a mis des années à mûrir et est doté de fonctionnalités sophistiquées telles que le ralentissement ou l'accélération de l'horloge de votre système pour le synchroniser avec un réseau ou une horloge GPS. Il a été conçu pour synchroniser les horloges, il est donc probablement le meilleur outil disponible à cet effet.
ntpd
est toujours maintenu, à en juger par les récentes mises à jour (au moment de la rédaction de cet article). Si vous avez besoin de plus de fonctionnalités, je vous suggère de contacter directement les développeurs, faites confiance à ce qu'ils ont à dire à ce sujet.la source
Si vous avez un programme qui doit être capable de faire la fonction X (par exemple, manipuler l'horloge), et que vous pouvez lui donner le privilège / le pouvoir de faire la fonction X et rien d'autre, c'est mieux que de lui donner toute la boîte d'alphabet soupe. C'est ce que l'on appelle le principe du moindre privilège . Considérez ce que si votre programme a un bogue - soit une erreur de programmation ordinaire ou une vulnérabilité de sécurité exploitable. S'il s'exécute en tant que "root", il pourrait supprimer les fichiers de tout le monde - ou les envoyer à un attaquant. Si la seule chose que le programme est capable de faire est de manipuler l'horloge (et les fonctions non privilégiées, comme la manipulation de fichiers dans un répertoire verrouillé), alors c'est le pire qui puisse arriver si le programme devient voyou.
la source