Tag Archives: crypto

vsftpd mit virtuellen Benutzern, FXP und Verschlüsselung in 5 Minuten

Manchmal möchte man Benutzern einen FTP-Zugang zur Verfügung stellen, aber nicht gleich einen Systemzugang anlegen. Das geht mit vsftpd besonders einfach. Vorraussetzung ist eine funktionierende Installation von vsftpd und einige kleine Anpassungen. Natürlich darf auch die Sicherheit und nützliche Zusatzfunktionen wie FXP nicht zu kurz kommen.

Zuerst werden alle nötigen Programme installiert.

apt-get install vsftpd apache2-utils ssl-cert libpam-pwdfile

Es muss die Datei /etc/vsftpd.conf wie folgt angepasst werden.

listen=YES
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem

# Virtuelle Benutzer verwenden
nopriv_user=shared
virtual_use_local_privs=YES
guest_enable=YES
user_sub_token=$USER
local_root=/home/shared/pub
chroot_local_user=YES
hide_ids=YES

# FXP erlauben
pasv_promiscuous=YES
pasv_enable=YES
pasv_min_port=49152
pasv_max_port=50000
port_promiscuous=YES

# SSL fuer Daten- und Kontrollverbindung erzwingen
ssl_enable=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES

# Kleiner Scherz ;) (http://www.exploit-db.com/exploits/15449/)
ftpd_banner=ProFTPD 1.3.3a

Diese Konfigurationsdatei erlaubt es allen angelegten Benutzern das Verzeichnis /home/shared zu sehen. Soll jeder Benutzer nur ein eigenes Verzeichnis sehen können, muss die Option local_root auf den Wert /home/shared/pub/$USERgesetzt werden.

Dann wird das selbst-signierte SSL-Zertifikat für vsftpd angelegt.

make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/ssl/private/vsftpd.pem

Nun muss die PAM-Authentifizierung von vsftpd angepasst werden, sodass vsftpd die Daten aus einer Datei liest. Dafür wird der Inhalt der Datei /etc/pam.d/vsftpd gelöscht und durch folgenden Inhalt ersetzt.

auth required pam_pwdfile.so pwdfile /etc/ftpd.passwd
account required pam_permit.so

Die genannte Datei /etc/ftpd.passwd kann durch das Werkzeug htpasswd mit Benutzern und Passwörtern befüllt werden.

# Für den ersten Benutzer
htpasswd -c /etc/ftpd.passwd user1
# Für alle folgenden Benutzer
htpasswd /etc/ftpd.passwd userN

Nach einem Neustart von vsftpd mittels dem Befehl /etc/init.d/vsftpd restart ist der neue FTP-Server einsatzbereit.