5 Abhörsicherer Shellzugriff mit OpenSSH

OpenSSH ist eine Sammlung von Netzwerkdienstprogrammen, die es ermöglichen, Netzwerkdienste sicher über ein ungesichertes Netzwerk zu betreiben. OpenSSH ist weit verbreitet und bietet eine sichere Methode für die Remote-Verwaltung von Servern und den Transfer von Dateien. Im Folgenden wird erklärt, wie OpenSSH zur Einrichtung eines abhörsicheren Shellzugriffs verwendet werden kann.

Installation und Konfiguration auf dem Server

Viele Linux-Distributionen haben OpenSSH bereits vorinstalliert. Falls dies bei Ihrer Distribution nicht der Fall ist, können Sie OpenSSH über den Paketmanager Ihrer Distribution installieren. Bei Ubuntu wäre das beispielsweise:

sudo apt-get update
sudo apt-get install openssh-server

Nach der Installation muss der SSH-Dienst konfiguriert werden. Die Konfigurationsdatei für den SSH-Dienst befindet sich in der Regel unter /etc/ssh/sshd_config. Hier können Sie verschiedene Parameter wie den Port, auf dem der Dienst laufen soll, oder die Authentifizierungsmethode einstellen. Zum Bearbeiten dieser Datei benötigen Sie Root-Rechte:

sudo nano /etc/ssh/sshd_config

In dieser Datei können Sie die Zeile “PermitRootLogin” auf “no” setzen, um zu verhindern, dass sich Benutzer mit dem Root-Konto über SSH anmelden können. Dies ist eine wichtige Sicherheitsmaßnahme.

Nachdem Sie Ihre Änderungen vorgenommen haben, speichern Sie die Datei und starten Sie den SSH-Dienst neu, um die Änderungen wirksam werden zu lassen:

sudo service ssh restart

Einrichtung auf dem Client

Auf der Client-Seite müssen Sie ebenfalls sicherstellen, dass OpenSSH installiert ist. Auf einem Ubuntu-System können Sie das wie folgt tun:

sudo apt-get update
sudo apt-get install openssh-client

Sobald OpenSSH installiert ist, können Sie eine Verbindung zu einem Server herstellen, indem Sie den Befehl ssh gefolgt vom Benutzernamen und der IP-Adresse des Servers verwenden:

ssh user@server-ip

Verwendung von Schlüsseln zur Authentifizierung

Eine der sichersten Methoden zur Authentifizierung beim Zugriff auf einen Server über SSH ist die Verwendung von Schlüsselpaaren. Anstatt ein Passwort einzugeben, verwenden Sie ein privates Schlüsselpaar, das nur Ihnen bekannt ist, und einen öffentlichen Schlüssel, der auf dem Server gespeichert ist.

Um ein neues Schlüsselpaar zu erzeugen, verwenden Sie den Befehl ssh-keygen auf dem Client-Computer:

ssh-keygen -t rsa -b 4096

Dies erzeugt ein neues Schlüsselpaar mit einer Länge von 4096 Bit. Sie werden aufgefordert, ein sicheres Passwort für den privaten Schlüssel einzugeben. Dieses Passwort wird benötigt, um den privaten Schlüssel zu verwenden.

Um Ihren öffentlichen Schlüssel auf den Server zu übertragen, können Sie den Befehl ssh-copy-id verwenden:

ssh-copy-id user@server-ip

Jetzt können Sie sich ohne Passwort, nur mit Ihrem privaten Schlüssel, am Server anmelden.

Diese Einrichtung stellt sicher, dass Ihr Shellzugriff

abhörsicher ist und bietet eine starke Verteidigung gegen mögliche Angriffe. Es ist jedoch wichtig, sich daran zu erinnern, dass die Sicherheit ein fortlaufender Prozess ist und dass Sie stets wachsam sein und Ihre Systeme regelmäßig aktualisieren sollten.

5.1 Port Weiterleitung

SSH (Secure Shell) ermöglicht eine sichere Verbindung zwischen zwei Netzwerkgeräten. Eine der Funktionen von SSH ist die Möglichkeit der Port-Weiterleitung, auch als SSH-Tunneling bezeichnet. Dies kann nützlich sein, um sichere Kommunikationen für andere Protokolle wie HTTP zu ermöglichen, oder um Zugang zu einem internen Netzwerk von außerhalb zu erhalten.

Es gibt drei Arten der SSH Port-Weiterleitung:

  1. Lokale Port-Weiterleitung (Outbound SSH Tunneling): Leitet einen Port auf Ihrem lokalen Computer zu einem Port auf dem Server weiter.

  2. Entfernte Port-Weiterleitung (Inbound SSH Tunneling): Leitet einen Port auf dem Server zu einem Port auf Ihrem lokalen Computer weiter.

  3. Dynamische Port-Weiterleitung (SOCKS Proxy over SSH): Erstellt einen SOCKS-Proxyserver, der die Daten auf Ports auf der Grundlage der benötigten Ressourcen weiterleitet.

Hier ist ein Beispiel für jede Art von Port-Weiterleitung:

  1. Lokale Port-Weiterleitung:

    ssh -L lokal_port:remote_host:remote_port benutzername@ssh_server

    Beispiel:

    ssh -L 8080:www.google.com:80 benutzername@ssh_server

    Dies leitet den lokalen Port 8080 auf Ihrem Computer zu www.google.com:80 über ssh_server.

  2. Entfernte Port-Weiterleitung:

    ssh -R remote_port:lokaler_host:lokaler_port benutzername@ssh_server

    Beispiel:

    ssh -R 8080:localhost:3000 benutzername@ssh_server

    Dies leitet den Port 8080 auf dem ssh_server zu Port 3000 auf Ihrem lokalen Computer.

  3. Dynamische Port-Weiterleitung:

    ssh -D lokal_port benutzername@ssh_server

    Beispiel:

    ssh -D 8080 benutzername@ssh_server

    Dies öffnet den Port 8080 auf Ihrem Computer als SOCKS-Proxy, der den gesamten Datenverkehr über ssh_server leitet.

Für alle diese Befehle ersetzen Sie benutzername durch Ihren Benutzernamen und ssh_server durch die IP-Adresse oder den Domainnamen des SSH-Servers, mit dem Sie sich verbinden möchten.

Bitte beachten Sie, dass die genauen Befehle und Optionen, die Sie verwenden, von Ihrer spezifischen Situation und den Anforderungen abhängen können. Weitere Informationen finden Sie in der Manpage von SSH (man ssh) oder in der offiziellen OpenSSH-Dokumentation.

5.2 Die SSH-Konfiguration: Erlauben und Verweigern von Benutzerzugriffen

In der SSH-Konfigurationsdatei können Administratoren bestimmte Benutzer erlauben oder ablehnen, sich per SSH zu verbinden, indem sie die Direktiven AllowUsers und DenyUsers verwenden.

Um diese Direktiven zu nutzen, sind die folgenden Schritte erforderlich:

  1. Öffnen Sie die SSH-Konfigurationsdatei mit einem Texteditor Ihrer Wahl. Sie benötigen Root-Berechtigungen dafür. Zum Beispiel mit dem Befehl sudo nano /etc/ssh/sshd_config.

  2. Um bestimmten Benutzern den Zugang zu erlauben, verwenden Sie die Direktive AllowUsers, gefolgt von den Benutzernamen, die Sie erlauben möchten, getrennt durch Leerzeichen. Zum Beispiel: AllowUsers user1 user2. Dies erlaubt nur user1 und user2, sich per SSH zu verbinden. Alle anderen Benutzer werden abgelehnt.

  3. Um bestimmten Benutzern den Zugang zu verbieten, verwenden Sie die Direktive DenyUsers, gefolgt von den Benutzernamen, die Sie ablehnen möchten, getrennt durch Leerzeichen. Zum Beispiel: DenyUsers user3 user4. Dies verhindert, dass user3 und user4 sich per SSH verbinden können. Alle anderen Benutzer können sich verbinden, sofern sie nicht durch andere Regeln eingeschränkt sind.

  4. Speichern Sie die Änderungen und schließen Sie den Texteditor.

  5. Um die Änderungen wirksam zu machen, müssen Sie den SSH-Dienst neu starten. Je nach Ihrem System kann der Befehl dafür variieren, aber hier sind ein paar gängige Optionen: sudo systemctl restart ssh oder sudo service ssh restart.

Es ist wichtig zu beachten, dass AllowUsers und DenyUsers gemeinsam verwendet werden können, aber AllowUsers hat Vorrang. Das bedeutet, wenn ein Benutzer in beiden Listen steht, wird er trotzdem abgelehnt. Ebenso, wenn AllowUsers verwendet wird, werden alle Benutzer, die nicht explizit erlaubt sind, abgelehnt, selbst wenn sie nicht in DenyUsers aufgeführt sind.

Obwohl die Direktiven AllowUsers und DenyUsers spezifische Benutzernamen erwarten und den Platzhalter ALL nicht unterstützen, können Sie in den SSH-Konfigurationsparametern AllowGroups und DenyGroups den Begriff ALL verwenden, um sich auf alle Gruppen zu beziehen. Beispielsweise erlaubt AllowGroups group1 group2 und DenyGroups ALL nur Benutzern in den Gruppen group1 und group2 SSH-Verbindungen herzustellen, während alle anderen Gruppen (repräsentiert durch ALL) verweigert werden.

Der korrekte Einsatz von Benutzer- und Gruppenkontrollen in der SSH-Konfiguration kann Administratoren dabei helfen, den Zugang zu ihren Systemen besser zu verwalten und die Sicherheit ihrer Netzwerke zu erhöhen.

In den Direktiven AllowUsers und DenyUsers in der SSH-Konfigurationsdatei können Sie den Begriff ALL verwenden, um sich auf alle Benutzer zu beziehen. Beachten Sie jedoch, dass AllowUsers und DenyUsers spezifische Benutzernamen erwarten und nicht die Platzhalter ALL unterstützen.

Falls Sie auf alle Benutzer verweisen möchten, müssen Sie keine Benutzernamen in AllowUsers angeben, da standardmäßig alle Benutzer zugelassen sind, solange sie über die korrekten Anmeldeinformationen verfügen. In ähnlicher Weise würde das Weglassen von DenyUsers dazu führen, dass kein Benutzer explizit abgelehnt wird.

Wenn Sie jedoch speziell auf die SSH-Konfigurationsparameter AllowGroups und DenyGroups hinweisen, können Sie ALL verwenden, um sich auf alle Gruppen zu beziehen.

Hier ist ein Beispiel:

AllowGroups group1 group2
DenyGroups ALL

In diesem Fall dürfen nur Benutzer in den Gruppen group1 und group2 SSH-Verbindungen herstellen, während alle anderen Gruppen (repräsentiert durch ALL) verweigert werden.

Vergessen Sie nicht, den SSH-Dienst neu zu starten, nachdem Sie Änderungen an der Konfigurationsdatei vorgenommen haben, um sicherzustellen, dass die neuen Einstellungen wirksam werden.

Entschuldigung für das Missverständnis. Ja, Sie können in der SSH-Konfigurationsdatei bestimmte Benutzer erlauben oder ablehnen, sich per SSH zu verbinden. Die Direktiven, die Sie dafür verwenden, sind AllowUsers und DenyUsers.

Hier ist, wie Sie sie verwenden können:

  1. Öffnen Sie die SSH-Konfigurationsdatei mit einem Texteditor Ihrer Wahl. Sie benötigen Root-Berechtigungen dafür. Zum Beispiel:

    sudo nano /etc/ssh/sshd_config
  2. Um bestimmten Benutzern den Zugang zu erlauben, verwenden Sie die Direktive AllowUsers, gefolgt von den Benutzernamen, die Sie erlauben möchten, getrennt durch Leerzeichen. Beispiel:

    AllowUsers user1 user2

    Dies erlaubt nur user1 und user2, sich per SSH zu verbinden. Alle anderen Benutzer werden abgelehnt.

  3. Um bestimmten Benutzern den Zugang zu verbieten, verwenden Sie die Direktive DenyUsers, gefolgt von den Benutzernamen, die Sie ablehnen möchten, getrennt durch Leerzeichen. Beispiel:

    DenyUsers user3 user4

    Dies verhindert, dass user3 und user4 sich per SSH verbinden können. Alle anderen Benutzer können sich verbinden, sofern sie nicht durch andere Regeln eingeschränkt sind.

  4. Speichern Sie die Änderungen und schließen Sie den Texteditor.

  5. Um die Änderungen wirksam zu machen, müssen Sie den SSH-Dienst neu starten. Je nach Ihrem System kann der Befehl dafür variieren, aber hier sind ein paar gängige Optionen:

    sudo systemctl restart ssh

    oder

    sudo service ssh restart

Bitte beachten Sie, dass AllowUsers und DenyUsers gemeinsam verwendet werden können, aber AllowUsers hat Vorrang. Das bedeutet, wenn ein Benutzer in beiden Listen steht, wird er trotzdem abgelehnt. Ebenso, wenn AllowUsers verwendet wird, werden alle Benutzer, die nicht explizit erlaubt sind, abgelehnt, selbst wenn sie nicht in DenyUsers aufgeführt sind.