En tant qu'administrateur Linux, l'une de mes tâches consiste-t-elle à effectuer une sorte de tâche pour supprimer les privilèges root des applications exécutées sur mes systèmes ?
Oui. C'est votre travail assurez-vous qu'il est fait. Si l'application ne le fait pas, vous devez remarquer que l'application ne le fait pas et le faire vous-même.
Ou est-ce que je compte simplement sur les développeurs d'applications pour m'assurer qu'ils ont écrit leur code pour faire cela ?
Ne vous comptez pas sur les développeurs d'applications d'avoir fait quoi que ce soit. Il existe de nombreux outils disponibles pour un administrateur système Linux pour obtenir les faits de ce que font les applications au moment de l'exécution.
Il est du devoir du programmeur de l'application de s'assurer que l'application abandonne les privilèges root et fonctionne avec des droits non privilégiés. Si l'application ne le fait pas, vous ne pouvez rien y faire, à part vous abstenir d'utiliser l'application, soumettre un rapport de bogue au développeur ou implémenter vous-même les modifications nécessaires dans le code.
D'un autre côté, c'est vous , en tant qu'administrateur, qui choisit sous quel utilisateur l'application démarre ; la règle d'or est de ne jamais accorder à un processus plus de privilèges qu'il n'en a besoin pour s'exécuter. Ainsi, vous pouvez créer un utilisateur sans privilège - regardez dans /etc/passwd
pour avoir une idée des comptes système - et exécutez l'application en tant que cet utilisateur. (Vous devez rarement le faire à la main; généralement, tout cela est pris en charge lorsque vous installez un logiciel via le gestionnaire de packages.) Cependant, si l'application nécessite des privilèges root pour démarrer, puis ne parvient pas à supprimer ces privilèges au milieu de la course, alors c'est hors de votre contrôle.
Par exemple, les anciennes versions de sendmail
nécessaire pour exécuter SUID root, qui était une faille de sécurité si un attaquant distant parvenait à exploiter avec succès une vulnérabilité du programme. Si vous aviez sendmail
s'exécutant uniquement en tant que relais de messagerie, vous pouvez l'exécuter en tant qu'utilisateur non privilégié.
Je dirais qu'en tant qu'administrateurs système, il est de notre devoir de donner le moins de privilèges possible aux applications et aux utilisateurs (ce qui leur permet de faire leur travail).
Un utilisateur déployant des applications Tomcat/Java ou des pages Web, ou déployant une application avec accès à la base de données, a rarement ou peu de besoins légitimes d'accès root.
De nos jours, la plupart des frameworks suppriment également root par défaut.
Par exemple, pour les développeurs utilisant ici des frameworks Java, nous donnons simplement aux développeurs l'accès à un utilisateur non privilégié capable de déployer, et certaines commandes sudo limitées au (re)démarrage et à l'arrêt de quelques services clés.
J'irais même plus loin que ce n'est pas l'affaire de l'équipe de développement de s'occuper des serveurs de production.
D'après mon expérience de vie, l'équipe de développement est souvent soucieuse de faire son travail et n'est pas capable de gérer correctement la sécurité et la capacité sans planification, conseils et intervention proactive de l'équipe d'administration système.