Services et serveurs

Apache : Installation, configuration, sécurisation

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

logo_apache



Installation



Pour Debian : se référer à l'article https://www.linuxtricks.fr/wiki/debian-installer-un-serveur-lamp-apache-mysql-php
Pour Gentoo : se référer à l'article https://www.linuxtricks.fr/wiki/installer-lamp-sur-gentoo-calculate-linux
Pour CentOS : se référer à l'article https://www.linuxtricks.fr/wiki/centos-7-installer-et-configurer-un-serveur-lamp
Pour Fedora : se référer à l'article https://www.linuxtricks.fr/wiki/fedora-installer-un-serveur-lamp


Configuration


Se référer à l'article Configurer les services LAMP


Les fichiers utilisés dans la suite


Suivant les distributions, les fichiers ne s'appellent pas pareil et ne se situent pas au même endroit.

Gentoo

CentOS

Debian

Fichier de configuration Apache /etc/apache2/httpd.conf /etc/httpd/conf/httpd.conf /etc/apache2/apache2.conf
Fichier de configuration PHP /etc/php/apache2-phpX.Y/php.ini /etc/php.ini /etc/php/X.Y/apache2/php.ini


Sécurisation


Masquer les détails du serveur web


Pour des raisons de sécurité, il est nécessaire de masquer la version d'Apache (afin que l'éventuel pirate ne puisse pas identifier la version et donc d'exploiter les failles associées).

Ainsi, dans le fichier de configuration Apache, il faut modifier les valeurs:

Code TEXT :
ServerTokens Prod
ServerSignature Off


Nous pouvons masquer aussi la version de PHP utilisée modifiant le fichier php.ini

Code TEXT :
expose_php = Off


Dans le VirtualHost, on peut ajouter ceci afin de masquer la version de PHP utilisée :

Code TEXT :
Header unset X-Powered-By



Renforcer la sécurité dans les VirtualHosts et dans SSL



De manière générale, on peut ajouter dans les VirtualHosts ces directives :

Code BASH :
# Bloquer le détournement de clic (clickjacking)
Header always set X-Frame-Options DENY
 
# Bloquer le changement des types MIME
Header always set X-Content-Type-Options nosniff


Côté SSL, afin de renforcer la note SSL Labs ( https://www.ssllabs.com/ssltest/ ) on peut modifier ou ajouter ces directives :

Code BASH :
# Désactiver les protocoles non sûrs
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
 
# Forcer les algorithmes forts et sûrs 
SSLCipherSuite HIGH:3DES:!aNULL:!MD5:!SEED:!IDEA
 
# Forcer l'ordre de ces algorithmes 
SSLHonorCipherOrder on
 
# utiliser HSTS
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"



Se protéger contre les attaques DoS



On peut réduite le TimeOut d'apache à 60 secondes au lieu de 300 secondes:

Code TEXT :
Timeout 60


Mais aussi réduire le nombre de processus apache à lancer par le serveur

Code TEXT :
ServerLimit 64



Utiliser le module mod_security


ModSecurity est un module d'Apache spécialisé dans la sécurité. Il permet donc de sécuriser la couche applicative avant l'arrivée des requêtes sur le site hébergé sur l'Apache en question. Même s'il s'agit d'un module, ses fonctionnalités sont vastes et permettent de toucher à tous les points de sécurité nécessaire.


Installation sous Gentoo


Code BASH :
emerge  www-apache/mod_security


Installation sous CentOS


Code BASH :
yum install mod_security


Installation sous Debian


Code BASH :
apt install libapache-mod-security