Authentication data on MySQL
Aller à la navigation
Aller à la recherche
| Fiche express | |
|---|---|
| Type | Authentification vsftpd — backend MySQL |
| Paquets | vsftpd · libpam-mysql
|
| PAM | /etc/pam.d/vsftpd (module pam_mysql.so)
|
| Config | /etc/vsftpd.conf
|
| Voir aussi | Vsftpd (Debian) · Vsftpd |
Configuration de vsftpd avec des utilisateurs virtuels authentifiés contre une
base MySQL plutôt que des comptes système, via le module PAM pam_mysql.
Les identifiants ci-dessous (ftpuser, mots de passe) sont des exemples
génériques à remplacer par des valeurs propres à chaque déploiement.
Installation
apt-get install vsftpd libpam-mysql
Base et table des utilisateurs FTP
CREATE DATABASE ftpd;
USE ftpd;
CREATE TABLE users (
username varchar(30) NOT NULL,
password varchar(50) NOT NULL,
PRIMARY KEY (username)
) TYPE=MyISAM;
-- ajout d'un utilisateur virtuel (mot de passe hashé par la fonction MySQL PASSWORD())
INSERT INTO users (username, password) VALUES ('ftpuser', PASSWORD('<mot_de_passe_utilisateur>'));
-- compte technique utilisé par pam_mysql pour lire la table (droit SELECT uniquement)
GRANT SELECT ON ftpd.users TO vsftpd@localhost IDENTIFIED BY '<mot_de_passe_technique>';
TYPE=MyISAM est l'ancienne syntaxe MySQL (remplacée par ENGINE=MyISAM
sur les versions récentes) — (à vérifier selon version, InnoDB convient tout
aussi bien pour cet usage).
Configuration /etc/vsftpd.conf
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
nopriv_user=vsftpd
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
# utilisateurs virtuels
virtual_use_local_privs=YES
guest_enable=YES
guest_username=vsftpd
user_sub_token=$USER
local_root=/srv/ftp/$USER
chroot_local_user=YES
hide_ids=YES
Authentification PAM
# /etc/pam.d/vsftpd
auth required pam_mysql.so user=vsftpd passwd=<mot_de_passe_technique> host=localhost db=ftpd table=users usercolumn=username passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=<mot_de_passe_technique> host=localhost db=ftpd table=users usercolumn=username passwdcolumn=password crypt=2
Utilisateur système « guest » et répertoire
guest_enable=YES fait passer tous les utilisateurs virtuels par les droits
Unix d'un seul compte système « guest » (ici vsftpd), qui doit exister mais
n'a pas besoin de mot de passe utilisable en connexion directe :
useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
mkdir /srv/ftp/ftpuser
chown vsftpd:nogroup /srv/ftp/ftpuser/
Démarrage
service vsftpd restart
Voir aussi
- Vsftpd (Debian) — installation vsftpd sous Debian/Ubuntu
- Vsftpd — installation vsftpd sur RHEL/CentOS
- Anonymous vsftp — accès anonyme (sans authentification)