it-swarm.com.de

Beschränken eines SSH / SCP / SFTP-Benutzers auf ein Verzeichnis

Gibt es eine einfache Möglichkeit, einen SCP/SFTP-Benutzer auf ein Verzeichnis zu beschränken? Bei allen Methoden, auf die ich gestoßen bin, muss ich durch Kopieren von Binärdateien ein Chroot-Gefängnis einrichten, aber ich denke nicht, dass dies notwendig sein sollte.

37
user4518

SSH Unterstützt das native Chrooten eines SFTP-Benutzers. Sie müssen nur liefern

ChrootDirectory

In Ihrer sshd-Konfigurationsdatei und starten Sie sshd neu.

Wenn Sie nur SFTP machen, müssen Sie nichts mehr tun. Leider funktioniert dies bei scp nicht. Für eine interaktive Shell müssen Sie Binärdateien und/dev-Knoten in die Chroot kopieren.

Eine Beispielkonfiguration für nur einen Benutzer, Testbenutzer:

Match User testuser
    ChrootDirectory /home/testuser
    ForceCommand internal-sftp

Ein paar Dinge, die Sie auf der Manpage sshd_config beachten sollten:

 Alle Komponenten des Pfadnamens müssen Verzeichnisse im Root-Besitz sein, die von keinem anderen Benutzer oder keiner anderen Gruppe 
 Geschrieben werden können. Nach der Chroot ändert sshd (8) das Arbeitsverzeichnis 
 In das Ausgangsverzeichnis des Benutzers. 

Suchen Sie in man sshd_config nach ChrootDirectory, um weitere Informationen zu erhalten.

30
gabe.

Eine Chroot ist eine ziemlich einfache Methode. Da das Betriebssystem bereits über diese Sicherheitsfunktion verfügt, versuchen Daemon-Writer nicht, sie erneut zu implementieren.

Rssh enthält eine Anleitung zum Aufbau eines Chroot-Gefängnisses. Es befindet sich in der Datei CHROOT in der Quelldistribution. Kurz gesagt, Sie müssen haben:

  • Einige Binärdateien, die aus dem Stammverzeichnis kopiert wurden: /usr/bin/scp, /usr/libexec/openssh/sftp-server, /usr/bin/rssh_chroot_helper
  • Die von ihnen verwendeten Bibliotheken ({/usr,}/lib/lib*.so.[0-9]) Wurden ebenfalls kopiert
  • A /etc/passwd (Möglicherweise keine Kopie, sondern vom Master abgeleitet)
  • Einige Geräte: /dev/null, /dev/tty Und auch ein /dev/log Socket für die Protokollierung (und Sie müssen Ihrem Syslog-Daemon mitteilen, dass er diesen Socket abhören soll).

Zusätzlicher Tipp, der nicht in der RSSH-Dokumentation enthalten ist: Wenn Sie einige Dateien benötigen, um in einem Chroot-Gefängnis zugänglich zu sein, können Sie bindfs oder Linux mount --bind Verwenden, um zusätzliche Verzeichnishierarchien von außen zu erstellen das Gefängnis. bindfs ermöglicht es dem erneut bereitgestellten Verzeichnis, restriktivere Berechtigungen zu haben, beispielsweise schreibgeschützt. (mount --bind Nicht, wenn Sie keinen Kernel-Patch anwenden. Debian hat diesen Patch seit East Lenny hinzugefügt, aber die meisten anderen Distributionen haben ihn seit 2011 nicht mehr.)

Vielleicht möchten Sie sich scponly (oder in jüngerer Zeit rssh ) ansehen. Es handelt sich im Wesentlichen um eine Login-Shell, die nur zum Starten von scp oder des sftpd-Subsystems verwendet werden kann. In der Variante scponlyc führt es eine Chroot durch, bevor das betreffende Subsystem aktiviert wird.

7
Shadur