Serveur FTP : Very secure FTPd VsFTPd est un serveur FTP conçu avec la probléma

Serveur FTP : Very secure FTPd VsFTPd est un serveur FTP conçu avec la problématique d'une sécurité maximale. Contrairement aux autres serveurs FTP (ProFTPd, PureFTPd, etc.), aucune faille de sécurité n'a jamais été décelée dans VsFTPd. Ce serveur est notamment utilisé à grande échelle par des entreprises telles que Red Hat. La configuration par défaut de VsFTPd est très restrictive : 1. Seul le compte anonyme est autorisé à se connecter au serveur 2. En lecture seule 3. Les utilisateurs ne peuvent accéder à leur compte Remarques Aussi sécurisé que soit un serveur ftp, le protocole ftp en lui même n'est pas sûr ! En effet l'échange du nom d'utilisateur et du mot de passe transite en clair sur le réseau. Si vous utilisez ce serveur sur votre LAN pas de soucis, mais attention si vous comptez utiliser le serveur ftp depuis internet, de fait n'utilisez pas un compte qui a les droits via ftp (en fait n'utilisez de l'extérieur ce compte QUE via ssh ou tout autre protocole sécurisé, POPs, etc.) Installation apt-get install vsftpd dpkg -i vsftpd-version.deb Configuration de vsftpd La configuration de VsFTPd est centralisée dans un seul et même fichier /etc/vsftpd.conf. Choisissez votre éditeur de texte favori (en mode super utilisateur) et appliquez les modifications suivantes en fonction du mode de fonctionnement de VsFTPd. • Pour permettre à vos utilisateurs locaux (ceux qui ont un compte sur la machine) de se connecter au serveur et d'écrire. local_enable=YES write_enable=YES • Pour permettre la configuration du chmod par défaut que prendront les fichiers et les dossiers. local_umask=077 1. Valeur 002 : permet d'avoir un chmod des dossiers en 775 et fichiers en 664 (mis à disposition selon les termes de la licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France, 2008, Abdoulaye SALL) 2. Valeur 022 : permet d'avoir un chmod des dossiers en 755 et fichiers en 644 3. Valeur 077 : permet d'avoir un chmod des dossiers en 700 et fichiers en 600 • Vous pouvez personnaliser le texte de connexion au serveur ftpd_banner=Bienvenue sur le serveur ftp de BCM • Vous pouvez « emprisonner » certains utilisateurs dans leur dossier personnel grâce à la configuration suivante : chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list Les identifiants des utilisateurs concernés doivent êtres renseignés dans /etc/vsftpd.chroot_list. Si vous voulez changer le port par défaut (21) : listen_port=222 • Pour avoir un monitoring basic (voir les utilisateurs connectés) : setproctitle_enable=YES Ensuite, pour voir la liste des utilisateurs il suffit de taper la commande suivante dans un terminal : ps -aef | grep vsftpd Attention, tous les utilisateurs du système ayant accès à la commande "ps" pourront également visualiser la liste des utilisateurs connectés. * Monitoring d'après le fichier de log Aucun changement à effectuer dans vsftp.conf. Pas de problème de sécurité car la commande est accessible en mode super-utilisateur seulement. Tapez dans un terminal : tail -f /var/log/vsftpd.log Après chaque changement sur la configuration, pensez à relancer le serveur pour les prendre en compte : /etc/init.d/vsftpd restart Partage de dossier et chroot Les utilisateurs étant chrootés dans leur home (ce n'est pas obligatoire mais conseillé) il faut trouver un moyen de leur permettre de naviguer dans un dossier a l'exterieur de leur home. ls pour faire un lien symbolique ne fonctionne pas : problème de droit. La commande à utiliser est mount avec l'option –bind mount --bind dossier_source dossier_ftp (mis à disposition selon les termes de la licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France, 2008, Abdoulaye SALL) Pour l'avoir au boot éditer /etc/fstab et ajouter : /dossier_ftp_source /dossier_ftp_cible none bind,defaults,auto 0 0 vsftpd et SSL Sécurité FTP Un des défauts principal du protocole ftp est que les couples nom d'utilisateur / mot de passe transitent en clair sur le réseau... Mais il est possible de mettre une couche supplémentaire, ssl pour chiffrer les échanges d'authentification et/ou de données Utilisation des fichiers /etc/ftpusers On peut restreindre l'accès au serveur ftp à certains utilisateurs. Ainsi nous déclarerons dans le fichier /etc/ftpusers tous les utilisateurs locaux qui n'auront pas le droit de se connecter au serveur FTP Création du certificat Il vous faut le paquet openssl mkdir ~/SSL-cert-vsftpd && cd ~/SSL-cert-vsftpd openssl req -x509 -nodes -days 730 -newkey rsa:1024 -keyout vsftpd.pem -out vsftpd.pem Openssl va vous poser quelques questions, la plus critique est celle ci : Common Name (eg, YOUR name) []: Il faut écrire le nom ou l'ip que les clients utiliseront. Il est possible de faire un certificat signé par sa propre authorité de certification et donc générer des certificats valides, une fois que vos clients ont reconnu votre authorite de certification : Creating and Using a self signed SSL Certificates in debian Un certificat, vsftpd.pem, a été généré dans le dossier SSL-cert-vsftpd de votre dossier personnel. Copions le dans /etc/ssl/certs/ : cp ~/SSL-cert-vsftpd/vsftpd.pem /etc/ssl/certs/ Sécurisons le : chown root:root /etc/ssl/certs/vsftpd.pem chmod 600 /etc/ssl/certs/vsftpd.pem Note : vsftp s'execute avec les droits de l'utilisateur nobody mais il se lance en tant que root et donc lit le certificat en tant que root. (mis à disposition selon les termes de la licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France, 2008, Abdoulaye SALL) Configuration de vsftpd.conf / Partie SSL A la fin de votre fichier /etc/vsftpd.conf # Options for SSL # encrypted connections. ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=NO <--- vous pouvez mettre à "YES" si vous utilisez kasablanca force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=YES ssl_sslv3=YES rsa_cert_file=/etc/ssl/certs/vsftpd.pem : #/etc/init.d/vsftpd restart pour redémarrer le serveur. Configurer VSFTPD pour utiliser des utilisateurs virtuels Nous allons configurer VSFTPD pour utiliser seulement des utilisateurs virtuels et non pas les utilisateurs locaux de votre machine. Pour celà nous allons créer des dossiers afin d'y placer nos futurs fichiers de configuration: mkdir /etc/vsftpd mkdir /etc/vsftpd/vsftpd_user_conf Sauvegardons nos fichiers de configuration actuels : cp /etc/vsftpd.conf /etc/vsftpd.conf.default.bak cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.default.bak Créer la base de données des utilisateurs virtuels apt-get install libdb4.4 db4.4-util db4.4-doc Création du fichier PAM : Il faut effacer le contenu du fichier /etc/pam.d/vsftpd et le remplacer par: auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login account required /lib/security/pam_userdb.so db=/etc/vsftpd/login (mis à disposition selon les termes de la licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France, 2008, Abdoulaye SALL) Créons un fichier "login.txt" dans /etc/vsftpd , avec vos utilisateurs et mots de passe : kane passekane mbaye passembaye Les 2 utilisateurs sont donc ici '' kane et mbaye » et leurs mots de passe respectifs 'passekane passembaye. Attention : le fichier login.txt doit impérativement se terminer par un saut de ligne pour que db4.4_load le lise et l'interprête correctement. Il faut maintenant le convertir au format "db": db4.4_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db on sécurise notre fichier : chmod 600 /etc/vsftpd/login.db Configuration du fichier /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 # Pour des raisons de sécurité on interdit toute action d'écriture: write_enable=NO anon_upload_enable=NO anon_mkdir_write_enable=NO anon_other_write_enable=NO # 'guest_enable' est très important: cela active les utilisateurs virtuels! # 'guest_username' fait correspondre tous les utilisateurs virtuels à # l'utilisateur 'ftp' que nous avons défini plus haut, et au home # correspondant: '/home/ftp/'. guest_enable=YES guest_username=ftp # On veut que les utilisateurs virtuels restent chez eux: '/home/ftp/' chroot_local_user=YES # On défini le nombre maximum de sessions à 200(les nouveaux clients recevront # un message du genre: "erreur: serveur occupé"). # On défini le nombre maximum de sessions par IP à 4 max_clients=200 max_per_ip=4 #################################### (mis à disposition selon les termes de la licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France, 2008, Abdoulaye SALL) # Debian customization # #################################### # Some of vsftpd's settings don't fit the Debian filesystem layout by # default. These settings are more Debian-friendly. # # This option should be the name of a directory which is empty. Also, the # directory should not be writable by the ftp user. This directory is used # as a secure chroot() jail at times vsftpd does not require filesystem # access. secure_chroot_dir=/var/run/vsftpd # # This string is the name of the PAM service vsftpd will use. pam_service_name=vsftpd # # This option specifies the location of the RSA certificate to use for SSL # encrypted connections. rsa_cert_file=/etc/ssl/certs/vsftpd.pem ## Activer la configuration per-user user_config_dir=/etc/vsftpd/vsftpd_user_conf Relançons le serveur : /etc/init.d/vsftpd restart Gérer les droits des utilisateurs virtuels Par défaut les utilisateurs virtuels n'ont aucun droit, il faut donc les définir pour chacun d'entre eux : Pour celà il faut créer un fichier de configuration pour chacun de vos utilisateurs dans le dossier /etc/vsftpd/vsftpd_user_conf/ Par exemple pour 'util1' il faut configurer le fichier /etc/vsftpd/vsftpd_user_conf/util1 Exemple de fichier : ## l'utilisateur est enfermé dans un dossier déterminé local_root=/chemin_du_dossier/ ## droit de lecture(download) anon_world_readable_only=NO ## droit d'écriture(upload) write_enable=YES anon_upload_enable=YES ## créer des dossiers anon_mkdir_write_enable=YES ## droit de renommer, supprimer... anon_other_write_enable=YES $ ftp localhost 21 Connected to localhost.localdomain. 220 (vsFTPd 2.0.3) (mis à disposition selon les termes de la licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France, 2008, Abdoulaye SALL) uploads/s1/ ftp.pdf

  • 31
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Jan 22, 2022
  • Catégorie Administration
  • Langue French
  • Taille du fichier 0.1082MB