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 couple adresse_ip nom_de_votre_machine
    • Pour enlever le warning d'Apache concernant le nom de domaine, ajoutez dans /etc/apache2/apache2.conf la ligne ServerName nom_de_votre_machine.
    • Relancez le démon Apache

Accéder à la page d'accueil du serveur

modifier

Il 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/ ou iceweasel 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
  1. Créez un répertoire qui hébergera votre application Web (par exemple /home/http/html)
  2. 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>.
  3. Modifiez dans le fichier de configuration (lequel ?) la racine du site.
  4. 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>
  1. Que signifient ces lignes (voir la documentation associée) ?
  2. Relancez le serveur Apache (au cas où ce n'est pas fait) et vérifiez le fonctionnement.

Fichier par défaut

modifier

Apache 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

modifier

Supposons 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.

  1. 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 ?
  2. Votre capacité mémoire est limitée; modifiez ces nombres en 3 et 15.
  3. Redémarrez Apache
  4. 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
  1. Vérifiez que votre serveur Apache possède un répertoire permettant d'accéder aux scripts cgi.
  2. Créez le répertoire /home/http/cgi-bin.
  3. 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.
  4. 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
  1. Activez le module PHP.
  2. 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é
  1. Par défaut, comment s'appelle le répertoire où un utilisateur, ayant un compte Linux, peut placer des pages html personnelles ?
  2. 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.
  3. Vérifiez que cette page est accessible via un navigateur.

Protection par mot de passe

modifier

Le 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 clair
  • AuthName texte, affichera le texte comme invite dans la boîte de dialogue
  • AuthUserFile /etc/apache2/users, indique où vont se trouver les mots de passe
  • AuthUserFile chemin/fichier, précise le fichier qui contient les comptes et mots de passe des utilisateurs ayant des droit d'accès
  • Require 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'option AllowOverride ne doit pas être None (dans ce cas la prise en compte de .htaccess est désactivée). Changez cette valeur en All.
  • Retestez avec succès ! N'oubliez pas de relancer le navigateur quand on change de compte.