Je viens d'installer Ubuntu 14.04 sur mon serveur et je configurais tous mes fichiers de configuration lorsque je l'ai rencontré dans mon fichier sshd_config
:
# Authentication:
LoginGraceTime 120
PermitRootLogin without-password
StrictModes yes
Cela m'a rendu très inquiet. Je pensais qu'il était possible que quelqu'un se connecte à mon serveur en tant que root sans mot de passe.
J'ai essayé de me connecter à mon serveur en tant que root via:
johns-mbp:~ john$ ssh [email protected]
The authenticity of Host '192.168.1.48 (192.168.1.48)' can't be established.
RSA key fingerprint is 40:7e:28:f1:a8:36:28:da:eb:6f:d2:d0:3f:4b:4b:fe.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.48' (RSA) to the list of known hosts.
[email protected]'s password:
J'ai entré un mot de passe vide qui ne m'a pas laissé entrer, ce qui était un soulagement. Ma question est donc la suivante: que signifie sans mot de passe et pourquoi s’agit-il d’un défaut dans Ubuntu 14.04?
De la page de manuel :
PermitRootLogin
Spécifie si la racine peut se connecter en utilisant 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.
Si cette option est définie sur "commandes forcées uniquement", la connexion root avec authentification par clé publique sera autorisée, mais uniquement si l'option
command
a été spécifiée (ce qui peut être utile pour effectuer des sauvegardes à distance même si la connexion root est normalement interdite. ). Toutes les autres méthodes d'authentification sont désactivées pour root.Si cette option est définie sur "non", l'utilisateur root n'est pas autorisé à se connecter.
Ainsi, without-password
n'autorise la connexion à la racine qu'avec l'authentification par clé publique. Ceci est souvent utilisé avec des scripts Shell et des tâches automatisées.
En réalité, ce paramètre ne fait pratiquement rien si vous utilisez l'authentification PAM. Au bas du fichier de configuration sshd_config
, vous trouverez:
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
Le paramètre par défaut sur Ubuntu consiste à utiliser l'authentification PAM:
UsePAM yes
Notez qu'il existe des raisons légitimes pour vous connecter via root (mais en utilisant des clés cryptographiques et jamais un mot de passe). Un exemple typique est la synchronisation à distance de deux serveurs (pour que l'un d'entre eux soit utilisé en tant que basculement). Comme la structure doit être identique, un mot de passe root est souvent requis.
Voici un exemple d'utilisation de l'unison pour la synchronisation: https://serverfault.com/questions/341985/remotely-use-root-over-ssh-for-unison
Dans les versions plus récentes de sshd, "without-password" a été remplacé par "prohibit-password".
Les deux versions fonctionnent, il vaut probablement mieux utiliser "prohibit-password" si vous le pouvez: cela s’explique mieux.