Configuration serveur FTP vsftpd

De Wiki de Romain RUDIGER
Aller à : navigation, rechercher

Participant : Romain RÜDIGER.

Période : 09/09.

Vsftpd

Vsftpd est un serveur FTP qui par défaut à une configuration sécurisée.

Autoriser les utilisateurs sans shell

Le shell d'un utilisateur est déclaré dans /etc/passwd, lorsqu'un utilisateur se connecte à vsftpd, celui-ci vérifie que le shell de l'utilisateur est valide avant d'autoriser la connexion.

Si par exemple l'utilisateur ne peut faire que du FTP, il a sûrement comme shell : /sbin/nologin. Si ce shell n'est pas déclaré comme valide dans /etc/shells, il ne pourra pas se connecter en FTP. Il suffit donc d'ajouter le shell /sbin/nologin dans la liste des shells valides : /etc/shells.

Autoriser uniquement le FTP et le SFTP (donc utilisation de vsftpd et sshd) : Dans /etc/passwd, l'utilisateur aura comme shell : /usr/libexec/openssh/sftp-server. Il faut aussi mettre le pseudo shell dans /etc/shells pour autoriser le FTP.

Exemple de configuration

# vsftpd run as a standalone service
listen=YES
nopriv_user=ftp
max_clients=200
max_per_ip=6
pam_service_name=vsftpd
idle_session_timeout=600
data_connection_timeout=120
accept_timeout=60
connect_timeout=60
ftpd_banner=Welcome to novalan private FTP service.
# PASSIVE MODE OPTIONS
# -> pasv ports (open them on the FW)
pasv_min_port=30000
pasv_max_port=30999
# -> disable IP control to authorise FXP
pasv_promiscuous=YES
# ACTIVE MODE OPTIONS
# -> PORT transfer on port 20
connect_from_port_20=YES
# USER OPTIONS
# -> disable anonymous
anonymous_enable=NO
# -> config file by username
user_config_dir=/etc/vsftpd_user_conf
# -> enable local user authentication
local_enable=YES
# -> enable write operation
write_enable=YES
# -> umask = 027
local_umask=007
# -> return local user time if possible
use_localtime=YES
# -> chroot local users except those in /etc/vsftpd.chroot_list
chroot_local_user=YES
chroot_list_enable=YES
# LOGGING OPTIONS
# -> up/dn logging
xferlog_enable=YES
# VIRTUAL USERS OPTIONS
# -> jail in an empty non writable directory
secure_chroot_dir=/var/run/vsftpd/empty
# TLS OPTIONS
rsa_cert_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
force_local_data_ssl=NO
force_local_logins_ssl=NO
debug_ssl=YES
# To make this service compatible with old ftp clients
require_ssl_reuse=NO