Wie kann ich ssh-Authentifizierungstypen programmatisch erkennen?

8

Ich möchte ein Überwachungs-Plugin schreiben, das verschiedene Hosts in meinem Netzwerk überprüft, um sicherzustellen, dass das Passwort oder die interaktive SSH-Authentifizierung nicht aktiviert ist. Das heißt, ich muss Code schreiben, der:

  1. Verbindet sich mit einem SSH-Port.
  2. Listet verfügbare Authentifizierungsmethoden auf.
  3. Überprüft, ob nur eine schlüsselbasierte Authentifizierung möglich ist.

Methoden, die entweder python oder bourne sh-Code verwenden (mit ssh ), sind für mich am interessantesten, aber auch andere Sprachen, Bibliotheken oder Hinweise werden geschätzt.

    
Stef 27.08.2010, 15:15
quelle

4 Antworten

13

Ich baue gerade selbst eine, aber Sie können ssh dazu zwingen, die unterstützten Methoden mithilfe der PreferredAuthentications-Option (an STDERR) auszugeben. Dies kann leicht mit grep / python / Sprache der Wahl geparst werden.

%Vor%     
Eadwacer 31.08.2010, 21:23
quelle
7

RFC 4252 , das die Authentifizierung in SSH definiert, sagt Folgendes:

  

Authentifizierungsmethoden werden durch ihren Namen identifiziert, wie in definiert      [SSH-ARCH]. Die Methode "none" ist reserviert und darf NICHT als aufgelistet werden      unterstützt. Es kann jedoch vom Kunden gesendet werden. Der Server MUSS      lehnen Sie diese Anfrage immer ab, es sei denn, dem Client wird Zugriff gewährt      ohne Authentifizierung, in diesem Fall muss der Server akzeptieren      diese Anfrage. Der Hauptzweck des Sendens dieser Anfrage ist , um die      Liste der unterstützten Methoden vom Server.

Sie können also eine Anfrage für keine Authentifizierung senden, um die Liste der unterstützten zu erhalten. Die Authentifizierung selbst erfolgt jedoch erst, nachdem bestimmte untergeordnete Aktionen stattgefunden haben (der Schlüsselaustausch ist einer davon), so dass Sie möglicherweise einen Teil des SSH-Protokolls in sh-Skript schreiben müssen, was wahrscheinlich eine nicht-triviale Aufgabe ist.

    
quelle
0

Sie können jetzt das integrierte Skript nmap NSE namens ssh-auth-methods um dies zu tun:

%Vor%

Außerdem hat jemand ein ähnliches python3-Skript erstellt.

    
not2qubit 26.12.2017 01:03
quelle
-1

Wenn Sie * nix-Lösung benötigen, können Sie auch in OpenSSH-Quellen einsteigen. Wenn Windows für Sie geeignet ist - Sie können auch einige kommerzielle .NET-Bibliotheken ausprobieren, sie sind viel handlicher als OpenSSH-Quellen:)

    
Nickolay Olshevsky 27.08.2010 16:36
quelle

Tags und Links