Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[vsftpd]utilisateurs virtuels et mysql
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
mornik
Apprentice
Apprentice


Joined: 12 Mar 2005
Posts: 184
Location: Niort

PostPosted: Mon Sep 03, 2007 1:02 pm    Post subject: [vsftpd]utilisateurs virtuels et mysql Reply with quote

Le but est ici d'avoir des utilisateurs "virtuels" sur notre server ftp vsftpd.

Ces utilisateurs seront définis sous mysql (user et password). Ils pourront facilement avoir une configuration personnélisée (ou bien sur commune).

Pour commencer on installe le server ftp vsftpd
Installation de vsftpd :
Code:
emerge -av vsftpd


Installation de pam_mysql
Code:
USE="openssl" emerge -av pam_mysql


Creation du répertoire racine du site ftp:
Code:
mkdir -p /var/ftp/mysite.com


Copie du fichier de configuration d’exemple en fichier de configuration globale :
Code:
cp /etc/vsftpd/vsftpd.conf.example /etc/vsftpd/vsftpd.net.conf


Modifier la configuration vsftpd :
Code:

vi /etc/vsftpd/vsftpd.conf
listen=YES
anonymous_enable=NO => on refuse les connections anonymous
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES => port ftp
ftpd_banner=Serveur ftp monsite.com => message affiché à la connection, sur le server
local_enable=YES => on autorise les user système à se connecter au server (facultatif)
chroot_local_user=YES => chaque user est enfermé dans son répertoire "racine". Il ne peut pas remonter l'arborescence
# Chaque utilisateur va avoir un fichier de configuration specifique
user_config_dir=/etc/vsftpd/users_conf
# Pour l'identification via mysql
guest_enable=YES
guest_username=ftp
local_root=/var/ftp/$USER
pam_service_name=vsftpd
user_sub_token=$USER
virtual_use_local_privs=YES


On crée le répertoire /etc/vsftpd/users_conf :
Code:
mkdir /etc/vsftpd/users_conf


Un exemple de fichier utilisateur. L'utilisateur alexandre à ici l'ensemble des droits d'écriture sur le répertoire (création d'un nouveau répertoire, upload, delete de fichiers etc..). Le répertoire par défaut est alexandre, à l'intérieur du répertoire racine du server (cad dans : /var/ftp/mysite.com/alexandre)
Code:
cat /etc/vsftpd/users_conf/alexandre
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=alexandre
local_umask=022


Modifier /etc/pam.d/vsftpd :
user_vsftpd : utilisateur mysql utilisé pour l'identification pam.
password_vsftpd : mot de passe attaché à user_vsftpd
localhost : server hébergeant la base mysql.
uservsftpd : table contenant la liste des utilisateurs virtuels
name : champ contenant l'identifiant du user virtuel (dans mon exemple alexandre)
passwd : champ contenant le password du user
Les valeures suivante sont communes à tous les utilisateurs virtuels.

Le champs crypt définis la valeur de cryptage des données dans la table. 0 correspond à une valeure en claire, 2 cryptée.
Il ne faut pas oublié que le protocole ftp fait transiter les couples user/mdp en claire sur le réseau.
Code:

auth optional pam_mysql.so user=user_vsftpd \
passwd=password_vsftpd host=localhost db=vsftpd table=uservsftpd usercolumn=name \
passwdcolumn=passwd crypt=0

auth required pam_mysql.so user=user_vsftpd \
passwd=password_vsftpd host=localhost db=vsftpd table=uservsftpd usercolumn=name \
passwdcolumn=passwd crypt=0

account required pam_mysql.so user=user_vsftpd \
passwd=password_vsftpd host=localhost db=vsftpd table=uservsftpd usercolumn=name \
passwdcolumn=passwd crypt=0


Pour la partie mysql : Connexion à la base mysql
Code:
$ mysql -u root -p


On utilise la base mysql :
Code:
use mysql


On crée un user vsftpd
Code:
INSERT INTO user (host,user,password) VALUES ('localhost','user_vsftpd','');


On redefinis son password :
Code:
UPDATE user set password=PASSWORD('password_vsftpd') WHERE user='user_vsftpd';


On crée une base de données vsftpd et on rentre dans la base :
Code:
create database vsftpd; use vsftpd


On crée la table des utilisateurs virtuels :
Code:
create table uservsftpd ( name char(16) binary , passwd char(16) binary );


Mise a jour des droits de la table :
Code:
GRANT select ON vsftpd.* to vsftpd; FLUSH PRIVILEGES;


Creation d’un user virtuel :
Code:
INSERT into uservsftpd (name, passwd) VALUES ('utilisateur_virtuel_1','mot_de_passe_en_claire');


On peut choisir un répertoire différent. Dans ce cas il faut adapter les droits :
Code:
chown -R root:ftp /home/mp3 chmod -R 775 /home/mp3


Modification du user ftp pour qu’il appartienne au groupe ftp et pour que son home soit /var/ftp/ (dans /etc/passwd et /etc/group) :
Code:
|grep ftp  /etc/passwd
ftp:x:21:21:added by portage for ftpbase:/var/ftp:/sbin/nologin
grep ftp /etc/group
ftp:x:21:ftp


Ajout du serveur vsftp à la liste des serveur à démarrer (spécifique gentoo) :
Code:
rc-update add vsftpd default


Démarrage du serveur :
Code:
/etc/init.d/svftpd start


test :
Code:

D:\Documents and Settings\alexandre>ftp mysite.com
Connecté à mysite.com.
220 Serveur ftp mysite.com
Utilisateur (mysite.com:(none)) : alexandre
331 Please specify the password.
Mot de passe :
230 Login successful.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
bigboss.jpg
users_conf
226 Directory send OK.
ftp : 118 octets reçus en 0,00 secondes à 118000,00 Ko/sec.
ftp>


Et pour finir on active la surveillance par fail2ban :
Code:
[VSFTPD]
# Option: enabled
# Notes.: enable monitoring for this section.
# Values: [true | false] Default: false
#
enabled = true


On redémarre fail2ban pour la prise en compte de notre modification :
Code:
/etc/init.d/fail2ban restart


On oublira pas d'ouvrir les ports 20 et 21 du firewall (voir le post de bouleetbil par exemple)

Edit 1 : Petite correction (suppression du cat en attendant de faire mieux ^^
_________________
Pousser pas j'y suis déjà !


Last edited by mornik on Tue Sep 04, 2007 7:58 am; edited 1 time in total
Back to top
View user's profile Send private message
geekounet
Bodhisattva
Bodhisattva


Joined: 11 Oct 2004
Posts: 3772
Location: Wellington, Aotearoa

PostPosted: Mon Sep 03, 2007 4:15 pm    Post subject: Re: [vsftpd]utilisateurs virtuels et mysql Reply with quote

mornik wrote:
Modification du user ftp pour qu’il appartienne au groupe ftp et pour que son home soit /var/ftp/ (dans /etc/passwd et /etc/group) :
Code:
cat /etc/passwd|grep ftp
ftp:x:21:21:added by portage for ftpbase:/var/ftp:/sbin/nologin
cat /etc/group | grep ftp
ftp:x:21:ftp

Haaaa mes yeux !! Vires moi ces cat inutiles s'il-te-plait, tu viens de tuer 2 chatons là, malheureux !

EDIT: d'autres part, t'as aussi les commandes getent passwd ftp et getent group ftp pour ça :)
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Mon Sep 03, 2007 6:23 pm    Post subject: Reply with quote

ça fait effectivement mal aux yeux :P

Par contre, merci, c'est un post très interessant :)
_________________
The End of the Internet!


Last edited by truc on Tue Sep 04, 2007 9:37 am; edited 1 time in total
Back to top
View user's profile Send private message
mornik
Apprentice
Apprentice


Joined: 12 Mar 2005
Posts: 184
Location: Niort

PostPosted: Tue Sep 04, 2007 7:56 am    Post subject: Reply with quote

oui c'est vrai le cat est moche. ça marche si je dits que c'etait la fatigue ? non ? bon ok je file corriger rapidement ça. Par contre je connaissais pas getent passwd ftp et getent group ftp. Je regarderai ça ce soir.
_________________
Pousser pas j'y suis déjà !
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum