TP Configuration d'Apache



Conseils

TP1

La configuration globale d'Apache (Mdk 7.2)

Observer le contenu de /etc/httpd. On y trouve outre le répertoire de configuration 2 liens symboliques qui pointent vers les répertoires
  1. /var/log/httpd où Apache place ses journaux d'activités des requetes access_log et des erreurs error_log
  2. /usr/lib/apache où se trouvent les modules susceptibles d'etre chargés au noyau d'Apache.
    En particulier, les modules qui permettent à Apache d'interpréter directement les langages Perl (libperl.so) et Php (libphp4.so)
Le répertoire /etc/httpd/conf contient httpd.conf, apache-mime.types (qui permet de renseigner le client sur le moyen d'afficher un fichier suivant son extension), et 2 répertoires
  1. vhosts pour paramétrer les hotes virtuels
  2. addon-modules qui contient des fichiers de configuration, en particulier php.conf

Modifications de paramètres

Le serveur d'établissement est hébergé par une machine aux ressources limitées, et le nombre de requetes locales ne sera jamais considérable.
  1. Il y a 10 serveurs WEB en exécution lors du démarrage d'Apache, et 150 au maximum simultanément. Comment le vérifiez vous ?
  2. Ramener ces nombres à 4 et à 25.

Suivi du journal des accès

  1. Passer la commande à expliquer : tail -f /var/log/httpd/access_log > /dev/tty11  &
  2. Noter le PID, observer le contenu de la console tty11
  3. Demander à d'autres groupes d'émettre des requetes sur votre serveur, et interpréter les lignes de access_log
  4. ensuite supprimer cette tache de fond par kill -9 PID et vérifier.

La page d'accueil et les pages par défaut

  1. Quel est le fichier qui sert de page d'accueil et de test à l'installation ?
  2. Comment charger cette page d'accueil du serveur Apache hébergé par votre propre machine ?
  3. Pouvez-vous en faire autant avec les serveurs des autres groupes ?
  4. Renommez index.bak la page d'accueil du serveur. Pouvez vous l'obtenir comme précédemment ? Pourquoi ? Que faudrait-il faire ? (expliquez mais ne le faites pas)
  5. Qu'obtenez-vous en passant l'URL : http://serveur/index.bak ? Expliquez pourquoi.

  6. Créez rapidement une petite page HTML portant le nom accueil.html (et non pas welcome ;-)
    Vous voulez qu'elle devienne la page d'accueil de votre serveur. A noter que la page d'accueil initiale index.shtml doit toujours être présente dans /var/www/html
    Rechercher avec grep la ligne de DirectoryIndex et la modifier convenablement.
    Vérifier.

TP2

Les "pages persos"

C'est très à la mode ... tous vos collègues veulent publier leur page personnelle, voire gérer eux-mêmes un site.
Vous vous estimez investi d'une mission de service public et vous ne désirez pas les renvoyer aux hébergeurs privés.
Mais comme "webmestre" du "site officiel" de votre établissement, vous ne voulez pas les gérer vous-mêmes ...
  1. Vérifier bien la présence de la clause UserDir public_html dans le fichier de configuration
  2. Que faut-il alors faire pour permettre à vos utilisateurs de publier et de gérer eux-mêmes leurs "pages persos" ?
  3. L'utilisateur stagex (x=1 ..10) crée lui-même le répertoire de son site muni d'une page d'accueil accueil.html dans cet espace.
  4. Peut-il y accéder ? Si ce n'est pas le cas, cherchez à résoudre le problème en examinant les droits sur le chemin vers le fichier refusé. Etendre au minimum ces droits pour résoudre le problème
    Conclusion : est-ce une bonne solution que de donner de tels droits à tous ?
  5. (*) toto vous demande un espace de publication Web, mais vous ne voulez pas lui créer de compte sur le serveur (évidemment il ne pourra pas mettre lui-même en ligne). Comment faites-vous pour le satisfaire ?

Empêcher l'affichage du contenu d'un répertoire

Vous vous apercevez que le contenu d'un répertoire est affiché, lorsque le serveur ne trouve pas, dans ce répertoire, une des pages par défaut (listées par la clause DirectoryIndex) n'est pas présente.
Vous voulez interdire l'affichage de ces fichiers (pas forcément tous publics) et générer un message d'erreur
  1. Renommer index.bak la page d'accueil du serveur, et vérifier ce comportement du serveur, pour tous les utilisateurs.
  2. Rechercher les lignes comportant le mot-clé indexes, supprimer indexes sur le répertoire racine /
  3. Pouvez vous alors lister le répertoire racine du serveur Apache par http://serveur/ ?

TP3

Protéger les accès : les webs privés

AccessFileName .htaccess (ligne 248)
Il s'agit de protéger l'accès au sous-site privé de l'établissement, situé dans le sous-répertoire /var/www/html/prive.
Il ne devra etre accessible qu'à un ensemble limité de comptes Apache (et non Linux)
La première requête adressée à un fichier protégé provoque l'affichage d'un formulaire par lequel on doit s'authentifier (nom et mot de passe).
  1. Créer le répertoire /var/www/html/prive, y placer quelques pages.
    Tester leur accessibilité pour tous. Sinon penser à modifier les permissions Linux sur ces fichiers.
  2. Créer dans ce répertoire à protéger le fichier .htaccess. Voici une écriture standard :
    AuthUserFile /etc/httpd/conf/users
    AuthGroupFile /dev/null
    AuthName "Acces prive"
    AuthType Basic
    
    <limit GET>
    require valid-user
    </limit> 
  3. Dans ces conditions où se trouvera le fichier d'authentification ?
  4. Créer quelques comptes Apache avec la commande htpasswd puis examiner le fichier ainsi créé
  5. Tester. Pourquoi la protection ne semble t-elle pas fonctionner ?
  6. Rechercher dans le fichier de configuration d'Apache la ligne contenant AllowOverride et précédée de <Directory /> qui fixe des directives par défaut. La valeur de ce paramètre ne doit pas etre NONE (dans ce cas la prise en compte de .htaccess est désactivée). Changer cette valeur pour all ou
  7. Retester avec succès ! N'oubliez pas de relancer le navigateur quand on change de compte.
  8. (*) Procéder maintenant à la protection des pages personnelles de toto pour les amis de toto, un autre groupe d'utilisateurs.

TP4

Définir des alias

Il s'agit de donner des noms virtuels à des répertoires qui ne se trouvent pas dans l'arborescence usuelle /var/www/html/, (Apache est configuré ainsi sur la plupart des distributions de GNU/Linux)
  1. Repérer les lignes où il est question du mot alias avec une commande grep
  2. Cette déclaration d'alias est déjà écrite :
    Alias /doc /usr/share/doc
  3. Tester un accés sur une station par http://serveur/doc, en remplaçant serveur par le nom attribué au serveur.
  4. Paramétrage du répertoire, accorder les permissions d'accès au "site" doc
    <Directory /usr/share/doc>
    order deny,allow
    deny from all
    # permission d'accès local 
    allow from localhost, 127.0.0.1
    # permission à partir du sous-domaine de la salle (ou de l'établissement)
    allow from .fctice77.fr
    Options Indexes FollowSymLinks
    </Directory>
    
  5. (*) Normalement, vous avez auparavant interdit totalement l'affichage des répertoires (et donc la possibilité de navigation) sur la racine
    Pour la rétablir (uniquement) sur ce répertoire, quelle modification devez vous faire ?