WikiMiNET

La documentation technique et administrative

Outils pour utilisateurs

Outils du site


wiki:divers:coin_geek:ftp

Créer un FTP privé

Le tour de force de cette configuration est qu'elle vous évite de créer des utilisateurs UNIX sur votre machine, comme ce serait le cas avec d'autres solutions, telle que proftpd. A chaque connexion le serveur FTP va interroger la base de donnée pour savoir si l'utilisateur utilise le bon mot de passe. C'est donc un cran au dessus en terme de sécurité :p

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'utilisateur ftp:

  chroot_local_user=YES
  local_root=/home/ftp/
  secure_chroot_dir=/var/run/vsftpd 

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 /etc/vsftpd et de la mettre dedans…

  user_config_dir=/etc/vsftpd

On indique le service pam à utiliser pour l'authentification:

  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, par exemple pour tony, éditez /etc/vsftpd/tony :
anon_world_readable_only=NO
local_root=/home/ftp/tony
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, le tout sur le serrveur à l'adresse ip_server

  • 6 : On configure le service Pam en éditant le fichier /etc/pam.d/vsftpd:
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        pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed

# 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   required        pam_shells.so

Les mots de passes sont en MD5.

Il ne vous reste plus qu'à exécuter cette commande mysql pour ajouter tony…

  INSERT INTO 'users'(`name`, `pass`) VALUES('tony',MD5('tony_password'))

Et voilà !!!

il se peut que le message d'erreur suivant apparaisse : 500 OOPS: priv_sock_get_cmd, dans ce cas rajoutez simplement dans le fichier conf la ligne

 
seccomp_sandbox=NO
wiki/divers/coin_geek/ftp.txt · Dernière modification: 2020/06/27 18:16 (modification externe)