ACL : filtrer le trafic sur un routeur
Tu sais lire une ACL ligne par ligne, dire si un paquet passe, choisir entre ACL standard et étendue, l'écrire, l'appliquer sur la bonne interface dans le bon sens et la placer au bon endroit du réseau.
Mis à jour le
À recouper avec le cours. Cette leçon a été écrite à partir du plan du chapitre, avant relecture avec les supports. En cas de doute, le cours fait foi.
Pourquoi on voit ça
Par défaut, un routeur fait passer tout ce qu’il sait router. Ce n’est pas toujours ce qu’on veut : les PC des visiteurs n’ont pas à ouvrir une session d’administration sur les serveurs.
Une ACL (Access Control List, liste de contrôle d’accès) est une liste de règles qui dit au routeur quels paquets laisser passer et lesquels jeter. C’est le filtrage demandé dans le projet (DNS, Web, Telnet), et c’est exactement la logique que tu retrouveras dans les pare-feu et les groupes de sécurité du cloud.
Comment le routeur lit une ACL
Une ACL est une suite de lignes permit (autoriser) ou deny (refuser). Pour chaque paquet :
- Le routeur lit les lignes de haut en bas.
- À la première ligne qui correspond, il applique l’action et s’arrête. Les lignes suivantes ne sont pas lues.
- Si aucune ligne ne correspond, le paquet est refusé.
Ce dernier point est le piège numéro un : toute ACL se termine par un deny any implicite. Il n’est pas écrit, mais il est là.
Deux conséquences :
- L’ordre compte. Les règles précises d’abord, les règles générales ensuite.
- Une ACL qui ne contient que des
denybloque tout. Il faut au moins unpermit.
L’image : un vigile avec une liste. Il la lit dans l’ordre et s’arrête au premier nom qui correspond. Si tu n’es pas sur la liste, tu n’entres pas.
Standard ou étendue
| ACL standard | ACL étendue | |
|---|---|---|
| Numéro | 1 à 99 | 100 à 199 |
| Ce qu’elle regarde | L’adresse source seulement | Source, destination, protocole, port |
| Exemple | « Bloque tout ce qui vient de ce réseau » | « Bloque Telnet de ce réseau vers ce serveur » |
C’est le numéro qui dit au routeur de quel type d’ACL il s’agit.
Écrire une ACL
Les adresses s’écrivent avec un masque générique (wildcard mask) : 255.255.255.255 moins le masque. Pour un /24 : 0.0.0.255. Deux raccourcis :
any: n’importe quelle adresse ;host 192.168.1.10: cette adresse précise, et elle seule.
ACL standard
R1(config)# access-list 10 permit 192.168.1.0 0.0.0.255
« Autorise ce qui vient de 192.168.1.0/24. » Tout le reste est refusé par le deny any implicite.
ACL étendue
L’ordre des mots est toujours le même :
access-list <numéro> <permit|deny> <protocole> <source> <destination> eq <port>
Le protocole est tcp, udp, ou ip pour dire « tout ». Le port est celui de destination ; eq veut dire « égal à ».
R1(config)# access-list 110 deny tcp 192.168.1.0 0.0.0.255 any eq 23
R1(config)# access-list 110 permit ip any any
Ligne 1 : refuse Telnet (TCP 23) de 192.168.1.0/24 vers n’importe où. Ligne 2 : autorise tout le reste. Sans cette seconde ligne, le deny any implicite bloquerait tout.
Les ports à connaître
| Service | Protocole | Port |
|---|---|---|
| SSH | TCP | 22 |
| Telnet | TCP | 23 |
| DNS | UDP | 53 |
| HTTP | TCP | 80 |
| HTTPS | TCP | 443 |
Appliquer une ACL
Une ACL écrite mais pas appliquée ne filtre rien. On l’accroche à une interface, avec un sens :
R1(config)# interface GigabitEthernet0/0
R1(config-if)# ip access-group 110 in
Le sens se lit du point de vue du routeur :
in: les paquets qui entrent dans le routeur par cette interface ;out: les paquets qui sortent du routeur par cette interface.
Où placer l’ACL
- ACL standard : le plus près possible de la destination. Elle ne regarde que la source. Placée trop tôt, elle couperait cette source de tous les réseaux, pas seulement de celui que tu veux protéger.
- ACL étendue : le plus près possible de la source. Elle est précise, donc elle ne bloque que ce qu’il faut. Autant jeter le paquet tout de suite plutôt que de lui faire traverser le réseau pour rien.
Deux exemples
Bloquer Telnet, laisser le reste
C’est l’ACL 110 ci-dessus, appliquée en in sur l’interface côté PC. Telnet est le premier service à filtrer : il fait circuler les mots de passe en clair.
Autoriser seulement le Web et le DNS
R1(config)# access-list 120 permit tcp 192.168.1.0 0.0.0.255 any eq 80
R1(config)# access-list 120 permit tcp 192.168.1.0 0.0.0.255 any eq 443
R1(config)# access-list 120 permit udp 192.168.1.0 0.0.0.255 any eq 53
R1(config)# interface GigabitEthernet0/0
R1(config-if)# ip access-group 120 in
Ici, pas de permit ip any any : on veut que le deny any implicite bloque le reste (Telnet, ping…). Remarque la ligne DNS : sans elle, les PC ne pourraient plus traduire les noms de sites, et le Web ne marcherait pas non plus.
Vérifier
R1# show access-lists
Extended IP access list 110
10 deny tcp 192.168.1.0 0.0.0.255 any eq telnet (4 match(es))
20 permit ip any any (25 match(es))
- Le routeur numérote les lignes (10, 20…) et remplace certains ports par leur nom (
telnetpour 23,wwwpour 80). match(es)compte les paquets qui ont correspondu à chaque ligne. Lance un Telnet, puis vérifie que le compteur dudenyaugmente : c’est la preuve que ton ACL fait son travail.
À retenir
- Une ACL se lit de haut en bas ; la première ligne qui correspond s’applique, puis la lecture s’arrête. À la fin : un
deny anyimplicite. - Standard : 1 à 99, source seulement. Étendue : 100 à 199, source, destination, protocole et port.
- Les adresses s’écrivent avec un masque générique ;
anyethostsont des raccourcis. ip access-group <numéro> in|outsur l’interface : sans ça, l’ACL ne filtre rien.- Placement : standard près de la destination, étendue près de la source.
- Ports : SSH 22, Telnet 23, DNS 53, HTTP 80, HTTPS 443.
Entraînement
12 questions, dont 3 à compléter. Tu réponds, on passe à la suivante. La note arrive à la fin.
Ta note
Cartes · 8
Réviser les cartes ici
Pourquoi