2. Services et Serveurs Virtuels

Contenu de cette section

Si un nom d'hote appartient à une interface virtuelle, c'est ce que l'on nomme communément un "hote virtuel". Un démon qui exécute un service sur un hote virtuel (ou sur une interface virtuelle) est appelé "serveur virtuel".

2.1 Serveurs WWW Virtuels

Nous avons déjà donné un exemple de 3 serveurs WWW virtuels précédemment:

                www.sharpers.com, www.usurers.com, www.swindlers.com

La configuration d'une grande partie de ces démons http que je connaisse (c.f. l'excellente conception du "Roxen Challenger" ou le largement répandu "Apache") pour utiliser ces serveurs virtuels est facile, et largement documentée. En quelques mots: attachez simplement le port www (num 80) à l'interface réseau virtuelle avec l'adresse ip/nom désiré pour chaque serveur WWW que vous exécutez. Il n'y a aucune astuce.

Lisez le document Linux "Virtual Web mini-HOWTO" si vous désirez plus d'informations sur cette technique.

2.2 Addresses de courrier virtuelles

Dans le cas le plus simple, vous souhaitez recevoir chaque courrier pour tous les hotes virtuels, et pour les domaines concernés:

                www.sharpers.com, www.usurers.com, www.swindlers.com,
                    sharpers.com,     usurers.com,     swindlers.com

Meme la configuration de "smail" ou de "sendmail" (les démons qui se charge du traffic de courrier sur votre machine Linux) est relativement simple: ajoutez les noms/domaines additionnels dans "/etc/smail/config" (ajoutez 'hostnames=' et 'domains=') respectivement "/etc/mail/sendmail.cw" (un nom de domaine par ligne).

Pour implémenter un "réel" domaine virtuel à l'aide de smail, regarder la FAQ sur smail (smail-FAQ), disponible sur

http://www.sbay.org/smail-faq.html

2.3 Serveurs ftp virtuels

Le concept de serveur ftp virtuel n'est pas supporté par défaut dans les démons ftp que je connaisse.

Le très largement diffusé "wu-ftpd" dispose d'un patch réalisé par Brian Grossman brian@SoftHome.Net pour réaliser un service FTP distinct du serveur FTP anonyme traditionnel. Vous trouverez des précisions pour récupérer ce patch dans le chapitre 3.

Il semble qu'il n'y ait pas d'autres patch disponible pour réaliser cette opération.

L'idée générale du patch multihote de Brian est de faire opérer à wu-ftpd un "chroot()" sur

                REPERTOIRE_DE_BASE_DU_COMPTE_FTP/NOM_D_HOTE_DEMANDE/

au lieu de juste faire un chroot() sur

                                REPERTOIRE_DE_BASE_DU_COMPTE_FTP/

Dans l'exemple présenté précedemment, l'utilisateur qui se connecte sur "ftp.swindlers.com" par un compte ftp anonyme est bloqué dans "/home/ano-ftp/ftp.swindlers.com/" au lieu de "/home/ano-ftp/". Vous pouvez imaginer que la configuration de base est simple et ne diffère que très peu de la configuration d'un serveur anonyme simple.

Gloire à Brian pour cette stratégie de configuration simple et efficace.

Laissez moi m'assurer que vous disposez de cette version spéciale de wu-ftp déjà compilée par vous meme, ou que vous vous etes procuré le binaire, et laissez moi vous renvoyer pour toute question à la fin de ce document.

Je vais vous donner un exemple de la vie courante, et vous expliquer les manipulations que j'ai effectuées pour un de mes clients (je n'ai changé que le nom de ses machines par des noms fictifs...).

(a) Creéz un répertoire "/home/ano-ftp" pour les différents serveurs ftp anonymes.

                mkdir  /home/ano-ftp  &&  cd /home/ano-ftp
                mkdir  ftp.sharpers.com  ftp.usurers.com  ftp.swindlers.com

Vous obtenez alors comme arborescence:

        /home/ano-ftp/
                  |-- ftp.sharpers.com
                  |-- ftp.swindlers.com
                  `-- ftp.usurers.com

(b) Copiez les fichiers nécessaires pour un service ftp anonyme depuis le répertoire "/home/ftp" du serveur déjà configuré dans les répertoires nouvellements créés.

                cd     /home/ano-ftp/ftp.sharpers.com
                cp -a  /home/ftp/* .

                cd     ../ftp.swindlers.com
                cp -a  /home/ftp/* .

                cd     ../ftp.usurers.com
                cp -a  /home/ftp/* .

N'oubliez pas d'effacer les fichiers superflus du répertoire "pub/" (ou simplement, ne les copiez pas). Par exemple, le répertoire "/home/ftp" de la distribution Debian ressemble à ceci:

        /home/ftp                       Permissions   Propr  Groupe Taille
                |-- bin                 d--x--x--x   2 root   root       
                |   |-- gzip            ---x--x--x   1 root   root   45121
                |   |-- ls              ---x--x--x   1 root   root   22945
                |   `-- tar             ---x--x--x   1 root   root   77769
                |
                |-- etc                 d--x--x--x   2 root   root       
                |   |-- group           -r--r--r--   1 root   root      18
                |   |-- passwd          -r--r--r--   1 root   root      44
                |   `-- pathmsg         -r--r--r--   1 root   root     172
                |
                |-- lib                 d--x--x--x   2 root   root
                |   |-- ld-linux.so.1   -r-xr-xr-x   1 root   root   21375
                |   |-- libc.so.5.2.18  -rwxr-xr-x   1 root   root  536252
                |   `-- libc.so.5 -> libc.so.5.2.18
                |
                |-- pub                 dr-xr-xr-x   3 root   root
                |   `-- whatever
                |
                `-- welcome.msg         -rw-r--r--   1 root   root     323

(c) Changez le répertoire de base du compte ftp anonyme par "/home/ano-ftp" en éditant le fichier "/etc/passwd".

        ftp:*:11:11:Anonymous FTP:/home/ano-ftp:/bin/sh
                                  ^^^^^^^^^^^^^
                                repertoire de base

Ces trois étapes décrivent la configuration minimale, et permettent déjà la séparation des zones ftp pour chacun des 3 hotes virtuels. Mon travail actuel était un peu plus compliqué, puisque j'ai du activer les quotas sur les disques (limitant l'espace disque consommable par utilisateur/groupe) dans chacun des répertoires incoming, donc l'histoire continue:

(d) Activez les zones de téléchargement dans le fichier de configuration de wu-ftp "/etc/ftpd/ftpaccess"

8<----- couper ici 8<-----
upload  /home/ano-ftp/www.sharpers.de  *         no
upload  /home/ano-ftp/www.sharpers.de  /incoming yes sharpers ftp 0660 nodirs
upload  /home/ano-ftp/www.swindlers.de *         no
upload  /home/ano-ftp/www.swindlers.de /incoming yes swindler ftp 0660 nodirs
upload  /home/ano-ftp/www.usurers.de   *         no
upload  /home/ano-ftp/www.usurers.de   /incoming yes usurers  ftp 0660 nodirs
#                                                |      |      |    |     |
#                    telechargements autorises --+      |      |    |     |
#     les fichiers telecharges appartiennent            |      |    |     |
#                            a cet utilisateur ---------+      |    |     |
#                          idem pour le groupe ----------------+    |     |
# droits d'acces pour les fichiers telecharges ---------------------+     |
#        creation de repertoires non autorisee ---------------------------+
8<----- couper ici 8<-----

Maintenant, chaque fichier téléchargé sur ce serveur ftp appartient à un utilisateur séparé, pour qui les quotas peuvent etre activés.

(e) Configurer les quotas sur les disques.

Je vous suggère de lire: "/usr/doc/quotas.txt" et le Linux "Quota mini-HOWTO".

* Ajoutez "usrquota=/etc/quota/ano-ftp.users" dans les options de montage de la partition "/home/an-ftp" qui se trouve dans "/etc/fstab".

* Crééz "/etc/quota/ano-ftp.users" à l'aide de la commande "touch".

* Activez les quotas par la commande "quotaon"

* Fixez les quotas avec "edquota swindlers", etc.

Quotas pour l'utilisateur swindlers:

            /dev/sdb8: blocks in use: 0, limits (soft = 0, hard = 10000)
                       inodes in use: 1, limits (soft = 0, hard = 1000)

L'espace disque correspondant dépend de la taille en block du système de fichier que vous avez créé (le standard est 1 block = 1 kb).


Chapitre suivant, Chapitre Précédent

Table des matières de ce chapitre, Table des matières générale

Début du document, Début de ce chapitre