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

Documents pareils