Frage:
Sind kennwortlose SSH-Anmeldungen sicherer?
Daniel
2011-12-20 03:33:56 UTC
view on stackexchange narkive permalink

Ich hatte eine lange Diskussion mit meinen Mitarbeitern, ob die schlüsselbasierte SSH-Authentifizierung (insbesondere für OpenSSH) sicherer ist als die Authentifizierung mit Kennwörtern. Meine Mitarbeiter stellen immer eine Verbindung zu Servern mit Kennwörtern her, während ich mich lieber bei einem System anmelde, ohne jedes Mal ein Kennwort eingeben zu müssen.

Sie befürchten, dass eine Verbindung ohne Kennwort nicht sicher ist. Was soll ich ihnen sagen? Für mich sind Passwörter schlecht, weil sie brutal erzwungen oder mit einem Keylogger erfasst werden können.

Ich verwende das Tool ssh-copy-id , um meinen öffentlichen Schlüssel auf den Server zu kopieren . Ich verbinde mich dann einfach mit ssh Servername . Tatsächlich muss ich das Kennwort für meinen privaten Schlüssel einmal bei jedem Systemstart nur eingeben. Wenn meine Workstation 3 Tage lang ausgeführt wird, muss ich das Kennwort nie wieder eingeben, was als unsicher eingestuft wird. Ist das wahr? Ich weiß, dass Schlüssel besser sind, aber ich weiß nicht, wie ich ihnen das erklären soll.

Möglicherweise von Interesse: [Timeout des Gnome-Schlüsselring-SSH-Agenten] (http://ubuntuforums.org/showthread.php?t=1271580) - Lassen Sie den Schlüsselring Ihr Passwort "vergessen", wenn der Bildschirmschoner aktiviert wird. Sie können auch "ssh-add -t3600" ausführen, damit ssh-agent Ihren Schlüssel nach einer Stunde fallen lässt.
Tut mir leid, ich muss Devil's Advocate spielen: Wenn du es nicht erklären kannst, weißt du es nicht. Sind Sie sicher, dass Sie nicht nur das wieder auffliegen lassen, was Sie gehört haben? Vielleicht sollten Sie sich von den Wundern der schlüssellosen Logins erleuchten lassen. Beide Ansätze haben Vor- und Nachteile.
Ihnen fehlt ein Punkt - obwohl Sie Schlüssel verwenden, hat Ihr Konto auch ein Passwort. Die Kennwortanmeldung ist für Ihre Mitarbeiter aktiviert. Das Passwort kann brutal erzwungen werden, unabhängig davon, ob Sie es verwenden oder nicht.
Diese Frage sollte von Interesse sein (fast ein Duplikat): http://security.stackexchange.com/q/3887/2435
Wenn jemand versuchen würde, die Schlüssel vom Agenten auszugeben, müsste er nicht warten, bis der Benutzer von der Tastatur entfernt ist, um dies zu tun.
Acht antworten:
SvenW
2011-12-20 03:49:34 UTC
view on stackexchange narkive permalink

Die schlüsselbasierte Anmeldung wird aus der Perspektive eines Brute-Force-Versuchs, Zugriff von einem Drittanbieter-System zu erhalten, als viel sicherer angesehen als kennwortbasierte Anmeldungen: Die Wahrscheinlichkeit, einen Schlüssel zu knacken, ist praktisch Null, während alle falschen Kennwörter vorhanden sind allzu häufig.

Aus der Sicht eines kompromittierten Client-Systems (Ihrer Workstation) gibt es keinen Unterschied, denn wenn die Angreifer Ihren privaten Schlüssel erhalten und / oder eine Sitzung entführen können, können sie wahrscheinlich auch eine Art installieren von Key Logger, wodurch der wahrgenommene Vorteil von Passwörtern unbrauchbar wird.

Wenn das System so konfiguriert ist, dass sowohl Kennwörter als auch Schlüssel zulässig sind (wie es die OPs anscheinend tun), kann der Angreifer dann nicht auch sein Kennwort brutal erzwingen?
Ja. Aus diesem Grund würde ich kennwortbasierte Anmeldungen vollständig deaktivieren.
Shane Madden
2011-12-20 03:49:57 UTC
view on stackexchange narkive permalink

Es ist so sicher wie Ihr Computer. Der Schlüssel befindet sich unverschlüsselt im RAM. Ein Angreifer mit physischem Zugriff auf Ihren Computer oder Remote-Root-Zugriff könnte ihn erhalten.

Stellen Sie sich das so vor, als hätten Ihre Mitarbeiter ein kennwortsicheres Programm verwendet und es mit dem auf dem Bildschirm belassen Datenbank ohne Passworteingabe verfügbar; Wenn Sie Ihre Workstation sperren, wenn Sie weggehen, und sie vor feindlichen Remote-Aktivitäten schützen, ist sie einigermaßen sicher, aber ein eingefrorener RAM-Angriff könnte theoretisch immer noch den Schlüssel erhalten.

Aber jemand in diesen Positionen könnte leicht installiert werden ein Keylogger auch, wie Sie betonten. Solange Sie auf die Sicherheit Ihrer Workstation achten, würde ich sie nicht als weniger sicher als Passwörter bezeichnen. Die eigentlichen Vorteile von schlüsselbasierten Anmeldungen liegen jedoch im Schutz vor beispielsweise Brute-Force-Kennwortangriffen auf den Server (da Schlüssel kaum brutal zu erzwingen sind).

Squidly
2011-12-20 03:41:47 UTC
view on stackexchange narkive permalink

Eigentlich sind Ihre Mitarbeiter korrekt. Denken Sie darüber nach. Ihre Arbeitsstationen sind kaputt, es ist schon ein paar Tage her und jetzt pwn die Hacker Ihr gesamtes Netzwerk, weil Sie keine ssh-Passphrase verwenden.

Allerdings sind gemeinsam genutzte Passwörter niemals gut und eine große Schwäche des Systems. Ich gehe davon aus, dass Sie über Root-Zugriff sprechen.

Der Punkt, den ich anspreche, ist, dass beide Nachteile haben und wo die Sicherheit sein muss.

Für alle Server, die ich verwalte, verwende ich einen Passphrasen-SSH-Schlüssel. Das gibt mir das Beste aus beiden Welten. Ein Passwort, das nur ich kenne und das kein gemeinsames Passwort für andere Benutzer verwendet.

(und ja, ich habe gesehen, wo ein passphraseless ssh-Schlüssel verwendet wurde, um das gesamte Netzwerk zu gefährden.

Warum wurde ich abgelehnt?
Ich habe dich nicht abgestimmt. Jemand anderes muss haben.
Zum Ausgleich positiv bewertet - alle Antworten hier machen im Wesentlichen die gleichen Punkte, daher bin ich mir nicht sicher, warum Sie das Minus erhalten haben. Übrigens: Willkommen! Vielen Dank, dass Sie Ihr Fachwissen eingebracht haben, und machen Sie sich nicht ab und zu Gedanken über die zufällige Ablehnung - die positiven Stimmen überwiegen bei weitem.
Ok, jedes Mal, wenn Sie eine Verbindung zu einem Server herstellen, müssen Sie ** Ihre ** Passphrase angeben, nicht das Kennwort vom Remote-System? Das würde mich auch glücklich machen. Ich mag nur keine Passwortlisten oder das Speichern von mehr als 30 Passwörtern. Wie könnte ich das machen? Mein Schlüssel hat eine Passphrase, wird aber nur einmal pro "Desktop" -Sitzung abgefragt
Dies hängt davon ab, welches System Sie verwenden. Ich persönlich habe so etwas wie einen Gnomschlüsselring nicht installiert. Ich bin auch damit einverstanden, dass ich Passwortlisten hasse. Ich kann mich nicht an 1/8 der Passwörter erinnern, die ich da draußen habe. @ Shane Danke :)
@Daniel Eine Art SSH-Agentensoftware speichert sie; Sie können dies stattdessen pro Sitzung tun, indem Sie einfach "ssh -i / path / to / key" verwenden.
@ShaneMadden Ich werde nicht nach einem Passwort gefragt, wenn ich die Option "-i" verwende ... Ich habe meinen öffentlichen Schlüssel in die Datei "authorized_keys" des Servers eingefügt
@Daniel Sie werden das auf Ihren privaten Schlüssel verweisen; Es befindet sich wahrscheinlich noch im Speicher der Key Agent-Software. Haben Sie, wie Squidly erwähnte, etwas in der Art eines Gnom-Schlüsselbunds, das Ihren Schlüssel verwaltet?
@ShaneMadden Hmm okay, wenn ich `ssh-agent` töte, wird nach dem Passwort gefragt. Aber immer noch nur einmal. Ich denke, ssh-agent hat einige Konfigurationsoptionen. Gut wäre es, es nur für einige Zeit im Speicher zu speichern - etwa 5 Minuten oder so
Es ist unwahrscheinlich, dass die Workstation 1) ständig in Betrieb ist und 2) über das Internet insgesamt zugänglich ist. Dies verringert die Cracking-Risiken * sehr * - im Gegensatz zu einem Server mit Netzausrichtung, bei dem der Strom automatisierter Cracking-Versuche buchstäblich nie endet.
Was passiert, wenn Ihre Workstation geknackt wird und Ihr Passwort verschlüsselt wird? Wie bietet die Verwendung eines Passworts mehr Sicherheit als die Verwendung eines Schlüssels?
dr jimbob
2011-12-20 12:11:00 UTC
view on stackexchange narkive permalink

Sie sind nur so sicher wie Ihr schwächstes Glied. Wenn Ihre Remoteserver sowohl eine kennwort- als auch eine schlüsselbasierte Authentifizierung zulassen, sind Sie weniger sicher als nur eine.

Ihre zusätzlichen Schwachstellen für ein schlüsselbasiertes System über die Kennwortauthentifizierung (PA) sind:

  1. Ein Angreifer erhält eine Kopie Ihres passphrasengeschützten privaten Schlüssels, indem er beispielsweise physischen Zugriff auf eine unverschlüsselte Festplatte auf einem beliebigen System hat (z. B. im Einzelbenutzermodus booten), und führt dann eine GPU-basierte aus Offline-Brute-Force-Angriff auf Ihren Schlüssel und Zugriff auf alle Ihre Systeme, wenn Ihre Passphrase entsprechend schwach ist (z. B. 4 Diceware-Wörter).

  2. Sie verwenden so etwas wie ssh-agent, das Ihre Passphrase oder Ihren privaten Schlüssel für die spätere Verwendung im Speicher hält, und ein Angreifer kann ihn irgendwie von Ihrem System entfernen (z. B. einen anderen Root) Benutzer war angemeldet, während Sie das Passwort im Speicher hatten).

  3. Ihr Schlüssel war viel weniger sicher als Sie dachten. Zum Beispiel die OpenSSH-Schlüsselschwäche; Die einzige Zufälligkeit kam von der Prozess-ID, sodass nur 65536 Schlüssel generiert wurden. Während diese Art von Problemen hoffentlich schnell bemerkt und behoben werden, ist es für Endbenutzer unmöglich zu sagen, dass es keine gibt Hauptfehler im Zufallszahlengenerator, mit dem Ihre Schlüssel erstellt wurden.

  4. ol>

    Ihre zusätzliche Sicherheit bei der Verwendung der schlüsselbasierten Authentifizierung:

    1. Brute Force-Angriffe sind über das Leben des Universums nicht möglich, ohne Ihren privaten Schlüssel zu stehlen (und wenn er durch eine Passphrase geschützt war; dann die Passphrase zu brechen).
    2. MITM-Angriffe funktionieren nicht (ein böswilliger Remote-Host kann ' t Ihren privaten Schlüssel / Ihre Passphrase herausfinden); ssh warnt jedoch bereits vor MITM-Angriffen, um Administratoren mithilfe von Hostschlüsseln und bekannten_Hosts -Dateien zu warnen.
    3. ol>

      In der Praxis sind beide gleichermaßen sicher. Jeder, der SSH-Privatschlüssel aus dem RAM stehlen kann, kann einen Keylogger installieren, um Ihre Passwörter / Passphrasen / Privatschlüssel zu erhalten.

      Ich persönlich mag Ihre Lösung, da eine Passphrase bequemer ist (im RAM gespeichert; auf einem Einbenutzer-Computer, der nach 5 Minuten gesperrt wird). obwohl ich meinen passphrasengeschützten privaten Schlüssel immer noch nur auf lokalen Computern ablege, auf denen ich der einzige Benutzer bin.

"In der Praxis sind beide gleich sicher" - GROSSER Einwand: Die Wahrscheinlichkeiten von Workstation-Rissen und Server-Brute-Force-Versuchen liegen mehrere Größenordnungen auseinander. Ich sehe keine Ninjas, die versuchen, in meine Workstation einzudringen (natürlich nicht, sie sind Ninjas; o)); OTOH, ich sehe viele Denyhosts-Berichte von meinen Servern.
@Piskvor - Ich stimme einem vernünftigen Passwort auf der schwächeren Seite zu (sagen wir vier Wörter Diceware oder 8 zufällige Kleinbuchstaben) ~ 2 ^ 36 ist viel kleiner als der typische private Schlüsselraum ~ 2 ^ 1000. Wenn fail2ban jedoch fehlerhafte Versuche auf ~ 100 / h pro IP-Adresse beschränkt, würde Ihr Kennwort von einer IP-Adresse aus ~ 4 Milliarden Jahre überleben (oder ~ 40 Millionen IP-Adressen erfordern, um 100 Jahre lang anzugreifen, ohne dass Sie es bemerken). Daher sind sie in der Praxis ungefähr genauso sicher, da Ihr Risiko in der Praxis nicht brutal erzwungen wird, sondern auf einem anderen Weg (physischer Zugriff auf Ihren Computer; Installation von Malware usw.).
Gutes Argument; In den meisten Fällen kann ein "angemessenes Passwort" jedoch eine übergroße Annahme sein. "Nun, warum kannst du es nicht einfach auf Passwort123 setzen?" ist praktisch der Schlachtruf meiner Kuh-Orker (und nach einigem Murren setzen sie ihn selbst auf PassWord123 (oder etwas ganz anderes, das den Lame-Password-Filter pasess).
@Piskvor - Wenn Sie die Idioten, die "PassWord123" verwenden, zwingen, SSH-Schlüssel zu verwenden; Sie werden einen Weg finden, unsicher zu sein. ZB, warum brauche ich eine Passphrase für meinen SSH-Schlüssel - das ist unpraktisch (oder habe eine triviale Phrase wie "Das macht Spaß") und lasse den Schlüssel dann auf Systemen mit mehreren Root-Benutzern oder sichern Sie ihren SSH-Schlüssel an öffentlichen Orten ( gmail / dropbox / etc.). Zumindest im Moment bin ich diesen Idioten nicht begegnet, die Root-Rechte auf meinen Systemen benötigen.
Ich habe nichts über root gesagt, oder? ;)
Ein weiterer Punkt für die Verwendung eines privaten Schlüssels: Wenn Sie eine Verbindung zu einem gefährdeten Server herstellen, ist es für den Angreifer ziemlich trivial, den Klartext Ihrer Passphrase abzurufen, da SSH Ihr Kennwort innerhalb des verschlüsselten Tunnels sendet. Ein privater Schlüssel wird jedoch niemals an den Server gesendet. Wenn Sie dasselbe Kennwort auf mehreren Computern wiederverwenden, kann der Angreifer das auf einem anderen Computer gestohlene Kennwort wiederverwenden.
Zoredache
2011-12-20 05:18:15 UTC
view on stackexchange narkive permalink

Ein Grund, von dem ich glaube, dass die schlüsselbasierte Authentifizierung einen leichten Sicherheitsvorteil hat, ist, dass ich manchmal beide Endbenutzer gesehen habe und gelegentlich sogar mein Passwort in ein Feld für den Benutzernamen anstatt in das Passwort eingegeben habe Dialogfeld (abhängig vom SSH-Client). Oder drücken Sie zu schnell die Eingabetaste, und der SSH-Client wurde beendet, und mein Kennwort wurde in meinen Terminalverlauf aufgenommen.

Wenn Sie bei jeder Eingabe Ihres Kennworts nicht vorsichtig sind, besteht die Möglichkeit, dass Ihr Kennwort hinzugefügt wird im Klartext möglicherweise zu mehreren Protokolldateien, möglicherweise zur Shell-Historie oder sogar zu einer Art Trojaner. Im Fall eines kennwortlosen Schlüssels oder eines Schlüssels, den Sie zu Beginn Ihrer Sitzung mit einem SSH-Agenten laden, sollten Sie Ihr Kennwort niemals erneut eingeben, sodass es unwahrscheinlich ist, dass Sie Ihre Anmeldeinformationen an einer falschen Stelle eingeben und Ihre offenlegen Passwort für jemanden oder etwas, das Sie nicht beabsichtigt haben.

Ryan M.
2011-12-20 03:45:02 UTC
view on stackexchange narkive permalink

In gewisser Weise sind es 6er. Das erste unmittelbare Sicherheitsrisiko einer kennwortbasierten Anmeldung wäre ein nicht autorisierter Benutzer, der (auf welche Weise auch immer) das Kennwort für den Server erhält. Ebenso besteht bei einer schlüsselbasierten Anmeldung das Sicherheitsrisiko, dass nicht autorisierte Benutzer Zugriff auf Ihren Computer erhalten. Wenn Sie ein komplexes Passwort auf dem Server verwenden, besteht die Gefahr, dass die Passwortbenutzer es irgendwo aufschreiben müssen, um sich daran zu erinnern. Bei den Hauptbenutzern besteht die Gefahr, dass sie bei entsperrtem Computer von ihrem Schreibtisch weggehen.

Vieles hängt vom Verhältnis von Risiko zu Benutzerfreundlichkeit ab. Natürlich könnten Sie Passwörter für die Schlüssel benötigen, nur bestimmte IP-Adressen pro Schlüssel und eine andere Anzahl von Sicherheitsmaßnahmen zulassen, aber das macht Ihre Leute unglücklich.

Aber um zu antworten Ihre Frage: Wenn es sich um eine Vanilla-Konfiguration von OpenSSH handelt, haben kennwortbasierte und schlüsselbasierte Anmeldungen ihre eigenen, unterschiedlichen Sicherheitslücken.

"Natürlich könnten Sie Passwörter für die Schlüssel benötigen." Ich gehe davon aus, dass Sie Passphrasen für Ihre Schlüssel meinen, aber wie können Sie dies einem Benutzer aufzwingen?
Ja, ich meinte Passphrase. Sie können dies erzwingen, indem Sie sagen: "Verwenden Sie eine Passphrase, wenn Sie Ihren Schlüssel generieren, oder der Schlüssel wird nicht auf dem Server angezeigt."
Vergessen Sie nicht, dass jemand die Passphrase entfernen kann, nachdem Sie den Schlüssel auf den Server gelegt haben.
Ha. Ich meinte, wie können Sie * überprüfen *, ob sie eine Passphrase für ihren Schlüssel verwendet haben? Ich hatte den Eindruck, dass Sie nicht konnten. Es zu einer Politik zu machen ist cool und so gut wie keine Möglichkeit, es AFAIK durchzusetzen.
Du hast recht. Das habe ich mir angesehen.
Jeff Strunk
2011-12-20 03:48:26 UTC
view on stackexchange narkive permalink

Ich deaktiviere die Kennwortanmeldung über ssh für root auf meinen Systemen immer. Auf diese Weise kann ein Angreifer nicht versuchen, das Kennwort brutal zu erzwingen.

Sie sollten dennoch auf der Sicherheit der Client-Systeme vorsichtig sein. Möglicherweise möchten Sie den SSH-Agenten dazu bringen, Ihre Schlüsselanmeldeinformationen zu vergessen, wenn der Sperrbildschirm angezeigt wird. Dies würde verhindern, dass Angriffe auf Ihren Client-Computer Ihren Schlüssel gefährden.

JoePete
2016-09-19 19:45:02 UTC
view on stackexchange narkive permalink

Einige anständige Antworten hier, aber alle scheinen meiner Ansicht nach die Marke zu verfehlen.

Die Verwendung eines Schlüsselpaars zur Authentifizierung ersetzt das "etwas, das Sie wissen" eines passwortbasierten Systems durch ein "etwas" Sie haben "eines Schlüssel- oder Tokensystems. Zurück in einer Sekunde.

Schlüssel sind weitaus komplexer. Ich denke, die meisten SSH-Implementierungen verwenden standardmäßig den RSA-Schlüssel 2048. Vergleichen Sie das mit einem 8-stelligen Passwort. Selbst wenn sie in 256 Bit gehasht werden, können Passwörter, da ihnen die Zufälligkeit der Schlüssel fehlt, brutal erzwungen werden. Schneier hat einige großartige Beobachtungen dazu; Selbst angeblich "gute" Passwörter sind in der Regel nur eine Kombination aus knackbaren Daten (ein Wort mit einer Zahl und möglicherweise einigen einfachen Ersetzungen). Wir Menschen sind einfach zu vorhersehbar.

Da ein Schlüssel nur so sicher ist wie das Passwort für die Anmeldung, ist dies nicht ganz richtig. Indem Sie einen Schlüssel mit einem anderen Kennwort versehen, erhöhen Sie die Sicherheit erheblich, da Sie im Wesentlichen die Zwei-Faktor-Authentifizierung verwenden. Um auf etwas zuzugreifen, das Sie haben (den Schlüssel), müssen Sie etwas verwenden, das Sie kennen (ein Passwort). Ja, die Verwendung Ihres Anmeldekennworts zum Umschließen eines Schlüssels würde dies untergraben.

Zum Originalposter würde ich also sagen, dass Sie und Ihre Mitarbeiter falsch liegen. Sie sind vielleicht weniger als sie, aber die richtige Antwort ist, dass Sie sowohl einen Schlüssel als auch ein Passwort verwenden sollten.

Du verfehlst den springenden Punkt.Die Diskussion ist nicht, ob Sie Ihren SSH-Schlüssel mit einem Passwort verschlüsseln sollten (das sollten Sie eindeutig!), Sondern, wenn die Verwendung nur eines passwortbasierten Logins mehr oder weniger sicher ist als das schlüsselbasierte Login.Aus Sicht eines externen Angreifers, der den Schlüssel nicht erhalten hat, ist es unerheblich, ob der Schlüssel kennwortgeschützt ist oder nicht.Hinweis: Schlüssel und Passwort erforderlich ([Link] (http://security.stackexchange.com/questions/17931/possible-to-use-both-private-key-and-password-authentication-for-ssh-login)) Einloggen ist ein weiteres Problem.
Die Frage ist ein bisschen wie die Frage, ob ich das normale Türschloss oder den Riegel benutze.Die richtige Antwort lautet don
Das 5-Minuten-Limit wurde verpasst, aber die Frage, ob ich ein Passwort oder einen Schlüssel verwenden soll, zeigt meiner Ansicht nach ein Missverständnis der Authentifizierung.Dies sind Äpfel und Orangenfaktoren.Beachten Sie beim Szenario eines externen Angriffs, dass bei einem schlüsselbasierten System durch die Gefährdung des Hosts des Clients der Zugriff auf einen SSH-Server gewährt wird.Während mit einem Passwort der Zugriff brutal erzwungen werden muss (durch eine Sperre gemildert).Denken Sie auch daran, dass ein Systemadministrator nicht steuern kann, was ein Benutzer mit seinen privaten Schlüsseln macht.Also nochmal Äpfel und Orangen.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...