Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
Prochaine révisionLes deux révisions suivantes
logiciel:internet:ftp:vsftpd:exemples:start [2020/12/15 09:40] – ↷ Page déplacée de logiciel:internet:vsftpd:exemples:start à logiciel:internet:ftp:vsftpd:exemples:start adminlogiciel:internet:ftp:vsftpd:exemples:start [2021/02/27 16:39] admin
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 82: Ligne 82:
   : 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é), mais vous voulez que d’autres utilisateurs, pourtant eux aussi sur le LAN, ne puissent pas les lire (par exemple le département marketing). Sachant que vous avez " ces facilités avec les serveurs ". 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é), mais vous voulez que d’autres utilisateurs, pourtant eux aussi sur le LAN, ne puissent pas les lire (par exemple le département marketing). Sachant que vous avez " ces facilités avec les serveurs ".
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, ce qui est le cas des versions rpm et des installations standards. Si la manipulation que nous indiquons ici ne fonctionne pas dans votre configuration, alors c’est peut être que tcp_wrapper n’est pas activé dans votre version de vsftpd. Il vous suffit alors d’éditer le fichier builddefs.h et de remplacer #undef VSF_BUILD_TCPWRAPPERS par #define VSF_BUILD_TCPWRAPPERS. Recompilez alors vsftpd et le support sera activé. Cette opération suppose que vsftpd ait été construit avec le support de tcp_wrapper, ce qui est le cas des versions rpm et des installations standards. Si la manipulation que nous indiquons ici ne fonctionne pas dans votre configuration, alors c’est peut être que tcp_wrapper n’est pas activé dans votre version de vsftpd. Il vous suffit alors d’éditer le fichier builddefs.h et de remplacer #undef VSF_BUILD_TCPWRAPPERS par #define VSF_BUILD_TCPWRAPPERS. Recompilez alors vsftpd et le support sera activé.
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=/etc/vsftpd.email_passwords). Là encore, il est possible de contourner cette protection. Mais un utilisateur non autorisé qui possède à la fois la liste des adresses autorisées et des mots de passe vous conduira sans aucun doute à vous interroger sur la fiabilité globale de votre politique de sécurité... 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=/etc/vsftpd.email_passwords). Là encore, il est possible de contourner cette protection. Mais un utilisateur non autorisé qui possède à la fois la liste des adresses autorisées et des mots de passe vous conduira sans aucun doute à vous interroger sur la fiabilité globale de votre politique de sécurité...
  
-====== 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, un utilisateur virtuel, qui n’aura donc de droits que dans le cadre de vsftpd. 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, un utilisateur virtuel, qui n’aura donc de droits que dans le cadre de vsftpd.
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, la liaison de PAM avec cette base, la création d’un utilisateur virtuel, vers lequel sera mappé tout utilisateur autorisé et le paramétrage de vsftpd pour lui donner les droits que vous voudrez. Elle s’opère en quatre étapes : la création d’une micro base de données qui contient les utilisateurs que vous autoriserez, la liaison de PAM avec cette base, la création d’un utilisateur virtuel, vers lequel sera mappé tout utilisateur autorisé et le paramétrage de vsftpd pour lui donner les droits que vous voudrez.
  
-===== 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 /etc/vsftpd_virtuels.db. 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 /etc/vsftpd_virtuels.db.
  
-===== 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:
 /etc/vsftpd_virtuels (l’extension .db est donc sous-entendue). Puisque ce fichier s’appelle vsftpd.pam et qu’il est positionné dans /etc/pam.d, il sera pris en compte par PAM à chaque gestion des autorisations pour le démon vsftpd. /etc/vsftpd_virtuels (l’extension .db est donc sous-entendue). Puisque ce fichier s’appelle vsftpd.pam et qu’il est positionné dans /etc/pam.d, il sera pris en compte par PAM à chaque gestion des autorisations pour le démon vsftpd.
  
-===== Création d’un utilisateur virtuel =====+==== Création d’un utilisateur virtuel ====
  
 Jusqu’ici, pierre et toto sont deux utilisateurs réels. Mais nous ne voulons pas qu’ils aient de compte en dehors de vsftpd. Ils n’existeront donc pas sur le système et c’est pourquoi nous avons contourné le processus de création normal pour ces utilisateurs... mais ils ne peuvent pas faire grand-chose à ce stade ! Jusqu’ici, pierre et toto sont deux utilisateurs réels. Mais nous ne voulons pas qu’ils aient de compte en dehors de vsftpd. Ils n’existeront donc pas sur le système et c’est pourquoi nous avons contourné le processus de création normal pour ces utilisateurs... mais ils ne peuvent pas faire grand-chose à ce stade !
Ligne 223: Ligne 223:
   /home/siteftp, avec par exemple touch /home/siteftp/essai.txt...   /home/siteftp, avec par exemple touch /home/siteftp/essai.txt...
  
-=== Paramétrage de vsftpd ===+== Paramétrage de vsftpd ==
  
 Il ne reste plus qu’à demander à vsftpd d’utiliser tous ces paramétrages, au travers de /etc/vsftpd/vsftpd.conf. Le fichier pourrait être du type : Il ne reste plus qu’à demander à vsftpd d’utiliser tous ces paramétrages, au travers de /etc/vsftpd/vsftpd.conf. Le fichier pourrait être du type :
Ligne 277: Ligne 277:
 Si vous voulez assouplir les règles du répertoire d’accueil, vous pouvez modifier le fichier vsftpd.conf en relisant le début de cet article ou directement accroître ses droits locaux (par exemple drwx—x--x pour en autoriser le listing). Si vous voulez assouplir les règles du répertoire d’accueil, vous pouvez modifier le fichier vsftpd.conf en relisant le début de cet article ou directement accroître ses droits locaux (par exemple drwx—x--x pour en autoriser le listing).
  
-====== 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, mais elle présente évidemment une limitation : pierre et toto ont exactement les mêmes droits, ils sont rigoureusement identiques du point de vue du serveur. La configuration qui précède est très sécurisée, mais elle présente évidemment une limitation : pierre et toto ont exactement les mêmes droits, ils sont rigoureusement identiques du point de vue du serveur.
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 /etc/vsftpd/vsftpd.conf de la configuration précédente, ajoutez la ligne : Pour ce faire, dans le fichier /etc/vsftpd/vsftpd.conf de la configuration précédente, ajoutez la ligne :
Ligne 304: Ligne 304:
 Nous utilisons ici la configuration précédente pour l’enrichir, mais il va de soi que vous pourriez utiliser cette configurabilité utilisateur par utilisateur avec des utilisateurs " normaux ", connus sur le système, comme dans nos exemples du début de l’article. Nous utilisons ici la configuration précédente pour l’enrichir, mais il va de soi que vous pourriez utiliser cette configurabilité utilisateur par utilisateur avec des utilisateurs " normaux ", connus sur le système, comme dans nos exemples du début de l’article.
  
-===== 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, ls produisait un échec. Nous voulons que pierre ait des droits en lecture sur tous les répertoires. Dans la configuration précédente, ls produisait un échec.
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 /etc/vsftpd_user_conf/toto qui contiendra : 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 /etc/vsftpd_user_conf/toto qui contiendra :
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, avec les directives local_root et anon_root que nous avons évoquées au début de l’article.  Par ailleurs, cette répartition par adresse IP virtuelle peut se combiner avec les autres configurations vues dans ces exemples. Ce dernier scénario est loin des exemples extrêmes qui précèdent, puisqu’il donne l’impression d’être facile à contourner. Un utilisateur disposant de la bonne adresse (10.0.0.12 par exemple) pourra tenter une connexion vers le répertoire du groupe... encore faut-il qu’il ait le bon login et mot de passe... comme plus haut, s’il a toutes les informations et qu’il n’est pas supposé les avoir, il faudrait sans doute remettre à plat la politique globale de sécurité. Bien sûr, vous aurez intérêt à positionner ces différents utilisateurs dans des répertoires différents, avec les directives local_root et anon_root que nous avons évoquées au début de l’article.  Par ailleurs, cette répartition par adresse IP virtuelle peut se combiner avec les autres configurations vues dans ces exemples. Ce dernier scénario est loin des exemples extrêmes qui précèdent, puisqu’il donne l’impression d’être facile à contourner. Un utilisateur disposant de la bonne adresse (10.0.0.12 par exemple) pourra tenter une connexion vers le répertoire du groupe... encore faut-il qu’il ait le bon login et mot de passe... comme plus haut, s’il a toutes les informations et qu’il n’est pas supposé les avoir, il faudrait sans doute remettre à plat la politique globale de sécurité.
  
-====== Conclusion ======+===== Conclusion =====
  
 Nous avons essayé dans cet article de vous proposer plusieurs configurations qui vous permettront, en les combinant, de créer votre propre serveur.  Un bon moyen de les combiner consiste à les essayer sur un serveur de test. Nous avons essayé dans cet article de vous proposer plusieurs configurations qui vous permettront, en les combinant, de créer votre propre serveur.  Un bon moyen de les combiner consiste à les essayer sur un serveur de test.