Comment désactiver la connexion root dans Ubuntu?


28

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 le faire ( sudo passwd -l root, jouer avec /etc/shadow, etc.), mais nulle part cela ne dit quelle est la meilleure façon / la plus sensée de le faire. J'ai fait sudo passwd -l rootmais 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?


1
La désactivation de l'accès local pour root présente un avantage de sécurité presque nul. Un utilisateur disposant d' un accès physique peut alimenter votre box de nombreuses manières.
jscott

Point pris. Pas besoin de vous connecter en tant que root si vous pouvez simplement retirer les disques durs. J'aimerais toujours savoir comment rétablir le compte root tel qu'il était avant de le changer, ne serait-ce que par curiosité maintenant.
Ben Hymers

voir la mise à jour de ma réponse ci-dessous. Je pense que je comprends maintenant ce que vous demandez.
jscott

@jscott lors de la désactivation de root peut ne pas fournir d'avantage de sécurité contre l'intrusion, mais ne pas se connecter en tant que root fournit un interrupteur de sécurité contre les sys de destruction avec une rmcommande mal placée ou autre. Quelque chose que j'ai appris à la dure. Oui, on ne peut tout simplement PAS se connecter en tant que root, mais sa désactivation est logique du point de vue de l'administrateur système.
codechimp

Semble très bien pour VPS ou l'hébergement, pas de prise de tête vraiment.
jjxtra

Réponses:


34

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' sshaccès root en modifiant /etc/ssh/sshd_configpour contenir:

PermitRootLogin no

Jouant avec /etc/shadow, chsh -s /bin/false roottout peut être défait 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

Aucun système n'est sécurisé lorsqu'un attaquant a un accès physique à ce système. Lorsque vous pouvez modifier / etc / shadow, qu'est-ce qui vous empêche de modifier / etc / ssh / sshd_config?
Sven

@SvenW: Exactement. C'est pourquoi je discute de l'utilité, sur le plan de la sécurité, de même prendre la peine de "désactiver" root. Restreignez l'accès root, oui. Désactivez le compte, non.
jscott

4
sudo service ssh restart ....... après avoir fait cela.
Naweed Chougle

Le fichier d'aide référencé donne maintenant la commande suivante: sudo passwd -dl root
MrG

21

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 quand même si vous le jugez nécessaire).


Désolé, j'aurais dû dire, c'est pour les connexions locales. J'ai mis à jour la question.
Ben Hymers

4

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 essaye même de se connecter en tant que root, il les bloque essayer des attaques supplémentaires.


Bonne réponse, merci! J'ai déjà configuré fail2ban, je le configurerai pour bloquer la première tentative de connexion en tant que root, bon conseil.
Ben Hymers

2

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.


J'ai le sentiment que '*' est identique à '!', Selon la réponse acceptée, donc je voterai cette réponse aussi.
Ben Hymers

1

JR et al,

Vos AllowUsers m'ont conduit à ce 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.


0

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

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)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.