SISR3 · « vsFTPd (Very Secure FTP Daemon), créé en 2000, est un serveur FTP qui ... d'une...

18
FAMEL Yoan 07/12/2015 PAYET Yoann BTS SIO – SISR SISR3 Exploitation des services Mise en œuvre d'une architecture FTP sécurisée Table des matières Introduction.......................................................................................................................................... 2 Organisation et plan d'adressage...........................................................................................................3 Machine virtuelle serveur..................................................................................................................... 4 Paramétrage du serveur...................................................................................................................4 Gestion des utilisateurs................................................................................................................... 9 Machine virtuelle client...................................................................................................................... 11 Compléments – les utilisateurs virtuels.............................................................................................. 13 Gestion individuelle...................................................................................................................... 13 1 / 18

Transcript of SISR3 · « vsFTPd (Very Secure FTP Daemon), créé en 2000, est un serveur FTP qui ... d'une...

FAMEL Yoan 07/12/2015PAYET YoannBTS SIO – SISR

SISR3Exploitation des services

Mise en œuvre d'une architecture FTP sécurisée

Table des matièresIntroduction..........................................................................................................................................2Organisation et plan d'adressage...........................................................................................................3Machine virtuelle serveur.....................................................................................................................4

Paramétrage du serveur...................................................................................................................4 Gestion des utilisateurs...................................................................................................................9

Machine virtuelle client......................................................................................................................11Compléments – les utilisateurs virtuels..............................................................................................13

Gestion individuelle......................................................................................................................13

1 / 18

Introduction

Dans ce TP nous allons mettre en place une architecture FTP permettant à l'utilisateur de sécuriser le partage de ses fichiers, en effet, le serveur FTP que nous allons mettre en œuvre a été conçu avec la problématique d'une sécurité maximale, nous retiendrons qu'aucune failles majeurs n'a été décelé sur ce service en comparaison avec ses concurrents (ProFTPd, PureFTPd, etc).

Qu'est ce que VsFTPd ?

« vsFTPd (Very Secure FTP Daemon), créé en 2000, est un serveur FTP qui mise beaucoup sur la sécurité développé par Chris Evans, chargé de la sécurité de Google Chrome. Il est l'un des premiers logiciels serveurs à mettre en œuvre la séparation des privilèges, minimisant ainsi les risques de piratage. »

Source : https://fr.wikipedia.org/wiki/VsFTPd

Les principaux avantages de ce service, est qu'il est rapide et simple à installer, de plus, il n'utilise pas énormément les ressources de la machine sur laquelle il est installé.

Nous préciserons également que seul une utilisation du service via une connexion sécurisée SSH sur internet permettra de sécuriser les échanges entre les utilisateur et ce service, le protocole FTP n'étant pas sûr, il est préférable de l'utiliser dans une architecture locale, dans le cas contraire les mots de passes transiteraient en clair sur le réseau, et l'utilisation d'un soft tel que Wireshark pourrait les déceler.

2 / 18

Organisation et plan d'adressage

Nous préciserons que pour les besoins de ce TP, nous aurons besoin de mettre en place une infrastructure comportant à la fois une machine virtuelle faisant office de serveur FTP et tournant sous Debian 7.X, d'une station de travail sous Linux,, d'une station de travail Linux,, d'une station de travail sous Windows 7 et du logiciel client FTP FileZilla.

Voici donc les différents adressages de nos machines de l'infrastructure mise en place :

Adresse IP Masque de sous-réseau

Serveur VsFTPd 172.16.61.1 255.255.0.0

Client Windows 7 172.16.5.35 255.255.0.0

3 / 18

Machine virtuelle serveur

Paramétrage du serveur

Nous allons à présent sur notre serveur utiliser le système de package de Debian afin de gagner en efficacité. Nous nous loggons en tant que root, et nous vérifions notre bon accès à internet.

Puis nous renommerons dans un premier temps notre serveur (créé au préalable sur ESXi) en allant dans les fichier appropriés :

4 / 18

Nous installons ensuite le service VsFTPd en effectuant la commande suivante :

Notre serveur FTP étant démarré et prêt à une future utilisation, nous vérifions que l'utilisateur système et nommé ftp à bien été créé suite à l'installation du service (figure suivante) :

5 / 18

Nous vérifierons ensuite également que cet utilisateur appartient bien au groupe système et nommé ftp :

Comme à chaque fois, nous ferons une copie au préalable du fichier de configuration original afin d'apporter une sécurité supplémentaire en cas de problème, nous ferons donc la commande suivante :

cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

Une fois le service installé, nous complétons ou remplaçons les éléments du fichier de configuration du service FTP avec les éléments qui suivent :

# Nous voulons que le serveur fonctionne de manière permanente.listen=YES

# Port d'écoutelisten_port=21

# On ne veut pas de connexions en mode anonymous.anonymous enable=NO

#On ne veut pas que les utilisateurs locaux puissent se connecter.# C'est indispensable pour que les utilisateurs virtuels (mappés sur un utilisateur local) puissent se connecter aussi.local_enable=YES

# Les utilisateurs peuvent remonter des fichiers sur le serveur.

6 / 18

write enable=YES

# Le masque local est à 022 (les fichiers auront des droits 755).local umask=022

# On interdit l'upload anonyme.anon upload enable=NO

# On interdit la création de répertoires pour anonymous.anon mkdir write enable=NO

# Les heures d'enregistrement des fichiers seront affichées# à l'heure locale.use localtime=YES

# Les actions des utilisateurs doivent générées des logs.xferlog_enable=YES

# Les logs seront enregistrés dans le fichier suivant.xferlog file=/var/log/vsftpd.log

# On déclare les valeurs de timeout :# ============================================

# Durée en secondes d'inactivité avant déconnexion de la session.idle_session_timeout=300

# Durée en secondes d'inactivité avant déconnexion de données.data_connection_timeout=120

# ============================================

# Débit maximum du serveur en bytes/seconde (0 = débit illimité).local_max_rate=0

# Personnalisation de la bannière (X pour notre n° de groupe).ftpd banner=Bienvenu sur le serveur FTP de l'entreprise (SIO groupe 4-YY)

# On veut limiter les utilisateurs à leur répertoire personnel.chroot local user=YES

# Fichier des utilisateurs.userlist file=/etc/vsftpd/user list

# Chargement de la liste userlist_fileuserlist enable=YES

# On refuse les utilisateurs de la liste.userlist_deny=YES

# On autorise les utilisateurs virtuels.virtual use local privs=YES

# On fait en sorte que les utilisateurs "guest" (non-anonymes) soient# mappés sur le compte local "ftp"guest_enable=YESguest_username=ftp

# On active les droits spécifiques par utilisateuruser_config_dir=/etc/vsftpd/vsftpd_user_conf

7 / 18

#Nom du service d'authentification utilisé par le serveur.pam_service_name=vsftpd

Une fois notre fichier de configuration modifié, nous enregistrons et relançons le service.

Nous créons ensuite le fichier contenant les utilisateurs qui ne peuvent pas se connecter au service FTP, ces seront les utilisateurs refusés (aucun mot de passes ne leur sera demandé).

On créer donc au préalable le répertoire /etc/vsftpd :

nano /etc/vsftpd

Puis nous y insérons un utilisateur (John pour cet exemple) :

Les utilisateurs auront maintenant accès à leurs répertoires personnels via un outil FTP client et leurs actions seront enregistrées dans un fichier de log dans le fichier /var/log/vsftpd.log

Nous ouvrirons donc ce fichier dans un terminal en arrière plan afin d'obtenir en temps réel les actions effectuées par les utilisateurs.

tail -f /var/log/vsftpd.log

8 / 18

Gestion des utilisateurs

Nous créons donc désormais deux utilisateurs que nous appellerons « Pierre » et « John ».

Afin de limiter l'accès aux commandes systèmes aux utilisateurs et éviter tout problèmes sur notre serveur nous leur fixerons le shell /bin/ftponly :

Nous passerons les différents renseignements demandés.

9 / 18

Nous ajouterons le shell utilisateur le shell utilisateur en le liant au shell de base avec les commandes qui suivent :

Puis nous vérifions le shell des utilisateurs :

Nous définirons ensuite les droits d'accès au répertoire personnel de chaque utilisateur :

10 / 18

Machine virtuelle client

Nous allons dorénavant tenter une connexion avec l'utilisateur pierre via un utilitaire FTP (nous utiliserons dans notre cas FileZilla sous Windows), de cette façon le client pourra se connecter au serveur et accédera à ses ressources personnelles uniquement.

Nous installons donc le client en allant sur le site officiel :

Puis nous testons la connexion à l'utilitaire avec un utilisateur, ici Pierre pour cela nous rentrons donc son login et son mot de passe précédemment configuré :

11 / 18

Grâce au tail nous constatons ensuite la bonne connexion en temps réel depuis notre serveur :

Une fois connecté sur le compte utilisateur nous constatons que nous pouvons créer des ressources depuis notre serveur et que ces dernières apparaissent telque le répertoire ci dessous :

Cependant, selon notre configuration John ne peut se connecter au serveur ftp en fonction de ses droits d'accès :

12 / 18

Compléments – les utilisateurs virtuels

Gestion individuelle

Nous allons nous concentrer sur la création d'utilisateurs virtuels, il nous va donc falloir créer un répertoire pour chaque utilisateur un répertoire portant son nom dans le répertoire de la directive user_config_dir comme suit (la ressource /var/ftp/ doit avoir été créée au préalable) :

/etc/vsftpd/vsftpd_user_conf/nom_utilisateur

Ici la ressource /var/ftp2/ doit avoir été créée au préalable :

Nous allons maintenant la base contenant nos utilisateurs virtuels, pour cela il est possible de s'y prendre de deux façons, soit par fichier texte (ce que nous ferons) ou bien de mettre en œuvre une base de données).

13 / 18

Concentrons nous donc plus particulièrement sur le format texte. Nous créons donc un fichier simple comprenant les informations de nos utilisateurs, soit leurlogin et leur mot de passe ce fichier se nommera login.txt :

En voici donc sa configuration :

Nous installerons ensuite une commande shell de façon à transformer ce fichieren un format db, soit un fichier comprenant un mot par ligne (login puis mot depasse et ainsi de suite…). Pour cela nous aurons besoin de générer ce fichier à l'aide d'une extension à partir du fichier de comptes.

14 / 18

Nous installons donc dans un premier temps l'extension nécessaire :

Puis, depuis le dossier /etc/vsftpd/ nous saisissons ce qui suit en vérifiant la présence des deux fichiers créés :

Nous remarquons en plus de cela que pour améliorer la sécurité nous avons réduit les droits sur les fichiers utilisateurs.

Enfin, nous redémarrons le service :

15 / 18

Nous retiendrons qu'un système Linux demandera systématiquement pour identifier un utilisateur le login et le mot de passe des utilisateurs.

Cela se nomme la PAM.

Qu'est ce que la PAM ?

« Tous les systèmes basés sur Unix possèdent un système d'authentification reposant surles mots de passe. A partir de 1995, la bibliothèque PAM a été créée et a fournie une API pour les services relevant de l'authentification permettant à un administrateur système de “jouer” avec l'authentification sur le système à l'aide de modules. »

Nous allons voir comment, à l'aide de Linux-PAM, améliorer l'authentification des utilisateurs sur notre système. L'avantage de la PAM est que toutes ces authentifications peuvent être configurer en fichier de configuration.

Nous vérifions donc la présence du fichier /etc/pam.d/vsftpd :

Nous y avons commenté ici les lignes déjà présentes et ajouté les deux dernières précisant le chemin d'accès au fichier de log des utilisateurs du serveur FTP.

Nous relançons une fois de plus le service.

16 / 18

Gestion personnalisée

Dans des configuration orientées web, il arrive souvent que les dossiers que nous pointons se trouvent ailleurs dans l'arborescence, imaginons donc que nous souhaitons apporter quelques modifications.

Nous installons dans un premier temps le package suivant :

Nous ajoutons ou modifions ensuite les lignes suivantes dans notre fichier :

virtual_use_local_privs=YESguest_enable=NOuser_sub_token=$USERloacal_root=/var/www/$USERhide_ids=YES

Puis nous redémarrons le service.

17 / 18

Conclusion

Nous avons donc pu constater qu'il est en effet possible de déterminer et sécuriser des droits d'accès sur un serveur de partage de fichiers, de cette manière il est possible dans un cadre professionnel de protéger certaines information des personnes n'étant pas habilitées à les consulter, ce qui est un avantage considérable dans la continuité du système d'information et de son efficience notamment en termes de sécurité.

18 / 18