Vsftpd en mode SSL
Après avoir quitté Vsftpd pour Pure-ftpd, je suis revenu à mes premières amours. J’avais besoin, pour mes clients, d’un accès Ftp sécurisé. Retour donc à Vsftpd.
Installation de Vsftpd sur Linux Fedora
La procédure est la même pour CentOS et Red Hat à ceci près que la commande à exécuter est yum au lieu de dnf :
dnf install vsftpd systemctl enable vsftpd systemctl start vsftpd
Générer clé et certificat SSL
Pour générer votre jeu de clés, il faut recourir à la commande openssl :
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.key -out /etc/vsftpd/vsftpd.crt
Interdire les comptes de services et le compte root
Seuls les comptes dont l’uid est supérieure à 1000 ont le droit de se connecter :
cat /etc/passwd|grep -E ":[0-9]{1,3}:"|cut -d ':' -f 1 > /etc/vsftpd/ftpusers cat /etc/passwd|grep -E ":[0-9]{1,3}:"|cut -d ':' -f 1 > /etc/vsftpd/user_list
Le fichier de configuration /etc/vsftpd/vsftpd.conf
Sur mon serveur, je voulais également laisser un accès anonyme via l’adresse ftp://ftp.dsfc.net :
anonymous_enable=YES anon_root=/home/www/dsfc/wp-content/uploads/supports anon_max_rate=1310720 local_enable=YES write_enable=YES local_umask=000 dirmessage_enable=YES xferlog_enable=YES xferlog_std_format=YES connect_from_port_20=YES ftpd_banner=Bienvenue sur le serveur de la société DSFC chroot_local_user=YES #chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list allow_writeable_chroot=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES #tcp_wrappers=YES ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=NO force_local_logins_ssl=NO #require_ssl_reuse=NO ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO rsa_cert_file=/etc/vsftpd/vsftpd.crt rsa_private_key_file=/etc/vsftpd/vsftpd.key #ssl_ciphers=HIGH pasv_enable=YES pasv_promiscuous=NO pasv_min_port=27000 pasv_max_port=27999 pasv_address=ftp.dsfc.net pasv_addr_resolve=YES port_promiscuous=NO
Pare-feu
J’ai ajouté à mes fichiers de configuration Iptables, /etc/sysconfig/iptables et /etc/sysconfig/ip6tables, les lignes suivantes :
-A INPUT -p tcp -m tcp -m multiport --dports 20,21 -j ACCEPT -A INPUT -p tcp -m tcp --dport 27000:27999 -j ACCEPT
Redémarrer le service
Vsftpd est désormais prêt à fonctionner :
systemctl restart vsftpd
Documentation
- Ubuntu-fr : vsftpd
- Vsftpd.conf