15
2008
VSFTPD VIRTUAL USERS
Cette méthode permet de créer des utilisateurs ftp sans être obligé de créer des utilisateurs système.
Pré-requis :
Pour cela, il vous faut ces deux packages : Vsftpd et db4-utils.
Paramétrage de vsftpd :
Le serveur vsftpd est paramétré dans le fichier /etc/vsftpd/vsftpd.conf
dont voici un exemple pour mon cas :
# 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
Configuration des droits propres à chaque utilisateur
Pour chaque utilisateur, il faut créer un fichier portant le nom de l’utilisateur dans le répertoire défini par la directive user_config_dir
.
Mon fichier /etc/vsftpd/vsftpd_user_conf/lecteur
anon_world_readable_only=NOlocal_root=/var/ftp/
Mon fichier /etc/vsftpd/vsftpd_user_conf/crontibuteur
anon_world_readable_only=NOlocal_root=/var/ftp2/
Configuration de l’authentification PAM
Créer le fichier /etc/pam.d/vsftpd
suivant :
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/login
Ainsi, PAM va donc interroger la base BDB /etc/vsftpd/login.db pour authentifier les utilisateurs.
Créer la base BDB des utilisateurs
Créer un fichier nommé login.txt dans ce format.
nom d’utilisateur1
mot de passe1
nom d’utilisateur2
mot de passe2
Une fois le fichier .txt créé, il faut créer la base de donnée de pam.d. Pour cela, il faut taper cette commande :
db4_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db
db4_load peut être sur certaine distribution sous cette forme : dbXX_load avec XX etant la version de db.
Vous pouvez maintenant essayer de vous connecter.
Divers
Si vous voulez quand même vous connecter avec les comptes systeme, vous devez ajouter ces lignes avant celle existante dans le fichier /etc/pam.d/vsftpd :
auth sufficient pam_unix.so
account sufficient pam_unix.so
Si le compte root n’a pas le droit de se connecter, c’est qu’il apparaît dans ces deux fichiers :
- /etc/vsftpd/ftpusers
- /etc/vsftpd/user_list
Publicité :)
Articles récents
- Memento VI – Boostez Votre Productivité avec Vi : Trucs et Astuces à Connaître
- Configuration de Nginx pour Obtenir l’IP Réelle des Visiteurs avec CloudFlare
- Récupérer les informations d’un Ordinateur Terra à partir du numéros de série avec Python
- Grep – Extraire toutes les adresses IP d’un fichier text, Json, etc…
- Failed to Start File System Check – Vcenter 7
Mot-clefs
Commentaires récents
- Grep – Extraire toutes les adresses IP d’un fichier text, Json, etc… dans
- Grep – Extraire toutes les adresses IP d’un fichier text, Json, etc… dans
- Rotation des logs avec logrotate dans
- Hôte déconnecté sur le Vcenter. Impossible de se connecter à l’ESX. dans
- Pourquoi mon interface vlan ne veut pas devenir up ? dans
Bonjour,
mon os serveur est centOs-5.3
je suis entrein d’installer un utilisateur virtuel userftpvirtu uniquement dans le contexte vsftpd dans la meme config que vous.
mon probleme, est que j’ai bien les rpm rpm -qa db4*
db4-utils-4.3.29-9.fc6
db4-devel-4.3.29-9.fc6
db4-4.3.29-9.fc6
je ne comprend pas, sa bloque au niveau de pam a mon avis
1)je fais bien la cmd :db4_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/vsftpd_login.db
mais j’ai retour de cmd: db4_load: command not found
2)et quand je fais la cmd: db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/vsftpd_login.db
j’ai en retour de cmd: db_load: unexpected end of input data or key/data pair
db_load: odd number of key/data pairs
–> ceci dit a ce niveau il me fait mon morceau de bd, et quand je tente de faire
mon test sur vsftpd apparement pam, n’arrive pas a interprété puisque il me met
login incorrecte si joint le retour de requete:
220 ### !!!…vous etes connectés, sur le serveur FTP letchidevweb.gp ###
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:admsrvjobes): userftpvirtu
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
je ne comprend pas, a qu’elle niveau cela bloque..si vous pouviez
maider afin que je boucle linstall de mon serveur..
Tes packages db4, tu les as eu avec yum?
As-tu recherché sur ton serveur si la commande db4_load était présente :
find / -name “db4*”
Je pense qu’il faut déjà régler le problème de db4_load avant de se poser des questions sur pam car si le fichier db n’est pas correctement généré, l’authentification ne fonctionera jamais.
Peux-tu vérifier que ton fichier login.txt ne contient pas d’espace ou de saut de ligne. ( ça pose peut-être un problème )
Je n’ai pas de serveur sous la main actuellement. Je pourrais te donner une piste plus précise mardi.
Olivier
bonjour,
j’ai bien lus votre message.
oui, je pense que oui, puisque les les packages suivant sont installé a savoir
db4-utils-4.3.29-9.fc6
db4-devel-4.3.29-9.fc6
db4-4.3.29-9.fc6
selon vous???
je fais un audit de db4 de ce coté la et je vous tiens au courant
ha oui!..effectivement, les blancs dans le fichier login.txt.
ok je vous tiens informé
merci de votre reponse.
bonjour,
je repasse j’attendrais des nouvelles de votre part puisque j’ai bien les packages
demandés..je les possedes bien,je comprend pas..je vous confirmes bien, que je n’ai pas de blanc dans mon fichiers login.txt….
dans l’attente de vous lires.
information complementaire:
donc en faisant un audit des packages; voila ce que j’ai d’installer réellement:
dans leurs directorie associé: pour le db_load:
[admsrvjobes@www ~]$ rpm -ql db4-utils-4.3.29-9.fc6
/usr/bin/berkeley_db_svc
/usr/bin/db_archive
/usr/bin/db_checkpoint
/usr/bin/db_deadlock
/usr/bin/db_dump
/usr/bin/db_dump185
/usr/bin/db_load
/usr/bin/db_printlog
/usr/bin/db_recover
/usr/bin/db_stat
/usr/bin/db_upgrade
/usr/bin/db_verify
finalement cela confirme bien qu’en ligne de commande, et en suivant votre
tuto je dois bien; faire db_load -T -t hash ect ect ect…..
je ne comprend pas le blocage de mon user virtuel..
merci de votre coup de main.
Oui en effet tu peux utiliser db_load… J’ai exactement les memes paquets que toi et je n’arrive pas à reproduire ton problème. Meme en mettant des espaces dans mon fichier login.txt….
Quand tu essais de te connecter avec un utilisateur virtuel, peux tu me dire ce que tu as dans le fichier log /var/log/secure et /var/log/vsftpd.log
l’utilisateur userftp11 existe-t’il?
rebonjour,
donc pas à pas, j’ai audité les packages actuellement sur le systeme,
1)petite correction je suis rellement dans cette config package:
avec compat-db-4.2.52-5.1
j’ai donc /usr/bin/db42_checkpoint
/usr/bin/db42_deadlock
/usr/bin/db42_dump
/usr/bin/db42_load
/usr/bin/db42_printlog
/usr/bin/db42_recover
/usr/bin/db42_stat
—>ect ect
2) j’ai refait le tutos: et j’ai un user virtuel du type: usrftpvirtu
avec les meme drirectives que tu donnais. bien sur avec local_enable=YES.
3) ensuite j’ai refais la cmd:
db42_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db ( cette fois ci)
4) de mon coté j’ai bien dans /pam.d/vsftpd les lignes du type:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/login
5) j’ai essayé anouveau avec usrftpvirtu et le mot de pass associé
et j’ai
[admsrvjobes@www ~]$ ftp localhost 21
Connected to http://www.letchidevweb.gp.
220 ### !!!…vous etes connectés, sur le serveur FTP letchidevweb.gp ###
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:admsrvjobes): usrftpvirtu
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
6)—-> pour repondre a ta question : voici mon (secure) du type en fin de fichier:
lors de mon essai
un 5 16:38:57 www vsftpd: pam_unix(vsftpd:auth): check pass; user unknown
Jun 5 16:38:57 www vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=usrftpvirtu rhost=www.letchidevweb.gp
Jun 5 16:38:57 www vsftpd: pam_succeed_if(vsftpd:auth): error retrieving information about user usrftpvirtu
et
7) je ne comprend pas puisque maintenant il me donne :
500 OOPS: vsftpd: cannot locate user specified in ‘guest_username’:usrftpvirtu
et j’ai bien suivi ton tutos.
l’utilisateur userftp11 qui est pour moi usrftpvirtu , non il n’existe pas.du moins
je ne l’ai pas en create..
par contre je n’ai rien eu dans mon vsftpd.log..
en esperant n’avoir pas été trop long…
merci de ton aide….
rebonjour,
un message complementaire:
mon usrftpvirtu je l’ai créer type:
useradd -d /var/www/html/devweb/ usrftpvirtu -s /sbin/nologin
j’ai réessayer anouveau
220 ### !!!…vous etes connectés, sur le serveur FTP letchidevweb.gp ###
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:admsrvjobes): usrftpvirtu
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
je ne comprend plus, puisque il me disait :500 OOPS: vsftpd: cannot locate user specified in ‘guest_username’:usrftpvirtu
vraiement si tu as une idée.je suis preneur..
message en plus:
mon user usrftpvirtu est créer de cette façon: visuel dans mon secure
Jun 5 17:47:32 www useradd[13241]: new group: name=usrftpvirtu, GID=502
Jun 5 17:47:32 www useradd[13241]: new user: name=usrftpvirtu, UID=501, GID=502, home=/var/www/html/devweb/, shell=/sbin/nologin
Jun 5 17:48:28 www vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=usrftpvirtu rhost=www.letchidevweb.gp user=usrftpvirtu
–> merci de tes directives…je ne vois pas ou je peche.
Bon je vais en refaire un tout propre avec la même version d’os que toi et je modifierais mon tutorial en fonction de mes problèmes rencontrés.
A lundi 😉
bonjour,
et merci de ta reponse.
vraiement sympas pour ton analyse, et se que tu pourra trouvé.
assez recement, sur un forum, j’ai lus, q’une personne qui exposait son tuto, preconisait la version, db3_load, pour raison compatibilité: questce qui ferait que cela soit different, avec le db4x_load??
je vais essayer pour voir.
je te tiendrais au courant
bonjour pour info
j’avais tenté de mettre le db3-utils, donc visiblement yum ne ‘linstall pas puisque
une autre version superieur du type db4-utils existe.
soit j’ai: Running Transaction
Installing : db4-utils [1/1]
Installed: db4-utils.i386 0:4.3.29-9.fc6
Complete!
ensuite cmd par defaut : /usr/bin/db_dump185
/usr/bin/db_load
/usr/bin/db_printlog
j’ai refais anouveau des essais et
Name (localhost:admsrvjobes): usrftpvirtu
331 Please specify the password.
Password:
530 Login incorrect.
Login failed…
donc je ne sais plus quoi penser, et faire j’aurrai voulus y arrivé.afin de faire
des tests sur vsftpd..merci de ton coup main,
j’ai tous fait dans tous les sens…
cordialement
Bon j’ai retesté mon tutorial et il y a deux petites erreurs.
1) Il faut vérifier dans le fichier /etc/pam.d/vsftpd :
– Que le chemin vers pam_userdb.so est correct
– Qu’il n’y a que les deux lignes du tutorial dans le fichier
2) Il faut créé userftp11 de cette manière :
useradd -d /var userftp11
Ce qui est important de savoir c’est que le répertoire par défaut de userftp11 doit être la racine des autres utilisateurs.
Voici mon exemple :
userftp11 /var
lecteur /var/ftp
contributeur /var/ftp2
Moi j’ai suivi le tuto en effectuant ces deux étapes et ça a fonctionné sur Centos 5.3
Voici mes paquets :
— DB —
db4-utils-4.3.29-9.fc6
db4-4.3.29-9.fc6
—- PAM —-
pam_pkcs11-0.5.3-23
pam_smb-1.1.7-7.2.1
pam_passwdqc-1.0.2-1.2.2
pam_ccreds-3-5
pam-0.99.6.2-4.el5
pam_krb5-2.2.14-10
—– VSFTPD —-
vsftpd-2.0.5-12.el5_3.1
Voici le contenu de mon fichier vsftpd.conf :
#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ê 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éfiques 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
Contenu de mon pam.d/vsftpd
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/login
Contenu de mon /etc/vsftpd/vsftpd_user_conf/lecteur :
anon_world_readable_only=NO
local_root=/var/ftp/
Contenu de mon /etc/vsftpd/vsftpd_user_conf/contributeur :
anon_world_readable_only=NO
local_root=/var/ftp2/
Contenu de mon /etc/passwd :
userftp11:x:501:501::/var:/bin/bash
Voilà, bon courage.
bonjour,
j’ai refait ton descriptif a meme trois fois, pas à pas.. et je peche encore….
par ailleurs, quand tu dis :
“2) Il faut créé userftp11 de cette manière :
useradd -d /var userftp11 —>ok j’ai compris donc
tu lui à associer un pwd puisque tu me mets : userftp11:x:501:501::/var:/bin/bash
ok..par contre
au moment de faire le test tu le fait bien avec contributeur ???
soit ftp localhost 21
login contributeur, et je pense qu’en pwd tu mets bien celui qui est defini dans le login.txt ?? selon moi
puisque moi sa marche pas, avec le meme shemas que toi???
par ailleurs, je me vois pas definir un passwd de userftp11; tu ne le mentionne pas
selon toi???
oui j’ai mis un mot de passe à userftp11.
Oui je m’authentifie avec contributeur ou lecteur et les mots de passe de login.txt
rebonjour,
et merci de ta reponse.
voila, vraiement j’en perds mon latin; puisque j’ai associé comme tu l’a dis
un mot de pass.
j’ai beau faire, et refaire j’ai toujours
530 Login incorrect.
Login failed.
ftp>
je ne sais plus quoi faire, je suis depassé. je ne vois vraiement pas l’endroit
ou sa bloque..
merci a toi si tu as une idée complementaire…
une info: je regarde mon fichier secure:
et j’ai :Jun 8 12:39:36 www vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=ftpdream rhost=www.letchidevweb.gp
Jun 8 12:39:36 www vsftpd: pam_succeed_if(vsftpd:auth): error retrieving information about user ftpdream
et portant j’ai bien fait la manipe coté db_load…., avec tes parametres:
selon toi,est ce que se message du type:—->
db_load: unexpected end of input data or key/data pair
db_load: odd number of key/data pairs
apres avoir validé la commande est concidéré comme valide????
puisque mon secure systhematiquement pas (vsftpd:auth) a ton avis.
merci..
cordialement si je te sollicite ainsi, a cause du boulot..
merci dans l’attente d’idée
rebonjour,
je reviens le plus rapidement; hééé enfin j’y suis arrivé..
hé bien, vraiement merci pour tous ton tuto, et des moments que tu à pris pour me repondre.
Et visiblement, il fallait mettre un saut de ligne dans le fichier login.txt,
et du coup je n’ai pas eu se type de msg:
db_load: unexpected end of input data or key/data pair
db_load: odd number of key/data pairs ; en retour de commande.
je l’ai essayer a 2 fois, donc je te confirme qu’il faille mettre un saut de ligne
–merci beaucoup olivier
cordialement poignet de main sincere.
une poignet de main:
Heureux de t’avoir aidé 😉
Bonjour
Est-ce que cette discussion est toujours active ?
Merci