serveur dédié - partie 3 - VsFTPd

Pourquoi VsFTPd?

Je ne veux pas que mes utilisateurs FTP soient des utilisateurs systèmes. Pour avoir utiliser proftpd je sais qu’il peut utiliser une base d’utilisateurs externe. Je pensais donc l’utiliser avec un serveur LDAP pour gérer les utilisateurs et les groupes.
En pratique le module LDAP est plus compliqué que prévu. Surtout vu mes besoins. De plus la plupart des tuto partent sur l’utilisation d’un LDAP avec pam et des users également système ….
Je vais donc utiliser VsFTPd avec des utilisateurs virtuels.

Pré-requis

Il faut installer vsftpd et db4-utils (pour la bd user)

Paramétrage de VsFTPD

/etc/vsftpd/vsftpd.conf:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

# Interdire les connexions anonymes au serveur
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

# Autoriser les utilisateurs locaux (obligatoire même si on ne veut que des utilisateurs virtuels)
local_enable=YES

# Autoriser les utilisateurs virtuels
guest_enable=YES
guest_username=userftp11

# Activer les droits spécifiques par utilisateur
user_config_dir=/etc/vsftpd/vsftpd_user_conf

# activation de logs
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.xfer.log
xferlog_std_format=YES
log_ftp_protocol=YES
vsftpd_log_file=/var/log/vsftpd.log

# Configuration du serveur en standalone
listen=YES
tcp_wrappers=YES
connect_from_port_20=YES
ftpd_banner= »Bienvenue sur le serveur FTP »

# Configuration de l’authentification
pam_service_name=vsftpd
userlist_enable=YES

Attribution des droits utilisateurs

Chaque utilisateur a un fichier dans /etc/vsftpd/vsftpd_user_conf définissant ses droits:
par ex:

1
2
3
cat /etc/vsftpd/vsftpd_user_conf/40k
anon_world_readable_only=NO
local_root=/data/40k

Modification de pam

Pour que PAM aille cherche les utilisateurs dans un fichier donné il faut utiliser cette conf:

/etc/pam.d/vsftpd

1
2
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/login

Création de la base de données utilisateurs

Pour peupler la base login.db, on va utilsier un fichier texte puis db_load login.txt

login.txt

1
2
3
4
user1
password1
user2
password2
1
db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db

Note

  • Pour activer également les comptes systèmes il faut ajouter dans lignes dans la conf pam (avant celles pour login.db):
    1
    2
    auth sufficient pam_unix.so
    account sufficient pam_unix.so
  • Attention aux deux fichiers suivant qui sont la pour autoriser/interdire un utilisateur:
    • /etc/vsftpd/ftpusers
    • /etc/vsftpd/user_list