Scanner de ports TCP avec Geekflare
Scanner de ports TCP avec Geekflare
1 Contexte du projet 11
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2 Organisme d’accueil . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.4 Travail à faire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.4.1 Critères d’acceptabilité . . . . . . . . . . . . . . . . . . . 12
1.4.2 Acteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.4.3 Besoins fonctionnels . . . . . . . . . . . . . . . . . . . . . 13
1.4.4 Besoins non fonctionnels . . . . . . . . . . . . . . . . . . 13
1.4.5 Contraintes . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.5 Organisation du rapport . . . . . . . . . . . . . . . . . . . . . . . 13
2 Etat de l’art 14
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2 Protocoles SSL/TLS . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.2 Historique SSL/TLS . . . . . . . . . . . . . . . . . . . . . 15
2.2.2.1 Historique du protocole SSL . . . . . . . . . . . 15
2.2.2.2 Historique du protocole TLS . . . . . . . . . . . 15
2.2.3 SSL/TLS Handshake . . . . . . . . . . . . . . . . . . . . 16
2.3 Configuration du HTTPS sous Apache 2 . . . . . . . . . . . . . . 19
2.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3 Audit SSL/TLS 20
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2 Audit SSL/TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.3 Étude des outils similaires . . . . . . . . . . . . . . . . . . . . . . 21
3.3.1 Étude des outils scan client . . . . . . . . . . . . . . . . . 21
3.3.2 Étude des outils scan serveur . . . . . . . . . . . . . . . . 22
3.3.3 Étude des outils scan client/seveur . . . . . . . . . . . . . 23
3.4 Choix de la solution . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1
4 Solution proposée 25
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.2 Présentation de la solution proposée . . . . . . . . . . . . . . . . 25
4.2.1 Scan côté Serveur . . . . . . . . . . . . . . . . . . . . . . 25
4.2.1.1 SSLyze . . . . . . . . . . . . . . . . . . . . . . . 26
4.2.1.2 Amélioration du Projet SSLyze . . . . . . . . . . 26
4.2.2 Scan côté client . . . . . . . . . . . . . . . . . . . . . . . . 28
4.2.2.1 Configuration du module SSLhaf . . . . . . . . . 28
4.2.2.2 Le contenu log par défaut . . . . . . . . . . . . . 29
4.3 Solution Complète AliveSSL . . . . . . . . . . . . . . . . . . . . . 29
4.3.1 AliveSSL scan Client . . . . . . . . . . . . . . . . . . . . 30
4.3.2 AliveSSL scan Server . . . . . . . . . . . . . . . . . . . . 31
4.3.3 Choix du type de serveur . . . . . . . . . . . . . . . . . . 31
4.3.3.1 Serveur web . . . . . . . . . . . . . . . . . . . . 31
4.3.3.2 Serveur FTP . . . . . . . . . . . . . . . . . . . . 32
4.3.3.3 Serveur SMTP . . . . . . . . . . . . . . . . . . . 32
4.3.3.4 Serveur POP3 . . . . . . . . . . . . . . . . . . . 32
4.3.3.5 Serveur LDAP . . . . . . . . . . . . . . . . . . . 33
4.3.3.6 Choix du type du scan . . . . . . . . . . . . . . 33
4.3.3.7 Résultat du scan . . . . . . . . . . . . . . . . . . 35
4.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5 Bonnes pratiques 36
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.2 Recommandations . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.2.1 Utilisation des clés privées de 2048-bit . . . . . . . . . . . 36
5.2.2 Protection des clés privées . . . . . . . . . . . . . . . . . . 37
5.2.3 Assurance d’ une couverture suffisante du nom d’hôte . . 37
5.2.4 Obtension des certificats d’une autorité de certification
fiable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.2.5 Utilisation des algorithmes de signature de certificat solide 39
5.3 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.3.1 Utilisation des chaînes de certificats complètes . . . . . . 39
5.3.2 Utilisation des protocoles sécurisés . . . . . . . . . . . . . 39
5.3.3 Utilisation des suites de chiffrements sécurisées . . . . . . 40
5.3.4 Sélection des meilleures suites de chiffrement . . . . . . . 42
5.3.5 Confidentialité persistante . . . . . . . . . . . . . . . . . . 42
5.3.6 Utilisation d’échange des clés fortes . . . . . . . . . . . . . 42
5.3.7 Atténuation des problèmes connus . . . . . . . . . . . . . 43
5.4 Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.4.1 Évitement de trop de sécurité . . . . . . . . . . . . . . . . 43
5.4.2 Reprise de session d’utilisation . . . . . . . . . . . . . . . 43
5.4.3 Utilisation de l’optimisation WAN et HTTP/2 . . . . . . 44
5.4.4 Cache du contenu public . . . . . . . . . . . . . . . . . . . 44
5.4.5 Utilisation d’agglomération OCSP . . . . . . . . . . . . . 44
5.4.6 Utilisation des primitives cryptographiques rapides . . . 44
2
5.5 Protocole HTTP et la sécurité des applications . . . . . . . . . . 45
5.5.1 Chiffrement de tout . . . . . . . . . . . . . . . . . . . . . 45
5.5.2 Élimination de contenu mixte . . . . . . . . . . . . . . . . 45
5.5.3 Confiance des tiers . . . . . . . . . . . . . . . . . . . . . 45
5.5.4 Sécurisation des cookies . . . . . . . . . . . . . . . . . . . 46
5.5.5 Compression de HTTP sécurisée . . . . . . . . . . . . . . 46
5.5.6 Déploiement de HTTP Strict Transport Security . . . . . 46
5.5.7 Déploiement de la politique de sécurité du contenu . . . . 47
5.5.8 Mise en cache du contenu sensible . . . . . . . . . . . . . 47
5.5.9 Considération d’autres menaces . . . . . . . . . . . . . . . 47
5.6 Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3
Table des figures
4
Remerciements
C’est parce que nous avons beaucoup estimé tous ceux qui nous ont écou-
tés, conseillés, critiqués et encadrés qu’on tient à leur faire part de toute notre
gratitude et on tient à les remercier à travers ces lignes.
Nous adressons tout d’abord nos plus sincères remerciements à Monsieur
Nizar Ben Neji notre encadrant pédagogique, pour les encouragements, pour le
temps qu’il nous a consacré et pour ses riches conseils.
Nos remerciements s’adressent aussi à Monsieur Hamdi Mohamed pour nous
avoir accueilli au sein du centre d’incubation du Pôle El Ghazala ainsi que pour
son soutien et ses conseils qui ont toujours constitué une aide précieuse.
On tient à remercier de tout coeur nos parents qui nous ont toujours soutenu
et encourager dans cette aventure et dans tout notre parcours universitaire.
J’adresse mes sincères remerciements à tous les professeurs de notre dépar-
tement informatique et toutes les personnes qui ont contribué de près ou de loin
par leurs paroles, leurs écrits, leurs conseils et leurs critiques tout au long du
stage. Enfin, on tient à témoigner toute notre gratitude à Monsieur Mohamed
Oueld El Hassan, notre coordinateur pour ses visites fréquentes à l’organisme
de stage et pour son support inestimable.
Un grand merci aussi à tous nos ami(e)s pour leur sincère amitié et confiance.
Finalement merci aux collègues de bureau pour les discussions constructives
que nous avons eu et pour leur bonne humeur.
5
6
Acronymes et abréviations
8
Introduction générale
9
SSL/TLS est un protocole qui opére à l’interface des sockets TCP. En consé-
quence, tous les protocoles de la couche application comme HTTP, FTP, TEL-
NET, LDAP, SMTP et autres peuvent être protégés par un canal de transmission
sécurisé. Pour le cas du HTTP ou du Web, le nombre des sites web sécurisés
par SSL/TLS a augmenté au cours des dernières années. Des données récentes
venant de Google montre que plus de 10% du trafic web est désormais chiffré par
SSL/TLS et 50% du traffic chiffé est généré par les services de Google (Figure
1). En Tunisie, la plus part des sites sont soit non sécurisés par SSL/TLS soit
présentants des problèmes de configuration.
Dans le cadre de notre projet, on va ainsi réaliser un outil pour scanner les
serveurs et les clients TLS. Il permet d’élaborer un rapport détaillé sur les pro-
tocoles supportés, les suites de chiffrement utilisées, les éventuels vulnérabilités
ainsi que les insufisances de sécurité relatifs à SSL/TLS.
Dans ce manuscrit, le chapitre 1 présente le contexte du projet, la probléma-
tique, l’organisme d’accueil ainsi que la spécification détaillée. Dans le chapitre
2, on va présenter les protocoles SSL et TLS et leurs versions. Le chapitre 3
détaille et explique l’opération audit SSL/TLS ainsi que les outils actuellement
utilisés. Dans le chapitre 4, on présente lle choix technologique ainsi que la solu-
tion proposée. Finalement, le chapitre 5 inclut une liste de recommandations et
bonnes pratiques qui va aider administrateurs des sites et experts de la sécurité
à mieux configurer leurs serveurs.
10
Chapitre 1
Contexte du projet
1.1 Introduction
Dans ce chapitre, nous exposons le contexte général du projet. On présente
premièrement l’organisme d’accueil, la problématique, le travail demandé et la
méthodologie adoptée.
11
1.3 Problématique
De nos jours, les entreprises offrent la possibilité à leurs clients de réaliser
des opérations financières et économiques à distance sans devoir se présenter
en personne. Si l’expérience a montré que cela était avantageux et même très
actractif, cela présente aussi un danger hyper réel lorsque la sécurité n’est pas
au rendez-vous. Pour s’assurer de la sécurité des services en ligne, un ensemble
d’outils d’audit peuvent être utilsé pour identifier les éventuels vulnérabilités.
La plupart des outils existants sont des scanners de vulnérabilités applicatifs
qui ne font pas l’inspection des configurations côté serveur et plus précisement
la configuration SSL/TLS. Même les outils existants ne font pas toutes les tests
nécessaires pour décrotiquer les problèmes liés à ce protocole. Ils focalisent uni-
quement sur la partie serveur ignorant les vulnérabilités relatives à la partie
cliente et ils traitent uniquement le cas du Web et négligent les autres appli-
cations du SSL/TLS comme la messagerie, les annuaires LDAP, le transfert de
fichier et les autres services.
1.4.2 Acteurs
Les auditeurs, les administrateurs de la sécurité et les utilisateurs du Web
seront les acteurs du service d’audit SSL/TLS.
12
1.4.3 Besoins fonctionnels
Les besoins fonctionnels de la solution sont :
— Scanner les configurations SSL/TLS des serveurs SMTP, FTP, POP,
IMAP, LDAP et les autres
— Scannet les solutions SSL/TLS clientes comme les navigateurs (IE, Chrome,
Firefox, Opera, ...), les clients de messageries (MS Outlook, Mozzila
Thunderbird, ...), les clients LDAP et les autres
— Elaborer un rapport sur les eventuels vulnérabilités et insufisance de
sécurité
— Présenter un ensemble de recommandations et de bonnes pratiques concer-
nant la sécurité par le protocole SSL/TLS
1.4.5 Contraintes
La solution doit être à faible coût et développé avec des solutions opensource.
Le produit final doit être remis à la société au plutard le 31 Mai 2017.
13
Chapitre 2
Etat de l’art
2.1 Introduction
De nos jours, la sécurité présente un rôle très important dans le domaine
des réseaux et des télécommunications. Les clients de la commerce électronique
n’ont pas la confiance suffisante pour payer par carte bancaire. Pour sécuriser
ce paiement, il faut utiliser des protocoles d’authentification et de chiffrement
comme SSL/TLS. Avec ces protocoles, les données personnelles des clients (nu-
méro de carte bancaire, mot de passe, etc) seront protégées et personne ne peut
les intercepter.
Dans ce chapitre, on va présenter en détail le protocole SSL/TLS, ses dif-
férents versions, les failles et les vulnérabilités reconnues pour chaque version
ainsi que la mise en oeuvre de ce dernier du côté serveur.
14
Il est utilisé pour sécuriser l’authentification et les transactions électroniques.
Les deux protocoles SSL et TLS fonctionnent entre la couche transport (TCP
ou UDP) et la couche applicative pour sécuriser les protocoles nativement peu
sûrs. Il est le protocole de sécurité le plus utilisé aujourd’hui sur le Internet. Il
permet de sécuriser plusieurs applications et services réseau tels que le transfert
de fichiers par FTP, les connexions VPN, la messagerie instantanée et la voix
sur IP.
Le protocole SSL/TLS est constitué de deux composants : le TLS Record et
le TLS Handshake. Le TLS Record a pour but de chiffrer des connexions avec
un algorithme symétrique et le TLS Handshake a pour but d’authenfier les deux
parties communicantes, de leur permettre de négocier les algorithmes ainsi que
le protocole. Le protocole inclut la vérification des certificats électroniques du
client et du serveur pour s’assurer des identités des entités communicantes.
15
bases. Sa majeure faiblesse c’est l’attaque BEAST qui est basée sur Ja-
vaScript, elle permet à un attaquant sur un même réseau d’intercepter
et de déchiffrer des cookies SSL via une attaque sur des paquets cryptés.
Cette version est également incapable d’utiliser des suites de chiffrement
modernes qui offrent une plus grande sécurité et efficacité. Suite à ces
faiblesses, cette version a été échangée par une nouvelle plus sûr.
— TLS 1.1 a été développée en 2006, est la deuxième version la plus récente
de TLS, c’est une version de transition qui consolide certaines RFC in-
termédiaires et inclut une modification de l’initialisation des blocs CBC
(suite à un signalement fait en 2011). Cependant, l’environnement de
sécurité moderne a poussé vers TLS 1.2.
— TLS 1.2 est la dernière version de TLS. Cette version permet d’accéder
à des suites de chiffrement avancées qui prennent en charge la crypto-
graphie de courbe elliptique (efficacité pour un échange d’informations
sur un canal non sécurisé). Il apporte une évolution importante qui se
présente dans les modes de chiffrement authentifié de bloc AEAD.
16
suite de chiffrement négociée.
— Elaboration et échange d’une clé de session entre le client et le serveur : En
premier, les parties communicantes se mettent d’accord sur l’algorithme
de chiffrement symétrique qui sera utilisé et en second lieu, le client
SSL/TLS générent la clé de session symétrique en se basant sur le choix
effectué.
Ce protocol a pour objectif de permettre au serveur et au client de s’authen-
tifier l’un à l’autre puis de négocier un algorithme de chiffrement et une clé
cryptographique avant que l’application ne transmette.
Comme montre la Figure 2.2, un premier message ClientHello est envoyé par
le client au serveur pour initier la communication. Dans ce message, le client
propose un ensemble de suites cryptographiques qu’il est capable de mettre en
oeuvre (Voir Figure 2.3). Chacune de ces suites cryptographiques décrivent les
mécanismes cryptographiques qui seront utilisés pour les fonctions suivantes :
— l’échange de clés
— l’authentification du serveur .
— la protection des données applicatives, en confidentialité et en intégrité.
Ce message contient d’autres paramètres qui doivent être négociés : la ver-
sion du standard utilisée (SSLv2, SSLv3, TLS 1.0, TLS 1.1 ou TLS 1.2) et
le mécanisme de compression éventuellement qui sera appliqué sur les données
applicatives. En réponse le serveur va refuser la négociation si aucune des propo-
sitions du client n’est jugée acceptable. Le serveur met alors fin à la connexion.
Dans le cas contraire, le serveur choisit une suite de chiffrement parmi celles
proposées par le client et émet le message ServerHello qui fait état de son choix
dans lequel il présente son certificat électronique et envoie un message Serve-
rHelloDone pour indiquer qu’il attend maintenant une réponse du client.
17
À la fin de la négociation, une fois la suite de chiffrement choisie et le cer-
tificat reçu, le client vérifie la chaîne de certification et l’état du certificat du
serveur. Si le certificat n’est pas validé, le client émet une alerte qui met fin à
la connexion (Voir Figure 2.4). Sinon, il poursuit et envoie un message, Client-
KeyExchange, contenant le pre-master secret chiffré. À partir de là, le client et
le serveur disposent tous les deux d’une clé secrète partagée et de plusieurs élé-
ments aléatoires publics échangés lors des messages ClientHello et ServerHello.
Ces éléments partagés seront utiles pour fournir les clés symétriques qui seront
utilisées pour protéger toutes les sessions : pour assurer la confidentialité et
l’intégrité des échanges. Des messages ChangeCipherSpec sont échangés pour
indiquer l’activation des paramètres (algorithmes et clés) négociés. Les mes-
sages Finished sont donc les premiers à être protégés cryptographiquement, et
contiennent un haché de l’ensemble des messages échangés pendant la négocia-
tion, afin de garantir a posteriori l’intégrité de la négociation.
Figure 2.3 – Capture avec l’outil Wireshark du message Client Hello envoyé
par Firefox présentant les 20 suites cryptographiques présentés par le navigateur
Figure 2.4 – Exemple d’alerte qu’un client SSL/TLS peur retourner en cas de
problème dans la négociation.
18
2.3 Configuration du HTTPS sous Apache 2
Dans cette partie, on va parler de la configuration du protocole HTTPS avec
Apache 2 sous Ubuntu 14.04.
1. Installation du module SSL de Apache pour que le protocole SSL puisse
fonctionner avec le serveur Apache 2 :
sudo apt-get install mod_ssl
2. Activation du module SSL de Apache 2 :
sudo a2enmod ssl
3. Après avoir activé le SSL, il faut redémarrer le serveur web pour que la
modification soit prise en compte :
sudo service apache2 restart
4. Création du certificat éléctronique en utilisant l’outil OpenSSL[https://www.openssl.org/].
Au niveau de cette étape on doit préciser le nom de domaine du site qui va
apparaitre au niveau de certificat. L’emplacement du certificat SSL et de
la clé privée du serveur seront placés dans le répertoire /etc/apache2/ssl.
sudo openssl req -x509 -nodes -days 365 -newkey rsa :2048 -keyout
/etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
5. Configuration du VirtualHost au niveau de Apache :
2.4 Conclusion
Dans ce chapitre, on a présenté les protocoles SSL et TLS ainsi que leur
historique et les failles connues. On a mis aussi la configuration de SSL/TLS
sous Apache. La configuration du SSL/TLS seule n’est pas suffisante. C’est
pourquoi il faut se doter d’un outil pour l’évaluation de la configuration faite.
Au niveau de la partie suivante, on va expliquer et présenter l’audit SSL/TLS.
19
Chapitre 3
Audit SSL/TLS
3.1 Introduction
La sécurité informatique est liée à l’Internet impliquant souvent la sécurité du
navigateur web et aussi la sécurité du réseau. Le protocole SSL/TLS intervient
pour assurer que les communications entre deux systèmes ne tombent pas dans
de mauvaises mains et qu’elles ne puissent ni être lues, ni être manipulées.
Dans ce chapitre, on met l’accent sur l’importance de l’audit SSL/TLS suivi
par une étude sur les outils similaires existants.Et enfin, on termine ce chapitre
par une justification du choix de notre solution.
20
Les certificats SSL sont délivrés et signés par un tiers de confiance (autorité
de certification) pour assurer le lien entre deux entités communicantes. Pour
un site Web, il faut adopter un certificat SSL pour la sécurité des visiteurs du
site web (exemple le cas d’un site e-commerce). La configuration de ce type de
certificat n’était pas toujours acceptable, c’est pour cette raison il faut utiliser
des outils qui la permettent.
21
— DCsec est un outil réalisé par un groupe de chercheurs qui permet d’éva-
luer le navigateur tout en donnant les suites de chiffrements et les proto-
coles supportés .Cet outil ne donne pas le niveau de sécurité de chaque
suite de chiffrement.
22
Figure 3.3 – Test Wormly
23
Figure 3.5 – Test SSLabs Client
3.5 Conclusion
Dans ce chapitre, on a effectué une étude sur les différents outils similaires à
notre solution proposée. Bien que ces outils comportent des différents services,
il reste encore de trouver une solution complète est un objectif majeur. En effet
nous avons présenté brièvement le choix de notre solution proposée qui sera
décrite détaillée dans le chapitre suivant.
24
Chapitre 4
Solution proposée
4.1 Introduction
Une mauvaise configuration du protocle SSL/TLS peut le rendre peu sécurisé
et même vulnérable à des attaques et puisqu’il y a de nombreux paramètres de
configuration disponibles, il est difficile de savoir à l’avance quel impact certains
changements auront, ces changements peuvent êtres effectués accidentellement.
Donc dans ce cas, il faut utiliser un outil d’évaluation SSL/TLS complet pour
la vérification de la configuration et pour savoir si le système est vulnérable. On
va présenter dans ce chapitre notre solution proposée d’une manière détaillée.
25
4.2.1.1 SSLyze
SSLyze est un projet open source Python qui analyse la configuration SSL/TLS
d’un serveur. Il est conçu pour être rapide et complet, et devrait aider les orga-
nisations et les testeurs à identifier les mauvaises configurations affectant leurs
serveurs SSL. Pour faire un scan sur un serveur on lance cette commande :
26
Les listes ajoutés sont :
— Google CA store
— Adobe CA store
— Microsoft CA store
— Java CA store
27
4.2.2 Scan côté client
Le scan côté client consiste à faire une analyse sur les protocles supportés et
les suites de chiffremment configurés sur un navigateur. Au début de la commu-
nication SSL/TLS, le client envoie un paquet ClientHello au serveur qui contient
toutes les informations du navigateur .
D’où nous avons trouvé le module SSLhaf qui permet de capturer le paquet
ClientHello et d’enregister ces données dans un fichier log.
28
4.2.2.2 Le contenu log par défaut
Le contenu du fichier log est incompréhensible :
— Le premier champ contient la version du protocole SSL utilisé : 2 et 3
pour SSLv2 et SSLv3+ par exemple google bot utilise SSLv2 handshake
donc il est prêt à utiliser SSLv2 ou mieux.
— Le deuxième champ contient la meilleure version utilisée , par exemple
SSLv3 est "3.0",TLSv1.0 est "3.1",TLSv1.1 correspond à "3.2" et TLSv1.2
correspond à "3.3".
— Le troisième champ contient la liste des suites de chiffremment supportées
par le client.
Chaque suite associée a un code hexadecimal. Par exemple :
0x04 représente la suite SSL_RSA_WITH_RC4_128_MD5,
0x010080 représente SSL_CK_RC4_128_WITH_MD5
et 0x05 représente la suite SSL_RSA_WITH_RC4_128_SHA.
— Le quatrième champ contient la liste des méthodes de compression of-
fertes par le client (00 = NULL , 01 = DEFLATE).
D’où, on était obligés de convertir ce contenu en utilisant PHP pour qu’on puisse
afficher aux utilisateurs un résultat compréhensible.
29
4.3.1 AliveSSL scan Client
Cette partie de notre application web utilise le fichier log généré par le mo-
dule sslhaf en changeant le contenu pour le rendre compréhensible par l’audi-
teur : on extracte le contenu du log champ par champ et le troisième champ sera
comparé avec une base de données pour déterminer les suites de chiffremment
reliés à chaque code hexadecimal.
30
4.3.2 AliveSSL scan Server
Cette partie de l’application web permet de tester la configuration du serveur
grâce à SSLyze où on va analyser son contenu et l’afficher à l’auditeur. Avec
sslyze on peut faire des scans sur plusieurs types de serveur comme LDAP,
FTP, SMTP, POP3. D’où notre application web sera capable de faire du scan
sur ces types de serveur .
Notre application fournit aux auditeurs une interface où il peuvent choisir
le type de serveur à analyser qui peuvent être un serveur web, SMTP, LDAP,
FTP et POP3.
31
4.3.3.2 Serveur FTP
Serveur FTP (File Transfert Protocle) permet l’échange des fichiers sur In-
ternet . Tout utilisateur autorisé peut télécharger ou envoyer des fichiers sur
un ordianteur distant faisant fonctionner un tel serveur . Le port par défaut et
souvent utilisé est le port 21.
32
Figure 4.10 – Fontionnement de POP3
33
Figure 4.12 – Scan régulier
Dans le cas du scan régulier, notre application fournit aux auditeurs des
informations sur les protocles supportés par le serveur, les suites de chiffremment
de chaque protocle et des informations sur le ou les certificats électroniques du
serveur. Ainsi si le serveur est vulnérable sur quelques attaques comme suit :
screen
Dans ce cas ,l’auditeur doit choisir un scan spécifique ou aussi sur quel point
faire le scan , soit sur un protocole sépcifique ou sur une attaque bien déterminée
ou même sur le certificat électronique seulement .
34
4.3.3.7 Résultat du scan
Après le choix du type de scan, AliveSSL affiche le résultat selon le type de
scan choisi en présentant un rapport sur les points spécifiques que l’auditeur a
choisi .
4.4 Conclusion
Dans ce chapitre, on a mis en valeur notre solution proposée dont nous avons
détaillé ses différebts étapes et les améliorations que nous avons ajouté. Suite à
cette phase, nous tenons en compte la mal configuration qui peut générer des
attaques critiques à cause d’une mal connaissance de la configuration SSL/TLS.
C’est pourquoi on a fournit une partie consacrée aux bonnes pratiques dans le
chapitre 5 .
35
Chapitre 5
Bonnes pratiques
5.1 Introduction
SSL/TLS est une technologie trompeusement simple, facile à déployer, mais
son problème principal est que le cryptage est souvent n’est pas facile à dépolyer
correctement. Pour s’assurer que TLS fournit la sécurité nécessaire, les adminis-
trateurs du système et les développeurs doivent émettre un effort supplémentaire
à la configuration de leurs serveurs et le développement des applications.Dans
ce chapitre,on va présenter des recommandations et des bonnes pratiques.
5.2 Recommandations
En TLS, la sécurité commence par l’identité cryptographique du serveur,
une clé privée forte est nécessaire pour empêcher les attaquants de mener des
attaques d’empreinte d’identité. Il est aussi important d’avoir un certificat valide
et , solide qui fournit à la clé privée le droit de représenter un nom d’hôte
particulier .Sans ces deux éléments fondamentaux , rien d’autre ne peut être
sécurisé.
36
et de déployer les clés RSA et ECDSA en simultanée si les frais généraux de la
gestion d’une telle configuration ne vous dérange pas.
37
le partage de certificats crée un lien qui peut être abusé pour transférer des
vulnérabilités d’un site web ou d’un serveur à tous les autres sites et serveurs
qui utilisent le même certificat (même lorsque les clés privées sous-jacentes sont
différentes).
38
étant valides pour leurs répondeurs OCSP. Au fil du temps, essayez d’étendre
cette période de «réchauffement» à 1 à 3 mois. De même, n’attendez pas jusqu’à
ce que vos certificats soient sur le point d’expirer pour les remplacer. En laissant
plusieurs mois supplémentaires, cela aiderait également les personnes dont les
horloges sont incorrectes
5.3 Configuration
Avec la configuration correcte du protocole TLS sur un serveur, vous assurez
que vos informations d’identification sont correctement présentées aux visiteurs
du site, que seulement les primitives cryptographiques sécurisées sont utilisées
et que toutes les faiblesses connues sont atténuées.
39
— SSL v2 n’est pas sécurisée et ne doit pas être utilisée. Cette version de
protocole est si grave qu’elle peut être utilisée pour attaquer des clés
RSA et des sites avec le même nom même s’ils sont sur des serveurs
entièrement différents (l’attaque DROWN).
— SSL v3 est peu sûr lorsqu’elle est utilisée avec HTTP (l’attaque POO-
DLE) et faible lorsqu’elle est utilisée avec d’autres protocoles. Il est éga-
lement obsolète et ne doit pas être utilisée.
— TLS v1.0 est également un protocole hérité qui ne devrait pas être uti-
lisée, mais il est encore nécessaire dans le pratique. Sa faiblesse majeure
(BEAST) a été atténuée dans les navigateurs modernes, mais d’autres
problèmes subsistent.
— TLS v1.1 et v1.2 sont à la fois sans problèmes de sécurité connus, mais
seulement TLS v1.2 fournit des algorithmes cryptographiques modernes.
TLS v1.2 devrait être votre protocole principal car c’est la seule version
qui offre un cryptage authentifié moderne (également appelé AEAD). Si
vous ne supportez pas TLS v1.2 aujourd’hui, vous avez un manque de
sécurité. Afin de prendre en charge les anciens clients, vous devrez conti-
nuer à prendre en charge TLS v1.0 et TLS v1.1 pour l’instant. Cepen-
dant, vous devriez retirer TLS v1.0 dans le proche avenir. Par exemple,
la norme PCI DSS exigera tous les sites qui acceptent le paiements par
carte de crédit pour supprimer le support de TLS v1.0 d’ici juin 2018.
Des travaux sont actuellement en cours pour concevoir TLS v1.3, dont le but
d’éliminer toutes les fonctionnalités obsolètes et non sécurisées et d’apporter des
améliorations qui permettront de sécuriser notre communication au cours des
décennies suivantes.
40
également être utilisés contre un serveur qui préfère des suites plus fortes
(l’attaque FREAK).
— Les suites avec des chiffres faibles (typiquement de 40 et 56 bits) utilisent
un cryptage qui peut facilement être brisé.
— RC4 n’est pas sécurisé.
— 3DES est lent et faible.
Utilisez la configuration de la liste suivante, conçue pour les clés RSA et ECDSA,
comme point de départ :
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_256_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
Attention : Nous vous recommandons de tester d’abord votre configuration
TLS dans un environnement de mise en scène, transférez les modifications dans
l’environnement de production uniquement lorsque vous êtes certains que tout
fonctionnent est comme prévu. Veuillez noter que ce qui précède est une liste
générique et que tous les systèmes (en particulier les plus anciens) ne sont pas
compatibles avec toutes ces suites . C’est pourquoi il est important de tester
d’abord. La configuration ci-dessus utilise des noms de suites TLS standard.
Certaines plates-formes utilisent des noms non standard, veuillez consulter la
documentation de votre plate-forme pour plus de détails. Par exemple, les noms
de suite suivants seraient utilisés avec OpenSSL :
ECDHE-ECDSA-AES128-GCM-SHA256
ECDHE-ECDSA-AES256-GCM-SHA384
ECDHE-ECDSA-AES128-SHA
ECDHE-ECDSA-AES256-SHA
ECDHE-ECDSA-AES128-SHA256
ECDHE-ECDSA-AES256-SHA384
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-RSA-AES256-GCM-SHA384
41
ECDHE-RSA-AES128-SHA
ECDHE-RSA-AES256-SHA
ECDHE-RSA-AES128-SHA256
ECDHE-RSA-AES256-SHA384
DHE-RSA-AES128-GCM-SHA256
DHE-RSA-AES256-GCM-SHA384
DHE-RSA-AES128-SHA
DHE-RSA-AES256-SHA
DHE-RSA-AES128-SHA256
DHE-RSA-AES256-SHA256
42
groupes DHE de 1024 bits connues peuvent être brisés par les agences de l’État.
Pour être sûr, si vous déployez DHE, configurez-le avec au moins 2048 bits de
sécurité. Certains clients plus anciens (par exemple, Java 6) pourraient ne pas
supporter ce niveau de force. Pour des raisons de performance, la plupart des
serveurs préfèrent ECDHE, qui est à la fois plus fort et plus rapide.Le secp256r1
(également appelée P-256) est un bon choix dans ce cas.
5.4 Performance
La sécurité est notre objectif principal dans ce chapitre, mais nous devons
également faire attention à la performance
Un service sécurisé qui ne satisfait pas les critères de performance sera sans
aucun doute abandonné. Avec une configuration correcte, TLS peut être assez
rapide. Avec les protocoles modernes, par exemple HTTP/2, il pourrait même
être plus rapide que la communication en clair.
43
5.4.3 Utilisation de l’optimisation WAN et HTTP/2
Ces jours-ci, les frais généraux TLS ne proviennent pas d’opérations crypto-
graphiques affamées par la CPU, mais de la latence du réseau. l’établissement
d’une liaison TLS, qui ne peut démarrer qu’après la fin de l’établissement d’une
liaison TCP, nécessite un nouvel échange de paquets et sera plus coûteuse si
vous êtes loin du serveur. La meilleure façon de minimiser la latence est d’éviter
de créer de nouvelles connexions, c’est-à-dire de garder les connexions existantes
ouvertes pendant longtemps (keep-alives). D’autres techniques qui fournissent de
bons résultats comprennent le soutien de protocoles modernes tels que HTTP/2
et l’utilisation de l’optimisation WAN (généralement via des réseaux de distri-
bution du contenu).
44
5.5 Protocole HTTP et la sécurité des applica-
tions
Le protocole HTTP et la plate-forme environnante pour la livraison d’ap-
plications web ont continué à évoluer rapidement après la naissance de SSL. À
la suite de cette évolution, la plate-forme contient maintenant des fonctionnali-
tés qui peuvent être utilisées pour vaincre le cryptage. Dans cette section, nous
présenterons ces fonctionnalités, ainsi que les moyens de les utiliser en toute
sécurité.
45
vos liens tiers seront cryptés et donc protégés contre les attaques MITM. Ce-
pendant, vous devriez aller plus loin : apprendre les services que vous utilisez et
les supprimer, les remplacer par des solutions plus sûres ou accepter le risque de
leur utilisation. Une nouvelle technologie appelée intégrité sous-ressource (SRI :
subresource integrity) pourrait être utilisée pour réduire l’exposition potentielle
via des ressources tiers.
46
avec HSTS à l’esprit et les anciens sites convertis pour les supporter autant que
possible et dès que possible. Pour une meilleure sécurité, envisagez d’utiliser le
préchargement HSTS, qui intègre votre configuration HSTS dans les navigateurs
modernes, ce qui rend la première connexion à votre site sécurisée.
L’exemple de configuration suivant active HSTS sur le nom d’hôte princi-
pal et tous ses sous domaines pour une période d’un an, tout en permettant
également la précharge :
Strict-Transport-Security : max-age=31536000 ; includeSubDomains ; pre-
load
47
5.6 Validation
Avec de nombreux paramètres de configuration disponibles pour les ajus-
tements, il est difficile de savoir à l’avance quel impact certains changements
auront. En outre, les changements sont parfois effectués accidentellement.
Les mises à jour logicielles peuvent introduire des modifications silencieuse-
ment. Pour cette raison, nous vous conseillons d’utiliser d’abord un outil d’éva-
luation SSL / TLS complet pour vérifier votre configuration afin de vous assurer
que vous démarrez en toute sécurité, puis périodiquement pour vous assurer de
rester en sécurité. Pour les sites web publics, nous recommandons le test du
serveur SSL Labs gratuit.
5.7 Conclusion
La partie recommandations et bonnes pratiques est offerte aux auditeurs afin
de les aider pour une meilleure configuration SSL/TLS d’un serveur .
48
Conclusion et Perspectives
49
Bibliographie
50