web-dev-qa-db-fra.com

Comment désactiver la connexion root dans Ubuntu?

il y a quelque temps, j'ai donné un mot de passe à root pour que je puisse me connecter en tant que root et faire certaines choses. Maintenant, je veux désactiver la connexion root pour renforcer la sécurité, car je vais exposer mon service à Internet. J'ai vu plusieurs façons de procéder (Sudo passwd -l root, jouant avec /etc/shadow, etc.), mais cela ne dit nulle part quelle est la meilleure façon/la plus sensée de le faire. J'ai fait Sudo passwd -l root mais j'ai vu des conseils qui disent que cela peut affecter les scripts d'initialisation, et que ce n'est pas aussi sécurisé qu'il n'y paraît car il demande toujours un mot de passe si vous essayez de vous connecter, plutôt que de refuser catégoriquement l'accès. Alors, quel serait le moyen d'y parvenir?

EDIT: pour clarifier, c'est pour la connexion locale en tant que root; J'ai déjà désactivé la connexion à distance via SSH. Même si vous essayez de vous connecter en tant que root sur SSH, vous êtes toujours invité à saisir le mot de passe de root (qui échoue toujours). Est-ce mauvais?

31
Ben Hymers

Il est discutable, pour moi, que la désactivation de root vaut les problèmes potentiels. Je n'ai jamais testé un serveur configuré de cette manière. Ma préférence est d'autoriser uniquement l'accès local root. Si un attaquant a un accès physique à votre serveur, vous pouvez tout de même oublier tout ce que vous avez fait pour "sécuriser" votre installation.

Désactivez l'accès root ssh en modifiant /etc/ssh/sshd_config contenir:

PermitRootLogin no

Jouer avec /etc/shadow, chsh -s /bin/false root tout peut être annulé avec un simple CD/clé USB amorçable.

Mise à jour selon votre commentaire:

De help.ubuntu.com : "Par défaut, le mot de passe du compte root est verrouillé dans Ubuntu". Veuillez consulter la section "Désactivation de votre compte root" en particulier. Afin de réinitialiser l'état du compte root, à install-default, utilisez la commande suivante:

Sudo usermod -p '!' root
36
jscott

Je suppose que vous vous référez à la connexion à distance via ssh. Ajoutez la ligne suivante à /etc/ssh/sshd_config:

PermitRootLogin no

et le redémarrage du service ssh

Sudo service ssh restart

Cela devrait faire l'affaire et vous pouvez garder votre compte root tel quel (ou essayer de le désactiver de toute façon si vous le jugez nécessaire).

23
kynan

La question principale a reçu plusieurs réponses, mais pas la question secondaire. SSH vous invite à saisir le mot de passe après avoir entré root après l'avoir désactivé en tant que fonction de sécurité. Il se déclenchera également si vous essayez de vous connecter en tant que lkjfiejlksji.

C'est pour empêcher quelqu'un de tester une pile de noms d'utilisateurs, pour essayer de trouver ceux qui sont valides sur votre système. Cependant, du point de vue de la sécurité, si vous avez désactivé root sur SSH, je configurerais également un programme de détection de bruteforce (comme fail2ban), et le définirais de sorte que si quelqu'un essaie même de se connecter en tant que root, il les bloque essayer des attaques supplémentaires.

5
Ryan Gooler

Remplacer le mot de passe crypté par un * dans/etc/shadow (deuxième champ, après le premier ":") est la meilleure façon, à mon humble avis. De plus, désactivez la connexion root pour ssh (de cette façon, il est tout simplement impossible de se connecter via ssh en tant que root) et peut-être restreindre ssh aux connexions par certificat, ce qui est beaucoup plus sécurisé que les connexions par mot de passe.

Dans la plupart des cas, SSH devrait être le seul service accessible de l'extérieur qui autorise potentiellement la connexion root, de sorte que cette porte serait verrouillée.

Afin de restreindre davantage cela, vous pouvez installer quelque chose comme fail2ban, qui interdit les adresses IP pendant un certain temps après un certain nombre de tentatives de connexion infructueuses.

2
Sven

JR et al,

Vos AllowUsers m'ont amené à cela https://help.ubuntu.com/community/SSH/OpenSSH/Configuring

Sudo vi/etc/ssh/sshd_config

PermitRootLogin oui (changé en non)

(ajouter une ligne au bas du fichier) DenyUsers user1 user2

enregistrer et quitter, puis

Sudo service ssh restart

Résolu mon problème. Merci à tous.

1
jeff

Si vous souhaitez désactiver la connexion root locale, vous pouvez essayer de modifier/etc/passwd et remplacer/bin/bash par/bin/false. CEPENDANT, puisque je ne l'ai pas testé, je dirais de laisser une session root ouverte sur le côté, de la tester, et s'il y a un effet secondaire bizarre, de la changer à nouveau.

0
Julien Vehent

Re: Sécurité.

À mon humble avis, vous ne pouvez pas faire grand-chose, en termes de sécurité, à moins de débrancher la boîte, de la déconnecter du réseau et de la souder à l'intérieur d'une boîte en acier au carbure pare-balles de 3 "d'épaisseur.

Pensez-y de cette façon - si les gens peuvent pirater le ministère de la Défense, la CIA, le FBI et la Citibank - nous autres simples mortels ne pouvons pas faire beaucoup mieux.

Re: sécurité SSH.

Non seulement j'interdis l'accès root via ssh, j'ai également défini le paramètre "AllowUsers" sur mon, et seulement mon, nom d'utilisateur. De cette façon, personne, sauf mon propre utilisateur, ne peut se connecter via ssh. Cela peut être redondant car dans mon cas, je ne crée de toute façon qu'UN utilisateur non root.

Malheureusement, comme d'autres l'ont dit à plusieurs reprises, dès que quelqu'un a physiquement accès à la boîte, tous les paris sont OFF!

Échange de certificats pour la connexion ssh? Hmmmm. . . . ça m'a l'air bien. Comment faites-vous?

Jim (JR)

0
Jim