Comprendre la mécanique des ACL Cisco, écrire des ACL standards numérotées et nommées, écrire des ACL étendues avec ports TCP/UDP et protocoles, choisir où les appliquer (in vs out, source vs destination), résoudre quinze exercices de niveau examen 200-301 v1.1.
📍 À lire d’abord : Réussir le CCNA 200-301 depuis l’Afrique de l’Ouest — Guide complet 2026 · Monter un lab CCNA gratuit avec Cisco Packet Tracer 9.0.
Introduction
Les ACL (Access Control Lists) sont l’outil de filtrage de paquets le plus utilisé dans le monde Cisco. Elles servent à deux choses au CCNA : limiter le trafic entre sous-réseaux (sécurité), et identifier des flux pour appliquer un traitement (NAT, QoS, routing policy). Dans le programme 200-301 v1.1, le sujet ACL pèse à lui seul une part significative du domaine Security Fundamentals (15 % de l’examen) et apparaît aussi dans IP Services (configuration NAT).
Ce tutoriel n’est pas une lecture passive : c’est une session de musculation. Tu vas écrire vingt ACL différentes, les tester sur un lab Packet Tracer, observer leurs effets, et te confronter à quinze exercices type examen avec correction commentée. La règle : ne lis pas la correction avant d’avoir tenté.
Prérequis
- Lab Packet Tracer 9.0 fonctionnel.
- Maîtrise de la conversion entre masque réseau et masque inverse (wildcard).
- Compréhension du concept de table de routage (savoir qu’un paquet entre par une interface et sort par une autre).
- Familiarité avec OSPF ou routes statiques pour avoir un réseau qui route déjà.
- Niveau attendu : intermédiaire. Tu sais configurer un routeur de A à Z.
- Temps estimé : 3 heures avec les exercices.
Étape 1 — Maîtriser le masque inverse en cinq minutes
Le masque inverse (wildcard) est la première difficulté ACL. C’est l’inverse bit à bit du masque réseau : un 0 en wildcard signifie « le bit doit correspondre exactement », un 1 signifie « peu importe ». Quelques équivalences à mémoriser absolument :
Masque réseau Wildcard Plage couverte
255.255.255.255 0.0.0.0 Un hôte unique
255.255.255.0 0.0.0.255 /24 — 256 adresses
255.255.255.128 0.0.0.127 /25 — 128 adresses
255.255.255.192 0.0.0.63 /26 — 64 adresses
255.255.255.224 0.0.0.31 /27 — 32 adresses
255.255.255.240 0.0.0.15 /28 — 16 adresses
255.255.255.248 0.0.0.7 /29 — 8 adresses
255.255.255.252 0.0.0.3 /30 — 4 adresses
255.255.0.0 0.0.255.255 /16 — 65536 adresses
0.0.0.0 255.255.255.255 any (tout)
Astuce : pour convertir mentalement, soustrais chaque octet de 255. 255.255.255.224 → 0.0.0.31 (255-224=31). Pour /27 : 255.255.255.224 masque, donc 0.0.0.31 wildcard. Avec dix exercices chronométrés, ça devient un réflexe.
Le wildcard permet aussi des sélections non contiguës : 0.0.0.254 matche toutes les adresses paires d’un /24, 0.0.0.1 toutes les adresses dont le dernier bit est variable. Ces cas sont rares au CCNA mais peuvent apparaître dans une question piège.
Étape 2 — Comprendre le mécanisme d’évaluation
Une ACL est une liste ordonnée de règles. Le routeur évalue ligne par ligne, de haut en bas. Dès qu’une ligne matche, l’action est appliquée et l’évaluation s’arrête. Si aucune ligne ne matche, une règle implicite deny any termine la liste — donc une ACL qui ne contient que des règles deny bloque tout sauf ce qui est explicitement permis.
Sur une interface, une ACL s’applique soit en in (filtrage du trafic entrant), soit en out (filtrage du trafic sortant). Une seule ACL par sens et par protocole. Le sens in sur GigE0/0 signifie « les paquets qui arrivent dans le routeur par cette interface » — peu importe leur destination finale. Le sens out signifie « les paquets qui vont sortir du routeur par cette interface vers l’extérieur ».
La règle d’or de placement : ACL standard au plus près de la destination, ACL étendue au plus près de la source. Pourquoi ? Une ACL standard ne filtre que sur la source (elle ignore la destination), donc placée trop loin de la destination, elle bloquerait tout le trafic de cette source vers tous les destinataires. Une ACL étendue connaît à la fois source et destination, donc on peut la placer près de la source pour stopper le trafic indésirable au plus tôt et économiser de la bande passante sur le cœur de réseau.
Étape 3 — Écrire une ACL standard numérotée
Une ACL standard numérotée utilise un numéro entre 1-99 ou 1300-1999. Elle filtre uniquement sur l’IP source.
Sur la topologie à trois routeurs du tutoriel OSPF, exigeons que seul le sous-réseau 192.168.10.0/24 puisse atteindre le sous-réseau 192.168.30.0/24 via R2. Les autres sources doivent être bloquées.
R2(config)#access-list 10 permit 192.168.10.0 0.0.0.255
R2(config)#access-list 10 deny any
R2(config)#interface GigabitEthernet0/0
R2(config-if)#ip access-group 10 out
R2(config-if)#end
Décortiquons. La règle permit 192.168.10.0 0.0.0.255 autorise le réseau 192.168.10.0/24. La règle suivante deny any est explicite (alors qu’elle est implicite par défaut) — on la rend explicite pour deux raisons : pédagogique (on voit clairement qu’on bloque tout le reste) et opérationnelle (les compteurs de hits incluent les drops, ce qui aide au troubleshooting).
L’application avec ip access-group 10 out filtre le trafic sortant de l’interface GigE0/0 — c’est-à-dire le trafic qui va vers le LAN 192.168.30.0/24. Chaque paquet sortant a son IP source comparée à l’ACL ; s’il ne vient pas de 192.168.10.0/24, il est jeté.
Vérifie l’ACL avec show access-lists 10 et observe les compteurs de hits :
R2#show access-lists 10
Standard IP access list 10
10 permit 192.168.10.0 0.0.0.255 (87 matches)
20 deny any (12 matches)
Les matches augmentent au fil des pings de test. C’est ainsi qu’on prouve qu’une ACL fonctionne réellement.
Étape 4 — Écrire une ACL standard nommée
Les ACL numérotées sont historiques. Cisco recommande depuis dix ans les ACL nommées : on leur donne un nom parlant et on peut insérer/supprimer des règles individuellement avec leurs numéros de séquence.
R2(config)#ip access-list standard ALLOW_LAN10
R2(config-std-nacl)#permit 192.168.10.0 0.0.0.255
R2(config-std-nacl)#deny any
R2(config-std-nacl)#exit
R2(config)#interface GigabitEthernet0/0
R2(config-if)#no ip access-group 10 out
R2(config-if)#ip access-group ALLOW_LAN10 out
L’avantage devient flagrant si tu veux insérer une règle à la position 15 sans tout réécrire :
R2(config)#ip access-list standard ALLOW_LAN10
R2(config-std-nacl)#15 permit 192.168.99.0 0.0.0.255
Avec une ACL numérotée, il faut tout supprimer (no access-list 10) et tout réécrire dans l’ordre voulu — d’où l’expression « write once, suffer once » qui résume la philosophie des ACL nommées.
Étape 5 — Écrire une ACL étendue
Les ACL étendues utilisent les numéros 100-199 ou 2000-2699, ou un nom (recommandé). Elles filtrent sur source ET destination, et peuvent matcher protocoles (TCP, UDP, ICMP, OSPF, etc.) et numéros de port.
Cas d’usage classique : autoriser les hôtes du LAN 192.168.10.0/24 à accéder aux serveurs web (port 80 et 443) du LAN 192.168.30.0/24, mais bloquer tout autre trafic.
R1(config)#ip access-list extended WEB_ONLY_FROM_LAN10
R1(config-ext-nacl)#permit tcp 192.168.10.0 0.0.0.255 192.168.30.0 0.0.0.255 eq 80
R1(config-ext-nacl)#permit tcp 192.168.10.0 0.0.0.255 192.168.30.0 0.0.0.255 eq 443
R1(config-ext-nacl)#permit tcp 192.168.10.0 0.0.0.255 host 192.168.30.10 established
R1(config-ext-nacl)#deny ip any any log
R1(config-ext-nacl)#exit
R1(config)#interface GigabitEthernet0/0
R1(config-if)#ip access-group WEB_ONLY_FROM_LAN10 in
Décortiquons. Première et deuxième lignes : autoriser TCP de la source LAN10 vers la destination LAN30 sur les ports 80 et 443. Troisième ligne : autoriser le trafic retour avec le mot-clé established qui matche les paquets TCP dont les flags ACK ou RST sont positionnés (réponses à une connexion initiée de l’autre côté). Quatrième ligne : tout bloquer en loggant — log envoie un message Syslog à chaque paquet droppé, utile en investigation, dangereux en production sur du trafic massif (CPU et logs explosent).
L’application en in sur GigE0/0 (interface vers LAN10) filtre le trafic dès son entrée dans le routeur, avant même qu’il consulte la table de routage. C’est l’application au plus près de la source recommandée pour les ACL étendues.
Pour les ports, mémorise les principaux : eq 22 (SSH), eq 23 (Telnet), eq 25 (SMTP), eq 53 (DNS), eq 80 (HTTP), eq 110 (POP3), eq 143 (IMAP), eq 443 (HTTPS), eq 3306 (MySQL), eq 3389 (RDP). Tu peux aussi utiliser des opérateurs : gt 1023 (greater than = ports dynamiques), range 8000 8080 (plage), lt 1024 (less than = ports privilégiés).
Étape 6 — Filtrer avec ICMP
ICMP (ping, traceroute) demande des règles spécifiques. La logique pour autoriser le ping depuis le LAN vers Internet, sans laisser Internet pinguer le LAN :
R1(config)#ip access-list extended FROM_INTERNET_TO_LAN
R1(config-ext-nacl)#permit icmp any 192.168.10.0 0.0.0.255 echo-reply
R1(config-ext-nacl)#permit icmp any 192.168.10.0 0.0.0.255 unreachable
R1(config-ext-nacl)#permit icmp any 192.168.10.0 0.0.0.255 time-exceeded
R1(config-ext-nacl)#deny icmp any any
R1(config-ext-nacl)#permit ip any any
R1(config-ext-nacl)#exit
R1(config)#interface GigabitEthernet0/2
R1(config-if)#ip access-group FROM_INTERNET_TO_LAN in
Cette ACL autorise les réponses de ping (echo-reply), les unreachable (utiles pour PMTUD), les time-exceeded (utiles pour traceroute), bloque tout autre ICMP, et autorise tout le reste (TCP/UDP). Les pings depuis le LAN vers Internet fonctionnent (la requête sort, la réponse rentre), mais un attaquant qui ping ton LAN depuis Internet voit ses requêtes echo-request bloquées au passage.
Étape 7 — Sécuriser l’accès VTY avec une ACL standard
Une utilisation pédagogique très classique d’ACL standard : restreindre qui peut se connecter en SSH ou Telnet sur le routeur. On l’applique sur les lignes VTY, pas sur une interface.
R1(config)#access-list 99 permit host 192.168.99.10
R1(config)#access-list 99 permit 10.0.0.0 0.255.255.255
R1(config)#access-list 99 deny any log
R1(config)#line vty 0 4
R1(config-line)#access-class 99 in
R1(config-line)#transport input ssh
R1(config-line)#login local
access-class (et non ip access-group) est la syntaxe spécifique aux lignes VTY. Cette ACL n’autorise que l’admin sur 192.168.99.10 et tout le réseau 10.0.0.0/8 à se connecter en SSH au routeur. Tout autre tentative est bloquée et loggée.
Étape 8 — Quinze exercices type examen
Pour chacun, formule l’ACL puis vérifie. La correction est en bas de section.
1. Bloquer toute la communication depuis 172.16.0.0/16 vers le serveur 10.10.10.5/32.
2. Autoriser uniquement HTTPS depuis 192.168.50.0/24 vers Internet (any), bloquer le reste.
3. Autoriser SSH depuis 10.0.0.0/8 vers le routeur, refuser tout autre accès admin.
4. Bloquer ICMP echo-request entrant sur l'interface WAN, autoriser tout le reste.
5. Autoriser DNS (UDP 53) depuis le LAN 192.168.10.0/24 uniquement vers les serveurs 8.8.8.8 et 1.1.1.1.
6. Bloquer tout le trafic FTP (port 21 et 20) sortant du LAN 192.168.20.0/24.
7. Autoriser RDP (TCP 3389) uniquement depuis l'IP de l'admin 203.0.113.10 vers le serveur 192.168.30.5.
8. Refuser les pings depuis Internet vers tout le LAN 192.168.10.0/24, autoriser le reste.
9. Bloquer Telnet (port 23) sortant de tous les routeurs vers Internet pour empêcher les fuites.
10. Autoriser HTTP/HTTPS sortant pour 192.168.10.0/24 et 192.168.20.0/24, bloquer le reste.
11. Autoriser SNMP (UDP 161) depuis le serveur de monitoring 192.168.99.10 vers tous les équipements réseau.
12. Bloquer SMB (TCP 445) traversant le routeur entre tous les LAN, pour limiter la propagation de ransomware.
13. Permettre le trafic TCP avec flag established de Internet vers LAN, refuser les nouvelles connexions entrantes.
14. Autoriser les ports dynamiques (>1023) en réponse, refuser les connexions vers ports privilégiés (<1024) entrantes.
15. Refuser les sources avec adresses bogon (RFC 1918, loopback, multicast) entrant sur l'interface WAN.
Corrections :
1. ip access-list extended EX1
deny ip 172.16.0.0 0.0.255.255 host 10.10.10.5
permit ip any any
2. ip access-list extended EX2
permit tcp 192.168.50.0 0.0.0.255 any eq 443
deny ip any any
3. ip access-list standard EX3
permit 10.0.0.0 0.255.255.255
deny any
line vty 0 4
access-class EX3 in
transport input ssh
4. ip access-list extended EX4
deny icmp any any echo
permit ip any any
interface <WAN>
ip access-group EX4 in
5. ip access-list extended EX5
permit udp 192.168.10.0 0.0.0.255 host 8.8.8.8 eq 53
permit udp 192.168.10.0 0.0.0.255 host 1.1.1.1 eq 53
permit tcp 192.168.10.0 0.0.0.255 host 8.8.8.8 eq 53
permit tcp 192.168.10.0 0.0.0.255 host 1.1.1.1 eq 53
deny udp any any eq 53
deny tcp any any eq 53
permit ip any any
6. ip access-list extended EX6
deny tcp 192.168.20.0 0.0.0.255 any eq 21
deny tcp 192.168.20.0 0.0.0.255 any eq 20
permit ip any any
7. ip access-list extended EX7
permit tcp host 203.0.113.10 host 192.168.30.5 eq 3389
deny tcp any host 192.168.30.5 eq 3389
permit ip any any
8. ip access-list extended EX8
deny icmp any 192.168.10.0 0.0.0.255 echo
permit ip any any
interface <WAN>
ip access-group EX8 in
9. ip access-list extended EX9
deny tcp any any eq 23
permit ip any any
interface <WAN>
ip access-group EX9 out
10. ip access-list extended EX10
permit tcp 192.168.10.0 0.0.0.255 any eq 80
permit tcp 192.168.10.0 0.0.0.255 any eq 443
permit tcp 192.168.20.0 0.0.0.255 any eq 80
permit tcp 192.168.20.0 0.0.0.255 any eq 443
deny ip any any
11. ip access-list extended EX11
permit udp host 192.168.99.10 any eq 161
deny udp any any eq 161
permit ip any any
12. ip access-list extended EX12
deny tcp any any eq 445
permit ip any any
13. ip access-list extended EX13
permit tcp any 192.168.0.0 0.0.255.255 established
deny tcp any 192.168.0.0 0.0.255.255
permit ip any any
interface <WAN>
ip access-group EX13 in
14. ip access-list extended EX14
permit tcp any any gt 1023 established
deny tcp any any lt 1024
permit ip any any
interface <WAN>
ip access-group EX14 in
15. ip access-list extended EX15
deny ip 10.0.0.0 0.255.255.255 any
deny ip 172.16.0.0 0.15.255.255 any
deny ip 192.168.0.0 0.0.255.255 any
deny ip 127.0.0.0 0.255.255.255 any
deny ip 224.0.0.0 15.255.255.255 any
permit ip any any
interface <WAN>
ip access-group EX15 in
Si tu as réussi 12+ sur 15 sans regarder, tu as le niveau ACL CCNA. En dessous de 8, refais l’article et entraîne-toi sur les 7 où tu as buté.
Erreurs fréquentes
| Erreur | Cause | Solution |
|---|---|---|
| ACL appliquée mais semble ignorée | Mauvais sens (in vs out) ou mauvaise interface | Tracer le chemin du paquet, vérifier sur quelle interface il entre/sort |
| Tout est bloqué dès qu’on applique l’ACL | Implicit deny any non compensé par un permit final | Toujours finir une ACL par permit ip any any si on veut juste bloquer quelques flux |
Wildcard inversé (0.0.0.0 au lieu de 255.255.255.255 ou vice-versa) |
Confusion masque réseau / wildcard | Le wildcard 0.0.0.0 = un seul hôte, 255.255.255.255 = any |
Mot-clé host ou any mal placé |
host remplace une combinaison IP+wildcard, any remplace 0.0.0.0 255.255.255.255 |
permit ip host 1.2.3.4 any autorise un hôte vers tout |
| ACL standard appliquée trop loin de la destination | Bloque tout le trafic de la source au lieu d’un flux précis | Déplacer plus près de la destination ou passer en ACL étendue |
| Numéros de séquence sautent après modifications | Comportement normal Cisco | Renuméroter avec ip access-list resequence <nom> <start> <step> |
log génère trop de messages |
Production avec trafic massif | Retirer log après diagnostic, ou utiliser log-input avec parcimonie |
| Trafic retour bloqué après avoir autorisé l’aller | TCP est bidirectionnel mais ACL stateless | Ajouter une règle pour le retour ou utiliser established |
| Modification ACL casse une session SSH active | ACL VTY mal écrite, on se déconnecte soi-même | Toujours tester via console avant d’appliquer une ACL VTY ; garder une session console ouverte |
Adaptation au contexte ouest-africain
Pour les administrateurs réseau d’agences bancaires : les ACL sont la première ligne de conformité PCI DSS. Une banque qui ne segmente pas son LAN par ACL — entre la zone CNP (porteur de carte), la zone admin et la zone bureautique — est en non-conformité. Maîtriser ce tutoriel te rend immédiatement employable comme implementeur PCI dans une banque de Dakar, Abidjan ou Lomé.
Pour les hébergeurs locaux (Sonatel Datacenter Diamniadio, Inwi Datacenter à Casablanca, etc.) qui louent des sous-réseaux à leurs clients PME : les ACL sur le routeur de bordure du client sont fournies par défaut par l’hébergeur. Comprendre comment elles sont écrites et savoir les modifier à la demande du client est une compétence facturable.
Pour les ESN qui font du dépannage rapide : un appel sur deux est une ACL trop restrictive qui bloque par erreur un flux légitime. Le réflexe est de lire show access-lists, identifier la règle qui matche (compteur de hits), et insérer une règle plus précise à la bonne position de séquence.
Pour les centres de formation : cet article est conçu pour être copié-collé dans un module CCNA. Le tableau d’exercices avec corrections est une mine pour les TP. La progression standard → étendu → exercices reproduit le rythme officiel Cisco Networking Academy.
FAQ
Standard ou étendu : que choisir par défaut ?
Étendu, sauf si tu as un cas exceptionnel où le filtrage par source seul suffit. Les ACL étendues sont plus puissantes et n’ont qu’un coût mineur en CPU pour le routeur. Réserve les standards aux ACL VTY, aux NAT (qui les acceptent), et aux distribution-lists OSPF.
Numéroté ou nommé ?
Nommé, toujours, sauf si tu refais une ACL existante en numéroté pour respecter une convention héritée. Les ACL nommées permettent l’insertion ciblée et donnent un nom descriptif.
Combien de règles par ACL ?
En théorie, des centaines. En pratique, au-delà de 50 règles, tu devrais probablement utiliser un firewall dédié (ASA, FTD, ou Linux iptables). Les routeurs IOS supportent des grosses ACL mais leur évaluation séquentielle plombe les performances en haut volume.
Les ACL filtrent-elles le trafic généré par le routeur lui-même ?
Non — par défaut, une ACL appliquée sur une interface filtre le trafic qui transite par cette interface, pas le trafic généré localement (par exemple un ping émis depuis la CLI du routeur). Pour filtrer le trafic généré, c’est plus complexe et hors scope CCNA.
Différence entre established et reflexive ACL ?
established matche uniquement les paquets TCP avec ACK ou RST set — c’est statique, basé sur les flags. Une ACL réflexive (CBAC ou ZBF, plus récent) maintient un état des sessions et sait que le retour d’une connexion est légitime — c’est dynamique. Au CCNA, on s’arrête à established.
Faut-il logger systématiquement les drops ?
Non. En production, un deny ... log sur un flux à fort volume peut générer des milliers de messages syslog par seconde et plomber le routeur. Logger uniquement pendant les phases de diagnostic, ou utiliser un firewall avec logging optimisé.
Pour aller plus loin
- 🔝 Article cadre : Réussir le CCNA 200-301 depuis l’Afrique de l’Ouest — Guide complet 2026
- ⬅️ Prérequis : VLAN, trunk 802.1Q et inter-VLAN routing pas-à-pas · OSPFv2 single-area : configuration et troubleshooting
- ➡️ Suite logique : DHCP, DNS et NAT/PAT sur un routeur Cisco (à venir).
- ➡️ Sécurité associée : Sécurité L2 Cisco : port-security, SSH, AAA local (à venir).
- Documentation officielle Cisco : IP Access List Configuration Guide sur cisco.com — la référence exhaustive (200+ pages) avec tous les types d’ACL avancés.
- Suggestion d’entraînement : refais les 15 exercices, mais cette fois en plaçant chaque ACL au bon endroit (in/out, quel routeur, quelle interface). C’est l’autre dimension testée à l’examen.
Mots-clés secondaires : ACL Cisco standard étendue, wildcard mask CCNA, ip access-list extended, access-class VTY, filtrage paquets Cisco IOS, exercices ACL CCNA, ACL nommée vs numérotée, established TCP ACL.