ACL standard et étendue IPv4
Définition
Une access-list IPv4 est une séquence de règles permit et deny évaluée paquet par paquet. Une ACL standard (numéros 1 à 99, 1300 à 1999) ne regarde que l'adresse IP source; une ACL étendue (100 à 199, 2000 à 2699) filtre aussi la destination, le protocole et les ports. Elles ne bloquent pas le trafic "dans le vide": elles s'appliquent sur une interface, en entrée ou en sortie, pour un protocole.
Contexte
Le thème 5.6 du blueprint 200-301 demande de configurer et vérifier les ACL. L'examen teste: le bon périmètre d'une standard et d'une étendue, le placement correct, l'implicit deny final, l'ordre top-down, le wildcard inversé, et la présence obligatoire du permit de management avant l'ajout d'un deny ip any any sur une ligne VTY. Une question classique fait tomber le candidat qui applique une standard à l'interface du serveur au lieu de celle de l'utilisateur.
Les deux familles
| Critère | Standard | Étendue |
|---|---|---|
| Numéros | 1 à 99, 1300 à 1999 | 100 à 199, 2000 à 2699 |
| Champs examinés | Source IPv4 | Source, destination, protocole, ports, DSCP, ICMP |
| Placement conseillé | Proche de la destination | Proche de la source |
| Syntaxe | access-list 10 permit 10.10.20.0 0.0.0.255 |
access-list 101 permit tcp 10.10.20.0 0.0.0.255 host 192.168.1.10 eq 443 |
Le wildcard est l'inverse d'un masque: 0 = bit significatif, 1 = bit ignorable. Un /24 s'écrit 0.0.0.255, un /30 0.0.0.3, un hôte 0.0.0.0 ou le mot host. La logique suit: ACL étendue proche de la source évite de faire traverser le réseau à un trafic déjà condamné; ACL standard proche de la destination évite qu'un simple filtre sur la source interdise à un utilisateur légitime d'atteindre une seule destination alors qu'il en a le droit ailleurs.
Lecture top-down et implicit deny
IOS évalue la liste de haut en bas et s'arrête à la première correspondance: deux mêmes paquets ne se voient jamais appliquer deux règles. Chaque liste implicite un deny any final invisible. En sortie d'interface, le trafic qui ne matche aucune ligne permit est donc jeté, y compris le vôtre si vous oubliez d'autoriser votre SSH avant un deny ip any any. Conséquence opérationnelle: on insère les entrées par numéro de séquence (ip access-list extended 101 puis 10 permit ...) pour pouvoir réordonner, et on place les règles les plus spécifiques avant les généralistes.
Deux ACL nommées et placement
R1(config)# ip access-list standard MGMT-SRC
R1(config-std-nacl)# 10 permit 10.10.20.0 0.0.0.255
R1(config-std-nacl)# 20 permit host 172.16.5.7
!
R1(config)# ip access-list extended BLOCK-GUESTS
R1(config-ext-nacl)# 10 permit tcp 192.168.10.0 0.0.0.255 host 10.1.1.50 eq 443
R1(config-ext-nacl)# 20 deny ip 192.168.10.0 0.0.0.255 10.10.0.0 0.0.255.255
R1(config-ext-nacl)# 30 permit ip any any
!
R1(config)# interface GigabitEthernet0/1
R1(config-if)# ip access-group BLOCK-GUESTS in
Sur une ligne VTY, la bonne pratique avec ACL standard est:
R1(config)# access-list 10 permit 10.10.20.0 0.0.0.255
R1(config)# line vty 0 4
R1(config-line)# access-class 10 in
Si plus tard on ajoute deny ip any any à la 10 sans permit pour l'adresse de l'administrateur connecté, la session en cours survit mais la suivante ne passe plus. L'erreur est fréquente en lab: l'ACL bloque aussi les paquets ICMP unreachable générés en retour, et la différence entre deny avec log et deny simple tient au compteur syslog.
Compter et vérifier
show access-lists affiche chaque ligne avec son compteur hits: une ligne à 0 hit pendant un incident prouve qu'elle n'est jamais atteinte, soit par ordre, soit par mauvais placement. show running-config | section access-list montre l'ordre réel. Les paquets refusés par une ACL ne génèrent pas d'erreur ICMP par défaut: log sur la ligne deny ou ip access-group ... in côté destination aide au diagnostic.
Les ACL étendues savent aussi comparer des ports: lt, gt, range 8000 8010, et matcher des objets (object-group). Une règle mal placée est invisible dans le trafic: seule la lecture in/out depuis le routeur évite les contresens.
Exemple concret
Un filtre access-class 10 in est posé sur les VTY d'un routeur, la 10 autorise le sous-réseau admin 10.10.20.0/24. Le lendemain, un stage en salle réseau distribue des baux DHCP en 192.168.50.0/24: les stagiaires ne peuvent pas pinguer le routeur, et l'ingénieur qui se connecte depuis son VPN (pool 192.168.255.0/24) perd l'accès au prochain login. Diagnostic avec show access-lists 10: ligne 10, 3 hits, aucune correspondance pour les nouveaux pools. Correction: access-list 10 permit 192.168.255.0 0.0.0.255 insérée avant le deny implicite, et le pool admin est documenté comme dépendance de sécurité.