Compte rendu d`Activité Serveur FTP avec PROFTPD
Transcription
Compte rendu d`Activité Serveur FTP avec PROFTPD
Epreuve de Pratique des Techniques Informatiques Session 2004 Compte rendu d'Activité Fiche n°4 Nom et prénom : LESELLIER Luc Nature de l'activité Serveur FTP avec PROFTPD Contexte : Plusieurs utilisateurs aimeraient accéder via le réseau local et/ou Internet à un répertoire personnel et un répertoire public où ils stockeraient leurs données. Objectifs : Réaliser un serveur FTP et gérer les utilisateurs utilisant ce serveur. Compétences mises en œuvre pour la réalisation de cette activité C21/C22 Installer et configurer un micro-ordinateur / un réseau C23 Installer et configurer un dispositif de sécurité C31/C32 Assurer les fonctions de base de l’administration d’un réseau / fonctions d’exploitation Programmation Matériels : - 2 ordinateurs minimum - 1 commutateur Conditions de réalisations Logiciels : - Linux Fedora Core 1 noyau 2.4 - ProFTPd - Client FTP (IE, leechftp, …) Durée : 45 mn Autres contraintes et difficultés : La principale contrainte est la mise en place du serveur FTP derrière un pare feu, il faut déterminer deux types de fonctionnement FTP, actif et/ou passif. Une seconde contrainte est la mise en service d’un répertoire commun à tous les utilisateurs. Description de l'activité réalisée Situation initiale : aucun service FTP n’est actuellement disponible. Situation finale : le serveur FTP est accessible depuis le réseau local et/ou depuis Internet, le paramétrage du pare feu permet de limiter les accès au serveur FTP. Outils utilisés : l’éditeur vi, un client ftp quelconque, Netfilter pour le pare feu. Déroulement de l’activité : 1. Paramétrage du serveur FTP 2. Paramétrage de Netfilter 3. Gestion des comptes utilisateurs Page 1/4 Epreuve de Pratique des Techniques Informatiques Session 2004 1. Paramétrage du serveur FTP Le fichier de configuration de proftpd est situé ici /etc/proftpd.conf, voici son contenu : ServerName "Luc’s FTP" # Permet de choisir si le serveur est lance par xinetd ou de manière # autonome. ServerType standalone # Permet de cacher le nom et la version du serveur FTP. ServerIdent on "le serveur FTP est operationnel" DeferWelcome off MultilineRFC2228 on DefaultServer on AccessGrantMsg "Bonjour %u, authentification OK" # On affiche les liens symboliques ShowSymlinks on # Attention peu engendré des problème de sécurité. Cette directive active # le ftp bounce, souvent appelé FXP. Allowforeignaddress off # On empêche l’utilisateur de parcourir les dossiers en amont. # On l’enferme dans son répertoire utilisateur = chroot. DefaultRoot ~ # N'impose pas que l'utilisateur possède un shell (/bin/false) RequireValidShell off #Autorise de résumer ces download et upload. AllowRetrieveRestart on AllowStoreRestart on #Option de la commande LS, c’est l’obtention de la liste des dossiers. ListOptions "-l" #Definition des timeout TimeoutNoTransfer 600 TimeoutStalled 600 TimeoutIdle 240 # Evite de faire de rLookup inutile. IdentLookups off UseReverseDNS off # Définit le port de proftpd à 21, ce qui est le standard. Port 21 # C'est une bonne configuration par défaut pour les droits de fichiers. # L'utilisateur et le groupe ont tout les droits, et le reste du monde # peu seulement lire. Umask 022 # Définit l'utilisateur et le groupe par défaut de proftpd. User nobody Group nobody Page 2/4 Epreuve de Pratique des Techniques Informatiques Session 2004 # On interdit le login avec root, # Et on demande un login et un mot de passe à chaque connexion. RootLogin off LoginPasswordPrompt on # Nombre maximum de connexions simultanées (utilisateurs différents) MaxInstances 5 # La configuration globale du site FTP <Global> AllowOverwrite yes <Limit ALL SITE_CHMOD> AllowAll </Limit> </Global> 2. Paramétrage de Netfilter a. Le serveur FTP actif Le serveur FTP attend la connexion des clients sur le port TCP 21, puis quand il y a transfert de données c’est le serveur qui établit une nouvelle connexion avec son port TCP 20 vers le client. Le principal inconvénient est que les clients situés derrière un pare feu, n’autorisant pas les connexions entrantes de port source 20, ne pourront pas recevoir des données du serveur. Le serveur est actif car il établit la seconde connexion vers les clients. b. Le serveur FTP passif Le serveur FTP attend la connexion des clients sur le port TCP 21, quand il y a transfert, le serveur attend une deuxième connexion du client, puis ils communiquent tous les deux sur des ports « hauts », c'est-à-dire supérieurs à 1024. Le serveur est donc passif car il n’établit pas la seconde connexion, il attend que le client l’établisse. c. Script pour Netfilter Modprobe ip_nat_ftp Modprobe ip_conntrack_ftp Iptables –A INPUT –I eth0 –p tcp --dport 21 –m state --state NEW,RELATED,ESTABLISHED -j ACCEPT Iptables –A OUTPUT –I eth0 –p tcp --sport 21 –m state --state RELATED,ESTABLISHED –j ACCEPT Iptables –A INPUT –I eth0 –p tcp --dport 20 –m state --state RELATED,ESTABLISHED –j ACCEPT Iptables –A OUTPUT –I eth0 –p tcp --sport 20 –m state - -state RELATED,ESTABLISHED -j ACCEPT Iptables –A INPUT –I eth0 –p tcp --sport 1024: --dport 1024: -m state --state RELATED,ESTABLISHED –j ACCEPT Iptables –A OUTPUT –I eth0 –p tcp --sport 1024: --dport 1024: -m state --state RELATED,ESTABLISHED –j ACCEPT 3. Gestion des comptes utilisateurs a. Création du groupe ftpuser, du répertoire /home/public, du fichier /etc/repftp.sh root@fedora# root@fedora# root@fedora# root@fedora# groupadd ftpuser mkdir /home/public chown -R root:ftpuser /home/public chmod +770 /home/public Page 3/4 \ \ \ \ \ \ Epreuve de Pratique des Techniques Informatiques Session 2004 root@fedora# vi /etc/repftp.sh #!/bin/bash #script permettant de monter le repertoire public pour chaque utilisateur sauvegarder le fichier (avec [echap] :x) root@fedora# chmod +x /etc/repftp.sh On inclut ce fichier dans le script /etc/rc.local, comme cela à chaque démarrage de la machine le script sera exécuté ( vi /etc/rc.local/ …). b. Script de création des utilisateurs (extrait) #on cree l'utilisateur useradd -g ftpuser $login -s /bin/false>/dev/null echo $mdp | (passwd --stdin $login)>/dev/null #on cree le dossier public dans son repertoire personnel #on lui attribue l'appartenance et des droits mkdir /home/$login/public chown -R $login:ftpuser /home/$login/public chmod +770 /home/$login/public #on monte le repertoire public #on ajoute la ligne permettant de monter le repertoire public dans/etc/repftp.sh mount --bind /home/public /home/$login/public echo "mount --bind /home/public /home/$login/public">>/etc/repftp.sh c. Script de suppression des utilisateurs (extrait) umount /home/$login/public/ result=$(grep -i $login /etc/repftp.sh) grep -v "$result" /etc/repftp.sh > /tmp/repftp_tmp.sh mv /tmp/repftp_tmp.sh /etc/repftp.sh chmod +x /etc/repftp.sh passwd -d $user>/dev/null userdel -r $user>/dev/null d. Fonctionnement global Le serveur FTP « enferme » l’utilisateur dans son répertoire personnel (technique de CHROOT), il lui est donc impossible d’accéder à d’autres ressources situées ailleurs que dans son répertoire. D’ailleurs c’est une mesure de sécurité l’utilisateur ne pourra pas « se balader » dans la racine du serveur. La commande mount --bind permet alors de contourner ce CHROOT en associant un répertoire « parent » à plusieurs répertoires situés à des endroits différents du disque. Ainsi tous les utilisateurs en cliquant sur le répertoire /home/user/public arriveront finalement dans le répertoire /home/public, pourtant on bénéficie toujours du CHROOT. Analyse des résultats obtenus Objectif atteint : Les utilisateurs se connectent sur le serveur FTP et peuvent y déposer leurs données, de plus disposant d’un répertoire public ils peuvent aussi s’échanger des fichiers rapidement et simplement. Bilan de l'activité : La sécurité des mots de passe n’a pas été abordée, en effet les mots de passe circulent en clair sur le réseau et n’importe quelle capture de trame révèle les identifiants et les mots de passe. Sécuriser l’authentification au serveur FTP avec SSL (certificats) serait une bonne solution, mais cela ralentirait les performances du serveur. Page 4/4