Was bedeutet "ohne Passwort" in der Datei "sshd_config"?

118

Ich habe gerade Ubuntu 14.04 auf meinem Server installiert und alle Konfigurationsdateien eingerichtet, als ich auf folgendes in meiner sshd_configDatei stieß:

# Authentication:
LoginGraceTime 120
PermitRootLogin without-password
StrictModes yes

Das hat mich sehr beunruhigt. Ich hielt es für möglich, dass sich jemand ohne Passwort als root auf meinem Server anmeldet.

Ich habe versucht, eine Verbindung zu meinem Server als Root herzustellen:

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:  

Ich habe ein leeres Passwort eingegeben und es hat mich nicht hereingelassen, was eine Erleichterung war. Meine Frage ist also: Was bedeutet ohne Passwort und warum ist dies in Ubuntu 14.04 ein Standard?

John
quelle

Antworten:

142

Aus der Manpage :

PermitRootLogin

Gibt an, ob sich root mit ssh (1) anmelden kann . Das Argument muss "Ja", "Ohne Passwort", "Nur erzwungene Befehle" oder "Nein" sein. Die Standardeinstellung ist "Ja".

Wenn diese Option auf "ohne Passwort" gesetzt ist, ist die Passwortauthentifizierung für root deaktiviert.

Wenn diese Option auf "Nur erzwungene Befehle" gesetzt ist, ist die Root-Anmeldung mit Authentifizierung mit öffentlichem Schlüssel zulässig, jedoch nur, wenn die commandOption angegeben wurde (was für die Erstellung von Remote-Sicherungen hilfreich sein kann, auch wenn die Root-Anmeldung normalerweise nicht zulässig ist). . Alle anderen Authentifizierungsmethoden sind für root deaktiviert.

Wenn diese Option auf "nein" gesetzt ist, darf sich root nicht anmelden.

So without-passwordermöglicht Root - Login nur mit Authentifizierung über öffentliche Schlüssel. Dies wird häufig bei Shell-Skripten und automatisierten Aufgaben verwendet.

Florian Diesch
quelle
2
Das Nichtzulassen der Root-Anmeldung mit einem Kennwort gilt als sicherer als das Zulassen eines Kennworts . Das heißt, Sie sollten sich überhaupt nicht bei root anmelden, es sei denn, es funktioniert keine andere Methode (sudo usw.).
David6
5
Wie Sie jedoch sehen können, hat Ubuntu den Standardwert "ohne Passwort" festgelegt, während die Manpage angibt, dass der Standardwert "yes" ist.
Eisenrad
36
Bedeutet das, without-passworddass alle Methoden außer Passwort erlaubt sind? Es hört sich wirklich so an, als dürfe man sich ohne Passwort einloggen.
Gauthier,
1
"Der gesamte Root-Zugriff sollte durch eine lokale Anmeldung mit einer eindeutigen und identifizierbaren Benutzer-ID und anschließend über den Befehl su erleichtert werden, sobald die lokale Authentifizierung erfolgt ist. Die direkte Root-Anmeldung ist äußerst unsicher und bietet nur wenig Möglichkeiten zur Überprüfung der Verantwortlichkeit." - CIS IBM AIX Guide
Dominik Antal
22
PermitRootLogin now accepts an argument of 'prohibit-password' as a less-ambiguous synonym of 'without-password'.
Endolith
16

Tatsächlich hat diese Einstellung so gut wie keine Auswirkungen, wenn Sie die PAM-Authentifizierung verwenden. Am Ende der sshd_configKonfigurationsdatei finden Sie:

# 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'.

Die Standardeinstellung unter Ubuntu ist die Verwendung der PAM-Authentifizierung:

UsePAM yes
Atari911
quelle
1
Nach meiner kurzen Erfahrungno wird es PermitRootLogin without-passwordirgendwie nicht funktionieren, wenn ich dies auf setze! :(
cregox
1
@cregox Wenn Sie ein typisches Desktop-System verwenden, müssen Sie dies tun ssh-copy-id -i ~/.ssh/id_rsa.pub user@ipund es wird ~/.ssh/authorized_keysberücksichtigt, wenn Sie sich nicht als root anmelden können, würden Sie diese Datei nicht in /root/.ssh/ erstellen, aber es funktioniert, wenn Sie kopieren die Datei dort
Rutrus
3

Beachten Sie, dass es legitime Gründe gibt, sich über root anzumelden (jedoch mit kryptografischen Schlüsseln und niemals mit einem Passwort). Ein typisches Beispiel ist die Remote-Synchronisierung von zwei Servern (einer davon wird als Failover verwendet). Da die Struktur identisch sein muss, ist häufig ein Root-Passwort erforderlich.

Hier ist ein Beispiel für die Synchronisation mit unison: https://serverfault.com/questions/341985/remotely-use-root-over-ssh-for-unison

Gwyneth Llewelyn
quelle
2
Möchten Sie sich nicht mit einem normalen Benutzer anmelden (wahrscheinlich mit kryptografischen Schlüsseln) und diesen zur sudoGruppe gehören lassen, um dies ebenfalls zu tun?
NS du Toit
2

In neueren Versionen von sshd wurde "without-password" in "prohibit-password" geändert.

Beide Versionen funktionieren, wahrscheinlich am besten mit "prohibit-password", wenn Sie können: es erklärt sich besser.

teknopaul
quelle