Skip to main content

Debian 8 Jessie – SFTP Server einrichten

Mit Debian sowie vielen anderen Linux Distributionen lässt sich sehr leicht ein SFTP Server bzw. SFTP Zugang einrichten.

1.OpenSSH Server installieren

Die Voraussetzung für den späteren Zugriff ist OpenSSH. Dies ist oft schon bei der Installation dabei. Sollte es nicht installiert sein, dann kann es mittels des folgenden Befehls installiert werden.

apt-get update
apt-get install openssh-server

2. SFTP Zugänge verwalten

Hier gibt es mehrer Möglichkeiten den Zugang auf den SFTP Server zu verwalten. Ihr könnt einzelne Benutzer / Gruppen anlegen, die Zugang haben sollen.

2a. Gruppe für SFTP User anlegen

In diesem Fall legen wir eine neue Gruppe an. Alle Benutzer in dieser Gruppe erhalten später Zugang zum SFTP Server.

addgroup sftp_users

Der Name „sftp_users“ kann frei gewählt werden. Später werden wir alle Benutzer in diese Gruppe machen, damit sie Zugang haben.

Bestehende Benutzer werden dann einfach mit folgendem Befehl zur SFTP Gruppe hinzugefügt:

usermod -G sftp_users testbenutzer

In diesem Fall wird der Benutzer „testbenutzer“ zu der Gruppe „sftp_users“ hinzugefügt.

2b. einzelne SFTP User anlegen, der nur SFTP darf

In diesem Fall legt ihr einfach einen neuen Benutzer an und ändern später noch die Rechte ab, damit dieser in seinem Home-Verzeichnis gefangen ist und keinen Shell Zugriff mehr hat.

Hier wird nun ein Benutzer „test“ angelegt. Bei Linux wird immer auch eine Gruppe erstellt, die den selben Namen wie der Benutzer trägt. Wenn ihr den Namen „test“ ändert, dann müsst ihr auch immer die Gruppe entsprechend anpassen. In diesem Beispiel wird von dem Benutzer „test“ mit seiner zugehörigen Gruppe „test“ ausgegangen.

Der Befehl zum Anlegen eines neuen Benutzers lautet:

adduser test

Hier wird der Benutzer „test“ angelegt. Nun wollen wir den Benutzer noch so abändern, dass er sich NUR per SFTP anmelden darf und sein eigenes Verzeichnis sieht. Es soll also verhindert werden, dass man sich per Shell anmelden kann und gleichzeitig auch, dass der User den kompletten Server sehen kann.

Dazu entziehen wir dem neu angelegten Benutzer „test“ die Shell.

usermod -s /bin/false test

3. Ordnerberechtigungen anpassen

Damit der Benutzer nicht mehr sein Home-Verzeichnis verlassen kann (chroot), müssen wir die Ordnerberechtigungen anpassen.

Das Homeverzeichnis MUSS !!! root gehören. 

Dazu geben wir folgenden Befehl ein:

chown root:root /home/test
chmod 755 /home/test

Nun ist der Benutzer „test“ in seinem Home-Verzeichnis eingesperrt. In diesem Verzeichnis kann er aber nun keine Dateien mehr anlegen. Deshalb erstellen wir ein neues Verzeichnis, in dem er Dateien anlegen / hochladen kann. Dies nennen wir „upload“.

mkdir /home/test/upload
chown test:test /home/test/upload

4. SSHD_Config anpassen

Nun müssen wir noch die Konfigurationsdatei bearbeiten. Hier wird festgelegt, welcher Benutzer /Gruppe Zugang hat.

nano /etc/ssh/sshd_config

In dieser Datei solltet ihr folgende Zeile finden:

Subsystem sftp /usr/lib/openssh/sftp-server

Vor diese Zeile schreibt ihr ein „#“ und fügt danach folgendes ein:

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

5.1 Gruppe freigeben für SFTP

Am Ende der Datei fügt ihr nun folgenden Code ein um die Gruppe „sftp_users“ freizugeben:

Match Group sftp_users
  X11Forwarding no
  AllowTcpForwarding no
  ChrootDirectory /home/%u
  ForceCommand internal-sftp

5.2 Benutzer freigeben für SFTP

Am Ende der Datei fügt ihr nun folgenden Code ein um den Benutzer „test“ freizugeben:

Match User test
  X11Forwarding no
  AllowTcpForwarding no
  ChrootDirectory /home/%u
  ForceCommand internal-sftp

6. Neustarten des OpenSSH Dienst

Nun muss der OpenSSH Dienst neu gestartet werden, damit die Änderungen übernommen werden.

/etc/init.d/ssh restart

7. Zugriff per SFTP

Nun kann man mittels SFTP Programm (zum Beispiel WinSCP) auf den Server zugreifen. Der Benutzer sieht nun nur sein Homeverzeichnis und kann dies auch nicht verlassen.

6. „absichern“ des SFTP Servers

Nun könnt ihr die Sicherheit des SFTP Servers noch erhöhen, indem ihr die Anzahl falscher Logins begrenzt. Dies kann sehr leicht mit fail2ban erledigt werden. Dazu habe ich hier eine Anleitung geschrieben.

Zudem könnt ihr noch den SSH / SFTP Port ändern. Damit erreicht ihr, dass die ganzen Skripte, die auf den Port 22 prüfen nicht funktionieren. Eine Anleitung dazu findet ihr hier.

Teile diesen Beitrag

Christian

Ich studiere derzeit Informatik und betreibe in meiner Freizeit diesen Blog.
Auf die Idee kam ich, als ich Anleitungen zum Thema Debian gesucht habe. Leider waren viele Anleitungen veraltet und daher nutzlos.

Da kam ich auf die Idee selbst Anleitungen zu schreiben.
Wenn meine Anleitungen auch veraltet sein sollten, dann schreibt mir das bitte und ich versuche sie zu aktualisieren.
Christian

Christian

Ich studiere derzeit Informatik und betreibe in meiner Freizeit diesen Blog. Auf die Idee kam ich, als ich Anleitungen zum Thema Debian gesucht habe. Leider waren viele Anleitungen veraltet und daher nutzlos. Da kam ich auf die Idee selbst Anleitungen zu schreiben. Wenn meine Anleitungen auch veraltet sein sollten, dann schreibt mir das bitte und ich versuche sie zu aktualisieren.

4 thoughts to “Debian 8 Jessie – SFTP Server einrichten”

  1. Ahhh .. habe den Fehler gefunden:

    chown test:test /home/test/upload

    Es muss natürlich die sFTP Gruppe eingetragen werden:

    chown test:sftp_users /home/test/upload

     

    1. Danke für deinen Kommentar.
      Ich habe meinen Beitrag etwas angepasst. Die Struktur war nicht ganz richtig, so dass man einen Teil der Anleitung „überlesen“ konnte.

      Der Benutzer „root“ muss IMMER die Eigentümer des Homeverzeichnisses sein, da der Benutzer sonst aus diesem „ausbrechen“ kann.
      Bei mir hat es aber mit
      chown test:test /home/test/upload
      prima funktioniert.

  2. Vielen Dank für die super Beschreibung. Funktioniert auch bei Debian 9 Stretch.

    Wenn man andere Verzeichnisse noch in den Zugriff übernehmen will, dann kann man die in den „upload“-Ordner mounten:

    cd /home/test/upload
    mkdir folder
    vim /etc/fstab

    In die fstab fügt man dann am Ende eine solche Zeile ein:

    /var/www/folder /home/test/upload/folder none defaults,bind 0 0

    Anschließend mit

    mount -a

    den Ordner tatsächlich mounten.

Schreibe einen Kommentar zu Detlev Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.