VsFTP installieren

Aus Synology Wiki
Wechseln zu: Navigation, Suche

Ziel

Einen alternativen und flexiblen FTP Dienst auf der Synology Disk Station installieren. Wahlweise mit nur Anonymen Zugang oder Anonymen und Authentifizierten Zugang. Für Benutzer können sogenannte Homeverzeichnisse eingerichtet werden. In diesen Verzeichnissen können sich die Benutzer eingeschränkt oder uneingeschränkt bewegen bzw. mit schreib –und leserechten ausgestattet werden.

Zielgruppe

Anwender die sich mehr Flexibilität bei der Rechte– und Verzeichnisadministration wünschen.

Voraussetzungen/Vorbereitungen

  • Die Disk-Station wurde mit einer Firmware durch den Synology Installation Assistenten oder im Station Manager mit der Firmwareaktualisierung bespielt. Näheres zur Installation der Firmware finden Sie hier
    • Tipp: Besorgen Sie sich eine aktuelle Firmware von der Hersteller Seite. [Synology Support] Da die .pat Datei auf der Installations-CD nicht mehr aktuell sein könnte.
  • Ihre Disk-Station ist mit mindestens einer Festplatte ausgestattet.
  • Die Netzwerkkonfiguration wurde ordnungsgemäß vorgenommen.
    InstManagerS5.gif
  • Wenn Ihr FTP Dienst auch aus dem Internet erreichbar sein soll, sollten Sie sich bei den zahlreichen Anbietern eine Dynamische DNS einrichten. Adressen und Informationen gibt es in der Linksammlung hier. Wenn Sie ein DSL-Router Ihr eigen nennen dürfen, sollte auf diesem Router auch die Portweiterleitung mindestens für den Port 21 auf die Ip-Adresse der Disk-Station eingerichtet sein. Nähere Informationen gibt es hier
  • Sie haben das Paketverwaltungssystem Ipkg installiert. Was ist Ipkg und wie installiere ich das? Näheres gibt es hier
  • Sie haben den Terminaldienst SSH oder Telnet auf Ihrer Disk-Station aktiviert. Was ist SSH oder Telnet? Wie aktiviere ich diesen Dienst? Nun SSH (Secure Shell) stellt eine sichere verschlüsselte Verbindung zu Ihrer Disk-Station her, und ermöglicht somit Befehlseingaben auf Kommandozeilenebene abzusetzen. Dies gilt analog für Telnet, nur das Telnet nicht verschlüsselt verbindet. Wenn Sie einen Router mit Firewall besitzen, dürfte das in Ihrem lokalen Netz kein Sicherheitsproblem darstellen. Aktivieren lassen sich diese Dienste über den Station-Manager im Webbrowser unter Terminal. Oder Sie laden sich unter Synology Patch link

Funktion Item/File
Telnet aktivieren EnableTelnet.pat
Telnet deaktivieren DisableTelnet.pat
SSH aktivieren EnableSSH.pat
SSH deaktivieren DisableSSH.pat



die entsprechenden Dateien runter und fügen diese über den Station-Manager unter Firmwareaktualisierung auf der Disk-Station ein.
SM Firmware.gif


Installation

Ohne SSL Unterstützung

Für dieses Beispiel kommt Telnet zum Einsatz. Die Konfiguration der Disk-Station wird mit einem Windows basierten Rechner durchgeführt. Sie melden sich zunächst mit dem Kommandozeileninterpreter Telnet an der Disk-Station an. Diesen rufen Sie über Start>Ausführen auf.

  • Syntax:
    • telnet <hostname/Ip-Adresse>
telnet 192.168.178.1
  • Sie wurden bei der Installation der Firmware aufgefordert ein Passwort anzugeben. Dieses verwenden wir nun zusammen mit dem Benutzernamen „root“ für die Anmeldung.
DiskStation login: root
Passwort: *********
  • Wenn die Anmeldung an der Disk-Station erfolgreich war, erscheint die sogenannte shell von Linux.
BusyBox v1.1.0 (2008.09.19-12:36+0000) Built-in shell (ash)
Enter ´help´ for a list of built-in commands.

DiskStation> _    

Tipp: Sie können die Befehle oder Befehlsketten, die Sie an der Konsole absetzen ganz bequem kopieren und einfügen. Markieren Sie dazu hier den eigentlichen Befehltext ohne "DiskStation>". Also nur "pwd". Wenn Sie per Konsole (Telnet) angemeldet sind, das Konsolenfenster auswählen, rechten Mausklick und im Kontextmenü "Einfügen" auswählen. Der Befehlstext in der Zwischenablage kopiert sich auf die Konsole, und Sie können diesen mit "Enter" abschicken. Bei kurzen Befehlen macht dies keinen Sinn. Aber längeren Befehlsketten kann das schon eine Zeitersparnis bedeuten.

  • Zunächst stellen Sie fest, in welchem Verzeichnis Sie sich befinden.
DiskStation> pwd
/root
DiskStation> _
  • Sie befinden sich im Heimatverzeichnis von Root. Sie wechseln nun in das Rootverzeichnis der Synology Station.
DiskStation> cd /
DiskStation> _
  • Sie erstellen einen Ordner für das Installationspaket von vsFTP.
DiskStation> mkdir Ipk_Packages
DiskStation> _
  • Sie überprüfen nun ob der Ordner angelegt wurde.
DiskStation> ls
bin 	initrd 		lost+found 	 	sbin 		var
dev 	ipk_Packages 	mnt 			sys 		var.defaults
etc 	lib		proc 			tmp 		volume1
etc.defaults 		linuxrc		        root		usr
DiskStation> _
  • Sie wechseln in das Verzeichnis “ipk_Packages”
DiskStation> cd ipk_Packages
DiskStation> _
  • Nun benötigen Sie das begehrte vsFTP Paket und laden dies über das Programm „wget“ aus dem Internet. Zuvor lassen Sie sich noch die Information geben um welches Gerät es sich bei Ihrer Disk-Station handelt.
DiskStation> cat /proc/cpuinfo
processor	: 0
cpu		: 82xx
revision	: 1.4 (pvr 8081 1014)
bogomips	: 176.64
chipset	: 8245
vendor	: Synology Inc.
machine	: DS-101g+
DiskStation> _
  • In diesem Beispiel handelt es sich um eine DS-101g+. Sie besuchen nun mit einem Browser Ihrer Wahl die Seite http://ipkg.nslu2-linux.org/feeds und Sie navigieren entsprechend Ihrer Maschine in optware/…/cross/stable. Dort suchen Sie nach dem vsFTP Paket. Die aktuelle Version für dieses Beispiel ist die Datei „vsftpd_2.3.4-1_powerpc.ipk“
  • Wir laden nun die Datei vom Server
DiskStation> wget http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/stable/vsftpd_2.3.4-1_powerpc.ipk
....
DiskStation> _
  • Sie überprüfen ob sich das Paket in dem Verzeichnis befindet.
DiskStation> ls
vsftpd_2.3.4-1_powerpc.ipk
DiskStation> _
  • Sie können jetzt mit der Installation beginnen. Während der Installation werden Sie befragt, ob Sie die vsftpd.conf Datei in ihrem Ursprung belassen wollen. Sie bestätigen mit „n“ für Nein.
DiskStation>  ipkg install vsftpd_2.3.4-1_powerpc.ipk
Installing vsftpd (2.0.7-1) to /opt/...
Installing vsftpd (2.0.7-1) to /opt/...
Installing vsftpd (2.0.7-1) to /opt/...
Installing vsftpd (2.0.7-1) to /opt/...
Installing vsftpd (2.0.7-1) to /opt/...
Installing vsftpd (2.0.7-1) to /opt/...
Installing vsftpd (2.0.7-1) to /opt/...
Installing vsftpd (2.0.7-1) to /opt/...
    Configuration file '/opt/etc/vsftpd.conf'
    ==> File on system created by you or by a script.
    ==> File also in package provided by package maintainer.
       What would you like to do about it ?  Your options are:
        Y or I  : install the package maintainer's version
        N or O  : keep your currently-installed version
          D     : show the differences between the versions (if diff is installed)
     The default action is to keep your current version.
    *** vsftpd.conf (Y/I/N/O/D) [default=N] ?Configuring vsftpd
You'll need to add line like
echo "ftp stream tcp nowait root /opt/sbin/vsftpd /opt/etc/vsftpd.conf" >>/etc/inetd.conf
to your /unslung/rc.xinetd file -- see the wiki at http://www.nslu2-linux.org for more info
Successfully terminated.
 DiskStation> _
  • Im Idealfall sollte die Installation von vsFTP ohne Fehler abgeschlossen sein.

Mit SSL Unterstützung:

Voraussetzungen/Vorbereitungen
  • Sie haben die Schritte im Abschnitt "ohne SSL Unterstützung" durchgeführt.
  • Sie sind mit Telnet oder Putty auf der DS angemeldet.
  • Sie haben das OpenSSL Packet installiert (Durchführung wird in diesen Abschnitt erläutert).
  • Sie verfügen über das für Ihre Architektur bestimmte vsftpd Binary mit kompilierter SSL-Unterstützung (Quelle: hier). Die Quelle beinhaltet z.Zt. nur die Binary für einen ppc Prozessor !!!
Installation von OpenSSL

Der Paketmanager soll sich zunächst eine aktuelle Liste der verfügbaren Pakete holen.

DiskStation> ipkg update
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/stable/Packages.gz
Inflating http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/stable/Packages.gz
Updated list of available packages in /opt/lib/ipkg/lists/optware
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/stable/Packages.gz
Inflating http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/stable/Packages.gz
Updated list of available packages in /opt/lib/ipkg/lists/cross
Successfully terminated.

Sie überprüfen bitte, ob OpenSSL bereits in einer Version installiert ist.

DiskStation> ipkg list_installed openssl
openssl - 0.9.7m-5 - Openssl provides the ssl implementation in libraries libcrypto and libssl, and is needed by many other applications and librari
Successfully terminated.

Sollte bereits eine Version installiert sein, so können Sie überprüfen lassen, ob aktualisierungen für das OpenSSL Paket sowie für alle anderen Pakete vorliegen.

DiskStation> ipkg upgrade
Nothing to be done
Successfully terminated.
DiskStation>

In diesem Beispiel gibt es keine aktualisierungen.

Wenn Sie aber kein OpenSSL installiert haben, dann weisen Sie den Paketmanager jetzt an das OpenSSL Packet zu laden und anschließend zu installieren.

DiskStation> ipkg install openssl
Installing openssl (0.9.7m-5) to /opt/...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/stable/openssl_0.9.7m-5_powerpc.ipk
wget: error while loading shared libraries: libssl.so.0.9.7: cannot open shared object file: No such file or directory
Nothing to be done
An error ocurred, return value: 22.
Collected errors:
ipkg_download: ERROR: Command failed with return value 127: `wget --passive-ftp    -q -P /opt/ipkg-MH3QKy http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/stable/openssl_0.9.7m-5_powerpc.ipk'
Failed to download openssl. Perhaps you need to run 'ipkg update'?

Ups. Das kommt davon, wenn man vorher für den Wiki das Paket deinstalliert um eine Installation zu demonstrieren. Ok, wer das gleiche Problem mit einer zerschossenen OpenSSL Installation hat, der darf sich so wie ich das Paket manuell auf die DS laden. Also ich besorg mir unter http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/stable für meine Architektur das OpenSSL Paket. Vorher sorge ich für einen Speicherpfad und wechsel in das Verzeichnis.

DiskStation> mkdir -p /ipk_Packages
DiskStation> cd /ipk_Packages
DiskStation> wget http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/stable/openssl_0.9.7m-5_powerpc.ipk
--2012-02-23 23:33:39--  http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/stable/openssl_0.9.7m-5_powerpc.ipk
Resolving ipkg.nslu2-linux.org... 140.211.169.161
Connecting to ipkg.nslu2-linux.org|140.211.169.161|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 768888 (751K) [text/plain]
Saving to: `openssl_0.9.7m-5_powerpc.ipk.1'

     0K .......... .......... .......... .......... ..........  6% 56.3K 12s
    50K .......... .......... .......... .......... .......... 13% 86.7K 10s
   100K .......... .......... .......... .......... .......... 19%  101K 8s
   150K .......... .......... .......... .......... .......... 26%  276K 6s
   200K .......... .......... .......... .......... .......... 33%  142K 5s
   250K .......... .......... .......... .......... .......... 39%  141K 4s
   300K .......... .......... .......... .......... .......... 46%  269K 3s
   350K .......... .......... .......... .......... .......... 53%  141K 3s
   400K .......... .......... .......... .......... .......... 59%  141K 3s
   450K .......... .......... .......... .......... .......... 66%  280K 2s
   500K .......... .......... .......... .......... .......... 73%  277K 1s
   550K .......... .......... .......... .......... .......... 79%  284K 1s
   600K .......... .......... .......... .......... .......... 86%  283K 1s
   650K .......... .......... .......... .......... .......... 93%  281K 0s
   700K .......... .......... .......... .......... .......... 99% 4.67M 0s
   750K                                                       100%  173K=4.6s

2012-02-23 23:33:44 (162 KB/s) - `openssl_0.9.7m-5_powerpc.ipk.1' saved [768888/768888]
DiskStation>

Jetzt die manuelle Installation durchführen. Dabei ist wichtig, dass Sie den Dateinamen wie unter Linux Sytemen üblich Case Sensitive schreiben und die Dateiendung .ipk nicht vergessen.

DiskStation> ipkg install openssl_0.9.7m-5_powerpc.ipk
Installing openssl (0.9.7m-5) to /opt/...
Installing openssl (0.9.7m-5) to /opt/...
Installing openssl (0.9.7m-5) to /opt/...
Installing openssl (0.9.7m-5) to /opt/...
Installing openssl (0.9.7m-5) to /opt/...
Installing openssl (0.9.7m-5) to /opt/...
Installing openssl (0.9.7m-5) to /opt/...
Installing openssl (0.9.7m-5) to /opt/...
Installing openssl (0.9.7m-5) to /opt/...
Configuring openssl
Successfully terminated.
DiskStation>

Vsftpd Upgrade mit SSL Unterstützung

Notwendige Schritte:

  • Speicherpfad anlegen und in Verzeichnis wechseln.
  • Vsftpd Archiv mit SSL Unterstützung laden.
  • Archiv entpacken und die alte Binary gegen die neue ersetzen.
DiskStation> mkdir -p /opt/vsftpd
DiskStation> cd /opt/vsftpd
DiskStation> wget http://sourceforge.net/projects/synonassource/files/vsftpd/vsftpd-2.3.5_SSL.tar.gz
--2012-02-24 00:04:59--  http://sourceforge.net/projects/synonassource/files/vsftpd/vsftpd-2.3.5_SSL.tar.gz
Resolving sourceforge.net... 216.34.181.60
Connecting to sourceforge.net|216.34.181.60|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://sourceforge.net/projects/synonassource/files/vsftpd/vsftpd-2.3.5_SSL.tar.gz/download [following]
--2012-02-24 00:05:00--  http://sourceforge.net/projects/synonassource/files/vsftpd/vsftpd-2.3.5_SSL.tar.gz/download
Connecting to sourceforge.net|216.34.181.60|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://downloads.sourceforge.net/project/synonassource/vsftpd/vsftpd-2.3.5_SSL.tar.gz?r=&ts=1330038300&use_mirror=heanet [following]
--2012-02-24 00:05:00--  http://downloads.sourceforge.net/project/synonassource/vsftpd/vsftpd-2.3.5_SSL.tar.gz?r=&ts=1330038300&use_mirror=heanet
Resolving downloads.sourceforge.net... 216.34.181.59
Connecting to downloads.sourceforge.net|216.34.181.59|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://heanet.dl.sourceforge.net/project/synonassource/vsftpd/vsftpd-2.3.5_SSL.tar.gz [following]
--2012-02-24 00:05:00--  http://heanet.dl.sourceforge.net/project/synonassource/vsftpd/vsftpd-2.3.5_SSL.tar.gz
Resolving heanet.dl.sourceforge.net... 193.1.193.66, 2001:770:18:aa40::c101:c142
Connecting to heanet.dl.sourceforge.net|193.1.193.66|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 55905 (55K) [application/x-gzip]
Saving to: `vsftpd-2.3.5_SSL.tar.gz.1'

     0K .......... .......... .......... .......... .......... 91%  228K 0s
    50K ....                                                  100%  919K=0.2s

2012-02-24 00:05:01 (249 KB/s) - `vsftpd-2.3.5_SSL.tar.gz.1' saved [55905/55905]
DiskStation>

Sollte das Archiv nicht auffindbar sein, könnte es sein, dass diese Version nicht mehr aktuell ist. Schauen Sie bitte dann unter http://sourceforge.net/projects/synonassource/files/vsftpd nach der aktuellen Version und passen den Pfad für den Befehl wget (.../vsftpd/[Archiv]) entsprechend an.

Nun entpacken wir das Archiv und ersetzen die alte vsftpd Binary gegen die neue aus dem Archiv. Vorher sollten Sie die alte Binary umbenennen.

DiskStation> mv /opt/sbin/vsftpd /opt/sbin/vsftpd.old
DiskStation> tar -xzf vsftpd-2.3.5_SSL.tar.gz
DiskStation> ls -l
-rwxrwxrwx    1 guest    users       18288 Feb  2  2008 COPYING
-rwxrwxrwx    1 guest    users         312 Feb  2  2008 LICENSE
drwxrwxrwx    2 guest    users        4096 Feb 24 00:22 ppc
-rw-r--r--    1 Ioot     root        55905 Feb 23 21:04 vsftpd-2.3.5_SSL.tar.gz
DiskStation>

Bitte wählen Sie entsprechend Ihrer Architektur den Ordner aus der die Binary kopiert werden soll. In diesem Beispiel handelt es sich um eine PowerPC Architektur und deshalb wird die Binary aus dem Ordner ppc kopiert.

DiskStation> cp /opt/vsftpd/ppc/vsftpd /opt/sbin
DiskStation>

Konfiguration

Vorbereitungen

Eine Serverinstanz im xinetd einrichten
  • Der nächste Schritt fordert erhöhte Konzentration. Denn bei einem Tippfehler könnte es passieren, dass die Disk-Station nicht mehr richtig bootet.
  • Der inetd als Superdaemon sollte in der Lage sein den FTP-Server zu starten. Daher muss die Datei /etc/inetd.conf mit einem Editor angepasst werden.
DiskStation> vi /etc/inetd.conf

telnet		stream		tcp	nowait		root	/usr/sbin/telnetd	telnetd
~
~
~ 
~
~
- /etc/inetd.conf  1/1 100%
  • Der Umgang mit dem Editor ist etwas gewöhnungsbedürftig. Aber für eine Zeile die angepasst werden muss völlig ausreichend. Näheres zu dem Vi Editor und seiner Steuerung finden Sie unten in der Linksammlung oder hier.
  • Zunächst müssen Sie in den Eingabemodus wechseln um Änderungen an dieser Datei vornehmen zu können. Das machen Sie mit der Tastenkombination <Shift + i>.
  • Wenn Sie mit den Pfeiltasten auf das t von telnet navigieren und die <Enter> Taste drücken, fügen Sie eine neue Zeile ein. Sie schreiben bitte folgende Zeile und trennen die Begriffe mit der <Tab> oder <Space> Taste.
ftp         stream  	tcp     	nowait  	root    /opt/sbin/vsftpd 	/opt/etc/vsftpd.conf
  • Auf Ihrem Bildschirm sollte folgendes angezeigt sein.
ftp        stream  	tcp     	nowait  	root    	/opt/sbin/vsftpd 	/opt/etc/vsftpd.conf
telnet	   stream	tcp	        nowait		root	        /usr/sbin/telnetd	telnetd
~
~
~ 
~
~
I /etc/inetd.conf  [modified] 1/2 50%
  • Wenn dies der Fall ist, müssen Sie den Editormodus verlassen und die Datei mit den Änderungen abspeichern. Dazu drücken Sie die <Esc> Taste. Anschließend die
    Tastenkombination < Shift + : > und geben den Befehl wq ein. Das ganze mit der Taste <Enter> abschließen.
  • Damit nicht 2 Dienste auf einem Port laufen, müssen Sie sich vergewissern, dass der mitgelieferte FTP Dienst deaktiviert ist. Dazu rufen Sie den Station-Manager im Browser auf, navigieren zu Netzwerkdienste/FTP und überprüfen die Option „FTP Service aktivieren“.


WICHTIG: Der "inetd" Daemon muss neugestartet werden. Sonst wird die Konfiguration nicht übernommen!

DiskStation> kill -HUP `pidof inetd`
DiskStation> _
  • Nun ist es an der Zeit vsFTP auf Funktion zu testen. Sie können dies lokal überprüfen.


Syntax:
ftp://<Benutzername>:<Kennwort>@<Ip-Adresse>


FEHLER: Für den Benutzer Anonymous ist kein Homeverzeichnis angelegt. Somit kann dieser sich auch nicht mit dem FTP-Server verbinden.
Ftp error.gif


Selbstsigniertes X.509 Zertifikat erstellen

Vorwort:

Damit Sie einem FTP-Client später den verschlüsselten Login bzw. verschlüsselten Datentransfer ermöglichen können, sind mehrere Schritte notwendig.

  1. Kennwortgeschütztes Schlüsselpaar für ein Root Zertifikat erstellen (Public/Private Key). Mit diesem Schlüssel werden neue Zertifikate an der CA signiert. Dieser Schlüssel sollte verborgen und geheim bleiben.
  2. Zertifikatsanforderung (CSR) für das Root Zertifikat an die Zertifizierungsinstanz (CA).
  3. Das X.509 Root Zertifikat an der Zertifizierungsinstanz (CA) erstellen und signieren.
  4. Neues Schlüsselpaar für das Client Zertifikat erstellen (Public/Private Key). Diesen RSA Schlüssel (Private Key) geben Sie an die FTP-Clients weiter.
  5. Zertifikatsanforderung (CSR) für das Client Zertifikat an die Zertifizierungsinstanz (CA).
  6. Das X.509 Client Zertifikat an der Zertifizierungsinstanz (CA) erstellen und signieren. Dieses Zertifikat geben Sie mit dem extrahierten privaten RSA Schlüssel (siehe nächsten Schritt) an die FTP-Clients weiter.
  7. Privaten RSA Schlüssel in eine .key Datei extrahieren.
  8. RSA Schlüssel und Zertifikat für vsftp in eine Datei schreiben.


Wenn Sie an der DS nicht angemeldet sind, dann melden Sie sich bitte jetzt z.B. mit Telnet an.

  • Syntax:
    • telnet <hostname/Ip-Adresse>
telnet 192.168.178.1
DiskStation login: root
Passwort: *********
DiskStation>

Sie wechseln bitte in das Verzeichnis /etc/ssl und erstellen den Ordner "newcerts", erstellen die Datei "index.txt" und die Datei "serial". Anschließend erstellen Sie das Schlüsselpaar für das Root Zertifikat in den Ordner /private. Dieser Schlüssel wird mit einem Passwort geschützt. Für dieses Beispiel wird ein RSA Schlüssel mit 2048 Bit erstellt.

DiskStation> cd /etc/ssl
DiskStation> mkdir -p newcerts
DiskStation> touch index.txt
DiskStation> touch serial

DiskStation> openssl genrsa -des3 -out private/caRoot.key 2048
Generating RSA private key, 2048 bit long modulus
...............................+++
................+++
e is 65537 (0x10001)
Enter pass phrase for private/caRoot.key:
Verifying - Enter pass phrase for private/caRoot.key:
DiskStation>

Erstellen Sie die Zertifikatsanforderung für das neue Root Zertifikat. Geben Sie das vom letzten Schritt festgelegte Passwort ein und beantworten Sie die Fragen wie im Beispiel unten. Optional kann hier bei "A challenge password" für jede Verbindungsanforderung noch ein Passwort mitgegeben werden. In diesem Beispiel ist das Kennwort und "An optional company name" leer.

DiskStation> openssl req -new -key private/caRoot.key -out ca.csr
Enter pass phrase for private/caRoot.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: DE
State or Province Name (full name) [Some-State]: NRW
Locality Name (eg, city) []: Hamm
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Mustermann ltd
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []: 192.168.170.2
Email Address []:trashme775@unitybox.de

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
DiskStation>

Signieren Sie das neue Root Zertifikat mit z.B. einen Jahr Gültigkeit. Geben Sie dafür das Passwort ein, das Sie zuerst festgelegt haben.

DiskStation> openssl x509 -days 365 -signkey private/caRoot.key -in ca.csr -req -out newcerts/Root.crt
Signature ok
subject=/C=DE/ST=NRW/L=Hamm/O=Mustermann ltd/CN=192.168.170.2/emailAddress=trashme775@unitybox.de
Getting Private key
Enter pass phrase for private/caRoot.key:
DiskStation>

Erstellen Sie das neue Schlüsselpaar für das Client Zertifikat. Dieses Schlüsselpaar kann, so wie bei dem Root Zertifikat auch, mit einem Passwort belegt werden.

DiskStation> openssl genrsa -out private/caClient.key 2048
Generating RSA private key, 2048 bit long modulus
............+++
.......+++
e is 65537 (0x10001)
DiskStation>

Erstellen Sie einen Antrag bzw. einen CSR (Certificate Signing Request) für ein neues Client Zertifikat. Beantworten Sie die Fragen wie im Beispiel für das Root-Zertifikat. Dabei ist wichtig, dass "Common Name" übereinstimmt mit "Common Name" aus dem Root Zertifikat. Optional kann hier auch für jede Verbindungsanfoderung ein Passwort mitgegeben werden (A challenge password). Beim Test mit FlashFXP wurde ich allerdings nie danach gefragt!? Vielleicht wird dieses abgefragt, wenn das Zertifikat für z.B. VPN Verbindungen genutzt wird.

DiskStation> openssl req -new -key private/caClient.key -out client.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:NRW
Locality Name (eg, city) []:Hamm
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Mustermann ltd
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:192.168.170.2
Email Address []:trashme775@unitybox.de

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
DiskStation>

Signieren Sie das neue Client Zertifikat an der CA. Geben Sie dazu das erste festgelegte Passwort ein.

DiskStation> openssl x509 -days 365 -CA newcerts/Root.crt -CAkey private/caRoot.key -set_serial 01 -in client.csr -req -out newcerts/client.pem
Signature ok
subject=/C=DE/ST=NRW/L=Hamm/O=Mustermann ltd/OU=192.168.170.2/CN=192.168.170.2/e
mailAddress=trashme775@unitybox.de
Getting CA Private Key
Enter pass phrase for private/caRoot.key:
DiskStation> 

Das Client Zertifikat sollte jetzt erstellt und signiert sein. Schauen wir uns nun mal die Inhalte auf dem Pfad /etc/ssl, /etc/ssl/newcerts und /etc/ssl/private an.

DiskStation> ls -l

-rw-r--r--    1 root     root         1106 Feb 29 23:06 Client.csr
-rw-r--r--    1 root     root         1106 Feb 29 22:59 ca.csr
-rw-r--r--    1 root     root            0 Feb 29 22:52 index.txt
drwxr-xr-x    2 root     root         4096 Feb 29 20:08 newcerts
drwxr-xr-x    2 root     root         4096 Feb 29 23:02 private
-rw-r--r--    1 root     root            0 Feb 29 22:52 serial

DiskStation> cd newcerts
DiskStation> ls -l

-rw-r--r--    1 root     root         1306 Feb 29 23:18 Root.crt
-rw-r--r--    1 root     root         1314 Feb 29 23:24 client.pem 

DiskStation> cd ../private
DiskStation> ls -l

-rw-r--r--    1 root     root         1675 Feb 29 23:18 caClient.key
-rw-r--r--    1 root     root         1743 Feb 29 23:16 caRoot.key

Sie erstellen bitte eine private Key Datei, die wir mit der client.pem Datei weiter geben können, um einen FTP Clienten zu authentifizieren. Bitte vorher wieder in das Verzeichnis /etc/ssl wechseln.

DiskStation> cd /etc/ssl
DiskStation> openssl rsa -in private/caClient.key -out private/client.key
writing RSA key
DiskStation> 

Damit vsftp das Zertifikat und den RSA Schlüssel aus einer einzigen Datei lesen kann, müssen die client.pem und die caClient.key Datei zusammengefügt werden.

DiskStation> cat newcerts/client.pem private/caClient.key > vsftpd.pem

Schlüssel Dateien bzw. die Schlüssel Datei für das signieren neuer Zertifikte sollte nur vom root lesbar sein. Dazu verändern Sie die Rechte an dem Verzeichnis /private.

DiskStation> chmod 700 private
DiskStation> dir
-rw-r--r--    1 root     root         1106 Feb 29 23:20 Client.csr
-rw-r--r--    1 root     root         1086 Feb 29 23:17 ca.csr
-rw-r--r--    1 root     root            0 Feb 29 22:52 index.txt
drwxr-xr-x    2 root     root         4096 Feb 29 23:23 newcerts
drwx------    2 root     root         4096 Feb 29 23:44 private
-rw-r--r--    1 root     root            0 Feb 29 22:52 serial
-rw-r--r--    1 root     root         2989 Feb 29 23:46 vsftpd.pem 

Zu guter letzt kopieren wir die .key und die .pem Datei für den FTP-Clients an einen erreichbaren Ort (z.B. SambaShare /public).

DiskStation> cp newcerts/client.pem /volume1/public
DiskStation> cp private/client.key /volume1/public

Wie Sie den FTP-Clienten für SSL-Verschlüsselung einrichten wird im Kapitel "FTP-Client" beschrieben.

Anonymen Zugang einrichten

Anmerkung: Wir beginnen mit der einfachsten und zugleich unsichersten Form der Verbindung, der Anonymen ohne Passwort. In diesem Abschnitt wird Ihnen ausserdem folgendes gezeigt:

  • Gastzugang ohne Passwort, eingesperrt im Homeverzeichnis (chroot-Jail), nur mit Leserecht einrichten.
  • Gastzugang mit Passwort, eingesperrt im Homeverzeichnis (chroot-Jail), mit schreibrecht in einem Upload-Ordner unterhalb der chroot-Jail einrichten.
  • Gastzugang eine Verschlüsselte Verbindung anbieten oder fordern.
  • Gastzugang individuell eingehängte Ordner zur Verfügung stellen.

Sofern Sie nicht an der Konsole angemeldet sind, melden Sie sich jetzt bitte mit Telnet oder SSH an. Zunächst müssen Sie sich entscheiden, an welcher Stelle im System der anonyme Benutzer landen soll, wenn dieser sich mit einem FTP-Client anmeldet. Über welchen Benutzer sollen die Rechte eingeräumt werden. Da vsftp per Default alle anonymen Verbindungen über das Systemkonto "ftp" abhandelt. Sofern über die Option "ftp_username" nichts anderes definiert ist (Dazu später mehr). Schwieriger wird es, wenn sich ein Benutzerkonto wie "ftp" nicht lokal anmelden darf bzw. kein Homeverzeichnis für diesen Benutzer existiert. Das ist eine der häufigen Fehlerquellen, wenn Verbindungen erst garnicht zustande kommen.

Wir schauen uns einfach mal einen Ausschnitt aus der Datei an, in der die lokalen Benutzer definiert sind. Das ist die passwd Datei in /etc.

DiskStation> cat /etc/passwd
root:x:0:0:root:/root:/opt/bin/bash
Ioot:x:0:0:root:/root:/bin/ash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
ftp:x:21:21:Anonymous FTP User:/nonexist:/sbin/nologin
smmsp:x:25:25:Sendmail Submission User:/var/spool/clientmqueue:/sbin/nologin
nobody:x:1023:1023:nobody:/home:/sbin/nologin
admin:x:1024:100:System default user:/volume1/@database:/bin/sh
guest:x:1025:100:Guest:/nonexist:/bin/sh
DiskStation>

Wie Sie sehen, ist für den Benutzer "ftp" weder ein Homeverzeichnis (/nonexist) noch eine Shell definiert (/sbin/nologin). Aus Sicherheitsgründen weichen wir hier aber vom Standard ab, und arbeiten mit dem Benutzer "nobody" und einer neuen Gruppe "ftpuser". Legen Sie bitte die Gruppe "ftpuser" oder eine andere Gruppe nach belieben an. Fügen Sie den Benutzer "nobody" der Gruppe "ftpuser" hinzu.

DiskStation> addgroup ftpuser nobody
DiskStation>

In diesem Beispiel wird der Benutzer "nobody" seinen Arbeitsbereich auf dem Pfad /volume1/ftp/nobody finden. Bitte legen Sie den Benutzer jetzt mit seinem Homeverzeichnis ohne Passwort an und ersetzen die Pfadangabe für das Homeverzeichnis nach belieben.

DiskStation> adduser -h /volume1/ftp/nobody -s /sbin/nologin -G ftpuser -g "Anonymner FTP-Login" -D nobody
DiskStation>

Unter umständen kann es sein, dass Sie nach dem Versuch den Benutzer anzulegen, diese Fehlermeldung bekommen: adduser: nobody: login already in use. Dann ist dieser Benutzer bereits angelegt. Wenn der Benutzer allerdings kein Homeverzeichnis hat, müsste dieser entweder manuell mit dem vi Editor hinzugefügt werden. Oder Sie löschen den Benutzer und legen ihn erneut an. Dieses Beispiel beschreibt die 2. Variante.

DiskStation> deluser nobody
deluser: nobody: User could not be removed from /etc/gshadow
DiskStation> adduser -h /volume1/ftp/nobody -s /sbin/nologin -G ftpuser -g "Anonymner FTP-Login" -D nobody
DiskStation> 

Die Meldung "deluser: nobody: User could not be removed from /etc/gshadow" können Sie getrost ignorieren. Gshadow gibt es in dieser Systemumgebung nicht. Wo nix ist, kann auch nix entfernt werden. Sollte ausserdem die Meldung "adduser: /volume1/ftp/nobody: File exists" auftauchen, dann ist das Homeverzeichnis bereits angelegt. Ein kurzer Blick in die "passwd" Datei und in die "group" Datei sollte Ihnen die Gewissheit liefern, dass der Benutzer und die Gruppe angelegt wurde.

DiskStation> cat /etc/passwd
...
lp:x:7:lp
ftp:x:21:ftp
smmsp:x:25:smmsp,admin
nobody:x:1038:101:Anonymner FTP-Login:/volume1/ftp/nobody:/sbin/nologin
...
DiskStation> cat /etc/group
lp:x:7:lp
ftp:x:21:ftp
smmsp:x:25:smmsp,admin
users:x:100:
ftpuser:x:101:nobody
...
DiskStation>

Als nächstes bearbeiten Sie die Konfiguratonsdatei für vsftp. Sie haben die Wahl, ob Sie die Datei in einen Linux konformen Editor wie z.B. Notepad++ bearbeiten und anschließend auf die DS laden. Achten Sie bitte darauf, dass Sie das Zeilenende unter "Bearbeiten>Zeilenende>Konvertiere zu Unix (LF)" auf LF gestellt haben (Notepad++). Oder Sie bearbeiten die Datei mit dem vi Editor an der Konsole. Ist die Datei extern bearbeitet worden und liegt z.B. in dem Samba-Share /public, dann kopieren Sie die "vsftp.conf" Datei in den folgenden Ordner und setzen die Rechte.

DiskStation> cp /volume1/public/vsftpd.conf /opt/etc
DiskStation> chmod 644 /opt/etc/vsftpd.conf
DiskStation>

An der Konsole mit dem vi Editor gehen Sie wie folgt vor.

DiskStation> vi /opt/etc/vsftpd.conf

Wichtige Befehle für vi:

Taste:

  • i = Schreib/Einfügemodus
  • ESC = Schreib/Einfügemodus verlassen

Tastenkombination:

  •  :wq = Änderungen schreiben, Editor verlassen
  •  :w! = Änderungen schreiben
  •  :q! = Änderungen verwerfen, Editor verlassen
  • dd = ganze Zeile löschen (NICHT im Schreibmodus)

Inhalt der vsftpd.conf Datei für den Anonymen Zugang:

#Anonymer Login
#
# Erlaubt den Anonymen Zugang 
anonymous_enable=Yes
# Der Anonyme Zugang wird zu diesen Benutzer umgeleitet.
ftp_username=nobody
# Homeverzeichnis für den Anonymen Benutzer
anon_root=/volume1/ftp/nobody
# Anonymer Login benötigt kein Passwort?
no_anon_password=Yes
# Neu erstellte Dateien oder Ordner bekommen durch Anonymen Zugang diese Rechte
anon_umask=022
# Anonymer Zugang darf hochladen?
anon_upload_enable=No
# Anonymer Zugang darf Ordner erstellen?
anon_mkdir_write_enable=No
#
#FTP Server Konfiguration
#
# Schreibrecht Global für lokale Benutzer bzw. Anonymer Zugang
write_enable=No
# Verzeichnisse auflisten Rekusiv erlauben?
ls_recurse_enable=No
# Kleinster Passiver Port
pasv_min_port=2000
# Größter Passiver Port
pasv_max_port=2020
# Yes: vsftp als Standalone daemon, No: vsftp über inetd
listen=No
# Verbindungsanfragen abhören über Port (Nur Standalone) 
listen_port=21
# Transfer Protokoll führen?
xferlog_enable=YES
# Verbindung über Port 20 zulassen?
connect_from_port_20=YES
# Besitzer für Datei- oder Verzeichnis Uploads verändern (NUR für Anonyme Uploads) 
chown_uploads=Yes
# Besitzer für Datei- oder Verzeichnis Uploads wird Benutzer:
chown_username=nobody
# Speicherort Protokoll
vsftpd_log_file=/opt/var/log/vsftpd.log
ascii_upload_enable=YES
ascii_download_enable=YES
# Willkommensnachricht
ftpd_banner=Willkommen auf FTP @ ???.dyndns-ip.com

Wenn Sie die "vsftpd.conf" Datei gespeichert haben, ist es noch notwendig dem Benutzer "nobody" an seinem Homeverzeichnis die Schreibrechte zu entziehen. Vsftp lässt sonst mit dieser Konfiguration die Verbindung nicht zu. Damit nobody in seinen Verzeichnis etwas zu sehen bekommt, legen Sie mit "touch" eine Beispieldatei an.

DiskStation> chmod 555 /volume1/ftp/nobody
DiskStation> touch /volume1/ftp/nobody/Hier_ist_nobody_richtig.txt
DiskStation> 

Stellen Sie nun mit einem FTP-Client Ihrer Wahl eine Verbindung her.

Zugang mit Benutzer/Passwort Authentifizierung

Zugang mit SSL Zertifikat und PAM

FTP-Client

FlashFXP

Besonderheiten für SSL-Verschlüsselung:

Für dieses Beispiel wird eine Englischsprachige 30 Tage Testversion von FlashFXP benutzt. Diese kann kostenlos hier heruntergeladen werden.

In diesem Abschnitt wird die Einrichtung für einen Verbindungsaufbau zu einem FTP Server Schritt für Schritt erklärt, der eine SSL-Verbindung fordert oder bereithält.


  • Wenn Sie das Programm FlashFXP installiert haben, dann starten Sie das Programm bitte.
    NewSide neu.jpg
  • Wählen Sie bitte über das Menü "Sites" > "Site Manager".
  • Sie klicken bitte auf den Button "New Site". Daraufhin erscheint ein Dialog.



  • Unter der ComboBox "Connection Type" wählen Sie bitte "FTP using Explicit SSL (Auth SSL)".
    New sel FTP SSL neu.jpg




  • In die TextBox "Site Name" geben Sie dem Kind ein beliebigen Namen.
    New sel FTP SSL Data neu.jpg
  • In die TextBox "Ip-Address" geben Sie den Hostnamen oder die Ip-Adresse des FTP-Servers ein.
  • In die TextBox "Port" geben Sie den Anschluss des FTP-Servers ein. Standartmäßig ist dies der Port 21.
  • Wenn der FTP-Server anonyme Verbindungen zulässt, dann wählen Sie die CheckBox "Anonymous" aus. Lässt der FTP-Server nur bekannte Benutzer zu, dann geben Sie die Benutzerdaten in die TextBox "User Name" und "Password" ein. Näheres zu diesem Thema finden Sie hier.



  • Wählen Sie den Karteireiter "SSL" und klicken auf den Button "Cert Manager". Ein neuer Dialog erscheint.
    Cert Manager Import.jpg
  • Klicken Sie auf den Button "Import". Ein weiterer Dialog erscheint.
  • Die Combobox "Key Format" müsste in der Vorauswahl "X.509 certifikate for FTP" haben. Wenn nicht, dann wählen Sie dies bitte aus.
  • Klicken Sie bitte rechts neben der TextBox "Public Key" auf den "..." Button und suchen mit dem neuen Dialog nach einer .pem Datei. Sie müssen vorher in dem neuen Dialog mit der ComboBox "Dateityp" den Filter auf "Base 64 Encoded Certifikate *.pem" umstellen.
  • Klicken Sie bitte rechts neben der TextBox "Private Key" auf den "..." Button und suchen mit dem Dialog nach einer .key Datei für Ihre Verbindung. Wie diese Dateien erstellt werden, wurde bereits im Abschnitt Selbstsigniertes X.509 Zertifikat erstellen erklärt.
  • Klicken Sie bitte auf den Button "Import".


  • Wenn FlashFXP nicht meckert, und den Dienst nicht mit der Meldung "Unable to Load private Key" quittiert, dann sollte Ihr neues Zertifikat jetzt in der Auflistung stehen.
    Cert Manager Cert Imported.jpg
  • Schließen Sie die Auflistung mit dem Button "Close" und versuchen nun mit dem Button "Apply" und "Connect" eine Verbindung aufzubauen.
    Connect and view Cert neu.jpg






Sie sollten wie hier rechts im Bild zu sehen ist das Zertifikat angezeigt gekommen. Sie haben jetzt 3 Optionen:

  1. Reject: Annahme verweigern, die Verbindung wird getrennt.
  2. Accept Once: Annehmen, bei nächsten Verbindung erneut bestätigen.
  3. Accept & Save: Annehmen, speichern und nicht mehr fragen.

.

Links

Installation und Konfiguration von vsFTP (deutsch)

Quellen

Glosar

  • Binary: Eine unter Linux ausführbare Programmdatei.
  • Case Sensitive: Groß und Kleinschreibung ist zu berücksichtigten.
  • Certificate Authority: Zertifizierungsinstanz
  • Certificate Signing Request: Kurz CSR ist eine Zertifikatsanforderung an die CA (Certificate Authority) der Zertifizierungsinstanz.
  • Jail: Der Benutzer ist in seinen Home Verzeichnis gefangen und kann dort nicht ausbrechen bzw. er kann wenn überhaupt einen Verzeichniswechsel nur für Unterordner durchführen. Oberhalb der Verzeichnisstruktur ist ihm der Zugang verwehrt. Umgangssprachlich sagt man dazu auch:"Der Benutzer ist in einer Changeroot-Jail".