Wie kann ich die SSH-Sicherheit erhöhen? Kann ich sowohl einen Schlüssel als auch ein Passwort benötigen?


16

Ich habe ein kleines Netzwerk von Servern und möchte die allgemeine Sicherheit erhöhen. Ich habe nicht genug Zeit / Geld / Paranoia, um ein VPN einzurichten. Wie kann ich die Sicherheit meines Systems grundlegend erhöhen?

Möglicherweise müssen Benutzer ihren Schlüssel senden und ein Kennwort eingeben. Dies ist ein bisschen schwer zu googeln, weil alles über "ssh key password" über "sshing without a password" handelt. :-)

Ein Schema, mit dem ich schon immer spielen wollte, besteht darin, dass eingehende Verbindungen nur von einer Whitelist mit dyndns-IP-Adressen stammen. Ich weiß, dass sich einige Sicherheitsköpfe bei dem Gedanken an die Idee übergeben würden, aber die Tatsache ist, dass die Nutzung einer Box eine sehr bedeutende Komplexität mit sich bringen würde.

Was denkst du? Was gibt es sonst noch?


Sie können auch die Liste der Benutzer einschränken, die eine Verbindung mit den Anweisungen AllowUsers oder DenyUsers herstellen dürfen. Weitere Details zu diesem Beitrag .
Fred

Antworten:


8

Das Login mit Passwort und Schlüssel ist dasselbe wie "nur mit Schlüssel". Während der Schlüsselerstellung werden Sie aufgefordert, eine Passphrase einzugeben. Wenn Sie dieses Feld leer lassen, werden Sie nicht nach einem Passwort gefragt. Wenn Sie eine Passphrase eingeben, werden Sie bei jeder Anmeldung dazu aufgefordert.

Wenn Sie sich Sorgen um die Sicherheit machen, sollten Sie einige der in diesem Forum millionenfach genannten Ratschläge berücksichtigen:

  • Deaktivieren Sie die SSH-Anmeldung für root
  • Erlaube ssh Zugriff nur von definierten IP Adressen (iptables, hosts.allow, ...)
  • Verschieben Sie den SSH-Port auf einen anderen Port (mehr Unbekanntheit als Sicherheit, aber es funktioniert)
  • Überwachen Sie ausländische Anmeldeversuche und reagieren Sie entsprechend
  • Halten Sie Ihr System auf dem neuesten Stand

Usw.

Update: In der Antwort hier erfahren Sie, wie Sie bei einem OpenSSH-Server sowohl einen öffentlichen Schlüssel als auch ein lokales Systemkennwort benötigen.


Danke für all eure Tipps, werde mich darum kümmern. Wenn sowohl Schlüssel als auch Kennwort erforderlich sind, kann ein Angreifer, der ein Kennwort herausfindet (z. B. wenn der Benutzer es an einer unsicheren Stelle verwendet), ohne den Schlüssel nicht hineinkommen und stiehlt der Angreifer den Schlüssel vom Computer des Benutzers , sie können nicht hineinkommen, ohne das Passwort zu kennen ... richtig?
John Bachir

12
Es ist nicht das gleiche. Wenn Sie nur den Schlüssel benötigen, kann der Server keine Kennwortsicherheitsrichtlinie für den Schlüssel erzwingen. Ein unvorsichtiger Benutzer könnte einen unverschlüsselten privaten Schlüssel auf dem Client haben, der Ihren Server angreifbar macht, wenn der Schlüssel gestohlen wird.
200_success

mkudlacek - ich wusste vorher nichts über hosts.allow - google herum, es scheint, als wäre meine Idee mit der Whitelist von dyndns doch nicht so albern, ich denke, das werde ich ausprobieren.
John Bachir

1
200_erfolg - kann man also sowohl einen schlüssel als auch ein passwort verlangen?
John Bachir

Ich benutze auch die DenyHosts-Anwendung, um Leute auszusperren, die immer wieder versuchen, hineinzukommen und scheitern. Eine nette kleine proaktive automatisierte Art, Leute auf die schwarze Liste zu setzen.
James T Snell

6

Eine Idee, die ich interessant fand, ist Port-Knocking. Um eine SSH-Verbindung herzustellen, müssen Sie zunächst eine Sequenz anderer Ports prüfen, bevor der SSH-Server eine Verbindungsanforderung bestätigt. Wenn die richtige Reihenfolge der Ports nicht verwendet wird, erfolgt keine Antwort. Es sieht also so aus, als ob kein SSH-Server ausgeführt wird. Die Reihenfolge der Ports ist anpassbar und kann mit Ihren vorgesehenen Benutzern geteilt werden. Alle anderen können effektiv keine Verbindung herstellen.

Ich habe das selbst nicht ausprobiert, aber nach dem, was ich gehört habe (was eigentlich nicht viel ist), ist der Overhead vernachlässigbar und senkt Ihr Sichtbarkeitsprofil enorm.


Ich würde mitmachen, wenn Sie nur die "allgemeine Sicherheit erhöhen" möchten, aber Sie sollten wahrscheinlich versuchen, stattdessen bestimmte Sicherheitsprobleme zu lösen.
Stefan Thyberg

Ich benutze dies an allen Stellen, an denen ich ssh habe, und es ist sehr effektiv, imho.
Sirex

Ist das nicht dasselbe wie ein Passwort, das 4 Zeichen länger ist?
John Bachir

nicht wirklich. Es gibt 65536 Ports und 26 Buchstaben. Außerdem können Sie die Klopfsequenz beliebig lang wählen und Wiederholungsversuche mithilfe von Standard-Firewall-Techniken einschränken. Es ist an sich keine Sicherheit, aber es ist schön, sie zu haben.
Sirex

Na dann 8 oder 12 Zeichen länger :-D
John Bachir

3

Patches für die direkte Aktivierung in SSH und viele relevante Diskussionen:

Dies kann auch ohne Änderung durchgeführt werden, indem ein Kennwortüberprüfungsskript mit der Verwendung der ForceCommandKonfigurationsoption kombiniert wird .

Wenn Sie die Authentifizierung mit öffentlichem Schlüssel auf PAM verschoben haben, ist es möglich, dass beide Schritte ausgeführt werden müssen, bevor PAM die Authentifizierung als erfolgreich ansieht.


2

Benutz einfach

RequiredAuthentications publickey, password

in, sshd_configwenn Sie sshd von ssh.com verwenden. Diese Funktion ist in OpenSSH nicht verfügbar.


RequiredAuthenticationsist definitiv keine Standarderweiterung von OpenSSH
Hubert Kario

Wissen Sie, welche sshd-Implementierungen dies unterstützen?
John Bachir

Tectia SSH-Server unterstützt es. Übrigens: Verwenden Sie @nameOfUser, wenn Sie auf ihre Kommentare antworten. Auf diese Weise werden sie über die Antwort benachrichtigt
Hubert Kario

Ähnliche Funktionen werden in OpenSSH ab Version 6.2 unterstützt: serverfault.com/a/562899
Søren Løvborg

1

Sie können auch Einmalpasswörter verwenden , um die Sicherheit zu erhöhen. Auf diese Weise können sich Benutzer von einem unsicheren Terminal aus anmelden, das möglicherweise über einen Keylogger verfügt, wenn sie zuvor das nächste Kennwort generiert haben. Es gibt auch Passwortgeneratoren, die auch auf älteren Java-MIDP-Telefonen installiert werden können und die Sie immer dabei haben.


Ja, auf meinem persönlichen Server verwende ich zusätzlich zu meinem Passwort einen Yubikey-Token. Das Token generiert ein Einmalpasswort. Beide sind zur Authentifizierung erforderlich. Alternativ erlaube ich die Umgehung des Passwort / otp-Paars, wenn Sie sich mit einem SSH-Schlüssel authentifizieren. Der Yubikey ist billig und es gibt eine Menge Software, um ihn in Pam, das erweiterbare Authentifizierungssystem von Linux, zu integrieren.
Martijn Heemels

1

Ich würde empfehlen, dass Sie niemals einen sshd-, rdp- oder ähnlichen Verwaltungsdienst ohne IP-Beschränkung ausführen. In der Tat würde ich vorschlagen, den Zugriff auf solche Dienste auf Administratoren zu beschränken, die über VPN eine Verbindung herstellen.


1

In Bezug auf Ihre ursprüngliche Frage, ob Sie sowohl einen Schlüssel als auch ein Passwort benötigen, ist dies jetzt möglich, wenn Sie RHEL oder CentOS 6.3 ausführen. In den Versionshinweisen zu RHEL 6.3 wird dies beschrieben. Fügen Sie dies zu Ihrer sshd_config hinzu

RequiredAuthentications2 publickey,password

0

Ich stimme 3molo sehr zu. OpenSSH ist der Standard-SSH-Server von Linux und Unix. Es gibt keinen Grund für uns, dies zu ändern, insbesondere aus Sicherheitsgründen. VPN sollte die beste Lösung sein, die unseren Datenverkehr verschlüsseln und die zweistufige Kennwortautorisierung bereitstellen kann.


0

Ich bin mir nicht sicher, warum es niemand erwähnt hat, aber - Sie sollten sicherstellen, dass die Schlüssel länger als standardmäßig 1024 Bit generiert werden, was nicht mehr als sicher gilt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.