VSFTP mit SSL Debian Lenny

Grundsätzliches

Im Zuge eines Umbaues und bedingt dadurch, dass der Support für ETCH in absehbarer Zeit ausläuft, muss mein alter Debian ETCH Server in naher Zukunft einem neuen Platz machen.

Ich bin daran gegangen  mit Hilfe des Network-Installer (CD-Image) ein Grundsystem aufzusetzen.

In einem nächsten Schritt erfolgte die Installation von VSFTP:

  • apt-get install vsftpd
  • gefolgt von RETURN

Nun sollte der VSFTPD laufen und anonymen Usern Zugriff gewähren. Sollte das nicht der Fall sein, meldet VSFTPD meist beim Verbindungsversuch einen (aussagekräftigen) Fehler.

Weitere Informationen findet man u.a. noch in /var/log/messages, oder aber auch in den Logdateien von VSFTPD unter /var/log/xfer.log und /var/log/vsftpd.log. Es hängt von der Konfiguration ab, wohin VSFTPD loggt.

Bei meinem Setup fehlte der User „ftpsecure“ den VSFTPD unbedingt benötigt. Dieser User wurde ohne Loginshell manuell hinzugefügt.

Openssl

Um eine SSL Verbindung realisieren zu können und auch das Zertifikat selbst zu erstellen, wird das Paket openssl benötigt:

  • apt-get install openssl
  • gefolgt von RETURN

Die Konfiguration von VSFTP

Wie bei fast allen Diensten befindet sich die Konfigurationsdatei im Verzeichnis /etc. Sie hat den Namen vsftpd.conf und sollte für einen FTP Server, der über SSL kommuniziert und nur authentifizierten Usern Zugriff gewährt, ungefähr so aussehen:

write_enable=YES
dirmessage_enable=YES
nopriv_user=ftpsecure
ftpd_banner=“Welcome (logging activated)“
local_enable=YES
file_open_mode=0755
local_umask=000
userlist_deny=NO
userlist_enable=YES
chroot_local_user=YES
local_max_rate=50000
anonymous_enable=NO
anon_world_readable_only=NO
anon_upload_enable=NO
syslog_enable=NO
log_ftp_protocol=YES
xferlog_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
xferlog_std_format=YES
xferlog_file=/var/log/xferlog
#SSL einschalten
ssl_enable=YES
allow_anon_ssl=NO
#Datentransfer verschlüsseln
force_local_data_ssl=YES
#Login verschlüsseln
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO

ssl_sslv3=NO
#Angabe der Position des Zertifikates
rsa_cert_file=/usr/share/ssl-cert/vsftpd.pem

connect_from_port_20=YES
pam_service_name=vsftpd
listen=YES

Eine SSL Verbindung zum VSFTP Server funktioniert mit Hilfe von Filezilla nur, wenn ssl_tlsv2 und ssl_sslv3 auf NO gesetzt sind.

Natürlich ist -vor einem Testlauf- auch noch ein entsprechendes Zertifikat und Schlüssel zu erstellen, sonst funktioniert es nicht:

openssl req -new -x509 -days 365 -keyout vsftp.key -out vsftp.crt

Entfernen der Passphrase:

openssl rsa -in vsftp.key -out vsftp_clean.key

Beide (Key und Zertifikat) in eine Datei kopieren:

cat vsftp.crt  vsftp_clean.key > /usr/share/ssl-cert/vsftpd.pem

Klar ist außerdem, dass entsprechende User für den Einstieg angelegt werden müssen. Diese User sollten als Homeverzeichnis, das Verzeichnis besitzen, in dem die Daten landen sollen. Wichtig ist auch noch, dass diese User keine Loginshell benötigen!

Wenn alles klappt, dann sollte ein Login über Filezilla (bei verstärkter Protokollierung) so aussehen:

vsftpssl1

Die Konfiguration von VSFTP SSL erfolgte auf Debian Lenny (netinstaller) unter teilweiser Einbeziehung des How-To auf: http://www.widhalm.or.at/node/122

3 Gedanken zu „VSFTP mit SSL Debian Lenny“

  1. Der Login funktioniert, aber dann schlägt die Verzeichnisauflistung fehl. Ich benutze FileZilla.

    Antwort: 150 Here comes the directory listing.
    Fehler: GnuTLS error -9: A TLS packet with unexpected length was received.
    Status: Server hat die TLS-Verbindung nicht ordnungsgemäß geschlossen
    Fehler: Could not read from transfer socket: ECONNABORTED – Connection aborted
    Antwort: 226 Directory send OK.
    Fehler: Verzeichnisinhalt konnte nicht empfangen werden

    Antworten

Schreibe einen Kommentar

* Zustimmung zur Datenspeicherung lt. DSGVO

*

Ich bin damit einverstanden