TP2 Contrôle de l'accessibilité



  1. Modifier l'accessibilité à un répertoire
    1. Principe
    2. Il s'agit de réglementer, pour chaque répertoire du site principal (et aussi nous le verrons pour les sites virtuels), le droit d'accéder aux pages que ce répertoire contient, notamment en fonction de la machine cliente. Le fichier dans lequel ce paramétrage s'effectue est : /etc/apache2/sites-available/default
      On peut spécifier explicitement des adresses IP, des réseaux, des noms de machine ou de réseau ou all, dans la directive <Directory /...>, avec les clauses order, allow from et deny from
      Voir le détail en annexe, ci-dessous.
    3. Exercices
    4. - Modifier l'accès au site racine (/var/www/) pour autoriser l'accès de tous les machines du sous-réseau 10.194.2. sauf celles qui vous sont voisines. Bien vérifier.

      - Interdire l'accès de tous les hôtes sauf localhost, la machine du formateur et une machine voisine.

      - Vérifier que l'accès à la doc n'est autorisée que de localhost. Modifier /etcle fichier de configuration pour permettre l'accsè d'une machine voisine

  2. Permettre l'affichage du contenu d'un répertoire
  3. Vous voulez contrôler la visibilité du contenu d'un répertoire demandé par l'utilisateur. Faut-il autoriser qu'un répertoire puisse être parcouru, lorsque le serveur ne trouve pas dans ce répertoire, l'une des pages par défaut (dont les noms sont listées dans la clause DirectoryIndex)
    1. La possibilité de cet affichage est déterminé par l'état de la directive d'indexation Indexes. Si l'indexation est interdit, la demande http://serveur/repertoire peut conduire à une page d'erreur 403 ("You don't have permission to access /repertoire on this server").

    2. Tester : est-ce que l'option d'indexation est active actuellement pour la racine du site WEB ?
      Vérifier en examinant la paramétrage du paragraphe <Directory var/www> dans /etc/apache2/sites-available/default

    3. Changez Options Indexes .. en Options -Indexes ..
      Enregistrer et "reloader" le serveur.
      Faire le nécessaire pour bien vérifier l'effet dans les 2 cas : il y a un fichier par défaut, (on pourra par exemple renommer test.php en index.php ou non

    4. Revenir à la permission d'indexation du site principal /var/www/, puis y créer un sous-répertoire nommé perso supposé héberger des pages a priori non publiques.
      - Y placer quelques pages et donner sur le système des droits suffisants (lecture pour l'utilisateur d'apache2 www-data)
      - Dans le fichier dafault de /etc/apache2/sites-available/, écrire les directives de configuration d'un nouveau paragraphe <Directory /var/www/perso> de façon à réduire l'accès de ce site à une seule machine cliente et à interdire son indexation.
      - ne pas oublier de recharger apache2
      - bien tester : impossibilité d'indexation, mais accès possible aux fichiers, en les nommant explicitement dans l'url.
    5. Autre façon
    6. - On pourrait décrire le comportement du site perso en plaçant le paramétrage précédent dans un fichier spécifique - par exemple perso.conf, dans le répertoire /etc/apache2/sites-available/
      - se placer dans ce répertoire, puis activer ce nouveau "site" avec la commande a2ensite perso. - constater le changement dans em>/etc/apache2/sites-enabled/.

  4. Gérer un site dans son répertoire personnel
    1. Le contexte
    2. Tous vos collègues veulent publier leur page personnelle, voire mettre en ligne leurs cours en direction de leurs élèves. Alors que ceux-ci veulent peut-être "bloguer" pour étaler leur état d'âme .. vous estimez qu'on peut permettre ces publications (vous ne désirez pas les renvoyer aux hébergeurs privés); mais comme administrateur-webmestre du "site officiel" de l'établissement ou du service, vous ne voulez surtout devoir les gérer vous-mêmes ...
      Voir des précisions en annexe.
    3. Rappelez ce que signifie la directive UserDir public_html. Est-elle présente dans le fichier de configuration principal ?
    4. En fait, cette fonctionnalité est apportée par l'inclusion d'un module nommé mod_userdir.so
    5. A partir de là, retrouvez la directive UserDir public_html
    6. Ouvrir une console (ou une connexion distante par ssh) pour l'utilisateur stage. Ensuite, celui-ci crée lui-même le répertoire public_html pour héberger son site web, et y place une page d'accueil accueil.html
      Positionnez les droits minimum sur ce répertoire de façon à ce que le répertoire personnel dans son ensemble /home/stage reste inaccessible aux autres utilisateurs (voir annexe).
    7. Accès aux pages persos de stage
    8. Quelle requête permet-elle d'obtenir cette page /home/stage/accueil.html ?
    9. Expliquer comment accorder à toto un espace de publication WEB, sans lui créer de compte sur le serveur (évidemment il ne pourra pas mettre lui-même en ligne).

  5. Gérer un site perso avec .htaccess
  6. Il s'agit maintenant de déléguer la gestion des répertoires WEB personnels à leur propriétaires.
    1. Paramétrage global
    2. Dans /etc/apache2/sites-available/default, expliquez pourquoi root écrit :
      <Directory /home/*/public_html>
        Options -Indexes
        AllowOverride all
        Order deny,allow
        deny from all
      
      
    3. Paramétrage par stage
    4. # .htaccess du rép. /home/stage/public_html
      Options indexes
      order allow,deny
      allow from all
      
      Tester.
    5. Complément
    6. stage place dans son rép. perso les pages (avec un contenu quelconque) index.html et accueil.html
      Puis stage modifie le fichier de configuration de son site perso pour y empêcher l'indexation et y imposer que la page d'accueil par défaut soit accueil.html

ANNEXES

Paramétrage d'un répertoire

Règles à appliquer pour autoriser les accès des clients

Dans le conteneur <Directory> d'un répertoire, on peut préciser la liste des hôtes (le séparateur est l'espace) dont les requêtes seront traitées, et ceux dont les requêtes seront rejetées.
On précise d'abord une règle générale avec la directive order allow, deny ou l'inverse, qui précise la règle principale à appliquer aux machines qui figurent sur les listes explicites qui suivent les clauses allow from et deny from
  1. order allow, deny : autorise les hôtes de la liste allow, puis rejette ceux de la liste deny
  2. order deny, allow : rejette les hôtes de la liste deny, puis autorise ceux de la liste allow
  3. exemple1 : soit à autoriser tout le réseau 172.16.0. sauf 172.16.0.25
    # quel est le bon ordre : order deny, allow ou bien allow, deny ?
    order .....
    # par contre l'ordre relatif de ces 2 clauses suivantes n'a pas d'importance
    allow from 172.16.0.0/255.255.255.0
    deny from 172.16.0.25
    
  4. exemple 2 : écrire les directives pour n'autoriser que certaines machines, en plus de localhost, par exemple une machine voisine

Règles à appliquer pour paramétrer l'accès à un répertoire

Les paramétres d'Options permet de préciser l'action d'Apache sur les répertoires

Option signification
All | Nonetoutes | aucune option(s) permise(s)
ExecCGI exécution de scripts autorisée
FollowSymLinks le serveur suivra les liens symboliques rencontrés dans le répertoire
Indexes autorise l'affichage du contenu d'un répertoire (si un fichier par défaut n'y est pas trouvé)

Autoriser les pages WEB personnelles

Le dispositif .htaccess : déléguer la gestion des répertoires