TP2 Configuration d'un serveur Apache non sécurisé Objectif Configurer un serveur Apache Étudier les protocoles TCP et HTTP Créer et gérer des hôtes virtuels Savoir gérer les droits sur les répertoires hébergés Créer des pages personnelles Pré-requis Protocoles HTTP et TCP Matériel et logiciels utilisés 1 machine sous Linux Debian L analyseur de trames Wireshark Le logiciel Netkit Un navigateur (Iceweasel par exemple) Durée du TP : 4 heures 1. Manipulations et indications préliminaires 1.1. Le réseau étudié Vous allez utiliser deux machines : une machine hôte sous Linux et une machine virtuelle Netkit. La machine virtuelle Netkit va héberger le serveur Apache, tandis que la machine hôte va servir de client. Vous allez mettre en place une interface de type «tap» sur la machine virtuelle qui lui permettra de communiquer avec la machine hôte (voir Illustration 1).. Dans tout le TP, nous appellerons «client» la machine hôte et «serveur» la machine virtuelle. 1) Créez un répertoire nommé TPApache_votre_nom. Depuis ce répertoire, créez la machine virtuelle serveur : vstart serveur --mem=512 --eth0=tap,192.168.1.1,192.168.1.2 2) L'interface eth0 de la machine virtuelle serveur est liée à une interface virtuelle sur la machine hôte appelée nk_tap_root (voir Illustration 1). Ces interfaces sont automatiquement configurées par Netkit : vérifiez-le grâce aux commandes ifconfig et route -n. Vérifiez que client et serveur communiquent via des commandes ping. A. Quidelleur Services sur réseaux S3 1/15 SRC2 Meaux 2014-2015
Machine hôte client nk_tap_root 192.168.1.1 Machine virtuelle serveur eth0 192.168.1.2 eth0 Réseau salle TP Illustration 1 : Le réseau étudié 1.2. Commandes et fichiers de base Sur la machine virtuelle serveur, démarrez le service apache : /etc/init.d/apache2 start Important : A chaque fois que vous modifierez les fichiers de configuration du serveur, vous devrez - soit le redémarrer par : /etc/init.d/apache2 restart - soit recharger la configuration par : /etc/init.d/apache2 reload Si vous souhaitez arrêter le service, exécutez : /etc/init.d/apache2 stop Pour savoir dans quel état est le service, exécutez : /etc/init.d/apache2 status 3) Testez le fonctionnement du serveur localement, c'est-à-dire en utilisant l'adresse de bouclage local : www-browser 127.0.0.1 ou bien lynx 127.0.0.1 Si le serveur fonctionne, vous devez visualiser une page web contenant le message «it works!». 4) Si le serveur fonctionne en local, testez-le depuis la machine client (c'est-à-dire la machine «réelle») à l'aide d'un navigateur (saisissez l'adresse IP du serveur dans la barre de navigation). 1.3. Fichiers de journalisation Les fichiers de journalisation sont fondamentaux pour la configuration des services. Vous devez avoir le réflexe de les consulter dès qu'un problème surgit. Rappel : Le premier fichier de journalisation à connaître est /var/log/syslog. Il consigne tous les événements qui se produisent sur le système comme le démarrage ou l'arrêt d'un service par exemple. Vous y trouverez notamment les informations qui pourront vous aider lorsqu'un service ne A. Quidelleur Services sur réseaux S3 2/15
pourra pas démarrer. Par conséquent, dès que votre serveur ne démarrera pas correctement, vous devrez consulter ce fichier. Pour observer le contenu du fichier /var/log/syslog, il est préférable d'utiliser la commande tail : tail /var/log/syslog tail -20 /var/log/syslog affiche par défaut les 10 dernières lignes du fichier affiche les 20 dernières lignes du fichier Les accès au service Apache et les erreurs sont consignés dans des fichiers de log contenus dans le répertoire /var/log/apache2 : - access.log enregistre toutes les connexions réalisées sur le serveur ; - error.log enregistre les connexions qui n'ont pas pu aboutir. Vous devrez les consulter tout au long du TP pour vérifier votre travail. Les principaux répertoires et fichiers utilisés dans Apache 2 sont présentés sur l'illustration 2. / var etc www apache2 apache2.conf mods-enabled port.conf sites-available sites-enabled dir.conf Illustration 2: Les principaux fichiers et répertoires pour la configuration d'apache - /etc/apache2 contient les fichiers de configuration du serveur. - /var/www contient traditionnellement les répertoires dans lesquels sont placées les pages web des hôtes virtuels. Par défaut, il contient le fichier index.html de la page d'accueil par défaut du serveur (message «it works!»). Remarque : par la suite, vous pourrez vous aider de l'aide en ligne d'apache : http://httpd.apache.org/docs/2.2/fr/mod/directives.html Les fichiers de configuration sont constitués de directives. Il y a une directive par ligne maximum. La directive admet des arguments qui sont séparés par un espace. Les lignes qui commencent par le caractère # sont des commentaires. Les lignes vides et les commentaires sont ignorés lors du A. Quidelleur Services sur réseaux S3 3/15
démarrage du serveur. Dans les questions suivantes, vous allez étudier quelques directives essentielles d'apache. Indication : Dans la suite, il peut être intéressant d'utiliser la fonction de recherche de chaîne de caractères de l'éditeur nano. Pour rechercher un terme, enfoncez simultanément les touches Ctrl et W : une ligne débutant par Search apparaît. Écrivez dedans le mot recherché puis appuyez sur Entrée. Le curseur se positionne sur la première occurrence du mot. Pour voir l'occurrence suivante, appuyez de nouveau sur Ctrl et W puis Entrée. Pour sortir du mode recherche, appuyez simultanément sur Ctrl et C. Le fichier de configuration principal est /etc/apache2/apache2.conf. - La directive ServerRoot dans le fichier apache2.conf désigne le répertoire dans lequel les fichiers de configuration, d'erreur et de log du serveur sont stockés. 5) Vérifiez sur la machine serveur qu'il s'agit bien du répertoire /etc/apache2. - Les directives User et Group désignent respectivement le compte d'utilisateur et le groupe d'utilisateur utilisés pour faire fonctionner le démon Apache. Les paramètres fournis sont des variables définies dans le fichier /etc/apache2/envvars. On reconnaît les variables à leur syntaxe : ${NOM_VARIABLE} 6) Consultez ce fichier pour trouver la valeur des paramètres. 7) A l'aide de la commande ps -e -l grep apache2, relevez l'uid de l'utilisateur qui fait fonctionner Apache et vérifiez dans /etc/passwd qu'il s'agit bien de l'utilisateur identifié cidessus. Le fichier /etc/apache2/ports.conf définit les numéros de port utilisés par Apache. - La directive Listen définit l'adresse d'une de ses interfaces et un numéro de port sur lesquels le serveur Apache est à l'écoute, en attente de connexion. Si l'adresse est omise, il est à l'écoute sur toutes les interfaces. Plusieurs directives Listen peuvent être mentionnées. 8) Expliquez pourquoi deux valeurs de port sont définies. 9) Que signifie la directive IfModule? - La directive DirectoryIndex dans le fichier /etc/apache2/modsavailable/dir.conf indique au serveur quelles ressources (fichiers) chercher sur le serveur et renvoyer en réponse lorsque le client lui demande le contenu d'un répertoire. Par exemple, si le client saisit l'url http://www.exemple.com/dossier, le serveur va chercher l'un des fichiers mentionnés en argument de DirectoryIndex à l'intérieur du répertoire dossier sur le serveur. A. Quidelleur Services sur réseaux S3 4/15
10) Quels sont les noms de fichier recherchés par le serveur lors de la consultation d'un dossier? Les répertoires /etc/apache2/sites-available et /etc/apache2/sites-enabled sont utilisés pour la gestion des différents sites web hébergés sur le serveur (on parle d'hôtes virtuels) : - /etc/apache2/sites-available contient les fichiers décrivant les hôtes virtuels existant sur la machine. - /etc/apache2/sites-enabled contient les fichiers décrivant les hôtes virtuels utilisés (c'est-à-dire accessibles par les clients). Il contient des liens symboliques vers les fichiers du répertoire sitesavailable lorsqu'ils sont activés (un lien symbolique est un raccourci vers un fichier).. Pour l'instant, un seul site est hébergé par votre serveur. Il s'agit du site par défaut dont la page affiche «it works!». Le contenu du site par défaut est renvoyé au client qui fournit l'adresse IP du serveur en URI. 11) Pourquoi existe-t-il deux fichiers dans sites-available (default et default-ssl)? 12) Observez le fichier default. La directive DocumentRoot indique le répertoire dans lequel se trouvent les pages web du site par défaut. Quel est ce répertoire? 13) Observez le contenu de ce répertoire : comment s'appelle le fichier qui contient la page par défaut? Vous avez donc constaté que la page par défaut est contenue dans /var/www. 14) Sur le serveur, relevez le propriétaire et les droits sur le répertoire /var/www et sur la page par défaut (commande ls -l). Un utilisateur quelconque peut-il écrire dans le répertoire? 15) Modifiez le fichier index.html pour personnaliser le message d'accueil et vérifiez que ce nouveau message apparaît dans le navigateur le machine cliente. A. Quidelleur Services sur réseaux S3 5/15
2. Analyse du trafic 16) Videz le cache de votre navigateur sur le client. 17) Activez une capture wireshark sur l'interface nk_tap_root du client et connectez-vous au serveur depuis un navigateur lancé sur votre client. Attendez que les segments FIN/ACK apparaissent avant d'arrêter la capture. Analyse de la connexion HTTP 18) D'après votre capture, le serveur supporte-t-il des connexions persistantes ou non persistantes? 19) Recherchez dans la réponse du serveur les paramètres de la connexion (paramètres temporels et nombre de requêtes)? 20) Ces paramètres sont configurés dans le fichier /etc/apache2/apache2.conf par les directives KeepAlive, MaxKeepAliveRequests et KeepAliveTimeOut. Vérifiez la cohérence de ces paramètres avec votre réponse à la question précédente. En observant les instants de capture des trames sur Wireshark, vérifiez que la valeur configurée dans la directive KeeAliveTimeOut est bien respectée. Analyse de la connexion TCP 21) Relevez les MSS du client et du serveur. Dans quels segments et dans quel champ de ces segments les avez-vous trouvés? 22) Le client et le serveur supportent-ils le SACK? Dans quels segments et dans quel champ de ces segments avez-vous trouvé cette information? 23) Activez l'option Statistics Flow graph. Vérfifiez que vous comprenez l'évolution des numéros de séquence et d'acquittement et des flags. 24) Pourquoi le flag PSH est-il positionné sur les segments transportant la requête du client et la réponse du serveur? Précisez bien la taille de fenêtre du client et du serveur au moment où ces requêtes/réponses ont été émises pour justifier votre réponse. 25) Pourquoi la taille des fenêtres du client et du serveur évolue-t-elle au cours de la transmission? Quels sont les mécanismes de contrôle qui déterminent son évolution? Étude des requêtes et réponses HTTP 26) Activez l'option Analyse Follow TCP Stream et identifiez la requête et la réponse HTTP. Pour chacune, identifiez la méthode utilisée (GET, POST, ) ou le code de réponse dans la ligne de statut, l en-tête, le début du corps du message (s'il y a un corps). 27) Activez une nouvelle capture et rafraîchissez l'affichage de la page sur le navigateur. Expliquez le code de réponse fourni par le serveur. Quels sont les champs de la requête qui ont permis au serveur de déterminer que la page n'avait pas été modifiée? A. Quidelleur Services sur réseaux S3 6/15
3. Hébergement d'hôtes virtuels 3.1. Création basique Le serveur Apache permet l'hébergement de domaines virtuels. Il s'agit de sites identifiés par des noms de domaine différents mais qui sont hébergés sur la même machine physique. Cette méthode est notamment utilisée par les hébergeurs qui mettent en ligne sur une même machine physique les sites web de nombreux clients différents. Dans cette partie du TP, vous allez héberger deux sites virtuels, www.monsite1.mmi et www.monsite2.mmi, sur votre serveur. Ici nous inventons un domaine de haut niveau fictif, nommé mmi pour éviter tout conflit avec des sites existant réellement. 28) Sur le serveur, créez les répertoires qui abriteront les pages web de ces domaines nommés respectivement /var/www/monsite1 et /var/www/monsite2. Placez dans ces répertoires un fichier index.html qui permettra d'afficher un message permettant de reconnaître le domaine (ex. : «ceci est monsite1»). Vérifiez que le compte www-data a bien le droit de lecture sur ces répertoires et fichiers. Pour déclarer l'existence de ces 2 domaines virtuels, il faut créer des fichiers appelés monsite1 et monsite2 dans /etc/apache2/sites-available. 29) Créez le fichier monsite1 : <VirtualHost *:80> «*» : indique que n'importe quelle adresse IP du serveur peut être utilisée par le client pour se connecter 80 est le port utilisé ServerAdmin webmaster@monsite1.mmi ServerName www.monsite1.mmi ServerAlias monsite1.mmi DocumentRoot /var/www/monsite1 ErrorLog /var/log/apache2/error.log CustomLog /var/log/apache2/access.log combined </VirtualHost> Le fonctionnement des hôtes virtuels est le suivant. - Dans la requête HTTP, le client précise le nom de l'hôte virtuel qu'il souhaite consulter (dans le champ host de l'ent-tête HTTP). A. Quidelleur Services sur réseaux S3 7/15
- Le serveur compare ce nom à ceux contenus dans les directives ServerName et ServerAlias de tous les hôtes virtuels existants et renvoie le contenu de la page du premier hôte virtuel qui y correspond. - Si aucun nom contenu dans les directives ne convient, il renvoie le contenu du premier des hôtes virtuels de sa liste. 30) D'après ces explications, pourquoi le nom du fichier correspondant à la page par défaut commence-t-il par 000? 31) Modifiez de la même manière monsite2. 32) Pour autoriser le fonctionnement des domaines virtuels, créez des liens symboliques vers les deux fichiers précédents dans le répertoire /etc/apache2/sites-enabled. Pour cela, utilisez la commande a2ensite : a2ensite monsite1 a2ensite monsite2 Vérifiez que les liens sont effectivement créés et rechargez la configuration du serveur. 33) Comme le service DNS n'est pas implémenté, déclarez dans les fichiers /etc/hosts du client et du serveur la résolution de nom pour www.monsite1.mmi, www.monsite2.mmi, monsite1.mmi et monsite2.mmi. 34) Activez une capture sur l'interface tap. 35) Testez depuis le client l'accès aux deux domaines en tapant dans le navigateur http://192.168.1.2, http://www.monsite1.mmi et http://www.monsite2.mmi. a) Dans chaque cas, quelle page visualisez-vous? b) Sur la capture, vérifiez que le champ host dans la requête HTTP permet d'identifier l'hôte virtuel visé. 36) Imaginez que vous gérez le serveur d'un hébergeur. Le client qui possède le site www.monsite2.mmi ne vous a pas payé. Vous décidez de suspendre le fonctionnement de son site jusqu'à réception des sommes dues. Évidemment, vous ne comptez pas effacer toutes les données du client : il faudra que vous puissiez réactiver la page dès l'encaissement du paiement. Comment pouvez-vous procéder? A. Quidelleur Services sur réseaux S3 8/15
3.2. Sécurité des hôtes virtuels Il est possible que les différents hôtes virtuels n'appartiennent pas au même administrateur. C'est le cas notamment pour les serveurs des hébergeurs comme OVH, 1and1, etc. Dans ces conditions, plusieurs précautions doivent être prises. - D'une part, les administrateurs des sites web ne seront en général pas le root de la machine hébergeant le serveur Apache. Il faut donc leur créer des comptes sur la machine. Comme le seul répertoire auquel ils auront accès est celui défini dans la directive DocumentRoot de leur hôte virtuel, il est pertinent de leur attribuer précisément ce répertoire pour répertoire personnel. Évidemment, il faut définir les droits sur ce répertoire pour que seul l administrateur et son groupe y aient accès en lecture, écriture et exécution. - D'autre part, il est possible qu'un site web mal conçu contienne une faille de sécurité qui pourrait mettre en danger le serveur tout entier. En effet, un internaute mal intentionné pourrait exploiter une vulnérabilité de PHP pour détruire ou modifier le site web en question mais aussi les autres hôtes virtuels! Les conséquences seraient dramatiques pour l'hébergeur qui se doit de protéger les données de ses clients. Il existe une version d'apache qui résout ces problèmes. Grâce au paquetage apache2-mpm-itk, les hôtes virtuels fonctionnent sous des utilisateurs différents, alors que sur l'apache «classique» toutes les connexions sont exécutées sous l'identité de www-data. Ainsi les scripts PHP sont exécutés selon les droits donnés à l'administrateur de l'hôte virtuel. L'installation du paquetage apache2-mpm-itk est difficile sur Netkit. Par conséquent, vous allez dans cette partie uniquement utiliser la machine hôte («réelle») pour réaliser le serveur Apache. Votre PC hébergera désormais le client et le serveur. 37) Sur la machine hôte, installez le paquetage manquant : aptitude install apache2-mpm-itk 38) Créez deux hôtes virtuels, appelés monsite1 et monsite2 sur la machine hôte (voir partie précédente). Leurs répertoires racines sont toujours /var/www/monsite1 et /var/www/monsite2. 39) Créez deux nouveaux comptes d'utilisateur sur la machine hôte, nommés admin1 et admin2 dont le répertoire personnel est le répertoire racine du site. La syntaxe pour admin1 est : useradd -d /var/www/monsite1 admin1 Puis définissez un mot de passe pour admin1. A. Quidelleur Services sur réseaux S3 9/15
En général, les clients qui possèdent des sites sur le serveur d'un hébergeur transfèrent les fichiers constituant leur site par SSH ou par FTPs. 40) Testez une connexion SSH sous l'identité d'admin1 sur la machine hôte en utilisant la commande : ssh admin1@127.0.0.1 Quel est le répertoire courant à l'ouverture de la connexion SSH? Pour fermer la connexion SSH, utilisez : exit 41) Relevez dans le fichier /etc/passwd l'uid et le GID de ces nouveaux comptes. 42) Modifiez le propriétaire et le groupe des répertoires /var/www/monsite1 et /var/www/monsite2 pour que les utilisateurs admin1 et admin2 en soient respectivement les propriétaires et que les droits soient corrects. 43) Dans le fichier /etc/apache2.sites-available/monsite1, ajoutez cette ligne qui indique que ce domaine virtuel appartient à l'utilisateur admin1 et au groupe admin1: AssignUserId admin1 admin1 Procédez de même pour monsite2 puis rechargez la configuration d'apache. Vous allez maintenant vérifier que les processus exécutés le sont sous les comptes des administrateurs web lorsque des connexions sont réalisées sur les hôtes virtuels. 44) Pour cela, dans un terminal, exécutez la commande : watch 'ps axl grep apache' Elle affiche les processus actifs dont le nom contient apache. L'option -l affiche l'uid du compte utilisé pour faire tourner le processus. Depuis un navigateur sur la machine hôte, connectez-vous aux hôtes virtuels et vérifiez que les UID qui sont affichés par la commande ps sont bien ceux d'admin1 et admin2. Vous pouvez arrêter le serveur Apache sur la machine hôte. A. Quidelleur Services sur réseaux S3 10/15
4. Gestion de l'arborescence de fichiers Dans cette partie, vous allez étudier les droits sur les fichiers et répertoires des ressources. Pour cela, vous allez travail sur l'hôte par défaut. Le serveur est de nouveau celui de la machine virtuelle. 4.1. Gestion d'un répertoire Droits d'accès 45) Créez un répertoire nommé monrep dans /var/www. Dans monrep, créez un répertoire nommé sousrep. L'arborescence est donc semblable à celle de l'état 1 de l'illustration 3. a) Depuis le client, lancez un navigateur et saisissez l'url http://192.168.1.2/monrep Que voyez-vous? b) Créez un fichier index.html dans monrep. Écrivez un message d'accueil dedans (par exemple : «bienvenue dans monrep»). L'arborescence est celle de l'état 2 de l'illustration 3. Il permettra l'affichage du message «ceci est mon répertoire» dans le navigateur. Depuis le client, lancez un navigateur et saisissez l'url http://192.168.1.2/monrep Que voyez-vous désormais? / / var var www www monrep monrep sousrep sousrep index.html État 1 État 2 Illustration 3 : L'arborescence du répertoire /var/www Vous vous apercevez que le contenu d un répertoire est affiché lorsque le serveur ne trouve pas dans le répertoire concerné l une des pages par défaut (dont les noms sont listés par la directive DirectoryIndex). Toutefois, vous pouvez interdire l affichage du contenu d un répertoire et générer un message d erreur. A. Quidelleur Services sur réseaux S3 11/15
46) Effacez le fichier index.html du répertoire monrep. L'arborescence est de nouveau celle de l'état 1 de l'illustration 3. Dans le fichier /etc/apache2/sites-available/default, rajoutez cette section : <Directory /var/www/monrep > Options -Indexes </Directory> Testez de nouveau depuis le client. Quel est le résultat? Maintenant vous allez restreindre l'accès à l'un des répertoires. Par exemple, c'est un répertoire qui ne doit être accessible qu'à partir des machines de votre entreprise. 47) Sur le serveur, créez un répertoire appelé Prive dans monrep. Dans Prive, créez une page index.html (écrivez-y un message d'accueil). L'arborescence est celle de l'illustration 4. / var www monrep sousrep Prive index.html Illustration 4 : La nouvelle arborescence de /var/www Dans un premier temps, vous allez utiliser les directives Allow, Deny et Order pour contrôler l'accès à ce répertoire : - Allow permet l'accès à une ressource selon certaines conditions ; - Deny interdit l'accès à une ressource selon certaines conditions ; - Order précise dans quel ordre appliquer Allow et Deny. Voici comment sont traitées les directives Allow et Deny selon l'utilisation d'order (voir Illustration 5 page 13) : - Order Allow,Deny A. Quidelleur Services sur réseaux S3 12/15
Le système teste la directive Allow. Si la condition n'est pas remplie, la requête est rejetée. Sinon, le système teste la directive Deny : si la condition est remplie, la requête est rejetée. - Order Deny,Allow Le système teste la directive Deny. Si la condition est remplie, la requête est rejetée, sauf si la condition de la directive Allow est remplie. Toute requête ne satisfaisant pas aux directives Allow ou Deny est autorisée. Order allow,deny Condition non remplie Allow Condition remplie Requête rejetée Condition remplie Deny Condition non remplie Requête rejetée Requête acceptée Order deny,allow Condition non remplie Deny Condition remplie Requête acceptée Condition remplie Allow Condition non remplie Requête acceptée Requête rejetée Illustration 5 : Le traitement des requêtes allow, deny et order 48) Dans le fichier /etc/apache2/sites-available/default, rajoutez cette section : <Directory "/var/www/monrep/prive"> order deny,allow deny from all allow from 192.168.1.1 AllowOverride none </Directory> Vérifiez que vous pouvez accéder aux ressources du répertoire Prive depuis votre machine cliente. Puis remplacez l'adresse IP en paramètre dans allow from par une autre adresse et vérifiez que vous ne pouvez plus accéder aux ressources depuis votre machine cliente. 49) Pensez-vous que la sécurisation de l'accès à un répertoire par le filtrage d'adresse est suffisant? A. Quidelleur Services sur réseaux S3 13/15
Maintenant vous allez tester les fichiers.htaccess. 50) Modifiez ainsi la section précédente pour permettre l utilisation de.htaccess : <Directory "/var/www/monrep/prive"> AllowOverride All </Directory> 51) Créez le fichier.htaccess dans le répertoire Prive. Son contenu est le suivant : AuthUserFile /etc/apache2/.htpass AuthName "Accès sécurisé à la partie privée" AuthType Basic require valid-user Ces lignes forceront l'utilisateur à s'identifier. Seuls les utilisateurs déclarés dans le fichier.htpass auront accès au répertoire. 52) Vous allez maintenant créer le fichier d utilisateurs.htpass. L utilisateur homer sera autorisé à consulter le répertoire après authentification. htpasswd c /etc/apache2/.htpass homer Remarque : L'option -c crée le fichier.htpass ou l'écrase s'il existe déjà. Par conséquent, si vous voulez déclarer un nouvel utilisateur dans le fichier.htpass sans effacer les utilisateurs déjà déclarés, il faut utiliser la commande htpasswd sans option. Par exemple, pour déclarer l'utilisateur marge sans effacer homer : htpasswd /etc/apache2/.htpasse marge a) Sur le client, qu obtenez vous en passant l URL http://192.168.1.2/monrep/prive à votre navigateur? b) Observez le contenu du fichier.htpass. Comment les mots de passe sont-ils enregistrés? 4.2. Pages personnelles Vous allez permettre aux utilisateur possédant un compte sur le serveur d avoir leurs pages personnelles. Ces manipulations se font sur le serveur. 53) Créez un utilisateur homer puis attribuez-lui un mot de passe. useradd -m homer passwd homer Vérifiez que homer possède bien un répertoire personnel : /home/homer 54) Observez le contenu du fichier /etc/apache2/mods-available/userdir.conf A quoi sert la directive UserDir? Dans quel répertoire de son répertoire personnel un utilisateur doit-il placer ses pages web? A. Quidelleur Services sur réseaux S3 14/15
55) Pour autoriser les pages personnelles des utilisateurs, il faut créer un lien virtuel vers ce répertoire dans le répertoire /etc/apache2/mods-enabled. La commande a2enmod permet de le faire automatiquement : a2enmod userdir Vérifiez que qu'un lien virtuel vers le fichier userdir.conf apparaît désormais dans le répertoire /etc/apache2/mods-enabled/ 56) Prenez l'identité de homer, créez le répertoire public_html, vérifiez que les droits sur le répertoire sont corrects et placez-y un fichier index.html. Remarque : pour prendre l'identité de homer, utilisez la commande : su homer Pour fermer la session de homer, exécutez la commande : exit 57) Depuis le client, lancez un navigateur et tapez-y l'url : http://192.168.1.2/~homer (Attention! Ne pas oublier le ~) Vous devez visualiser la page de homer. A. Quidelleur Services sur réseaux S3 15/15