Überprüfen Sie die sshd-Konfiguration

19

Wie kann ich die Konfiguration von überprüfen sshd?

Ich möchte zum Beispiel sicherstellen, dass die folgenden Einstellungen festgelegt und angewendet werden:

AllowUsers user1 user2 
PasswordAuthentication no
PermitRootLogin no

Ist die einzige Möglichkeit, den Inhalt der Datei manuell zu überprüfen sshd_config, oder kann ich eine Überprüfung durchführen sshd, um sicherzugehen?

Juan Pablo
quelle
2
Was meinst du mit bestätigen? Fragen Sie sich, wie Sie sicherstellen können, dass eine von Ihnen vorgenommene Konfigurationsänderung gültig ist? Fragen Sie, ob es ein Tool wie Lint gibt , das nach einer gültigen Konfiguration sucht?
Zoredache
2
Ich denke nicht, dass die Frage unklar ist: Es gibt einfach keine Möglichkeit zu überprüfen, welcher Wert für eine Konfigurationsoption ist. Wenn Sie #UseLogin noin Ihrer ssd_config-Datei sehen, bedeutet dies, dass UseLogin yes oder UseLogin no ist? Sie müssen sich daher auf das Handbuch beziehen, um den Standardwert zu ermitteln, der während der Kompilierung geändert werden kann. Bisher von einer nutzlosen Frage ...
Xorax

Antworten:

27

Es gibt einen erweiterten Testmodus, der mit der Befehlszeilenoption aufgerufen wird -T. Beispielsweise:

% sudo sshd -T | egrep -i 'allowusers|passwordauth|permitroot'
permitrootlogin yes
passwordauthentication yes

Die Option existiert in Portable OpenSSH seit 2008, vgl. e7140f2 festschreiben . Dies wurde mit 5.1p1 im Juli 2008 veröffentlicht, vgl. Versionshinweise für 5.1 , daher gibt es sie in so ziemlich allen OpenSSH-Serverinstallationen, die heute unterstützt werden.

Josip Rodin
quelle
3
Beachten Sie jedoch, dass hier die Standardeinstellungen + Einstellungen aus der /etc/ssh/sshd_configDatei angezeigt werden . Die Einstellungen aus der Datei sind möglicherweise noch nicht aktiv, bis sshdsie mit etwas Ähnlichem /etc/init.d/ssh reloadoder Ähnlichem auf Ihrem System neu geladen wurden .
Mivk
2
@mivk ist ein guter Punkt, aber das ist ziemlich normal, weil es typisch ist, dass wir diese Art von Befehlen genau nach dem Vornehmen von Änderungen verwenden, aber bevor wir sie tatsächlich anwenden, weil wir überprüfen möchten, was passieren wird. Zum Beispiel apache2ctl -Sverhält sich genauso.
Josip Rodin
4

Während dies nicht alle Serverdefinitionen Dump, können Sie mit einem ausführlichen Debug - Flag auf den Server zu verbinden versuchen: ssh -v user@server. Dadurch erhalten Sie viele Informationen, die die in der sshd-Konfiguration aktivierten Optionen widerspiegeln.

Sehen Sie sich zum Beispiel die Ausgabe dieser Verbindung mit dem Schalter -v an (absichtlich getarnte Schlüsselsignaturen, Domänen- und IP-Adressen):

OpenSSH_6.0p1, OpenSSL 0.9.8w 23 Apr 2012
debug1: Reading configuration data /home/claudio/.ssh/config
debug1: /home/claudio/.ssh/config line 13: Applying options for serv01
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to somedomain.com [185.113.29.221] port 22.
debug1: Connection established.
debug1: identity file /home/claudio/.ssh/id_dsa type 2
debug1: identity file /home/claudio/.ssh/id_dsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9
debug1: match: OpenSSH_5.9 pat OpenSSH_5*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA 3a:0d:b8:18:ca:67:4c:54:0f:c8:b2:1e:48:53:69:28
debug1: Host '[somedomain.com]:22' is known and matches the ECDSA host key.
debug1: Found key in /home/claudio/.ssh/known_hosts:7
Warning: Permanently added the ECDSA host key for IP address '[185.113.29.221]:22' to the list of known hosts.
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /home/claudio/.ssh/id_dsa
debug1: Server accepts key: pkalg ssh-dss blen 433
debug1: Authentication succeeded (publickey).
Authenticated to somedomain.com ([185.113.29.221]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.

Daraus können Sie folgende zulässige Authentifizierungsmethoden ablesen: publickey, password, keyboard-interactive. Sie können auch sehen, dass Roaming auf diesem Server nicht zulässig ist und dass der Benutzer claudio eine Verbindung mit seinem öffentlichen Schlüssel herstellen kann.

Sie können die Informationsausgabe erhöhen, indem Sie mehr "v" -Buchstaben angeben, aber dann erhalten Sie möglicherweise weitaus mehr Informationen auf niedrigerer Ebene, als Sie wahrscheinlich möchten.

Claudio
quelle
3

sshd Konfiguration wird in der Regel in der folgenden Datei gefunden: /etc/ssh/sshd_config.

Um die Laufzeitkonfiguration abzufragen, können Sie den erweiterten Testmodus verwenden, mit sshd -Tdem Sie auch den Client-Abgleich von Einstellungen testen können.

gparent
quelle
1
Ich glaube nicht, dass dies die Frage beantwortet, die er stellt, aber seine Frage ist nicht ganz klar.
Zoredache
1
Anscheinend fragt er, wie die Konfiguration überprüft werden soll. Soweit mir bekannt ist, gibt es keine Möglichkeit, die Konfiguration von sshd zur Laufzeit abzufragen. Somit ist die Konfiguration nur in der von mir genannten Datei zu finden.
gparent
Wie Sie sagten, macht die Frage keinen Sinn, und ich nahm an, dass das OP möglicherweise nicht wusste, wo sich die Datei befindet oder wie sie genau heißt.
gparent
Wenn Sie mich nach 4 Jahren ohne triftigen Grund ablehnen, gehen Sie mit gesundem Menschenverstand vor, überprüfen Sie den Fragenverlauf und schlagen Sie eine Bearbeitung vor.
Eltern
@gparent Die ursprüngliche Frage war etwas vage und hatte einen Tippfehler im Pfad der Konfigurationsdatei. Sie hätten also die Bearbeitungsfunktion verwenden müssen, um die Zeichenfolge in der Frage zu korrigieren. In beiden Fällen wird die Antwort auf die Bestätigungsfrage oben angezeigt
Josip Rodin,
2

Es ist keine Möglichkeit bekannt, die Konfiguration einer laufenden sshd-Instanz abzufragen, wenn Sie den openssh-Server referenzieren. Je nachdem, was Sie tun möchten, können Sie eine Konfigurationsdatei mit dem Flag -t testen, um sicherzustellen, dass sie gültig ist, bevor Sie den Server neu starten, damit Sie nicht rausgeschmissen werden. Wenn Sie keinen bandexternen Zugriff auf den Server haben.

johnshen64
quelle
2

Das Problem beim Betrachten der Datei / etc / ssh / sshd_config, wie in anderen Antworten vorgeschlagen, besteht darin, dass sie nicht unbedingt die gesamte Konfiguration enthält. Diese Datei enthält die Werte aller Konfigurationsvariablen, die Sie festlegen möchten, um die Standardeinstellungen zu überschreiben, und enthält im Auslieferungszustand als Kommentare die in sshd integrierten Standardeinstellungen.

Wenn eine benutzerdefinierte Konfigurationsdatei anstelle der ausgelieferten Version installiert wird, verlieren Sie die in sshd kompilierten Standardeinstellungen aus den Augen. Wenn es sich um eine benutzerdefinierte Erstellung handelt, stimmen die Standardeinstellungen möglicherweise nicht mit den Kommentaren in sshd_config überein, die angezeigt werden.

Darüber hinaus ist es durchaus möglich, sshd mit einer alternativen Konfigurationsdatei mit der Option -f auszuführen, sodass die in / etc / ssh / sshd_config gespeicherte Datei möglicherweise nicht die aktuellen Einstellungen widerspiegelt.

Dies macht die Frage durchaus berechtigt und meines Wissens nicht mit Sicherheit zu beantworten.

Peter Gathercole
quelle
All das ist wahr, aber es trifft nicht auf 99% der Server zu, auf denen sshd installiert wird, wenn die Standardkonfiguration in einem Paket kompiliert ist.
Andrew Schulman
Ihre Antwort ist nützlich, aber die Frage kann mit Sicherheit beantwortet werden. Es ist schon eine Weile her, bitte sehen Sie meine Antwort weiter unten.
Josip Rodin