Tutoriel | Installer et paramétrer un FTP sécurisé avec VsFTPD

Article publiée le 12 Octobre 2016

Petit tuto expliquant comment configurer un serveur FTPs sécurisé avec vsftpd. Vsftpd étant le serveur FTP le plus sécurisé, je vous le recommande fortement.

– Installez vsftpd via la commande apt-get install vsftpd (sous Debian) ou yum install vsftpd (sous RedHat/CentOS)

– Une fois l’installation effectuée, éditez le fichier /etc/vsftpd/vsftpd.conf et écraser le contenu avec la configuration suivante (sans oublier de faire une sauvegarde du fichier original):

anonymous_enable=NO
# A adapter
pasv_min_port=30000
pasv_max_port=30099
local_enable=YES
virtual_use_local_privs=YES
write_enable=YES
local_umask=18
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
idle_session_timeout=600
data_connection_timeout=1200
chroot_local_user=YES
listen=YES
max_clients=30
pam_service_name=vsftpd.virtual
guest_enable=YES
user_sub_token=$USER
local_root=/srv/ftp/$USER
hide_ids=YES
userlist_enable=YES
tcp_wrappers=YES
ssl_enable=YES
allow_anon_ssl=NO
allow_writeable_chroot=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
rsa_cert_file=/etc/ssl/certs/<nom du fichier>.crt
rsa_private_key_file=/etc/ssl/private/<nom du fichier>.key
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
– On génère ensuite un certificat auto-signé:
openssl req -x509 -newkey rsa:1024-keyout /etc/ssl/private/private.key -out /etc/ssl/certs/certificate.crt -nodes -days 3650
chmod 0600/etc/ssl/private/private.key; chmod 0640/etc/ssl/certs/certificate.crt
– On configure le PAM (vi /etc/pam.d/vsftpd.virtual)
#%PAM-1.0
auth       required     pam_userdb.so db=/etc/vsftpd/login
account    required     pam_userdb.so db=/etc/vsftpd/login
session    required     pam_loginuid.so
– On crée le user ftp:
useradd ftp
– On oublies pas de créer le répertoire des comptes FTP selon ce que vous avez indiqué dans le fichier de configuration vsftpd.conf. Dans notre cas /srv/ftp
– Créez le fichier de user ftp (touch /etc/vsftpd/login.txt) et on le renseigne comme l’exemple ci dessous:
user1
passworduser1
user2
passworduser2
– On génère ensuite le fichier login.db (bekerley DB):
db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db
– Créez le répertoire FTP associé à l’utilisateur:
mkdir -p /srv/ftp/user1
mkdir -p /srv/ftp/user2
chown -R ftp:ftp /srv/ftp
– Enfin on redémarre le service vsftpd
service vsftpd restart