Very Secure FTP Daemon :
Installer un serveur vsFTPd sous l'OS Debian, avec des utilisateurs du serveur ou du domaine et des utilisateurs qui ne sont pas du domaine (utilisateurs virtuels)
C'est un serveur FTP léger, stable et sûr pour les systèmes d'exploitations LINUX.
La configuration qu'on va faire, consiste à empêché les utilisateurs (locale et ou virtuel) de sortir de leur répertoire personnel,
mais tout au moins ils sont un répertoire commun pour partager les documents qu'ils veulent.
Ils peuvent se connecter en FTP (en clair) ou en FTPS (chiffre avec SSL).
1.Installation
Passez en mode super utilisateur en tapant $sudo ou en root en tapant $su root.
Maintenant qu'on a des droit d'administrateur on peut commencer à installer.
apt-get install vsftpd apt-get install libpam-pwdfile apt-get install db4.8-util apt-get install openssl
Si vous avez installé ces 4 paquets, on peut continuer
2.Création d'un fichier de login
Nous commençons par la création d'un répertoire qui contiendra les fichiers login.txt et login.db
mkdir /etc/vsftpd
Création du fichier login.txt qui va contenir les logins et mot de passe des utilisateurs vsftpd
touch /etc/vsftpd/login.txt
Ex: Format du fichier login.txt
Création d'une base de données des utilisateurs virtuels et locaux
db4.8_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db chmod 600 /etc/vsftpd/login.db chmod 600 /etc/vsftpd/login.txt
3. Création des répertoires et du lien symbolique
Création du répertoire dans laquelle on va créer le répertoire des utilisateurs virtuelle
et nous allons nous placer dans ce répertoire
mkdir /var/vsftpd cd /var/vsftpd
Création des répertoires pour des utilisateurs virtuels et d'un répertoire partagés
mkdir utilisateur1 mkdir utilisateur2 mkdir utilisateur3 mkdir repertoir-commune mkdir utilisateur1/rep-com mkdir utilisateur2/rep-com mkdir utilisateur3/rep-com mkdir /home/utilisateurlocal/rep-com
ln -s /home/utilisateurlocal utilisateurlocal
chmod -R 755 utilisateur1 chmod -R 755 utilisateur2 chmod -R 755 utilisateur3 chmod -R 777 repertoir-commune chmod -R 755 /home/utilisateurlocal/rep-com
echo /var/vsftpd/repertoir-commune/ /var/vsftpd/utilisateurX/rep-com auto bind,defaults 0 0 >> /etc/fstab
echo /var/vsftpd/repertoir-commune/ /home/utilisateurXlocaux/rep-com auto bind,defaults 0 0 >> /etc/fstab
mount /var/vsftpd/utilisateurX/rep-com
mount /home/utilisateurXlocaux/rep-com
4.Modification du fichier PAM
Pour informer le module PAM, le chemin de notre fichier login.db Ouvrez le fichier /etc/pam.d/vsftpd à l'aide de votre éditeur de texte préféré Supprimer tout le contenu du fichier /etc/pam.d/vsftpd et ajouter les lignes suivantes :
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login account required /lib/security/pam_userdb.so db=/etc/vsftpd/login
5.Création du certificat SSL
Nous allons nous placer dans le répertoire /etc/ssl/certs
Pour sécuriser le service FTP on va générer un certificat SSL et une clé publique
Vous serez invité à répondre à plusieurs questions au sujet de votre entreprise,
etc., il n'y a pas vraiment d'importance ce que vous remplissez, sauf pour la question "Common Name (eg, YOUR name) []:"
il faut donner l'adresse IP de votre serveur
Ex:Common Name (eg, YOUR name) []:192.168.0.254
ou si vous êtes dans un domaine vous donnez FQDN de votre serveur
Ex:Common Name (eg, YOUR name) []:debian.mondomaine.lan
cd /etc/ssl/certs openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/certs/vsftpd.pem -out /etc/ssl/certs/vsftpd.pem chmod 600 /etc/ssl/certs/vsftpd.pem
6.Configuration le fichier vsftpd.conf
Ouvrez le fichier /etc/vsftpd.conf à l'aide de votre éditeur de texte préféré Supprimer tout le contenu du fichier /etc/vsftpd.conf et ajouter les lignes suivantes :
#############################Configuration_partie_d’utilisateurs_virtuelle#################################### # #Les utilisateurs virtuels utiliseront les mêmes privilèges que les utilisateurs locaux (dans leurs répertoire) virtual_use_local_privs=YES # #On définit le nom que le service PAM va utiliser:vsftpd pam_service_name=vsftpd # #on active les utilisateurs virtuels guest_enable=YES # #Jeton_de_l'utilisateur=son_nom user_sub_token=$USER # #On définit le répertoire de l’utilisateur avec son Jeton:son nom local_root=/var/vsftpd/$USER # #Cacher les identifiants de l'utilisateur hide_ids=YES ############################################ Configuration générale ########################################## # Nous voulons quele serveur fonctionne en mode standalone listen=YES #Pas de connexions en mode anonymous anonymous_enable=NO # # Les utilisateurs locaux peuvent se connecter. local_enable=YES # # On veut que les utilisateurs puissent remonter des fichiers sur le serveur. write_enable=YES # # On fixelemasque local a 022(les fichiers remontés auront des droits en755) local_umask=022 # # On interdit l’upload et la creation de repertoires anonyme anon_upload_enable=NO anon_mkdir_write_enable=NO # # Activate directory messages - messages given to remote users when they # go into a certain directory. dirmessage_enable=YES # # If enabled, vsftpd will display directory listings with the time # in your local time zone. The default is to display GMT. The # times returned by the MDTM FTP command are also affected by this # option. use_localtime=YES # # Activée journalisation des connexions xferlog_enable=YES xferlog_file=/var/log/vsftpd.log # # On verifie que la commande PORT provienne bien du port 20 de la machine cliente. connect_from_port_20=YES # # On declare les valeurs de timeout. Celles fournies pardefaut sont ok pour notre utilisation. idle_session_timeout=600 # data_connection_timeout=120 # # Par securite, on interdit la commande ABOR async_abor_enable=NO # # Les transferts en ASCII sont souvent source de confusion et # Attaque (Dos) via la commande Un gros fichier ascii_upload_enable=NO ascii_download_enable=NO # # Personnalise la bannière de l'accueille: #ftpd_banner=Bienvenue sur MON serveur FTP. # # Vous pouvez limiter les utilisateurs locaux à leurs répertoires personnels. chroot_local_user=YES # chroot_list_enable=NO # (default follows) #chroot_list_file=/etc/vsftpd.chroot_list # # # Debian customization # secure_chroot_dir=/var/run/vsftpd/empty # ################################################## Option SSL ############################################## # #ce qui est important ssl_enable=YES # require_ssl_reuse=NO # # choose what you like, if you accept anon-connections # you may want to enable this # allow_anon_ssl=YES # #forcer_même_les_donnees_locales_crypter # it's a matter of performance i guess force_local_data_ssl=NO # #forcer même les login locaux crypter force_local_logins_ssl=YES # #vous activez ssl... ssl_tlsv1=YES #choose what you like ssl_sslv2=YES #choose what you like ssl_sslv3=YES #Donner le chemin vers votre fichier *.PEM du certificat rsa_cert_file=/etc/ssl/certs/vsftpd.pem #Donner le chemin vers votre fichier du clé *.PEM contient à la fois la clé et certificat rsa_private_key_file=/etc/ssl/certs/vsftpd.pem
Redémarrez le processus vsFTPd pour qui il prendre en compte les nouveaux réglages du ficher de
configuration.
/etc/init.d/vsftpd restart
Ça y est !!! c'est fini vos clients peuvent se connecter à votre serveur à condition que vous leurs donnez leurs logins et mot de passe.
Si vous recevez un message genre "500 oops cannot read config file start" vérifier votre fichier de config il ne faut pas d'espace à la fin de ligne retour du chariot et pas d'espace aussi entre parametre=valeur.
7.Teste :
j'ai effectué le teste avec deux clients sous le système d’exploitation différents (Windows et Linux)