Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
vsftpd_et_pam_mysql [Le 16/01/2009, 10:31]
_Enchained lien permissions + retouches de forme
vsftpd_et_pam_mysql [Le 11/09/2022, 11:41] (Version actuelle)
moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
Ligne 1: Ligne 1:
-{{tag>​BROUILLON ​Gutsy Hardy Tutoriel}}+{{tag>Bionic ​BROUILLON ​reseau ​Tutoriel}}
  
 ---- ----
  
-====== VsftpD et authentification via pam_mysql sur base de données SQL ======  +====== VsftpD et authentification via pam_mysql sur base de données SQL ====== 
- +<note warning>​Cette page aurait besoin d'une mise à jour, à lire avec précaution.</​note>​ 
-Ce tutoriel vous servira à authentifier des utilisateurs VsftpD grâce à une base de données MySQL. Le but étant de ne pas utiliser une base de données Berkeley qui doit être re-génénée ​à chaque création, suppression ou mise à jour d'​utilisateur. Je précise que j'ai réalisé cette installation sur une Ubuntu 8.04 Server.+Ce tutoriel vous servira à authentifier des utilisateurs VsftpD grâce à une base de données MySQL. Le but étant de ne pas utiliser une base de données Berkeley qui doit être re-générée ​à chaque création, suppression ou mise à jour d'​utilisateur.
  
 ===== Installation ===== ===== Installation =====
Ligne 30: Ligne 30:
 <​file>​ <​file>​
  
-# Serveur en ecoute+# Serveur en écoute
 listen=YES listen=YES
-# Port d'​ecoute ​du serveur+# Port d’écoute ​du serveur
 listen_port=21 listen_port=21
  
Ligne 53: Ligne 53:
 # Monitoring de base via `ps -ef | grep vsftpd` # Monitoring de base via `ps -ef | grep vsftpd`
 setproctitle_enable=YES setproctitle_enable=YES
-# Active les messages de changement de repertoire+# Active les messages de changement de répertoire
 dirmessage_enable=YES dirmessage_enable=YES
 # Utilisation de log pour les uploads et downloads (par defaut /​var/​log/​vsftpd.log) # Utilisation de log pour les uploads et downloads (par defaut /​var/​log/​vsftpd.log)
 xferlog_enable=YES xferlog_enable=YES
-# Emplacement du fichier de log +# Emplacement du fichier de log
 xferlog_file=/​var/​log/​vsftpd.log xferlog_file=/​var/​log/​vsftpd.log
 # Formatage de la log au standard wu-ftpd # Formatage de la log au standard wu-ftpd
 xferlog_std_format=YES xferlog_std_format=YES
-# Utilisation de 2 fichiers de log differents ​(Par defaut ​/​var/​log/​xferlog et /​var/​log/​vsftpd.log)+# Utilisation de 2 fichiers de log différents ​(Par défaut ​/​var/​log/​xferlog et /​var/​log/​vsftpd.log)
 dual_log_enable=YES dual_log_enable=YES
  
Ligne 67: Ligne 67:
 # Nombre de clients maximum # Nombre de clients maximum
 max_clients=30 max_clients=30
-# Nombre maximum de connections ​par clients+# Nombre maximum de connexions ​par clients
 max_per_ip=3 max_per_ip=3
-Duree en secondes d'​inactivite ​avant deconnexion ​de la session+Durée ​en secondes d’inactivité ​avant déconnexion ​de la session
 idle_session_timeout=60 idle_session_timeout=60
-Duree en secondes d'​inactivite ​avant deconnexion ​de donnees+Durée ​en secondes d’inactivité ​avant déconnexion ​de données
 data_connection_timeout=120 data_connection_timeout=120
-Debit maximum du serveur en bytes par secondes (0 = debit illimite)+Débit ​maximum du serveur en bytes par secondes (0 = débit illimité)
 local_max_rate=0 local_max_rate=0
 # Message de bienvenue affiche durant la phase de connexion # Message de bienvenue affiche durant la phase de connexion
Ligne 80: Ligne 80:
 chroot_local_user=YES chroot_local_user=YES
 # Dossier utiliser pour le chroot (doit appartenir a root et avec un chmod 755) # Dossier utiliser pour le chroot (doit appartenir a root et avec un chmod 755)
-# car il ne doit surtout pas etre inscriptible (writable) par tous le monde+# car il ne doit surtout pas être inscriptible (writable) par tous le monde
 secure_chroot_dir=/​var/​run/​vsftpd secure_chroot_dir=/​var/​run/​vsftpd
 # Nom du service d'​authentification utilise par le serveur vsftpd # Nom du service d'​authentification utilise par le serveur vsftpd
 pam_service_name=vsftpd pam_service_name=vsftpd
-# Utilisation des privileges ​locaux pour les utilisateurs ​virutels +# Utilisation des privilèges ​locaux pour les utilisateurs ​virtuels 
-# permet notamment de donner les droits d'​ecriture ​car sinon les +# permet notamment de donner les droits d’écriture ​car sinon les
 # utilisateurs virtuels ont des droits d'​utilisateurs anonymes # utilisateurs virtuels ont des droits d'​utilisateurs anonymes
 virtual_use_local_privs=YES virtual_use_local_privs=YES
Ligne 91: Ligne 91:
 guest_enable=YES guest_enable=YES
 # Utilisateur du lancement du serveur vsftpd # Utilisateur du lancement du serveur vsftpd
-# ici c'est le meme utilisateur que le serveur apache +# ici c'est le même utilisateur que le serveur apache 
-# mais vous pouvez ​creer un utilisateur ​dedie a cette tache+# mais vous pouvez ​créer ​un utilisateur ​dédie à cette tache
 guest_username=www-data guest_username=www-data
-# Dossier ou vont etre encapsules les utilisateurs virtuels +# Dossier ou vont être encapsules les utilisateurs virtuels 
-represente ​le / du site ftp+représente ​le / du site ftp
 local_root=/​home/​vsftpd local_root=/​home/​vsftpd
 </​file>​ </​file>​
Ligne 104: Ligne 104:
 # Activation du SSL # Activation du SSL
 ssl_enable=YES ssl_enable=YES
-# Oblige les connexions de donnees ​a passer par du SSL +# Oblige les connexions de données ​a passer par du SSL 
-# Si cette option est activee ​les clients ftp ne gerant ​pas  +# Si cette option est activée ​les clients ftp ne gérant ​pas 
-# SSL ne pourront envoyer ni recevoir de donnees+# SSL ne pourront envoyer ni recevoir de données
 force_local_data_ssl=NO force_local_data_ssl=NO
-# Oblige la connexion d'​identification a etre encryptee ​en SSL +# Oblige la connexion d'​identification a être encryptée ​en SSL 
-# Si cette option est activee ​les clients ftp ne gerant ​pas +# Si cette option est activée ​les clients ftp ne gérant ​pas
 # SSL ne pourront plus se connecter # SSL ne pourront plus se connecter
 force_local_logins_ssl=YES force_local_logins_ssl=YES
Ligne 125: Ligne 125:
 </​note>​ </​note>​
 <​file>​ <​file>​
-# Option permettant de desactiver ​la methode ​passive (PASV) +# Option permettant de désactiver ​la méthode ​passive (PASV) 
-deconseille ​si vous etes derriere ​un routeur+déconseille ​si vous êtes derrière ​un routeur
 pasv_promiscuous=NO pasv_promiscuous=NO
 # Mode passif autorise # Mode passif autorise
Ligne 136: Ligne 136:
 # Adresse IP ou nom de domaine a renseigner # Adresse IP ou nom de domaine a renseigner
 pasv_address=monsiteftp.com pasv_address=monsiteftp.com
-# Demande ​ded resolution ​DNS du nom de domaine (pour tous ceux en DynDNS, no-ip, etc ...)+# Demande ​de résolution ​DNS du nom de domaine (pour tous ceux en DynDNS, no-ip, etc ...)
 pasv_addr_resolve=YES pasv_addr_resolve=YES
-# Option permettant de desactiver ​la methode ​(PORT)+# Option permettant de désactiver ​la méthode ​(PORT)
 port_promiscuous=NO port_promiscuous=NO
 </​file>​ </​file>​
Ligne 156: Ligne 156:
  
 En commande, pas très convivial mais efficace ou via une interface Web comme [[:​lamp|PhpMyAdmin]] ou [[:​webmin|Webmin]]. En commande, pas très convivial mais efficace ou via une interface Web comme [[:​lamp|PhpMyAdmin]] ou [[:​webmin|Webmin]].
-Concernant PhpMyAdmin et WebMin ​je vous laisse chercher, je vais donner les commandes MySQL de base tout en précisant les besoins.+Concernant PhpMyAdmin et Webmin ​je vous laisse chercher, je vais donner les commandes MySQL de base tout en précisant les besoins.
  
 <​code>​ <​code>​
Ligne 164: Ligne 164:
 # Création d'une nouvelle base nommée "​vsftpd"​ # Création d'une nouvelle base nommée "​vsftpd"​
 CREATE DATABASE vsftpd; CREATE DATABASE vsftpd;
-# Attribution des privileges ​a l'​utilisateur vsftpd avec comme mot de passe : MOTDEPASSE_VSFTPD+# Attribution des privilèges ​a l'​utilisateur vsftpd avec comme mot de passe : MOTDEPASSE_VSFTPD 
 +# MOTDEPASSE_VSFTPD ne doit pas contenir de caractère # : interpréte le reste de la ligne comme un commentaire. ​
 GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO '​vsftpd'​@'​localhost'​ IDENTIFIED BY '​MOTDEPASSE_VSFTPD';​ GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO '​vsftpd'​@'​localhost'​ IDENTIFIED BY '​MOTDEPASSE_VSFTPD';​
 +# Sous Mysql 8.0 ou >  :
 +# CREATE USER '​vsftpd'​@'​localhost'​ IDENTIFIED BY '​MOTDEPASSE_VSFTPD';​
 +# GRANT ALL ON vsftpd.* TO '​vsftpd'​@'​localhost';​
 # Application des privileges # Application des privileges
 FLUSH PRIVILEGES; FLUSH PRIVILEGES;
-# Utilisation de la base de donnees fraichement creee+# Utilisation de la base de données fraîchement créée
 USE vsftpd; USE vsftpd;
  
-Creation ​d'une table utilsateurs ​avec 4 champs (ID, NOM, PASS, CRYPTAGE) +Création ​d'une table utilisateurs ​avec 4 champs (ID, NOM, PASS, CRYPTAGE) 
-# ID => identifiant unique (auto-incrementation ​et cle primaire)+# ID => identifiant unique (auto-incrémentation ​et clé primaire)
 # NOM => texte (nul non autorise) # NOM => texte (nul non autorise)
 # PASS => texte (nul non autorise) # PASS => texte (nul non autorise)
Ligne 178: Ligne 182:
 CREATE TABLE `utilisateurs` ( `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `NOM` TEXT NOT NULL , `PASS` TEXT NOT NULL , `CRYPTAGE` TEXT ); CREATE TABLE `utilisateurs` ( `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `NOM` TEXT NOT NULL , `PASS` TEXT NOT NULL , `CRYPTAGE` TEXT );
  
-Creation ​d'une table logging avec 6 champs (ID, USER, HOST, RHOST, MSG, TIME) +Création ​d'une table logging avec 6 champs (ID, USER, HOST, RHOST, MSG, TIME) 
-# ID => identifiant unique (auto-incrementation ​et cle primaire)+# ID => identifiant unique (auto-incrémentation ​et clé primaire)
 # USER => texte (nul non autorise) # USER => texte (nul non autorise)
 # HOST => texte (nul non autorise) # HOST => texte (nul non autorise)
Ligne 185: Ligne 189:
 # TIME => texte (nul non autorise) # TIME => texte (nul non autorise)
 # MSG => => texte (nul non autorise) # MSG => => texte (nul non autorise)
-CREATE TABLE `logging` ( `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `USER` TEXT NOT NULL , `HOST` TEXT NOT NULL , `RHOST` TEXT NOT NULL , `TIME` TEXT NOT NULL , `MSG` TEXT NOT NULL );+# PID => texte (nul non autorisé) 
 +CREATE TABLE `logging` ( `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `USER` TEXT NOT NULL , `HOST` TEXT NOT NULL , `RHOST` TEXT NOT NULL , `TIME` TEXT NOT NULL , `MSG` TEXT NOT NULL , `PID` TEXT NOT NULL);
 </​code>​ </​code>​
  
Ligne 191: Ligne 196:
 que cette commande est aussi utilisable sous [[:​lamp|PhpMyAdmin]] ou [[:​webmin|Webmin]] pour ceux qui n'ont pas envie de s'​embêter. Nous allons créer 3 utilisateurs nommés respectivement que cette commande est aussi utilisable sous [[:​lamp|PhpMyAdmin]] ou [[:​webmin|Webmin]] pour ceux qui n'ont pas envie de s'​embêter. Nous allons créer 3 utilisateurs nommés respectivement
 "​toto",​ "​tata"​ et "​titi"​ avec comme mots de passes respectifs **toto**, **tata** et **titi**. "​toto",​ "​tata"​ et "​titi"​ avec comme mots de passes respectifs **toto**, **tata** et **titi**.
-Ceci afin de détailler l'​utilisation de la librairie pam_mysql et de MySQL-server. ​+Ceci afin de détailler l'​utilisation de la librairie pam_mysql et de MySQL-server.
  
 <​code>​ <​code>​
-Creation ​de l'​utilisateur toto avec comme mot de passe toto stocke en clair (aucun cryptage)+Création ​de l'​utilisateur toto avec comme mot de passe toto stocke en clair (aucun cryptage)
 INSERT INTO utilisateurs (NOM, PASS, CRYPTAGE) VALUES('​toto',​ '​toto',​ '​aucun'​ ); INSERT INTO utilisateurs (NOM, PASS, CRYPTAGE) VALUES('​toto',​ '​toto',​ '​aucun'​ );
  
-Creation ​de l'​utilisateur tata avec comme mot de passe tata crypte avec la fonction MySQL PASSWORD() => deconseille dans le manuel MySQL+Création ​de l'​utilisateur tata avec comme mot de passe tata crypte avec la fonction MySQL PASSWORD() => deconseille dans le manuel MySQL
 INSERT INTO utilisateurs (NOM, PASS, CRYPTAGE) VALUES('​tata',​ PASSWORD('​tata'​),​ '​PASSWORD'​ ); INSERT INTO utilisateurs (NOM, PASS, CRYPTAGE) VALUES('​tata',​ PASSWORD('​tata'​),​ '​PASSWORD'​ );
  
-Creation ​de l'​utilisateur titi avec comme mot de passe titi crypte avec la fonction MySQL ENCRYPT() => conseille a la place de PASSWORD()+Création ​de l'​utilisateur titi avec comme mot de passe titi crypte avec la fonction MySQL ENCRYPT() => conseille a la place de PASSWORD()
 INSERT INTO utilisateurs (NOM, PASS, CRYPTAGE) VALUES('​titi',​ ENCRYPT('​titi'​),​ '​ENCRYPT'​ ); INSERT INTO utilisateurs (NOM, PASS, CRYPTAGE) VALUES('​titi',​ ENCRYPT('​titi'​),​ '​ENCRYPT'​ );
 </​code>​ </​code>​
  
 ===== Configuration du certificat SSL ===== ===== Configuration du certificat SSL =====
 +<note warning> La commande **sudo head -15 vsftpd.pem > vsftpd.key** 
 +peut rendre votre système fortement instable</​note>​
 <​code>​ <​code>​
 # Creation du repertoire pour stocker les certificats # Creation du repertoire pour stocker les certificats
Ligne 211: Ligne 217:
 # Creation du certificat SSL valable 1 an  # Creation du certificat SSL valable 1 an 
 sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout vsftpd.pem -out vsftpd.pem sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout vsftpd.pem -out vsftpd.pem
-Affichage ​de la partie [PRIVATE_KEY] du certificat ​(a recopier ​dans le fichier vsftpd.key) +Copie de la partie [PRIVATE_KEY] du certificat dans le fichier vsftpd.key 
-sudo head -15 vsftpd.pem +sudo head -15 vsftpd.pem ​vsftpd.key
-# Creation d'un fichier vide vsftpd.key +
-sudo touch vsftpd.key +
-# Editez le fichier vsftpd.key avec un editeur de texte et  +
-# coller le contenu de la commande `sudo head -15 vsftpd.pem` +
-# qui doit vous afficher la partie entre BEGIN RSA PRIVATE KEY  +
-# et END RSA PRIVATE KEY +
-#+
 # Protection du certificat et de la cle privee # Protection du certificat et de la cle privee
 sudo chmod 600 * sudo chmod 600 *
Ligne 286: Ligne 285:
  
 # Connexion avec logging en base de donnees des acces # Connexion avec logging en base de donnees des acces
-auth required pam_mysql.so verbose=1 user=vsftpd passwd=VsftpD host=localhost db=vsftpd table=utilisateurs usercolumn=nom passwdcolumn=pass crypt=1 sqllog=true logtable=log logmsgcolumn=msg logusercolumn=user ​logpidcolumn=pid ​loghostcolumn=host logrhostcolumn=rhost logtimecolumn=time +auth required pam_mysql.so verbose=1 user=vsftpd passwd=VsftpD host=localhost db=vsftpd table=utilisateurs usercolumn=NOM passwdcolumn=PASS crypt=1 sqllog=true logtable=logging ​logmsgcolumn=msg logusercolumn=user loghostcolumn=host logrhostcolumn=rhost logtimecolumn=time ​logpidcolumn=pid 
-account required pam_mysql.so verbose=1 user=vsftpd passwd=VsftpD host=localhost db=vsftpd table=utilisateurs usercolumn=nom passwdcolumn=pass crypt=1 sqllog=true logtable=log logmsgcolumn=msg logusercolumn=user ​logpidcolumn=pid ​loghostcolumn=host logrhostcolumn=rhost logtimecolumn=time+account required pam_mysql.so verbose=1 user=vsftpd passwd=VsftpD host=localhost db=vsftpd table=utilisateurs usercolumn=NOM passwdcolumn=PASS crypt=1 sqllog=true logtable=logging ​logmsgcolumn=msg logusercolumn=user loghostcolumn=host logrhostcolumn=rhost logtimecolumn=time ​logpidcolumn=pid
 </​code>​ </​code>​
-\\+<​note>​ 
 +N'​oubliez pas de remplacer VsftpD par le mot de passe que vous avez choisi lors de la création de la base de données 
 +</​note>​
 La librairie pam_mysql acceptent plusieurs arguments dont voici le détail : La librairie pam_mysql acceptent plusieurs arguments dont voici le détail :
 \\ \\
Ligne 341: Ligne 342:
 </​code>​ </​code>​
  
-===== Utilisation =====+===== Utilisation ===== test
  
 Pour faire mes tests j'ai utilisé différents clients ftp, cependant je conseille **ftp-ssl** pour les tests car les messages d'​erreurs sont plus Pour faire mes tests j'ai utilisé différents clients ftp, cependant je conseille **ftp-ssl** pour les tests car les messages d'​erreurs sont plus
Ligne 379: Ligne 380:
 (connexion et plage de ports passifs) sont bien ouverts et redirigés vers l'​adresse IP locale de votre machine. (connexion et plage de ports passifs) sont bien ouverts et redirigés vers l'​adresse IP locale de votre machine.
  
-Une autre solution est de venir en discuter [[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=198367|ici]] ou [[http://​forum.ubuntu-fr.org|ici]]. Bon courage.+Une autre solution est de venir en discuter [[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=198367|ici]] ou [[http://​forum.ubuntu-fr.org|ici]]. Bon courage.
  
 ===== Liens ===== ===== Liens =====
Ligne 386: Ligne 387:
   * [[:​Vsftpd|Vsftpd sur ubuntu-fr]] (pour toute la partie installation du serveur et configuration des certificats SSL)   * [[:​Vsftpd|Vsftpd sur ubuntu-fr]] (pour toute la partie installation du serveur et configuration des certificats SSL)
   * [[http://​pam-mysql.sourceforge.net/​Documentation/​package-readme.php?​seemore=y|le README de la librairie pam_mysql]]   * [[http://​pam-mysql.sourceforge.net/​Documentation/​package-readme.php?​seemore=y|le README de la librairie pam_mysql]]
 +  * [[https://​doc.fedora-fr.org/​wiki/​Vsftpd_:​_Installation_et_configuration|Page similaire sur le wiki de Fedora]]
  
 ---- ----
  
 //​Contributeur : [[:​utilisateurs:​maclane45]]//​ //​Contributeur : [[:​utilisateurs:​maclane45]]//​
  • vsftpd_et_pam_mysql.1232098283.txt.gz
  • Dernière modification: Le 18/04/2011, 14:46
  • (modification externe)