Sftp mit chroot-jail

Aus Linupedia.org
Version vom 23. November 2013, 16:12 Uhr von Gehrke (Diskussion | Beiträge) (SSHD weiter absichern: interne Verlinkung)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Grobes Ziel: Anlegen eines Verzeichnisses, auf das per SFTP über einen separaten Nutzer zugegriffen werden kann, der keine weiteren Privilegien im System hat.
Hilfreich, wenn die Verwendung von Vsftpd oder ProFTPD am Weiterleiten der passiven Ports am Router scheitert und man trotzdem eine verschlüsselte Verbindung nutzen möchte.

Benutzername: ftpuser
Benutzergruppe: sftponly
Zielverzeichnis: /home/ftpuser

System: openSUSE 11.2, 11.3 (vorherige Versionen sollten ebenfalls funktionieren)

Gewünschten User anlegen

Um das Ganze übersichtlich zu halten und für die Hauptnutzer einen normalen Zugang per SSH zu ermöglichen legen wir einen separaten Benutzer für den eingeschränkten Zugang per SFTP an. In diesem Fall der Benutzer ftpuser. Weiterhin wird eine getrennte Benutzergruppe (sftponly) angelegt, um später weitere Optionen für den getrennten User setzen zu können.
Das Verzeichnis, welches per SFTP verfügbar sein wird (hier: /home/ftpuser) muss in Eigentümerschaft von Root liegen. Daher hat der Benutzer dort erstmal nur Leserechte. Innerhalb des Verzeichnisses können allerdings weitere Ordner angelegt werden, auf die der Benutzer dann auch Schreibzugriff hat.

über Yast

[screenshots to come]

über Konsole

Als Root: Zielverzeichnis anlegen:

mkdir /home/ftpuser

Separate Gruppe sftponly anlegen:

groupadd sftponly

Den neuen Benutzer ftpuser anlegen. Dabei wird als Loginshell /bin/false benutzt, damit sich der Benutzer lokal nicht auf einer Shell anmelden kann. Das Benutzerverzeichnis ist in dem Fall /, da sshd nach dem chroot-Aufruf in das Benutzerverzeichnis wechselt und das ralative Wurzelverzeichnis dem angelegten Zielverzeichnis entsprechen wird.

useradd -g sftponly -d / -s /bin/false ftpuser

Und nun noch das Passwort festlegen:

passwd ftpuser


Somit haben wir den neuen User sftpuser angelegt, der zukünftig Zugang über SFTP auf das Verzeichnis /home/ftpuser hat und auch in diesem Verzeichnis eingesperrt ist. Möchte man später weitere Benutzer hinzufügen, reicht es, diese anzulegen, in der Gruppe sftponly hinzuzufügen (Anlegen des Benutzerverzeichnisses als Root nicht vergessen!)


SSHD konfigurieren

Nun folgende Änderungen in der /etc/ssh/sshd_config vornehmen (bezieht sich auf eine zuvor unveränderte Konfiguration. Vorhandene Variablen ändern, nicht vorhandene hinzufügen):

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no

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

AllowGroups sftponly 
Match group sftponly
        ChrootDirectory /home/%u
        X11Forwarding no
        AllowTcpForwarding no
        ForceCommand internal-sftp
        PasswordAuthentication yes

Somit sind passwortgeschützte Zugriffe über SFTP mit dem User ftpuser möglich, dieser hat jedoch keinen Zugang über SSH und Zugriffe über SSH wären generell nur über andere User mit Keyfiles möglich (sofern gewünscht).


SSHD weiter absichern

z.B. mittels fail2ban oder iptables
Siehe dazu Wie_sichere_ich_meinen_ssh_Server


Viel Spaß
--Lotz 17:31, 4. Mai 2010 (UTC)


Quellen:
OpenSSH SFTP chroot() with ChrootDirectory