Juliette André Renaud Pelloux EXPOSE : Traitements Intermédiaires : NAT, Proxy, Firewall Octobre 2002 Le document présenté ci-dessous reprend tout le contenu du site Web que nous avons réalisé. Il traite des mécanismes mis en place à l'intermédiaire de deux réseaux et en particulier de la translation d'adresse, des proxys et des firewalls. Le document qui suit, tout comme le site Web réalisé traitent de la philosophie appliquée aux mécanismes dont nous parlons. Volontairement, nous ne parlerons pas de la façon de les configurer ou de les installer, d'autres exposés réalisés à l'enic traitant de ces sujets plus spécifiques. Nous avons réalisé cet exposé dans le cadre de l'option RIO (Réseaux et Interconnexion d'odinateurs) de l'enic Télécom Lille 1, option qui termine notre cursus scolaire. Aucune mise en page spécifique n'a été appliquée à ce document, il reprend simplement le contenu de chaque page présentée dans le site Web.
SOMMAIRE I) [Introduction] II) [Une pénurie d'adresses IP] II.1) [Adressage IPv4] II.2) [Pénurie d'adresses] II.3) [Utilisation des adresses privées] III) [NAT] III.1) [Pricipe Général] III.2) [NAT statique et dynamique] III.3) [NAT multiple] III.4) [Comparaison et Problèmes] IV) [Proxy] IV.1) [Principe de fonctionnement] IV.2) [Services ajoutés aux proxys] IV.3) [Comparaison Proxy et NAT] V) [Firewall] V.1) [Principe de fonctionnement] V.2) [Politique de sécurité] V.3) [Filtre de paquets] V.4) [Passerelles] V.5) [Architectures] V.6) [Problèmes Rencontrés] VI) [Glossaire] VII) [Références] Site réalisé par Juliette André (mailto:juliette.andre@orange.fr) Renaud Pelloux (mailto:renaud.pelloux@orange.fr) Octobre 2002
I) [Introduction] Le site Web qui va suivre a été réalisé dans le cadre de l'option RIO (Réseaux et Interconnexion d'ordinateurs) de l'enic Télécom Lille 1. Il est destiné à présenter les aspects techniques et pratiques relatifs aux : Firewalls, NAT et Proxy En effet, deux problèmes majeurs ont ammené les entreprises à utiliser ce type de matériel : la pénurie d'adresses IP publiques ainsi que la multiplication des attaques sur les réseaux. Une entreprise, quelle qu'elle soit, connectée à l'internet est souvent la cible d'attaques, qui affectent son propre système ou s'installent sur son réseau pour attaquer en toute tranquilité d'autres entreprises. Les concepts de NAT et de proxy sont très liés puisqu'ils sont utilisés pour permettre à des stations ayant des adresses IP privées de communiquer avec des réseaux externes. Avec certaines configurations (NAT dynamique par exemple, filtrage sur les proxys), il est possible d'augmenter un peu le niveau de sécurité du réseau de l'entreprise. Ceci n'est en aucun cas suffisant et c'est pour celà qu'il est préférable d'utiliser des matériels spéciaux pour garantir la sécurité tels que des Pare- Feu ou Firewalls. Le site que nous vous proposons est illustré afin d'en simplifier la compréhension.
II) [Une pénurie d'adresses IP] II.1) L'adressage sur IPv4 Le modèle dominant sur Internet est le modèle TCP/IP. Dans ce modèle, les machines et les réseaux des entreprises sont identifiés par une adresse IP. Pour les machines, l'adresse est codée sur 4 octets et écrite de la forme a.b.c.d. Dans cette adresse, on trouve un dientfiant de réseau codé sur 1 à 3 octets selon la classe de l'adresse et un identifiant de machine codé sur 3 à 1 octet. L'ICANN est chargé d'attribuer les adresses réseaux. 5 classes d'adresses, permettant de répartir les adresses sont disponibles : A l'intérieur de ces classes, il existe des adresses réservées qui ne doivent pas être utilisées : identifiant machine tout à 1 : broadcast sur le réseau, identifiant machine tout à 0 : désigne la machine elle-même. II.2) Une pénurie d'adresses Le problème vient aujourd'hui du fait que le nombre de réseaux connectés à l'internet a eu une très forte croissance. De nombreux gaspillages d'adresses ont aussi eu lieu rendant aujourd'hui impossible de trouver une classe A ou une classe B disponible.
Des entreprises souhaitant aujourd'hui plus de 254 adresses et voulant se connecter en réseau à Internet ont donc un problème pour disposer d'adresses IP. Il a donc fallu trouver des solutions pour pallier à ce manque. En voici les principales : IPv6 : Ce nouveau protocole permet de coder les adresses IP sur 128 bits, soit 16 octets. Le problème de ce protocole est qu'il n'est pas encore standardisé et donc pas encore employé. CIDR : Il s'agit ici de coupler plusieurs adresses réseaux de classe C choisies pour avoir un masque de sous-réseau commun et pouvoir ainsi communiquer sans passer par un routeur à l'intérieur d'une entreprise disposant de réseaux de classe C en CIDR. Cette solution pourra elle aussi n'être que temporaire puisqu'il viendra un moment où il manquera aussi de réseaux de classe C. De plus, avec ce système, des gaspillages d'adresse réseau sont faits, en effet, une entreprise qui aurait besoin de 3 réseaux de classe C (3*254 adresse machine) se verra attribuer 4 réseaux, une entreprise en ayant besoin de 10 en aura 16... Utilisation des classes d'adresses privées : C'est cette solution que nous allons développer plus précisément par la suite : II.3) Utilisation des adresses privées (RFC 1918) La RFC 1918 définit des plages d'adresses de réseaux de classe A, B et C qui ne peuvent pas être utilisées sur Internet. Par contre, ces adresses peuvent être utilisées en même temps par plusieurs entreprises : Voici la liste des adresses privées disponibles : - classe A : de 10.0.0.0 à 10.255.255.255 soit 1 adresse réseau de classe A privée - classe B : de 172.16.0.0 à 172.31.255.255 soit 16 adresses réseau de classe B privées - classe C : de 192.168.0.0 à 192.168.255.255 soit 255 adresses réseau de classe C privées Le problème d'utiliser les adresses privées vient de leur définition, : pas de routage sur Internet. Il a donc fallu trouver des solutions pour permettre à ceux qui les utilisent de pouvoir communiquer vers l'extérieur. Des mécanismes de traitement intermédiaires ont été mis en place, notamment la translation d'adresse (NAT) et la mise en place de proxys. L'objet de la première partie de ce site Web est de vous présenter ces deux mécanismes. Voyons donc d'abord la translation d'adresse.
III) [NAT] III.1) Principe Général La NAT (Network Adress Translation) est un système utilisé quand on souhaite connecter un réseau consitué de machines posédant des adresses privées à Internet. Le protocole NAT est implémenté sur des routeurs. Ce protocole repose sur IP. Nous présenterons ici le mécanisme de base de la NAT, il existe aujourd'hui des mécanismes beaucoup plus évolués. En effet, une station de travail du réseau (possédant une adresse privée) qui souhaite communiquer vers l'extérieur enverra les données à transmettre vers son routeur par défaut (routeur définit dans la configuration de la machine ou obtenu par DHCP). Le routeur aura donc pour mission de transmettre la demande à l'extérieur, de récupérer la réponse et de la transmettre à la station qui a fait la requête. Pour ce faire, il met en oeuvre la NAT. Trois types de NAT peuvent être utilisés : la NAT statique, la NAT dynamique et la NAT multiple. Voyons dans un premier temps la NAT statique. Son fonctionnement plus simple nous permettra de comprendre plus facilement les autres mécanismes. III.2) NAT Statique et dynamique Le principe de NAT statique et dynamique est très simple et très proche. Voyons dans un premier temps la NAT statique. NAT Statique Son principe est d'associer une adresse IP interne (privée) à une adresse IPpublique. Son fonctionnement est très simple : Lorsque A fait une requête sur le serveur Web : La station A envoie à son routeur par défaut le message en précisant, comme pour toute communication, son adresse IP : IPa (privée) comme adresse source et l'adresse IP du serveur Web : Ipweb comme adresse destination. Le routeur NAT qui reçoit ce datagramme regarde dans sa table et voit qu'à l'adresse privée IPa est associée l'adresse publique (ou virtuelle) IPpub. Il modifie donc le message pour intégrer comme adresse source l'adresse IPpub et fait suivre le message sur son
interface connectée à Internet. Le serveur Web recevra donc un message de requête provenant de l'adresse IPpub. Le schéma suivant reprend la vie du message lors de cette phase d'envoi de requête. Une fois que le serveur Web a traité la requête, il doit envoyer la réponse. Voici le cheminement du mesage : Le serveur Web crée sa réponse et l'encapsule dans un datagramme IP avec comme adresse source la sienne : Ipweb et comme adresse destination l'adresse inscrite dans la requête, c'est à dire IPpub. Ce message est donc envoyé et reçu par notre routeur NAT qui reconnaît IPpub comme une adresse ne correspondant pas à une adresse de son réseau mais devant être translatée pour continuer son chemin. Il regarde donc de nouveau sa table de correspondance NAT et constate qu'à l'adresse publique IPpub est associée l'adresse privée IPa. Il modifie le message et le transmet sur le réseau local où la machine A est connectée. Le schéma ci dessous vous résume les étapes décrites.
Avec ce système, une station interne aura toujours, lorsqu'elle souhaite se connecter à Internet, la même adresse IP publique. La NAT dynamique La NAT dynamique fonctionne sur le même principe que la NAT statique mis à part que l'adresse publique qui sera attribuée à la station A (station en adressage privé) ne sera pas toujours la même. Cette adresse sera choisie dans un "pool d'adresses" à la disposition du routeur et donnée pour un temps défini. L'adresse obtenue par A sera potentiellement à chaque fois différente. Mais une fois toutes les adresses du pool utilisées, les stations qui feront la demande d'une adresse publique ne pourront pas être satisfaites, il faut donc trouver encore une autre solution permettant de satisfaire tous les utilisateurs. Cette solution peut âr exemple êter la NAT multiple ou PAT. Voyons ceci. III.3) NAT multiple La NAT multiple Ce que l'on appelle communément NAT dynamique est en fait la mise en place d'une autre translation : la translation de port ou PAT (Port Adresse Translation). Ce protocole s'appuyant sur UDP est lui aussi implémenté sur les routeurs en complément de la translation d'adresse. Principe : La translation de port permet d'associer une même adresse IP
publique à plusieurs adresses IP privées en jouant sur les ports de connexion. Ainsi, plusieurs machines pourront se connecter en même temps à Internet alors que le routeur ne dispose que d'une adresse publique. Prenons comme exemple une situation où deux machines du réseau local souhaitent aller visiter un site Internet en même temps. La première : A, qui possède l'adresse IP IPa, initialise la connexion en choisissant au hasard le port source Porta. Au même instant, la machine B fait la même démarche, elle initialise la connexion en prenant comme port source (choisi de façon aléatoire) le port Portb. Nous allons nous placer dans le cas le plus défavorable, par manque de chance les deux machines A et B ont choisi le même numéro de port (Porta=Portb)... Voyons ce qui se passe au niveau du routeur NAT/PAT : Le routeur reçoit les deux demandes de connexion en même temps. Il va donc regarder dans sa table l'adresse IP source, le port source et l'adresse publique allouée (la seule à sa disposition). Il continue donc à faire suivre le paquet de la machine A sur Internet avec les caractéristiques suivantes : @src = IPpub, port src = Porta... Le paquet provenant de B arrive lui aussi au routeur, le routeur fait de même qu'avec A, il note dans sa table qu'à l'adresse source IPb et numéro de port Portb est associé l'adresse Ip publique IPpub avec le port Portb... Mais, lors de l'arrivée des réponses en provenance du Web, le routeur qui reçoit un paquet pour @IP : IPpub et port dest Porta (=Portb) ne saura pas à qui l'envoyer... Avec ce mécanisme, il serait possible que le routeur lance des connexions vers l'extérieur avec le même numéro de port, connexions qu'il n'arriverait plus à distinguer par la suite... C'est pour celà que lorsqu'une demande de connexion arrive, le routeur, en plus de changer l'adresse IP source contenue dans le paquet, va aussi modifier le port source en en choisissant un lui même. De cette manière, il ne choisira jamais deux fois le même numéro en même temps, il pourra donc bien suivre toutes les connexions en même temps. Voici donc un schéma synthétisant le fonctionnement de la translation de port: Lors de l'envoi de requêtes :
Lors de la réponse à la requête : Les mécanismes de NAT et PAT sont très liés, ils ont le même but, voyons en maintenant une comparaison :
III.4) Comparaison et problèmes Comparaison NAT statique et NAT dynamique NAT statique NAT dynamique NAT multiple (PAT) 1 adresse IP publique par machine du réseau local Machines accessibles par l'extérieur Gestion plus facile, on sait qui a quelle adresse IP publique 1 pool d'adresses publiques pour un réseau complet Initialisation des connexions TCP uniquement par l'intérieur Une fois que toutes les adresses du pool sont utilisées, plus de connexion possible Problèmes pour ARP, FTP 1 seule adresse publique pour un réseau complet Initialisation des connexions TCP uniquement par l'intérieur L'idéal serait donc de pouvoir coupler ces sytèmes pour n'en garder que les avantages, ce qui est bien évidemment possible, voici comment faire : Couplage NAT et PAT Sur un réseau, toutes les machines n'ont pas les mêmes besoins en terme de connexion à Internet, d'établissement de connexion par l'extérieur etc... Ainsi, il est possible d'implémenter les deux systèmes sur le routeur NAT. Les machines devant être jointes de l'extérieur ou utilisant fréquemment des services comme FTP peuvent utiliser une NAT statique. Il peut s'agir par exemple de serveurs Web, fréquemment appelés. Pour les postes de simples utilisateurs, il est en général suffisant de faire de la PAT et donc ainsi économiser le nombre d'adresses publiques disponibles dans l'entreprise. Problèmes liés à la NAT Certains problèmes persistent quand même : Requêtes ARP : Lorqu'une requête ARP est à destination d'une machine "NATée", la requête se fait par l'adresse virutelle utilisée en dehors du réseau local. Or aucune machine du réseau ne possède cette adresse, c'est le routeur qui doit répondre à la place de la machine, on dit alors que le routeur fait "proxy ARP". Le proxy ARP est souvent implémenté automatiquement sur les routeurs,sinon il existe plusieurs solutions pour pallier à ce problème : mettre en place un mécanisme de proxy ARP sur la machine qui fait de la NAT statique, ajouter une entrée statique dans la table ARP du routeur Internet (pas le routeur NAT mais le suivant vers Internet) avec l'adresse MAC du routeur commande : arp -s @IPvirutelle @MACRouteur
ICMP : La NAT multiple demande l'utilisation des ports TCP/UDP mais certains protocoles ne les utilisent pas, c'est par exemple le cas d'icmp, PPP ou Netbios. Par exemple ICMP, il se limite à la couche 3, il n'a donc pas de ports TCP/UDP. La plupart du temps, il faudra mettre en place une méthode spécifique pour permettre la NAT du trafic ICMP, il suffira de baser la translation sur l'identifiant de l'entête IP plutôt que sur les numéros de port. On peut donc se demander pourquoi ce mécanisme, plus universel ne serait pas mis en place pour toutes les translations... Mais il existe maintenant une solution à ce problème, il s'agit du tracking de paquets ICMP. Ce mécanisme permet entre autres d'utiliser le procole ICMP avec la translation d'adresses. le tracking de paquets ICMP est un module compris dans un mécanisme de NAT évolué tel que "Masquerading". FTP : FTP est un protocole qui utilise deux connexions en parallèle, la première pour le contrôle de la connexion et la seconde pour le transfert des données. FTP fonctionne selon deux modes : passif (connexions initialisées de l'extérieur) ou mode actif (la demande de données vient de l'extérieur).cette seconde possibilité empêche de faire de la NAT dynamique. De plus, le protocole FTP contient des informations concernant les machines et donc celà pose problème si les adresses de ces machines sont translatées. Il faut alors utiliser un module capable de lire les informations contenues dans les données FTP ou utiliser un proxy FTP qui sera capable de suivre la connexion et de modifier les données FTP rendant ainsi la connexion possible. Ce type de module est également disponible dans le mécanisme de "masquerading" et il peut ête activé ou non selon l'utilisation. VPN : Les réseaux privés virtuels (VPN) utilisent une communiaction via un tunnel. Le contenu des messages qui transitent dans ce tunnel est crypté, y compris l'entête IP du message (protocole IPsec). Ainsi, il n'est plus possible, une fois le message crypté, de trouver en clair l'adresse IP de l'émetteur ainsi que le port source, il n'est donc pas non plus possible de les modifier. Il est donc difficile de faire de la translation d'adresse dans un VPN. La solution est très simple, elle consiste à translater l'adresse avant de crypter le message IP. Là aussi, des mécanismes évolués tels que le "masquerading" permettent de résoudre le problème. Certains problèmes renconctrés avec la translation d'adresses ne le sont pas avec l'utilisation des proxys, voyons donc comment les proxys fonctionnent.
IV) Proxy IV.1) Principe de fonctionnement du proxy Le proxy fonctionne au niveau applicatif. Il est utilisé comme mandataire par des machines présentes sur un réseau, n'ayant pas d'accès direct à l'extérieur et souhaitant s'y connecter pour une application donnée. Comme pour les routeurs, le nom du serveur proxy doit être configuré, pour chaque type d'application, sur les machines clientes. Il peut alors s'agir de proxy HTTP, FTP, ARP etc... Afin de bien comprendre comment tout celà fonctionne, prenons comme exemple l'architecture réseau suivante avec un proxy HTTP. Exemple 1 : La station A veut consulter le site Web Interne Voici, vus de la machine A les mécanismes mis en place : Résolution DNS pour le serveur WebInterne Connexion TCP de A vers le serveur WebInterne A vers WebInterne : requête http GET URL index.htm WebInterne vers A : envoi du contenu de index.htm Ici, le serveur WebInterne communique donc directement avec la station A.
Exemple 2 : La station A veut consulter le site Web Externe La machine A ne peut pas se connecter directement à Internet, elle regarde donc dans sa configuration et voit qu'elle doit passer par le proxy Voici, tout d'abord vus de la machine A les mécanismes mis en place : Résolution DNS pour le serveur ProxyHttp Connexion TCP de A vers le ProxyHttp A vers ProxyHttp : requête http GET URL WebExterne/index.htm ProxyHttp vers A : envoi du contenu de WebExterne/index.htm Voici ensuite, vus du proxy les mécanismes mis en place : Connexion TCP de A A vers ProxyHttp : requête http GET URL WebExterne/index.htm Connexion TCP de ProxyHttp vers WebExterne ProxyHttp vers WebExterne GET URL index.htm WebExterne vers ProxyHttp envoi du contenu de index.htm Proxy vers A envoi du contenu de WebExterne/index.htm Nous voyons donc ici que la station A ne communique jamais directment avec le WebExterne (pas de connexion TCP entre A et le serveur WebExterne. En règle génrérale, on profite du proxy pour lui adjoindre des fonctionnalités spéciales. Nous allons donc voir quels services peuvent lui être ajoutés. IV.2) Services ajoutés au proxy Comme nous venons de la voir, le proxy est simplement un intermédiaire de connexion entre une station du réseau local et des stations placées sur d'autres réseaux. Néanmoins, des options lui sont souvent associées, en voici quelques-unes : Proxy-Cache Très souvent, un cache est installé sur les proxys. Le cache est une mémoire installée sur les proxys lui permettant de conserver dans sa propre mémoire le contenu des requêtes qui ont déjà été effectuées. Le serveur de cache, avant de se connecter au réseau externe pour relayer la demande de son client interne, détermine s il peut satisfaire la demande du client avec son cache. Un serveur Proxy utilisant le cache place une copie des objets téléchargés dans le cache et associe à ces objets une durée de vie. Pendant toute sa durée de vie, toutes les demandes pour cet objet seront satisfaites par le cache. Quand la durée de vie de cet objet est passée, le prochain client qui demandera cet objet en recevra un tout nouveau reçu du réseau externe. Si le cache du Proxy est plein, le serveur Proxy élimine les objets de son cache suivant
certains critères tels que l'âge, l utilisation et la taille. Il est possible de paramètrer le cache afin de donner un temps de validité limité aux pages stockées. Ceci donne donc l'avantage d'économiser la bande passante disponible pour toute l'entreprise et aussi les coûts de connexion à Internet si l'entreprise ne dispose pas d'une connexion permanente à Internet. L'utilisation d'un proxy-cache a quand même des inconvénients. Le premier est que le serveur qui héberge le cache doit avoir de bonnes performances afin de ne pas trop ralentir les requêtes, de plus, le passage dans ce serveur peut provoquer un goulet d'étranglement au niveau du réseau (le temps de traitement des requêtes adressées au proxy n'est pas négligeable). Il est néanmoins possible de placer plusieurs proxys en parallèle afin de leur répartir la charge. Proxy-Authentification Le fait de relier un serveur proxy à un mécanisme d'authentification permet de ne donner l'accès à Internet qu'à certaines personnes autorisées à qui on distribue un login et un mot de passe. On évite ainsi que toute l'entreprise ait accès à Internet si les personnes qui en ont besoin sont très rares. On peut aussi profiter de ce mode de fonctionnement pour répartir les frais de la connexion à Internet en donnant un mot de passe par service et ainsi on calcule le trafic inhérent à chaque service pour redistribuer les coûts. Proxy Anonyme Le proxy anonyme est utilisé pour permettre une conservation de la vie privée. En effet,lorsqu'une connexion Internet a lieu, des informations sur le système sont fournies au site Web. Des informations peuvent alors être utilisées pour suivre les mouvements de l'internaute. Afin d'éviter de divulguer des informations sur sa vie privée, il est possible de mettre en place des proxys anonymes. Ceux-ci détruisent les informations issues des entêtes des requêtes provenant d'un ordinateur spécifique. Afin de bénéficier d'un niveau de sécurité optimal, il est possible de chainer des proxys. Au lieu de saisir une demande de connexion à un site Internet de la façon suivante : http://www.enic.fr on tape : http://proxya:porta/proxyb:portb/www.enic.fr ou http://proxya:porta/proxyb:portb/http://www.enic.fr Failles de sécurité Comme tout équipement, le proxy souffre de failles de sécurité. Même si les pirates les détectent plus vite que les administrateurs réseaux, il est préférable d'en connaître les principaux défauts.
La principale faille concerne la liste des utilisateurs autorisés à se connecter. En effet, si la liste est inexistante ou mal configurée, n'importe qui pourra venir s'y connecter pour aller de façon anonyme sur Internet. Il est relativement simple pour un hacker de se procurer sur Internet une liste de serveurs proxys et de leur configuration car certaines entreprises publient sans s'en rendre compte leur adresse de proxy et leur configuration. IV.3) Comparaison Proxy et NAT Les proxys et la translation d'adresse ont le même but, connecter des machines à Internet, mais quel système est-il préférable d'utiliser? Vaut-il mieux mettre en place la translation d'adresse ou utiliser des serveurs proxys? Selon les besoins de l'entreprise, chaque matériel peut avoir ses avantages et ses inconvénients, voici ce qui peut faire pencher la balance... Penchant sur les proxys : Le Proxy est dédié à une seule application, l'avantage est qu'il peut interpréter le contenu de ce qu'il voit passer et donc il évite des problèmes tels que l'utilisation du protocole FTP avec la NAT. Il est possible de mettre un cache sur un proxy, permettant ainsi de réduire significativement le trafic de l'entreprise vers l'extérieur si de nombreuses personnes se connectent souvent au même site. La bande passante est alors mieux utilisée. Avec les proxys, il est possible d'autoriser ou non l'accès à certaines ressources et il est possible d'avoir un bon contrôle de ce qui passe sur le réseau. Les proxys ne sont pas seulement utilisés quand l'entreprise possède un réseau en adresses privées, les services à valeur ajoutée proposés le rendent flexible.il peut donc être utilisé pour accroître quelque peu la sécurité sur un réseau. Penchant pour la NAT : La NAT est transparente pour les utilisateurs, c'est à dire que rien ne doit être configuré sur leurs postes pour que le système fonctionne. Elle est indépendante des applications utilisées, si une nouvelle application apparait, elle peut tout de suite communiquer vers l'extérieur, il n'est pas nécessaire d'installer un nouveau proxy. Maintenant que la connexion à Internet est assurée, il faut voir comment se protéger des malveillances qui peuvent provenir de l'extérieur. Pour celà, étudions les firewalls.
V) Firewall V.1) Principe général Selon la définition de Cheswick et Bellovin, un firewall (ou pare-feu en français) est un ensemble de composants placé entre deux réseaux ayant les propriétés suivantes : Tout le trafic transitant entre les deux réseaux passe nécessairement par le firewall Seul le trafic explicitement autorisé par la politique de sécurité appliquée localement est autorisé à passer au travers du firewall Le firewall est immunisé contre toute intrusion. Il s'agit donc ici de contrôler tout ce qui se passe à l'interconnection des deux réseaux et de garantir que l'équipement réalisant ce contrôle ne peut pas lui-même être attaqué afin de modifier ses règles de filtrage. Les notions de NAT et de proxy vues précédemment aideront largement à la compréhension du fonctionnement des firewalls puisque ces mécanismes y sont utilisés. Deux principaux types de firewalls existent, les filtres de paquets et les passerelles applicatives, ceci fera l'objet de la suite de ce site. Il faut néanmoins noter qu'il ne suffit pas de mettre en place un firewall pour se prémunir de toutes les attaques sur un réseau, une politique de gestion de la sécurité doit être définie, surveillée et mise à jour régulièrement, n'oublions pas que la machine ne fera que ce que l'homme (la femme) lui aura demandé de faire! Voyons donc comment se définit une politique de sécurité. V.2) Politique de sécurité Stratégies de configuration d'un firewall Deux grandes stratégies sont utilisées pour configurer les firewalls : Tout ce qui n'est pas explicitement interdit est autorisé Tout ce qui n'est psa explicitement permis est interdit. La seconde règle est la plus utilisée, elle permet en effet de limiter les failles de sécurité dues à des oublis ou à de nouvelles sortes d'attaques. Elle est néanmoins longue à mettre
en place et à appliquer. c'est celle qui est la plus souvent choisie. Un langage de définition des politiques de sécurité a été créé afin de définir les règles de filtrage. Il a été étudié à l'ietf et peut se résumer comme suit : SI <condition> ALORS <action> La condition reprend un critère de sélection (par exemple l'adresse IP source) en relation avec un opérateur et une catégorie d'utilisateurs. Les opérateurs sont les suivants : IN, NOT IN, EQUALS, GREATER THAN, GREATER THAN OR EQUAL TO, LESS THAN, LESS THAN OR EQUAL TO. Les actions sont PERMIT (trafic autorisé) et DENY (trafic interdit). Il existe également une action REJECT qui, en plus de refuser le passage du paquet, avertit l'émetteur que son paquet a été détruit. Cette action est très peu utilisée car elle peut donner des informations à l'éventuel intru, on préfèrera donc utiliser DENY. Différents types de firewalls dans la suite de ce document, vous connaitrez les deux principaux types de firewall, leurs fonctionnalités, leur mise en place et leurs protections. Le filtre de paquets La passerelle applicative V.3) Filtres de paquets Il filtre le trafic des données au niveau des couches réseau et transport (niveaux 3 et 4 du modèle OSI). Le filtrage est principalement réalisé en fonction des critères suivants : Numéros de protocole Adresses IP source et destination Numéros de ports sources et destinations Drapeaux de connexion TCP Grâce aux numéros de port, il est possible d'effectuer un filtrage en fonction des services proposés car il existe une correspondance entre les numéros de ports et les services associés. Néanmoins, ceci n'est pas tout à fait satisfaisant car des numéros de port non réservés existent et peuvent être utilisés sans être filtrés. Il faut donc bien faire l'inventaire
des ports utilisés par les applications de l'entreprise et veiller à n'ouvrir que ces ports. Dans le cas du filtrage par paquets, le firewall ne prête aucune attention aux données véhiculées sur le réseau. De ce fait, il ne peut s'agir que d'une maille dans le système de sécurité et il ne constitue en lui même pas un rempart suffisant. 2 types de filtres de paquets : Filtre sans Etat : Il ne garde en mémoire aucun contexte, il traite de façon identique tous les paquets IP qu'il voit passer, c'est à dire qu'il analyse l'entête IP selon ses règles de filtrage. C'est le type de filtre de paquet le plus couramment utilisé. Filtre avec Etat : Le premier paquet d'une communication IP est analysé selon les règles de filtrage. L'action réalisée (DENY ou PERMIT) est gardée en mémoire. Les paquets suivants faisant partie de la même communication seront traités avec la même action. En règle générale, les filtres de niveau paquet offrent de très bonnes performances en terme de temps de traitement, par contre, ils ne savent pas comprendre ce qui circule dans la partie "donnée" des messages ce qui peut être également dangereux. Pour ce faire, les passerelles applicatives ont été créées. V.4) Les Passerelles La passerelle agit de la couche transport à la couche application du modèle OSI. Ici, le firewall effectue un filtrage plus ou moins fin sur les données échangées entre deux réseaux, pour un service TCP/IP particulier. La passerelle sera donc placée sur le même réseau que le client qui devra obligatoirement passer par elle pour se connecter à l'extérieur. Ainsi, deux connexions TCP doivent être prises en compte : une connexion du client vers la passerelle applicative et une autre de la passerelle applicative vers l'extérieur. Dans ce cas, le firewall effectue un contrôle pour voir s'il autorise ou non le transit des paquets sur ces connexions. Le firewall va alors chercher dans ses règles de fonctionnement pour savoir s'il doit relayer le trafic ou le bloquer.
Il existe deux principaux types de passerelles, les passerelles de niveau circuit et les passerelles applicatives. Elles sont en général regroupées sous le terme générique de "passerelles applicatives" mais ne fonctionnent en fait pas de la même manière : Passerelles de niveau circuit : Dans ce cas, le client effectue une connexion TCP vers la passerelle pour demander sa connexion au serveur. La passerelle peut effectuer des contrôles relatifs permettant : de contrôler l'adresse IP d'un client, d'autoriser pour une durée maximale fixée les communications sur un port donné de permettre la réutilisation d'un même port seulement après un délai fixé d'authentifier un terminal Ici, une seule passerelle peut être mise en oeuvre pour toutes les applications basées sur TCP/IP. Dans ce type de configuration, il est nécessaire de modifier la configuration de la pile TCP/IP du client afin de forcer le client à se connecter via la passerelle. Passerelles Applicatives : Il s'agit en fait ici de mettre en oeuvre le mécanisme de proxy
(décrit plus tôt dans cet exposé). Il faudra par contre installer une passerelle applicative par service utilisé dans l'entrprise devant se connecter à Internet. Ceci permet d'avoir un filtrage très fin au niveau de l'analyse du contenu de ce qui transite mais celà peut s'avérer lourd à gérer car, dès qu'une nouvelle application qui doit communiquer vers l'extérieur apparait, il faut installer un nouveau proxy. Il est possible d'héberger sur un même serveur plusieurs proxys, limitant ainsi les coûts au niveau matériel. Plusieurs types d'architectures permettent d'obtenir le niveau de sécurité souhaité et de résoudre certains problèmes, par exemple le fait de devoir installer un proxy par application. C'est ce que nous allons voir dans le chapitre Architectures. V.5) Architectures Il existe plusieurs solutions permettant de connecter le firewall au réseau Internet, selon le niveau de paranoïa du responsable sécurité de l'entreprise. Nous allons donc voir ici quelques possibilités d'architecture et leur intérêt : Il existe deux éléments indispensables à toutes ces architectures : Le routeur filtrant : il s'agit ici d'un routeur où sont implémentées certaines règles lui permettant de savoir, en fonction des adresses IP, des protocoles utilisés ou des numéros de ports à quelle machine envoyer le message. Le bastion : On appelle bastion un serveur regroupant plusieurs proxys.
Un routeur filtrant et un bastion ayant deux interfaces réseau : Avec ce type d'architecture, le routeur filtrant va vérifier que tous les paquets issus d'internet sont adressés au bastion. Le bastion utilise ses règles de filtrage pour savoir s'il doit relayer ou non les paquets. Ce type d'architecture est très fiable car seuls les services pour lesquels un proxy a été installé peuvent communiquer. Le problème est donc toujours persistant pour les services qui ne disposent pas de proxys (certains protocoles propriétaires, par exemple Lotus Notes ou le service DNS). De plus, toute la fiabilité de cette architecture repose sur le bastion, une simple faille au niveau de celui-ci rend toute la structure ouverte aux attaques.
Un routeur filtrant et un bastion ayant une seule interface réseau : Ici, le routeur vérifie la conformité des paquets issus d'internet, il vérifie qu'ils sont bien adressés au bastion. Un avantage et un inconvénient proviennent du fait que le routeur peut être contourné. Ceci peut se révéler utile lorsqu'on souhaite utiliser des services qui ne disposent pas de proxys, DNS par exemple. On ordonne alors au routeur d'envoyer ce type de paquets directement sur le réseau, ceci donne une certaine flexibilité. La sécurité est ici basée sur les tables de filtrage du routeur autorisant ou non la connexion directe au réseau interne.
Deux routeurs filtrants et un bastion : Ici, une zone dite démilitarizée est créée entre les deux routeurs, elle est appelée DMZ. L'intérêt vient du fait qu'il est nettement plus difficle de réussir à contourner deux routeurs filrants. Le routeur R1 envoi les données qui doivent être filtrées au bastion et les autres vers le second routeur filtrant. Le second Routeur (R2) vérifie que toutes les informations qui doivent être filrées viennent du proxy et il laisse passer les messages qui ne doivent pas être filtrés. Comme dans l'exemple précédent les services ne disposant pas de firewall peuvent passer. Autres utilisation des DMZ : De nombreux firewall permettent sur au moins une de leurs branches une DMZ. On place alors sur la DMZ tous les serveurs qui peuvent être accessibles de l'internet (ne contenant pas de données critiques). Ainsi, tout le reste du réseau reste inaccessible de l'extérieur. Voici un exemple d'architecture qui intègre une DMZ pour une entreprise qui souhaite héberger ellemême son serveur Web et avoir un serveur de mail accessible à partir d'internet. Le firewall dans ce cas peut aussi bien être un filtre de paquets ou une passerelle applicative.
Nous voyons donc ici qu'il n'est pas simple d'installer un firewall, il faut savoir quelle politique appliquer, quel type de filtrage on souhaite réaliser, quelles applications auront le droit de communiquer vers l'extérieur mais aussi quel type d'architecture mettre en place. Tout dépend du degré de sécurité souhaité, des moyens à disposition mais aussi des données à protéger... car malgré la présence d'un firewall, toutes les attaques ne peuvent pas être arrêtées, nous verrons dans la prochaine partie comment attaquent les pirates et s'il existe des solutions pour déjouer ces attaques. V.6) Problèmes Aussi performant que pourra être un firewall, il existera toujours des failles qu'il ne pourra pas gérer et pour faire face à des attaques spécifique il devra être configurée de manière optimale. Failles Il existe trois catégories de failles contre lesquelles les firewalls restent impuissants : La première catégorie met en cause les protocoles des couches basses du modèle OSI (de 2 à 4) comme par exemple TCP, IP, UDP, Ethernet, Token Ring qui ne sont pas nativement sécurisés. En effet ces protocoles ne nécessitent en aucun cas une authentification et la confidentialité des données qu'ils supportent n'est pas assurée car toutes les informations circulent en clair.
La deuxième catégorie est liée aux protocoles des couches hautes et notamment à certains, utilisés fréquemment sur intenet et pouvant facilement être utilisée à des fins malveillantes par exemple Telnet ou FTP. En effet il est délicat de noter dans les régles du firewall que l'utilisation de ces services est interdit car ils sont pratiques et fréquement utilisés. Bien sur le firewall ne peux les accepter que s'ils proviennent de certaines adresses, mais si un pirate usurpe les adresses autorisées il pourra faire transiter le contenu qu'il souhaite sans avoir à s'authentifier, et/ou il pourra lire les informations qui transitent puisqu'elles ne sont pas codées. Le troisième risque provient des faiblesses des sytèmes d'exploitation utilisés sur les réseaux locaux. Il est trés facile pour les pirates d'obtenir des renseignements sur les faiblesses de sécurité des différents système et de concevoir des attaques appropriées qui ne pourront être détectées par le firewall qui pensera que ce sont des messages normaux ou et sans risques. De plus il faut bien réaliser que le firewall est incapable d'empêcher les attaques ne passant pas par lui. Par exemple il n'est pas rare de constater que certains utilisateurs possèdent des liaisons modem directe vers l'internet, ce qui constitue une porte d'entrée idéale pour un pirate. Il faut également être conscient que la sécurité absolue n'est pas encore possible et que la meilleure façon de protéger des documents sensible est de les stocker sur des supports non accessibles depuis le réseaux : réseau ou machine en "standalone" c'est à dire sans liaisons avec le reste de l'entreprise, support de stockage physique : cd-rom, bandes magnétiques... Les firewalls ne sont également pas bien adapter à la protection contre les virus car ce ne sont rien d'autre que des programme ou documents à l'apparence des plus normale, et il existe tellement de manière de coder les informations qu'il est difficile de détecter les virus sur le firewall. Il est donc nécessaire de bien sensibiliser les utilisateurs aux problème de sécurité et leur donner les directives de bases, la première étant de ne rien ouvrir provenant d'un mail dont on n'est pas sur de la provenance. L'investissement dans un firewall est assez lourd et une bonne administration prend énormément de temps. Quelques types d'attaques : Voici quelques types d'attaques qu'il est possible de contrer grace à une bonne configuration du firewall. Le "SYN flooding". Cette attaque s'adresse aux équpement fonctionnant avec le protocole TCP. Le principe étant d'inonder la machine avec des messages comporantant le drapeaux SYN à 1 et de ne pas répondre, la machine visée reste donc dans l'attente d'un message avec le drapeau ACK à 1. Cela n'affecte pas l'intégriter du système mais le mais dans l'incapacité de répondre à d'autre requète, cela le rend indisponible. La
solution est de configurer le firewall pour qu'il examine les requettes TCP et qu'il contrôle le nombre de messages SYN émis par une même source. L IP spoofing. La mascarade autrement appelée IP spoofing consiste à falsifier l adresse source d un datagramme IP pour se connecter à une machine qui connaît ses hosts amis. La machine estime donc qu elle a affaire à un utilisateur reconnu et laissera ouvertes ses protections. Cette attaque qui est causée par les faiblesse de certain protocole ne faisant pas d'authentification, peut être éviter si le firewall fais lui même de l'authentification (notament en dialoguant avec un serveur d'authentification) en controlant de manière performante l'identité du correspondant (mécanisme de signature digitales ou à base de clef secrète). Le Pinging. L exploitation de ces failles se traduit par un certain nombre de techniques. La première se nomme "pinging" ou "ping of death". Son principe est très simple : la machine cible est bombardée par des milliers de messages (de type ICMP envoyés par la commande ping). Cet équipement se trouve alors saturé et passe en mode administration. Le pirate peut alors reconfigurer le système à sa guise. La parade est la même que pour toutes les attaques de type "flood" c'est à dire de controler le nombre de message de type signalisation à destination d'une même machine. Les attaques sur les autres matériels réseaux. En effet si un routeur est attaquer et que le pirate parvient à modifier les table de routage afin de rediriger du traffic sur sa propre machine, le firewall sera impuissant. Il faut donc le positionner corectement et notament avant les routeur internes à l'entreprise. Les journaux de sécurité. Afin de ne laisser aucune trace de son passage le pirate peux saturer les journaux de sécurité avec des tentatives de connexions "leure" puis réaliser en toute discrétion une véritable attaque, puisque les actions ne seront plus enregistrée. Afin de paré à ce problème il faut que l'administation du firewall soit irréprochable et surtout que cette machine soit la moins visible possible par un pirate. Par exemple il ne faut en aucun cas héberger d'autre service sur cette même machine car elle risquerais d'être vue de l'extérieur. En conclusion, on pourra dire que si les capacités du firewall et sa puissance entrent en jeu dans le niveau de sécurité qu'il procurera, l'élément essentiel réside dans une administration et une configuration des plus soignées et des plus rigoureuses.
VI) Glossaire Vous trouverez dans ce glossaire les termes que nous avons utilisés ainsi qu'une définition rapide de ceux-ci. Certains termes ont été plus expliqués dans le site lui-même, n'hésitez pas à aller consulter les parties correspondantes. AFNIC : Association Française pour le Nommage Internet en Coopération ARP : (Adresse Resolution Protocole) : Protocole permettant sur un réseau local, d'associer les adresses physique des machines (adresses MAC) au adresses IP en envoyant une requette en diffusion à toute les machine pour demander laquelle posséde l'adresse ip recherché. Broadcast : Ou diffusion, mécanisme permettant à toutes les stations d'un réseau de recevoir le message envoyé. Pour le protocole IP les adresses de broadcast se terminent par 255, par exemple un message envoyé à l'adresse 192.168.1.255 sera pris en compte par toutes les machines du réseau 192.168.1.10. Cache : Le cache est une notion trés présente dans les réseaux, il s'agit de conserver en mémoire une information que l'on vient d'aller chercher sur le réseau afin de ne plus avoir à emprunter le réseau pour la retrouver. Naturellement, il faut mettre en place des mécanismes de durée de vie limitée ou de mise à jour pour s'assurer de la validité de l'information. CIDR : (Classless Inter Domain Routing) Système permettant de réaliser un seul réseau logique à partir de plusieurs adresses de classe C contigues. On s'arrange pour que les adersses de classe C choisies aient le même masque de "Sur-Réseau". Datagramme : Suite de bit Standardisée. Pour IP, l'entête comporte 20 octets précisant notamment l'adresse source et l'adresse destination du message. Les données de la couche supérieure suivent cet entête. DHCP : Système permettant d'attribuer dynamiquement aux machines d'un réseau donné une configuration réseau, contenant notamment l'adresse IP, le masque de sous réseau et le routeur par défaut. DNS : (Domain Naming Service) Le DNS est un service qui fournit une base de donnée permettant de faire la relation entre une adresse IP et le nom de la machine correspondant à cette adresse IP. Firewall : Machine placée au point de communication d'un réseau vers l'extérieur assurant la non-intrusion dans ce réseau. FTP : (File Transfert Protocole) Protocole applicatif utilisé
dans le transfert de fichier. HTTP : (HyperText Transfert Protocole). Protocole applicatif de transmission de donnée s'appuyant sur le protocole TCP. C'est le protocole le plus employé sur l'internet notamment pour le transfert des pages Web. ICANN : Entitée chargée de gérer les noms de domaines au niveau mondial de l'internet (www.icaan.org) ICMP : (Internet Control Message Protocole) Protocole permettant la communication entre routeur pour échanger des informations. Les messages ICMP sont encapsuler dans les datagramme IP. PPP (Point to Point protocol) Protocole utilisée le plus souvent pour les connexion modem entre le modem et un routeur. IETF : Internet Engineering Task Force. Il s'agit d'une communauté internationale regroupant des architectes réseau, des opérateurs, des vendeurs concernés par l'évolution d'internet et de son architecture. l'ietf publie des RFC (Request for Comment) donnant des instrutions sur l'utilisation d'internet. voir site IETF. voir RFC 1918 Intrusion : En réseau, la notion d'intrusion signifie qu'une personne malveillante a réussi à pouvoir lancer des commandes sur la machine dans laquelle elle s'est "introduite" sans y être autorisée. IP : (Internet Protocol) Protocole - : Protocole de réseau (de niveau 3) non fiable, c'est à dire qu'on ne sait pas si les messages envoyés sont réceptionnés. IP fait communiquer des machines grâce aux adresses IP. Datagramme IP : Voir datagramme IPSec : Protocole IP sécurisé. Ce protocole encrypte les datagrammes IP afin de garantir leur intégrité. IL s'occupe de chiffrer non seulement les données présentes amis aussi l'entête. Mandataire : Persone à qui on délègue un service, par exemple on délègue à un mandataire automobile l'achat d'une voiture. NAT : (Network Adress Translation) Ce mécanisme de translation d'adresses permet de routeur sur Internet les adresses privées d'un réseau. Voir exposé. NAT est souvent associé à PAT (translation de Port). Voir PAT NetBios : L'interface NetBios permet d'établir des communications poste à poste. C'est un progicile d'interface entre le système d'exploitation d'un ordinateur et les applications. Ce standard permet de gérer les échanges entre ordinateurs dans un réseau. OSI (modèle) : C'est un plan de base mis au point par l'iso (International Standard Organization), qui définit comment seront envoyés les paquets d'informations sur les réseaux
standards. Ce modèle est composé de 7 couches: la couche d'application, présentation, session, transport, réseau, liaison de données et physique. Il permet d'étudier les différents niveaux de la transmission séparément en faisant abstaction des autres couches et en s'appuyant sur celles-ci. RFC 1918 : (Request For Comment n 1918) C'est le texte qui spécifie les adresses privées et publiques. Les adresses privées ne sont, par normalisation, pas routées sur les routeurs de l'internet. http://www.ietf.org/rfc/rfc1918.txt?number=1918. Passerelle : C'est un équipement agissant de la couche transport à la couche application du modèle OSI. Les passerelles ont plusieurs rôles : soit convertir des données entre deux protocoles de même niveau soit lire le contenu des données qui passent par elles. les proxys ou firewalls de type passerelles applicatives utilisent ce second rôle. PAT : Port Adress Transaltion. ce mécanismé, complémentaire à la translation d'adresse permet de connecter des machines disposant d'adresses privées au réseau Internet. Par rapport à NAT, il permet de connecter plusieurs machines avec une seule adresse publique. Lorsque la translation de port est mise en oeuvre, on parle de NAT multiple. Port : Pour bien comprendre ce qu'est la notion de port, il faut comprendre la notion de socket. Une socket est un programme tournant sur une machine et pouvant communiquer avec un autre programme (une autre socket) tournant sur une autre machine. Comme il n'y a pas un seul programme communiquant fonctionnant sur une machine il est nécessaire de les différencier. Des numéros d'identification ont donc été attribué à chaque programme communiquant, c'est ce que l'on appelle le numéro de port. Ce numéro étant codé sur 16 bits il est possible de définir 65635 numéros de ports. Les premiers, de 0 à 1024 étant normalisés et attribués à des applications particulières. PPP : (Point to Point Protocole) Il s'agit d'un protocole réseau permettant à des routeurs de communiquer entre eux. PPP est ausi utilisé pour connecter un modem au routeur de son fournisseur d'accès. Proxy : Elément réseau agissant au niveau applicatif servant de mandataire lors de connexions vers un autre réseau que celui de la machine l'utilisant. Le proxy ne fonctionne que pour une application donnée. Voir Exposé Routeur : Equipement réseau de niveau 3, chargé de faire circuler les paquets de données qu'il reçoit sur une interface en les orientant correctement sur ses autres interfaces de sortie de manière à ce qu'il puisse atteindre leur adresse de destination. Pour cela le routeur gére des tables de routage associant les interfaces du routeur aux adresses de destination. Serveur d'authentification : Ce serveur permet de réaliser une authentification en interrogeant une liste d'utilisateurs autorisés à se connecter à certaines ressources.
TCP : (Transport Control Protol). Protocole - : Protocole de transport (de niveau 4) fiable, c'est à dire qu'il peut garantir l'acheminement des paquets grace à un système d'accusé de reception. TCP fait communiquer des applications grace aux numéros de port. Connexion - : Avant toute communication entre deux application par TCP il faut d'abord effectuer une connexion TCP se fait en trois passes. Le client envoie un requette au serveur, le serveru accepte ou non cette connexion et le fait savoit au client, le client confirme la connexion au serveur. Trois messages sont donc transmis. TCP/IP (système) : système de réseaux s'appuyant sur la collaboration efficace des protocoles TCP (fiable) Et IP (non fiable) et qui est utilisé comme référence dans les réseaux de type internet. TCP/IP s'inscrit dans le modéle OSI. UDP : (User Datagramme Protocole). Protocole de transport de niveau 3 non fiable mais assurant la communication entre application grace au numéro de port. VPN : (Virtual Private Network) ou Réseau privé virtuel. Il s'agit de recréer virtuellement un réseau privé à travers Internet, notamment en utilisant des techniques et des protocoles réalisant des tunnels sécurisés (par exemple Ipsec) VII) Références - La sécurité des réseaux, polycopié de cours ENIC télécom Lille 1, INT, par Maryline Maknavicius - Les réseaux, Pujolle, édition 2003, ISBN : 2212110863 - TCP/IP, Douglas Comer, 4ème version, ISBN : 2100054325 NAT : http://wapiti.enic.fr/commun/ens/peda/options/st/rio/pub/exposes/exposesrio200 -Prum/frame.htm http://usenet-fr.news.eu.org/fur/comp/reseaux/nat.html http://www.tinysoftware.com/tiny/files/online/wrpro/fr/131.htm#o131 Proxy : http://perso.wanadoo.fr/fiweb/proxyfiweb.htm http://ibelgique.ifrance.com/secur/p34.html Firewall : Exposé RIO 1997 http://www.nwinternet.com/~pchelp/security/firewalls.htm http://usenet-fr.news.eu.org/fur/comp/securite/firewall.html Merci aussi à Denis pour le code Html de ses liens ;-)