Wie heißte es heute zu tage immer so schon, man kann nie sicher genug sein. Gleiches gilt auch für das traditionelle FTP Protokoll, was nun langsam in die Jahre kommt, aber immer noch _DAS_ Protokoll Nummer 1 ist, wenn es um Dateiübertragungen geht.
Eines der Probleme des FTP Protokoll ist es, dass es Benutzernamen und Passwort als „plain text“ also als für jeden sicht- und lesbaren Text überträgt. Wohnt man nun zum Beispiel in einem Studentenwohnheim und jemand dort schafft es, wie auch immer, unseren Netzwerkverkehr mitzuhöhren, so wäre er in der Lage unseren Benutzernamen und das Passwort heraus zu finden.
Um dem entgegenzuwirken müssen wir eine sichere Verbindung aufbauen, welches wir auch wie bei HTTP bekannt über SSL bzw. TLS machen.
Konfiguration von proFTPd:
# TLS
TLSEngine on
TLSLog /var/log/proftpd_tls.log
TLSProtocol SSLv23
TLSCipherSuite ALL:!ADH:-LOW:-MEDIUM:-SSLv2
TLSRequired off
TLSVerifyClient off
TLSRSACertificateFile /etc/proftpd/host.cert
TLSRSACertificateKeyFile /etc/proftpd/host.key
Weiter Konfigurationsdirektiven für ProFTPd können auf der Webseite ((http://www.proftpd.org/docs/howto/TLS.html))
Zertifikate erstellen:
Nun brauchen wir noch Zertifikate, damit die Verbindung auch verschlüsselt werden kann. Der einfachste Weg ist sich selber solche Zertifikate auszustellen. Dies bedeutet allerdings für den Benutzer, dass er sich nicht sicher sein kann, dass beim Authentifizieren mit dem Server der Server auch wirklich derjenige ist, mit dem sich der Nutzer verbinden will. Deswegen gibt es sogenannte Signing Authorities wie Versign und Co.. Eine kostenlose Signing Authority is http://www.cacert.org. Hat der Benutzer deren Zertifikate als vertrauenswert eingestuft, dann kommt auch kein Warnhinweis, dass das Zertifikat nicht vertrauenswürdig ist.
Nun aber zur Erstellung der Zertifikate ((Mehr zum Erstellen von Zertifikaten, http://www.akadia.com/services/ssh_test_certificate.html)) dazu benutzen wir openSSH ((http://openssl.org/docs/))
openssl genrsa -des3 -out host.key 1024
Generating RSA private key, 1024 bit long modulus
.........................................................++++++
........++++++
e is 65537 (0x10001)
Enter PEM pass phrase:
Verifying password - Enter PEM pass phrase:
Hierbei lassen wir die pass phrase leer!
openssl req -new -key host.key -out host.csr
Hier ist es wichtig, dass der „Common Name (eg, your name or your server’s hostname) []“ mit der Domain über einstimmt für die das Zertifikat genutzt werden soll. bsp. ssl.freakbynature.de
openssl x509 -req -days 365 -in server.csr -signkey host.key -out host.crt
Voila fertig sind die Zertifikate. Nun noch den proFTPd restarten und dann testen.