FTP User anlegen:

Homeverzeichnis liegt bei
/var/ftp/ftpuser
Zuerst müssen die Verzeichnisse anglegt werden:
mkdir /var/ftp/
mkdir /var/ftp/ftpuser

Standardmässig sind Lokale User logins erlaubt. Um nun den lokalen Benutzer am IPFire anzulegen, gebt folgendes in der Konsole ein

useradd ftpuser -d /var/ftp/ftpuser -s /bin/false

Passwort für den Benutzer legt man mit:

passwd ftpuser
echo ftpuser /etc/vsftpd.user_list

Am ende den vsftpd wieder starten mit:

/etc/init.d/vsftpd start

Um vsftpd die Möglichkeit zu SSL verschlüsseltem Transfer zu geben, braucht man zuerst ein SSL Zertifikat. Ich beschreibe das anhand eines selbst-signierten Zertifikats, was zwar nicht taugt, um die Echtheit des Kommunikationspartners zu bestätigen, aber dafür gratis ist.

Alle Beispiele beziehen sich auf RedHat Enterprise Linux 4 oder seine Derivate Tao 4 und CentOS 4.

Erst erstellt man das Zertifikat und den Schluessel

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

Danach entfernt man die Passphrase vom Schlüssel, damit vsftpd ohne Passworteingabe starten kann

openssl rsa -in praxis.key -out praxis_clear.key

Und zuletzt gibt man sowohl das Zertifikat, als auch den Schlüssel in eine Datei, auf die vsftpd zugreifen kann:

cat praxis.crt praxis_clear.key /usr/share/ssl/certs/vsftpd.pem

Um das Zertifikat auch zu verwenden muss man nur noch folgende Zeilen in die

/etc/vsftpd/vsftpd.conf

einfuegen:

ssl_enable=YES
force_local_data_ssl=NO
force_local_logins_ssl=NO
rsa_cert_file=/usr/share/ssl/certs/vsftpd.pem

Die beiden force_...=NO sind nötig, damit auch Clients zum FTP verbinden können, die kein SSL beherrschen. Wenn man das verhindern und nur verschlüsselten Datenverkehr ermöglichen will, braucht man nur beide auf „YES“ zu setzen.

Fehlermeldung in FileZilla

Die FTP-Verbindung wurde mit folgender Meldung von FileZilla abgebrochen:
1. Befehl: AUTH TLS
2. Antwort: 234 Proceed with negotiation.
3. Status: Initialisiere TLS…
4. Fehler: GnuTLS error -12: A TLS fatal alert has been received.
5. Fehler: Herstellen der Verbindung zum Server fehlgeschlagen
6. Status: Nächsten Versuch abwarten…
Lösung des Problems

Die Lösung bei den von mir verwendeten VSFTP unter Debian war im Filezilla-Forum recht schnell gefunden. In der Konfigurationsdatei von VSFTP lässt sich durch einen zusätzlichen Schalter die Verschlüsselung auf HIGH setzen und somit auch die Sicherheitsmaßgabe von FileZilla erfüllen.

sudo mcedit /etc/vsftpd.conf

# kryptographischen Algorithmus festlegen
ssl_ciphers=HIGH

Datei: /etc/vsftpd.conf

# Default config for vsftpd on ipfire

## Run in daemon mode
background=YES
listen=YES
#
## User to run daemon as
nopriv_user=vsftpd
#
## Ftp ports
pasv_min_port=2000
pasv_max_port=2020
connect_from_port_20=YES
listen_port=21
#
## SSL
ssl_enable=YES
# If not forced edit to NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
rsa_cert_file=/etc/vsftpd.pem
require_ssl_reuse=NO
#
## Timeout
idle_session_timeout=600
data_connection_timeout=120
#
## Information messages
ftpd_banner=Welcome on ftp.ipfire.org
dirmessage_enable=YES
#
## Allow local user access?
local_enable=YES
write_enable=YES
local_umask=022
# Chown
#chown_uploads=YES
#chown_username=whoever
# Chroot
chroot_local_user=YES
#chroot_list_enable=YES
secure_chroot_dir=/var/ftp/empty
#
## Anonymous login?
#anonymous_enable=YES
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
#
## Logging
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
#
## Timeout
idle_session_timeout=600
data_connection_timeout=120
#
## Preferences
#async_abor_enable=YES
#ascii_upload_enable=YES
#ascii_download_enable=YES
ls_recurse_enable=YES
#
## Userlist
userlist_deny=NO
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
#
## Max. failed logins
max_login_fails=3
#
# kryptographischen Algorithmus festlegen
ssl_ciphers=HIGH