Bonjour à tous,
Je tente de configurer un serveur FTP sur mon VPS (OVH) en Debian 7 (64 bits).
Étant un gros débutant je galère fortement lors de la mise en place.
J’ai procédé à l’installation de vsftpd, avec la configuration par défaut (anonyme) le ftp fonctionne correctement.
Maintenant, je souhaite autoriser un utilisateur virtuel à accéder au répertoire /var/www en lecture/écriture à l’aide d’une table stocker dans une base mysql.
J’édite donc mon fichier vsftpd.conf comme ceci:
# Port d'écoute
listen_port=21
# Banniere de bienvenue
ftpd_banner=Bienvenue sur mon ftp perso
# Fichier de config PAM
pam_service_name=vsftpd
# Mode "standalone"
listen=YES
# Je ne veux pas de connexion anonyme
anonymous_enable=NO
# On autorise les connexions des utilisateurs locaux. C'est indispensable
# pour que les utilisateurs virtuels (mappes sur un utilisateur local)
# puissent se connecter (les "vrais" utilisateurs locaux sont ensuite desactives
# avec le fichier user_list
local_enable=YES
# Fichier de users
userlist_file=/etc/vsftpd/user_list
# Chargement de la liste userlist_file
userlist_enable=YES
# On refuse les utilisateurs de la liste
userlist_deny=YES
# trop restrictif, un utilisateur virtuel pourra ainsi telecharger un fichier meme s'il n'est pas world readable
anon_world_readable_only=NO
# Refus des commandes influant sur le systeme de fichier (STOR, DELE, RNFR, RNTO, MKD, RMD, APPE and SITE)
write_enable=NO
# Refus des droits d'ecriture pour les anonymes (et donc utilisateurs virtuels) par défaut
# les autorisations seront données au cas par cas :
# pas d'upload
anon_upload_enable=NO
# pas de creation de repertoire
anon_mkdir_write_enable=NO
# pas de creation, suppression, renommage de repertoire ...
anon_other_write_enable=NO
# On fait en sorte que les utilisateurs "guest" (non-anonymes) soient mappés sur le compte local "ftp"
guest_enable=YES
guest_username=ftp
# chroot des utilisateurs
chroot_local_user=YES
# Nombre maximum de connexion simultanees
max_clients=50
# Nombre maximum de connexions venant de la meme IP
max_per_ip=4
# Dossier de configuration specifique des utilisateurs
user_config_dir=/etc/vsftpd/vsftpd_user_conf
# On active le log
xferlog_enable=YES
Ensuite je réduis les droits sur le fichier de conf:
chmod 600 /etc/vsftpd/vsftpd.conf
J’installe libpam-mysql, puis je créer une BDD vsftpd dans mysql. Je créé un utilisateur vsftpd avec tous les droits sur la base vsftpd:
Utilisateur Client Type Privilèges «Grant»
vsftpd localhost spécifique à cette base de données ALL PRIVILEGES NON[/code]
Je crée deux tables en SQL:
[code]CREATE TABLE `vsftpd`.`users` (
`id_user` int(11) NOT NULL auto_increment,
`login` varchar(50) NOT NULL,
`password` varchar(100) NOT NULL,
`active` int(11) NOT NULL,
PRIMARY KEY (`id_user`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
CREATE TABLE `vsftpd`.`log` (
`id_log` int(11) NOT NULL auto_increment,
`login` varchar(50) NOT NULL,
`message` varchar(200) NOT NULL,
`pid` varchar(10) NOT NULL,
`host` varchar(30) NOT NULL,
`time` datetime default NULL,
PRIMARY KEY (`id_log`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;[/code]
puis je crée un utilisateur clark17:
[code]INSERT INTO vsftpd.users (login,password,active) VALUES('clark17',md5('toto'),1)[/code]
Ensuite, j'édite le fichier /etc/pam.d/vsftpd comme ceci:
[code]#%PAM-1.0
auth sufficient pam_unix.so
account sufficient pam_unix.so
auth required /lib/security/pam_mysql.so verbose=0 user=vsftpd passwd=toto host=127.0.0.1 db=vsftpd table=users usercolumn=login passwdcolumn=password crypt=3 where=users.active=1 sqllog=yes logtable=log logmsgcolumn=message logusercolumn=login logpidcolumn=pid loghostcolumn=host logtimecolumn=time
account required /lib/security/pam_mysql.so verbose=0 user=vsftpd passwd=toto host=127.0.0.1 db=vsftpd table=users usercolumn=login passwdcolumn=password crypt=3 where=users.active=1 sqllog=yes logtable=log logmsgcolumn=message logusercolumn=login logpidcolumn=pid loghostcolumn=host logtimecolumn=time[/code]
Enfin je crée le fichier /etc/vsftpd/user_list pour exclure les utilisateurs locaux:
[code]root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
proxy
www-data
backup
list
irc
gnats
nobody
libuuid
sshd
inrepublica
postfix
mysql
ftp
Maintenant je tente de me connecter en local avec la commande ftp local host:
root@inrepublica:/etc# ftp localhost
ftp: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.localdomain.
220 Bienvenue sur le serveur ftp inrepublica.fr
Name (localhost:inrepublica): clark17
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
Et la c’est le drame
vsftpd.log:
Sun Oct 6 15:50:37 2013 [pid 21188] CONNECT: Client "127.0.0.1"
Sun Oct 6 15:51:00 2013 [pid 21187] [clark17] FAIL LOGIN: Client "127.0.0.1"
auth.log:
Oct 6 15:50:58 inrepublica vsftpd: pam_unix(vsftpd:auth): check pass; user unknown
Oct 6 15:50:58 inrepublica vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=clark17 rhost=127.0.0.1
Oct 6 15:50:58 inrepublica vsftpd: pam_mysql - non-crypt()ish MD5 hash is not supported in this build.
Oct 6 15:50:58 inrepublica vsftpd: pam_mysql - non-crypt()ish MD5 hash is not supported in this build.
Là je suis perdu, je ne comprends pas l’erreur…
Merci de votre aide.