Sftp mit chroot-jail: Unterschied zwischen den Versionen
Lotz (Diskussion | Beiträge) (halbfertiges Release) |
Lotz (Diskussion | Beiträge) (initial release, ohne Yast-Screenshots) |
||
Zeile 1: | Zeile 1: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Grobes Ziel: Anlegen eines Verzeichnisses, auf das per SFTP über einen separaten Nutzer zugegriffen werden kann, der keine weiteren Privilegien im System hat. | Grobes Ziel: Anlegen eines Verzeichnisses, auf das per SFTP über einen separaten Nutzer zugegriffen werden kann, der keine weiteren Privilegien im System hat. | ||
Zeile 12: | Zeile 4: | ||
Benutzergruppe: ''sftponly''<br> | Benutzergruppe: ''sftponly''<br> | ||
Zielverzeichnis: ''/home/ftpuser'' | Zielverzeichnis: ''/home/ftpuser'' | ||
+ | |||
+ | System: openSUSE 11.2, 11.3 (vorherige Versionen sollten ebenfalls funktionieren) | ||
__TOC__ | __TOC__ | ||
Zeile 26: | Zeile 20: | ||
Als Root: | Als Root: | ||
Zielverzeichnis anlegen: | Zielverzeichnis anlegen: | ||
− | mkdir /home/ | + | mkdir /home/ftpuser |
Separate Gruppe ''sftponly'' anlegen: | Separate Gruppe ''sftponly'' anlegen: | ||
Zeile 36: | Zeile 30: | ||
Und nun noch das Passwort festlegen: | Und nun noch das Passwort festlegen: | ||
passwd ftpuser | 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 == | == SSHD konfigurieren == | ||
− | Nun folgende Änderungen in der ''/etc/ssh/sshd_config'' vornehmen ( | + | 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 | Subsystem sftp internal-sftp | ||
+ | |||
+ | AllowGroups sftponly | ||
Match group sftponly | Match group sftponly | ||
ChrootDirectory /home/%u | ChrootDirectory /home/%u | ||
Zeile 46: | Zeile 52: | ||
AllowTcpForwarding no | AllowTcpForwarding no | ||
ForceCommand internal-sftp | 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<br> | ||
+ | Siehe dazu [[Wie_sichere_ich_meinen_ssh_Server]] | ||
+ | |||
+ | |||
+ | Viel Spaß<br> | ||
+ | --[[Benutzer:Lotz|Lotz]] 17:31, 4. Mai 2010 (UTC) | ||
+ | ---- | ||
+ | :: '''Quellen:''' | ||
+ | ::: [http://www.debian-administration.org/articles/590 OpenSSH SFTP chroot() with ChrootDirectory] | ||
+ | |||
+ | [[Category:FTP]] [[Category:File Server]] [[Category:Security]] |
Version vom 4. Mai 2010, 17:31 Uhr
Grobes Ziel: Anlegen eines Verzeichnisses, auf das per SFTP über einen separaten Nutzer zugegriffen werden kann, der keine weiteren Privilegien im System hat.
Benutzername: ftpuser
Benutzergruppe: sftponly
Zielverzeichnis: /home/ftpuser
System: openSUSE 11.2, 11.3 (vorherige Versionen sollten ebenfalls funktionieren)
Inhaltsverzeichnis
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)