
Einige meiner Linux- und FreeBSD-Systeme haben Dutzende von Benutzern. Mitarbeiter verwenden diese „SSH-Gateway“-Knoten, um sich per SSH mit anderen internen Servern zu verbinden.
Wir sind besorgt, dass einige dieser Personen einen unverschlüsselten privaten SSH-Schlüssel verwenden (einen Schlüssel ohnePassphrase.Das ist schlecht, denn wenn ein Cracker jemals Zugriff auf ihr Konto auf diesem Rechner erhält, könnte er den privaten Schlüssel stehlen und hätte nun Zugriff auf jeden Rechner, der denselben Schlüssel verwendet. Aus Sicherheitsgründen verlangen wir von allen Benutzern, dass sie ihre privaten SSH-Schlüssel mit einer Passphrase verschlüsseln.
Wie kann ich feststellen, ob ein privater Schlüssel nicht verschlüsselt ist (z. B. keine Passphrase enthält)? Gibt es eine andere Methode, dies bei einem ASCII-geschützten Schlüssel im Vergleich zu einem nicht-ASCII-geschützten Schlüssel zu tun?
Aktualisieren:
Zur Verdeutlichung nehmen wir an, dass ich auf dem Rechner über Superuser-Zugriff verfüge und alle privaten Schlüssel lesen kann.
Antwort1
Nun, private OpenSSH-Schlüssel mit leeren Passphrasen sind tatsächlich nicht verschlüsselt.
VerschlüsseltPrivate Schlüssel werden als solche in der privaten Schlüsseldatei deklariert. Beispiel:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,7BD2F97F977F71FC
BT8CqbQa7nUrtrmMfK2okQLtspAsZJu0ql5LFMnLdTvTj5Sgow7rlGmee5wVuqCI
/clilpIuXtVDH4picQlMcR+pV5Qjkx7BztMscx4RCmcvuWhGeANYgPnav97Tn/zp
...
-----END RSA PRIVATE KEY-----
Also sowas wie
# grep -L ENCRYPTED /home/*/.ssh/id_[rd]sa
sollte funktionieren.
Antwort2
Ich habe überall danach gesucht und nie eine zufriedenstellende Antwort gefunden, aber es ist mir gelungen, eine zu konstruieren, also …
Beachten Sie, dass die Datei aktualisiert wird, wenn es funktioniert. Wenn Sie also nicht von den Benutzern bemerkt werden möchten, deren Schlüssel Sie testen, sollten Sie den Schlüssel zuerst kopieren. Andererseits ist es Ihnen vielleicht egal, ob es ihnen auffällt, da Sie Ihren Benutzer gerade mit einem passwortlosen Schlüssel erwischt haben. :D
$ ssh-keygen -p -P '' -N '' -f ~/.ssh/KEYTEST
Key has comment '/home/rlpowell/.ssh/KEYTEST'
Your identification has been saved with the new passphrase.
$ echo $?
0
$ ssh-keygen -p -P '' -N '' -f ~/.ssh/KEYTEST
Bad passphrase.
$ echo $?
1
Antwort3
Wenn Sie Zugriff auf den privaten Schlüssel haben, können Sie ihn vermutlich ohne Passphrase verwenden, um sich gegenüber dem öffentlichen Schlüssel zu authentifizieren. Wenn dies funktioniert, wissen Sie, dass er keine Passphrase hat. Wenn dies der Fall wäre, würden Sie eine Fehlermeldung erhalten.
Wenn Sie keinen Zugriff auf den privaten Schlüssel haben, bezweifle ich, dass Sie dies erkennen können. Der Zweck der Passphrase besteht darin, den privaten Schlüssel zu „entsperren“. In Bezug auf den öffentlichen Schlüssel hat sie keine Funktion.
Wenn dies tatsächlich der Fall wäre, würde dies das System weniger sicher machen. Man könnte den verfügbaren öffentlichen Schlüssel verwenden, um Brute-Force-Angriffe oder andere Angriffe durchzuführen, um die Passphrase zu knacken.