View previous topic :: View next topic |
Author |
Message |
mornik Apprentice


Joined: 12 Mar 2005 Posts: 184 Location: Niort
|
Posted: Mon Sep 03, 2007 1:02 pm Post subject: [vsftpd]utilisateurs virtuels et mysql |
|
|
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 :
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 dexemple 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
On utilise la base 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 dun 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 quil 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 |
|
 |
geekounet Bodhisattva


Joined: 11 Oct 2004 Posts: 3772
|
Posted: Mon Sep 03, 2007 4:15 pm Post subject: Re: [vsftpd]utilisateurs virtuels et mysql |
|
|
mornik wrote: | Modification du user ftp pour quil 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 |
|
 |
truc Advocate


Joined: 25 Jul 2005 Posts: 3199
|
Posted: Mon Sep 03, 2007 6:23 pm Post subject: |
|
|
ça fait effectivement mal aux yeux
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 |
|
 |
mornik Apprentice


Joined: 12 Mar 2005 Posts: 184 Location: Niort
|
Posted: Tue Sep 04, 2007 7:56 am Post subject: |
|
|
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 |
|
 |
|
|
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
|
|