Cover Image

Configurer un serveur Apache


Configuration d’un serveur Apache avec SSL

Installer OpenSSL sur votre serveur Apache:

sudo apt-get install openssl

Créer un répertoire pour les fichiers de certificat SSL:

sudo mkdir /etc/ssl/webserver.kikoo.lol

Générer un certificat auto-signé:

sudo openssl req -new -x509 -keyout /etc/ssl/webserver.kikoo.lol/Ma+super+CA.key -out /etc/ssl/webserver.kikoo.lol/Ma+super+CA.crt -days 365 -nodes

Générer un certificat SSL pour votre serveur:

sudo openssl req -new -nodes -out /etc/ssl/webserver.kikoo.lol/mon+super+certificat.csr -keyout /etc/ssl/webserver.kikoo.lol/mon+super+certificat.key

Signer le certificat SSL avec votre certificat CA:

sudo openssl x509 -req -in /etc/ssl/webserver.kikoo.lol/mon+super+certificat.csr -CA /etc/ssl/webserver.kikoo.lol/Ma+super+CA.crt -CAkey /etc/ssl/webserver.kikoo.lol/Ma+super+CA.key -CAcreateserial -out /etc/ssl/webserver.kikoo.lol/mon+super+certificat.crt -days 365

Configurer Apache pour utiliser SSL avec une SuperCA:

  • Editer le fichier de configuration Apache (/etc/apache2/ports.conf) pour ajouter la directive suivante:
Listen 443
  • Editer le fichier de configuration Apache (/etc/apache2/sites-available/https.conf) pour ajouter les directives suivantes:
<VirtualHost *:443>
    ServerName webserver.kikoo.lol
    SSLEngine on
    SSLCertificateFile /etc/ssl/webserver.kikoo.lol/mon+super+certificat.crt
    SSLCertificateKeyFile /etc/ssl/webserver.kikoo.lol/mon+super+certificat.key
    SSLCACertificateFile /etc/ssl/webserver.kikoo.lol/Ma+super+CA.crt
</VirtualHost>
  • Activer le nouveau site web et désactiver le site par défaut :
sudo a2ensite https
sudo a2dissite 000-default
  • Configurer Apache pour n’utiliser que les protocoles TLSv1.2 et TLSv1.3 :
sudo nano /etc/apache2/mods-available/ssl.conf

Ajoutez les lignes suivantes à ce fichier :

SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM:ECDHE-ECDSA-AES128-GCM:ECDHE-ECDSA-CHACHA20-POLY1305-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-CHACHA20-POLY1305-SHA256
  • Redémarrer Apache pour que les changements prennent effet:
sudo service apache2 restart

Éditer le fichier /etc/hosts pour ajouter le nom de domaine:

  • Ouvrir le fichier /etc/hosts en mode édition:
sudo nano /etc/hosts
  • Ajouter le nom de domaine et son IP (par exemple 127.0.0.1 pour un serveur local):
127.0.0.1 localhost webserver.kikoo.lol
  • Enregistrer et fermer le fichier.

Note: Si vous êtes en production, vous devez utiliser l’IP publique du serveur au lieu de 127.0.0.1.

Vérifier la configuration SSL:

  • Accédez à votre serveur via https://webserver.kikoo.lol.
  • Vérifiez que vous obtenez un certificat SSL valide avec les informations du certificat auto-signé ou du certificat fourni par la SuperCA.

Hardening SSL/TLS avec Apache

J’ai déjà configuré mon serveur Apache pour désactiver SSLv2 et SSLv3 et utiliser des ciphers forts pour sécuriser les échanges SSL/TLS.

Maintenant, je vais ajouter la mise en place d’HSTS (HTTP Strict Transport Security) et OCSP (Online Certificate Status Protocol).

HSTS

HSTS est une en-tête HTTP qui indique au navigateur de n’envoyer les requêtes à ce site uniquement en HTTPS et non en HTTP. Cela empêche les attaques d’interception de connexion.

Pour activer HSTS sur Apache, j’ajoute les lignes suivantes dans mon fichier de configuration Apache :

Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"

L’option max-age définit la durée de validité de l’en-tête HSTS en secondes. includeSubDomains permet d’étendre le HSTS à tous les sous-domaines.

OCSP Stapling Cache

OCSP (Online Certificate Status Protocol) est un protocole qui permet de vérifier la révocation d’un certificat SSL/TLS en temps réel. Cependant, ce processus peut ralentir considérablement la connexion SSL/TLS.

Le stapling cache est une fonctionnalité qui permet de stocker la réponse OCSP dans le cache du serveur pour ne plus avoir à la vérifier à chaque connexion. Cela permet de conserver la sécurité de la vérification de révocation tout en améliorant les performances.

Pour activer le stapling cache sur Apache, j’ajoute les lignes suivantes dans mon fichier de configuration Apache :

SSLUseStapling on
SSLStaplingCache shmcb:/var/run/ocsp(128000)

L’option SSLUseStapling permet d’activer le stapling cache. L’option SSLStaplingCache définit l’emplacement et la taille du cache.

En conclusion, l’ajout de HSTS et du stapling cache OCSP renforce la sécurité de mon serveur SSL/TLS sur Apache.

Pour que les modifications soient apportées au serveur Apache, nous devons redémarrer le service Apache avec la commande suivante :

systemctl restart apache2

ou

service apache2 restart

Avec ce Hardening nous avons evité les attaques suivantes:

Vulnérabilité à l’attaque POODLE

L’attaque POODLE (Padding Oracle On Downgraded Legacy Encryption, CVE-2014-3566) est un exploit de type “homme du milieu” (MITM) qui permet à un pirate de déchiffrer du contenu sélectionné dans une session SSL.

Des variations de l’attaque POODLE affectent TLS car lors d’une attaque MITM active, un attaquant peut forcer le navigateur à rétrograder la session à SSLv3, qui peut ensuite être exploitée.

Vulnérabilité à l’attaque BEAST

L’attaque BEAST, rapportée sous le nom CVE-2011-3389, exploite une faiblesse du chiffrement par bloc CBC (cipher-block chaining) de SSL/TLS, permettant à un attaquant MITM de récupérer certaines informations de session, telles que les données de cookie, à partir d’une connexion qui aurait du être une connexion sécurisée.

Vulnérabilité à l’attaque SWEET32

L’attaque SWEET32 (assignée comme CVE-2016-2183) exploite une attaque par collision pour extraire le texte brut des données cryptées de la session SSL / TLS, en cas d’utilisation de suites de chiffrement par bloc de 64 bits avec le mode de chiffrement CBC.

Vulnérabilité à l’attaque SSLStrip

Le fonctionnement de SSLStrip est simple, remplacer toutes les requêtes HTTPS d’une page web par HTTP puis fait un MITM, ce qui permet à un attaquant d’obtenir les données http en clair sur le réseau, utile pour des attaques de Phishing par exemple. Donc HSTS permet d’éviter ça car aucune connexion non sécurisée ne peut être établie.

PS: Pour l’OCSP, je ne comprend pas du tout ce qui est expliqué dans cette source, donc je ne peux pas expliquer en quoi nous avons contourné les attaques DDOS mentionnées grâce à l’agrafage OCSP.

Optimisation du chargement de la page: agrafage OCSP - SSL.com

Source:

Fiabiliser les connexions sécurisées avec HSTS (HTTP Strict Transport Security)

Vulnérabilités SSL/TLS - Attaques POODLE/BEAST/SWEET32 et la mort de SSLv3 + avis de sécurité OpenSSL