Nous allons nous pencher sur l'installation et la configuration d'un serveur FTP capable de gérer l'authentification LDAP.
Il s'agit de VSFTPd, qui est directement integré dans RHEL / CentOS 5.x. Ce tutoriel à été testé avec CentOS 5.3 / 5.4 et 5.5. Cependant si vous utilisez la version 5.3 ou antérieure, il va falloir manuellement mettre à jour le package vsftpd car la version fournie d'origine comporte un bug interdisant les connexions FTPS à partir de certains clients FTP come FileZilla.
Si vous souhaitez utiliser des connexions securisées par SSL, je vous conseille donc de désinstaller la version fournie de VSFTPd et d'en réinstaller une corrigée comme suit:
$ rpm -e $(rpm -q vsftpd) $ wget http://www.rpmseek.com/download/http://ftp-stud.fht-esslingen.de/pub/Mirrors/centos/5.3/updates/x86_64/RPMS/vsftpd-2.0.5-12.el5_3.1.x86_64.rpm?hl=com&nid=4103:592 $ rpm -ivh vsftpd*
sinon ou si vous disposez d'une version plus récente de CentOS / Redhat, alors vous pouvez simplement installer le serveur vsftpd avec la commande
$ yum install vsftp
Maintenant que notre serveur est installé, nous allons le configurer proprement.
Si vous possedez déjà un certificat SSL pour ce serveur, vous pouvez le réutiliser en le copiant. Exemple en reutilisant le certificat obtenu pour le serveur OpenLDAP:
$ mkdir /etc/pki/tls/servcert $ cp /root/ldapssl/servcert.key /etc/pki/tls/servcert/ $ cp /root/ldapssl/servcert.crt /etc/pki/tls/servcert/ $ cp /root/ldapssl/servcert-chain.crt /etc/pki/tls/servcert/
Sinon, veuillez consulter la section traitant des certificats SSL / TLS de l'article Le serveur ultime sous Redhat / CentOS 5.x : OpenLDAP, Samba, SSL / TLS, réplication et Webmin.
Rendez-vous dans le fichier /etc/vsftpd/vsftpd.conf
Voici un fichier de configuration commenté. Ajustez les valeurs comme vous le souhaitez.
# Config VSFTPD Badministrateur
# Fichier contenant la phrase de Bienvenue. Entrez un message dans le fichier message.txt
banner_file=/etc/vsftpd/message.txt# Messages de bienvenus par dossiers. Options YES / NO pour activer les messages personnalises par dossier
dirmessage_enable=NO
message_file=.message# Configurer vsftpd en standalone = YES, par xinetd = NO
# pour desactiver le serveur xinetd, tcp_wrappers=NO
listen=YES
tcp_wrappers=NO# Port d'ecoute du serveur (par défaut 21)
listen_port=21# masques par défaut pour utilisateur anonymes et locaux
anon_umask=077
local_umask=022# Utilisation anonyme (YES/NO)
anonymous_enable=NO# Autorisation d'upload anonyme (YES/NO)
anon_upload_enable=NO# Autorisation de creation de dossier anonyme (YES/NO)
anon_mkdir_write_enable=NO# Bande passante maximale pour les utilisateurs anonymes (en octets, 0 = illimite)
anon_max_rate=10485760# Vitesse upload défaut pour les utilisateurs locaux (en octets, 0 = illimite)
local_max_rate=0# Nombre d'utilisateurs maximums
max_clients=500# Nombre de connexions maximum simultanees par utilisateur
max_per_ip=4# Nombre d'essais de login avant fermeture de session
max_login_fails=3# Utilisateur anonyme par défaut
nopriv_user=ftp# Dossier anonyme par défaut
anon_root=/home/public# Mode actif ou passiv (ne pas oublier d'ouvir le parefeu en cas de mode actif port 21 et port 20 ou mode passif port 21 et ports passifs)
pasv_enable=YES
pasv_min_port=4000
pasv_max_port=4500# Journalisation
xferlog_enable=YES
xferlog_file=/var/log/vsftpd_xferlog# Module d'authentification (compatible LDAP)
pam_service_name=vsftpd# Liste d'utilisateurs n'ayant pas le droit de se logguer en FTP (YES)
# ou liste d'utilisateurs ayant le droit de se logguer en FTP (NO)
userlist_enable=YES# Fichier liste utilisateurs
userlist_file=/etc/vsftpd/user_list# Dossier eventuel contenant des configurations particulieres par utilisateur (utile pour affecter d'autres points chroot)
#user_config_dir=etc/vsftpd/userconf# Autorisation de connexion des utilisateurs locaux
local_enable=YES# Autorisation d'upload des utilisateurs locaux
write_enable=YES# Dossier sur lequel FTP va se placer dès qu'un login non anonyme a été effectué (si desactivée, alors la prochaine ligne de configuration sera appliquee)
local_root=/home/donnees# Enfermer (chrooter) les utilisateurs dans leurs dossiers home
chroot_local_user=YES# Liste eventuelle des utilisateurs a ne pas chrooter (si chroot_local_users=YES, sinon effet inverse)
chroot_list_enable=YES# Fichier de liste des utilisateurs a chrooter ou ne pas chrooter
chroot_list_file=/etc/vsftpd/chroot_list# Dossier vide n'appartenant pas à l'utilisateur FTP et ayant des droits 700 (afin de parquer le service FTP)
#secure_chroot_dir=/usr/share/empty# Liste des fichiers a cacher, utilise des jokers (wildcards)
hide_file={Connect.log,NTUSER.DAT,desktop.ini,ntuser.*.LOG}# Securite TLS (YES/NO)
ssl_enable=YES# Securite TLS pour les utilisateurs anonymes (YES/NO)
allow_anon_ssl=NO# Securite TLS obligatoire pour les connexions de données (YES/NO)
force_local_data_ssl=YES# Securite TLS obligatoire pour les connexions de login (YES/NO)
force_local_logins_ssl=YES# Versions du protocole TLS supportés (YES/NO)
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=YES# Certificat SSL (classique ou format chaine)
rsa_cert_file=/etc/pki/servcert/servcert-chain.crt# Cle privee du certificat SSL
rsa_private_key_file=/etc/pki/servcert/servcert.pem# Cacher les informations de propriéte des fichiers et les remplacer par l'utilisateur FTP (YES/NO)
hide_ids=YES# Delai d'attente apres une authentification reussie
delay_successful_login=0# Delai d'attente apres un echec d'authentification
delay_failed_login=10
Une fois ce fichier modifié à votre guise, il conviendra éventuellement de définir les autres fichiers comme par exemple la liste des configurations particulieres par utilisateur. Prennons l'exemple de l'utilisateur coffee que l'on souhaiterait chrooter dans le dossier /home/arabica plutôt que dans son dossier home.
Nous allons créer un fichier /etc/vsftpd/userconf/coffee contenant
local_root=/home/arabica
Bien, il ne nous reste plus qu'a lancer vsftpd avec la commande
$ service vsftp start
et tester son fonctionnement avec un client FTP. Si vous rencontrez des soucis, pensez à temporairement desactiver votre parefeu ou SELinux pour verifier si les problèmes ne viendraient pas d'une mauvaise configuration de ces services.
$ service iptables stop $ setenforce 0
Enfin, une fois terminé, il ne vous reste plus qu'a autoriser le démarrage automatique de votre serveur avec la commande
$ chkconfig --level 345 vsftpd on
Bon transferts.

Ajouter un commentaire