SDB:SFTP-Server mit Chroot

Wechseln zu: Navigation, Suche


Getestet mit openSUSE Empfohlene Artikel Verwandte Artikel
Icon-checked.png

Icon-manual.png Icon-help.png

Allgemein

Einrichten eines SFTP Server mit Benutzern welche einen eingeschränkten Zugriffsbereich (Chroot) haben. Voraussetzung ist ein installierter OpenSSH konfigurieren Server welche Fernzugriffe akzeptiert.

Voraussetzungen

Um mit diesem Artikel zu arbeiten werden Grundkenntnisse in Linux/openSUSE gebraucht, inklusive:

  • Arbeiten mit der Kommandozeile (CLI)
  • Bearbeitung von Textdateien
  • Erwerben von root-Rechten (verwenden von su, sudo oder Login als root)
  • Vertrauter Umgang mit YaST-Modulen:“Benutzer- und Gruppenverwaltung” und "Firewall"

Und natürlich brauchen Sie ein funktionstüchtiges und laufendes Netzwerk. Wenn Sie eine Verbindung von außerhalb Ihres LANs einrichten wollen, müssen Sie den benötigten Port an Ihrem Router öffnen können.

SSHD konfigurieren

Die Konfigurationsdatei /etc/ssh/sshd_config mit einem beliebigen Texteditor als root Benutzer öffnen.

SFTP Subsystem

Damit das mit eingeschränkten zugriff funktioniert muss der der SSH Dienst auf den internen SFTP Server umgestellt werden. Dies kann an folgender Stelle in der Konfigurationsdatei so umgestellt werden:

# override default of no subsystems
#Subsystem      sftp    /usr/lib/ssh/sftp-server
Subsystem      sftp    internal-sftp

Match Regelblöcke

Ein "Match Regelblock" kann für spezifische Einstellungen von Benutzern oder Gruppen benutzt werden. Ein solcher Block muss immer am ende der Konfigurationsdatei sein. Es können auch mehrere Blöcke hinzugefügt werden.

z.B. :

Match group sftponly
   ForceCommand internal-sftp
   ChrootDirectory /srv/sftp
   PasswordAuthentication yes
   PermitTunnel no
   AllowAgentForwarding no
   AllowTcpForwarding no
   X11Forwarding no
  • ForceCommand internal-sftp Stellt sicher das der Benutzer mit der entsprechenden Gruppe nur mit SFTP auf SSH zugreifen kann.
  • ChrootDirectory /srv/sftp Definiert das Verzeichnis bis wohin der Benutzer zugreifen kann.
  • PasswordAuthentication yes erlaubt Identifizierung per Passwort.
  • PermitTunnel no Verweigert die Benutzung eines VPN Tunnels.
  • AllowAgentForwarding no Verweigert die Benutzung von Single Sign-On.
  • AllowTcpForwarding no Verweigert die TCP Weiterleitung.
  • X11Forwarding no Deaktiviert die X11 Weiterleitung.

Vorbereiten der Verzeichnisse

Wenn die Zugriffsrechte nicht richtig gesetzt sind können die Benutzer nicht einloggen. In unserem Beispiel muss das Verzeichnis /sftp im unterordner /srvvon dem Benutzer Root zugeordnet werden und der Gruppe sftponly. Die Rechte mit chmod auf 750 gesetzt werden. Bedeutet:

  • root kann Schreiben und Lesen
  • sftponly nur Lesen
  • Andere nichts

Dies kann folgendermassen gemacht werden:

$mkdir /srv/sftp
$chown root:sftponly /srv/sftp
$chmod 750 /srv/sftp
$ls -l /srv
drwxr-x--- 2 root sftponly 4096 2019-02-03 22:09 sftp

Wenn die Ausgabe vonls -l ähnlich ist sind die Zugriffsrechte korrekt.

Vorbereiten / Erstellen der Benutzer

Unter Yast2 > Sicherheit und Benutzer > Benutzer- und Gruppenverwaltung können Bestehende Benutzer in dem diese zusätzlich der Gruppe sftponly zugeordnet werden eingeschränkt werden. Brauchen diese keine weiteren rechte kann auch die Standardgruppe auf sftponly gesetzt werden. Zusätzlich sollte die Anmelde-Shell auf /bin/false umgestellt werden. Das Home-Verzeichnis Muss sich dann im Unterverzeichnis /srv/sftp/[BENUTZER-VERZEICHNIS] befinden.

Siehe auch

openSSH