[go: up one dir, main page]

0% ont trouvé ce document utile (0 vote)
132 vues34 pages

FTP Sous Linux-V2 - Lasfar Salim

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1/ 34

FTP sous Linux

LASFAR Salim
File Transfer Protocol (protocole de transfert de fichiers),
ou FTP, est un protocole de communication destin
l'change informatique de fichiers sur un rseau TCP/IP

LP-R2SI:
A d mi n is tr at i o n de s
r s e au x e t s c ur it
s o u s L i n ux .

Encadr Par : Mr M.EL KIRAM

Serveur FTP vsFTPd


Introduction :
Dans un rseau, le transfert de fichiers dun ordinateur un autre se pratique
couramment. Bien quil existe plusieurs protocoles de transfert bass sur
TCP/IP, ftp (File Transfert Protocol) est certainement le plus utilis.
Il existe de nombreux serveurs ftp, dont les plus connus sont wu-ftp et proftp.
Malheureusement, ces logiciels sont de vritables trous de scurit.
La distribution Red Hat Linux (Fedora) inclut maintenant le serveur vsftp
(Very Secure File Transfert Protocol deamon). Ce serveur ftp est reconnu
comme tant un des plus scuritaires.
Ce document dcrit donc la configuration du service ftp avec vsftp sur un
serveur Centos 6.3 Linux.

Protocole ftp :
Le protocole ftp permet de transfrer des fichiers entre ordinateurs. Les deux
ports suivant sont utiliss par ftp:
21 tcp (canal de contrle) : toutes les commandes changes par le serveur et le

client
ftp sont transmise.

20 tcp (canal de donnes) : cest via ce port que les donnes sont changes

entre le serveur et le client.

Ftp peut fonctionner en mode actif ou passif. Dans le premier cas, le client
contacte le serveur sur le port 21, et celui-ci transfert les donnes sur le port 20.
Dans le mode passif, le client initie la connexion sur le port 21 et le serveur
retourne les donnes sur un port plus grand 1024.

Utilisation du client ftp :


Tout comme telnet, FTP peut tre lanc en mode commande ou en mode saisie.
Aprs tablissement de la connexion, il ny a pas de diffrence entre les deux
modes. Ces diffrences ne sont visibles quau dmarrage du programme, car lun
des modes spcifie lordinateur hte, alors que lautre mode ntablit la
connexion qu lexcution de la commande open.
Lappel du client ftp est ralis comme suit :
ftp [-v] [-d] [-i] [-n] [-g] [host]

Les paramtres de dmarrage remplissent les fonctions suivantes :

Si vous dmarrez le programme FTP sans indiquer le nom de lordinateur hte,


linvite FTP est affiche. En tapant la commande ? , le programme affiche la
liste des commandes disponibles. Voici la liste des commandes :

Installer un serveur vsftpd :

Le serveur vsftp est souvent install automatiquement lors de linstallation de


Centos Linux.
Pour vrifier sa prsence il suffit de taper la commande suivante :
rpm -qa | grep vsftpd

si non on tape la commande :


yum groupinstall FTP Server

Configurer le service ftp :


Aprs linstallation de vsftp une configuration de base est active. Voici la liste
des fichiers impliqus dans le paramtrage de vsftp :

/etc/services
/etc/xinetd.d./ftp
/etc/vsftpd.banned_emails
/etc/vsftpd.chroot_list
/etc/vsftpd/vsftpd.conf

Le fichier /etc/services :

Le fichier /etc/services dcrit les services TCP/IP disponibles sur un serveurs


Linux. Les lignes concernant le service ftp sont les suivantes :
ftp-data 20/tcp
ftp 21/tcp

Ces deux lignes dfinissent les ports utiliss pour les donnes et les commandes
par le service ftp. Les valeurs de ces ports sont dfinies officiellement et ne
doivent pas tre modifies.

Le fichier /etc/xinetd.d/ftp
Le dmon vsftpd peut dmarrer partir de xinetd. Voici un exemple de
configuration de xinetd :
service ftp
{
socket_type = stream
wait = no
user = root
server = /usr/local/sbin/vsftpd
server_args =
log_on_success += DURATION USERID
log_on_failure += USERID
nice = 10
disable = no
}

Linstruction nice est importante puisquelle permet de rguler la bande


passante utilise. Vsftp peut aussi tre dmarr en mode autonome laide de la
commande :
service vsftpd start

Le fichier /etc/vsftpd.conf :
Voici un exemple simple de fichier vsftpd.conf :
# connexion en tant quanonyme interdite
anonymous_enable=NO
# connexion pour les utilisateurs locaux auoriss
local_enable=YES
_
# criture interdite
write_enable=NO
# Upoad pour anonyme interdit
anon_upload_enable=NO
# cration de rpertoire pour les anonymes interdit
anon_mkdir_write_enable=NO
# criture de fichier pour anonyme interdit
anon_other_write_enable=NO
# enferme lutilisateur dans le rpertoire ftp (chroot)
chroot_local_user=YES
# nombre de connexions maximales autorises par une mme adresse IP
per_source = 5
# interdiction de se connecter au ftp partir de cette adresse
no_access = 192.168.1.3
# Rend possible la connexion dutilisateurs virtuels
guest_enable=YES
# souhaitable, vu que la connexion anonyme est refuse
guest_username=virtual
# cette option permet de limiter laccs des ports
pasv_min_port=30000
# disponibles, utile derrire un firewall
pasv_max_port=30999
# enregistrement des logs...
xferlog_enable=YES

Crer un site ftp anonyme


Un site ftp anonyme est un site qui permet des usagers qui ne possdent pas
de compte usager sur un serveur dchanger des fichiers. La connexion un site
ftp anonyme utilise comme authentification le nom dusager "anonymous" et
comme mot de passe une adresse e-mail. Une fois connects les utilisateurs
anonymes naccdent que le rpertoire /var/ftp. Voici un exemple de
configuration pour un site ftp anonyme:
# Permettre la connexion des usagers anonymes
anonymous_enable=YES
# Permettre aux usagers anonymes de tlcharger des fichiers.
# Loption write_anable doit aussi tre activ.
anon_upload_enable=YES
# Permettre aux usagers anonymes la cration de rpertoire
anon_mkdir_write_enable=NO
# Permettre aux usagers anonymes lcriture de fichier
anon_other_write_enable=NO
# Rpertoire pour les usagers anonymes (Par dfaut: /var/ftp)
anon_root = /var/ftp

Mis en place dun serveur vsFTPd


Installation :

Configuration de base :
La configuration de VsFTPd est centralise dans un seul et mme
fichier /etc/vsftpd.conf. Choisissez votre diteur de texte favori (en mode super
utilisateur) et appliquez les modifications suivantes en fonction du mode de
fonctionnement de VsFTPd.
Vous pouvez personnaliser le texte de connexion au serveur :

Pour empcher les utilisateurs anonymes de se connecter au serveur :


anonymous_enable=NO

Pour permettre vos utilisateurs locaux (ceux qui ont un compte sur la
machine) de se connecter au serveur et d'crire.
local_enable=YES
write_enable=YES
local_umask=022

NB : par fois on a le problme avec SElinux :


Security-Enhanced Linux, abrg SELinux, est un Linux security module (LS M), qui permet de
dfinir une politique de cont rle d'accs obligatoire aux lments d'un systme bas sur Linux.
Son architecture dissocie l'application de la politique d'accs et sa dfinition. Il permet notamment de
classer les applications d'un systme en diffrents groupes, avec des niveaux d'accs plus fins. Il
permet aussi d'attribuer un niveau de confidentialit pour l'accs des objets systmes, comme
des descripteurs de fichiers, selon un modle de scurit multiniveau (MLS pour Multi level Securit y).
SELinux utilise le modle Bell LaPadula complt par le mcanisme Type enforcement de contrle de
l'intgrit, dvelopp par SCC. Il s'agit d'un logiciel libre, certaines parties tant sous licences GNU
GPL et BSD1.

Extrait de http://fr.wikipedia.org/wiki/SELinux
Donc il faut changer la politique disabled temporairement avec la
commande :

Ou bien permanant :

Il faut laisser passer le FTP pas le iptables (Firewall) :

Rsultat :

On bien on le dsactive totalement :

On Install un client ftp pour tester notre serveur localement :

Ou bien on test par le navigateur :

Vous pouvez emprisonner certains utilisateurs dans leur dossier


personnel afin qu'il ne puissent pas naviguer dans le systme de
fichier(chroot un utilisateur )
Un rpertoire ddi la configuration de /etc/vsftpd et cr le fichier liste
chroot_list qui doit obligatoirement porter ce nom :

Les identifiants des utilisateurs concerns doivent tre renseigns


dans /etc/vsftpd/chroot.list sous la forme d'une simple liste:
utilisateur_1
utilisateur_2
...

Et on crit dedans les noms dutilisateurs quon veut chroot :

Il faut ensuite modifier la configuration gnrale (/etc/vsftpd.conf) et ajouter ces


lignes:
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot.list

Utilisateur salim queon a dj chroot (il est emprisonn dans son dossier
personnel):

Utilisateur lasfar queon a pas chroot (il peut se dplacer dans les fichiers
systme):

Pour empcher les utilisateurs de se connecter on a joute leur identifiant au


fichier /etc/vsftpd/user_list :

On empche les utilisateurs de se connecter en mode Root par dfaut.

Virtuelhost par IP :
On cre dabord une interface virtuelle :

Et on peut se connecter maintenant avec deux adresses IP notre serveur


192.168.1.10 et 192.168.1.1

vsFTPd et SSL:
le principal dfaut du protocole ftp est que les couples nom d'utilisateur / mot
de passe transitent en clair sur le rseau
Mais il est possible de mettre une couche supplmentaire, SSL pour chiffrer les
changes d'authentification et/ou de donnes
Je vous invite lire le fichier /usr/share/doc/vsftpd/README.ssl qui vient
avec vsftpd. Pour les mises en garde de scurit.
Cration du certificat :
(Il vous faut installer le paquet openssl )
sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -out
/etc/vsftpd/vsftpd.crt -keyout /etc/vsftpd/vsftpd.key

Openssl va vous poser quelques questions, la plus critique est celle ci :


Common Name (eg, YOUR name) []:

Il faut crire le nom ou l'ip que les clients utiliseront. Il est possible de faire un
certificat sign par sa propre autorit de certification et donc gnrer des
certificats valides, une fois que vos clients ont reconnu votre autorit de
certification.
Un certificat (vsftpd.crt) ainsi qu'une cl prive (vsftpd.key) ont t gnrs
dans le dossier /etc/ssl/private/. Scurisons-les :
sudo chown root:root /etc/vsftpd/vsftpd.*
sudo chmod 600 /etc/vsftpd/vsftpd.*

Configuration de vsftpd.conf :
la fin de votre fichier /etc/vsftpd.conf :
# Options for SSL
# encrypted connections.
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=NO
force_local_logins_ssl=YES
# require_ssl_reuse=NO # Certains clients FTP ncessitent cette ligne
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES
rsa_cert_file=/etc/vsftpd/vsftpd.crt
rsa_private_key_file=/etc/vsftpd/vsftpd.key

Devrait bien se passer :


sudo service vsftpd reload

On test :

vsFTP et SSL en IPV6 :


Configuration dinterface serveur:

Configuration dinterface Client:

On active lcoute IPV6 et on IPV4 mais on met listen =NO pour


la premier on peut pas utiliser les deux a la fois :

NB : par fois on est oblig de laisser passer le FTP par le firewall On bien on
le dsactive totalement le firewall de IPV6 (ip6tables) :

On test sous Dos :

Ou bien sous un client FTP (FTP voyager) :

Serveur FTP proFTPd


Introduction
Proftpd est srement l'un des meilleurs serveurs FTP disponibles. Il vous offrira
normment de possibilits mais n'est pas facile matriser pour un dbutant,
donc pour utiliser la majorit des fonctions de proftpd sans trop de difficult
utilisez l'interface graphique gproftpd

Installation
Pour installer le package, rien de plus simple, vrifiez que vos dpts
Universel sont bien activs puis installez le paquet proftpd.
A la question Lancer ProFTPd partir d'inetd ou indpendamment ? , moins
de savoir ce que vous faites, rpondez indpendamment (en fait si c'est pour un
"petit serveur FTP lger" prfrez inetd, pour un "gros serveur FTP puissant"
choisissez indpendant).
Et voil, vous avez un serveur ftp, enfin presque !

Configuration
diter le fichier de configuration de proftpd : /etc/proftpd/proftpd.conf
Voil les paramtres intressants changer pour une utilisation de base (si vous
voulez plus de dtail rfrez-vous la documentation) :
ServerName : le nom de votre serveur ftp
Quotas on : enlevez le # devant la ligne pour la dcommenter si vous voulez
utiliser les quotas
Trouvez et dcommentez les lignes suivantes (en retirant les # au dbut de
chaque ligne) pour autoriser un accs anonyme "standard" :
# A basic anonymous configuration, no upload directories.
<Anonymous ~ftp>
User
ftp
Group
nogroup
# We want clients to be able to login with "anonymous" as well as "ftp"
UserAlias
anonymous ftp
# Cosmetic changes, all files belongs to ftp user
DirFakeUser on ftp
DirFakeGroup on ftp

RequireValidShell

off

# Limit the maximum number of anonymous logins


MaxClients
10
# We want 'welcome.msg' displayed at login, and '.message' displayed
# in each newly chdired directory.
DisplayLogin
welcome.msg
DisplayFirstChdir
.message
# Limit WRITE everywhere in the anonymous chroot
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
</Anonymous>

Faites bien attention dcommenter le dernier paragraphe (intitul "Limit


WRITE everywhere in the anonymous chroot"), sinon l'utilisateur anonyme
aura un accs en criture dans le rpertoire /home/ftp. Par contre, ne
dcommentez pas la suite (intitule "Uncomment this if you're brave":
"Dcommentez ceci si vous en avez le courage").
Vous pouvez interdire de se logger en root sur le ftp en ajoutant la ligne suivante
RootLogin off

Une fois la configuration modifie, relancez le serveur avec la commande


suivante :
sudo service proftpd restart

Mis en place dun serveur vsFTPd


Installation
Avec la commande apt-get install proftpd :

Lors de la configuration des paquets, Debconf demande sil doit lancer proftpd
avec laide dinetd ou avec des dmons indpendants, rpondre standalone

Configuration de base:
- Dsactivation de lIPv6 :
UseIPv6

off

Dsactivation des requtes DNS


IdentLookups

off

UseReverseDNS off

Scurisation du service
Chroot des utilisateurs :

DefaultRoot

~ = dossier personnel des utilisateurs .


NB : on peut chroot les utilisateurs dans nimport quel dossier a condition quel
aurons les permissions ncessaire sur ce dossier.
Delai dauthentification :

<IfModule mod_delay.c>
DelayEngine on
</IfModule >

On test notre serveur:

Cration des virtuelhost par IP:


L'hbergement virtuel permet au serveur FTP de prendre en charge plusieurs
domaines sur la mme machine. Chaque hte virtuel ncessite une interface
logique et une adresse IP distinctes.
On doit crer des interfaces logiques chaque interface va jouer le rle dun hte
virtuel.
On va alors ajouter deux interfaces logiques de la manire suivante :

On va cre un rpertoire pour lhte virtuel, ce sera la racine de connexion du


serveur ftp virtuel.
Ceci avec la commande suivante :
Mkdir /srv/ftp/monFTP
A prsent nous allons cre un rpertoire pour chaque vhost, ce sera la racine de
connexion de chaque serveur ftp virtuel:
mkdir /srv/ftp/monftp
mkdir /srv/ftp/monftp/ftp1
mkdir /srv/ftp/monftp/ftp2

On vrifier alors, que cette ligne existe et quelle soit dcomment (pas de # en
dbut de ligne). Cela permet de lier le fichier o il y aura la configuration de
vhost ftp:

Maintenant, chaque utilisateur sera connect la racine de son serveur ftp sans
pouvoir accder au autre rpertoire du serveur physique et autre serveur FTP
virtuel, on utilise alors chroot

Aprs on modifi le fichier /etc/proftp/virtuals.conf

Et on ajoute les lignes suivantes :

Apres on ajoute les utilisateurs ftp1 ftp2 et les donne leur mot de passe.
useradd ftp1
useradd ftp2
passwd ftp1
passwd ftp2
On donne les droits de lecture:
chmod -R 744 /srv/ftp/monftp/ftp1
chmod -R 744 /srv/ftp/monftp/ftp2
On rend propritaire et on attribut le groupe autoris d'accs au rpertoire:
chown -R ftp1:ftp1 /srv/ftp/monftp/ftp1
chmod -R ftp2:ftp2 /srv/ftp/monftp/ftp2
Et on test avec ladresse 192.168.1.10 :

Et on test avec ladresse 192.168.1.20 :

Cration des virtuelhost par nom:


On modifi le fichier /etc/proftp/virtuals.conf

Et on ajoute les lignes suivantes :

Et on assure la rsolution DNS :

Et On test :
Pour ftp1.fssm.ma:

Pour ftp2.fssm.ma:

Pour ftp1.fst.ma:

Configuration de SSL (sftp ou ftps) :


Aller dans le dossier de configuration proftpd
cd /etc/proftpd/

Crer le dossier ssl


sudo mkdir ssl

Se dplacer dans
cd ssl/

Gnrer le certificat ssl


sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -out proftpdrsa.pem -keyout proftpd-key.pem

Protger la cl
sudo chmod 440 proftpd-key.pem

Editer le fichier /etc/proftpd/proftpd.conf avec son diteur prfr et


ajouter cela la fin du fichier :

On modifier le fichier qui concerne la configuration de ssl :

Le modifier comme cela :

On vrifier alors, que cette ligne dans le fichier /etc/proftpd/proftpd.conf


existe et quelle soit dcomment (pas de # en dbut de ligne). Cela permet
dinclure le fichier tls .conf au fichier proftpd.conf

Redmarrer proftpd
sudo /etc/init.d/proftpd restart

Et On test :

Configuration de SSL (sftp ou ftps) on IPV6 :


Configuration dinterface du serveur :

Vrification :

Configuration dinterface du client :

Activation de lIPv6 :

Et on test

Vous aimerez peut-être aussi