Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| vsftpd_et_pam_mysql [Le 03/01/2010, 22:49] – 213.95.41.13 | vsftpd_et_pam_mysql [Le 11/09/2022, 11:41] (Version actuelle) – 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) moths-art | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | {{tag> | + | {{tag>Bionic |
| ---- | ---- | ||
| - | ====== 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> | |
| - | 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 | + | 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 |
| ===== Installation ===== | ===== Installation ===== | ||
| Ligne 30: | Ligne 30: | ||
| < | < | ||
| - | # Serveur en ecoute | + | # Serveur en écoute |
| listen=YES | listen=YES | ||
| - | # Port d' | + | # Port d’écoute |
| 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 / | # Utilisation de log pour les uploads et downloads (par defaut / | ||
| xferlog_enable=YES | xferlog_enable=YES | ||
| - | # Emplacement du fichier de log | + | # Emplacement du fichier de log |
| xferlog_file=/ | xferlog_file=/ | ||
| # 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 | + | # Utilisation de 2 fichiers de log différents |
| 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 | + | # Nombre maximum de connexions |
| max_per_ip=3 | max_per_ip=3 | ||
| - | # Duree en secondes d' | + | # Durée |
| idle_session_timeout=60 | idle_session_timeout=60 | ||
| - | # Duree en secondes d' | + | # Durée |
| data_connection_timeout=120 | data_connection_timeout=120 | ||
| - | # Debit maximum du serveur en bytes par secondes (0 = debit illimite) | + | # Débit |
| 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=/ | secure_chroot_dir=/ | ||
| # Nom du service d' | # Nom du service d' | ||
| pam_service_name=vsftpd | pam_service_name=vsftpd | ||
| - | # Utilisation des privileges | + | # Utilisation des privilèges |
| - | # permet notamment de donner les droits d' | + | # permet notamment de donner les droits d’écriture |
| # utilisateurs virtuels ont des droits d' | # utilisateurs virtuels ont des droits d' | ||
| 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 | + | # mais vous pouvez |
| 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 | + | # représente |
| local_root=/ | local_root=/ | ||
| </ | </ | ||
| Ligne 104: | Ligne 104: | ||
| # Activation du SSL | # Activation du SSL | ||
| ssl_enable=YES | ssl_enable=YES | ||
| - | # Oblige les connexions de donnees | + | # Oblige les connexions de données |
| - | # Si cette option est activee | + | # Si cette option est activée |
| - | # 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' | + | # Oblige la connexion d' |
| - | # Si cette option est activee | + | # Si cette option est activée |
| # 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: | ||
| </ | </ | ||
| < | < | ||
| - | # Option permettant de desactiver | + | # Option permettant de désactiver |
| - | # deconseille | + | # déconseille |
| 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 | + | # Demande |
| pasv_addr_resolve=YES | pasv_addr_resolve=YES | ||
| - | # Option permettant de desactiver | + | # Option permettant de désactiver |
| port_promiscuous=NO | port_promiscuous=NO | ||
| </ | </ | ||
| Ligne 156: | Ligne 156: | ||
| En commande, pas très convivial mais efficace ou via une interface Web comme [[: | En commande, pas très convivial mais efficace ou via une interface Web comme [[: | ||
| - | Concernant PhpMyAdmin et WebMin | + | Concernant PhpMyAdmin et Webmin |
| < | < | ||
| Ligne 164: | Ligne 164: | ||
| # Création d'une nouvelle base nommée " | # Création d'une nouvelle base nommée " | ||
| CREATE DATABASE vsftpd; | CREATE DATABASE vsftpd; | ||
| - | # Attribution des privileges | + | # Attribution des privilèges |
| + | # 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 ' | GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO ' | ||
| + | # Sous Mysql 8.0 ou > : | ||
| + | # CREATE USER ' | ||
| + | # GRANT ALL ON vsftpd.* TO ' | ||
| # 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 | + | # Création |
| - | # ID => identifiant unique (auto-incrementation | + | # ID => identifiant unique (auto-incrémentation |
| # 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 | + | # Création |
| - | # ID => identifiant unique (auto-incrementation | + | # ID => identifiant unique (auto-incrémentation |
| # 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); | ||
| </ | </ | ||
| Ligne 191: | Ligne 196: | ||
| que cette commande est aussi utilisable sous [[: | que cette commande est aussi utilisable sous [[: | ||
| " | " | ||
| - | Ceci afin de détailler l' | + | Ceci afin de détailler l' |
| < | < | ||
| - | # Creation | + | # Création |
| INSERT INTO utilisateurs (NOM, PASS, CRYPTAGE) VALUES(' | INSERT INTO utilisateurs (NOM, PASS, CRYPTAGE) VALUES(' | ||
| - | # Creation | + | # Création |
| INSERT INTO utilisateurs (NOM, PASS, CRYPTAGE) VALUES(' | INSERT INTO utilisateurs (NOM, PASS, CRYPTAGE) VALUES(' | ||
| - | # Creation | + | # Création |
| INSERT INTO utilisateurs (NOM, PASS, CRYPTAGE) VALUES(' | INSERT INTO utilisateurs (NOM, PASS, CRYPTAGE) VALUES(' | ||
| </ | </ | ||
| Ligne 280: | 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=logging logmsgcolumn=msg logusercolumn=user 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 |
| - | 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 | + | 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 |
| </ | </ | ||
| < | < | ||
| Ligne 337: | Ligne 342: | ||
| </ | </ | ||
| - | ===== 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' | Pour faire mes tests j'ai utilisé différents clients ftp, cependant je conseille **ftp-ssl** pour les tests car les messages d' | ||
| Ligne 375: | Ligne 380: | ||
| (connexion et plage de ports passifs) sont bien ouverts et redirigés vers l' | (connexion et plage de ports passifs) sont bien ouverts et redirigés vers l' | ||
| - | Une autre solution est de venir en discuter [[http:// | + | Une autre solution est de venir en discuter [[https:// |
| ===== Liens ===== | ===== Liens ===== | ||
| Ligne 382: | Ligne 387: | ||
| * [[: | * [[: | ||
| * [[http:// | * [[http:// | ||
| + | * [[https:// | ||
| ---- | ---- | ||
| // | // | ||
