open_Netcenter Forum open_Netcenter Forum
Registrieren | FAQ | Suche | Mitgliederliste | Heutige Beiträge | Einloggen



Autor Thema: VSFTP konfigurieren für Newbies
ivenae
Ist öfters hier
**
ID # 144



-979-261-40
  Erstellt am 04. Oktober 2007 01:25 (#1)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Dieses Tutorial erklärt, wie man vsftpd von Grund auf konfiguriert.

Kurz einen Überblick über VSFTPD:
VSFTPD ist klein, resourcenschonend, schnell und sicher (wenn man ihn optimal konfiguriert), daher empfiehlt er sich zum Einsatz.
Doch die Konfiguration ist recht kompliziert und es gibt einiges zu beachten, insbesondere, um ihn sicher zu machen.

VSFTPD nutzt als User die USER der Datei passwd, man kann auch virtuelle User erstellen, dies ist jedoch weitaus komplexer, daher wird hierauf in diesem Tutorial nicht eingegangen.

Was müssen wir also tun?

-VSFTPD installieren (im Epias bereits enthalten)
-VSFTPD über vsftpd.conf konfigurieren
-User erstellen
-VSFTPD beim hochfahren automatisch starten
-Zugriff via Internet

:installieren

Hierauf soll nicht eingegangen werden, zum einen ist der Dämon in der Epias Firmware bereits integriert, zum anderen sollte die manuelle Installation via ipkg einfach sein.

:konfigurieren
Erst einmal eine Beispiel Config. Diese kann irgendwo auf der Platte abgelegt werden. Wie sie später genutzt wird, folgt weiter unten.


anonymous_enable=NO
nopriv_user=root
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
#anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
#anon_mkdir_write_enable=YES
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES
#chown_username=whoever
#
# You may override where the log file goes if you like. The default is shown
# below.
#xferlog_file=/var/log/vsftpd.log
#
# If you want, you can have your log file in standard ftpd xferlog format
#xferlog_std_format=YES
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpsecure
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
#async_abor_enable=YES
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that on some FTP servers, ASCII support allows a denial of service
# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
# predicted this attack and has always been safe, reporting the size of the
# raw file.
# ASCII mangling is a horrible feature of the protocol.
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# You may fully customise the login banner string:
ftpd_banner=Welcome to the WD-NetCenter FTP service.
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd.banned_emails
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd.chroot_list
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES

listen=YES

secure_chroot_dir=/
chroot_local_user=YES

no_anon_password=YES

passwd_chroot_enable=YES
use_localtime=YES
check_shell=NO


Auf den Server bekommt ihr diese Datei, indem ihr sie in eines eurer Freigaben kopiert.

Viele Parameter sind selbsterklärend, doch auf einige Parameter soll hier eingegangen werden:

listen=yes

Ist listen auf no gesetzt, so lauscht vsftpd nicht selbst, sondern überlässt dies dem (x)inetd. Sollte dieser verwendet werden, so ist dieser Parameter auf no zu setzen.

anonymous_enable=no

Der Anonymous-User ist dafür da, auf den ftp auch ohne Passwort zuzugreifen. Bei Anonymous handelt es sich um den Standard-namen, falls beim ftp-Protokoll kein Passwort angegeben wird.
Zwar eigentlich ziemlich praktisch, hat allerdings einige Tücken: Man benötigt für ihn einen zusätzlichen User Namens ftp.
Meine Devise: Dann kann ich mir auch gleich einen System-User namens anonymous anlegen und diesen verwenden. Das machen wir später auch.

check_shell=no

Normalerweise prüft vsftpd die Datei /etc/shell ab, welche Shells im System gültige Shells sind. Nur User mit gültiger Shell dürfen sich anmelden.
Das ist fatal! Die Datei shell liegt in einem nicht beschreibbaren Verzeichnis, wir können sie nicht ändern. Folglich ist die einzig-gültige Shell die /bin/sh. Das heißt de fakto: Jeder für vsftpd gültige User kann sich automatisch auch via Telnet einloggen. Das möchten wir auf keinen Fall. Also muss diese Variable unbedingt auf no gesetzt werden, damit wir Usern, die zwar ftp nutzen sollen, aber kein telnet (z.B. der Anonymous-User ohne Passwort) eine Shell ohne Loginmöglichkeit ( /bin/false ) zuweisen können.

local_enable

Ermöglicht erst, dass System-User sich anmelden können.

:User erstellen

User erstellt man durch editieren der passwd in /etc/passwd Passwörter können wahlweise ebenfalls in die /etc/passwd geschrieben werden, alternativ in die /etc/shadow

Hier gibt es jedoch wieder einige Tücken:
Am einfachsten ist es, eine Kopie der /etc/passwd in /opt/etc/passwd anzulegen und diese bei Systemstart zu kopieren.

Wir können jedoch ins Verzeichnis /etc/ nicht schreiben, glücklicherweise hat Epias mitgedacht und hier lediglich einen Verweis auf /tmp/passwd erstellt.

Wir kopieren also bei jedem Systmstart über die rc.start


cp /opt/etc/passwd /tmp/passwd
cp /opt/etc/shadow /tmp/shadow


Anschließend noch die Berechtigungen setzen (sicher ist sicher).


chmod 755 /tmp/passwd
chmod 755 /opt/etc/shadow /tmp/shadow


Einen Strich durch die Rechnung macht uns jedoch das Webinterface des WD-Netcenters.
Nach jedem Öffnen des Netcenters wird die temporäre Version /etc/passwd respektive /tmp/passwd überschrieben.

Entweder dürfen wir also das Webinterface nicht mehr öffnen (oder müssen die Platte anschließend neustarten), oder wir schalten das Webinterface gänzlich ab und konfigurieren auch Samba über Telnet. Hierzu werde ich ebenfalls noch ein Tutorial erstellen.

Erst einmal kopieren wir uns die aktuelle Version der /etc/passwd und der /etc/shadow auf unsere Festplatte und erstellen die obigen Einträge der in der rc.start, die diese bei jedem Hochfahren zurückkopieren.

Anschließend kopieren wir die aktuellen Versionen einmalig auf unser Laufwerk

# cp /tmp/passwd /opt/etc/passwd
# cp /tmp/shadow /opt/etc/shadow

Nun lassen wir uns die aktuellen User der passwd anzeigen mit

# cat /tmp/passwd

Meine Datei sieht nun so aus

root:x:0:0:root:/:/opt/bin/bash
anonymous:x:35000:42000:guest:/shares/Main/creon/ftproot:/bin/false
ftpuser:x:35000:42000:guest:/shares/Main/share/Musik:/bin/false
guest::0:0:guest:/:/bin/false


Nun, ihr könnt beispielsweise meinen Anonymous übernehmen. Kopiert die Zeile in einen Texteditor

anonymous:x:35000:42000:guest:/shares/Main/share/ftproot:/bin/false

Dies soll euer Anonymous werden. Wichtig hier: Vor dem ersten Doppelpunkt ist der Name. Diesen wollen wir beibehalten. Das x im Anschluss steht dafür, dass das Kennwort in der /etc/shadow Datei steht. In diesem Fall könnt ihr hier auch gar nichts hinschreiben, dann habt ihr kein Kennwort. Damit wir die shadow nicht auch noch bearbeiten müssen, ziehe ich das nun einmal vor.
Im Anschluss folgen Gruppennummern und sonstige IDs, die können so stehen bleiben, der Vorletzte Eintrag gibt das Home-Verzeichnis an, nur dieses mitsamt sämtlicher Unterverzeichnisse ist via ftp einsehbar. Der letzte Eintrag gibt die Shell an. In diesem Fall möchte ich nicht, dass der User auch via Telnet zugreifen kann, also trage ich die /bin/false als Shell ein.

Das FTP Verzeichnis modifiziert ihr und schreibt dann folgendes in die Kommandozeile:

# echo anonymous::35000:42000:guest:/shares/Main/share/ftproot:/bin/false > /etc/passwd

Der Nutzer ist nun lediglich temporär im System vorhanden, geht etwas schief, könnt ihr einfach neustarten.

Ihr erstellt nun so viele Nutzer wie ihr wollt.
Wir erstellen noch gemeinsam einen Nutzer ftpuser mit Zugriff auf /shares/Main/share, unsere Hauptfreigabe. Als Root, damit wir sämtliche Schreibrechte haben:
Groß- und Kleinschreibung ist bei der Pfadangabe wichtig!

# echo ftpuser:x:0:0:root:/shares/Main/share:/bin/false > /etc/passwd

Im Anschluss könnt ihr den Nutzern mit dem Befehl

# /bin/passwd ftpuser
ein Passwort zuweisen.

Nun müsst ihr noch einmalig den vsftpd starten. Das geht mit

# vsftpd /shares/Main/share/vsftpd.conf &

Den Pfad zur Konfig-Datei passt ihr nach eurem Pfad an, wo auch immer ihr diese gespeichert habt. Das & heißt, dass der Dienst im Hintergrund gestartet wird, damit ihr auf der Shell weiterarbeiten könnt.

Nun probiert die Verbindung aus. Klappt alles, dann könnt ihr die passwd und shadow Dateien auch auf eurer Festplatte sichern. Wie vorher mit

# cp /tmp/passwd /opt/etc/passwd
# cp /tmp/shadow /opt/etc/shadow

Ab nun könnt ihr diese Dateien von der Festplatte mit ftp und Nutzer root auf euren Rechner kopieren, dort bearbeiten und anschließend wieder zurückkopieren.

Weiterhin müsst ihr jetzt vsftpd auch über die rc.start starten. Hier tragt ihr den obigen Eintrag zum Starten, den ihr vorhin in die Shell eingegeben habt in die rc.start.

:Zugriff aus dem Internet
Der Zugriff klappt nun hoffentlich schon vom lokalen Rechner. Zwei Dinge sind zu beachten, um den Zugriff auch aus dem Internet zu ermöglichen:
Eure Festplatte muss ins Internet kommen, hier hat das Netcenter wohl ein Problem nach dem Neustart. Hier muss der Eintrag


route add -net 0.0.0.0 gw 10.10.10.10 netmask 0.0.0.0

als erster Eintrag in die rc.start, falls noch nicht geschehen, wobei 10.10.10.10 die IP eures Internetrouters ist.

Weiterhin ist es im Übrigen sinnvoll, auch das Netcenter auch Namensauflösungen zu ermöglichen. Nicht unbedingt notwendig für FTP, hier jedoch kurz zwischengeschoben:


echo nameserver 10.10.10.10 > /tmp/resolv.conf

Wobei 10.10.10.10 die Adresse eures Routers oder ein funktionierender Nameserver eures Providers ist.
Diesen Abschnitt ebenfalls in die rc.start.

Damit ihr aus dem Internet zugreifen könnt, benötigt ihr einen Dyndns Account oder einen Noip Account. Irgendetwas, was eure dynamische Adresse zu einem Statischen Namen macht. Ich gehe mal davon aus, ihr besitzt so etwas schon. Falls ihr schon einen dyndns Account besitzt, aber ihr auch zu den Unglücklichen gehört, deren Router diesen nicht aktualisieren können, findet ihr ebenfalls hier unter den How To's einen Eintrag, der beschreibt, wie ihr die Festplatte dazu bringen könnt, diesen stets zu aktualisieren.

Jetzt müsst ihr auf eurem Internetrouter noch die Ports 20 und 21 zu eurer Festplatte weiterleiten.
Nun sollte der Zugriff auch vom Internet aus funktionieren.

Beiträge: 40 | Mitglied seit: Oktober 2007 | IP-Adresse: gespeichert



| open_Netcenter Web - Infos, Handhabung, Anleitungen | Boardregeln


Tritanium Bulletin Board 1.6
© 2010–2014 Tritanium Scripts