Das Ausführen SSH
auf einem alternativen Port zählt nicht mehr als Sicherheit. Dies führt nur zu einer geringfügigen Verschleierung und zu einem zusätzlichen Komplexitätsschritt für Ihre Benutzer. Personen, die Ihr Netzwerk unterbrechen möchten, automatisierte Port-Scanner verwenden und sich nicht darum kümmern, auf welchem Port sie ausgeführt werden, können dies problemlos tun.
Wenn Sie die Sicherheit auf einem System verbessern möchten, das remote internetbasiertes SSH für eingehende sshd_config
Nachrichten zulässt , steuern Sie Ihre Benutzer in @Anthon und implementieren Sie die Sicherheit direkt in PAM.
Erstellen Sie zwei Gruppen lusers
und rusers
. Fügen Sie die mobilen Remotebenutzer der rusers
Gruppe hinzu. Verwenden Sie das PAM-Modul pam_succeed_if.so , um den Zugriff auf diese Benutzer zuzulassen. Fügen Sie Ihrer Pam-Konfiguration Zeilen für ssh hinzu:
account sufficient pam_succeed_if.so user ingroup lusers
account sufficient pam_succeed_if.so user ingroup rusers
Bei einigen Modulen von pam_succeed_if.so müssen Sie möglicherweise eine leicht abweichende Syntax verwenden, z group = lusers
.
Dies sshd
schränkt nicht nur die Benutzer ein, die eine Verbindung herstellen können, sondern Sie haben auch im Fall eines Fehlers sshd
weiterhin den Schutz, den die PAM-basierten Einschränkungen bieten.
Ein weiterer Schritt für die Remotebenutzer besteht darin, die Verwendung von ssh_keys mit Passphrasen zu erzwingen. Lokale Benutzer können sich also mit Schlüsseln oder Kennwörtern anmelden, Remote-Benutzer müssen jedoch über einen Schlüssel verfügen. Wenn Sie die Schlüssel für diese Benutzer erstellen, können Sie sicherstellen, dass dem Schlüssel eine Passphrase zugeordnet ist. Auf diese Weise wird der Zugriff auf Standorte beschränkt, die tatsächlich den SSH-Schlüssel und die Passphrase besitzen. Und die Begrenzung möglicher Angriffsmethoden, wenn das Kennwort eines Benutzers erstellt wird.
In sshd_config
:
2 Einstellungen ändern:
ChallengeResponseAuthentication yes
und
PasswordAuthentication yes
zu:
ChallengeResponseAuthentication no
und
PasswordAuthentication no
Standardmäßig ist jetzt nur die Schlüsselauthentifizierung zulässig. Dann können Sie für lokale Benutzer die match
Konfigurationseinstellung verwenden, um die Standardeinstellung für lokale Benutzer zu ändern. Angenommen, Ihr lokales privates Netzwerk ist 192.168.1.0/24, fügen Sie Folgendes hinzu sshd_config
:
Match Address 192.168.1.0/24
PasswordAuthentication yes
Jetzt können die lokalen Benutzer eine Verbindung mit Kennwörtern oder Schlüsseln herstellen, und entfernte Benutzer werden gezwungen, Schlüssel zu verwenden. Es liegt an Ihnen, die Schlüssel mit Passphrasen zu erstellen.
Als zusätzlichen Vorteil müssen Sie nur sshd_config
einen einzigen Port verwalten und ssh nur auf einem einzigen Port ausführen, was Ihre eigene Verwaltung vereinfacht.
edit 2017-01-21 - Beschränkung der Verwendung von authorized_keys
Dateien.
Wenn Sie sicherstellen möchten, dass Benutzer nicht einfach einen SSH-Schlüssel selbst generieren und ihn mit einer authorized_keys
Datei zum Anmelden verwenden können, können Sie steuern, dass durch Festlegen eines bestimmten Speicherorts für SSHD nach autorisierten Schlüsseln gesucht wird.
In /etc/ssh/sshd_config
, ändern:
AuthorizedKeysFile %h/ssh/authorized_keys
zu etwas wie:
AuthorizedKeysFile /etc/.ssh/authorized_keys/%u
Wenn Benutzer auf ein kontrolliertes Verzeichnis verweisen, in das sie keine Schreibberechtigung haben, können sie keinen eigenen Schlüssel generieren und ihn verwenden, um die von Ihnen festgelegten Regeln zu umgehen.
lusers
Gruppe, jedoch nicht in derrusers
Gruppe, ein Schlüsselpaar generiert und dieses aktualisiert~/.ssh/authorized_keys
, kann sie sich von einem Remotestandort aus anmelden.