Sehr sicherer FTP-Daemon oder einfach vsFTPd ist eine leichtgewichtige Software mit großer Anpassungsfähigkeit. In diesem Tutorial sichern wir eine bereits bestehende Installation auf einem Debian-System mit unserem eigenen selbstsignierten SSL/TLS-Zertifikat. Obwohl es für Debian geschrieben wurde, sollte es auf den meisten Linux-Distributionen wie zum Beispiel Ubuntu und CentOS funktionieren.
Installation von vsFTPd
Auf einem neuen Linux-VPS müssen Sie zuerst vsFTPd installieren. Obwohl Sie die grundlegenden Schritte zur Installation von vsFTPd finden werden In diesem Tutorial empfehle ich Ihnen, auch diese beiden ausführlicheren Tutorials zu lesen:Setup vsFTPd on Debian/Ubuntu und Installing vsFTPd on CentOS. Dort werden alle Schritte zur Installation genauer erklärt.
Installation auf Debian/Ubuntu:
apt-get install vsftpd
Installation auf CentOS:
yum install epel-release
yum install vsftpd
Konfiguration Öffnen Sie die Konfigurationsdatei:/etc/vsftpd.conf in Ihrem bevorzugten Texteditor, in diesem Tutorial verwenden wir nano
.
nano /etc/vsftpd.conf
Fügen Sie die folgenden Zeilen in die Konfiguration ein:
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
Schließen Sie ab, indem Sie Ihren vsFTPd-Daemon neu starten:
/etc/init.d/vsftpd restart
Sie sollten sich jetzt als beliebiger lokaler Benutzer über FTP anmelden können. Lassen Sie uns nun fortfahren und diese Software sichern.
Generieren Sie ein selbstsigniertes Zertifikat
Ein selbstsigniertes Zertifikat wird normalerweise in einem Public-Key-Agreement-Protokoll verwendet, Sie verwenden jetzt openssl
um einen öffentlichen Schlüssel und einen entsprechenden privaten Schlüssel zu generieren. Zuerst müssen wir ein Verzeichnis erstellen, um diese beiden Schlüsseldateien zu speichern, vorzugsweise an einem sicheren Ort, auf den normale Benutzer keinen Zugriff haben.
mkdir -p /etc/vsftpd/ssl
Nun zur eigentlichen Generierung des Zertifikats, wir speichern beide Schlüssel in derselben Datei (/etc/vsftpd/ssl/vsftpd.pem ):
openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/vsftpd/ssl/vsftpd.pem -out /etc/vsftpd/ssl/vsftpd.pem
Nachdem Sie den Befehl ausgeführt haben, werden Ihnen einige Fragen gestellt, z. B. Ländercode, Bundesland, Stadt, Name der Organisation usw. Verwenden Sie Ihre eigenen oder die Informationen Ihrer Organisation. Die wichtigste Zeile ist jetzt der Allgemeine Name die mit der IP-Adresse Ihres VPS übereinstimmen muss, alternativ ein darauf verweisender Domainname.
Dieses Zertifikat ist 365 Tage (~1 Jahr) gültig, es verwendet das RSA-Schlüsselvereinbarungsprotokoll mit einer Schlüssellänge von 4096 Bit, und die Datei mit beiden Schlüsseln wird in dem gerade erstellten neuen Verzeichnis gespeichert. Weitere Einzelheiten zur Schlüssellänge und deren Beziehung zur Sicherheit finden Sie hier:Encryption II-Empfehlungen.
Installieren Sie das neue Zertifikat in vsFTPd
Um unser neues Zertifikat zu verwenden und somit die Verschlüsselung bereitzustellen, müssen wir die Konfigurationsdatei erneut öffnen:
nano /etc/vsftpd.conf
Wir müssen die Pfade zu unseren neuen Zertifikats- und Schlüsseldateien hinzufügen. Da sie in der gleichen Datei gespeichert sind, sollte sie auch in der Konfiguration gleich sein.
rsa_cert_file=/etc/vsftpd/ssl/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.pem
Wir müssen diese Zeile hinzufügen, um sicherzustellen, dass SSL aktiviert wird:
ssl_enable=YES
Optional können wir anonymen Benutzern die Verwendung von SSL verweigern, da auf einem öffentlichen FTP-Server keine Verschlüsselung erforderlich ist.
allow_anon_ssl=NO
Als Nächstes müssen wir angeben, wann SSL/TLS verwendet werden soll. Dadurch wird die Verschlüsselung sowohl für die Datenübertragung als auch für die Anmeldedaten aktiviert
force_local_data_ssl=YES
force_local_logins_ssl=YES
Wir können auch angeben, welche Versionen und Protokolle verwendet werden sollen. TLS ist im Allgemeinen sicherer als SSL und daher können wir TLS zulassen und gleichzeitig ältere Versionen von SSL blockieren.
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
Erfordern Sie die Wiederverwendung von SSL und die Verwendung hoher Verschlüsselungen trägt ebenfalls zur Verbesserung der Sicherheit bei. Aus den Manpages von vsFTPd:
require_ssl_reuse Wenn auf yes gesetzt, müssen alle SSL-Datenverbindungen die Wiederverwendung von SSL-Sitzungen aufweisen (was beweist, dass sie dasselbe Master-Secret wie der Kontrollkanal kennen). Obwohl dies eine sichere Standardeinstellung ist, kann sie viele FTP-Clients beschädigen, sodass Sie sie möglicherweise deaktivieren möchten. Eine Diskussion der Konsequenzen finden Sie unter http://scarybeastsecurity.blogspot.com/2009/02/vsftpd-210-released.html (Hinzugefügt in v2.1.0).
ssl_ciphers Diese Option kann verwendet werden, um auszuwählen, welche SSL-Chiffren vsftpd verschlüsselte SSL-Verbindungen zulassen wird. Weitere Informationen finden Sie auf der man-Seite von ciphers. Beachten Sie, dass das Einschränken von Chiffren eine nützliche Sicherheitsvorkehrung sein kann, da es verhindert, dass böswillige entfernte Parteien eine Chiffre erzwingen, mit der sie Probleme gefunden haben.
require_ssl_reuse=YES
ssl_ciphers=HIGH
Beenden Sie den Vorgang, indem Sie den vsftpd
neu starten Dämon
/etc/init.d/vsftpd restart
Installation bestätigen
Und das war's, Sie sollten sich jetzt mit Ihrem Server verbinden und bestätigen können, dass alles funktioniert. Wenn Sie FileZilla verwenden, sollte sich bei der Verbindung ein Dialogfeld öffnen, das Ihre Organisationsinformationen enthält (oder was auch immer Sie zuvor beim Generieren des Zertifikats eingegeben haben). Die Ausgabe sollte dann etwa so aussehen:
Status: Connection established, waiting for welcome message...
Status: Initializing TLS...
Status: Verifying certificate...
Status: TLS connection established.
Um mehr über vsFTPd zu erfahren, sehen Sie sich die Handbuchseiten an:
man vsftpd