FTP Sous Linux-V2 - Lasfar Salim
FTP Sous Linux-V2 - Lasfar Salim
FTP Sous Linux-V2 - Lasfar Salim
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 .
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
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.
/etc/services
/etc/xinetd.d./ftp
/etc/vsftpd.banned_emails
/etc/vsftpd.chroot_list
/etc/vsftpd/vsftpd.conf
Le fichier /etc/services :
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
}
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
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 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
Extrait de http://fr.wikipedia.org/wiki/SELinux
Donc il faut changer la politique disabled temporairement avec la
commande :
Ou bien permanant :
Rsultat :
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):
Virtuelhost par IP :
On cre dabord une interface virtuelle :
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
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
On test :
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) :
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
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
off
UseReverseDNS off
Scurisation du service
Chroot des utilisateurs :
DefaultRoot
<IfModule mod_delay.c>
DelayEngine on
</IfModule >
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
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 :
Pour ftp1.fssm.ma:
Pour ftp2.fssm.ma:
Pour ftp1.fst.ma:
Se dplacer dans
cd ssl/
Protger la cl
sudo chmod 440 proftpd-key.pem
Redmarrer proftpd
sudo /etc/init.d/proftpd restart
Et On test :
Vrification :
Activation de lIPv6 :
Et on test