Sichern von SSH-Tunneln

Sichern von SSH-Tunneln

Wir haben eine Anwendung, die SSH verwendet, um eine Verbindung zu einem Server herzustellen: Der Netzwerkverkehr der Anwendung (Datenbank, einige benutzerdefinierte TCP-Protokolle usw.) wird über eine SSH-Verbindung getunnelt.

Wir verwenden ein Schlüsselpaar und ein nicht privilegiertes Konto auf dem Server, aber die Benutzer können sich trotzdem mit ihrem Schlüssel beim Server anmelden oder jede gewünschte Portumleitung durchführen.

Gibt es eine Möglichkeit, den SSH-Server so zu konfigurieren, dass nurmancheTunnel (eingeschränkt auf die Endadresse und den Port der Tunnel) und Shell-Zugriff deaktivieren? (wir verwenden OpenSSH)

[bearbeiten]

Ich bin aufDieser Artikel, es scheint, als ob das Entfernen des Shell-Zugriffs nicht ausreicht. Titel und Beschreibung entsprechend geändert.

Antwort1

In Ihrer authorized_keys-Datei können Sie angeben, welcher Befehl ausgeführt wird, wenn Sie sich anmelden. Sie können diesen Befehl einfach so einstellen, dass er etwas ausführt, das einfach lange wartet. Der sshd-MannSeiteals Liste aller Optionen, die Sie in Ihrer authorized_keys-Datei verwenden können.

permitopen="tsserver.example.org:3389",no-pty,no-agent-forwarding,no-X11-forwarding,command="/usr/local/stm_shell.sh" ssh-rsa AAAAB3....

Meine stm_shell.sh ist diese (sie erzwingt auch ein Timeout von 12 Stunden). Ich bin nicht 100 % sicher, ob das völlig sicher ist.

#!/bin/bash

# send a hang-up after this process exits
shopt -s huponexit
# maximum session length in hours
CONNECT_TIME=12
sleep $[CONNECT_TIME*60]
kill $PPID

Antwort2

Das Einstellen der Benutzer-Shell auf /bin/false kann möglicherweise das gewünschte Ergebnis erzielen.

Antwort3

Möglicherweise bietet das Schlüsselwort „ChrootDirectory“ in der sshd_config (man sshd_config) etwas mehr Sicherheit.

Antwort4

Ich glaube, Sie könnten die ForceCommandDirektive so einstellen /bin/false, dass der Shell-Zugriff verhindert wird.

verwandte Informationen