sigle.png
Ce site a 2 objectifs : faire une doc technique de mes TP et en faire profiter les autres...

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. Nous allons installer serveur vsFTPd, libpam-pwdfile, db4.8-util et openssl
  2. Nous allons créer un fichier de login pour tous les utilisateurs le service vsFTPd et on va le convertir au format "db"
  3. Nous allons créer les répertoires pour des utilisateurs virtuels et un répertoire partagés
  4. Nous allons modifier le fichier PAM
  5. Nous allons créer un certificat pour la service vsFTPd
  6. Nous allons Configurer vsFTPd
  7. Tester

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

utilisateur1
mdp1
utilisateur2
mdp2
utilisateur3
mdp3
utilisateurlocal
mdputilisateurlocal
etc....

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
	
Pour les utilisateurs locaux, crée un lien symbolique qui pointe dans leur répertoire principal.

ln -s /home/utilisateurlocal utilisateurlocal
On va attribuer le droit d’exécution, l'écriture et de lecture à tous ses répertoires qu'on vient de créer

chmod -R 755 utilisateur1
chmod -R 755 utilisateur2
chmod -R 755 utilisateur3
chmod -R 777 repertoir-commune
chmod -R 755 /home/utilisateurlocal/rep-com
Conseille :
Avant exécuté les commandes suivante fait une copie de l'original de votre fichier fstab
En tapant : cp /etc/fstab /etc/fstab.back

Nous indiquons au système le lien entre /var/vsftpd/repertoir-commune et /var/vsftpd/utilisateur/rep-com en rajoutant la ligne suivante dans le fichier /etc/fstab (pour chaque répertoire d’utilisateur).

Utilisateurs virtuelle

echo /var/vsftpd/repertoir-commune/	/var/vsftpd/utilisateurX/rep-com	auto	bind,defaults	0	0  >>  /etc/fstab  


Utilisateurs locaux

echo /var/vsftpd/repertoir-commune/	/home/utilisateurXlocaux/rep-com	auto	bind,defaults	0	0  >>  /etc/fstab  


Prochain redémarrage du serveur, les utilisateurs peuvent accéder au contenu du repertoir-commune à partir de
leurs /rep-com. Si vous voulez que les utilisateurs puissent accéder au repertoir-commune sans redémarrer le serveur
tapez les lignes suivent pour chaque utilisateur.

Utilisateurs virtuels

mount /var/vsftpd/utilisateurX/rep-com

Utilisateurs locaux

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)


Les clients qui supportent SSL avec mon configuration et que j'ai testé.
Sous Windows : Winscp
Paramétrage : Comme sur l’image

Sous Windows : Winscp

Sous Linux Debian : FileZilla.
Cliquez sur l’icône de serveur (Ouvrir le Gestionnaire de Sites) dans l’onglet General modifiez le Type de serveur
Paramétrage : Comme sur l’image

FileZilla