Différences
Ci-dessous, les différences entre deux révisions de la page.
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:25] maclane45 |
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: | ||
- | ====== 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**. | ||
+ | ===== Configuration de VsftpD ===== | ||
- | + | On commence par sauvegarder le nécessaire : | |
- | + | ||
- | + | ||
- | ==== 1) Installation du nécessaire ==== | + | |
- | + | ||
- | [[:tutoriel:comment_installer_un_paquet|Installez les paquets]] suivants :\\ | + | |
- | [[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 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 [[:vim|vi]] ou [[:nano|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 87: | 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 101: | 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 114: | 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 125: | 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 149: | 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 165: | 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 181: | 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 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) : | + | 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. | ||
<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 212: | 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 219: | 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 247: | 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 283: | 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 291: | 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 312: | 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 320: | 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 349: | 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 370: | 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 378: | 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 384: | 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]] | ||
- | + | Pour commencer il faut recharger le fichier de configuration VsftpD. | |
- | ==== 7) Tests ==== | + | |
- | + | ||
- | 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]]\\ | + | |
- | FireFTP : https://addons.mozilla.org/fr/firefox/addon/684\\ | + | |
- | \\ | + | |
- | En commandes :\\ | + | |
- | <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 412: | 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 432: | 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 [[https://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]]// |