Pages - Menu

Pages

Réseaux sans fils sécurisés - Securité Réseau WIFI - Sécurité Réseaux sans fils

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.
                   
--------------------------------------------------------------------------------------------
< Précédent : les VLANs
          

                 Suivant > WPA2

                           

Aucun commentaire:

Enregistrer un commentaire