Wie kann ich MACs, Ciphers und KexAlogrithms auflisten, die von meinem SSH-Server unterstützt werden?

15

Wie kann ich die unterstützten MACs, Chiffren, Schlüssellängen und KexAlogrithmen ermitteln, die von meinen SSH-Servern unterstützt werden?

Ich muss eine Liste für eine externe Sicherheitsüberprüfung erstellen. Ich suche etwas ähnliches openssl s_client -connect example.com:443 -showcerts. Aus meiner Forschung sshverwendet die Standardchiffren wie in aufgeführt man sshd_config. Ich benötige jedoch eine Lösung, die ich in einem Skript verwenden kann, und man sshd_configliste keine Informationen zur Schlüssellänge auf . Ich brauche mich hier zu korrigieren: Sie können angeben , ServerKeyBitsin sshd_config.

Ich denke, das ssh -vv localhost &> ssh_connection_specs.outgibt die Informationen zurück, die ich brauche, aber ich bin nicht sicher, ob die aufgelisteten Chiffren die Chiffren sind, die vom Client oder vom Server unterstützt werden. Ich bin mir auch nicht sicher, wie ich dieses nicht interaktive Skript ausführen soll.

Gibt es eine bequeme Möglichkeit, SSHVerbindungsinformationen abzurufen?

Henrik Pingel
quelle
1
Es stellte sich heraus, dass, sshd -T | grep "\(ciphers\|macs\|kexalgorithms\)"wie von @Jakuje vorgeschlagen, nur auf RHEL7-Hosts funktioniert, nicht jedoch auf RHEL6. nmap --script SSH2-hostkey localhostnmap --script ssh-hostkey localhost
Henrik Pingel
ssh -vvgibt die unterstützte Funktionalität als Client zu Server (ctos) und Server zu Client (stoc) aus. Es scheint jedoch, dass diese Ausgaben auf das beschränkt sind, was beide Seiten unterstützen, was sie für eine Sicherheitsüberprüfung weniger nützlich macht.
Moshe

Antworten:

16

Sie vermissen einige Punkte in Ihrer Frage:

  • Was ist deine openssh Version? Es kann sich etwas von den Versionen unterscheiden.
  • ServerKeyBits ist die Option für Protokoll Version 1, die Sie hoffentlich deaktiviert haben!

Unterstützte Chiffren, MACs und KexAlgorithmen sind immer manuell verfügbar, und dies hat nichts mit Schlüssellängen zu tun.

Aktiviert Chiphers, MACs und KexAlgorithms sind diejenigen , die unter Verwendung von Verbindung angeboten werden, wie Sie darauf hinweisen. Sie können aber auch auf andere Weise gewonnen werden, beispielsweise durch Verwendungsshd -T | grep "\(ciphers\|macs\|kexalgorithms\)"

Um die Schlüssellänge Ihrer Serverschlüssel zu ermitteln, können Sie ssh-keygen verwenden: ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub

Sie werden aber wahrscheinlich auch die Modulgrößen wollen, die während des Schlüsselaustauschs angeboten und verwendet werden, aber es hängt wirklich von der Schlüsselaustauschmethode ab, aber es sollte auch von der Debug-Ausgabe lesbar sein ssh -vvv host.

Jakuje
quelle
1
Vielen Dank. Es stellte sich heraus, dass sshd -T | grep "\(ciphers\|macs\|kexalgorithms\)"nur meine RHEL7-Hosts funktionierten, nicht jedoch RHEL6. nmap --script SSH2-hostkey localhostnmap --script ssh-hostkey localhost
Henrik Pingel
1
Auf dem RHEL6-Host mit dem neuesten openssh-Update sollte dies ebenfalls behoben sein.
Jakuje
Verdammt, da hast du recht. Ich habe nur eine veraltete VM überprüft ... danke
Henrik Pingel
sshd -T bietet nur Informationen zu den in der Datei sshd_config konfigurierten Chiffren an, nicht zu dem, was tatsächlich als von der Binärdatei unterstützt hinzugefügt werden kann
Daniel J.
8

Wie kann ich die unterstützten MACs, Chiffren, Schlüssellängen und KexAlogrithmen ermitteln, die von meinen SSH-Servern unterstützt werden?

Es sieht so aus, als ob die Antwort auf /superuser//a/1219759/173408 auch eine Antwort auf Ihre Frage ist. Es passt in eine Zeile:

nmap --script ssh2-enum-algos -sV -p 22 1.2.3.4

Hier ist die Ausgabe auf einem einfachen Debian 9.4-Computer mit der aktuellen SSH-Version:

Starten von Nmap 7.01 (https://nmap.org) am 22.05.2018 um 13:40 Uhr MESZ
Nmap-Scan-Bericht für 1.2.3.4
Host ist aktiv (0,00024s Latenz).
PORT STATE SERVICE VERSION
22 / tcp open ssh OpenSSH 7.4p1 Debian 10 + deb9u3 (Protokoll 2.0)
| ssh2-enum-algos:
| kex_algorithms: (10)
| Kurve25519-sha256
| [email protected]
| ecdh-sha2-nistp256
| ecdh-sha2-nistp384
| ecdh-sha2-nistp521
| diffie-hellman-group-exchange-sha256
| diffie-hellman-group16-sha512
| diffie-hellman-group18-sha512
| diffie-hellman-group14-sha256
| diffie-hellman-group14-sha1
| server_host_key_algorithms: (5)
| ssh-rsa
| rsa-sha2-512
| rsa-sha2-256
| ecdsa-sha2-nistp256
| ssh-ed25519
| Verschlüsselungsalgorithmen: (6)
| [email protected]
| aes128-ctr
| aes192-ctr
| aes256-ctr
| [email protected]
| [email protected]
| mac_algorithms: (10)
| [email protected]
| [email protected]
| [email protected]
| [email protected]
| [email protected]
| [email protected]
| [email protected]
| hmac-sha2-256
| hmac-sha2-512
| hmac-sha1
| Komprimierungsalgorithmen: (2)
| keiner
| _ [email protected]
Service Info: Betriebssystem: Linux; CPE: cpe: / o: linux: linux_kernel

Serviceerkennung durchgeführt. Bitte melden Sie falsche Ergebnisse unter https://nmap.org/submit/.
Nmap erledigt: 1 IP-Adresse (1 Host hoch) in 0,52 Sekunden gescannt
Stéphane Gourichon
quelle
1
Ich erhalte PORT STATE SERVICE VERSION 22/tcp filtered sshmit diesem Befehl eine - obwohl ich mich über ssh bei demselben Server anmelden kann.
Hey
Haben Sie den Befehl buchstäblich verwendet oder durch 1.2.3.4die IP Ihres Servers ersetzt?
Stéphane Gourichon
Ich habe die IP meines Servers verwendet.
Hey,