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 | ||
wiki:divers:coin_geek:ftp [2015/08/28 11:54] 127.0.0.1 modification externe |
wiki:divers:coin_geek:ftp [2020/06/27 18:16] (Version actuelle) |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Créer un FTP privé ====== | ||
+ | Le tour de force de cette configuration est qu' | ||
+ | |||
+ | Vous aurez pour cela besoin d'une base de donnée ainsi que d'un serveur **vsftpd** (peuvent être sur deux machines différentes). | ||
+ | |||
+ | * 1 : Installez **vsftpd** : | ||
+ | |||
+ | apt-get install vsftpd | ||
+ | |||
+ | * 2 : Configuration de **vsftpd** : | ||
+ | |||
+ | Réglage des ports : | ||
+ | |||
+ | listen_port=22 | ||
+ | pasv_min_port=20000 | ||
+ | pasv_max_port=20050 | ||
+ | |||
+ | Nous allons utiliser les utilisateurs locaux : | ||
+ | |||
+ | local_enable=YES | ||
+ | |||
+ | On veut aussi que ces utilisateurs soient restreints à un dossier, par exemple pour les restreindre au **/home** de l' | ||
+ | |||
+ | chroot_local_user=YES | ||
+ | local_root=/ | ||
+ | secure_chroot_dir=/ | ||
+ | |||
+ | On active les utilisateurs virtuels et on les fait se passer pour un compte, ici ftp: | ||
+ | |||
+ | guest_enable=YES | ||
+ | guest_username=ftp | ||
+ | |||
+ | On retire ensuite tous les droits par défaut... | ||
+ | |||
+ | anon_world_readable_only=YES | ||
+ | write_enable=NO | ||
+ | anon_upload_enable=NO | ||
+ | anon_mkdir_write_enable=NO | ||
+ | anon_other_write_enable=NO | ||
+ | hide_file=* | ||
+ | force_dot_files=YES | ||
+ | |||
+ | On oublie pas de dire où trouver la configuration par utilisateur : | ||
+ | |||
+ | Je vous conseille de créer un dossier **/ | ||
+ | |||
+ | user_config_dir=/ | ||
+ | |||
+ | On indique le service pam à utiliser pour l' | ||
+ | |||
+ | pam_service_name=vsftpd | ||
+ | |||
+ | Reglez la bannière de votre FTP : | ||
+ | |||
+ | ftpd_banner=Bienvenue sur ce serveur FTP ! | ||
+ | |||
+ | Pensez aussi à régler votre masque comme bon vous semble... | ||
+ | < | ||
+ | local_umask=022 | ||
+ | </ | ||
+ | * 3 : Une conf par utilisateur, | ||
+ | |||
+ | < | ||
+ | anon_world_readable_only=NO | ||
+ | local_root=/ | ||
+ | write_enable=YES | ||
+ | anon_upload_enable=YES | ||
+ | anon_mkdir_write_enable=YES | ||
+ | anon_other_write_enable=YES | ||
+ | hide_file=(none) | ||
+ | force_dot_files=YES | ||
+ | </ | ||
+ | |||
+ | * 4 : Nous allons utiliser **mysql** comme base de donnée. Installez donc **libpam-mysql** : | ||
+ | |||
+ | apt-get install libpam-mysql | ||
+ | |||
+ | * 5 : Préparation de la base de données : | ||
+ | |||
+ | Prenez votre base de données et créez une table contenant les champs name et pass. | ||
+ | |||
+ | Nous supposons qu'un utilisateur **bidule** avec le mot de passe **truc** a des droits sur la base de donnée **ftp** où existe la table **users** définie comme précédement, | ||
+ | |||
+ | * 6 : On configure le service Pam en éditant le fichier / | ||
+ | |||
+ | < | ||
+ | auth required pam_mysql.so host=ip_server user=bidule passwd=truc db=ftp table=users usercolumn=name passwdcolumn=pass crypt=3 | ||
+ | account required pam_mysql.so host=ip_server user=bidule passwd=truc db=ftp table=users usercolumn=name passwdcolumn=pass crypt=3 | ||
+ | |||
+ | |||
+ | # Standard behaviour for ftpd(8). | ||
+ | auth required | ||
+ | |||
+ | # Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so. | ||
+ | |||
+ | # Standard pam includes | ||
+ | #@include common-account | ||
+ | #@include common-session | ||
+ | #@include common-auth | ||
+ | #auth | ||
+ | </ | ||
+ | |||
+ | Les mots de passes sont en MD5. | ||
+ | |||
+ | Il ne vous reste plus qu'à exécuter cette commande mysql pour ajouter tony... | ||
+ | |||
+ | INSERT INTO ' | ||
+ | |||
+ | Et voilà !!! | ||
+ | |||
+ | il se peut que le message d' | ||
+ | < | ||
+ | seccomp_sandbox=NO | ||
+ | </ |