Outils pour utilisateurs

Outils du site


admin:services:ftp:vsftpd

Cette page explique la mise en place d'un serveur FTP avec vsftpd, telle qu'elle avait été réalisée à FedeRez.

Cependant, la nécessité d'utiliser PAM pour authentifier des utilisateurs en utilisant les données d'un LDAP nous a fait changer de serveur pour proftpd (pure-ftpd aurait probablement convenu également).

Une autre limitation de vsftpd est l'impossibilité d'ajouter ou de modifier des fichiers ou des dossiers à la racine du FTP via un client FTP (il s'agit d'une « mesure de sécurité »).

Mise en place

C'est vsftpd qui est installé, et ce fut super chiant à mettre en place, notamment en ayant forcé TLS… Cf cette archive IRC pour les déboires rencontrés.

Liens (potentiellement) utiles

Installation

Installation plus que classique du paquet :

apt-get install vsftpd

Explication préalable de la configuration choisie

Le but de la config est de permettre à tout membre de FedeRez avec un compte LDAP de pouvoir accéder via le FTP à un dossier commun en lecture/écriture. L'authentification des utilisateurs FTP se fera donc via le LDAP. De plus l'ensemble des transactions (authentification et échanges de données) devra se faire avec chiffrement TLS. Autrement dit seul le protocole FTPES (FTP avec connexion TLS explicite) sera supporté.

On va donc activer la gestion des virtual users qui s'authentifient individuellement via le LDAP de FedeRez, puis qui seront mappés par vsftpd sur l'user local ftp. Ce dernier sera chrooté dans son dossier personnel qui servira de racine du FTP.

Par défaut, le dossier personnel de l'utilisateur ftp est /srv/ftp. Cependant ce dossier ne se trouve pas sur la “grosse” partition de 400 Go d'hexagon. On va donc stocker les fichiers dans le répertoire /home/ftp créé pour l'occasion.

Configuration

Préparation des dossiers

On commence par créer le répertoire /home/ftp

mkdir /home/ftp

root doit être le proprio du dossier, sinon ça marche pas…

chown root:ftp /home/ftp

Les perms du dossier doivent être 755, sinon ça marche pas…

chmod 755 /home/ftp

L'utilisateur ftp n'a donc pas de droits d'écriture dans la racine de son home. Ça fait partie des obligations de vsftpd. Donc pour pouvoir quand même utiliser le FTP pour autre chose que de la lecture seule, on crée un sous-dossier à la racine appartenant cette fois-ci à ftp

mkdir /home/ftp/federez
chown ftp:ftp /home/ftp/federez

Et pour finir, on va lier symboliquement /srv/ftp à /home/ftp, j'ai essayé de demander à vsftpd d'utiliser directement /home/ftp mais la encore il n'a pas aimé du tout…

rmdir /srv/ftp
ln -s /home/ftp /srv/ftp

Bon voilà normalement vsftpd devrait être content avec cette structure. Passons à la configuration à proprement parler.

Config de vsftpd

Le fichier de configuration de vsftpd est /etc/vsftpd.conf.

Voici la config en place, sans les commentaires superflus :

vsftpd.conf
listen=YES
 
anonymous_enable=NO
 
local_enable=YES
write_enable=YES
 
guest_enable=YES
guest_username=ftp
 
local_root=/srv/ftp
 
ftp_username=ftp
nopriv_user=ftp
 
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
 
chown_uploads=YES
chown_username=ftp
virtual_use_local_privs=YES
 
local_umask=022
anon_umask=022
 
dirmessage_enable=YES
 
use_localtime=YES
 
xferlog_enable=YES
 
connect_from_port_20=YES
 
xferlog_file=/var/log/xferlog.log
xferlog_std_format=YES
 
ftpd_banner=Bienvenue sur le serveur FTP de FedeRez
 
pam_service_name=vsftpd
 
ssl_enable=YES
ssl_ciphers=HIGH
rsa_cert_file=/etc/ssl/federez/chain.pem
rsa_private_key_file=/etc/ssl/private/federez.key
force_local_data_ssl=YES
force_local_logins_ssl=YES
 
hide_ids=YES

Config du module PAM LDAP

Comme on a dit, on veut authentifier les utilisateurs via le LDAP de FedeRez.

Pour cela vsftpd utilise le service PAM suivant : /etc/pam.d/vsftpd

vsftpd
auth    required        pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
auth    [success=1 default=ignore]  pam_ldap.so minimum_uid=1000
auth    requisite           pam_deny.so
auth    required            pam_permit.so
 
account [success=1 new_authtok_reqd=done default=ignore]    pam_unix.so
account requisite           pam_deny.so
account required            pam_permit.so
account [success=ok new_authtok_reqd=done ignore=ignore user_unknown=ignore authinfo_unavail=ignore default=bad]    pam_ldap.so minimum_uid=1000
 
password    [success=1 default=ignore]  pam_ldap.so minimum_uid=1000
password    requisite           pam_deny.so
password    required            pam_permit.so
 
session [default=1]         pam_permit.so
session requisite             pam_deny.so
session required              pam_permit.so
session required          pam_unix.so
session [success=ok default=ignore] pam_ldap.so minimum_uid=1000

Application de la nouvelle config

invoke-rc.d vsftpd restart
admin/services/ftp/vsftpd.txt · Dernière modification: 2016/04/07 00:11 de david