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 [Le 01/08/2017, 10:18] – [Configuration de base] 90.80.29.180 | vsftpd [Le 26/12/2024, 23:36] (Version actuelle) – Il manquait une lettre au mot liste dans la section chroot 79.95.87.181 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | {{tag>Maverick | + | {{tag> |
| ---- | ---- | ||
| Ligne 5: | Ligne 5: | ||
| <note warning> | <note warning> | ||
| Je n'ai pas tout vérifié en détail mais je vous conseille de vérifier les paramètres donnés avec le man du site officiel!</ | Je n'ai pas tout vérifié en détail mais je vous conseille de vérifier les paramètres donnés avec le man du site officiel!</ | ||
| - | <note warning> En tentant de l' | ||
| - | Il suffit de créer l' | ||
| - | + | ====== Préambule : FTP et " | |
| - | ====== Préambule : FTP et " | + | |
| Au niveau des protocoles de transfert de fichiers, il y a le FTP classique: Tout y passe en clair (y compris les infos de login/mot de passe). Ce protocole utilise un canal de contrôle et un canal de données (par défaut, port 21 en destination pour le canal contrôle). | Au niveau des protocoles de transfert de fichiers, il y a le FTP classique: Tout y passe en clair (y compris les infos de login/mot de passe). Ce protocole utilise un canal de contrôle et un canal de données (par défaut, port 21 en destination pour le canal contrôle). | ||
| Ligne 31: | Ligne 28: | ||
| 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 majeure de sécurité n'a jamais été décelée dans VsFTPd. | 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 majeure de sécurité n'a jamais été décelée dans VsFTPd. | ||
| - | Néanmoins deux [[http:// | + | Néanmoins deux [[https:// |
| Ce serveur est utilisé à grande échelle, notamment par des entreprises telles que Red Hat. | Ce serveur est utilisé à grande échelle, notamment par des entreprises telles que Red Hat. | ||
| - | La configuration __par défaut__ de VsFTPd est très restrictive : | + | La configuration __par défaut__ de VsFTPd est très restrictive : |
| - Seul le compte **anonyme** est autorisé à se connecter au serveur | - Seul le compte **anonyme** est autorisé à se connecter au serveur | ||
| Ligne 41: | Ligne 38: | ||
| - Les **utilisateurs** ne peuvent pas accéder à leurs répertoires | - Les **utilisateurs** ne peuvent pas accéder à leurs répertoires | ||
| < | < | ||
| - | Remarques :\\ | ||
| Aussi sécurisé que soit un serveur ftp, le protocole ftp en lui même **n' | Aussi sécurisé que soit un serveur ftp, le protocole ftp en lui même **n' | ||
| 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' | 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' | ||
| Ligne 48: | Ligne 44: | ||
| ===== Installation ===== | ===== Installation ===== | ||
| - | + | [[: | |
| - | [[: | + | <code bash> |
| - | + | Il est parfois nécessaire de créer un compte ftp, l' | |
| - | En ligne de commande : | + | <code bash>sudo useradd --system ftp </ |
| - | + | Pensez à redémarrer le service : | |
| - | | + | <code bash> |
| - | + | Vérifier l' | |
| - | Il est parfois | + | <code bash> |
| - | + | <code bash> | |
| - | | + | Et à ouvrir les ports de votre pare-feu si nécessaire : |
| + | <code bash> | ||
| + | sudo ufw allow 21/tcp | ||
| + | sudo ufw status</ | ||
| ===== Configuration de vsftpd ===== | ===== Configuration de vsftpd ===== | ||
| Ligne 63: | Ligne 62: | ||
| ==== Configuration de base ==== | ==== Configuration de base ==== | ||
| - | * Vous pouvez personnaliser le texte de connexion au serveur | + | * Vous pouvez personnaliser le texte de connexion au serveur : <file bash>ftpd_banner=Bienvenue sur le serveur ftp de LUCAS</file> |
| - | | + | |
| - | + | ||
| - | * Pour permettre des utilisateurs anonymes de se connecter au serveur en lecture seule. | + | |
| - | + | ||
| - | anonymous_enable=YES | + | |
| - | anon_upload_enable=NO | + | |
| - | anon_mkdir_write_enable=NO | + | |
| - | anon_other_write_enable=NO | + | |
| - | anon_world_readable_only=YES | + | |
| - | local_root=<Path_du_répertoire_anonyme> | + | |
| - | + | ||
| - | * Pour permettre à vos utilisateurs locaux (ceux qui ont un compte sur la machine) de se connecter au serveur et d' | + | |
| - | + | ||
| - | local_enable=YES | + | |
| - | write_enable=YES | + | |
| - | local_umask=022 | + | |
| + | * Pour permettre des utilisateurs anonymes de se connecter au serveur en lecture seule : <file bash> | ||
| + | anonymous_enable=YES | ||
| + | anon_upload_enable=NO | ||
| + | anon_mkdir_write_enable=NO | ||
| + | anon_other_write_enable=NO | ||
| + | anon_world_readable_only=YES | ||
| + | anon_root=< | ||
| + | </ | ||
| + | * Pour permettre à vos utilisateurs locaux (ceux qui ont un compte sur la machine) de se connecter au serveur et d' | ||
| + | write_enable=YES | ||
| + | local_umask=022</ | ||
| + | * Pour permettre à vsftpd de charger une liste d' | ||
| + | Il faudra alors ajouter le nom des utilisateurs qui auront les accès dans le fichier **/ | ||
| * Vous pouvez « emprisonner » certains utilisateurs dans leur dossier personnel afin qu'il ne puissent pas naviguer dans le système de fichier. | * Vous pouvez « emprisonner » certains utilisateurs dans leur dossier personnel afin qu'il ne puissent pas naviguer dans le système de fichier. | ||
| - | Il faut créer | + | Il faut créer |
| - | sudo mkdir / | + | Les identifiants des utilisateurs concernés doivent être renseignés dans /// |
| - | gksu gedit / | + | utilisateur_2 |
| - | + | ...</ | |
| - | Les identifiants des utilisateurs concernés doivent être renseignés dans /// | + | |
| - | + | ||
| - | | + | |
| - | utilisateur_2 | + | |
| - | ... | + | |
| Il faut ensuite modifier la configuration générale (/ | Il faut ensuite modifier la configuration générale (/ | ||
| - | + | <file bash> | |
| - | # Pas besoin d' | + | # Pas besoin d' |
| - | chroot_local_user=NO | + | chroot_local_user=NO |
| - | # Emprisonner dans son répertoire home les utilisateurs | + | # Emprisonner dans son répertoire home les utilisateurs |
| - | chroot_list_enable=YES | + | chroot_list_enable=YES |
| - | # La lise des prisonniers | + | # La liste des prisonniers |
| - | chroot_list_file=/ | + | chroot_list_file=/ |
| - | # Evite l' | + | # Evite l' |
| - | allow_writeable_chroot=YES | + | # Les prisonniers |
| - | + | allow_writeable_chroot=YES | |
| - | <note important> | + | </ |
| + | <note important> | ||
| ==== Configuration avancée ==== | ==== Configuration avancée ==== | ||
| Si vous voulez changer le port pour transmettre les commandes qui est par défaut (21) : | Si vous voulez changer le port pour transmettre les commandes qui est par défaut (21) : | ||
| - | + | < | |
| - | | + | |
| * Pour avoir un monitoring | * Pour avoir un monitoring | ||
| - | + | < | |
| - | setproctitle_enable=YES | + | |
| | | ||
| - | + | <code bash>ps -aef | grep vsftpd</ | |
| - | ps -aef | grep vsftpd | + | |
| ou pour suivre les connexions en continu : | ou pour suivre les connexions en continu : | ||
| - | + | <code bash>watch -n 1 'ps ax | grep vsftpd | grep -v grep'</ | |
| - | watch -n 1 'ps ax | grep vsftpd | grep -v grep' | + | |
| | | ||
| Ligne 163: | Ligne 151: | ||
| ===== vsftpd et SSL ===== | ===== vsftpd et SSL ===== | ||
| - | [[http:// | + | [[https:// |
| Le principal défaut du protocole FTP est que le couple nom d' | Le principal défaut du protocole FTP est que le couple nom d' | ||
| Ligne 171: | Ligne 159: | ||
| === Création du certificat === | === Création du certificat === | ||
| - | Il vous faut [[: | + | Il vous faut [[: |
| sudo openssl req -new -x509 -days 365 -nodes -out / | sudo openssl req -new -x509 -days 365 -nodes -out / | ||
| - | Openssl va vous poser quelques questions, la plus critique est celle ci : | + | Openssl va vous poser quelques questions, la plus critique est celle ci : |
| Common Name (eg, YOUR name) []: | Common Name (eg, YOUR name) []: | ||
| - | Il faut écrire le nom ou l'ip que les clients utiliseront. | + | Il faut écrire le nom ou l'ip que les clients utiliseront. |
| Il est possible de faire un certificat signé par sa propre autorité de certification et donc générer des certificats valides, une fois que vos clients ont reconnu votre autorité de certification : [[http:// | Il est possible de faire un certificat signé par sa propre autorité de certification et donc générer des certificats valides, une fois que vos clients ont reconnu votre autorité de certification : [[http:// | ||
| - | Un certificat (vsftpd.cert.pem) ainsi qu'une clé privée (vsftpd.key.pem) ont été générés dans le dossier / | + | Un certificat (vsftpd.cert.pem) ainsi qu'une clé privée (vsftpd.key.pem) ont été générés dans le dossier / |
| Sécurisons-les : | Sécurisons-les : | ||
| sudo chown root:root / | sudo chown root:root / | ||
| Ligne 211: | Ligne 199: | ||
| </ | </ | ||
| force_local_data_ssl=NO | force_local_data_ssl=NO | ||
| - | A priori, un : | + | A priori, un : |
| sudo service vsftpd reload | sudo service vsftpd reload | ||
| devrait bien se passer. | devrait bien se passer. | ||
| Ligne 250: | Ligne 238: | ||
| 1- à redémarrer le serveur avec la commande suivante | 1- à redémarrer le serveur avec la commande suivante | ||
| - | < | + | < |
| - | | + | |
| </ | </ | ||
| Ligne 258: | Ligne 245: | ||
| 3- et à configurer votre client ftp de façon à ce que celui-ci réalise des connexions en mode passif (mode passif dans les paramètres du pare-feu de Filezilla par exemple) | 3- et à configurer votre client ftp de façon à ce que celui-ci réalise des connexions en mode passif (mode passif dans les paramètres du pare-feu de Filezilla par exemple) | ||
| - | <note important> | + | <note important> |
| ===== Configurer VSFTPD pour utiliser des utilisateurs virtuels ===== | ===== 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. | Nous allons configurer VSFTPD pour utiliser seulement des utilisateurs virtuels et non pas les utilisateurs locaux de votre machine. | ||
| - | Pour cela nous allons créer des dossiers afin d'y placer nos futurs fichiers de configuration: | + | Pour cela nous allons créer des dossiers afin d'y placer nos futurs fichiers de configuration: |
| < | < | ||
| Ligne 278: | Ligne 265: | ||
| ====Créer la base de données des utilisateurs virtuels==== | ====Créer la base de données des utilisateurs virtuels==== | ||
| - | <note tip>Vous allez avoir maintenant besoin d' | + | <note tip>Vous allez avoir maintenant besoin d' |
| - | <note tip>Si les paquets sont introuvables, | + | <note tip>Si les paquets sont introuvables, |
| Création du fichier PAM : | Création du fichier PAM : | ||
| - | Il faut effacer le contenu du fichier **/ | + | Il faut effacer le contenu du fichier **/ |
| < | < | ||
| Ligne 306: | Ligne 293: | ||
| </ | </ | ||
| - | Créons un fichier **login.txt** dans **/ | + | Créons un fichier **login.txt** dans **/ |
| < | < | ||
| Ligne 325: | Ligne 312: | ||
| </ | </ | ||
| - | on sécurise nos fichiers : | + | on sécurise nos fichiers : |
| < | < | ||
| Ligne 332: | Ligne 319: | ||
| ====Configuration du fichier / | ====Configuration du fichier / | ||
| - | < | + | < |
| # Ceci configure vsFTPd en mode " | # Ceci configure vsFTPd en mode " | ||
| listen=YES | listen=YES | ||
| Ligne 387: | Ligne 374: | ||
| </ | </ | ||
| - | Relançons le serveur : | + | Relançons le serveur : |
| < | < | ||
| Ligne 399: | Ligne 386: | ||
| Par défaut les utilisateurs virtuels n'ont aucun droit, il faut donc les définir pour chacun d' | Par défaut les utilisateurs virtuels n'ont aucun droit, il faut donc les définir pour chacun d' | ||
| - | Pour celà il faut créer un fichier de configuration pour chacun de vos utilisateurs dans le dossier **/ | + | Pour celà il faut créer un fichier de configuration pour chacun de vos utilisateurs dans le dossier **/ |
| Par exemple pour ' | Par exemple pour ' | ||
| - | Exemple de fichier : | + | Exemple de fichier : |
| < | < | ||
| Ligne 429: | Ligne 416: | ||
| </ | </ | ||
| - | <note important> | + | <note important> |
| ## Activer la configuration per-user | ## Activer la configuration per-user | ||
| user_config_dir=/ | user_config_dir=/ | ||
| Ligne 440: | Ligne 427: | ||
| </ | </ | ||
| - | Ce scripte donne tous les droits à chacun de vos utilisateurs virtuels et ne supprime pas le dossier d'un utilisateur lors de sa suppression de la base de données.\\ | + | Ce scripte donne tous les droits à chacun de vos utilisateurs virtuels et ne supprime pas le dossier d'un utilisateur lors de sa suppression de la base de données. |
| Libre à vous de modifier ce script ou de changer les droits utilisateurs dans vos fichiers de configuration. | Libre à vous de modifier ce script ou de changer les droits utilisateurs dans vos fichiers de configuration. | ||
| Ligne 509: | Ligne 496: | ||
| == Sous Windows== | == Sous Windows== | ||
| - | FileZilla ou smartFtP option : "FTP over TLS Explicit" | + | * FileZilla ou smartFtP option : "FTP over TLS Explicit" |
| + | * Winscp | ||
| + | * CoreFTP Lite | ||
| + | * FlashFXP option : "Auth TLS" | ||
| - | Winscp | ||
| - | |||
| - | CoreFTP Lite | ||
| - | |||
| - | FlashFXP option : "Auth TLS" | ||
| == Sous Mac OS X == | == Sous Mac OS X == | ||
| - | CyberDuck option " | + | * CyberDuck option " |
| - | + | | |
| - | Transmit (SSL implicite ou TLS/SSL) | + | |
| ==Sous Linux== | ==Sous Linux== | ||
| - | ftp-ssl - Le client ftp avec chiffrement SSL ou TLS | + | * ftp-ssl - Le client ftp avec chiffrement SSL ou TLS |
| - | + | | |
| - | ftp (sans chiffrement) | + | |
| - | + | | |
| - | lftp [[http:// | + | |
| - | + | | |
| - | kasablanca - Kasablanca est un client graphique FTP. Parmi ses fonctions, on peut citer le support du chiffrement (par authentification TLS, et non SFTP),FXP (accès direct entre deux serveurs FTP,un gestionnaire de signets et un système de mise en queue. | + | |
| - | - Tourne sous Kde (mais aussi sous gnome avec les lib Kde) [[http:// | + | |
| - | + | ||
| - | Kftpgrabber (FTP utilisant TLS/SSL explicite et implicite) | + | |
| - | + | ||
| - | gftp sous Debian/ | + | |
| Par contre, il supporte parfaitement le SFTP (selectionner SSH2 à la place de FTP), qui ne pose pas les problèmes de licence de SSL. | Par contre, il supporte parfaitement le SFTP (selectionner SSH2 à la place de FTP), qui ne pose pas les problèmes de licence de SSL. | ||
| - | FireFTP, extension pour Firefox | + | * FireFTP, extension pour Firefox |
| - | Filezilla, Nautilus, | + | * Filezilla, |
| + | * Nautilus, | ||
| + | * gftp sous ubuntu, | ||
| + | * et... si vous en connaissez un autre ---> " | ||
| - | ---- | ||
| - | |||
| - | // | ||
| ===== Problèmes courants ===== | ===== Problèmes courants ===== | ||
| Ligne 548: | Ligne 527: | ||
| ==== 500 OOPS: vsftpd: refusing to run with writable root inside chroot() ==== | ==== 500 OOPS: vsftpd: refusing to run with writable root inside chroot() ==== | ||
| - | La version 2.3.5 de vsftpd contient une sécurité qui empêche l' | + | La version 2.3.5 de vsftpd contient une sécurité qui empêche l' |
| - | La solution | + | Une des raison de cette sécurité est décrite [[https:// |
| + | |||
| + | === Retirer l' | ||
| + | |||
| + | La solution | ||
| Ainsi, pour la configuration proposée plus haut pour les utilisateurs virtuels, il suffit d' | Ainsi, pour la configuration proposée plus haut pour les utilisateurs virtuels, il suffit d' | ||
| Ligne 562: | Ligne 545: | ||
| Les utilisateurs ne peuvent pas écrire dans le dossier racine / | Les utilisateurs ne peuvent pas écrire dans le dossier racine / | ||
| - | Sinon en mieux... | + | === Forcer vsftp à passer outre la protection par défaut === |
| - | Télécharger la mise à jour de Vsftpd... | + | Il est possible de forcer vsftp à démarrer même avec une racine accessible en lecture via le fichier /etc/vsftpd.conf : |
| - | | + | |
| - | Mettre à jour... | + | et redémarrer Vsftpd |
| - | $ dpkg -i vsftpd_2.3.5-10~update.1_amd64.deb | + | $ service vsftpd restart |
| - | Puis ajouter dans le fichier | + | ====Voir aussi==== |
| + | * [[https://www.tecmint.com/ | ||
| + | ---- | ||
| - | et redémarrer Vsftpd | + | // |
| - | $ service vsftpd restart | ||
