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 | ||
logiciel:internet:ftp:vsftpd:exemples:start [2021/02/17 10:07] – ↷ Page déplacée de fr:logiciel:internet:ftp:vsftpd:exemples:start à logiciel:internet:ftp:vsftpd:exemples:start admin | logiciel:internet:ftp:vsftpd:exemples:start [2022/08/13 22:27] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
====== Vsftpd : cinq exemples de configuration ====== | ====== Vsftpd : cinq exemples de configuration ====== | ||
- | ====== Une configuration classique | + | ===== Une configuration classique ===== |
Supposons que vous souhaitez mettre en place un serveur de fichiers, accessible à tous (par exemple par Internet). Votre fichier vsftpd.conf pourrait alors ressembler à ceci : | Supposons que vous souhaitez mettre en place un serveur de fichiers, accessible à tous (par exemple par Internet). Votre fichier vsftpd.conf pourrait alors ressembler à ceci : | ||
Ligne 37: | Ligne 37: | ||
Le serveur est positionné en mode standalone, ce qui est normal puisqu’il sera a priori sollicité fréquemment. | Le serveur est positionné en mode standalone, ce qui est normal puisqu’il sera a priori sollicité fréquemment. | ||
- | | + | |
: 200 clients simultanés sont acceptés. Les autres recevront un message d’erreur jusqu’à ce qu’une place se libère. De la sorte, le serveur ne sera pas saturé par les requêtes. | : 200 clients simultanés sont acceptés. Les autres recevront un message d’erreur jusqu’à ce qu’une place se libère. De la sorte, le serveur ne sera pas saturé par les requêtes. | ||
- | | + | |
: Chaque client ne pourra ouvrir que 4 connexions simultanées. Il n’y aura donc pas de client qui saturera la bande passante. | : Chaque client ne pourra ouvrir que 4 connexions simultanées. Il n’y aura donc pas de client qui saturera la bande passante. | ||
- | | + | |
: Nous autorisons les connexions anonymes, ce qui est normal puisque le serveur est public. | : Nous autorisons les connexions anonymes, ce qui est normal puisque le serveur est public. | ||
- | | + | |
: Nous refusons les connexions d’utilisateurs dotés de compte sur la machine. Seules les connexions anonymes seront donc acceptées. Soyons clair : l’idée ici n’est pas d’empêcher vos utilisateurs locaux chéris de se connecter, mais de prévenir des hacks faciles utilisant les comptes standards présents sur toute machine digne de ce nom, comme Apache, gdm ou autre lp. | : Nous refusons les connexions d’utilisateurs dotés de compte sur la machine. Seules les connexions anonymes seront donc acceptées. Soyons clair : l’idée ici n’est pas d’empêcher vos utilisateurs locaux chéris de se connecter, mais de prévenir des hacks faciles utilisant les comptes standards présents sur toute machine digne de ce nom, comme Apache, gdm ou autre lp. | ||
- | | + | |
: Personne ne modifie de fichier ni n’écrit sur notre serveur. | : Personne ne modifie de fichier ni n’écrit sur notre serveur. | ||
- | | + | |
: Les utilisateurs anonymes (donc les utilisateurs du serveur) ne peuvent pas uploader de fichier. | : Les utilisateurs anonymes (donc les utilisateurs du serveur) ne peuvent pas uploader de fichier. | ||
- | | + | |
: Les utilisateurs (anonymes) ne peuvent pas non plus créer de répertoire. | : Les utilisateurs (anonymes) ne peuvent pas non plus créer de répertoire. | ||
- | | + | |
: Les utilisateurs (anonymes) ne peuvent pas non plus renommer ni supprimer ni fichier ni répertoire. | : Les utilisateurs (anonymes) ne peuvent pas non plus renommer ni supprimer ni fichier ni répertoire. | ||
- | | + | |
: Les utilisateurs (anonymes) ne peuvent télécharger que les fichiers accessibles en lecture à tous. | : Les utilisateurs (anonymes) ne peuvent télécharger que les fichiers accessibles en lecture à tous. | ||
- | | + | |
: Nous acceptons les connexions depuis le port 20 (notre éventuel firewall laisse ce port passer). | : Nous acceptons les connexions depuis le port 20 (notre éventuel firewall laisse ce port passer). | ||
- | | + | |
: Tous les fichiers et répertoires du serveur sont montrés comme appartenant à FTP. | : Tous les fichiers et répertoires du serveur sont montrés comme appartenant à FTP. | ||
- | | + | |
: En mode passif, les ports acceptés sont dans la tranche 50000 à 60000. Tous les autres sont refusés sur le serveur et sans doute aussi sur le firewall. Qu’est-ce que cette chose-là ? Le mode passif est celui dans lequel le client, au lieu d’envoyer au serveur le numéro du port à partir duquel il souhaite que le serveur envoie les données, envoie PASV, laissant passivement le serveur décider quel port utiliser pour l’envoi de données, habituellement le port 20.\\ Cette directive est par défaut sur Yes, le mode passif est possible (ce qui est souvent nécessaire lorsqu’un firewall est présent avant le serveur. Le mode actif permet en revanche au client d’avoir la certitude, puisque c’est lui qui décide du port, que les données qu’il reçoit correspondent bien à sa demande initiale). | : En mode passif, les ports acceptés sont dans la tranche 50000 à 60000. Tous les autres sont refusés sur le serveur et sans doute aussi sur le firewall. Qu’est-ce que cette chose-là ? Le mode passif est celui dans lequel le client, au lieu d’envoyer au serveur le numéro du port à partir duquel il souhaite que le serveur envoie les données, envoie PASV, laissant passivement le serveur décider quel port utiliser pour l’envoi de données, habituellement le port 20.\\ Cette directive est par défaut sur Yes, le mode passif est possible (ce qui est souvent nécessaire lorsqu’un firewall est présent avant le serveur. Le mode actif permet en revanche au client d’avoir la certitude, puisque c’est lui qui décide du port, que les données qu’il reçoit correspondent bien à sa demande initiale). | ||
- | | + | |
: Nous logons les transferts. | : Nous logons les transferts. | ||
- | | + | |
: Nous interdisons l’option -R de “ls -R”, qui consomme trop de ressources machine. | : Nous interdisons l’option -R de “ls -R”, qui consomme trop de ressources machine. | ||
- | | + | |
: Nous n’envoyons pas les fichiers en mode ASCII. | : Nous n’envoyons pas les fichiers en mode ASCII. | ||
- | | + | |
: Nous acceptons la commande async ABOR, pour certains de nos clients qui en ont besoin (qui ? Nous ne savons pas, mais le serveur est public donc nous ne savons pas quel client FTP utilisera notre visiteur).\\ A quoi sert cette directive étrange ? Elle permet d’activer la commande FTP async ABOR, qui permet de stopper un téléchargement asynchrone en cours. Elle est considérée comme complexe et inélégante, | : Nous acceptons la commande async ABOR, pour certains de nos clients qui en ont besoin (qui ? Nous ne savons pas, mais le serveur est public donc nous ne savons pas quel client FTP utilisera notre visiteur).\\ A quoi sert cette directive étrange ? Elle permet d’activer la commande FTP async ABOR, qui permet de stopper un téléchargement asynchrone en cours. Elle est considérée comme complexe et inélégante, | ||
- | | + | |
: Si vous disposez d’un noyau 2.4 sous Linux, vous pouvez en activant cette fonction générer un processus par connexion. Il s’agit là d’une option moins " pure " en termes de sécurité, mais qui permet une performance parfois meilleure.\\ N’activez cette fonction, par défaut sur No, que si vous savez ce que vous faites et ce que ce changement implique et par ailleurs seulement si votre site reçoit un grand nombre de connexions simultanées.\\ C’est peut-être le cas pour ce serveur, nous l’activons et monitorerons naturellement la charge qu’elle provoquera. | : Si vous disposez d’un noyau 2.4 sous Linux, vous pouvez en activant cette fonction générer un processus par connexion. Il s’agit là d’une option moins " pure " en termes de sécurité, mais qui permet une performance parfois meilleure.\\ N’activez cette fonction, par défaut sur No, que si vous savez ce que vous faites et ce que ce changement implique et par ailleurs seulement si votre site reçoit un grand nombre de connexions simultanées.\\ C’est peut-être le cas pour ce serveur, nous l’activons et monitorerons naturellement la charge qu’elle provoquera. | ||
- | | + | |
: Nous acceptons 120 secondes d’inactivité de la part du client, au-delà il est rejeté pour laisser la place à un autre. | : Nous acceptons 120 secondes d’inactivité de la part du client, au-delà il est rejeté pour laisser la place à un autre. | ||
- | | + | |
: Si un transfert est gelé pendant plus de 300 secondes, nous considérons que le client est déconnecté ou en échec et clôturons la session pour laisser la place à un autre. | : Si un transfert est gelé pendant plus de 300 secondes, nous considérons que le client est déconnecté ou en échec et clôturons la session pour laisser la place à un autre. | ||
- | | + | |
: Nous donnons 60 secondes à un client en mode passif pour établir sa connexion. Au delà, nous clôturons pour laisser la place à un autre (60 secondes est largement assez, sauf si le client rencontre un problème important, qui handicapera de toutes les façons son transfert). | : Nous donnons 60 secondes à un client en mode passif pour établir sa connexion. Au delà, nous clôturons pour laisser la place à un autre (60 secondes est largement assez, sauf si le client rencontre un problème important, qui handicapera de toutes les façons son transfert). | ||
- | | + | |
: Nous donnons le même délai au client qui se connecte en mode PORT. | : Nous donnons le même délai au client qui se connecte en mode PORT. | ||
- | | + | |
: Nous autorisons un débit maximal de 50000 octets par seconde (49 ko/s) pour les clients. | : Nous autorisons un débit maximal de 50000 octets par seconde (49 ko/s) pour les clients. | ||
- | ====== Deuxième configuration : filtrage par adresses IP ====== | + | ===== Deuxième configuration : filtrage par adresses IP ===== |
Dans ce scénario, votre serveur héberge des documents que vous voulez mettre à la disposition d’une partie de votre réseau (par exemple le département comptabilité), | Dans ce scénario, votre serveur héberge des documents que vous voulez mettre à la disposition d’une partie de votre réseau (par exemple le département comptabilité), | ||
Ligne 88: | Ligne 88: | ||
Votre patron vous demande en plus " quelques petits ajustements ", qui consistent à lui donner, à lui tout seul, des possibilités de download spéciales et privilégiées et de réduire les possibilités des stagiaires, qui ont tendance, c’est bien connu, à abuser du système... Vsftpd sait s’appuyer sur tcp_wrappers pour autoriser ou refuser une ou plusieurs adresses IP et appliquer une configuration spécifique. | Votre patron vous demande en plus " quelques petits ajustements ", qui consistent à lui donner, à lui tout seul, des possibilités de download spéciales et privilégiées et de réduire les possibilités des stagiaires, qui ont tendance, c’est bien connu, à abuser du système... Vsftpd sait s’appuyer sur tcp_wrappers pour autoriser ou refuser une ou plusieurs adresses IP et appliquer une configuration spécifique. | ||
- | ===== Support de tcp_wrappers | + | ==== Support de tcp_wrappers ==== |
Cette opération suppose que vsftpd ait été construit avec le support de tcp_wrapper, | Cette opération suppose que vsftpd ait été construit avec le support de tcp_wrapper, | ||
Ligne 96: | Ligne 96: | ||
tcp_wrappers=YES | tcp_wrappers=YES | ||
- | ===== Définition d’une politique de filtrage | + | ==== Définition d’une politique de filtrage ==== |
Reste alors l’étape la plus importante, la création de la politique de filtrage dans tcp_wrapper. | Reste alors l’étape la plus importante, la création de la politique de filtrage dans tcp_wrapper. | ||
Ligne 145: | Ligne 145: | ||
Bien sûr, les mauvaises langues diront qu’il serait possible de contourner cette sécurité en spoofant l’adresse ou le nom d’un hôte autorisé : c’est vrai et cette évidence est valable pour tous les filtres basés sur l’adresse ou le nom (un filtrage sur l’adresse Mac pourrait être contourné de la même façon). Ce filtrage n’empêche pas l’existence d’un mot de passe, qui pourra être très restrictif (comme nous l’avons vu plus haut avec les directives secure_email_list_enable et email_password_file=/ | Bien sûr, les mauvaises langues diront qu’il serait possible de contourner cette sécurité en spoofant l’adresse ou le nom d’un hôte autorisé : c’est vrai et cette évidence est valable pour tous les filtres basés sur l’adresse ou le nom (un filtrage sur l’adresse Mac pourrait être contourné de la même façon). Ce filtrage n’empêche pas l’existence d’un mot de passe, qui pourra être très restrictif (comme nous l’avons vu plus haut avec les directives secure_email_list_enable et email_password_file=/ | ||
- | ====== Troisième configuration : les utilisateurs virtuels | + | ===== Troisième configuration : les utilisateurs virtuels ===== |
Justement, les utilisateurs sont capables de tout... une protection supplémentaire de vsftpd consiste à faire en sorte que le client qui accède ainsi à votre serveur ait des pouvoirs très limités... l’idée consiste à créer un utilisateur très particulier, | Justement, les utilisateurs sont capables de tout... une protection supplémentaire de vsftpd consiste à faire en sorte que le client qui accède ainsi à votre serveur ait des pouvoirs très limités... l’idée consiste à créer un utilisateur très particulier, | ||
Ligne 155: | Ligne 155: | ||
Elle s’opère en quatre étapes : la création d’une micro base de données qui contient les utilisateurs que vous autoriserez, | Elle s’opère en quatre étapes : la création d’une micro base de données qui contient les utilisateurs que vous autoriserez, | ||
- | ===== Création de la base de données | + | ==== Création de la base de données ==== |
Il s’agit là d’une étape délicate si vous ne maîtrisez pas PAM. Pour faire simple, PAM est le module d’authentification le plus efficace et le plus développé à ce jour sur les systèmes Linux. | Il s’agit là d’une étape délicate si vous ne maîtrisez pas PAM. Pour faire simple, PAM est le module d’authentification le plus efficace et le plus développé à ce jour sur les systèmes Linux. | ||
Ligne 192: | Ligne 192: | ||
Effacez parallèlement virtuels.txt. Si vous voulez le garder pour conserver la mémoire de ce que vous avez fait, donnez-lui les mêmes droits restrictifs que pour / | Effacez parallèlement virtuels.txt. Si vous voulez le garder pour conserver la mémoire de ce que vous avez fait, donnez-lui les mêmes droits restrictifs que pour / | ||
- | ===== Création du fichier PAM à partir de cette base de données | + | ==== Création du fichier PAM à partir de cette base de données ==== |
L’objectif de cette étape consiste à informer PAM qu’il faut utiliser notre base de données avec vsftpd... Créez un fichier vsftpd.pam, que vous positionnerez dans le répertoire /etc/pam.d. Ce fichier contiendra deux lignes, du type : | L’objectif de cette étape consiste à informer PAM qu’il faut utiliser notre base de données avec vsftpd... Créez un fichier vsftpd.pam, que vous positionnerez dans le répertoire /etc/pam.d. Ce fichier contiendra deux lignes, du type : | ||
Ligne 202: | Ligne 202: | ||
/ | / | ||
- | ===== Création d’un utilisateur virtuel | + | ==== Création d’un utilisateur virtuel ==== |
Jusqu’ici, | Jusqu’ici, | ||
Ligne 223: | Ligne 223: | ||
/ | / | ||
- | === Paramétrage de vsftpd | + | == Paramétrage de vsftpd == |
Il ne reste plus qu’à demander à vsftpd d’utiliser tous ces paramétrages, | Il ne reste plus qu’à demander à vsftpd d’utiliser tous ces paramétrages, | ||
Ligne 277: | Ligne 277: | ||
Si vous voulez assouplir les règles du répertoire d’accueil, | Si vous voulez assouplir les règles du répertoire d’accueil, | ||
- | ====== Quatrième configuration : utilisateurs virtuels, suite et encore plus de sécurité | + | ===== Quatrième configuration : utilisateurs virtuels, suite et encore plus de sécurité ===== |
La configuration qui précède est très sécurisée, | La configuration qui précède est très sécurisée, | ||
Ligne 287: | Ligne 287: | ||
Cette troisième configuration consiste donc simplement dans un premier temps à activer cette option, puis, dans un deuxième et troisième temps, à définir les droits de pierre et de toto. | Cette troisième configuration consiste donc simplement dans un premier temps à activer cette option, puis, dans un deuxième et troisième temps, à définir les droits de pierre et de toto. | ||
- | ===== Activation de la configurabilité utilisateur par utilisateur | + | ==== Activation de la configurabilité utilisateur par utilisateur ==== |
Pour ce faire, dans le fichier / | Pour ce faire, dans le fichier / | ||
Ligne 304: | Ligne 304: | ||
Nous utilisons ici la configuration précédente pour l’enrichir, | Nous utilisons ici la configuration précédente pour l’enrichir, | ||
- | ===== Paramétrages pour pierre | + | ==== Paramétrages pour pierre ==== |
Nous voulons que pierre ait des droits en lecture sur tous les répertoires. Dans la configuration précédente, | Nous voulons que pierre ait des droits en lecture sur tous les répertoires. Dans la configuration précédente, | ||
Ligne 315: | Ligne 315: | ||
Redémarrez le serveur et connectez-vous en tant que pierre, vous verrez que ls fonctionne, tandis qu’il produit un échec à ce stade si vous êtes toto ! | Redémarrez le serveur et connectez-vous en tant que pierre, vous verrez que ls fonctionne, tandis qu’il produit un échec à ce stade si vous êtes toto ! | ||
- | ===== Affinage des droits de toto ===== | + | ==== Affinage des droits de toto ==== |
Nous voulons que toto puisse lui aussi avoir ls, mais aussi créer ou uploader, sans bien sûr toucher aux fichiers déjà existants. Créez pour ce faire un fichier / | Nous voulons que toto puisse lui aussi avoir ls, mais aussi créer ou uploader, sans bien sûr toucher aux fichiers déjà existants. Créez pour ce faire un fichier / | ||
Ligne 329: | Ligne 329: | ||
Vous voyez qu’au fond, passer à ce stade ultime n’est pas beaucoup plus compliqué, puisqu’il s’agit au fond simplement, une fois la directive de configurabilité utilisateur par utilisateur activée, de créer un fichier de configuration cousu main pour chaque utilisateur particulier du système. | Vous voyez qu’au fond, passer à ce stade ultime n’est pas beaucoup plus compliqué, puisqu’il s’agit au fond simplement, une fois la directive de configurabilité utilisateur par utilisateur activée, de créer un fichier de configuration cousu main pour chaque utilisateur particulier du système. | ||
- | ====== Cinquième configuration : les IP virtuelles | + | ===== Cinquième configuration : les IP virtuelles ===== |
Mais bon, vous n’êtes peut-être pas paranoïaque à ce point et votre souci est peut-être plus de disposer d’un serveur à tout faire à peu près bien rangé, qui sépare bien le LAN de l’Internet par exemple, que de faire du tuning utilisateur par utilisateur. Imaginons donc un dernier cas. | Mais bon, vous n’êtes peut-être pas paranoïaque à ce point et votre souci est peut-être plus de disposer d’un serveur à tout faire à peu près bien rangé, qui sépare bien le LAN de l’Internet par exemple, que de faire du tuning utilisateur par utilisateur. Imaginons donc un dernier cas. | ||
Ligne 346: | Ligne 346: | ||
Vsftpd offre une solution pour vous : les IP virtuelles. L’idée de ce mécanisme consiste à attribuer plusieurs adresses IP à votre carte réseau (des alias) et de consacrer chaque IP à l’un des trois sites FTP que vous voulez maintenir. | Vsftpd offre une solution pour vous : les IP virtuelles. L’idée de ce mécanisme consiste à attribuer plusieurs adresses IP à votre carte réseau (des alias) et de consacrer chaque IP à l’un des trois sites FTP que vous voulez maintenir. | ||
- | ===== Création d’alias réseau | + | ==== Création d’alias réseau ==== |
Pour quoi faire ? Vous allez voir. Supposons que votre carte physique ait pour adresse 10.0.0.10 et qu’il s’agisse de la carte eth0. | Pour quoi faire ? Vous allez voir. Supposons que votre carte physique ait pour adresse 10.0.0.10 et qu’il s’agisse de la carte eth0. | ||
Ligne 384: | Ligne 384: | ||
De la même façon, nous créons un deuxième alias eth0:2, qui aura l’adresse 10.0.0.12. Notre carte réseau a désormais trois adresses. | De la même façon, nous créons un deuxième alias eth0:2, qui aura l’adresse 10.0.0.12. Notre carte réseau a désormais trois adresses. | ||
- | ===== Écoute d’une adresse particulière | + | ==== Écoute d’une adresse particulière ==== |
Occupons-nous à présent du serveur vsftpd et voyons ce que ce merveilleux outil permet de faire avec cette manipulation. | Occupons-nous à présent du serveur vsftpd et voyons ce que ce merveilleux outil permet de faire avec cette manipulation. | ||
Ligne 424: | Ligne 424: | ||
Bien sûr, vous aurez intérêt à positionner ces différents utilisateurs dans des répertoires différents, | Bien sûr, vous aurez intérêt à positionner ces différents utilisateurs dans des répertoires différents, | ||
- | ====== Conclusion | + | ===== Conclusion ===== |
Nous avons essayé dans cet article de vous proposer plusieurs configurations qui vous permettront, | Nous avons essayé dans cet article de vous proposer plusieurs configurations qui vous permettront, |