Que signifie 'sans mot de passe' dans le fichier sshd_config?

118

Je viens d'installer Ubuntu 14.04 sur mon serveur et je configurais tous mes fichiers de configuration lorsque je suis tombé sur mon sshd_configfichier:

# 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?

John
la source

Réponses:

142

De la page de manuel :

PermitRootLogin

Spécifie si la racine 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.

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' commandoption 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», root n'est pas autorisé à se connecter.

Ainsi, without-passwordla connexion root n’est autorisée qu’avec l’authentification par clé publique. Ceci est souvent utilisé avec des scripts shell et des tâches automatisées.

Florian Diesch
la source
2
Ne pas autoriser l' utilisation d'un « mot de passe root» à l' aide d'un mot de passe est considéré comme une sécurité plus importante que son autorisation. Cela dit, vous ne devriez pas vous connecter à root du tout, à moins qu'aucune autre méthode (sudo, etc.) ne fonctionne.
david6
5
Comme vous pouvez le constater cependant, alors que la page de manuel indique que la valeur par défaut est "yes", Ubuntu a défini la valeur par défaut "sans mot de passe".
roue ferreuse
36
Donc without-password, toutes les méthodes autorisées sauf mot de passe? Cela sonne vraiment comme "autorisé à se connecter sans avoir besoin d'un mot de passe".
Gauthier
1
"Tous les accès root doivent être facilités via une ouverture de session locale avec un ID utilisateur unique et identifiable, puis via la commande su une fois authentifiée localement. La connexion root directe est extrêmement peu sécurisée et offre peu de possibilités de suivi pour la reddition de comptes." - Guide IBM AIX pour CIS
Dominik Antal le
22
PermitRootLogin now accepts an argument of 'prohibit-password' as a less-ambiguous synonym of 'without-password'.
endolith
16

En réalité, ce paramètre ne fait pratiquement rien si vous utilisez l'authentification PAM. Au bas du sshd_configfichier de configuration, 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 est d'utiliser l'authentification PAM:

UsePAM yes
Atari911
la source
1
Dans ma brève expérience , même régler cela none fonctionnera pas PermitRootLogin without-password, en quelque sorte! :(
cregox
1
@cregox si vous utilisez un système de bureau typique, vous devez le faire ssh-copy-id -i ~/.ssh/id_rsa.pub user@ipet cela crée, ~/.ssh/authorized_keysn'oubliez pas que si vous ne pouvez pas vous connecter en tant que root, vous ne créerez pas ce fichier dans /root/.ssh/ mais cela fonctionnera si vous copiez le fichier là
Rutrus
3

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

Gwyneth Llewelyn
la source
2
La connexion avec un utilisateur normal (utilisant probablement des clés cryptographiques) et son appartenance au sudogroupe ne vous permettront-elles pas de le faire également?
NS du Toit
2

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.

teknopaul
la source