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 01/10/2008, 22:12]
maclane45
vsftpd_et_pam_mysql [Le 02/06/2020, 15:52] (Version actuelle)
37.60.189.90 Ajout d'une commande pour enregistrer l'utilisateur vstpd avec mysql 8.0
Ligne 1: Ligne 1:
-====== VsftpD et authentification via pam_mysql sur base de données SQL ====== ​+{{tag>​Bionic BROUILLON reseau Tutoriel}}
  
-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.\\ +
-\\ +
-Pour rédiger ce tutoriel j'ai utilisé les adresses suivantes :\\ +
-\\ +
-http://​vsftpd.beasts.org/​vsftpd_conf.html (Page officielle du manuel VsftpD)\\ +
-http://​doc.ubuntu-fr.org/​vsftpd (Tutoriel Vsftpd pour Ubuntu 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)\\ +
-\\ +
-Ce tutoriel se déroule en plusieurs étapes, je vais tout expliquer pas à pas (aussi clairement que possible).\\ +
-\\+
  
 +====== 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érée à chaque création, suppression ou mise à jour d'​utilisateur.
  
 +===== Installation =====
  
 +[[:​tutoriel:​comment_installer_un_paquet|Installez les paquets]] **[[apt://​vsftpd,​mysql-server,​libpam-mysql,​openssl|vsftpd mysql-server libpam-mysql openssl]]**
  
 +Une fois ces logiciels installés, je vous conseille de suivre ce [[:​mysql|tutoriel MySQL]] afin de correctement sécuriser votre serveur
 +de base de données, notamment la partie **Configuration**.
  
-==== 1) Installation du nécessaire ​====+===== Configuration de VsftpD =====
  
-Installez les paquets suivants :\\ +On commence par sauvegarder le nécessaire :
-\\ +
-[[apt://​vsftpd|VsftpdD]]\\ +
-[[apt://​mysql-server|MySQL-Server]]\\ +
-[[apt://​libpam-mysql|libpam-MySQL]]\\ +
-[[apt://​openssl|OpenSSL]]\\ +
- +
-<​code>​ +
-sudo apt-get install vsftpd +
-sudo apt-get install mysql-server  +
-sudo apt-get install libpam-mysql +
-sudo apt-get install openssl +
-</​code>​ +
- +
-Une fois ces logiciels installés, je vous conseille de suivre ce tutoriel MySQL afin de protéger correctement sécuriser votre serveur +
-de base de données, partie "​Configuration"​ : http://​doc.ubuntu-fr.org/​mysql +
- +
- +
- +
-==== 2) Configuration de VsftpD ==== +
- +
-On commence par sauvegarder le nécessaire :\\+
  
 <​code>​ <​code>​
 sudo cp /​etc/​vsftpd.conf /​etc/​vsftpd.conf.OK sudo cp /​etc/​vsftpd.conf /​etc/​vsftpd.conf.OK
 </​code>​ </​code>​
-Ensuite vous utilisez l'​éditeur de texte de votre choix, personnellement j'​utilise "​vi"​ ou "​nano",​ pensez bien 
-à ouvrir le fichier en tant que root. 
  
-<​code>​ +[[:​tutoriel:​comment_editer_un_fichier|Éditez le fichier]] en tant qu'[[:sudo|administrateur]].
-sudo nano /etc/vsftpd.conf => mode texte +
-gksu gedit /​etc/​vsftpd.conf =>​ mode graphique +
-</​code>​+
  
-Ci dessous la configuration du fichier /​etc/​vsftpd.conf avec le détail de chaque option. Les utilisateurs virtuels se +Ci dessous la configuration du fichier ​**/​etc/​vsftpd.conf** avec le détail de chaque option. Les utilisateurs virtuels se 
-connectent et sont emprisonnés (chroot) dans un même dossier, les connections sont encryptées en SSL (Cipher DES-CBC3-SHA)+connectent et sont emprisonnés (chroot) dans un même dossier, les connections sont encryptées en SSL (**Cipher DES-CBC3-SHA**)
 et les options de connexion passives sont activées. et les options de connexion passives sont activées.
  
 <​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
  
-# Options des utilisateurs anonymes ici desactives+# Options des utilisateurs anonymes ici désactivés
 anonymous_enable=NO anonymous_enable=NO
 # Autorisation d'​upload pour les utilisateurs anonymes # Autorisation d'​upload pour les utilisateurs anonymes
 anon_upload_enable=NO anon_upload_enable=NO
-# Autorisation de creation ​de repertoire ​pour les utilisateurs anonymes+# Autorisation de création ​de répertoire ​pour les utilisateurs anonymes
 # mais aussi de suppression et de renommage # mais aussi de suppression et de renommage
 anon_other_write_enable=NO anon_other_write_enable=NO
Ligne 83: 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)
Ligne 91: Ligne 61:
 # 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 97: 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 110: 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 121: 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>​ 
-Options SSL+<note tip> 
 +Options ​supplémentaires pour le SSL, utiles si vous voulez encrypter les connexions utilisateur et connexions de données. 
 +</​note>​ 
 +<​file>​
 # 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 145: Ligne 118:
 # Emplacement du certificat d'​encryption SSL # Emplacement du certificat d'​encryption SSL
 rsa_cert_file=/​etc/​ssl/​certs/​vsftpd/​vsftpd.pem rsa_cert_file=/​etc/​ssl/​certs/​vsftpd/​vsftpd.pem
-# Emplacement de la clé privée  +# Emplacement de la clé privée ​(inutile et ne fonctionne pas ,il va la chercher dans le cert) 
-rsa_private_key_file=/​etc/​ssl/​certs/​vsftpd/​vsftpd.key +#rsa_private_key_file=/​etc/​ssl/​certs/​vsftpd/​vsftpd.key 
- +</​file>​ 
-Options d'​utilisation de VsftpD ​derriere ​un routeur (NAT) +<note tip> 
- +Options ​supplémentaires ​d'​utilisation de VsftpD ​derrière ​un routeur (NAT), pensez bien à ouvrir et rediriger les ports décrits ci-dessous vers l'​adresse IP locale de la machine hébergeant VsftpD 
-# Option permettant de desactiver ​la methode ​passive (PASV) +</​note>​ 
-deconseille ​si vous etes derriere ​un routeur+<​file>​ 
 +# Option permettant de désactiver ​la méthode ​passive (PASV) 
 +déconseille ​si vous êtes derrière ​un routeur
 pasv_promiscuous=NO pasv_promiscuous=NO
 # Mode passif autorise # Mode passif autorise
Ligne 161: 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>​
  
-Il faut penser à créer le dossier secure_chroot_dir Vsftpd (dans notre exemple /​var/​run/​vsftpd) +Il faut penser à créer le dossier ​**secure_chroot_dir** Vsftpd (dans notre exemple ​**/​var/​run/​vsftpd**
-et lui appliquer les permissions adéquates, il ne faut pas que les utilisateurs aient des droits +et lui appliquer les [[:permissions]] adéquates, il ne faut pas que les utilisateurs aient des droits d'​écriture dans ce répertoire.
-d'​écriture dans ce répertoire.+
  
 <​code>​ <​code>​
Ligne 177: Ligne 151:
 </​code>​ </​code>​
  
 +===== Configuration de MySQL =====
  
-==== 3) Préparation de la base de données MySQL ====+À ce stade, plusieurs possibilités pour administrer ​la base de données MySQL :\\
  
-A ce stade, plusieurs possiblités pour administrer la base de données MySQL : +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.
-En commande, pas très convivial mais efficace ou via une interface Web comme PhpMyAdmin ou WebMin.\\ +
-Concernant PhpMyAdmin et WebMin ​je vous laisse chercher, je vais donner les commandes MySQL de base +
-tout en précisant les besoins. +
- +
-Sous MySQL (en commande) :+
  
 <​code>​ <​code>​
-sudo mysql -u root -p ( puis taper le mot de passe de votre superutilisateur MySQL) ​+sudo mysql -u root -p (puis taper le mot de passe de votre superutilisateur MySQL)
 mysql> ​ mysql> ​
  
 # 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 208: 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 215: 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>​
  
 Notre base de données est créée et nous allons donc la renseigner avec un jeu d'​utilisateurs de test, voici la syntaxe pour ajouter un utilisateur,​ sachant Notre base de données est créée et nous allons donc la renseigner avec un jeu d'​utilisateurs de test, voici la syntaxe pour ajouter un utilisateur,​ sachant
-que cette commande est aussi utilisable sous PhpMyAdmin ou 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 ====
- +<note warning> La commande **sudo head -15 vsftpd.pem > vsftpd.key** 
-==== 4) Preparation ​du certificat SSL ==== +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 243: 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 *
 </​code>​ </​code>​
  
 +<note important>​
 La clé privée générée est auto-signée et certains clients vont donc afficher des alertes de sécurité, La clé privée générée est auto-signée et certains clients vont donc afficher des alertes de sécurité,
-car la clé n'est pas validée par une authorité de certification reconnue (Thwate, Verisign ​et compagnie)+car la clé n'est pas validée par une authorité de certification reconnue (Thawte, Verisign, etc) 
 +</​note>​
  
 Exemple de clé privée : Exemple de clé privée :
Ligne 279: Ligne 248:
 </​file>​ </​file>​
  
- +===== Configuration ​de pam_mysql ​=====
- +
-==== 5) Preparation ​de la librairie ​pam_mysql ====+
  
 On commence par sauvegarder l'​existant : On commence par sauvegarder l'​existant :
Ligne 287: Ligne 254:
 <​code>​ <​code>​
 sudo cp /​etc/​pam.d/​vsftpd /​etc/​pam.d/​vsftpd.ok sudo cp /​etc/​pam.d/​vsftpd /​etc/​pam.d/​vsftpd.ok
-cd /etc/pam.d 
-sudo nano vsftpd 
 </​code>​ </​code>​
  
-Vous devriez tomber sur quelque chose ressemblant à ça :+[[:​tutoriel:​comment_editer_un_fichier|Éditez le fichier]] **/​etc/​pam.d/​vsftpd** vous devriez tomber sur quelque chose ressemblant à ça :
  
 <​file>​ <​file>​
Ligne 308: Ligne 273:
 </​file>​ </​file>​
  
-Il faut commenter toutes les lignes avec un # ou effacer tout le contenu du fichier et coller le code ci dessous à la place+Il faut commenter toutes les lignes avec un **#** ou effacer tout le contenu du fichier et coller le code ci dessous à la place.
  
-<file>+<code>
  
 # fonction pam_mysql crypt=1 OK avec la fonction ENCRYPT() de MySQL # fonction pam_mysql crypt=1 OK avec la fonction ENCRYPT() de MySQL
Ligne 316: Ligne 281:
  
 # Minimum necesaire afin de se connecter # Minimum necesaire afin de se connecter
-# auth required pam_mysql.so ​verbose=1 ​user=vsftpd passwd=VsftpD host=localhost db=vsftpd table=users usercolumn=nom passwdcolumn=mdp crypt=1 +# auth required pam_mysql.so user=vsftpd passwd=VsftpD host=localhost db=vsftpd table=users usercolumn=nom passwdcolumn=mdp crypt=1 
-# account required pam_mysql.so ​verbose=1 ​user=vsftpd passwd=VsftpD host=localhost db=vsftpd table=users usercolumn=nom passwdcolumn=mdp crypt=1+# account required pam_mysql.so user=vsftpd passwd=VsftpD host=localhost db=vsftpd table=users usercolumn=nom passwdcolumn=mdp crypt=1
  
 # 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=users usercolumn=nom passwdcolumn=mdp 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=users usercolumn=nom passwdcolumn=mdp 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 
-</file+</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 :
- 
 \\ \\
 **verbose** ​ => Mode verbeux, nécessaire pour logger les accès ( 0=désactivé,​ 1 = activé )\\ **verbose** ​ => Mode verbeux, nécessaire pour logger les accès ( 0=désactivé,​ 1 = activé )\\
Ligne 345: Ligne 311:
 **logtimecolumn** => nom de la colonne ou seront stockés les heures de connexion\\ **logtimecolumn** => nom de la colonne ou seront stockés les heures de connexion\\
  
-La fonction ​"crypt" ​de la librairie pam_mysql accepte différents arguments (0, 1, 2, 3, 4) , cependant je n'en ai trouvé que deux qui fonctionnent avec  +La fonction ​**crypt** de la librairie pam_mysql accepte différents arguments (**0****1****2****3****4**) , cependant je n'en ai trouvé que deux qui fonctionnent avec mysql-server,​ bien que, sous mysql la fonction ​**MD5()** et la fonction ​**SHA1()** existent, elles ne renvoient pas les mêmes valeurs que le **crypt** fourni par pam_mysql. Autrement dit, les valeurs ne correspondent pas et l'​authentification échoue systématiquement.
-mysql-server,​ bien que, sous mysql la fonction MD5() et la fonction SHA1() existent, elles ne renvoient pas les mêmes valeurs que le crypt +
-fourni par pam_mysql. Autrement dit, les valeurs ne correspondent pas et l'​authentification échoue systématiquement.+
  
- +===== Configuration ​des partages =====
-==== 6) Montages ​des repertoires a partager ​====+
  
 Nos utilisateurs virtuels se connectent et sont emprisonnés dans un dossier dans lequel il n'ont pas les droits en écriture. Il faut donc leur monter des Nos utilisateurs virtuels se connectent et sont emprisonnés dans un dossier dans lequel il n'ont pas les droits en écriture. Il faut donc leur monter des
-répertoires en lecture et en écriture (si besoin). Dans notre exemple (cf fichier /​etc.vsftpd.conf) ce dossier /​home/​vsftpd+répertoires en lecture et en écriture (si besoin). Dans notre exemple (cf fichier ​**/​etc.vsftpd.conf**) ce dossier ​**/​home/​vsftpd**
  
-Nous allons monter deux repertoires nommés ​"dossier1" ​accessible en lecture et "dossier2" ​accessible en ecriture ​dans /​home/​vsftpd et les faire pointer +Nous allons monter deux repertoires nommés ​**dossier1** accessible en lecture et **dossier2** accessible en écriture ​dans **/​home/​vsftpd** et les faire pointer vers deux dossiers existants ​**dossier1** et **dossier2** dans **/​media/​donnees**\\
-vers deux dossiers existants ​"dossier1" ​et "dossier2" ​dans /​media/​donnees+
  
 <​code>​ <​code>​
Ligne 366: Ligne 328:
 </​code>​ </​code>​
  
-Il faut ensuite modifier le fichier /etc/fstab pour monter à chaque démarrage les répertoires partagés sur le serveur VsftpD, +Il faut ensuite modifier le fichier ​**/etc/fstab** pour monter à chaque démarrage les répertoires partagés sur le serveur VsftpD, 
-ajoutez à la fin de /etc/fstab les deux lignes suivantes.+ajoutez à la fin de **/etc/fstab** les deux lignes suivantes.
  
 <​code>​ <​code>​
Ligne 374: Ligne 336:
 </​code>​ </​code>​
  
-Pour que dossier2 soit en lecture / écriture il faut penser aux permissions du répertoire de destination.+Pour que **dossier2** soit en lecture/​écriture il faut penser aux permissions du répertoire de destination.
  
 <​code>​ <​code>​
Ligne 380: Ligne 342:
 </​code>​ </​code>​
  
 +===== 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
 +parlants. Autrement il existe **Filezilla** ou **FireFTP** sous Mozilla qui fonctionnent très bien.
  
 +[[:​tutoriel:​comment_installer_un_paquet|Installez les paquets]] suivants :
  
 +  * [[apt://​filezilla|filezilla]]
 +  * [[apt://​ftp-ssl|ftp-ssl]]
 +  * [[https://​addons.mozilla.org/​fr/​firefox/​addon/​684|Plugin FireFTP pour Firefox]]
  
-==== 7) Tests ==== +Pour commencer il faut recharger le fichier de configuration ​VsftpD.
- +
-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 +
-parlants. Autrement il existe "​Filezilla"​ ou "​FireFTP"​ sous Mozilla qui fonctionnent très bien.\\ +
-\\ +
-[[apt://​filezilla|filezilla]]\\ +
-[[apt://​ftp-ssl|ftp-ssl]]\\ +
-FireFTP : https://​addons.mozilla.org/​fr/​firefox/​addon/​684 +
- +
-<​code>​ +
-sudo apt-get install ftp-ssl +
-sudo apt-get install filezilla +
-</​code>​ +
- +
-Pour commencer il faut recharger le fichier de config ​VsftpD.+
  
 <​code>​ <​code>​
Ligne 404: Ligne 359:
 </​code>​ </​code>​
  
-Ensuite tentative de connexion en commande ou via un client graphique qui devrait normalement vous répondre comme ci-dessous.\\ +Ensuite tentative de connexion en commande ou via un client graphique qui devrait normalement vous répondre comme ci-dessous. Il est aussi possible de tester via un navigateur à l'​adresse ftp://​toto@localhost:​21 si vous avez laisser les options adéquates.\\
-Il est aussi possible de tester via un navigateur à l'​adresse ftp://​toto@localhost:​21 si vous avez laisser les options adéquates.\\+
  
 <​code>​ <​code>​
Ligne 424: Ligne 378:
 Si toutefois vous avez des problèmes de connexion (Authentication Failed) vérifiez les paramètres de cryptage de pam_mysql et la fonction\\ Si toutefois vous avez des problèmes de connexion (Authentication Failed) vérifiez les paramètres de cryptage de pam_mysql et la fonction\\
 utilisée dans MySQL-server pour crypter le mot de passe. Pour les problèmes de connexion sur nom de domaine vérifiez bien que tous les ports\\ utilisée dans MySQL-server pour crypter le mot de passe. Pour les problèmes de connexion sur nom de domaine vérifiez bien que tous les ports\\
-(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]] +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. 
-\\ + 
-\\ +===== Liens ===== 
- ​Contributeur : [[utilisateurs:​maclane45]],+ 
 +  * [[http://​vsftpd.beasts.org/​vsftpd_conf.html|Page officielle du manuel VsftpD)]] 
 +  * [[:​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]] 
 +  * [[https://​doc.fedora-fr.org/​wiki/​Vsftpd_:​_Installation_et_configuration|Page similaire sur le wiki de Fedora]] 
 + 
 +---- 
 + 
 +//Contributeur : [[:utilisateurs:​maclane45]]//
  • vsftpd_et_pam_mysql.1222891979.txt.gz
  • Dernière modification: Le 18/04/2011, 14:44
  • (modification externe)