PCI DSS – Guide de durcissement Apache

apacheSuite à notre mise en conformité PCI DSS, je vous propose le guide de durcissement suivant sur le composant Apache hébergé sur un socle Linux. Ce billet permet de durcir votre composant à un niveau acceptable. N’oublions pas que le durcissement dépend énormément de la surface d’attaque que l’on souhaite exposer et surtout de la localisation de celui-ci.

Le durcissement d’Apache pour un Intranet est totalement différent pour un serveur chez un hébergeur qui ne dispose pas de Firewall filtrant en frontal (Hébergeur grand public..). Dans le cas présent, je vous propose un mixe entre un service WEB sur un réseau dans une DMZ protégé par des firewalls. Ce guide n’aborde pas le durcissement de l’application qui s’appuie sur le composant Apache.

Etape N°1 : Ne pas exposer les informations sensibles du composant Apache

On commence par dissimuler les informations de version de notre composant. On édite le fichier :

#vi /etc/apache2/apache2.conf

On créer les paramètres suivants :

Apache 2

Etape N°2 : Filtrer les IP

On peut décider des IP qui devront accéder ou pas à votre composant Apache. Si vous êtes un commerçant de proximité…avoir des accès de Chine, Japon ou encore Australie est ce vraiment utile ? (votre marché est Européen, il est fortement recommandé de blacklister certaines IP « Russie, Chine, Brésil….« ). Attention cette solution est light. Une personne malveillante passera pratiquement toujours par un Proxy…

Pour avoir des composants Apache facile à maintenir je vous conseille fortement de créer un fichier .htaccess à la racine de votre site Web.

vi .htaccess

Exemple 1 : On autorise uniquement le réseau 10.0.100.0/24

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

Exemple 2 : On autorise tout le monde sauf l’IP 100.10.0.124

Order Allow,Deny
Allow from all
Deny from 100.10.0.124

Une autre solution existe mais qui demande plus d’investissement dans la mise en oeuvre mais fortement recommandé pour les sites à fort trafic.

On créer un fichier de conf dans /etc/apache2/.

#vi apache_blackip.conf

On ajoute le texte suivant:
apache ip

Le fichier crée active le mod_rewrite, check les hosts non autorisés et compare avec le client en cours sur le composant Apache.

Donc on va créer le fichier hosts.deny

vi /usr/local/conf/extra/hosts.deny

Il faut le remplir à la main au début…

192.168.0.0/24 -
10.0.10.125 -
195.101.10.25 -

Ne pas oublier de mettre un espace et un tiret, j’ai perdu beaucoup de temps sur le sujet et j’ai trouvé la solution sur Google après une bonne heure de recherche. le module RewriteMap est pénible pardon exigeant.

On édite le fichier de conf d’Apache pour prendre en compte ce bannissement sur l’ensemble des sites de du socle.

vi /etc/apache2/apache2.conf

On ajoute la ligne suivante:

Include etc/apache2/apache_blackip.conf

Vous disposez d’un filtrage IP dédié à votre composant Apache…mais soyons réaliste c’est une protection complémentaire à votre Firewall et à vos outils de durcissement de votre socle (Firewall locaux).

Etape N°3 : Restreindre l’accès au site Web

J’ai restreint l’accès au répertoire du site web. Dans mon cas « /monsitewebpcidss » On modifie le fichier suivant:

vi /etc/apache2/sites-available/default

On inclus les lignes suivantes:
apache3

Etape N°4 : Ne pas autoriser le parcours des répertoires

Nous continuons nos modifications dans /etc/apache2/sites-available/default. Il nous ajouter la directive suivante :

Options - Indexes

Le fichier doit ressembler maintenant à ceci:

Apache4

Etape N°5 : Eviter les Includes sauvages

On continue dans notre fichier favori.

Apache5
On peut aussi pour des raisons techniques autorisés les includes mais sans l’exécution de code.

Options IncludesNOEXEC

Etape N°6 Ne pas autoriser les scripts CGI

Attention de vérifier avec le métier et la DSI que vous n’avez pas un script CGI « Il y a déja des informaticiens préhistorique dans le monde du Web 2.0« .

Options -ExecCGI

Etape N°7 : Ne pas autoriser le téléchargement du fichier .htaccess

Une faille qui marche toujours…Surtout lors des MEP à l’arrache à 03h00 du matin. On inclus les lignes suivantes dans le fichier .htaccess.
AccessFileName .httpdoverride
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</Files>

Etape N°8 : On bloque le suivi des liens symbolique du composant Apache

Dans notre fichier de conf /etc/apache2/sites-available/default, on ajoute :

Options -FollowSymLinks

Etape N°9 : Le module Modsecurity

Le module ModSecurity permet de durcir la couche applicative avant le traitement des requêtes HTTP. Il permet de détecter tous les tentatives d’inclusion (Includes), les exploits, l’antispam etc…

Pour mettre en oeuvre ce module, vous devez disposer le paquet libapache2-modsecurity. Il existe pas mal de tuto sur l’installation de celui-ci. Il faudra être vigilant car l’installation du module ne génère pas de fichier de conf par defaut.

Vous trouverez des exemples dans /usr/share/modsecurity-crs/.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *