You are on page 1of 12

TP rseaux e Translation dadresse, rewalls, zonage

Martin Heusse - Pascal Sicard

Avant-propos

Les questions auxquelles il vous est demand de rpondre sont indiques de cette e e e mani`re. e Il sera tenu compte de la clart et de la concision de la rdaction des rponses lors de e e e la correction des comptes-rendus. Si vous dsirez conserver temporairement une trace de vos travaux, vous pouvez crer e e un rpertoire personnel sur le disque dur des PCs que vous utilisez. Attention, chaque e station dispose de son propre disque. Il ny a aucune garantie de conservation de vos donnes sur ces machines. e

Introduction

Les manipulations eectues jusqu` prsent vous ont conduit ` mettre en place un e a e a rseau local, que vous avez ensuite connect ` un rseau extrieur en utilisant un protocole e ea e e de niveau 3. Ce TP sinscrit dans la continuit de ces manipulations, et il vous am`nera e e a limiter louverture du rseau local au monde extrieur. ` e e Ce TP illustre galement les notions de tunnel IP scuris ou non, et montre comment e e e appliquer des traitements particuliers ` des tracs prcis, ce qui peut consister en un a e routage spcique par exemple (en utilisant les route-map des routeurs Cisco). e
0

Version 15 mars 2011

Translation dadresse ou NAT (Network Adresss Translation)

Il est frquent de se trouver limit par la plage dadresses publiques dont on dispose : e e Si lacc`s a internet se fait ` travers un modem tlphonique, ADSL ou cble e ` a ee a (via PPP), ladresse IP de la machine connecte est fournie par le fournisseur e dacc`s au moment de ltablissement de la connexion. Certains modems peuvent e e tre connects a plusieurs machines, mais les adresses IP supplmentaires sont e e ` e gnralement payantes. e e Une institution ou une entreprise qui dispose dun champs dadressage complet de classe C, par exemple, peut se sentir a ltroit dans cet espace limit de 254 addresses ` e e (environ). La translation dadresse permet a un routeur de prsenter le trac relatif au rseau ` e e quil connecte au reste du monde comme manant de (et convergeant vers) lui seul (NAT e Dynamique). Quand un paquet arrive en provenance du rseau local, il est retransmis vers e lextrieur en changeant dans son entte ladresse source en celle du routeur. Lopration e e e inverse, cest a dire la substitution de ladresse destination, est eectue pour les paquets ` e circulant dans lautre sens. Le traitement a appliquer ` chaque paquet incident est dtermin par les adresses IP ` a e e quil porte, mais aussi par les ports du protocole de transport. La translation dadresse implique donc galement souvent une translation de port UDP ou TCP. Le routeur doit e maintenir une liste des connexions en cours qui lui permet de dterminer ce quil doit faire e dun paquet (translation dadresse et routage ou bien passage au couches suprieures). e Pour que la translation dadresse puisse fonctionner, un certain nombre doprations e annexes doivent tre eectues : e e le checksum des enttes IP doit tre recalcul ; e e e le checksum des paquets TCP et UDP doit aussi tre recalcul ; e e si un protocole spcie une adresse dans le champs donnes, elle doit aussi tre e e e modie. e Bien sr il est important que les adresses IP utilises au sein du rseau local nexistent u e e pas en tant visibles ailleurs. Si ctait le cas, les machines qui les porteraient ` e e a lextrieur du rseau local ne seraient pas joignables. e e Pourquoi ? Il existe trois ensembles dadresses qui sont rserves pour lusage local : e e 10.*.*.* 172.16.*.* 172.31.*.* 192.168.*.* Les interfaces du rseau local utilis ci-dessous devront donc porter des adresses e e issues dun de ces ensembles. 2

Sur le rseau de la gure 1 la machine C forme avec le routeur lIntranet, et la machine e A reprsente l extrieur . Attention, utilisez un routeur 800, 2600 ou 4000, le NAT e e ne fonctionne pas sur les 2500 ! Construire le rseau de la gure 1., congurer les interfaces avec des adresses prives e e pour lIntranet et publiques pour lextrieur. e

Routeur

Fig. 1 Le rseau e Congurez la table de routage de C. On ne touche pas ` la table de routage de A, ni a a ` celle de B. Pourquoi ?

3.1

La translation dadresse sur les routeurs CISCO

Pour que la translation dadresse marche sur un routeur CISCO, il sut de dsigner e les interfaces mise en jeu pour le NAT. Dans configure interface il faut tout dabord congurer les deux interfaces utilises e par le NAT en entre : inside (Intranet) et et en sortie : outside(externe) : e ip nat {inside | outside} suivant linterface. Puis on dnit lensemble des adresses que lon peut utiliser comme adresse externe. e On dnit un pool dadresses (sous configure terminal) : e ip nat pool mypool 110.0.0.10 110.0.0.10 prefix-length 8 par exemple spcie e lutilisation dune seule adresse externe (110.0.0.10). Enn il faut dnir lensemble des adresses qui vont subir la translation. Pour cela e on peut par exemple utiliser une liste dacc`s qui autorise toutes les adresses du rseau e e interne. Exemple : access-list 7 permit 192.168.0.0 0.0.255.255 Et on spcie de lutiliser pour la translation dadresse : e ip nat inside source list 7 pool mypool overload, o` 7 est la liste dacc`s dnie u e e prcdemment. Le mot overload signie que lon va utiliser la mme adresse IP externe e e e pour plusieurs stations internes. 3

Une alternative ` cette ligne de commande est de ne pas utiliser de pool, mais de a simplement spcier une interface externe : e ip nat inside source list 7 interface ethernet 0/0 overload Dans ce cas il est inutile de crer un pool. e

3.2

Ca marche !

Sans NAT, si C ping A, les ECHO RESPONSEs de A natteignent pas C (pas de route). Mettre en route la translation dadresse. Capturez des paquets en utilisant ou non un pool dadresses.

On peut utiliser socklab pour gnrer des paquets TCP ou UDP. e e Observez les paquets circulant sur les deux rseaux avec Wireshark, et rsumez les e e oprations eectues pour la translation dadresse. e e Pour vous aider regardez la table de translation du NAT par la commande show ip nat translations. ` A partir de quelle information le routeur identie-t-il les connexions TCP (ou les ots UDP) de faon ` retransmettre les paquets correspondant vers la bonne destination c a au sein du rseau local ? e Quelle information permet de translater correctement les paquets mis et reus par e c ping ? (il ny a pas de port en ICMP !) Comment le routeur peut-il savoir quun ECHO RESPONSE portant son adresse comme destination ne lui est en fait pas destin ? e

4
4.1

Mise en uvre dun rewall


Remarques prliminaires e

Lutilisation de la translation dadresse interdit tout tablissement de connexion dee puis lextrieur. Par exemple, il nest pas possible davoir un serveur web situ ` lintrieur e ea e du rseau local. Pour des raisons de scurit ou pour des raisons pratiques, il est galement e e e e courant de ne pas le faire tourner sur le routeur lui-mme. e Plusieurs solutions sont possibles alors : Mettre en place du NAT Static pour certaines machines de lIntranet. 4

Mettre en place du Port Forwarding sur le routeur NAT. (voir le cours) Disposer dadresses publiques supplmentaires et construire un deuxi`me souse e rseau visible de lextrieur (zone dmilitarise : DMZ). Dans ce TP nous ne mete e e e trons pas en place cette DMZ et conservons un seul routeur ltrant en entre de e lIntranet. La r`gle gnrale (scuritaire) pour la mise en uvre dun rewall est de commencer e e e e par bloquer tout, pour ensuite laisser passer exclusivement les paquets identis comme e acceptables. Cette approche garantit galement labsence de faille temporaire au e moment o` lon change les r`gles de ltrage. u e

4.2

access-list

Mmento sur les listes de restriction dacc`s de CISCO. e e La ligne : access-list 101 permit tcp 0.0.0.0 255.255.255.255 129.88.38.1 0.0.0.0 eq 80 autorise le passage des paquets TCP a destination de la station 129.88.38.1 sur ` le port 80 ; quelque soit ladresse source et le port source (de lmetteur). Ici les e bits dsigns par les masques sont les bits sans importance (` loppos de ce qui e e a e se passe pour les masques de sous-rseau) ; 0.0.0.0 255.255.255.255 dsigne donc e e eectivement une adresse quelconque. On peut aussi utiliser les mots cls any host. e access-list 101 deny ip any any interdit le passage de tous les paquets. Cette ligne termine en gnral les access-lists, an de bloquer tous les paquets non explie e citement dcrits plus haut dans la mme access-list. e e Pour mettre en service cette liste dacc`s 101, il faut congurer1 linterface sur lae quelle le ltrage devra prendre place. Sous configure interface X : ip access-group 101 in. Attention le in spcie que le ltrage sapplique aux paquets entrant sur linterface e (depuis le rseau avant la dcision de routage) On peut aussi eectuer du ltrage e e en sortie (vers le rseau, apr`s la dcision de routage). e e e Remarque : Ce type de ltrage (un seul sens) permet dans certains cas de ne pas prciser des r`gles dautorisation pour les paquets circulant dans lautre sens. e e

Remarque : Le ltrage peut tre fait avant ou apr`s le NAT suivant linterface sur e e laquelle on le met en place.

Japprends le franais en TP : congurer est un anglicisme, ce mot nest pas dans le dictionnaire. c Par contre conguration y est.

4.3

Manipulations

Autoriser seulement le trac depuis lIntranet vers un serveur Web extrieur. e Comme on ne dispose pas de serveur Web, vous pouvez le simuler par une socket ` a laide de socklab sur le port de votre choix. Vriez le ltrage. e En oubliant les contraintes lies au NAT, est il possible dinitier une connexion depuis e lextrieur de lIntranet avec vos r`gles ? Pourquoi ? e e Comment ltrer toute les demandes de connexions TCP depuis lextrieur quels que e soient les numros de port en jeu ? e

Proxy transparent

Il est possible de diriger ` linsu des utilisateurs des paquets vers une socket locale a au serveur, ou sur une autre machine. Cela permet de forcer par exemple le trac web a passer par un proxy, sans que lutilisateur ne puisse sen apercevoir. La mise en place ` dun proxy peut avoir deux raisons. La premi`re est la construction dun cache local an e de limiter le trac rseau pour des documents susceptibles dtre consults de nombreuses e e e fois. La deuxi`me est le ltrage plus n du trac avec des motivations plus ou moins e avouables pour un protocole donn (le web, en gnral). e e e Nous supposons que le proxy est situ sur la machine A (Cela pourrait tre dans la e e DMZ). Mettre en place la redirection des paquets sur le routeur vers le proxy quelle que soit ladresse destination. Voici un exemple de redirection a laide de route-map. ` interface Ethernet0/1 ip address 192.168.0.254 255.255.255.0 no ip directed-broadcast ip policy route-map proxytrans ! sur linterface 0/1 les paquets seront rediriger (router) suivant le ! route-map appele proxytrans access-list 101 permit ip 192.168.0.0 0.0.0.255 any route-map proxytrans permit 10 match ip address 101 ! Pour toute les adresses verifiant lacces list 101 set ip next-hop 55.1.1.1 ! le paquet est envoye a 55.1.1.1 `

Pour tester la redirection, on pourra faire un ping (ou autre a laide de Socklab) depuis ` une machine de lIntranet vers une adresse quelconque et vrier que les paquets arrivent e toujours sur A. 6

Quand ce trac arrive sur cette station proxy, il se prsente comme ntant pas destin e e e a cette derni`re (la destination IP nest pas ladresse locale videmment). Il faudrait donc ` e e en plus accepter ces paquets au niveau IP et les rediriger au niveau TCP sur le proxy. Faire une recherche sur le WEB et expliquez comment cela peut se faire sous free-BSD ou sous Linux (du ct de ipnat et rdr oe

Sparation des tracs e

Le dveloppement de lutilisation des commutateurs en remplacement des rpteurs e e e contribue grandement a la scurisation des rseau, par simple connement des tracs. ` e e Lutilisation de LANs distincts ou de VLANs permet dobtenir une isolation complte e entre dirents groupes dutilisateurs, en forant les paquets mis dune entit adminise c e e trative vers une autre ` passer par un routeur et par consquent par une liste dacc`s ; a e e mme si ces paquets circulent sur un cble unique. e a Cependant, dans certains cas, il est dicile de se garder des observateurs indiscrets. Cest ce qui se passe pour les rseaux sans ls qui sont par essence indiscrets. Des solutions e de bas niveau ont t prvues comme par exemple sur les rseaux sans l 802.11b : ee e e Wired Equivalent Privacy (WEP) mais elles sont gnralement considres comme e e ee insusantes.

7
7.1

Scurit par cryptographie e e


SSH

Ssh permet de se loguer ou dexcuter une commande sur une station distante. e Par rapport aux commandes classiques comme rlogin ou rsh, ssh assure des communications scurises (cf. man ssh sur un FreeBSD pour plus de dtails). Toute une famille e e e de programmes est disponible avec ssh : scp qui permet de copier des chiers vers une station distante ; sftp : pas la peine de vous faire un dessin ; sshd : idem. Ssh fait plus que simplement fournir un shell ` lutilisateur. Il peut prendre en charge a la translation scurise de session X, ou translater un port dune station ` une autre (port e e a forwarding). Mettre en place un tunnel SSH entre deux machines. Tester lutilisation de ce tunnel et la translation de port avec socklab. Capturer des paquets (Wireshark). Voici un exemple de lutilisation de ftp a travers un tunnel ssh. Tunnel entre la ma` chine locale et la machine dadresse 192.0.0.1 : 7

/usr/bin/ssh -l guest -N -L 2100 :192.0.0.1 :21 192.0.0.1 -N Guest est le compte a utiliser sur la machine distante. Attention on ne peut pas utiliser ` le compte root avec ssh (mesure de scurit). e e Puis pour eectuer le ftp sur la machine locale : ftp localhost 2100 Les paquets envoys sur le port 2100 de la machine locale arriveront ` travers le tunnel e a ssh sur le port 21 de la machine 192.0.0.1

7.2

SSL

La librairie Ssl donne au programmeur la possibilit de crer des connexions (soe e ckets) scurises. Du point de vue du programmeur, il faut dabord crer une socket e e e classique, puis lassocier a une entit ssl (cf. SSL set fd()). Ensuite, la connexion est ` e initie (SSL connect() et SSL accept()) puis on peut lutiliser avec SSL write() et e SSL read(). La scurit oerte par la famille doutils OpenSSH/OpenSSL est tout a fait satisfaie e ` sante dans les contextes qui sont les leurs. Cependant, ce type de scurit fourni au e e niveau application demande ` lutilisateur de savoir ce quil fait. Par exemple ssh a est systmatiquement utilis pour ladministration a distance, et ssl permet de come e ` muniquer avec un bon degr de condentialit avec un serveur SMTP. Mais pour une e e scurisation globale dans un contexte sensible (rseau sans l, connexion depuis un LAN e e tranger ) lutilisation de tunnels IPSec (galement appels VPN) est la solution a e e e ` privilgier. e

7.3

Tunnels IPSec

En-tte IP original

En-tte ESP

Donnes niv. 4 originales

ESP bourrage

Auth.

Cryptographie Authentication

Fig. 2 Paquet IPSec (ESP) IPSec permet dassurer au niveau IP ` la fois le brouillage du contenu des paquets a (condentialit), et leur authentication. Lauthentication consiste (simplement ?) ` e a ajouter une signature au paquet. Lutilisation de cette fonctionnalit uniquement est e 8

le mode AH de IPSec. Le mode ESP garantit en plus le cryptage du trac, et la forme de paquets envoys est dtaill en gure 2 e e e

En-tte IP (tunnel)

En-tte ESP

En-tte IP original

Donnes niv. 4 originales

ESP bourrage

Auth.

Cryptographie Authentication

Fig. 3 Paquet IPSec/GRE/IP IPSec est frquemment utilis pour scuris un tunnel construit entre deux sites. On e e e e se retrouve alors avec des paquets ayant la forme donne en gure 3. Ainsi il nest pas e possible a un observateur externe de savoir mme quelles sont les stations qui schangent ` e e des paquets a travers le tunnel. `

7.3.1

IPSec sur FreeBSD

A FAIRE seulement si le temps vous le permet.

Supposons que les machines A et C acc`dent maintenant ` Internet grce a une e a a ` adresse publique. Nous allons utiliser IpSec entre les deux machines pour crypter et/ou authentier leurs changes. e

7.3.2

Cration dun tunnel e

Il faut pour cela congurer les interfaces gif a chaque extrmit. Ces interfaces vir` e e tuelles doivent tre crer et portent une adresse dirente des adresses des interfaces e e e relles (par exemple adresse prive). Les paquets routs vers ces interfaces seront autoe e e matiquement r-encapsuler a laide dune deuxi`me entte IP portant les adresses des e ` e e bouts du tunnels. Ils sont ensuite mis sur les interfaces portants les adresses des bouts e de tunnels (forcment publiques). A larrive a lautre bout du tunnel, la deuxi`me entte e e ` e e IP est enleve, le processus de routage reprend sur la deuxi`me entte. e e e

Comment crer un tunnel sous FreeBSD ? Exemple de cration dune interface e e virtuelle associe ` un tunnel (voir gure 4) : e a

ifconfig gif0 create ifconfig gif0 tunnel 55.0.0.1 66.0.0.1 9

ifconfig gif0 192.168.0.2/24 192.168.0.1


Interface relle 0 55.0.0.1
A

Internet

Interface tunnel gif0 192.168.0.2/24

Tunnel

Interface tunnel gif0 192.168.0.1/24


C

Interface relle 0 66.0.0.1

Fig. 4 Tunnel de bout en bout Crer un tunnel entre les machines A et C en utilisant une adresse publique pour e les bouts du tunnel. Observer la table de routage des machines. Capturer des paquets transitant dans le tunnel. 7.3.3 Scurisation du tunnel e

Sous Free-BSD, la premi`re chose a faire est de prciser au noyau quels sont les pae ` e quets qui doivent tre encods. La table SPD (Security Policy Database) contient ces e e informations, et la commande setkey permet de la grer. setkey permet aussi dassoe cier manuellement des cls dencodage aux communications spcies, les informations e e e correspondantes apparaissant dans la table SAD (Security Association Database). setkey -F setkey -FP vident les tables SPD ET SAD. On peut ensuite les remplir en leur passant un chier de commandes (setkey -f le). Par exemple, la ligne : "spdadd192.168.0.2/32 192.168.0.1/32 any -P out ipsec esp/tunnel/55.0.0.1-66.0.0.1/require ; spcie dencoder tous les tracs transitant par le tunnel dont les adresses internes e sont 192.168.0.1 et 192.168.0.2, et dont les adresses externes sont 55.0.0.1 et 66.0.0.1. Il faut donner une directive semblable an de dsigner quels paquets incidents doivent e tre dcods. e e e 10

Remarque on pourrait ici aussi utiliser le mode Transport de IPSEC, il sut alors de donner :

spdadd AdrPubSource/32 AdrPubDest/32 any -P out ipsec esp/transport/AdrPubSource-AdrPubDest /require

Remarque2 On pourrait de la mme faon (comme cela est fait ` lUFR-IMAG) mettre e c a en place un acc`s scuris ` lensemble dun Intranet en ralisant un tunnel avec le routeur e e ea e dentre de lIntranet. On devrait alors crer un tunnel entre la machine extrieur et le e e e routeur dentre de lIntranet. Cest ce qui est fait ` laide du client VPN que lon utilise e a habituellement. La ligne add adrsrc adrdst esp spi -E ealgo cl e permet dassocier une cl a lencodage du trac vis. ealgo est lalgorithme dencryption e` e utilis, cl est la cl correspondante. (cf. man setkey.) Spi est un nombre suprieur ` e e e e a 255 par exemple 0x10003. Voici un exemple de conguration :

spdadd 192.168.0.2/24 192.168.0.1/24 any -P out ipsec esp/transport/55.0.0.1-66.0.0.1/require; spdadd 192.168.0.1/24 192.168.0.2/24 any -P out ipsec esp/tunnel/66.0.0.1-55.0.0.1/require; add 66.0.0.1 55.0.0.1 esp 0x10003 -E des-cbc "12345678"; add 55.0.0.1 66.0.0.1 esp 0x10003 -E des-cbc "12345678"; On peut utiliser aussi un algorithme dauthentication par exemple :

spdadd 192.168.0.0/24 192.168.0.0/24 any -P in ipsec ah/tunnel/172.16.0.2-172.16.0.1/require ; add 55.0.0.1 66.0.0.1 ah 123456 -m any -A hmac-md5 "this is the test" ;

Remarque FreeBSD utilise une encapsulation IP dans IP plutt que GRE (Generic o Routine Encapsulation). Crypter et/ou authentier les tracs qui transitent par le tunnel prcdemment cr. e e ee Capturer des paquets dans les deux cas : authentication et cryptage (AH et ESP). ` Commentaires. A quoi sert lindex spi ? Est il possible dutiliser un tel Tunnel en utilisant ` lune des extrmits une adresse a e e prive translate par un routeur intermdiaire. Pourquoi ? e e e 11

Remarque : Ces tunnels IPSec utilisent une cl statique. Ce qui pose des probl`mes e e de scurit sur le long terme. Il faudrait avoir recours a un protocole (et a des dmons) e e ` ` e dchange de cl IKE (Internet key Echange). e e

12

You might also like