Serveur ftp sécurisé avec comptes virtuels: Vsftpd
vsFTPd(Very Secure FTP) est un serveur FTP sous license GPL pour les systèmes UNIX.
A l’origine, privilégiant une architecture modulaire, dans le plus pur esprit d’UNIX, vsFTPd s’appuiyait sur des composants externes tels que PAM ou xinetd. Maintenant, il tourne indépendement, en mode dit mode “standalone”.
Ces caractéristiques remarquables font de vsFTPd un serveur FTP sécurisé, performant et stable, qui fait l’unanimité chez les grands noms du libre.
Nous allons travailler avec une base Linux Debian:
Installation
Commençon donc par installer vsftpd.
apt-get install vsftpd
Pour faire moderne, on va l’utiliser en mode “standalone” et restreindre l’accès(grâce à PAM) aux utilisateurs virtuels d’une base de donnée.
L’avantage est que nous n’avons pas à créer de comptes unix pour que les utilisateurs puissent se connecter au ftp, mais disposeront d’un compte virtuel dans lequel ils seront “chrootés”(emprisonnés).
Configuration
Créons le dossier /etc/vsftpd
mkdir /etc/vsftpd
Copions le fichier /etc/vsftpd.conf dans /etc/vsftpd en le renommant:
cp /etc/vsftpd.conf /etc/vsftpd/vsftpd.conf.old
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.default.old
Création de la base de données utilisateurs
Nous allons utiliser le module d’authentification PAM qui utilise une base de données au format “BerkleyDB”.
Installons la librairie adequate:
apt-get install libdb3-util
Créons maintenant la base de données qui contient les utilisateurs virtuels:
Créons un fichier texte , par exemple users.txt avec la syntaxe suivant;
utilisateur1
motdepasse1
utilisateur2
motdepasse2
puis convertissons-le au format “db”:
db3_load -T -t hash -f users.txt /etc/vsftpd/users.db
Nous disposons donc à présent d’une base de données au format “db”: /etc/vsftpd/users.db
Changeons les droits pour plus de sécurité:
chmod 700 /etc/vsftpd/users.db
Créons maintenant un fichier ‘vsftpd.pam’ qui dira à PAM d’utiliser notre base de données pour authentifier les utilisateurs:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/users
account required /lib/security/pam_userdb.so db=/etc/vsftpd/users
Copions maintenant ce fichier dans le dossier de configuration de PAM:
cp vsftpd.pam /etc/pam.d/vsftpd
PAM peut désormais assurer l’authentification des utilisateurs virtuels.
Tous les utilisateurs virtuels de notre base de données vont en réalité être représenté par UN même utilisateur(réel cette fois ci) système: l’utilisateur ‘virtual’.
Ajoutons cet utilisateur à notre système, en définissant son groupe primaire à ‘ftp’(groupe que l’on va créer) et en le liant à son futur home ~virtual/, qu’il ne restera alors plus qu’à créer:
groupadd ftp
useradd -g ftp -d /home/ftp/virtual/ virtual
Créons maintenant physiquement le répertoire ~virtual/ en prenant soin de lui procurer des permissions correctes:
le répertoire ne doit pas lui appartenir!
il ne doit pas pouvoir y écrire!(pour cet usage, on créera, un peu plus tard, un sous répertoire dédié: ~virtual/upload/).
mkdir -p /home/ftp/virtual
chown root.ftp ~virtual/
chmod 2750 ~virtual/
Notre utilisateur ‘virtual’ du groupe ‘ftp’ est donc sous /home/ftp/virtual/
Créons enfin notre fichier de configuration de vsftpd dans /etc:
listen=YES
# On interdit les connexions anonymes
anonymous_enable=NO
local_enable=YES
# On interdit l'écriture
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
# 'guest_enable' active les utilisateurs virtuels!
# 'guest_username' fait correspondre tous les utilisateurs virtuels à
# l'utilisateur 'virtual' que nous avons défini plus haut, et au home
# correspondant: '~virtual/'.
guest_enable=YES
guest_username=virtual
# On veut chroot les utilisateurs virtuels
chroot_local_user=YES
# On défini le nombre maximum de sessions à 200
max_clients=200
# On défini le nombre maximum de sessions par IP à 4
max_per_ip=4
#secure_chroot_dir=/var/run/vsftpd
#
# This string is the name of the PAM service vsftpd will use.
pam_service_name=vsftpd
#
# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
Relançons le serveur:
/etc/init.d/vsftpd restart
Tags :debian, linux, open source, virtualisation, vsftpd





