J'ai un serveur sans tête qui est connecté à distance par plusieurs utilisateurs. Aucun des autres utilisateurs ne se trouve dans le fichier sudoers, ils ne peuvent donc pas obtenir root via sudo
. Cependant, comme les autorisations su
sont -rwsr-xr-x
présentes, rien ne les empêche de tenter de forcer brutalement le mot de passe root.
On pourrait faire valoir que si un utilisateur connaît le mot de passe root, il peut de toute façon compromettre le système, mais je ne pense pas que ce soit le cas. OpenSSH est configuré avec PermitRootLogin no
et PasswordAuthentication no
, et aucun des autres utilisateurs n'a d'accès physique au serveur. Pour autant que je sache, le monde exécuter l'autorisation sur /usr/bin/su
est la seule avenue pour les utilisateurs qui tentent de se rooter sur mon serveur.
Ce qui me laisse encore plus perplexe en ce qu'il ne semble même pas utile. Cela me permet de courir su
directement au lieu de devoir le faire sudo su
, mais ce n'est guère un inconvénient.
Suis-je en train d'oublier quelque chose? Le monde exécute-t-il la permission su
juste pour des raisons historiques? Y a-t-il des inconvénients à supprimer cette autorisation que je n'ai pas encore rencontrée?
sudo
installée? Je dirais que c'est un gros inconvénient là-bas;)Réponses:
Un point qui manque dans la réponse d' ilkkachu est que l'élévation à la racine n'est qu'une utilisation spécifique pour
su
. L'objectif général de su est d'ouvrir un nouveau shell sous le compte de connexion d'un autre utilisateur. Cet autre utilisateur pourrait êtreroot
(et peut-être le plus souvent), maissu
peut être utilisé pour supposer toute identité que le système local peut authentifier.Par exemple, si je suis connecté en tant qu'utilisateur
jim
et que je souhaite enquêter sur un problèmemike
signalé, mais que je ne parviens pas à reproduire, je peux essayer de me connecter en tant quemike
et d'exécuter la commande qui lui pose problème.L'utilisation de l'
-l
option de lesu
fait simuler une connexion complète (selon laman
page).Ce qui précède nécessite cependant la connaissance du
mike
mot de passe de. Si j'aisudo
accès, je peux me connecter commemike
même sans son mot de passe.En résumé, la raison pour laquelle les autorisations sur l'
su
exécutable sont comme vous le montrez, c'est parce qu'ilsu
s'agit d'un outil à usage général qui est disponible pour tous les utilisateurs du système.la source
sudo
j'ai oublié que celasu
peut être utilisé pour plus que justesudo -s
. Et sans être un sudoer, ce serait le seul moyen de changer d'utilisateur sans modifier les clés ssh. Pour mon cas d'utilisation, c'est une autre raison de supprimer l'autorisation, mais je comprends maintenant pourquoi l'autorisation d'exécution du monde est définie par défaut. Merci!sudo
, aussi, peut être utilisé pour assumer l'identité d'un utilisateur autre queroot
. Cela permet simplement un contrôle plus fin sur qui peut faire quoi comme qui, y compris en supposant une autre identité sans avoir besoin du mot de passe de cette identité.su
"super utilisateur", ce qu'il fait quand aucun utilisateur n'est spécifié (ou root est spécifié explicitement) mais il signifie également "changer d'utilisateur". Cette seconde utilisation desu
est donc facilement oubliée.Historiquement (sur les unités non GNU), ce n'était pas le cas, ou du moins il vérifiait manuellement si vous faisiez partie d'un groupe appelé "roue"
su
. La version GNU desu
ne reproduisait pas cette fonctionnalité à cause de l'idéologie de RMS sur le contrôle d'accès à l'époque:Vous pouvez trouver beaucoup plus sur la question en Googling "Wheel Group RMS" ou similaire.
la source
Oui. En supposant que votre système Linux habituel, le
pam_unix.so
module retarde une tentative d'authentification échouée de ~ deux secondes, mais je ne pense pas qu'il y ait quoi que ce soit pour arrêter les tentatives simultanées.Les tentatives échouées sont bien sûr enregistrées:
Le forçage brutal d'un mot de passe devrait apparaître en bonne place dans les journaux, si vous avez un type de système pour les surveiller. Et si vous avez des utilisateurs locaux non fiables, vous devriez peut-être le faire. Les utilisateurs locaux non fiables peuvent également tenter d'utiliser des exploits d'escalade de privilèges uniquement locaux, et ils sont beaucoup plus courants que l'escalade de privilèges à distance.
Bien sûr, c'est utile, cela vous permet de vous élever à
root
, si vous connaissez le mot de passe.sudo su
est quelque peu redondant. Il n'est pas nécessaire d'utiliser deux programmes destinés à vous permettre d'exécuter des programmes en tant qu'autre utilisateur, un suffit. Utilisez simplementsudo -i
ousudo -s
(ousudo /bin/bash
etc.) si vous souhaitez exécuter le shell.Voir au dessus. Eh bien, tous les systèmes n'ont pas
sudo
d'alternative, je ne sais pas si vous considérez cela comme historique.Pas vraiment, non pour autant que je sache. Je pense que certains systèmes ont
su
mis en place de sorte que seuls les membres d'un groupe particulier ("wheel
") peuvent l'exécuter. Vous pouvez faire de mêmesudo
si vous le souhaitez (chown root.sudousers /usr/bin/sudo && chmod 4710 /usr/bin/sudo
).Ou vous pouvez simplement supprimer l'un ou les deux programmes si vous n'en avez pas besoin. Bien que sur Debian, il soit
su
livré avec lelogin
paquet, ce n'est donc probablement pas une bonne idée de supprimer le paquet dans son ensemble. (Et l'appariementlogin
etsu
ensemble comme ça semble quelque peu historique.)la source
wheel
groupe à utilisersu
. Il y a certains systèmes BSD (je ne peux parler que pour OpenBSD) qui ne sont pas du tout livréssudo
(c'est un paquet tiers). OpenBSD adoas
une réimplémentation des bases desudo
, mais il est désactivé par défaut lors de l'installation d'un nouveau système.wheel
si vous souhaitezsu
rooter. Tout compte peut accédersu
à tout compte non root pour lequel il dispose du mot de passe, quelle que soit son appartenance auwheel
groupe.su
l'environnement? Cela ne semble pas faire ça sur Debian ...Vous avez déjà de bonnes réponses, mais il n'y a pas une partie de votre message qu'elles ne traitent.
C'est une hypothèse dangereuse. Si vous avez défini un bon mot de passe pour root, dans la plupart des cas, il est beaucoup plus probable qu'une escalade de privilèges réussie soit due à l'exploitation d'un bogue dans le noyau ou d'un binaire setuid (vous pouvez bien sûr également supprimer le setuid un peu de ceux-ci, mais
passwd
est setuid, et si vous voulez une haute sécurité, vous devez également offrir cela à vos utilisateurs, et leur refuser l'option de changer leur mot de passe n'est pas compatible avec cela).la source
su doit être exécutable dans le monde entier pour que tout le monde puisse l'exécuter. Dans de nombreux systèmes, il peut être utilisé pour passer à un autre utilisateur, en fournissant son mot de passe.
Si vous êtes préoccupé par le fait que quelqu'un applique brutalement le mot de passe root, vous pouvez simplement le désactiver. (rendre le hachage invalide pour qu'aucun mot de passe donné ne puisse le correspondre)
Je ne connais pas le consensus, mais j'envisagerais de pouvoir me connecter en tant que root directement un problème de sécurité en soi.
la source
Les autres réponses sont correctes en disant "su" vous permet de vous connecter à des comptes autres que root.
Une remarque sur "sudo su" cependant. Cela vous permet en fait de vous connecter au compte root sans connaître le mot de passe root. Vous devez connaître le mot de passe du compte avec lequel vous exécutez sudo et avoir ce compte dans le fichier sudoers.
la source
sudoers
avoirtargetpw
ou derootpw
définir.su
être exécutable par tous.