web-dev-qa-db-fra.com

Pourquoi l'AMI Ubuntu AMS d'AWS est-elle dotée d'un utilisateur "ubuntu" au lieu d'autoriser uniquement la connexion root?

L'image Ubuntu d'AWS est démarrée avec vos informations d'identification ajoutées à un utilisateur appelé ubuntu. Une fois la machine installée, vous pouvez SSH dans votre nouvelle boîte avec l’utilisateur ubuntu.

Cet utilisateur est un sudoer, et basé sur le fichier sudoers, il peut faire à peu près tout ce que root peut faire, tant que vous préférez une commande avec Sudo, sans qu'aucun mot de passe ne soit entré. Cela annule certains des avantages de Sudo car il n’existe pas de mot de passe interactif. Autant que je sache, cela signifie également que vous ne devez jamais exécuter d'applications grand public, car si cet utilisateur pouvait trouver un moyen d'exécuter des commandes Shell via votre application, il pourrait prendre le contrôle de votre système.

Ma vraie question est: pourquoi cet utilisateur existe-t-il? Pourquoi ne pas simplement accorder un accès SSH au compte root, en espérant que quelqu'un créerait des comptes sans privilège pour exécuter une application? Avoir cet utilisateur ubuntu ne crée-t-il pas simplement de la confusion? Je pouvais voir quelqu'un penser "mon application systemd ne fonctionne pas en tant que root, elle s'exécute en tant qu'ubuntu, donc je suis en sécurité".

Me manque-t-il un objectif de ce type d'utilisateur, qui n'est pas root, mais un sudoer sans mot de passe?

2
kbuilds

J'ai discuté avec un de mes amis qui travaille dans l'équipe EC2 et il m'a donné une très bonne explication.

La principale différence à traiter ici concerne un utilisateur qui peut exécuter Sudo sans mot de passe et peut obtenir tous les privilèges avec Sudo (sudoer sans mot de passe), et l'utilisateur root lui-même. Ma pensée initiale était que ces deux utilisateurs sont essentiellement les mêmes, mais comme mon ami l'explique, compromettre le sudoer sans mot de passe est intrinsèquement plus difficile que l'utilisateur root, si le vecteur d'attaque passe par une application.

La difficulté supplémentaire tient au fait que pour obtenir les privilèges Sudo en tant que sudoer, vous devez disposer d’un accès Shell. Sans Shell, une application exécutée en tant que sudoer sans mot de passe est essentiellement un utilisateur normal. Cependant, cela signifie que si le sudoer sans mot de passe exécutait une application capable d'exécuter des commandes Shell pour le compte de l'utilisateur (par exemple, Jenkins ou un autre outil de CI), le système pourrait toujours être compromis.

Il est probablement toujours plus sûr d'exécuter des applications en tant que non-sudoer, mais dans la plupart des cas, j'imagine que le sudoer sans mot de passe est suffisamment sûr.

Contexte complet de la discussion:

enter image description here

enter image description here

2
kbuilds