Réseaux sans fils sécurisés
Le Wi-Fi (Wireless Fidelity) est à la mode. Il faut dire que la solution est souvent alléchante, qu'elle apporte une réponse décisive aux problèmes de connectivité « nomade », à l'heure où le parc des ordinateurs portables se développe.
Wi-Fi trouve aujourd'hui, plus ou moins légitimement, sa place aussi bien en entreprise que chez le particulier, souvent au mépris des contraintes technologiques
des liaisons radio, et aussi au mépris des règles les plus élémentaires de sécurité.
Ce chapitre fait suite à la présentation générale du WI-FI, exposée plus haut dans ce site. Nous nous intéresserons ici plus particulièrement au problème de la sécurité, dans un réseau d'entreprise.
Introduction
Les différents types de risque
D'une manière générale, dans le domaine des systèmes d'information, nous sommes confrontés à divers types de risques, qui découlent tous d'une intrusion sur notre réseau, hormis les DoS (Deny of Service) qui n'ont pour but que de « simplement » rendre le système inutilisable. Ce dernier aspect ne sera pas traité ici, la façon que nous avons d'utiliser le spectre radio n'offrant que très peu de moyens de nous protéger de la méthode d'attaque la plus simple : le brouillage radio. Tout de même, il faut en parler un tout petit peu, dans la mesure où la promiscuité de réseaux sans fils, montés de façon anarchique, peut arriver de façon involontaire à cet état de fait.
Intrusion en vue d'une compromission des postes
L'objet de ce type d'intrusion est de prendre possession d'un équipement du réseau, soit pour en extraire des données intéressant le pirate, soit pour constituer une armée de « zombies », avec pour objectif final, par exemple, de réaliser un DDoS (Distribued Deny of Service) sur une cible stratégique, ou encore de déclencher un envoi massif de spams à un instant donné, pour prendre de court les stratégies mises en place pour contenir ce fléau.
Ce type d'intrusion se réalise généralement depuis l'internet, ce n'est pas un problème spécifique aux réseaux sans fils. Tout de même, dans une certaine mesure, ces derniers sont un peu plus exposés, dans la mesure où ils sont plus souvent destinés à accueillir des postes clients dont l'état sanitaire n'est pas maîtrisé par les responsables du système d'information. Si un invité se connecte avec un poste déjà compromis par un ver, ce ver pourra à son tour contaminer les autres postes du réseau, suivant le type de propagation qu'il utilise et suivant les protections mises en place sur les postes du réseau. Si l'on peut considérer que généralement les réseaux sont assez bien protégés d'attaques venant de l'extérieur par un système de « firewall », ils le sont en général beaucoup moins contre les attaques venant de l'intérieur, qui est à priori considéré comme une zone « de confiance ».
Intrusion en vue d'exploitation d'un accès à l'internet
Un pirate peut chercher à exploiter votre connexion à l'internet, en vue d'effectuer des attaques sur d'autres systèmes. Cette méthode lui offre beaucoup de confort, puisque si ses activités sont repérées, dans les faits, ce ne sera pas lui, mais vous qui serez inquiété, voire condamné. Ne sous estimez pas ce risque, surtout avec les réseaux sans fils dont on ne peut maîtriser parfaitement la portée !
Intrusion « passive » en vue d'extraire des informations
Pour récupérer des informations « intéressantes », un pirate peut se contenter d'écouter de façon passive les échanges d'information, pour en retirer (en temps réel ou non) des éléments ayant pour lui une certaine valeur.
Sur un réseau sans fils, il est très facile de mettre en place des systèmes d'écoute dans ce but. Le pirate se contente d'écouter les conversation et de les enregistrer. Il n'agit pas sur vos équipements et ne laisse aucune trace, surtout sur un réseau sans fils.
Les parades
Il existe un certain nombre de règles de base, qu'il faudra mettre en œuvre pour tenter de minimiser ces risques.
Savoir qui est présent sur votre réseau
L'authentification des clients d'un réseau est bien sûr un élément fondamental. Les adresses IP comme les adresses MAC ne constituent plus, depuis longtemps, un moyen efficace. Ces adresses peuvent très facilement être usurpées sur un LAN. C'est évidemment un point très sensible sur les réseaux sans fils, ça l'est de plus en plus sur un réseau filaire, avec l'apparition massive d'ordinateurs portables.
La méthode sans doute la plus aboutie consiste à utiliser des certificats, principalement sur les serveurs, mais aussi sur les clients. Cependant, l'usage des certificats sur les clients est une opération lourde. Il faut créer un certificat par client, maintenir une base de donnée des certificats
autorisés et aussi des certificats révoqués.
Rappelons-le, un certificat contient schématiquement une partie publique et une partie privée. La partie publique peut être récupérée par tout tiers désirant entrer en contact avec le possesseur du certificat, la partie privée doit rester confidentielle. Dans chacune de ces parties, il y a une clé de chiffrement. Pour plus de détails, voyez le chapitre sur la cryptographie2.
Il est possible sur les clients de remplacer le certificat par un autre moyen d'authentification, allant du simple couple « nom d'utilisateur / mot de passe », à l'usage d'une carte à puce ou d'une empreinte biométrique.
La dernière méthode est probablement la plus sûre et a fait déjà rêver bon nombres d'auteurs de science-fiction. La carte à puce est très proche du certificat et reste assez lourde à gérer.
Le couple « utilisateur/mot de passe » reste le plus simple, et peut souvent être considéré comme suffisamment sûr, à la condition que le mot de passe ne soit pas évident et que l'échange de ce mot de passe ne soit pas facilement « sniffable », c'est-à-dire récupérable par une écoute passive. Bien sûr, il faut aussi que les utilisateurs aient pris conscience des risques qu'il y a à partager leur identifiant avec un (ou plusieurs) tiers.
En conclusion, nous devrons mettre en place un système strict, qui n'autorise qu'une personne dûment authentifiée à rejoindre notre réseau, en minimisant les risques d'usurpation d'identité.
Ceci évitera qu'un intrus profite d'une faille du système pour :
- compromettre des machines du réseau,
- exploiter votre accès à l'internet pour effectuer des opérations malveillantes,
- identifier éventuellement, toute personne (authentifiée) qui se livrerait à des opérations malveillantes.
Cacher les informations échangées
Le principe de base est de chiffrer les échanges, mais il faut être bien conscient qu'un chiffrement n'est pas (jamais ?) incassable. Tout est question de temps.
Ainsi, dans un système de chiffrement bien réalisé il faut tenir compte de quelques éléments importants :
- combien de temps les informations doivent-elles rester confidentielles ?
- quel préjudice subirons-nous lorsque ces informations seront découvertes ?
Prenons quelques exemples simples...
Découverte d'un « login » autorisé
Si le temps nécessaire à la découverte d'un moyen d'authentification est supérieur à la durée de vie de ce dernier, le moyen d'authentification est considéré comme sûr et il n'y a pas de préjudice subi.
Découverte d'une information « stratégique » caduque
Une information communiquée à un tiers de confiance doit rester confidentielle pendant une semaine, puis elle sera divulguée au public, ou n'aura plus aucune valeur. Le temps nécessaire au déchiffrage de cette information est supérieur à une semaine. Le système de protection est sûr et il n'y a pas de préjudice.
Découverte d'une information « stratégique » à long terme
Une information communiquée à un tiers de confiance doit rester confidentielle le plus longtemps possible. Le préjudice subi en cas de découverte sera d'autant moindre que le temps de découverte sera long. Ici, nous avons un problème. Si l'information chiffrée est récupérée, un jour où l'autre, elle sera déchiffrée et préjudice il y aura. Le jeu consiste donc à mettre en place un système qui « tienne » le plus longtemps possible, à mettre en œuvre divers procédés pour tenter de minimiser les risques d'écoute passive, de mettre hors d'état de nuire un pirate repéré avant qu'il n'ait eu le temps de déchiffrer les données, etc. Le tout, jusqu'à ce que le préjudice ne soit plus suffisant pour justifier le coût de toutes ces mesures.
Clairement, les besoins du particulier ne sont pas les mêmes que ceux d'une banque (le particulier qui utilise les moyens de commerce en ligne doit tout de même envisager ces trois types d'intrusion, une carte de crédit, par exemple, ayant maintenant deux ans, voire plus, de durée de vie).
Assurer un minimum de sécurité au client
Authentifier le client, c'est bien. Mais le client ne doit-il pas être lui aussi protégé ? Le client peut, pour sa sécurité, pouvoir s'assurer qu'il se connecte bien au réseau auquel il pense se connecter. Il n'est pas très difficile, sur les réseaux sans fils, de présenter un « SSID » usurpé. Le client doit pouvoir, si besoin est, authentifier le réseau auquel il se connecte.
Bon gros avertissement à l'usage des clients
Un client mal configuré peut très bien se connecter tout seul à un réseau non protégé. Pour peu que le SSID de ce réseau soit le même que le votre, le client peu au fait des règles du WI-FI, pourra croire qu'il est connecté à votre réseau, alors que ce n'est pas le cas. Ne riez pas, il existe des gens qui utilisent le WI-FI sans rien y comprendre, j'en ai rencontré.
Solutions
Comme souvent en informatique, des solutions ont été déployées sans avoir vraiment prévu les risques associés. Mais nous vivons dans un monde de brutes, et tôt ou tard, les besoins de protection nous rattrapent.
WEP
(Wired Equivalent Privacy). Basée sur une solution de clé de chiffrement statique partagée par tous les membres d'un même réseau Wi-Fi, avec un algorithme de chiffrement devenu aujourd'hui plutôt faible, il a été clairement démontré que cette protection n'en est plus une, et nous ne nous
attarderons pas dessus.
Sachez simplement qu'avec des outils comme airodump, aircrack et aireplay3, il est possible, de découvrir une clé WEP en quelques dizaines de minutes, voire moins.
WPA
Devant la panique générée par la découverte des failles de WEP, et alors même que les différents partenaires travaillaient à l'élaboration d'une norme destinée à sécuriser les réseaux sans fils, il a fallu mettre en place un procédé de secours : le « Wifi Protected Access », issu des travaux non encore aboutis de la norme qui est depuis finalisée et connue sous le doux nom de 802.11i.
WPA apparaît comme un ensemble de rustines logicielles, destiné à boucher les plus gros trous de sécurité du WEP, tout en ayant comme contrainte de pouvoir fonctionner sur le matériel existant. Il est donc possible en général d'exploiter WPA sur du matériel conçu pour WEP.
WPA n'est finalement qu'un compromis, acceptable si l'on doit intégrer à son réseau du matériel ancien, ne supportant pas les méthodes de chiffrement préconisées par 802.11i.
WPA2
Ce n'est rien de plus que l'appellation commerciale de la norme 802.11i. Cette norme a été finalisée en 2004 et donc, le matériel n'a des chances d'être compatible que s'il a été conçu aux environs de cette date. Le chiffrement préconisé nécessite la présence d'un composant matériel dédié.
Personnal ou Enterprise ?
WPA comme WPA2 peuvent s'utiliser de deux manières.
Mode « personnel »
La méthode dite « personnelle », c'est-à-dire celle qui est préconisée pour les particuliers disposant d'un petit réseau peu stratégique, fait appel à une clé de chiffrement partagée, la PSK (Pre Shared Key). Cette clé, au contraire de WEP, ne sert pas directement au chiffrement des données. Elle sert de base à la création de clés dérivées, qui sont non seulement différentes pour chaque session (deux utilisateurs d'un même réseau, même s'ils disposent de la même PSK, utiliseront des clés de session différentes), mais encore d'un usage limité dans le temps. Ces clés sont renégociées fréquemment en cours de session, ce qui rend leur découverte nettement plus difficile.
Reste que toute la sécurité repose sur la PSK qui est commune à tous les utilisateurs, et qu'un secret, plus il est partagé, moins il devient secret.
Cette solution (actuellement WPA2-PSK) reste tout à fait acceptable dans le cas d'un réseau sans fils domestique, à la condition d'utiliser une PSK non évidente. Pratiquement, la clé PSK est une suite numérique, calculée à partir d'une « phrase secrète » en ASCII et du SSID du point d'accès. Il faut une phrase secrète qui satisfasse les règles de non évidence classiques (« Ahjk7£&£_#1-[qht » vaut mieux que « SalutLesMecs », votre nom, votre date de naissance, celle de la petite dernière...).
Mode « entreprise »
Ici, nous avons plus de moyens techniques et surtout, plus de besoins de sécurité. Il n'y a pas de clé partagée. Nous ferons appel à un système d'authentification centralisé, allié à un protocole défini par la norme 802.1x.
Typiquement, nous aurons à mettre en place un serveur d'authentification de type RADIUS (Remote Authentication Dial-In User Service) et un point d'accès supportant la norme 802.1x (finalisée en 2001).
Il n'y a,encore une fois, aucun secret partagé, tout le système cryptographique sera construit pendant et après le processus d'authentification, comme nous allons le voir en détail.
Techniquement...
Nous allons avoir besoin de plusieurs briques logicielles, dont certaines nous sont déjà familières, d'autres moins.
Un serveur d'authentification est connecté au point d'accès, par réseau filaire. Le type de serveur d'authentification n'est pas défini par les normes, mais clairement, c'est le protocole RADIUS qui est sous-entendu, c'est celui que nous utiliserons. RADIUS est un protocole applicatif, qui s'appuie sur UDP, IP et Ethernet.
Entre le point d'accès et la station cliente, nous sommes sur du 802.11 (WI-FI). Au dessus, nous trouverons 802.1x.
EAP (Extensible Authentication Protocol) va passer au dessus de 802.1x dans les airs et au dessus de RADIUS sur les fils, pour transporter le mode d'authentification choisi (TLS, PEAP, TTLS ou d'autres encore, mais considérés comme moins sûrs).
Dans la suite de cet exposé, nous nous intéresserons surtout à TLS (Transport Layer Security), qui fait appel à des certificats x509 sur le serveur RADIUS comme sur le client.
Authenticator
Définition
L'authenticator utilise le protocole 802.1x. C'est un protocole qui a été défini dans le but d’autoriser l’accès physique à un réseau local après une phase d’authentification. Ce protocole peut aussi bien s'appliquer à un « port » physique (un point d'entrée sur un switch, par exemple), que sur un « port » virtuel (l'attachement à un point d'accès Wi-Fi).
Il est peut être nécessaire de passer un peu de temps à bien comprendre le principe d'un port contrôlé par 802.1x (authenticator).
Lorsque le client (supplicant) se connecte (Ethernet) ou s'attache à un point d'accès (802.11), l'accès au LAN lui est fermé. Le seul trafic autorisé sera constitué des échanges entre le supplicant et le serveur d'authentification.
Le port ne pourra s'ouvrir sur le LAN sans restrictions qu'une fois l'authentification réussie.
Bien entendu, physiquement, il n'y a qu'un seul port. Ce port physique est composé de deux ports virtuels :
- l'un, non contrôlé, mais qui ne laisse passer que le trafic d'authentification (RADIUS),
- l'autre, contrôlé, qui est destiné à laisser passer tout le trafic Ethernet, mais qui est fermé jusqu'à ce que l'authentification soit réussie.
802.1x ne peut se jouer qu'à trois personnages :
- le supplicant, qui est le client souhaitant se raccorder au réseau,
- l'authenticator, ou network access server (NAS) qui est l'équipement sur lequel le « supplicant » désire se connecter,
- l'authentication server (AS), qui est le serveur d'authentification.
Il est primordial de comprendre qu'une station cliente qui ne sait jouer le rôle de « supplicant » ne pourra jamais accéder au LAN. Pour jouer ce rôle, il faut un bout de logiciel spécifique sur le client.
Windows XP intègre ce logiciel depuis le SP1. Sous Linux, il faudra installer wpasupplicant, par exemple. La plupart des distributions modernes installe par défaut ce composant.
Typiquement, dans le cadre de notre étude :
- le supplicant sera un PC (GNU/Linux, Mac OS, ou même Windows),
- l'authenticator sera un point d'accès Wi-Fi (mais ce pourrait être aussi bien un switch sur un réseau filaire),
- l'authentication server sera un serveur RADIUS. (FreeRADIUS 1.1.3, sur une Debian/etch, ou encore sur une Ubuntu 6.10).
Mais 802.1x n'est qu'un support. 802.1x va servir à transporter un protocole d'authentification, comme EAP (Extensible Authentication Protocol). Comme son nom le laisse supposer, EAP est plutôt souple et permet diverses méthodes d'authentification, plus ou moins efficaces. Il faut bien comprendre qu'EAP n'apporte pas à lui seul la moindre authentification, il sert lui-même à supporter diverses méthodes d'authentification.
Nous retiendrons trois de ces méthodes :
- TLS, qui nécessite un certificat pour le serveur comme pour le supplicant,
- PEAP, où seul un certificat côté serveur est nécessaire, le supplicant utilisant un couple « utilisateur/mot de passe »,
- TTLS, assez similaire à PEAP, mais non supporté par Microsoft Windows.
Pratiquement, nous ferons du TLS si nous avons le courage de créer un certificat par supplicant, et la liste de révocation qui doit aller avec ; nous ferons du PEAP sinon, puisque c'est possible sur les clients GNU/Linux comme sur les clients Windows et Mac OS X. Les deux solutions apportent un niveau de sécurité technique que l'on peut, au moment où ces lignes sont écrites, considérer comme suffisant.
Cependant, un couple « utilisateur/mot-de-passe » valide peut s'obtenir plus facilement qu'un certificat. Aussi préfèrerons-nous utiliser TLS que PEAP (ou TTLS).
Note importante
802.1.x n'est pas une solution exempte de failles. Il est indispensable d'utiliser par dessus des systèmes d'authentification qui permettent :
- au supplicant d'être authentifié par le serveur,
- par la suite, au point d'accès d'authentifier le supplicant,
- enfin, le supplicant doit également authentifier le point d'accès.
Si les deux derniers points ne sont pas vérifiés à chaque paquet transmis, nous courons le risque de voir un attaquant mettre hors jeu un client dûment authentifié, pour lui voler sa place, ou placer un point d'accès pirate pour tromper le client en cours de session.
TLS, PEAP et TTLS répondent à cette problématique.
Principe de fonctionnement
Lorsque le « supplicant » découvre le point d'accès, ce dernier ne lui ouvre pas de port, jusqu'à ce que le « supplicant » soit authentifié par le serveur. Seul le trafic nécessaire à 802.1x sera toléré avant une authentification réussie.
Entre le supplicant et l'authenticator, aussi longtemps que l'authentification n'est pas entièrement réussie (réponse positive du serveur RADIUS), le seul trafic permis est le dialogue d'authentification, le client n'a pas accès au réseau (depuis le temps que je le dis, j'espère maintenant que c'est bien compris).
Entre l'authenticator et le serveur, le trafic se fait classiquement sur UDP/IP, ce qui permet de disposer d'un serveur d'authentification très éloigné, si besoin est. Ce trafic est appelé « EAP over RADIUS ».
D'une manière générale, les échanges se font de la sorte (cas d'une authentification réussie) :
Authentifications nécessaires
Compte tenu des divers risques introduits (faux serveur d'authentification, faux point d'accès, faux client), il convient de mettre en place des stratégies qui permettent de minimiser les risques de leurre.
Authentification du serveur
Le serveur va utiliser un certificat (sorte de carte d'identité, réputée authentique, sous la responsabilité d'une « Certificate Authority », ou « Autorité de certification »). Le serveur communique au client la partie publique de ce certificat, et le client peut vérifier auprès de la CA que ce certificat est bien valide.
Authentification du client
Le client peut utiliser divers moyens, qui vont du certificat (même procédure que pour le serveur), au bon vieux couple « nom d'utilisateur/mot de passe », en passant par des systèmes à base de carte à puce ou d'empreintes biométriques.
Authentification du point d'accès
Ici, le problème est un peu plus compliqué. Que devons-nous vérifier en réalité ? Nous devons être « sûr » que le point d'accès auquel le client s'est attaché à la suite de la procédure d'authentification ne vas pas être remplacé par un point d'accès « voleur » en cours de session (man in the middle).
802.11i (WPA2) offre la technique, actuellement la plus sûre, pour s'affranchir de ce risque. Nous verrons ceci plus loin.
--------------------------------------------------------------------------------------------
Aucun commentaire:
Enregistrer un commentaire