Vous êtes sur la page 1sur 17

III.

Les services WEB

Table des matières


1 Installation de Apache : ...............................................................................................................2
2 Fichiers de configuration .............................................................................................................2
3 Quelques commandes utiles .......................................................................................................5
4 Configuration des ports d'écoute ................................................................................................6
5 Les sites virtuels ..........................................................................................................................6
5.1 Hôtes virtuels sur nom d’hôte ..............................................................................................7
5.2 Hôtes virtuels sur adresse IP ................................................................................................9
6 Restriction de l’accès utilisateur ................................................................................................ 11
6.1 Authentification locale....................................................................................................... 11
6.2 HTACCESS .......................................................................................................................... 13
6.3 Filtrage par IP .................................................................................................................... 14
7 Configuration d’Apache avec SSL ............................................................................................... 15
7.1 Génération locale d’un certificat ........................................................................................ 15
7.2 Configuration SSL .............................................................................................................. 16
7.2.1 Chargement du module SSL ....................................................................................... 16
7.2.2 Configuration des clés de serveur .............................................................................. 17
7.2.3 Redirection HTTP vers HTTPS ..................................................................................... 17
Après configuration du site sécurisé, toutes les requêtes vers http devront être redirigées en
https. ........................................................................................................................................ 17

Services réseaux sous Linux – M. DIOKH 1


Un serveur HTTP permet à un serveur web de communiquer avec un navigateur en utilisant le
protocole HTTP(S) et ses extensions (WebDAV, etc.).

Apache est le serveur Web le plus connu et depuis 1996 au moins le plus répandu sur Internet.
Sa popularité vient de sa grande stabilité et de sa bonne tenue à la charge. Il est présent dans
toutes les architectures à serveur de contenu dynamique LAMP et WAMP (Linux/Windows-
Apache-MySQL-PHP), et sa structure modulaire le rend apte à la plupart des utilisations.

1 Installation de Apache :

apt-get install apache2

À la suite de cette installation votre serveur doit fonctionner et être accessible à l'adresse
http://localhost

Un message « It Works! » devrait s'afficher dans votre navigateur. Il s'agit du contenu du


fichier /var/www/html/index.html qui est affiché par défaut.

La configuration du site par défaut est définie dans le fichier /etc/apache2/sites-


available/000-default.conf.

2 Fichiers de configuration

Pour les systèmes de type Debian, les fichiers de configuration de Apache se situent dans le
dossier /etc/apache2 :

 sites-available : contient les fichiers de configuration des sites disponibles ;


 sites-enabled : contient des liens symboliques vers les configurations, dans site-
available, des sites activés ;
 conf-available : contient les fichiers de configuration des autres services disponibles ;
 conf-enabled : contient des liens symboliques vers les configurations, dans conf-
available, des autres services activés ;
 mods-available : contient les fichiers de configuration des modules d'Apache
disponibles ;
 mods-enabled : contient des liens symboliques vers les configurations, dans mods-
available, des modules activés ;

Services réseaux sous Linux – M. DIOKH 2


Le fichier de configuration de base est par défaut apache2.conf. Il est composé de directives
suivies de valeurs. Certaines directives sont intégrées dans des conteneurs afin que leur
champ d’application soit limité.

Format type du fichier de configuration Apache

directive1 valeur1
directive2 valeur2
...
<directive_conteneurvaleur>
directive3 valeur3
directive4 valeur4
...
</directive_conteneur>

Exemple :

ServerRoot Indique le répertoire racine des fichiers de configuration.


User Désigne le compte de service propriétaire des processus Apache.
Group Désigne le groupe de service propriétaire des processus Apache.
ErrorLog Fichier de journalisation des erreurs.
Include Indique un fichier de configuration annexe à intégrer dans le fichier
apache2.conf.
Listen Indique un port sur lequel le serveur sera à l’écoute.
DocumentRoot Indique le répertoire contenant les fichiers html.

Services réseaux sous Linux – M. DIOKH 3


Il est conseillé pour des mesures de limiter les informations fournies par Apache :

Dans le fichier /etc/apache2/conf-available/security.conf

ServerTokens Prod

ServerSignature Off

 Avant

 Après

Services réseaux sous Linux – M. DIOKH 4


3 Quelques commandes utiles

 Activer le démarrage automatique du service Apache2 :


sudo systemctl enable apache2

 Désactiver le démarrage automatique du service Apache2 :


sudo systemctl disable apache2

 Pour arrêter apache2 :


sudo systemctl stop apache2

 Pour lancer apache2 :


sudo systemctl start apache2

 Pour relancer apache2 :


sudo systemctl restart apache2

 Pour recharger la configuration d'apache2 :


sudo systemctl reload apache2

 Pour voir la version d'Apache utilisée :


sudo apache2ctl –v

 Pour tester l'ensemble de la configuration d'Apache :


sudo apache2ctl -t

Services réseaux sous Linux – M. DIOKH 5


4 Configuration des ports d'écoute

Le fichier /etc/apache2/ports.conf permet de spécifier les ports à écouter.


Par défaut, il s'agit des ports 80 (port par défaut pour HTTP), et 443 (port par défaut
pour HTTPS) si le module SSL est activé.

5 Les sites virtuels

Il est fréquent qu’un serveur Apache physique héberge plusieurs sites web différents. C’est ce
qui permet aux hébergeurs de gérer les sites web de dizaines de clients sur un seul serveur.
Cette technologie est connue en environnement Apache sous le nom de Virtual Host (hôte
virtuel).

Il existe deux techniques d’implémentation des hôtes virtuels :

 Les sites virtuels par noms d’hôtes où le serveur fournit un contenu différent en
fonction du nom d’hôte présent dans l’URL par lequel il est contacté ;

 Les sites virtuels sur adresses IP où le serveur fournit un contenu différent selon
l’adresse IP par laquelle il est contacté ;

 Les sites virtuels sur par port où le serveur fournit un contenu différent selon port par
lequel il est contacté.

Services réseaux sous Linux – M. DIOKH 6


5.1 Hôtes virtuels sur nom d’hôte

Comme le site virtuel est reconnu sur son nom d’hôte, la directive ServerName doit être
présente systématiquement dans les conteneurs d’hôte virtuel, et le nom associé doit être
précisément celui par lequel les clients accéderont au serveur (le nom contenu dans l’URL).

La dernière directive obligatoire dans une déclaration d’hôte virtuel est la


directive DocumentRoot qui précisera l’emplacement des données web associées au site
virtuel.

 Configuration:

Pour un nom de domaine example.com on créera donc un fichier /etc/apache2/sites-


available/example.com.conf .

Exemple pour le nom www.test.sn:

<VirtualHost> Déclaration d’un hôte virtuel : tout ce qui se trouve dans le conteneur
concerne l’hôte virtuel.
*:80 L’hôte virtuel est éligible aux requêtes arrivant sur n’importe quelle
adresse IP du serveur et sur le port 80.
ServerName nom Cet hôte virtuel sera éligible aux requêtes vers le nom de serveur nom. Il
sera actif pour les requêtes vers http://nom.
DocumentRoot rep Les pages web de cet hôte virtuel sont dans le répertoire rep.

 Création du site Web

Services réseaux sous Linux – M. DIOKH 7


 Activation de site virtuel

La configuration doit être activée avec la commande a2ensite

NB 1: Après activation, on doit recharger la configuration d’Apache : service apache2 reload

NB 2 : On peut désactiver le site virtuel avec la commande a2dissite : a2dissite test.sn

 Test

Services réseaux sous Linux – M. DIOKH 8


5.2 Hôtes virtuels sur adresse IP

Dans cette configuration, le serveur dispose de plusieurs adresses IP et répond différemment


selon que le serveur subit une requête HTTP sur l’une ou l’autre de ses interfaces.

Une directive VirtualHost doit être utilisée pour chaque adresse IP utilisée. Elle contient la
déclaration de répertoire contenant les données html correspondant au site virtuel. Cette
déclaration se fait par la directive DocumentRoot.

 Configuration:

Pour une adresse IP on créera donc un fichier /etc/apache2/sites-available/AdresseIP.conf .

Exemple pour l’adresse 192.168.1.18:

adresse_x:80 L’hôte virtuel est éligible aux requêtes arrivant sur l’adresse IP
configurée du serveur et sur le port 80.
ServerName nom Facultatif s’il existe une résolution de noms inverse. Sinon, peut
renvoyer un message d’erreur non bloquant.
DocumentRoot rep Les pages web de cet hôte virtuel sont dans le répertoire rep.

 Création du site web

Services réseaux sous Linux – M. DIOKH 9


 Activation de site virtuel

La configuration doit être activée avec la commande a2ensite

NB 1: Après activation, on doit recharger la configuration d’Apache : service apache2 reload

NB 2 : On peut désactiver le site virtuel avec la commande a2dissite

 Test

Services réseaux sous Linux – M. DIOKH 10


6 Restriction de l’accès utilisateur

6.1 Authentification locale

Pour restreindre l’accès par authentification à un site complet ou une partie du site, il suffit
de restreindre l’accès au répertoire du contenu web.

Fichier apache2.conf : demande d’authentification pour un répertoire


AuthType Le type d’authentification
AuthUserFile Le fichier qui contient les informations d’authentification
AuthName Définit le titre de la boîte de dialogue qui imposera une authentification à
l’utilisateur.
Require valid- Directive imposant un fonctionnement spécifique avec son paramètre
user valid-user qui exige que l’utilisateur soit correctement authentifié.

La commande htpasswd permet de créer la base de compte puis de l’alimenter.

Exemple :

- Création du premier compte utilisateur


htpasswd -c fichier nom_utilisateur

- Ajout de compte utilisateur


htpasswd fichier nom_utilisateur

- Suppression d’un compte utilisateur


htpasswd -D fichier nom_utilisateur

Services réseaux sous Linux – M. DIOKH 11


Test :

 Sans authentification :

 Avec authentification :

Services réseaux sous Linux – M. DIOKH 12


6.2 HTACCESS

Une méthode alternative consiste à placer un fichier .htaccess dans le répertoire en question,
et d’y intégrer les directives devant s’appliquer au contenu du répertoire.

Ces fichiers spéciaux se nomment en général .htaccess, mais tout autre nom peut être spécifié
à l'aide de la directive AccessFileName.

NB : La meilleure méthode est l’exploitation de la directive Directory.

Exemple :

Contenu du fichier /var/www/html/topsecret/.htaccess utilisé pour configurer une


authentification depuis le répertoire des données html :

NB : Attention à la directive AllowOverride

Par défaut ces fichiers ne sont pas accessibles, lisibles ou téléchargeables...

<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy all
</Files>

Services réseaux sous Linux – M. DIOKH 13


6.3 Filtrage par IP

Le filtrage par IP permet de choisir les adresses IP qui ont accès ou non aux pages du site.

Par exemple : autoriser l'accès seulement depuis votre poste:


Order Deny,Allow
Deny from all
Allow from 127.0.0.1

ou encore de votre réseau local:


Order Deny,Allow
Deny from all
Allow from 192.168.1.0/24

ou interdire une IP précise:


Order Allow,Deny
Allow from all
Deny from 10.9.8.1

Services réseaux sous Linux – M. DIOKH 14


7 Configuration d’Apache avec SSL

SSL (Secure Socket Layer) est un protocole de sécurisation des couches applicatives. Il
fonctionne avec de nombreux protocoles, mais son usage le plus répandu est la sécurisation
de http (https).

Les certificats numériques X509 ont pour but d’établir de façon formelle un lien entre une
identité (nom, adresse IP, etc.) et une clé publique.

Les certificats ne peuvent être contrefaits car ils sont signés par un tiers en qui toutes les
parties placent leur confiance. Ces tiers sont appelés « Certificate Authority » (autorité de
certification).

7.1 Génération locale d’un certificat

Le fonctionnement de HTTP avec SSL requiert qu’un certificat contenant la clé publique du
serveur web soit envoyé au navigateur client et que cette clé publique soit toujours envoyée
sous forme de certificat. Apache configuré pour SSL doit donc disposer d’un certificat qu’il
pourra envoyer à ses clients.

Syntaxe :

openssl req -x509 -nodes -newkey rsa:taille -keyout fichier_clé -out fichier_certificat

Commande openssl pour génération de certificat : options et paramètres


Req Demande de certificat.
-x509 On souhaite un certificat auto-signé et non une demande
de signature.
-nodes La clé de serveur ne doit pas être protégée par un mot de
passe.
-newkey rsa:taille On crée de nouvelles clés asymétriques RSA dont la taille
est donnée en nombre de bits.
-keyout fichier_clé Le fichier qui contiendra la clé privée du serveur.
-out Le fichier qui contiendra le certificat du serveur.
fichier_certificat

Services réseaux sous Linux – M. DIOKH 15


Les champs normalisés du certificat sont demandés interactivement à l’utilisateur.

La plupart de ces champs sont informatifs, mais dans le cadre de l’utilisation de certificat pour
un serveur web, le champ Common Name (nom commun) doit impérativement
correspondre au nom DNS qui figurera dans l’URL d’accès au serveur. Dans le cas contraire,
le navigateur du client opposera une alerte de sécurité lors de la vérification du certificat de
serveur.

Exemple :

7.2 Configuration SSL

7.2.1 Chargement du module SSL

Le module nécessaire pour le SSL doit être chargé.

Exemple :

Si le module n’est pas chargé : a2enmod ssl

Services réseaux sous Linux – M. DIOKH 16


7.2.2 Configuration des clés de serveur

Il faut préciser au serveur quelles sont les clés à utiliser pour son fonctionnement SSL. Il doit
disposer de sa clé privée, et de son certificat qui contiendra sa clé publique.

Les directives :
SSLCertificateFile /chemin/fichier_certificat
SSLCertificateKeyFile /chemin/fichier_clé

SSLCertificateFile Désignation du fichier contenant le certificat de serveur.


SSLCertificateKeyFile Désignation du fichier contenant la clé privée de serveur.

Ensuite dire au serveur de démarrer le moteur SSL qui une fois l’authentification réalisée,
permettra le cryptage des échanges entre le client et le serveur.

SSLEngine on

Exemple :

7.2.3 Redirection HTTP vers HTTPS

Après configuration du site sécurisé, toutes les requêtes vers http devront être redirigées en https.

Exemple :

Services réseaux sous Linux – M. DIOKH 17

Vous aimerez peut-être aussi