41 votes

Plusieurs administrateurs système Linux travaillant en tant que root

Dans notre équipe, nous avons trois administrateurs système Linux expérimentés chargés d'administrer quelques dizaines de serveurs Debian. Auparavant, nous avons tous travaillé en tant que root en utilisant l'authentification par clé publique SSH. Mais nous avons eu une discussion sur quelle est la meilleure pratique pour ce scénario et nous n'avons pu nous mettre d'accord sur rien.

La clé publique SSH de tout le monde est placée dans ~root/.ssh/authorized_keys2

  • Avantage : facile à utiliser, le transfert d'agent SSH fonctionne facilement, peu de surcharge
  • Inconvénient : manque d'audit (on ne sait jamais quel "root" a apporté un changement), les accidents sont plus probables

Utilisation de comptes personnalisés et sudo

De cette manière, nous nous connecterions avec des comptes personnalisés en utilisant des clés publiques SSH et utiliserions sudo pour effectuer des tâches ponctuelles avec les permissions de root. De plus, nous pourrions nous donner le groupe "adm" qui nous permet de consulter les fichiers journaux.

  • Avantage : bon audit, sudo nous empêche de faire des choses idiotes trop facilement
  • Inconvénient : le transfert d'agent SSH ne fonctionne plus, c'est une corvée car presque rien ne peut être fait en tant que non-root

Utilisation de plusieurs utilisateurs UID 0

C'est une proposition très originale de l'un des administrateurs système. Il propose de créer trois utilisateurs dans /etc/passwd ayant tous l'UID 0 mais des noms de connexion différents. Il affirme que ce n'est pas réellement interdit et permet à tout le monde d'avoir l'UID 0 tout en étant capable d'auditer.

  • Avantage : le transfert d'agent SSH fonctionne, l'audit pourrait fonctionner (non testé), pas de problème avec sudo
  • Inconvénient : cela semble assez peu recommandé - je n'ai trouvé aucune documentation qui l'autorise comme méthode permise

Que suggéreriez-vous ?

1voto

Sans aucun doute, optez pour l'option 2, mais utilisez des groupes pour donner à chaque utilisateur le plus de contrôle possible sans avoir besoin d'utiliser sudo. Mettre sudo devant chaque commande en perd la moitié de l'avantage car vous êtes toujours dans la zone dangereuse. Si vous rendez les répertoires pertinents inscriptibles par les sysadmins sans sudo, vous ramenez sudo à l'exception ce qui fait que tout le monde se sent plus en sécurité.

1voto

Grant Davis Points 928

Autrefois, sudo n'existait pas. Par conséquent, avoir plusieurs utilisateurs UID 0 était la seule alternative disponible. Mais ce n'est toujours pas si bon, notamment avec la journalisation basée sur l'UID pour obtenir le nom d'utilisateur.

De nos jours, sudo est la seule solution appropriée. Oubliez tout le reste.

0voto

dmh2000 Points 380

Il est documenté comme étant permis par le fait. Les unices BSD ont eu leur compte toor pendant longtemps, et les utilisateurs bashroot tendent à être une pratique acceptée sur les systèmes où csh est standard (pratique acceptée ;)

0voto

Peut-être que je suis bizarre, mais la méthode (3) est également ce qui m'est venu à l'esprit en premier. Avantages : vous auriez le nom de chaque utilisateur dans les journaux et sauriez qui a fait quoi en tant que root. Inconvénients : ils seraient tous root tout le temps, donc les erreurs peuvent être catastrophiques.

J'aimerais remettre en question pourquoi vous avez besoin que tous les administrateurs aient un accès root. Les 3 méthodes que vous proposez ont un inconvénient distinct : dès qu'un administrateur exécute un sudo bash -l ou sudo su - ou autre, vous perdez votre capacité à suivre qui fait quoi et, après cela, une erreur peut être catastrophique. De plus, en cas de comportement incorrect possible, cela pourrait même devenir beaucoup pire.

À la place, vous pourriez envisager d'adopter une autre approche :

  • Créez vos utilisateurs administrateurs en tant qu'utilisateurs réguliers
  • Décidez qui doit effectuer quelle tâche (gestion apache / gestion postfix, etc.)
  • Ajoutez des utilisateurs à des groupes liés (comme ajouter "martin" à "postfix" et "mail", "amavis" si vous l'utilisez, etc.)
  • Réglez les autorisations (chmod -R g+w postfix:postfix /etc/postfix)
  • Donnez seulement des pouvoirs sudo relatifs : (visudo -> permettre à martin d'utiliser /etc/init.d/postfix , /usr/bin/postsuper etc.)

Ainsi, martin serait en mesure de gérer postfix en toute sécurité, et en cas d'erreur ou de comportement incorrect, vous ne perdriez que votre système postfix, pas l'ensemble du serveur.

La même logique peut être appliquée à tout autre sous-système, tel que apache, mysql, etc.

Bien sûr, c'est purement théorique à ce stade, et cela pourrait être difficile à mettre en place. Cela semble cependant être une meilleure manière de procéder. Du moins pour moi. Si quelqu'un essaie cela, merci de me faire savoir comment cela s'est passé.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X