Sftp mit chroot-jail: Unterschied zwischen den Versionen

Aus Linupedia.org
Wechseln zu: Navigation, Suche
(halbfertiges Release)
 
(initial release, ohne Yast-Screenshots)
Zeile 1: Zeile 1:
{{Box Achtung||
 
Diese Seite befindet sich gerade im Aufbau!! Solange dieser Warntext sichtbar ist, gilt diese Seite als '''nicht''' verwendbar!}}
 
 
Ich habe mich dabei grob an [http://www.debian-administration.org/articles/590 http://www.debian-administration.org/articles/590] gehalten, allerdings ein paar Änderungen vorgenommen.
 
 
 
 
----
 
 
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/ftpsite
+
  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 (vorhandene Variablen ändern, nicht vorhandene hinzufügen):
+
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)

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