Compte rendu de Raphaël Boublil
TP Service HTTP Serveur Apache – Linux Debian
•
•
Tout au long du tp, nous redémarrons le service apache constamment pour que les fi de configuration se remettent à jour - /etc/init.d/apache2 restart ou service apache2 Un Aperçu personnel sera identifié dans chacune des grandes partie.
Plan du tp d'apache → I] Installation du service → II] Étude du fichier apache2 → III] Configuration du serveur web
→ VI] Configuration du serveur avec plusieurs site web, création d’hôtes virtuels → V] Sécurisation des accès – Fichier .htaccess → VI] Conclusion
I] Installation du service a) Installation du service apache
Pour installer le service apache, nous devons avoir le statut de super-utilisateu root que ce soit pour installer apache ou n'importe quel autre service au trave la commande apt.
b) Installation du module php5
c) Aperçu personnel
Après avoir installé le service apache, j'ai entré dans mon navigateur mon adr local donc 127.0.0.1 et j'ai découvert une page étant inscrit It's Work. J'ai trouvé dans le dossier /var/www/ un fichier nommé index.html. J'en ai donc conclu que ce répertoire était la racine du serveur web.
J'ai renommé le fichier index.html en index.php dans lequel j'ai ajouté une lign et le serveur a correctement exécuté le s l'aide du module php5.
II] Étude du fichier apache2.conf a) Étude de quelques directives Variables d’environnements ServerRoot « /etc/apache2 »
Commentaires Répertoire racine du serveur
LockFile /var/lock/apache2/accept.lock Un fichier de vérrouillage du serveur et doit se trouver sur le disque local PidFile /var/run/apache2.pid
C'est le fichier sur lequel lorsque apache démarre, il soit stocker son numéro d'identification de processus
Timeout 300
Nombre de seconde avant de recevoir et d'envoyer un message « Délai d'attente dépassé » où timeout
KeepAlive on
Alloue ou non les connexions persistantes
MaxKeepAliveRequests 100 KeepAliveTimeout 15
Nombre de requête maximal alloué pendant une connexion persistante (0=non limité) Nombre de seconde d'attente pour la prochaine requête d'un même client sur une même
connexion avant un timeout User www-data et Group www-data
module mpm chargé
Utilisateur et groupe sur lesquels les processus du serveur seront lancés
Accessibilité .htaccess
Fichier de sécurité su niveau de la restriction des accès
Ceci empêche les fichier htaccess et htpasswd d’être vu par des client
Une directive imposant une restriction sur la racine du serveur
HostnameLookups Of
Activation de la résolution DNS pour les noms d’hôtes
ErrorLog /var/log/apache2/error.log
définit le fichier de log contenant des erreurs du serveur
Include /etc/apache2/httpd.conf
Inclusion de l'ancien fichier de configuration de apache sur les version antérieurs, il est présent pour des raisons de compatibilité ascendantes
Include /etc/apache2/ports.conf
Inclusion du fichier de configuration des adresse et ports où le serveur sera en écoute
Include /etc:apache2/sites-enabled
Inclusion des configuration des sites actifs
b) Aperçu personnel
En étudiant la plupart des directives, j'ai constaté que le fichier apache2.conf fichier de configuration principal d'apache, et que les autres fichiers et module chargés à partir de ce fichier principal (Include)
Je n'avais pas saisie le terme de connexions persistantes, après quelques r j'ai compris que les navigateurs web avaient besoin que le serveur conserve la connexion des client lors de l'envoi de fichier (par exemple .html ou des image chargées) donc lorsqu'une connexion cliente est maintenue ouverte on l’appe connexion persistante, ceci permet d'améliorer les performances du serveur
Après avoir recherché ce que représente le module MPM, j'ai découvert que duplique Apache afin de lui permettre de répondre à plusieurs requêtes simultanément. En d'autre terme, son rôle est d'accepter et de gérer les requê serveur Web, il représente le noyau du logiciel serveur Web
III] Configuration du serveur web a) Restreindre l’accès aux fichiers
Dans le fichier de configuration httpd.conf situé dans /etc/apache2, il faut rajo la directory correspondant à l'emplacement des fichiers à interdire.
Ligne 1 : On indique sur quel dossier la restriction agira, en l’occurrence ici c'e /var/www/ c'est à dire la racine
Ligne 2 : Indexes permet de lister l'ensemble des fichiers si un fichier index es absent, FollowSymLinks indique que apache peut suivre les liens symboliques Multiviews permet de trouver un fichier dans un répertoire n'étant pas visible. Ligne 3: Il s'agit de l'ordre des restrictions, d'abord une interdiction puis une autorisation Ligne 4 : Interdire tout le monde Ligne 5: Autoriser seulement les connexion venant d'une boucle locale c'est à la propre machine
b) Problèmes rencontrés
En me connectant d'une machine autre que celle où le service est installé, je p toujours accéder à la racine qui normalement m'est interdite.
Après des recherches, j'ai constaté que dans le fichier default du répertoire sit available, un directory sur la racine existait déjà. De plus, le fichier httpd.conf est utilisé par apache1, il est conservé vide dans Apache2 pour assurer la rétrocompatibilité. Le répertoire sites-available conti diférents virtualHost qui seront utilisés ainsi ils permettent de définir plusieu sites sur une même machine, en l’occurrence ici le fichier default contient le s virtualHost pour le moment.
C'est pourquoi il faut dans le fichier default de sites-available, supprimer le dir /var/www/ pour que httpd.conf prenne en compte celui ci.
IV] Configuration du serveur avec plusieurs site web, création d’hôte
Lors de cette partie, il m'a semblé plus judicieux de copier le fichier default du répe sites-available. Ainsi, en cas de mauvaise configuration du fichier default, je pourrai toujours reprendre sa copie. « cp default default_cp »
a) Création d'un hote virtuel La configuration par défaut du fichier default nous donne un accès sur le port tous les hôtes appartenant au réseau. A présent, nous allons interdire l’accès les hôtes exceptés la boucle local (127.0.0.1). Pour cela, il suffit de configurer deny from all contenu dans le Directory(var/www) du virtualHost au port 80.
b) Création de deux sites (Hote virtuel, répertoires, pages) 1) Création des répertoires et pages
La première étape va consister à la création de deux répertoires respect pour chacun des 2 hôtes virtuels. Ces 2 répertoires devront être créer da /var/www/ car ce répertoire constitue la base du serveur web.
Dans chacun de ces répertoire (vitrine et commerce), nous allons créer u page d’accueil en php. 2) Création des deux hôtes virtuels
Nous allons nous rendre dans le fichier default de sites-available. Pour l'instant, nous pouvons constater un seul hote virtuel sur /var/www/ Nous devons donc en créer deux autre en plus, avec un DocumentRoot contenant le répertoire qui hébergera les pages du site et un ServerNam indiquant le nom du serveur
En tapant l'adresse du serveur puis le dossier vitrine ou commerce, j'obt correctement l'index.
c) Configuration du fichier hosts du client •
Le fichier hosts est capable de convertir un nom de machine ou FQDN en une adresse ip. Ce fichier répertorie chaque adresse ip avec le nom d'une machine d'un FQDN. Par défaut l'adresse local est présente de cette forme : 127.0.0.1 localhost A chaque fois qu'un nom de domaine est entré par un utilisateur, la machine recherche d'abord l'adresse correspondant à ce nom dans son fichier hosts.
•
Nous devons définir dans le fichier hosts du client, l'adresse ip suivi du FQDN deux hôtes virtuel. Sur Windows, le fichier hosts se trouve dans et C:\Windows\system32\drivers\etc\hosts sur Linux, le fichier se trouve dans /etc/hosts Voici notre fichier hosts :
d) Aperçu personnel
L’hôte virtuel sur la racine du serveur, c'est à dire /var/www/ , doit être positio en tête du fichier default. En efet, si ce VirtualHost est placé après l'un des 2 virtuel créer, alors cela provoquera un dysfonctionnement
Ici, on constate que le VirtualHost racine est positionné en seconde position d hôtes virtuel. Par conséquent, le serveur consultera son fichier default et remarquera que www.sitevitrine.fr a la priorité la plus élevée et constitue alor serveur primaire. Donc si une demande est reçu et ne correspond à aucun spécifié, le serveur donnera le premier VirtualHost. Donc, il y a une ServerName importance dans la position des VirtualHost.
V] Sécurisation des accès – Fichier .htaccess a) Création des diférents utilisateurs
Nous allons créer 3 utilisateurs avec leur mot de passe respectif chifré dans u fichier que l'on nommera httpUtilisateurs. Ainsi nous pourrons tester 2 utilisat avec une autorisation sur le fichier .htaccess et l'autre aucune. Pour cela, nous utiliserons la commande htpasswd pour créer des utilisateur e afecter un mot de passe chifré.
b) Création du fichier .htaccess •
Nous devons créer le fichier .htaccess que l'on placera dans le répertoire com puisque c'est celui ci qui doit être protégé.
•
On constate que le fichier contenant les utilisateurs et leur mot de passe se si dans /etc/apache2/httpUtilisateurs. Seul les utilisateurs pierre et paul auront accès au VirtualHost /var/www/comm
c) Configuration du VirtualHost qui doit être protégé Nous devons à présent ajouter un directory sur /var/www/commerce/ dans le VirtualHost de commerce.online.fr
La directive à ajouter est AllowOverride AuthConfig Lorsque cette directive apparaît, alors le serveur cherchera un fichier .htacces contenu dans le répertoire définit dans le Directory. D’après Apache, AuthConfi permet l'utilisation des directives d'autorisation AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, etc...).
d) Aperçu personnel
Il est important de placer le fichier httpUtilisateurs dans /etc/apache2 par exem et surtout pas dans le serveur web car malgré que les mot de passe restent ch la présence des noms d'utilisateur et mot de passe est une source de danger.
La directive AllowOverride est primordiale pour faire fonctionner .htaccess. En en laissant le fichier .htaccess et en ôtant cette directive contenu dans son Di la demande d'authentification ne se réalise plus.
VI] Conclusion du tp d'apache •
Auparavant j'ignorais qu'il était possible d'avoir plusieurs sites sur une machine maintenant, j'ai compris que cela se réalise au travers d’hôte virtuel à déclarer d fichier default.
•
La protection htaccess est fort utile pour restreindre l’accès à certains utilisateur site web. De plus ce mécanisme est assez facile à mettre en œuvre, il suffit d'ind les utilisateurs ayant un accès donc les autres ne l'auront pas. De plus, j'ai décou que l'on pouvait restreindre aussi des groupes et des noms de domaine.
Compte rendu de Raphaël Boublil