Administration réseau sous Linux/TP Apache
Dans ce TP nous allons configurer le serveur web le plus utilisé sur Internet : Apache. Il permet d'héberger des sites webs et dispose d'une multitude de configurations et de modules complémentaires. Nous allons voir comment créer un site web, le rendre dynamique et le protéger par mot de passe.
Documentation associée : Apache.
Préalable
modifier- tiny et bigboss doivent être lancés (voir TP VDN)
- le réseau de bigboss doit être configuré (lancez
~reseaux/vdn-0.6/scripts/bigbossBaseConfig
si ce n'est pas déjà fait) - le réseau de tiny doit être configuré (voir TP Configuration réseau)
Lancement d'Apache
modifier- Essayez de lancer le démon Apache avec
/etc/init.d/apache2 start
sur bigboss - Si Apache est lancé tant mieux ! Dans le cas contraire:
- Vérifiez que le nom de votre machine est fixé dans
/etc/hostname
, - Ajoutez dans
/etc/hosts
le coupleadresse_ip nom_de_votre_machine
- Pour enlever le warning d'Apache concernant le nom de domaine, ajoutez dans
/etc/apache2/apache2.conf
la ligneServerName nom_de_votre_machine
. - Relancez le démon Apache
- Vérifiez que le nom de votre machine est fixé dans
Accéder à la page d'accueil du serveur
modifierIl y a plusieurs moyens pour accéder au serveur HTTP de bigboss :
- soit à partir de tiny en mode texte avec la commande
lynx http://bigboss/
- soit à partir de tiny en mode graphique avec la commande
firefox http://bigboss/
ouiceweasel http://bigboss/
- soit à partir du système hôte avec un navigateur, en utilisant l'adresse
http://localhost:PORT/
, où le PORT à utiliser est indiqué à côté du port 80 dans la page "Informations" du menu qui permet de lancer bigboss
Modification de la racine du serveur Web
modifier- Créez un répertoire qui hébergera votre application Web (par exemple
/home/http/html
) - Créez dans ce répertoire le fichier HTML
index.html
. Attention, ce fichier doit être un fichier HTML et doit au moins contenir <html><body> ... </body></html>. - Modifiez dans le fichier de configuration (lequel ?) la racine du site.
- Définissez pour le répertoire précédent des droits d'accès dans le fichier de configuration avec:
<Directory /home/http/html> Options Indexes FollowSymlinks Multiviews AllowOverride None Require all granted </Directory>
- Que signifient ces lignes (voir la documentation associée) ?
- Relancez le serveur Apache (au cas où ce n'est pas fait) et vérifiez le fonctionnement.
Fichier par défaut
modifierApache permet de spécifier des fichiers par défaut appelés lorsqu'un répertoire est demandé (URL non terminée par un nom de fichier)
- Recherchez dans le fichier de configuration du module "dir" les fichiers par défaut.
Configuration des ressources
modifierSupposons que le serveur soit hébergé par une machine aux ressources limitées, et que le nombre de requêtes qui lui sont adressées n'est jamais considérable.
- Il y a 5 serveurs WEB en exécution lors du démarrage d'Apache, et 10 au maximum simultanément. Comment le vérifiez vous ?
- Votre capacité mémoire est limitée; modifiez ces nombres en 3 et 15.
- Redémarrez Apache
- Utilisez la commande
ps
pour voir le nombre de démons Apache et expliquez ce que vous remarquez (il faut passer des options àps
pour voir les démons). Expliquez notamment pourquoi vous en observez plus de 3, et même plus de 4.
Création d'un script CGI
modifier- Vérifiez que votre serveur Apache possède un répertoire permettant d'accéder aux scripts cgi.
- Créez le répertoire
/home/http/cgi-bin
. - Modifiez le fichier de configuration pour que votre serveur Apache utilise par défaut le répertoire
/home/http/cgi-bin
comme répertoire où placer des scripts cgi. - Créez un script shell CGI en bash (qui affiche "toto", par exemple), et essayez de le faire fonctionner. Vous pouvez vérifier que votre script fonctionne en l'exécutant directement en ligne de commande.
Configuration de PHP
modifier- Activez le module PHP.
- Créez une page PHP et vérifiez qu'elle fonctionne. Par exemple
/home/http/html/index.php
contenant :
Nous sommes le <?php echo date('d/m/Y'); ?>, il est <?php echo date('G:i:s'); ?>.
N'oubliez pas les balises HTML autour de ce code.
Pages web personnelles
modifier- Vérifiez si le module
userdir
est activé
- Par défaut, comment s'appelle le répertoire où un utilisateur, ayant un compte Linux, peut placer des pages html personnelles ?
- Créez un utilisateur sasa, puis dans son répertoire personnel, ajoutez le nécessaire (1 répertoire et une page Web personnelle) pour avoir un accès aux pages personnelles.
- Vérifiez que cette page est accessible via un navigateur.
Protection par mot de passe
modifierLe principe :
La directive: AccessFileName .htaccess
doit être activée (à votre avis, dans quel fichier de configuration ?).
Les directives contenues dans ce fichier sont systématiquement interprétées avant d'autoriser l'accès au répertoire qui le contient.
Voici les directives usuelles et leurs significations:
AuthType basic
, type d'authentification communément adopté, fait hélas circuler les mots de passe en clairAuthName texte
, affichera le texte comme invite dans la boîte de dialogueAuthUserFile /etc/apache2/users
, indique où vont se trouver les mots de passeAuthUserFile chemin/fichier
, précise le fichier qui contient les comptes et mots de passe des utilisateurs ayant des droit d'accèsRequire valid-user|liste-noms
tous, ou seulement les comptes énumérés dans la liste, auront accès
On demande ici de protéger l'accès à un nouveau site pour qu'il devienne privé.
Pour créer ce site, créez le répertoire /home/http/html/prive
puis copiez y le fichier HTML que vous avez précédemment fait.
Il ne devra être accessible qu'à un ensemble limité de comptes Apache (et non Linux) à créer.
La première requête adressée à ce répertoire protégé provoquera l'affichage d'une boîte de dialogue par laquelle l'utilisateur devra s'authentifier (nom et mot de passe).
- Créez dans le répertoire "prive" le fichier
.htaccess
suivant:
AuthType Basic AuthUserFile /etc/apache2/users AuthName "Accès privé" Require user sasa
- Créez le compte sasa dans le fichier users situé dans
/etc/apache2
(le fichier n'existe pas, il va être créé). Pour cela, entrez dans le répertoire/etc/apache2
et tapez les commandes suivantes:
htpasswd -c users sasa htpasswd users prof
Sur certains systèmes, la commande s'appelle htpasswd2
.
Vous pourriez en réalité créer le fichier users n'importe où, du moment que vous spécifiez un chemin correct dans la directive AuthUserFile
.
- Examinez le fichier users ainsi créé. Qu'obtenez vous ? Qu'avez vous fait ?
- Ajoutez dans le fichier de configuration d'Apache 2, si elle n'existe pas, la règle suivante de fichier. Que permet cette règle ?
<Files ~ "^\.ht"> Order allow,deny Deny from all </Files>
- Testez l'accès à la page
prive/index.html
avec un navigateur. La protection ne devrait pas fonctionner !
- Recherchez dans le fichier de configuration d'Apache le bloc
<Directory /home/http/html>
concernant les droits d'accès du répertoire par défaut qui fixe des directives par défaut. La valeur de l'optionAllowOverride
ne doit pas êtreNone
(dans ce cas la prise en compte de .htaccess est désactivée). Changez cette valeur enAll
.
- Retestez avec succès ! N'oubliez pas de relancer le navigateur quand on change de compte.