FTP Server mit Vsftp

Einrichten eines FTP Server mit Hilfe von Vsftp (Very Secure FTP)

Vsftp ist ein relativ kompakter FTP Server, der eine Vielzahl von Konfigurationsmöglichkeiten bietet. Ich versuche in diesem How-To zu erklären, wie man VSFTP installiert und in Betrieb nimmt.

Sobald der Ftpserver läuft, kommen wir zu etwas Feintuning.

Installation

Die Installation wird unter Debian Etch vorgenommen. Da ich davon ausgehe, dass der Server keine GUI installiert hat (was bei einem Server grundsätzlich aus Sicherheitsgründen so sein sollte) muss vsftp mittels apt-get installiert werden.

Voraussetzung ist natürlich, dass man Rootberechtigungen hat.

In eine Konsole tippt man:

  • apt-get install vsftpd
  • gefolgt von einem Return

Ist man erfolgreich, dann sollte sich nach der Betätigung von Return folgendes am Bildschirm “abspielen”:

Wie man aus der Texausgabe erkennen kann, wird ein User ftp angelegt.

Prüfen ob der VSFTP-Dämon (Dienst) läuft

Um nun zu testen, ob der Dienst für den VSFTP läuft, tippt man in der Konsole:

  • ps -A | grep vsftpd
  • gefolgt – wie immer – von einem Return

Hier sollte die PID (Prozess ID) und zumindest vsftpd ausgegeben werden. Das bedeutet, der vsftpd ist gestartet.

Wenn man jetzt noch nachschauen will, ob der Ftpserver auch auf dem Port 21 “lauscht” kann man das mittels:

  • netstat -A |grep ftp
  • und Return

Auch hier sollte man eine entsprechende Ausgabe erhalten, dass FTP auf Port 21 “lauscht” (Listen)

Beide Befehle nochmals per Screenshot (So sollte es jetzt eigentlich aussehen):

Der Einfachheit halber, wäre es natürlich auch noch möglich, einfach mittels telnet eine Verbindung zum FTP Server herzustellen:

  • telnet localhost 21
  • und Return

Nun ist man mit dem VSFTP verbunden:

Da wir ja im Moment nichts zu tun haben, beenden wir die Verbindung durch die Eingabe von quit und Return.

Konfiguration mittels vsftpd.conf

Um den VSFTP zu konfigurieren, greift man auf die Datei vsftpd.conf zurück, die sich im Verzeichnis /etc befindet.

Mit dem Texteditor seiner Wahl, kann man diese Datei editieren. Ich greife auf vim zurück. Vim ist anfangs etwas gewöhnungsbedürftig, aber gut :)

Beispielkonfiguration

Die wichtigsten Eckpunkte der unten stehenden Konfiguration sind:

  1. Kein anonymer User kann sich einloggen
  2. Die User werden in Ihrem Verzeichnis eingesperrt
  3. Nur User erhalten Zugriff, die in einer definierten Liste (vsftpd.user_list) aufgeführt sind
  4. Die Dateiberechtigungen beim Upload werden so gesetzt, dass nur der uploadende User Vollzugriff auf die Dateien hat.
  • write_enable=YES
  • dirmessage_enable=YES
  • nopriv_user=ftpsecure
  • ftpd_banner=”Welcome (logging activated)”
  • local_enable=YES
  • file_open_mode=0755
  • local_umask=000
  • #userlist_file=/etc/usrliste
  • userlist_deny=NO
  • userlist_enable=YES
  • chroot_local_user=YES Wichtig! FTP-User werden mit Hilfe dieses Parameter in Ihrem Homeverzeichnis “eingesperrt”. Sie können also NICHT aus Ihrer Verzeichnisebene “heraus”.
  • local_max_rate=50000
  • anonymous_enable=NO
  • anon_world_readable_only=NO
  • anon_upload_enable=NO
  • log_ftp_protocol=YES
  • xferlog_enable=YES
  • vsftpd_log_file=/var/log/vsftpd.log
  • xferlog_std_format=YES
  • xferlog_file=/var/log/xferlog
  • connect_from_port_20=YES
  • pam_service_name=vsftpd
  • listen=YES

Die Datei vsftpd.user_list

Die Datei befindet sich muss normalerweise im Verzeichnis /etc angelegt werden. Wenn der Name vsftpd.user_list eingehalten wird, dann muss in der vsftpd.conf NICHT explizit der Pfad zu dieser Datei angegeben werden.

Der Aufbau der Datei ist simpel. Die Usernamen werden einfach untereinander in die Datei hineingeschrieben.

User1
User2

Wie kommt man zu den Usern?

Die User sind wie normale Anwender anzulegen. Es gibt aber ein paar Dinge, die es zu beachten gilt:

  1. FTP User erhalten keine Login-Shell (Ein FTP User muss sich nicht lokal am System anmelden können!)
  2. FTP User sollten als Homeverzeichnis das Verzeichnis zugewiesen bekommen, in das sie Ihre FTP Daten ablegen dürfen.
  3. Das Passwort sollte (wie überall) nicht zu einfach sein, wobei allerdings zu beachten ist, dass die Standardkonfiguration des VSFTP (wie oben gezeigt) KEINE Verschlüsselung vornimmt. D.h. also Klartext-Kennwörter! Mit VSFTP ist es aber durchaus möglich, auch verschlüsselte FTP Sitzungen zu realisieren. (Dazu mehr in einem späteren Beitrag)

Anlegen eines User “test” ohne Login-Shell mit einem fiktiven Homeverzeichnis “/www/test” + erstellen einer Gruppe ftp und Zuordnung des User “test” zu dieser Gruppe

In der Konsole tippt man:

  • useradd test -d /www/test -s /bin/false (User wird ohne Loginshell und Homeverzeichnis /www erstellt)
  • Setzen des Passwort für User test mittels passwd test und eintippen des frei wählbaren Kennwortes.
  • Erstellen der Gruppe ftp mittels: groupadd ftp
  • Zuordnung des User Test zur Gruppe ftp per usermod -g ftp test
  • Um nun noch entsprechend auf das Verzeichnis /www/test/ Zugriff zu erhalten, muss mittels Befehl chown der Besitzer des Verzeichnis “www/test” zugeordnet werden: chown test /www/test und die Gruppe desselben Verzeichnis auf ftp gesetzt werden: chgrp ftp /www/test

WICHTIG: Den User test muss man ausserdem noch in die Datei /etc/vsftpd.user_list eintragen!

Anpassung von /etc/shells

Wenn für die Shell der FTP User /bin/false beim Anlegen der User verwendet worden ist, MUSS man in die Datei /etc/shells an unterster Stelle noch /bin/false hinzufügen und die Datei speichern, ansonsten klappt der FTP Login nicht.

Der finale Test – Jetzt oder nie :)

Wenn alles fertig konfiguriert ist, sollte man den FTP Dienst erneut starten. Dies erreicht man durch die Eingabe von:

  • /etc/init.d/vsftpd restart
  • und Return

Natürlich kann man auch gleich den PC neu starten, jedoch ist das nicht notwendig. Ist alles glatt gelaufen, sollte der Login ausschließlich mit dem Usernamen test und dem vergebenen Passwort klappen, alles andre sollte mit einer Meldung:

530 Permission Denied
Login failed

quittiert werden.

Sollte jemand Probleme, Tips oder Verbesserungsvorschläge haben, bitte einfach per Kommentar oder Email melden.

5 Kommentare

  • By h4wk, 14. September 2008 @ 20:42

    TOP TUTORIAL!!!

    das einzige in dem es auch für anfänger verständlich erklärt ist!

    meine vollen respekt!

    gruß
    h4wk

  • By Andy, 20. Mai 2010 @ 15:48

    Auch nach 2 Jahren immer noch TOP!!!! Hat alles super funktioniert.

    Vielen Dank!

  • By admin, 24. Mai 2010 @ 17:48

    Danke!

  • By tonner, 22. Juni 2010 @ 19:47

    Zitat:
    Mit VSFTP ist es aber durchaus möglich, auch verschlüsselte FTP Sitzungen zu realisieren. (Dazu mehr in einem späteren Beitrag)

    Gibt es diesen Artikel schon. ?

  • By admin, 1. Juli 2010 @ 07:11

    Hallo!
    Ja, gibt es:
    http://www.pc-howto.com/?s=vsftp
    LG

Other Links to this Post

RSS Feed für Kommentare zu diesem Artikel. TrackBack URI

Hinterlasse einen Kommentar

WordPress Themes