Wie kann ich ssh-Verbindungen chrooten?

20

Ich möchte ein Chroot-Gefängnis für die meisten (nicht alle) Benutzer einrichten, die sich über SSH anmelden. Ich habe gehört, dass es mit den neuesten Versionen von openssh möglich ist, aber ich konnte nicht herausfinden, wie es geht. In der Anleitung geht es nur darum, eine alte Version zu patchen, und der Patch ist nicht mehr verfügbar.

Ich verwende Debian Etch.

Malfist
quelle

Antworten:

13

Ich benutze rssh für diesen Zweck.

Sie haben Recht, es gibt eine neue Möglichkeit, und es ist eine integrierte Funktion der neuesten ssh-Versionen.

Hier ist ein Artikel über Undeadly .

cstamas
quelle
6

Ich musste nur einen Benutzer einrichten, der sich über ssh und ssh bei einem anderen Server anmelden konnte (der nicht direkt mit der Außenwelt verbunden ist). Die Links von cstamas und ericmayo waren ein guter Anfang.

Grundsätzlich habe ich Folgendes zu / etc / ssh / sshd_config hinzugefügt:

Stimmt mit Benutzer myuser überein
  ChrootDirectory / chroot / myuser

Von da an musste ich nur noch die Chroot-Umgebung unter / chroot / myuser erstellen. Ich kopierte / bin / bash und / usr / bin / ssh und die gemeinsam genutzten Bibliotheken, die sie benötigten (ldd zeigt diese an). Für eine größere Umgebung wäre es wahrscheinlich sinnvoll, statisch verknüpfte Versionen der benötigten ausführbaren Dateien zu kompilieren.

Bash hat sofort funktioniert, damit ssh funktioniert, musste ich auch das .ssh-Verzeichnis erstellen, / etc / passwd, /etc/nsswitch.conf und / lib / libnss_ * kopieren und / dev / null, / dev / tty und erstellen / dev / urandom über mknod.

Marie Fischer
quelle
2
mkdir /chroot
mkdir -p /chroot/home/<user_name>

mkdir /chroot/home/<user-name>/bin  
cp -pr /bin/bash /chroot/home/<user_name>/bin/.  
cp -pr /bin/ls /chroot/home/<user_name>/bin/.  
cp -pr /lib64 /chroot/home/<user_name>/.

Sie müssen die Datei / etc / sshd_config bearbeiten und addd hinzufügen

ChrootDirectory /chroot/%h

Starten Sie den sshd-Daemon neu.

Alles in allem denke ich ehrlich, dass sftp eine bessere Option ist.

Außerdem habe ich diese URL gefunden, wenn sie hilfreich ist.

http://www.techrepublic.com/blog/opensource/chroot-users-with-openssh-an-easier-way-to-confine-users-to-the-home-directories/229

Soham Chakraborty
quelle
1

Wenn Sie die Authentifizierung mit öffentlichem Schlüssel verwenden, können Sie die Option "Befehl" in autorisierten Schlüsseln verwenden, um das Chroot-Gefängnis einzurichten.

~ / .ssh / authorized_keys:

command="/path/to/the/chroot/script" ssh-dss keydata.....keydata... user@host
UloPe
quelle
Ich verwende keine Authentifizierung mit öffentlichem Schlüssel, die Authentifizierung erfolgt durch ein Kennwort und einen Benutzernamen
Malfist
0

Soweit ich weiß, erlauben neue Versionen von OpenSSH nur Chroot für SFTP-Verbindungen. Ich habe es versucht und es funktioniert. Für SSH ist die verfügbare Lösung jedoch der chrootssh-Patch. Ich durchsuche die SourceForge-Site und es gibt keine Dateien, daher denke ich, dass diese eingestellt sind.

Für Debian Etch gibt es hier einige Dateien: http://debian.home-dn.net/etch/ssh/

Hier gibt es andere Lösungen: http://www.debian.org/doc/manuals/securing-debian-howto/ap-chroot-ssh-env.de.html , einschließlich chrootssh.

hdanniel
quelle
-1 Entschuldigung, Ihre Antwort war vor Jahren korrekt, als Sie sie geschrieben haben, ist aber nicht mehr.
Chris S