web-dev-qa-db-fra.com

Les serveurs Linux simples ont-ils vraiment besoin d'un utilisateur non root pour des raisons de sécurité?

Jouer l'avocat du diable ,

Supposons que j'achète un serveur Linux auprès d'un hébergeur. On me donne un mot de passe pour l'utilisateur root et on me dit que je peux me connecter en utilisant SSH. Le seul but de ce serveur est d'héberger un ou plusieurs sites Web, éventuellement avec SSL correctement configuré et activé.

Ma connexion initiale consistera à installer (via un système de gestion de packages bien révisé et largement utilisé) et à configurer (en éditant des fichiers dans /etc) un serveur Web, une base de données, des logiciels qui n'accèdent pas à Internet et un serveur d'applications Web (PHP-FPM, Unicorn, ce genre de choses). La gestion des packages était suffisamment intelligente pour configurer des utilisateurs non privilégiés pour exécuter les serveurs, une configuration que je maintiens. Ensuite, je mets des fichiers de site Web (PHP, Ruby, Python, etc.) dans /var/www et chown tous ces fichiers appartenant au même utilisateur non privilégié qui s'exécute s'exécute comme le processus du serveur Web (c'est-à-dire. www-data).

À l'avenir, je me connecterai uniquement, et uniquement pour mettre à jour les fichiers du site Web et pour effectuer certaines opérations en lecture seule, comme l'examen des journaux.

Dans le scénario ci-dessus, y a-t-il raison liée à la sécurité , pourquoi je devrais créer un compte utilisateur non root utiliser plutôt que l'utilisateur root? Après tout, presque toutes les commandes seraient exécutées avec Sudo si je m'étais connecté avec un utilisateur non root.

Veuillez noter: Je comprends qu'il existe de nombreuses raisons universellement convaincantes de sécurité et de non-sécurité d'utiliser des utilisateurs non root. Je ne demande pas la nécessité de comptes d'utilisateurs non root. Ma question est strictement limitée à la configuration limitée que je décris ci-dessus. Je pense que cela est pertinent car même si mon exemple est limité, il est très courant.

48
user31679

Il y a quelques raisons:

  • traçabilité: Les commandes exécutées avec Sudo sont enregistrées. Les commandes exécutées avec bash sont parfois enregistrées, mais avec moins de détails et en utilisant un mécanisme facile à bloquer.

  • séparation des privilèges: presque chaque commande n'est pas la même chose que chaque commande. Il y en a encore beaucoup qui ne nécessitent pas de racine

  • édition de fichiers: les fichiers Web appartiennent à un utilisateur non root et sont gérés par un utilisateur non root ... alors pourquoi les éditez-vous avec root?

  • atténuation des attaques: Considérez le scénario hypothétique totalement différent, même suivant: votre poste de travail contient des logiciels malveillants qui bloquent votre connexion FTP/SCP/SFTP/SSH de la base de données d'authentification stockée du client approprié et le transmet à l'attaquant. L'attaquant se connecte à votre appareil pour faire du mal. Maintenant, peuvent-ils couvrir leurs traces, ou ce qu'ils font sera-t-il visible pour vous? Je parle à quelqu'un de nouveau plus d'une fois par semaine à qui cela s'est récemment produit.

  • atténuation automatique des attaques: Un serveur piraté au Brésil analyse votre réseau et tire un serveur SSH à l'écoute. Quel nom d'utilisateur l'attaquant utilise-t-il pour son attaque automatisée? Peut-être webuser, ou test, ou www ou admin - mais plus que tout autre: root.

Il y a certainement bien d'autres raisons, mais ce sont les premières à me venir à l'esprit.

42
tylerl

Je viens de voir ça, un peu tard, mais ...

Non - un simple serveur web peut être administré par root et toujours être fondamentalement sécurisé.

Il est vrai que l'administration en tant que non root présente certains avantages, mais ceux-ci sont mineurs et largement surestimés par la plupart des conseils de sécurité. Il est beaucoup plus important de sécuriser vos services face au réseau. Gardez le serveur Web corrigé et recherchez les défauts de la couche application dans votre application Web.

Pour répondre aux points de tylerl:

  • traçabilité - cela pourrait être valide si vous aviez plusieurs administrateurs, mais si c'est juste vous, alors vous êtes entièrement traçable en tant que root.

  • séparation des privilèges - Je m'attends à ce que vous fassiez si peu en tant que non root que cela ne fait aucune différence.

  • édition de fichiers - Voir ci-dessus

  • atténuation des attaques - Si vous avez un malware sur votre poste de travail, tous les paris sont désactivés. Si vous utilisez Sudo sans mot de passe, l'attaque qu'il mentionne fonctionne toujours. Si vous utilisez su, le malware peut obtenir votre mot de passe à l'aide d'un enregistreur de frappe.

  • atténuation automatique des attaques - Si vous suivez les conseils standard d'utilisation de mots de passe forts (ou utilisez des clés SSH à la place), un forceur brutal n'y entrera pas de toute façon.

20
paj28

La meilleure raison d'utiliser un utilisateur non root pour les activités quotidiennes est de développer de bonnes habitudes et de bonnes connaissances pour un moment où vous faites quelque chose de réel sur un système * nix. Sans cela, vous n'aurez jamais à penser aux autorisations d'accès aux fichiers, aux groupes, etc.

J'ajouterais qu'une autre question connexe est de savoir si root doit avoir son propre mot de passe. Il est recommandé de prendre l'habitude de fournir le mot de passe root pour utiliser Sudo. Un bon rappel que ce que vous faites affecte l'intégrité de la configuration du système d'exploitation. Même les administrateurs système aiment savoir que tout utilisateur aléatoire ne peut pas tanker tout le système avec une commande Sudo rm -R /. * nix le fera sans vous dire un autre mot.

Cela revient aussi à la culture. Si vous ne faites que jouer pour voir à quoi cela ressemble, c'est une chose - faites-le dans une boîte virtuelle et abusez-en au cœur de votre contenu. (J'aime particulièrement faire la chose rm -R/puis regarder avec htop pour voir ce qui cesse de fonctionner quand. Mais cela vieillit rapidement une fois que vous savez que cela conduit toujours à l'un des deux résultats: restaurer à partir d'une sauvegarde ou réinstaller.)

Si jamais vous avez un objectif commercial pour utiliser une machine * nix, je soumets qu'il est bon de s'intégrer dans la culture des autres qui utilisent ce même système, même si vous êtes l'administrateur.

0
SDsolar