Ceci est une ancienne révision du document !
Table des matières
Installer un serveur FTP avec utilisateurs virtuels
On va installer un serveur FTP gérant les utilisateurs virtuels, pour ce faire on utilisera vsFTPd.
Le configuration se fera comme d'habitude sur un serveur debian stable (squeeze).
Le cahier des charges :
- ne pas autoriser les utilisateurs locaux au système
- autoriser des utilisateurs virtuels
- limiter chaque utilisateur virtuel un répertoire utilisateur (chroot), un meme répertoire pouvant être commun a plusieurs personnes
- Etre accessible en IPv6 et IPv4
- Les utilisateurs pourront déposer des fichiers (écrire)
Installation initiale
L'installation se limite à :
# apt-get install vsftpd
Par défaut le serveur FTP démarre, et autorise les connexions anonymes, nous allons donc le couper le temps de le configurer :
# /etc/init.d/vsftpd stop
Configuration initiale
La configuration s'effectue dans le fichier /etc/vsftpd.conf :
- Écouter en IPv6 : pour que vsftpd écoute en IPv6 il est faut en aussi commenter “listen=YES”, il va alors écouter en IPv4 et IPv6 :
# sed -i -e "s/^listen=YES/#listen=YES/" /etc/vsftpd.conf # sed -i -e "s/^#listen_ipv6=YES/listen_ipv6=YES/" /etc/vsftpd.conf
- Empêcher les connexion anonymes :
# sed -i -e "s/^anonymous_enable=YES/anonymous_enable=NO/" /etc/vsftpd.conf
- Autoriser l’écriture pour les utilisateurs (virtuels) :
# sed -i -e "s/^#write_enable=YES/write_enable=YES/" /etc/vsftpd.conf
- désactiver le forçage du port 20 pour les connexions de données (permet a vsftpd de tourner avec un peu moins de privilèges) :
# sed -i -e "s/^connect_from_port_20=YES/#connect_from_port_20=YES
- ajouter a la fin du fichier /etc/vsftpd.conf :
# limitation du nombres de connexions totales/par IP max_clients=15 max_per_ip=4 # On indique que tout les utilisateurs sont limités à leurs propres repertoires chroot_local_user=YES chroot_list_enable=NO # pour voir la liste des utilisateur connectés avec : ps -aef | grep vsftpd # attention n'importe quel utilisateur systeme local pourra donc obtenir la liste des utilisateurs FTP connectés setproctitle_enable=YES # modifier le message de bienvenue ftpd_banner=Bienvenue sur mon serveur a moi # les fichiers ecrits auront les droits 775 local_umask=002 # définir le répertoire contenant les fichiers de configuration utilisateurs : user_config_dir=/etc/vsftpd/user_conf # configuration utilisateurs virtuels guest_enable=YES guest_username=virtual # permettre aux utilisateurs virtuels d'avoir les droits d'utilisateurs locaux (vs anonymes) leur permettant donc d'ecrire virtual_use_local_privs=YES hide_ids=YES # configuration du mode passif (utile pour limiter l'ouverture de la fenetre des firewalls, ici les ports 48152 à 49192) #pasv_enable=YES valeur par defaut pasv_enable=YES pasv_min_port=48152 pasv_max_port=49192
Configuration des utilisateurs virtuels
Ajout des utilisateurs virtuels
Deux méthodes s'offrent a vous :
- utiliser une base Berkeley DB pour stocker les utilisateurs/mots de passe :
- inconvénient : il faut stocker la liste des utilisateurs/mots de passe en clair dans un fichier, et relancer la génération de la base a chaque ajout/suppression d'utilisateur
- avantages:
- peut etre les performances ? (pas sur et dans le cas qui nous intéresse avec un nombre d'utilisateurs virtuels réduit on s'en fout
)
- Les mots de passe étants stockés en clair on peur redonner son mot de passe a un utilisateur (est-ce vraiment un avantage de stocker ça en clair ?
)
- utiliser un fichier htpassword (format similaire au htpasswd apache)
- avantage : pas besoin de “regénérer” une base de donnée après l'ajout d'un nouvel utilisateur (il faudra cependant toujours déclarer tout nouvel utilisateur pour lui définir son chroot)
- inconvénients :
- peut être les perfs, mais la encore pas sur et puis ….
- on ne peut redonner le mot de passe a quelqu'un, mais on peut toujours le remplacer par un nouveau
J'ai choisi d'utiliser un fichier au format htpassword, choisissez la méthode que vous voulez.
Gestion des utilisateurs virtuels htpasswd
TODO
Gestion des utilisateurs virtuels Berkeley DB
TODO
Gestion des droits des utilisateurs virtuels
Dans la configuration initiale, nous avons défini un répertoire pour y stocker les droits des utilisateurs, il faut donc le créer :
# mkdir /etc/vsftpd/user_conf
TODO
Pour aller plus loin
Chiffrement des communications avec SSL
TODO