• Aucun résultat trouvé

Firewalls : une introduction informelle

Les politiques de sécurité

dans les réseaux

informa-tiques

Sommaire

5.1 Firewalls : une introduction informelle . . . 107 5.2 Spécification formelle de firewalls . . . 111 5.2.1 Vocabulaire et définition . . . 111 5.2.2 Sémantique basée sur les automates d’arbres . . . 113 5.3 Applications . . . 118 5.3.1 Propriétés . . . 119 5.3.2 Analyse structurelle . . . 120 5.3.3 Analyse par requêtage . . . 125 5.4 Composition de firewalls . . . 126 5.4.1 Topologies de réseaux . . . 126 5.4.2 Politiques de sécurité réseau . . . 128 5.4.3 Stratégie de routage . . . 130 5.4.4 Sémantique par réécriture . . . 131 5.4.5 Propriétés et analyse . . . 140 5.5 Travaux reliés . . . 145 5.6 Synthèse . . . 146

A

près la seconde guerre mondiale, l’informatique restait l’apanage de grandes entreprises qui pouvaient se permettre l’acquisition de quelques ordinateurs. La communication de station à station s’effectuait alors au moyen de supports amovibles. La taille et la complexité des organisations ayant crû significativement,

la volonté de faciliter la communication au sein d’une même structure s’est vite res-sentie, entraînant la nécessité d’envisager un autre moyen de communication plus efficace. C’est ainsi que le premier mode de communication dit de « poste-à-poste » vit le jour dans les années soixante grâce aux recherches menées par le consortium DIX (Digital, Intel, Xerox). Il devenait alors possible de communiquer directement avec un ordinateur central (mainframe) à partir de sa station de travail. Ce n’est que vers la fin de la décénnie et à l’aube des années soixante-dix que le développement des véritables réseaux locaux (ou LAN1) a commencé, avec l’idée de ne plus néces-sairement passer par un ordinateur principal. La décentralisation de l’information s’amorçait alors, tandis que l’idée d’une communication directe vers le monde exté-rieur faisait son chemin. C’est en 1969 que le projet ARPA initié par le département de la défense des Etats-Unis s’est donné pour objectif de relier quatre centres univer-sitaires (l’université de Californie à Los Angeles, l’institut de recherche de Stanford, l’université de Californie à Santa Barbara et l’université de l’Utah). Le réseau ainsi créé évolua jusqu’à intégrer vingt-trois centres universitaires en 1971 puis plus de cent en 1977. Les réseaux étaient nés, les possibilités de communications décuplées et par la même la nécessité de protéger les accès à des machines (et des informations) désormais vulnérables.

C’est le 2 novembre 1988, onze années plus tard, que se produisit l’inévitable. Dans un communiqué de Peter Yee, chercheur à la NASA, adressé à la commu-nauté scientifique travaillant sur l’Internet, on pouvait lire : « Nous sommes actuel-lement victimes d’une attaque d’un virus internet ! Il a frappé Berkeley, UC San Diego, Lawrence Livermore, Stanford, ainsi que le centre de recherche de la NASA » [Avolio, 1999]. La communauté scientifique et technique à l’initiative de cette for-midable avancée technologique qu’est l’Internet réalisa alors qu’en permettant à des individus de communiquer librement, ils permettaient aussi à des individus malinten-tionnés de s’introduire dans leurs systèmes. On avait troqué un environnement sûr et confiné pour un environnement ouvert et potentiellement hostile. D’autres attaques se succédèrent, faisant les choux gras de la presse et annonçant la nécessité absolue de sécuriser les réseaux de communication. Les politiques de sécurité s’imposèrent alors et les mécanismes pour les mettre en oeuvre, les fameux firewalls, apparurent. Développer une politique de sécurité, nous l’avons vu, n’est pas chose aisée mais est une étape indispendable pour se prémunir des attaques d’individus malintention-nés. Mettre en oeuvre une politique de sécurité consiste à garantir l’application des règles de la politique par les mécanismes opérationnels fournis par le système. Les firewalls (ou pare-feux) sont présentés depuis toujours comme le principal moyen de mettre en application une politique de sécurité dans un réseau informatique. Nous proposons dans ce chapitre un cadre pour analyser formellement la mise en oeuvre de politiques de sécurité réseau exprimées comme des combinaisons de firewalls. Dans un premier temps, nous présenterons informellement le fonctionnement des firewalls. Nous poursuivrons ensuite en caractérisant formellement chacun des éléments consti-tutifs de ces derniers. Nous montrerons en quoi cette caractérisation permet de dé-montrer la décidabilité d’une large classe de problèmes. Nous analyserons ensuite la composition de firewalls. Une partie des travaux présentés dans ce chapitre a été publiée dans [Bourdier, 2011b] et [Bourdier and Cirstea, 2011].

1. Local Area Network 106

5.1. FIREWALLS : UNE INTRODUCTION INFORMELLE

5.1 Firewalls : une introduction informelle

Dans cette section, nous proposons d’envisager les notions nécessaires à la com-préhension de ce chapitre en dehors de considérations trop techniques, garantissant ainsi une présentation simple et compréhensible des non spécialistes. Si l’exposé de ces éléments est réalisé dans un souci de simplification mais aussi de fidélité à la réalité, il n’échappera pas aux spécialistes de la question qu’un certain nombre de subtilités sont passées sous silence afin d’éviter toute digression nuisant au dévelop-pement qui nous intéresse.

Dans la suite, nous désignerons par « hôte » toute entité connectée au réseau. Les notions de sujets, d’objets et d’action n’auront pas cours dans un premier temps. Une interprétation de ces concepts sera donnée dans la dernière section de ce chapitre. Dans un réseau de communication, lorsqu’un hôte souhaite transmettre un message à un autre hôte, les données du message sont découpées et encapsulées dans une séquence de paquets. Chaque paquet contient les données à transmettre ainsi que les informations nécessaires pour acheminer le paquet jusqu’à son destinataire. L’en-semble de ces informations supplémentaires est appelé en-tête.

L’objectif des firewalls est de contrôler et de filtrer le traffic transitant entre différents sous-réseaux. Rappelons qu’un sous-réseau est une subdivision logique du réseau caractérisé par un ensemble d’adresses IP. Les adresses (IP) sont un moyen d’identifier les éléments connectés au réseau et ne peuvent posséder au maximum qu’une occurence au sein d’un même sous-réseau. Les adresses (IPv42) sont des séquences de 32 bits scindées en deux parties : un préfixe identifiant le sous-réseau auquel appartient l’hôte et un suffixe, ou « numéro d’hôte », permettant d’identifier un hôte au sein de son sous-réseau.

Un firewall est donc une application qui contrôle la transmission des paquets qui le traverse à partir des deux fonctionnalités suivantes :

le filtrage de paquet, qui consiste à inspecter l’en-tête de chaque paquet pour soit le laisser poursuivre son chemin, soit le détruire et

la traduction d’adresse réseau, qui consiste à modifier dans l’en-tête les infor-mations relatives aux adresses de l’émetteur et du destinataire du paquet. Ainsi, les firewalls inspectent les paquets entrants et acceptent ou refusent de les transmettre en basant leur décision sur une liste de règles. Chaque règle associe un motif décrivant un ensemble de paquets à une décision particulière. Les critères les plus souvent utilisés lors de l’inspection des paquets sont [Conoboy and Fictner, 2002,

Russell, 2002] l’adresse de l’émetteur du paquet (appelée adresse source), celle de son destinataire (appelée adresse de destination), le protocole utilisé et, lorsque le pro-tocole est TCP ou UDP, un numéro de port. Le processus de traduction d’adresses, ou NAT (pour network address translation), effectue une réécriture de l’adresse source du paquet avant le processus de filtrage (cette partie du processus est ap-pelée DNAT3, ou pré-routage) et, à l’issue du filtrage, réécrit l’adresse de destina-tion du paquet (cette partie du processus est appellée SNAT4, ou post-routage). Le 2. IPv4 est la version d’Internet Protocol actuellement utilisée dont un des objectifs est de fournir un service d’adressage unique pour l’ensemble des éléments connectés en réseau.

3. DNAT : Destination Network Address Translation 4. SNAT : Source Network Address Translation

diagramme suivant résume le fonctionnement général d’un firewall :

À chaque étape (1, 2 and 3), le paquet entrant est comparé à une liste de règles et l’action (traduire l’adresse réseau de destination, accepter ou refuser la transmis-sion et traduire l’adresse réseau source) associée à la première règle reconnaissant le paquet est effectuée. Il existe plusieurs types de traduction d’adresses réseau. Nous nous focalisons sur les types de traductions suivantes :

Le processus de traduction le plus simple est de type one-to-one (un pour un) aussi appelé NAT basique [Srisuresh and Holdrege, 1999] et consiste à associer statiquement une adresse IP avec une autre adresse IP :

         ip1↔ ip0 1 ip2↔ ip0 2 ... ipn↔ ip0 n

Une autre méthode (masquerading) consiste à associer un ensemble d’adresses IP avec une seule autre adresse IP. Dans ce cas, ce sont les numéros de ports qui permettent d’identifier la traduction en place : le numéro du port source va être modifié dynamiquement et servira à identifier l’adresse IP d’origine. On ne connaît donc pas statiquement les associations qui seront effectuées, le port étant choisi dynamiquement dans un intervalle donné.

(ip? ∈ [ip1, ipn], port?)↔ (ip0, port0?)

ip? ∈ [ip1, ipn] signifie que ip? est une adresse IP quelconque appartenant à l’intervalle [ip1, ipn].

Les techniques appelées port forwarding et port mapping, également de type one-to-one, consistent à rediriger un paquet vers une machine précise en fonc-tion du port de destinafonc-tion de ce paquet. Toutes les informafonc-tions sont connues 108

5.1. FIREWALLS : UNE INTRODUCTION INFORMELLE

statiquement :

(ip, port)↔ (ip0, port0) (dans le cas du port forwarding, port = port0)

Notation CIDR

La notation CIDR

[Fuller and Li, 2006] est une forme d’écriture des adresses de sous-réseau sous la forme d’un couple séparé par un « slash » dont le premier élément indique l’adresse en no-tation décimale pointée de la plus petite adresse IP appartenant au sous-réseau et le second indique le nombre de bits de l’adresse dédiés au préfixe du sous-réseau. Ainsi, 192.168.1.1/25 signifie que les 25 pre-miers bits de l’adresse correspondent à l’adresse du sous-réseau, et que les 32-25=7 bits restant identifient l’adresse de l’ordinateur hôte à l’in-térieur du sous-réseau. On utilisera également la notation ip:pt pour représenter le couple composé de l’adresse IP ip et du port pt.

Dans la suite, nous supposerons que seul le protocole TCP est utilisé et ne considè-rerons que les champs relatifs aux adresses et aux ports. TCP est un protocole dit « orienté connection ». Cela signifie que lorsqu’un paquet est envoyé, il comporte une information indiquant s’il est le premier paquet d’une communication donnée ou s’il fait suite à un paquet préalablement reçu. Exemple :

192.168.1.1 1.2.3.4 src : 192.168.1.1:200 dest : 1.2.3.4:80 flag : SYN src : 1.2.3.4:80 dest : 192.168.1.1:200 flag : ACK 1 2

L’hôte dont l’adresse est 192.168.1.1 a initié une communication avec l’hôte dont l’adresse est 1.2.3.4. Le paquet correspondant contient alors le flag SYN (pour SYN-chronisation). Les paquets faisant suite à ce premier échange contiendront tous le flag ACK (ACKnowledgment). Dans la suite, nous ne préciserons pas les drapeaux de connection (SYN et ACK) et considèrerons que dans le cas des règles de filtrage ne sont spécifiées que les autorisations correspondant à des initialisations de connection. Les paquets « réponses » correspondants seront implicitement acceptés. Dans le cas de la traduction d’adresse, les règles de masquerading déterminent à l’initialisation de la connection le port qui sera utilisé pour identifier l’hôte dont l’adresse est « ca-chée » et les paquets faisant suite à cette initialisation utiliseront la correspondance ainsi établie. Nous considérerons également que l’intervalle de ports utilisé pour le masquerading correpond aux ports dont l’écriture binaire commence par 11 (puisque les ports sont définis par 16 bits, il s’agit de l’intervalle [49152, 65535], parfois ap-pelé intervalle des ports dynamiques). En somme, les règles de filtrage sont supposées s’appliquer aux paquets contenant le drapeau SYN et est supposée présente une règle par défaut pour les paquets contenant le drapeau ACK. Les règles SNAT correspon-dant à une étape de masquerading seront supposées être associées au drapeau SYN et leurs homologues DNAT seront implicitement spécifiés et associés au drapeau ACK (et ne s’appliquent donc pas pour un paquet initialisant une connection).

Exemple 5.1. Considérons une architecture de réseau simple comportant uniquement un réseau interne séparé d’Internet par un firewall. La plage d’adresses IP attribuée au réseau interne est 192.168.1.1/25 (notation CIDR). Les adresses des hôtes du réseau interne ne doivent pas être visibles sur In-ternet, c’est pourquoi l’on dote le firewall de règles de traduction d’adresses faisant la correspondance entre les adresses « internes » 192.168.1.1/25 et leur adresse publique 152.81.13.1 (masquerading). La politique de filtrage choisie consiste à permettre aux paquets provenant d’Internet d’accéder au serveur

WEB uniquement. Pour cela, on redirige les requêtes à destination du port 80 du firewall (152.81.13.1) sur le port 80 du serveur (192.168.1.15). Les autres pa-quets provenant d’Internet sont jetés. Les hôtes du réseau interne sont, quant à eux, uniquement autorisés à consulter leurs emails avec le protocole SMTP (le protocole de communication SMTP est réalisé par l’utilisation du port 25 du protocole de transport TCP). Internet Réseau interne : 192.168.1.1/25 Firewall

...

Serveur web 192.168.1.15

Les règles de filtrage du firewall sont donc les suivantes :

IP address src IP address dest Port src Port dst Decision

∗ 192.168.1.15 ∗ 80 accept

192.168.1.15 ∗ 80 ∗ accept

192.168.1.1/25 ∗ ∗ 25 accept

∗ ∗ ∗ ∗ drop

et celles de traduction d’adresses sont les suivantes :

SNAT/DNAT IP Address Port new IP Address New Port

SNAT 192.168.1.15 80 152.81.13.1 80

SNAT 192.168.1.1/25 ∗ 152.81.13.1 dyn.

DNAT 152.81.13.1 80 192.168.1.15 80

Ainsi, un paquet en provenance d’un hôte identifié sur internet par l’adresse IP 252.45.32.114 à destination du port 80 de l’adresse 152.81.13.1 sera traduit (DNAT) en paquet à destination de 192.168.1.15 (port 80) et sera ainsi délivré à son destinataire (première règle de filtrage). En revanche, si ce même paquet