Vous êtes sur la page 1sur 13

INSTALLATION ET CONFIGURATION D’UN SERVEUR WEB

SOUS CENTOS7

Scénario :
Le serveur Srv-Centos dispose d’une interface réseau (eth1) connecté sur le réseau local
172.16.88.0/21. Le réseau local dispose d’un routeur ADSL connecté sur internet (voir la
topologie ci-après).
Objectif : la mise en place d’un serveur Web Apache sous centos7.

Tableau d’adressage
Périphérique Masque de Passerelle par
Interface Adresse IP
(Nom d’hôte) sous-réseau défaut
Srv-Centos Eth1 172.16.88.X * 255.255.248.0 172.16.88.1

FAI G0/0 172.16.88.1 255.255.248.0 -

* X = 200 + ( Numéro de votre Poste)


Sommaire :
Tâche 1 : Installation du serveur Apache....................................................................................
Tâche 2 : Configuration spécifique d’un Répertoire...................................................................
Tâche 3 : Restriction d’accès à un Répertoire............................................................................
Tâche 4 : Utilisation des hôtes virtuels.......................................................................................
Tâche 5 : La Sécurisation des sites Web avec SSL..................................................................10
Tâche 6 : La redirection des sites et les alias............................................................................12
Tâche 7 : Personnaliser les pages des erreurs...........................................................................13

Page 1 sur 13
Tâche 1 : Installation du serveur Apache

Partie 1 : configuration du nom d’hôte et de l’interface réseau


1) Configurer le nom d’hôte à l’aide de la commande hostnamectl.
2) Editer le fichier de configuration de l’interface eth1 et ajouter les lignes permettant
d’avoir la configuration suivante :

Adresse IP de l’interface  :  172.16.88.X


Masque de sous réseau  : 255.255.248.0
Adresse IP de la passerelle  : 172.16.88.1
DNS Principale : 8.8.8.8
DNS Secondaire : 8.8.4.4
3) Enregistrer la modification, puis quitter.
4) Redémarrer le service réseau.
5) Afficher la configuration de l’interface eth1.
6) Afficher le contenu du fichier /etc/resolv.conf.
7) Tester la connectivité avec le serveur DNS Principale (8.8.8.8).

Partie 2 : Installation du serveur Apache


1) Lancer l’installation du serveur apache avec la commande yum
# yum install httpd -y
2) Vérifier que les packages nécessaires sont installés.
# yum list installed | grep http
3) Démarrer le service http d’apache et lui permet d’être démarré au démarrage du
serveur.
# systemctl start httpd
# systemctl enable httpd
4) En utilisant un client web (navigateur), tester le bon fonctionnement du service httpd.
 Avec localhost
 Avec l’ADRESSE_IP de votre serveur

Partie 3 : prise en main d’Apache


5) Afficher la version installée d’apache
# httpd -v
6) Afficher le fichier de configuration d’apache
# cat /etc/httpd/conf/httpd.conf

Page 2 sur 13
7) Faites un fichier de sauvegarde du fichier httpd.conf
# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.back
8) En utilisant votre éditeur préféré, éditer le fichier httpd.conf
# gedit /etc/httpd/conf/httpd.conf
9) Allez dans le répertoire par défaut de votre site Web principal ( /var/www/html/) et
créer un fichier index.html et y insérer le code html ci-après.
# cd /var/www/html/
# gedit index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>site principale</title>
</head>
<body>
<h1>Bienvenue sur le site principale d’apache </h1>
</body>
</html>
10) Refaire le test du fonctionnement de votre site Web. Que remarquez-vous ?
NB : supprimer, si nécessaire, l’historique de votre navigation internet
11) Faites écouter le serveur sur le port 8080 (utiliser la directive Listen 8080)
Listen 8080
12) Redémarrer votre serveur puis tester.
# systemctl restart httpd
A partir d’un navigateur : http://localhost:8080
13) Faites écouter le serveur sur l’adresse IP 172.16.88.X et le port 80.
Listen 172.16.88.X:80
14) Redémarrer votre serveur puis tester.
# systemctl restart httpd
A partir d’un navigateur : http://172.16.88.X:80
15) Repérer le chemin des fichiers logs puis afficher la fin de ces fichiers (commande tail ).
# tail /var/log/httpd/access_log
# tail /var/log/httpd/error_log
16) Tester la syntaxe du fichier de configuration.
# apachectl configtest

Page 3 sur 13
Tâche 2 : Configuration spécifique d’un Répertoire

Partie 1 : création de l’arborescence


1) Aller dans le répertoire de votre site Web principal (/var/www/html), et y créer
l’arborescence suivante :
├── divers
├── fichier.pdf
├── fichier.txt
├── piste.mp3
└── video.mp4
├── private
├── EFM.pdf
├── CC1.pdf
└── CC2.pdf
└── public
├── apache.pdf
├── ateliers.pdf
└── cours.pdf
# cd /var/www/html
# mkdir divers private public
# touch divers/fichier.{pdf,txt} divers/{piste.mp3,video.mp4}
# touch private/{EFM,CC1,CC2}.pdf
# touch public/{apache,atelier,cours}.pdf
2) Essayer d’accéder aux répertoires divers, private et public via votre navigateur Web
http://172.16.88.X/divers
http://172.16.88.X/private
http://172.16.88.X/public

Partie 2 : personnalisation d’affichage


3) On souhaite avoir la configuration suivante pour ces répertoires :
 Le contenu soit indexé (IndexOptions)
 Trier par nom par ordre croissant (IndexOrderDefault Ascending Name)
 Avoir les répertoires en premier (FoldersFirst)
 Pas de distinction entre MIN et MAJ pour les noms (IgnoreCase)
 Ne pas afficher le répertoire parent (IndexIgnore ..)
Ajouter les directives suivantes dans le fichier de configuration
<Directory "/var/www/html">
IndexOptions IgnoreCase FancyIndexing FoldersFirst
IndexIgnore ..
IndexOrderDefault Ascending Name
</Directory>

Page 4 sur 13
4) Redémarrer votre serveur puis tester.
 Si vous souhaiter avoir le tri par ordre alphabétique décroissant remplacer
Ascending par Descending.
 Si vous souhaiter avoir le tri par ordre taille remplacer Name par Size.

Tâche 3 : Restriction d’accès à un Répertoire

Partie 1 : restriction d’accès par adresse IP


1) On souhaite autoriser l’accès à notre site uniquement pour les utilisateurs de notre
réseau local (adresse réseau 192.168.1.0) sauf pour ceux des sous-réseaux 172.16.4.0 et
172.16.6.0.
Pour cela, Ajouter la directive suivante dans la balise <Directory
"/var/www/html"> précédente :
# Vi /etc/httpd/conf/httpd.conf

Order allow,deny
allow from 192.168.1.50
deny from 192.168.1.40
2) On souhaite autoriser l’accès à tout le monde pour le répertoire public qui se trouve
dans le site principal pour lequel nous avons limité l’accès par adresse IP.
Pour ce faire, Ajouter les directives suivantes au fichier de configuration :
<Directory /var/www/public>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>

Partie 2 : Restriction d’accès à un répertoire par mot de passe


On souhaite limiter l’accès au répertoire private par une authentification
user/password. On vous propose d’utiliser les « logins/passwords » suivants :
Login Password
SR sr@2022
CC cc@2022
Pour mettre en œuvre cette authentification, il faut d’abord créer un fichier de mots de
passe. Par défaut, l’outil de création du fichier de mots de passe fourni par
apache, .htpasswd, utilise l’algorithme MD5.(HACHAGE)
1) Création du fichier des mots de passe.

Page 5 sur 13
Dans une console ou un terminal émulé, déplacez-vous dans le répertoire : /etc/httpd
# cd /etc/httpd
2) Puis saisissez la commande :
# htpasswd -bc .htpasswd SR sr@2022
# Ce qui crée le fichier concerné et y ajoute l’utilisateur SR avec le mot de passe
sr@2022.
# Vi /etc/httpd/.htpasswd
Si plus tard vous désirez rajouter un utilisateur tmsir par exemple avec le mot de passe
tmsir@2019 (Ne pas utiliser l’option -c sinon le fichier sera écrasé)
# htpasswd -b .htpasswd CC cc@2022
 Si vous omettez le mot de passe (option -b), une invite vous demande de saisir ce
mot de passe.
 Notez précieusement ce mot de passe afin de le diffuser aux personnes autorisées.
 Il convient de garder le nom de fichier .htpasswd car le serveur Apache interdit par
défaut l’affichage de ce fichier par un utilisateur distant.
3) Application la restriction d’accès
Maintenant que le fichier de mots de passe est créé, nous pouvons appliquer la restriction
d’accès au moyen d’un fichier .htaccess : déplacez vous dans /home/essai Apache.
# cd /var/www/html/private
4) Créez-y un fichier .htaccess et y insérer le code ci-après :
# vi .htaccess
Et saisissez-y ceci :
Authname " Private : acces securisé "
AuthUserFile /etc/httpd/.htpasswd
AuthType Basic
require valid-user
5) Enregistrez le fichier.
6) Pour prendre en considération les fichiers « .htaccess », Il faut mettre l’attribut
AllowOverride du repertoire /var/www/ à All (none)
<Directory "/var/www">
AllowOverride All


</Directory>
7) Redémarrer votre serveur puis tester l’accès au répertoire private :
# systemctl restart httpd
A partir d’un navigateur : http://172.16.88.X/private

Page 6 sur 13
8) A présent on souhaite que les utilisateurs de votre réseau (172.16.0.0) accèdent au
répertoire private sans restriction, mais que l'accès à cette zone nécessite un mot de
passe pour les autres utilisateurs.
Pour cela on utilise require valid-user avec Order allow,deny et la directive Satisfy
any . Cette dernière permet de satisfaire une seule commande de restriction.
Modifier le fichier .htaccess comme suite :
Authname " Private : acces securise "
AuthUserFile /etc/httpd/.htpasswd
AuthType Basic
require valid-user
Order allow,deny
Allow from 192.168.1
Satisfy any
NB : Vous pouvez utiliser Satisfy all pour satisfaire toutes les commandes de restriction.

Partie 3 : Restriction d’accès à certains fichiers


9) On souhaite interdire l'accès à l'ensemble des fichiers portant une extension « .conf » ,
« .log » nous aurons besoin de recourir aux expressions régulières : "\.(conf|log)
$"
<FilesMatch "\.(conf|log)$">
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>
10) Aller dans l’arborescence de votre site Web et créer des fichiers .conf et .log, puis
tester après avoir redémarré le serveur.

Page 7 sur 13
Tâche 4 : Utilisation des hôtes virtuels

Dans le présent atelier, nous allons manipuler les hôtes virtuels par nom.

Partie 1 : préparation des sites


1) Aller Dans la racine de votre site Web, puis créer deux répertoires tri.ma et id.ma.
# cd /var/www/html/
# mkdir tri.ma id.ma
2) Copier dans chacun des deux, les répertoires divers, public et private de
l’atelier précédent
# cp -R private/ public/ divers/ index.html tri.ma/
# cp -R private/ public/ divers/ index.html id.ma/
3) Créer dans chacun des deux un fichier index.html.
Modifier leurs contenus comme suite :
 Pour le fichier index.html du site www.tri.ma
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>site TRI</title>
</head>
<body>
<h1>Bienvenue dans le site TRI.MA </h1>
</body>
</html>
 Pour le fichier index.html du site www.id.ma
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>site ID </title>
</head>
<body>
<h1>Bienvenue dans le site ID.MA </h1>
</body>
</html>

Partie 2 : Serveur virtuel pour le site tri.ma


1) Créer un serveur virtuel pour le site tri.ma qui répond aux spécifications suivantes :
 Port d’écoute : 80
 Nom du serveur : www.tri.ma

Page 8 sur 13
 Racine du site : chemin du dossier tri.ma
 On souhaite que nos clients puissent joindre notre site via les noms
www.tri.com et www.tri.org (utiliser la directive ServerAlias).
 vi /etc/httpd/conf.d/tri.ma.conf
<VirtualHost *:80>
ServerName www.tri.ma
ServerAlias www.tri.com www.tri.org
DocumentRoot /var/www/html/tri.ma
</VirtualHost>
2) Donner l’autorisation à apache d’accéder au répertoire de base de votre site Web
3) Redémarrer votre serveur puis tester l’accès a votre site via les noms de domaines
www.tri.ma www.tri.com www.tri.org .
NB : supprimer l’historique de navigation si nécessaire.

Partie 3 : Serveur virtuel pour le site id.ma


1) Créer un serveur virtuel pour le site id.ma qui répond aux spécifications suivantes :
vi /etc/httpd/conf.d/id.ma.conf
 Port d’écoute : 8080
 Nom du serveur : www.id.ma
 Racine du site : chemin du dossier id.ma
 On souhaite que nos clients puissent joindre notre site via les noms
www.id.com et www.id.org (utiliser la directive ServerAlias).
2) Donner l’autorisation à apache d’accéder au répertoire de base de votre site Web
3) Redémarrer votre serveur puis tester l’accès a votre site via les noms de domaines
www. id.ma www.id.com www.id.org.
4) <VirtualHost *:80>
5) ServerName www.id.ma
6) ServerAlias www.id.com www.id.org
7) DocumentRoot /var/www/html/id.ma
8) </VirtualHost>

Partie 4 : Serveur virtuel par défaut pour le port 80


Nous voulons créer un serveur virtuel par défaut seulement pour le port 80. Une
requête vers une adresse non spécifiée sur le port 80 sera servie par le serveur virtuel
par défaut.
1) Commencer par créer un répertoire de base pour le serveur default_80. Dans lequel
vous mettez créer un fichier index.html avec un code html indiquant clairement « le site
default_80 » (voir partie 1)

Page 9 sur 13
2) Ensuite créer le serveur default_80 comme suite :
<VirtualHost _default_:80>
DocumentRoot /var/www/html/default_80
...
</VirtualHost>
3) Tester le bon fonctionnement du serveur default_80

Partie 5 : Serveur virtuel par défaut pour le port 8080


Refaire la même chose pour le serveur default_8080 comme pour le serveur default_80,
puis tester.

Partie 6 : Serveurs virtuels _default_ pour tous les ports


A présent, nous voulons capturer toutes les requêtes émanant d'adresses IP ou de ports
non connus, c'est-à-dire, d'un couple adresse/port non traité par aucun autre serveur
virtuel.
<VirtualHost _default_:*>
DocumentRoot /www/default
</VirtualHost>
L'utilisation d'un tel serveur virtuel avec un joker pour le port empêche de manière
efficace qu'une requête n'atteigne le serveur principal.
Un serveur virtuel par défaut ne servira jamais une requête qui est envoyée vers un
couple adresse/port utilisée par un serveur virtuel par nom. Si la requête contient un en-
tête Host: inconnu, ou si celui-ci est absent, elle sera toujours servie par le serveur
virtuel primaire par nom (celui correspondant à ce couple adresse/port trouvé en premier
dans le fichier de configuration).
NB : prévoir la création du répertoire de base et du fichier index.html (comme pour
default_80, default_8080, et default).

Tâche 5 : La Sécurisation des sites Web avec SSL=https

 Partie 1 : Installation de openssl et mod_ssl et Création d’un certificat


auto-signé
1) Installer les packages openssl et mod_ssl
# yum install mod_ssl openssl
2) Vérifier la présence des packages
# yum list installed | grep ssl
Ou bien
# rpm -qa | grep ssl
3) Création d’un certificat auto-signé

Page 10 sur 13
# mkdir /etc/httpd/ssl
# openssl req -new -x509 -sha256 -days 365 -nodes -out /etc/httpd/ssl/server.crt
-keyout /etc/httpd/ssl/server.key
Generating a 1024 bit RSA private key
...................................++++++
..............................++++++
writing new private key to '/etc/httpd/ssl/httpd.pem'
-----
You are about to be asked to enter information that will be
incorporated into your certificate request.
What you are about to enter is what is called a
Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:MA
State or Province Name (full name) [Some-State]: FES-MEKNES
Locality Name (eg, city) []:FES
Organization Name (eg, company) [Internet Widgits Pty
Ltd]:OFPPT
Organizational Unit Name (eg, section) []:ISTA
Common Name (eg, YOUR name) []:tri
Email Address []:tri@ofppt.ma
Partie 2 : Configuration de l’hôte virtuel afin d’utiliser le certificat
auto-signé
1) Localiser le chemin du fichier de configuration ssl.conf
Vi /etc/httpd/conf.d/ssl.conf
2) Créer une sauvegarde pour le fichier ssl.conf
3) Faites modifier le fichier comme suite :
#Charger le module ssl_module
LoadModule ssl_module modules/mod_ssl.so
# activation du port 443
Listen 443
#Activation du SSLEngine
SSLEngine On
#chemin du fichier certificat ssl
SSLCertificateFile /etc/httpd/ssl/server.crt
#chemin du fichier clé du certificat
SSLCertificateKeyFile /etc/httpd/ssl/server.key
<VirtualHost *:443>
ServerName www.id.ma
DocumentRoot /var/www/html/id.ma
</VirtualHost>

Page 11 sur 13
4) Sauvegarder les modifications et redémarrer le serveur
5) Vérifier l’inclusion du fichier ssl.conf dans le fichier httpd.conf (IncludeOptional
conf.d/*.conf ).
6) Afficher les ports en écoute sur le serveur
# netstat -paunt
7) Tester l’accès a votre site web sécurisé.

Tâche 6 : La redirection des sites et les alias

Redirection de la page home.html à la page index.html


1) Créer une redirection permanente, pour le site www.ismotica.ma, de la page
home.html à la page index.html.
Redirect permanent /home.html index.html
2) Redémarrer votre serveur et tester l’accès a la page : http://ismotica.ma/home.html
Redirection en HTTPS des requêtes HTTP
3) A l’aide de la directive redirect, Faites une redirection en https des requêtes http
pour le site www.ismotica.ma, puis tester.
Redirect / https://www.ismotica.ma/
Redirection en HTTP des requêtes HTTPS
4) A l’aide de la directive redirect, Faites une redirection en http des requêtes https
pour le site www.ismotica.ma, puis tester.
Redirect / http://www.ismotica.ma/
Redirection en https d’une page d’authentification login.html
5) Créer une page login.html dans le site www.tri.ma
6) Faites une redirection en https de cette page d’authentification (login.html).
Redirect permanent /login.html https://www.tri.ma/login.html

Page 12 sur 13
Tâche 7 : Personnaliser les pages des erreurs

1) Faites modifier la directive ErrorDocument comme suite, puis tester.

ErrorDocument 403 "Vous n'avez pas l'autorisation de voir


le contenu... "
ErrorDocument 404 "Le document que vous tentez de voir
n'existe pas..."

2) Dans la racine de votre site Web, créer le répertoire erreur dans lequel vous mettez
deux fichiers erreur403.html et erreur404.html.
3) Modifier le contenu les deux fichiers comme suite :
 Pour le fichier erreur403.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>erreur403</title>
</head>
<body>
<h1> Vous n'avez pas l'autorisation de voir le contenu....</h1>
</body>
</html>
 Pour le fichier erreur404.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>erreur404</title>
</head>
<body>
<h1> Le document que vous tentez de voir n'existe
pas...</h1>
</body>
</html>
4) Tester la syntaxe du fichier de configuration (apachectl configtest).
5) Redémarrer votre serveur et tester

Page 13 sur 13

Vous aimerez peut-être aussi