web-dev-qa-db-fra.com

Autoriser root à se connecter via ssh uniquement avec une authentification par clé

J'ai des doutes sur certaines configurations de serveur ssh sur /etc/ssh/sshd_config. Je veux le prochain comportement:

  1. L'authentification par clé publique est le seul moyen de s'authentifier en tant que root (pas d'authentification par mot de passe ou autre)
  2. Les utilisateurs normaux peuvent utiliser les deux (mot de passe et authentification par clé publique)

Si je mets PasswordAuthentication no mon premier point est satisfait mais pas le second. Il existe un moyen de définir PasswordAuthentication no uniquement pour root?

55
mavillan

Vous pouvez le faire en utilisant la directive PermitRootLogin. Du sshd_config page de manuel:

Spécifie si root peut se connecter à l'aide de ssh (1). L'argument doit être "oui", "sans mot de passe", "commandes forcées uniquement" ou "non". La valeur par défaut est "oui".

Si cette option est définie sur "sans mot de passe", l'authentification par mot de passe est désactivée pour root.

Ce qui suit accomplira ce que vous voulez:

PasswordAuthentication yes
PermitRootLogin without-password
83
jordanm

Vous pouvez utiliser les blocs Match pour configurer certaines options par authentification d'utilisateur ou de groupe ou par adresse IP ou nom d'hôte de l'origine de la connexion.

PasswordAuthentication yes
PermitRootLogin yes

Match User root
PasswordAuthentication no

J'ai une approche encore plus restrictive pour accorder des privilèges root sur mon serveur, ce qui pourrait être intéressant pour les paranoïaques comme moi. Faites attention à ce que vous faites et dans quel ordre, sinon vous pourriez vous retrouver avec un système sur lequel vous ne pouvez pas obtenir un accès root.

  • Créez un groupe spécifique sugroup, dont les membres seront autorisés à devenir root et n'autoriseront que l'authentification par clé pour ce groupe en mettant les lignes suivantes à la fin de sshd_confid:

Match Group sugroup

PasswordAuthentication no

  • Placez la commande auth required pam_wheel.so group=sugroup dans /etc/pam.d/su. Il est peut-être déjà là et il suffit de le décommenter. Cela refuse l'accès root à tous les utilisateurs non membres du sous-groupe
  • Choisissez un mot de passe root solide :)
  • Vérifiez si votre nouvelle méthode d'authentification fonctionne, et seulement si:
  • Refuser la connexion root directe via ssh en utilisant PermitRootLogin no dans /etc/ssh/sshd_config.

En utilisant cette configuration, il est nécessaire d'utiliser une authentification par clé et un mot de passe pour devenir root. J'ai configuré mon serveur comme ça, car je préfère ne pas avoir d'accès root direct via ssh, quelle que soit la méthode d'authentification.

4
xwst