Bibliothèque Numérique ENI :
tous nos livres & vidéos, en accès illimité 24h/24. Cliquez ici
Bibliothèque Numérique ENI :
tous nos livres & vidéos, en accès illimité 24h/24. Cliquez ici
  1. Livres & vidéos
  2. LAMP
  3. Aller plus loin avec Apache
Extrait - LAMP Installez et configurez votre serveur web (Linux, Apache, MySQL et PHP)
Extraits du livre
LAMP Installez et configurez votre serveur web (Linux, Apache, MySQL et PHP) Revenir à la page d'achat du livre

Aller plus loin avec Apache

Les modules Apache

Apache est un serveur web conçu pour être modulaire. Ses fonctionnalités peuvent être étendues grâce à différents modules, également appelés objets dynamiques partagés (DSO pour Dynamic Shared Objects).

1. Lister les modules

Afin de lister les modules disponibles pour notre installation d’Apache, on retrouve plusieurs fichiers avec l’extension .load dans le répertoire /etc/apache2/mods-available. Il s’agit uniquement des fichiers qui permettent de charger les modules qui sont présents dans notre installation.

Si vous souhaitez consulter les fichiers des modules actifs dans notre installation, vous pouvez lister le répertoire /etc/apache2/mods-available.

La commande apache2ctl vous permettra également de lister les modules actifs pour Apache grâce à l’option -M.

Par exemple, vous pouvez exécuter la ligne de commande suivante dans un terminal pour obtenir la liste des modules actifs (ou chargés) avec Apache.

apache2ctl -M 

En sortie de la commande, vous obtiendrez le résultat suivant :

Loaded Modules:  
 core_module (static)  
 so_module (static)  
 watchdog_module (static)  
 http_module (static)  
 log_config_module (static)  
 logio_module (static)  
 version_module (static)  
 unixd_module (static)  
 access_compat_module (shared)  
 alias_module (shared)  
 auth_basic_module (shared)  
 authn_core_module (shared)  
 authn_file_module (shared)  
 authz_core_module (shared)  
 authz_host_module (shared)  
 authz_user_module (shared)  
 autoindex_module (shared)  
 cgi_module (shared)  
 cgid_module (shared)  
 deflate_module (shared)  
 dir_module (shared)  
 env_module (shared)  
 filter_module (shared)  
 mime_module (shared)  
 mpm_prefork_module (shared)  
 negotiation_module (shared)  
 proxy_module (shared)  
 proxy_fcgi_module (shared)  
 reqtimeout_module (shared)  
 setenvif_module (shared)  
 status_module (shared) 

Dans cette liste de module que nous obtenons, on distingue le nom des modules, suivi d’une note indiquant lorsqu’il s’agit d’un...

Authentification et autorisation

Sous Apache, l’utilisation des modules vous permettra de mettre en œuvre des processus d’authentification pour vérifier l’identité d’un utilisateur et valider les permissions qui leur sont accordées grâce à des processus d’autorisation.

1. Gestion de l’authentification

a. Configuration de l’authentification

Afin de gérer l’authentification, on retrouve le module authn_core qui fournit les bases nécessaires au fonctionnement des modules d’authentification sous Apache.

Il fournit notamment des directives AuthName qui permet de définir un nom pour l’authentification et AuthType qui permet de définir le type ou la méthode d’authentification.

Par exemple, la ligne suivante vous permet de définir un nom :

AuthName "Accès restreint" 

La définition de cette directive est obligatoire dans le cas de l’utilisation de la méthode Digest présentée plus bas.

La directive AuthType permet de définir la méthode utilisée pour authentifier l’utilisateur. Généralement, il s’agit de la méthode Basic qui est fournie par le module auth_basic. La méthode Digest fournie par le module auth_digest permet d’améliorer légèrement la sécurité en utilisant une technique de hachage cryptographique avec MD5 pour transmettre les mots de passe dans la requête, contrairement à la méthode Basic qui transmet le mot de passe en clair. Néanmoins, la méthode Digest reste faillible, et l’utilisation d’une connexion chiffrée reste recommandée pour ces deux méthodes.

Ci-dessous, voici un exemple d’utilisation de la directive AuthType pour définir le type d’authentification avec la méthode Digest.

AuthType Digest 

b. Les méthodes d’authentification par fichier

Apache propose plusieurs modules, appelés fournisseurs d’authentification, qui permettront de fournir les moyens permettant d’authentifier des utilisateurs.

Dans le cas de l’utilisation de la méthode Basic, vous pourrez spécifier un fournisseur d’authentification avec la directive AuthBasicProvider ou avec la directive AuthDigestProvider dans le cas de la méthode...

Activité 4 : Activer du chiffrement avec le module ssl

1. Introduction

Dans cette activité, nous allons installer et configurer le module ssl afin de chiffrer les requêtes à travers le protocole HTTPS.

Pour reproduire cette activité, vous devez disposer d’une installation d’Apache fonctionnelle. Vous devez également disposer d’un accès à Internet qui vous permettra d’installer les paquets depuis les dépôts officiels de Debian. Enfin, vous devrez exécuter les commandes qui suivent en tant que root ou utiliser un compte d’utilisateur, qui dispose des droits d’administration suffisants avec la commande sudo.

2. Configuration de l’hôte virtuel par défaut

a. Activer le fichier de configuration de l’hôte

Pour cette activité, nous allons réactiver l’hôte virtuel par défaut que nous avions désactivé dans l’activité précédente.

Pour cela, vous pouvez suivre les instructions suivantes en tant que root ou avec la commande sudo.

 Exécutez la ligne de commande suivante pour activer la configuration 000-default.conf.

a2ensite 000-default.conf 

En sortie de commande, vous obtenez le message suivant :

Enabling site 000-default.  
To activate the new configuration, you need to run:  
  systemctl reload apache2 

 Avant d’appliquer les changements, exécutez la ligne de commande suivante pour vérifier la syntaxe.

apache2ctl -t 

En sortie de commande, vous obtenez le message suivant :

Syntax OK 

Si vous obtenez une ligne contenant Syntax OK, vous pouvez passer à la suite de l’activité. En revanche, si vous obtenez tout autre message, tel que Invalid command ou Syntax error, vous devrez corriger l’erreur signalée avant d’appliquer les changements.

 Enfin, exécutez la ligne de commande suivante pour recharger la configuration d’Apache....

Chiffrement avec SSL/TLS

L’utilisation du terme SSL (Secure Sockets Layer ; en français, Couche de sockets sécurisée) fait souvent référence à son successeur TLS (Transport Layer Security ; en français, Sécurité de la couche de transport). Il s’agit de protocoles de sécurité, mis en œuvre pour sécuriser les échanges sur Internet. Ils permettent d’assurer la confidentialité des données échangées, leur intégrité, ainsi que l’authentification des hôtes.

1. Le module ssl

Le module ssl d’Apache permet d’apporter le support des protocoles SSL et TLS pour le chiffrement des échanges entre un client et un serveur web à travers le protocole HTTPS. Ce module est disponible par défaut dans une installation d’Apache. Toutefois, il est nécessaire de procéder à son activation avec la commande a2enmod notamment.

L’activation de ce module permet d’apporter de nombreuses directives, qui permettent de configurer le moteur SSL/TLS utilisé pour la mise en œuvre du chiffrement au sein du serveur web et des hôtes virtuels. Les directives de base qui permettent de mettre en œuvre le chiffrement des échanges dans un hôte virtuel vous seront présentées dans les prochaines sections.

Si vous souhaitez obtenir plus d’informations sur ce module, vous pouvez consulter la documentation officielle à l’adresse suivante : https://httpd.apache.org/docs/current/mod/mod_ssl.html

2. Configuration d’un hôte virtuel

a. Analyse du fichier default-ssl.conf

Afin d’illustrer nos démonstrations, nous allons analyser le contenu du fichier de configuration de cet hôte virtuel.

Ci-dessous, voici un extrait de la configuration que l’on retrouve dans le fichier default-ssl.conf qui se trouve dans le répertoire /etc/apache2/sites-enabled.

<VirtualHost *:443>  
   ServerAdmin webmaster@localhost  
   DocumentRoot /var/www/html  
   ErrorLog ${APACHE_LOG_DIR}/error.log  
   CustomLog ${APACHE_LOG_DIR}/access.log combined 
 
   SSLEngine on  
   SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem...

Journalisation

On distingue principalement deux types de journaux sous Apache, les journaux d’erreurs qui regroupent les erreurs liées au fonctionnement courant d’Apache et les journaux d’accès liés aux requêtes reçues et traitées par Apache. Ces fichiers de journaux sont personnalisables grâce à l’utilisation de directives de configuration fournies par le noyau ou les modules d’Apache.

1. Les journaux d’erreurs

Par défaut, vous pouvez consulter les messages d’erreurs d’Apache dans le fichier error.log à l’emplacement /var/log/apache2/.

Ci-dessous, voici un extrait d’erreurs que l’on peut retrouver dans ce journal d’erreur :

[Sun Nov 24 20:45:47.985575 2024] [mpm_prefork:notice] [pid 
703:tid 703] AH00163: Apache/2.4.62 (Debian) configured 
-- resuming normal operations  
[Sun Nov 24 20:45:47.985598 2024] [core:notice] [pid 703:tid 703] 
AH00094: Command line: '/usr/sbin/apache2'  
[Sun Nov 24 21:17:58.448808 2024] [auth_basic:error] [pid 1875:tid 
1875] [client 192.168.1.53:60153] AH01618: user  not found: / 

Si vous souhaitez personnaliser les emplacements des messages d’erreur ou définir un niveau de verbosité particulier, la présentation des directives qui permettent de définir la configuration des journaux d’erreur sous Apache vous sera utile.

a. La directive ErrorLog

Cette directive s’applique uniquement dans un contexte de configuration globale et de serveur virtuel. Elle est fournie par le noyau d’Apache. Elle permet de définir l’emplacement du journal d’erreurs d’Apache.

La syntaxe de cette directive est la suivante :

ErrorLog /chemin/fichier 

Ci-dessous, voici un exemple d’application de cette directive :

ErrorLog /var/log/lamp/apache-error.log 

Dans cet exemple, les journaux d’erreurs seront stockés dans le fichier dont le chemin absolu est fourni en argument.

Dans une installation d’Apache par le gestionnaire de paquets sous Debian, cette directive est définie dans la configuration globale du fichier apache2.conf et a pour valeur /var/log/apache2/error.log par substitution de la variable ${APACHE_LOG_DIR}/error.log définie dans le fichier envvars.

b. La directive LogLevel

Cette directive s’utilise dans tous les contextes de configuration, à l’exception...