it-swarm-eu.dev

Sind kennwortlose SSH-Anmeldungen sicherer?

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 es nicht sicher ist, eine Verbindung ohne Passwort herzustellen. 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 ssh-copy-id Tool zum Kopieren meines öffentlichen Schlüssels auf den Server. Ich verbinde mich dann einfach mit ssh servername. Tatsächlich muss ich bei jedem Systemstart nur das Kennwort für meinen privaten Schlüssel eingeben einmal. 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.

68
Daniel

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 falsche Kennwörter allzu häufig sind.

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 Schlüsselprotokollierer installieren, der die wahrgenommenen Daten wiedergibt Vorteil von Passwörtern nutzlos.

54
Sven

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 passwortsicheres Programm verwendet und es auf dem Bildschirm mit der Datenbank ohne Passworteingabe belassen. 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 auch leicht einen Keylogger installieren, 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).

25
Shane Madden

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

Trotzdem sind gemeinsame 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 mache, ist, dass beide Nachteile haben und wo die Sicherheit Orte 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.

12
Squidly

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), dann einen GPU-basierten Offline-Brute-Force-Angriff auf Ihren Schlüssel ausführt und dann erhält Zugriff auf alle Ihre Systeme, wenn Ihre Passphrase entsprechend schwach ist (z. B. 4 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 aufbewahrt, und ein Angreifer kann ihn irgendwie von Ihrem System entfernen (z. B. wurde ein anderer Root-Benutzer angemeldet, während Sie das Kennwort im Speicher hatten).

  3. Ihr Schlüssel war viel weniger sicher als Sie dachten. Zum Beispiel die OpenSSH-Schlüsselschwäche; wo die einzige Zufälligkeit von der Prozess-ID kam, wurden nur 65536 Schlüssel generiert. Während diese Art von Problemen hoffentlich schnell bemerkt und behoben werden, als Ende Benutzer Es ist unmöglich zu sagen, dass es keinen größeren Fehler im Zufallszahlengenerator gibt, der zur Herstellung Ihrer Schlüssel verwendet wird.

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

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

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

Persönlich mag ich 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.

9
dr jimbob

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

Wenn Sie nicht jedes Mal vorsichtig sind, wenn Sie Ihr Passwort eingeben, besteht die Möglichkeit, dass Ihr Passwort im Klartext möglicherweise mehreren Protokolldateien, möglicherweise dem Shell-Verlauf oder sogar einer Art Trojaner hinzugefügt wird. 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 angeben Passwort für jemanden oder etwas, das Sie nicht beabsichtigt haben.

6
Zoredache

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 Kennwort auf dem Server verwenden, besteht die Gefahr, dass die Kennwortbenutzer es irgendwo aufschreiben müssen, um es sich zu merken. Bei den Schlüsselbenutzern besteht die Gefahr, dass sie mit entsperrtem Computer von ihrem Schreibtisch weggehen.

Vieles hängt vom Risiko-Usability-Verhältnis 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.

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

5
Safado

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

Sie sollten immer noch vorsichtig mit der Sicherheit auf den Client-Systemen 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.

5
Jeff Strunk

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 kennwortbasierten Systems durch das "Etwas, das 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 in 256 Bit gehasht, können Passwörter, weil 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.

Dies ist nicht ganz korrekt, da ein Schlüssel nur so sicher ist wie das Kennwort für die Anmeldung. 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 Originalplakat würde ich sagen, dass sowohl Sie als auch 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.

3
JoePete