VSFTPD : Différence entre versions
(Page créée avec « ==Prérequis== On va installer un serveur FTP, grâce à vsftpd (Very Secure FTP Daemon).<br /> Les utilisateurs de ce FTP sont les webmasters des différents sites hébe... ») |
m |
||
Ligne 19 : | Ligne 19 : | ||
Installation du paquet pour gérer la base de données login/mot de passe : libdb4-util | Installation du paquet pour gérer la base de données login/mot de passe : libdb4-util | ||
− | # apt-get install | + | # apt-get install libdb8.3 |
− | # apt-get install | + | # apt-get install db5.3-util db-util |
Remplir le fichiers des utilisateurs : | Remplir le fichiers des utilisateurs : | ||
Ligne 32 : | Ligne 32 : | ||
Créer la base de données proprement dite : | Créer la base de données proprement dite : | ||
− | # | + | # db_load -T -t hash -f login.txt /etc/vsftpd/login.db |
# chmod 600 /etc/vsftpd/login.db | # chmod 600 /etc/vsftpd/login.db | ||
Version actuelle datée du 13 février 2018 à 17:39
Sommaire
Prérequis
On va installer un serveur FTP, grâce à vsftpd (Very Secure FTP Daemon).
Les utilisateurs de ce FTP sont les webmasters des différents sites hébergés sur le serveur.
Les utilisateurs n'auront pas de compte système sur la machine. Il faudra donc créer une base d'utilisateurs dits "virtuels".
Chaque utilisateur sera également "chrooté" dans son répertoire. Chaque utilisateur pourra lire et écrire dans son répertoire.
Installation
Installation du paquet :
# apt-get install vsftpd
Si le répertoire /etc/vsftpd n'existe pas, le créer :
# mkdir /etc/vsftpd
Renommer les fichiers de configuration d'origine pour sauvegarde :
# cp /etc/vsftpd.conf /etc/vsftpd.conf.default.bak # cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.default.bak
Installation du paquet pour gérer la base de données login/mot de passe : libdb4-util
# apt-get install libdb8.3 # apt-get install db5.3-util db-util
Remplir le fichiers des utilisateurs :
# vim /etc/vsftpd/login.txt
Important : respecter la syntaxe !
(retour à la ligne entre les deux et sans commentaires)
utilisateur1 mot de passe1 utilisateur2 mot de passe2
Créer la base de données proprement dite :
# db_load -T -t hash -f login.txt /etc/vsftpd/login.db # chmod 600 /etc/vsftpd/login.db
# vim /etc/pam.d/vsftpd.pam auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login account required /lib/security/pam_userdb.so db=/etc/vsftpd/login
# cp /etc/pam.d/vsftpd.pam /etc/pam.d/vsftpd
Le serveur FTP, géré par vsftpd, n'utilise pas les comptes système pour s'authentifier
(d'où l'utilité de la base de données des utilisateurs => utilisateurs virtuels)
Il faut donc créer l'utilisateur système utilisé par le démon :
# mkdir -p /home/ftp/virtual # groupadd ftp # useradd -g ftp -d /home/ftp/virtual/ virtual
Vérifier dans les fichiers /etc/passwd et /etc/group
# chown root.ftp ~virtual/ # chmod 2750 ~virtual/
Configuration VSFTPD
# vim /etc/vsftpd.conf
# Ceci configure vsFTPd en mode "standalone" listen=YES # On désactive les connexions anonymes et on active les non-anonymes(c'est le cas des utilisateurs virtuels): anonymous_enable=NO local_enable=YES # On interdit par défaut toute possibilité d'écrire ou lire. # Ces droits seront gérés par utilisateurs, dans les fichiers de conf de chaque user anon_mkdir_write_enable=NO anon_other_write_enable=NO anon_upload_enable=NO write_enable=NO # guest_enable pour activer l'utilisateur virtuel guest_enable=YES guest_username=virtual # On veut que les utilisateurs virtuels restent dans ~virtual/ chroot_local_user=YES # On définit le nombre maximum de sessions à 4 (les nouveaux clients recevront un message du genre: "erreur : serveur occupé") max_clients=10 # On définit le nombre maximum de sessions par IP à 4 # max_per_ip=4 # Configuration emplacement fichiers utilisateurs, jail chroot, et service pam secure_chroot_dir=/var/run/vsftpd pam_service_name=vsftpd user_config_dir=/etc/vsftpd/vsftpd_user_conf #################### Supplément Teteve ############################# ftpd_banner=Bienvenue sur le serveur FTP de teteve.fr # On active les logs pour les uploads/downloads xferlog_enable=YES xferlog_file=/var/log/vsftpd-dl.log # Connexion et ports pour le mode passif connect_from_port_20=YES pasv_address=87.98.141.85 pasv_min_port=20000 pasv_max_port=20100 # temps d'inactivité idle_session_timeout=600 data_connection_timeout=120 ################# Droits sur les fichiers uploadés ################# chown_uploads=YES chown_username=virtual chown_upload_mode=0750 #### anon_umask=007 # The value that the umask for file creation is set to for anonymous users. NOTE! If you want to specify octal values, remember the "0" prefix otherwise the value will be treated as a base 10 integer! # Default: 077 #### chown_upload_mode=0760 # The file mode to force for chown()ed anonymous uploads. (Added in v2.0.6). # Default: 0600 #### file_open_mode=0117 # The permissions with which uploaded files are created. Umasks are applied on top of this value. You may wish to change to 0777 if you want uploaded files to be executable. # Default: 0666 #### local_umask=022 # The value that the umask for file creation is set to for local users. NOTE! If you want to specify octal values, remember the "0" prefix otherwise the value will be treated as a base 10 integer! # Default: 077
Droits utilisateurs
# mkdir /etc/vsftpd/vsftpd_user_conf/
Donner les droits en lecture (utilisateur1) et lecture/écriture (utilisateur2) :
# echo "anon_world_readable_only=NO" > /etc/vsftpd/vsftpd_user_conf/utilisateur1 # echo "anon_world_readable_only=NO" > /etc/vsftpd/vsftpd_user_conf/utilisateur2 # echo "write_enable=YES" >> /etc/vsftpd/vsftpd_user_conf/utilisateur2 # echo "anon_upload_enable=YES" >> /etc/vsftpd/vsftpd_user_conf/utilisateur2
si besoin, rajouter deux lignes sur les ports ftp et modifier le firewall en conséquence
Pour séparer le répertoire d'upload
Créer le répertoire utiliser pour les uploads :
# mkdir ~virtual/upload/ # chmod 770 ~virtual/upload/
Commandes pour séparer les répertoires d'upload de chaque utilisateur
# cd ~virtual/ # mkdir -p {utilisateur1/,utilisateur2/}/upload # chmod 2750 {utilisateur1/,utilisateur2/} # chmod 770 {utilisateur1/,utilisateur2/}/upload/ # echo "local_root=utilisateur1" >> /etc/vsftpd/vsftpd_user_conf/utilisateur1 # echo "local_root=utilisateur2" >> /etc/vsftpd/vsftpd_user_conf/utilisateur2
On relance le serveur FTP pour prendre en compte tous ces paramètres :
# /etc/init.d/vsftpd stop # /etc/init.d/vsftpd start
SSL
Préparation pour le SSL
Installer le paquet openssl
# apt-get install openssl
Créer le fichier certificat
# openssl req -x509 -nodes -days 730 -newkey rsa:1024 -keyout vsftpd.pem -out vsftpd.pem
Plusieurs questions seront posées afin de créer le certificat. La plus critique est celle-ci :
Common Name (eg, YOUR name) []: <renseigner le nom ou l'ip que les clients utiliseront>
Une fois ce fichier certificat généré, il faut le copier dans le dossier /etc/ssl/certs.
# cp vsftpd.pem /etc/ssl/certs
Il faut ensuite le sécuriser :
sudo chown root:root /etc/ssl/certs/vsftpd.pem sudo chmod 600 /etc/ssl/certs/vsftpd.pem
Note : vsftp s'exécute avec les droits de l'utilisateur nobody mais il se lance en tant que root et donc lit le certificat en tant que root.
################## SSL : connexions cryptées ###################### ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=NO force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=YES ssl_sslv3=YES rsa_cert_file=/etc/ssl/certs/vsftpd.pem rsa_private_key_file=/etc/ssl/certs/vsftpd.pem