VsFTP installieren

Aus

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.
    Fehler beim Erstellen des Vorschaubildes: Datei fehlt
  • 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.

Fehler beim Erstellen des Vorschaubildes: Datei fehlt


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> _
  • 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:

Vorrausetzungen/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“.
  • Sie können jetzt die Disk-Station oder den „inetd“ Prozess neustarten. Mit der zweiten Variante nehmen Sie wieder Telnet zur Hilfe.
DiskStation> ps | grep inetd
1325 root	680 S	/usr/sbin/inetd
2766 root	220 S	grep inetd
DiskStation> _
  • In diesem Beispiel ist die ProzessID für den Prozess inetd "1325". Bitte passen Sie Ihre ProzessID entsprechend an und starten inetd neu.
DiskStation> kill –HUP 1325
DiskStation> _
  • vsFTP ist nun installiert und sollte bereits laufen. 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.

Fehler beim Erstellen des Vorschaubildes: Datei fehlt



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.

s
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

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.
  • 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)".
    Fehler beim Erstellen des Vorschaubildes: Datei fehlt
  • In die TextBox "Site Name" geben Sie dem Kind ein beliebigen Namen.
  • 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.
    Fehler beim Erstellen des Vorschaubildes: Datei fehlt
  • 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.
  • Klicken Sie auf den Button "Import". Ein weiterer Dialog erscheint.
    Fehler beim Erstellen des Vorschaubildes: Datei fehlt
  • 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".
    Fehler beim Erstellen des Vorschaubildes: Datei fehlt
  • 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.
  • Schließen Sie die Auflistung mit dem Button "Close" und versuchen nun mit dem Button "Apply" und "Connect" eine Verbindung aufzubauen.
    Fehler beim Erstellen des Vorschaubildes: Datei fehlt

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.