vsftp - serevur ftp

Transcription

vsftp - serevur ftp
Service FTP
Stéphane Gill
[email protected]
Table des matières
Introduction
2
Protocole ftp
2
Utilisation du client ftp
2
Installer un serveur vsftp
4
Configurer le service ftp
5
Le fichier /etc/services
5
Le fichier /etc/xinetd.d/ftp
5
Le fichier /etc/vsftpd.conf
6
Créer un site ftp anonyme
7
Créer des sites ftp virtuel
7
Références
7
Document écrit par Stéphane Gill
© Copyright 2004 Stéphane Gill
Ce document est soumis à la licence GNU FDL. Permission vous est donnée de distribuer et/ou modifier des copies de
ce document tant que cette note apparaît clairement.
Service FTP
Introduction
Dans un réseau, le transfert de fichiers d’un ordinateur à un autre se pratique couramment. Bien
qu’il existe plusieurs protocoles de transfert basés 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 véritables trous de sécurité.
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 sécuritaires.
Ce chapitre décrit donc la configuration du service ftp avec vsftp sur un serveur Red Hat Linux.
Protocole ftp
Le protocole ftp permet de transférer des fichiers entre ordinateurs. Les deux ports suivant sont
utilisés par ftp:
•
21 tcp (canal de contrôle) : toutes les commandes échangées par le serveur et le client
ftp sont transmise.
•
20 tcp (canal de données) : c’est via ce port que les données sont échangées 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 données sur le port 20. Dans le mode passif, le client initie la
connexion sur le port 21 et le serveur retourne les données sur un port plus grand à 1024.
Utilisation du client ftp
Tout comme telnet, FTP peut être lancé en mode commande ou en mode saisie. Après
établissement de la connexion, il n’y a pas de différence entre les deux modes. Ces différences
ne sont visibles qu’au démarrage du programme, car l’un des modes spécifie l’ordinateur hôte,
alors que l’autre mode n’établit la connexion qu’à l’exécution de la commande open.
L’appel du client ftp est réalisé comme suit :
© Copyright 2004 Stéphane Gill
Page 2
Service FTP
ftp [-v] [-d] [-i] [-n] [-g] [host]
Les paramètres de démarrage remplissent les fonctions suivantes :
Option
Fonction
-v
Toutes les réponses de l’ordinateur hôte sont affichées et un fichier est créé,
contenant les statistiques de transfert des données.
-d
Activation du mode de débogage.
-i
Déconnecte le dialogue interactif lors du transfert de plusieurs fichiers.
-n
La connexion automatique (Auto-Login) est désactivée. Si le fichier .netrc
existe, le programme y cherche les informations nécessaires à la connexion.
-g
Désactive la substitution de noms de fichiers.
host
Nom de l’ordinateur cible (serveur FTP).
Si vous démarrez le programme FTP sans indiquer le nom de l’ordinateur hôte, l’invite FTP est
affichée. En tapant la commande « ? », le programme affiche la liste des commandes
disponibles. Voici la liste des commandes :
Commande
Fonction
!
La saisie du caractère « ! » démarre un shell local. Si ce caractère est
suivi par les commandes Unix, cette commande est exécutée dans le
shell, puis le programme revient automatiquement à FTP.
$
L’appel de la commande $ macro [param] démarre l’exécution d’une
macro défini à l’aide de la commande macdef.
account
Certains ordinateurs hôtes attendent un mot de passe supplémentaire
pour permettre l’accès à certaines ressources spéciales. La commande
account [mot_de_passe] permet de le transmettre.
append
La commande append fichier [fichier_distant] permet de connecter un
fichier local à un nom de fichier distant de l’ordinateur hôte. Si aucun nom
n’est précisé pour le fichier distant, c’est le nom du fichier local qui est
utilisé.
ascii
Le transfert de données passe en mode ASCII.
bell
Un signal sonore est émis à la fin de chaque transfert de fichier.
binary
Le transfert de données passe en mode binaire.
© Copyright 2004 Stéphane Gill
Page 3
Service FTP
bye
Termine l’exécution de FTP.
case
La commande case influe sur l’analyse des minuscules et des
majuscules pour la commande mget. Si la commande case est activée,
les noms des fichiers transférés sur l’ordinateur hôte sont affichés en
majuscules, les minuscules étant transformées automatiquement en
majuscules.
cd
Change de répertoire sur l’ordinateur hôte.
cdup
Le répertoire de travail courant de l’ordinateur hôte devient le répertoire
parent courant.
chmod
Cette commande modifie les droit d’accès à un fichier sur l’ordinateur
hôte.
close
La connexion FTP est interrompue, et le programme FTP revient en
mode commande.
cr
Le commutateur cr permet de convertir les signaux CarriageReturn/Linefeed, dès que ce commutateur est positionné (par défaut).
delete
La commande delete fichier permet d’effacer un fichier sur l’ordinateur
hôte.
debug
Ce commutateur active ou désactive le mode débogage
dir
Cette commande affiche le contenu du répertoire de l’ordinateur hôte.
Installer un serveur vsftp
Le serveur vsftp est souvent installé automatiquement lors de l’installation de Red Hat Linux.
Pour vérifier sa présence il suffit de taper la commande suivante :
rpm -qa | grep vsftpd
Si vsftp n’est pas installé, il est possible de l’installer à partir du CD-ROM à l’aide de la
commande :
rpm -i vsftpd-1.2.0-5.rpm
© Copyright 2004 Stéphane Gill
Page 4
Service FTP
Configurer le service ftp
Après l’installation de vsftp une configuration de base est active. Voici la liste des fichiers
impliqués dans le paramétrage 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 décrit les services TCP/IP disponibles sur un serveurs Linux. Les lignes
concernant le service ftp sont les suivantes :
ftp-data
ftp
20/tcp
21/tcp
Ces deux lignes définissent les ports utilisés pour les données et les commandes par le service
ftp. Les valeurs de ces ports sont définies officiellement et ne doivent pas être modifiées.
Le fichier /etc/xinetd.d/ftp
Le démon vsftpd peut démarrer à partir de xinetd. Voici un exemple de configuration de xinetd :
service ftp
{
socket_type
wait
user
server
server_args
log_on_success
log_on_failure
nice
disable
}
= stream
= no
= root
= /usr/local/sbin/vsftpd
=
+= DURATION USERID
+= USERID
= 10
= no
L’instruction nice est importante puisqu’elle permet de réguler la bande passante utilisée. vsftp
peut aussi être démarré en mode autonome à l’aide de la commande :
© Copyright 2004 Stéphane Gill
Page 5
Service FTP
service vsftpd start
Le fichier /etc/vsftpd.conf
Voici un exemple simple de fichier vsftpd.conf :
# connexion en tant qu’anonyme interdite
anonymous_enable=NO
# connexion pour les utilisateurs locaux auorisés
local_enable=YES
# écriture interdite
write_enable=NO
# Upoad pour anonyme interdit
anon_upload_enable=NO
# création de répertoire pour les anonymes interdit
anon_mkdir_write_enable=NO
# écriture de fichier pour anonyme interdit
anon_other_write_enable=NO
# enferme l’utilisateur dans le répertoire ftp (chrooté)
chroot_local_user=YES
# nombre de connexions maximales autorisées par une même 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 d’utilisateurs virtuels
guest_enable=YES
# souhaitable, vu que la connexion anonyme est refusée
guest_username=virtual
# cette option permet de limiter l’accès des ports
pasv_min_port=30000
# disponibles, utile derrière un firewall
pasv_max_port=30999
# enregistrement des logs...
xferlog_enable=YES
© Copyright 2004 Stéphane Gill
Page 6
Service FTP
Créer un site ftp anonyme
Un site ftp anonyme est un site qui permet à des usagers qui ne possèdent pas de compte
usager sur un serveur d’échanger des fichiers. La connexion à un site ftp anonyme utilise comme
authentification le nom d’usager "anonymous" et comme mot de passe une adresse e-mail. Une
fois connectés les utilisateurs anonymes n’accèdent que le répertoire /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 télécharger des fichiers.
# L’option write_anable doit aussi être activé.
anon_upload_enable=YES
# Permettre aux usagers anonymes la création de répertoire
anon_mkdir_write_enable=NO
# Permettre aux usagers anonymes l’écriture de fichier
anon_other_write_enable=NO
# Répertoire pour les usagers anonymes (Par défaut: /var/ftp)
anon_root = /var/ftp
Créer des sites ftp virtuel
Pour mettre en place des sites ftp virtuels, il faut démarrer autant de démon vsftpd qu’il y à
d’hôtes virtuels. Chaque démon doit avoir sont fichier de configuration avec l’instruction
listen_adress = x.x.x.x où x.x.x.x est une adresse IP virtuelle.
Références
La documentation officielle de vsftpd est disponible sur le site http://vsftpd.beasts.org/
© Copyright 2004 Stéphane Gill
Page 7