🚦 ACLs Cisco — listes standard et étendues
| Formation | BTS SIO option SISR — IRIS Mediaschool |
|---|---|
| Bloc | B2 — Réseaux et sécurité |
| Module | M2.3 | Compétence B2.2 / Lien B3.3 |
| Durée | 3h30 |
| Prérequis | Adressage IP, masques sous-réseau, notions de routage inter-VLAN |
🎯 Objectifs de séance
- Configurer des ACLs Cisco standard et étendues (numérotées et nommées) sur un routeur ISR 4321.
- Expliquer la logique de traitement « top-down / first-match » et manipuler des numéros de séquence pour insérer / supprimer des règles.
- Tester et valider une politique de filtrage (nmap, tcpdump) et activer le logging des rejets (
log-input).
🔔 Introduction (10 min)
En 2020, l'affaire SolarWinds a montré comment un réseau interne trop « plat » facilite le mouvement latéral d'attaquants persistants : une fois l'accès obtenu, les acteurs malveillants ont pu pivoter librement entre segments et atteindre des ressources sensibles. Cette séance pose les bases pratiques pour éviter ce type de compromission en restreignant précisément les flux au niveau routeur et en appliquant une logique « first-match » stricte dans les ACLs Cisco.
Nous travaillerons sur des exemples concrets applicables à la PME fil rouge InnovatTech SARL.
📖 1. Principes et types d'ACLs (70 min)
Les ACLs (Access Control Lists) sur équipements Cisco sont des listes de contrôle d'accès appliquées aux interfaces pour filtrer le trafic IP. Il existe deux familles principales :
- Les ACLs standard (numéros 1–99 historique) ne filtrent que l'adresse source. Elles sont simples mais peu granulaires, utiles pour autoriser ou bloquer des réseaux entiers en amont.
- Les ACLs étendues (numéros 100–199) permettent de filtrer par protocole, ports source/destination, adresses source et destination — elles sont indispensables pour une segmentation fine entre VLANs.
Les ACLs peuvent être créées numérotées (ex : access-list 10 permit 192.168.10.0 0.0.0.255) ou nommées (meilleure pratique) :
Router# configure terminal
Router(config)# ip access-list standard ALLOW_ADMIN
Router(config-std-nacl)# permit 192.168.10.0 0.0.0.255
Router(config-std-nacl)# exit
Router(config)# ip access-list extended BLOCK_V20_TO_V10
Router(config-ext-nacl)# remark Bloque les Users vers Admin sauf HTTP
Router(config-ext-nacl)# permit tcp 192.168.20.0 0.0.0.255 192.168.10.0 0.0.0.255 eq 80
Router(config-ext-nacl)# deny ip 192.168.20.0 0.0.0.255 192.168.10.0 0.0.0.255 log-input
Router(config-ext-nacl)# permit ip any any
Router(config-ext-nacl)# exit
- Le mot-clé
hostcible une adresse unique :host 192.168.10.5. - La wildcard mask
0.0.0.255correspond à un masque /24 — c'est l'inverse du masque de sous-réseau. - Chaque ACL se termine par un implicit deny all : tout flux non explicitement autorisé est rejeté.
- Une ACL nommée est plus lisible et permet l'utilisation de numéros de séquence pour insérer/supprimer des entrées.
Commandes de vérification
Router# show access-lists BLOCK_V20_TO_V10
Extended IP access list BLOCK_V20_TO_V10
10 permit tcp 192.168.20.0 0.0.0.255 192.168.10.5 eq 80 (hitcount=12)
20 deny ip 192.168.20.0 0.0.0.255 192.168.10.0 0.0.0.255 (hitcount=58) log
30 permit ip any any
Router# show ip interface GigabitEthernet0/0
GigabitEthernet0/0 is up, line protocol is up
Internet address is 91.208.45.12/29
IP access list is not set
Les compteurs (hitcount) permettent de vérifier l'efficacité des règles. La présence de log-input génère des messages syslog au niveau du routeur pour chaque correspondance.
📖 2. Logique de traitement et gestion d'ordre (30 min)
Les ACLs Cisco sont évaluées de façon séquentielle, du haut vers le bas (top-down). La première entrée qui correspond à un paquet détermine son sort : first match wins. Cela rend l'ordre des règles critique : placer une règle générale permit ip any any avant des règles plus spécifiques annule tous les filtres suivants.
Dans une ACL nommée, on peut gérer des numéros de séquence pour insérer ou supprimer proprement :
Router# configure terminal
Router(config)# ip access-list extended MYACL
Router(config-ext-nacl)# 15 permit tcp host 10.0.0.1 any eq 80 ! <-- insertion avec numéro de séquence
Router(config-ext-nacl)# 25 deny ip 10.0.0.0 0.0.0.255 192.168.10.0 0.0.0.255 log-input
Router(config-ext-nacl)# exit
Router# show access-lists MYACL
Pour supprimer une entrée par numéro de séquence :
Router(config)# ip access-list extended MYACL
Router(config-ext-nacl)# no 15
Router(config-ext-nacl)# exit
Placer permit ip any any en tête d'une ACL annule immédiatement tout le filtrage : chaque paquet correspond à cette première règle et est autorisé, les règles suivantes ne sont jamais évaluées. Placez toujours les règles les plus spécifiques en premier.
📖 3. Opérateurs et options avancées (20 min)
Les opérateurs de port courants dans les ACLs étendues :
| Opérateur | Signification | Exemple |
|---|---|---|
eq | Égal à (equal) | eq 80 → port 80 uniquement |
lt | Inférieur à (less than) | lt 1024 → ports 0 à 1023 |
gt | Supérieur à (greater than) | gt 1023 → ports 1024 et + |
range | Intervalle inclusif | range 1024 65535 |
neq | Différent de (not equal) | neq 25 → tout sauf le port 25 |
permit tcp any any eq 80 ! port 80 uniquement
permit tcp any any range 1024 65535 ! ports éphémères
deny tcp any any neq 25 ! tout sauf port 25 (rarement utilisé)
Option established
L'option established (pour TCP) autorise les paquets portant le drapeau ACK ou RST — pratique pour autoriser les retours de connexion sans ouvrir de port en entrée :
permit tcp any any established
established n'est pas un état complet de suivi de connexion comme dans un pare-feu stateful — il vérifie simplement la présence du bit ACK/RST dans l'en-tête TCP. Pour un filtrage dynamique complet, un pare-feu stateful (ASA, Firepower, iptables en stateful) est nécessaire.
📖 4. Exemple complet : segmentation InnovatTech (30 min)
Contexte : InnovatTech — VLAN 10 Admin (192.168.10.0/24), VLAN 20 Users (192.168.20.0/24), win-srv01 (192.168.10.5). Le routeur Cisco ISR 4321 réalise le routage inter-VLAN.
Objectif : bloquer VLAN 20 vers VLAN 10 sauf HTTP, autoriser VLAN 10 vers Internet, logger les rejets.
Router# configure terminal
! ACL pour les utilisateurs (VLAN20) : autoriser HTTP vers Admin, bloquer le reste vers VLAN10 en log
Router(config)# ip access-list extended ACL_V20_TO_V10
Router(config-ext-nacl)# remark Autorise HTTP vers services web Admin
Router(config-ext-nacl)# permit tcp 192.168.20.0 0.0.0.255 host 192.168.10.5 eq 80
Router(config-ext-nacl)# deny ip 192.168.20.0 0.0.0.255 192.168.10.0 0.0.0.255 log-input
Router(config-ext-nacl)# permit ip any any
Router(config-ext-nacl)# exit
! Appliquer l'ACL sur l'interface VLAN20 (ingress)
Router(config)# interface GigabitEthernet0/0.20
Router(config-subif)# ip access-group ACL_V20_TO_V10 in
Router(config-subif)# exit
! ACL pour limiter internet à VLAN10 seulement (appliquer sur l'interface WAN en out)
Router(config)# ip access-list extended ACL_ONLY_V10_TO_INTERNET
Router(config-ext-nacl)# permit ip 192.168.10.0 0.0.0.255 any
Router(config-ext-nacl)# deny ip any any log-input
Router(config-ext-nacl)# exit
Router(config)# interface GigabitEthernet0/1 ! interface vers FAI
Router(config-if)# ip access-group ACL_ONLY_V10_TO_INTERNET out
Router(config-if)# exit
Vérifications recommandées
Router# show access-lists ACL_V20_TO_V10
Router# show ip interface GigabitEthernet0/0.20 ! vérifie ip access-group appliquée
Router# show logging | include ACL_V20_TO_V10 ! voir logs liés au log-input
🛠️ Travaux Pratiques (70 min)
Contexte du TP
Vous êtes technicien chez InnovatTech SARL. Le responsable sécurité vous demande de restreindre l'accès des postes du VLAN 20 (Users) vers le VLAN 10 (Administration) : seuls les accès HTTPS vers win-srv01 (192.168.10.5) doivent être autorisés. De plus, seuls les postes du VLAN 10 doivent pouvoir accéder à Internet directement.
Prérequis techniques
- Accès console/SSH au routeur Cisco ISR 4321 (IOS 16.x).
- Une machine dans VLAN 20 (ex : 192.168.20.10) et win-srv01 en VLAN 10 (192.168.10.5).
- Outils de test : Nmap sur un poste Linux (ou Kali), tcpdump / Wireshark sur win-srv01.
Étape 1 — Sauvegarde avant modification
# Sur le routeur, sauvegarder la config courante avant de modifier
Router# show running-config
# Copiez la sortie dans un fichier local avant toute modification
Étape 2 — Créer l'ACL étendue pour VLAN 20
Router# configure terminal
Router(config)# ip access-list extended TP_DENY_V20_TO_V10
Router(config-ext-nacl)# remark TP - Autoriser seulement HTTPS vers win-srv01
Router(config-ext-nacl)# permit tcp 192.168.20.0 0.0.0.255 host 192.168.10.5 eq 443
Router(config-ext-nacl)# deny ip 192.168.20.0 0.0.0.255 192.168.10.0 0.0.0.255 log-input
Router(config-ext-nacl)# permit ip any any
Router(config-ext-nacl)# exit
Router(config)# interface GigabitEthernet0/0.20
Router(config-subif)# ip access-group TP_DENY_V20_TO_V10 in
Router(config-subif)# exit
Étape 3 — Restreindre l'accès Internet au VLAN 10
Router(config)# ip access-list extended TP_ONLY_V10_TO_INTERNET
Router(config-ext-nacl)# permit ip 192.168.10.0 0.0.0.255 any
Router(config-ext-nacl)# deny ip any any log-input
Router(config-ext-nacl)# exit
Router(config)# interface GigabitEthernet0/1
Router(config-if)# ip access-group TP_ONLY_V10_TO_INTERNET out
Router(config-if)# exit
Étape 4 — Tester depuis un poste du VLAN 20
# Vérifier HTTPS autorisé (depuis 192.168.20.10)
nmap -Pn -p 443 192.168.10.5
# Vérifier SSH/SMB bloqués
nmap -Pn -p 22,445 192.168.10.5
Attendu : le port 443 doit apparaître ouvert ou filtré selon le serveur ; les ports 22 et 445 doivent être bloqués (filtered/closed) avec traces dans les logs.
Étape 5 — Capturer le trafic sur win-srv01
# Sur win-srv01 (Linux)
sudo tcpdump -i any host 192.168.20.10 and tcp -w /tmp/tp_acl_capture.pcap
# Sous Windows : utiliser Wireshark avec capture live
Étape 6 — Vérifier les logs du routeur
Router# show logging | include TP_DENY_V20_TO_V10
! ou consulter le serveur syslog central si configuré
Livrable attendu
- Fichier texte des commandes exactes appliquées sur le routeur (extraits de
running-config). - Sorties :
show access-lists TP_DENY_V20_TO_V10etshow ip interface GigabitEthernet0/0.20. - Capture PCAP (tcpdump) montrant les tentatives de connexion depuis VLAN 20 vers VLAN 10.
- Résultats Nmap depuis VLAN 20.
Critères de réussite
- ☐ Les connexions HTTPS vers 192.168.10.5 sont possibles depuis VLAN 20.
- ☐ Les autres connexions depuis VLAN 20 vers VLAN 10 sont bloquées et apparaissent dans les logs du routeur.
- ☐ Seuls les hôtes de VLAN 10 accèdent à Internet (testé depuis le routeur / NAT).
✅ Synthèse de séance (10 min)
Cette séance a présenté la mise en œuvre pratique des ACLs Cisco : différence entre standard et étendues, importance de l'ordre des règles (first-match) et usage des numéros de séquence pour une maintenance sûre. Nous avons vu comment logger les rejets avec log-input et comment tester une politique en production (Nmap, tcpdump).
L'ordre et la précision des règles déterminent l'efficacité d'une ACL : first-match wins, le plus spécifique d'abord, et l'implicit deny all boucle toujours la liste.
Question de vérification : En une phrase, expliquez pourquoi placer permit ip any any en début d'une ACL annule l'intérêt du filtrage.
Séance suivante : Séance 2 — iptables, nftables et micro-segmentation (traduction des mêmes règles au niveau hôte, journalisation et persistance).
📝 QCM — Testez vos connaissances
1. Quelle est la principale différence entre une ACL standard et une ACL étendue sur équipement Cisco ?
2. Dans la logique « first-match » des ACLs Cisco, que se passe-t-il dès qu'une entrée correspond au paquet ?
3. Quelle wildcard mask utilise-t-on pour représenter le réseau 192.168.20.0/24 dans une ACL Cisco ?
4. Que fait le mot-clé log-input dans une règle deny d'une ACL Cisco ?
5. Pour filtrer le trafic entrant depuis VLAN 20 (sous-interface Gi0/0.20), sur quelle interface et dans quel sens applique-t-on la commande ip access-group ?
📋 Afficher les corrections détaillées
- L'ACL standard filtre uniquement sur l'adresse IP source ; l'étendue filtre aussi le protocole, les ports et l'adresse destination. — Les ACLs standard (1–99) sont limitées à la source, les étendues (100–199) offrent un filtrage 5-tuples complet.
- Le traitement s'arrête et l'action (permit / deny) est appliquée immédiatement. — C'est le principe « first-match wins » : la première règle correspondante est décisive, les suivantes sont ignorées.
0.0.0.255— La wildcard mask est le complément du masque de sous-réseau : 255.255.255.0 donne 0.0.0.255. Les bits à 1 dans la wildcard sont des bits « don't care ».- Il génère un message syslog pour chaque paquet rejeté, incluant l'interface d'entrée et l'adresse MAC source. —
log-inputest plus informatif quelog: il inclut l'interface et la couche 2 (MAC source), indispensable pour le débogage. - Sur la sous-interface
GigabitEthernet0/0.20en directionin. — La bonne pratique est d'appliquer les ACLs étendues aussi près que possible de la source du trafic, en entrée (in) sur l'interface du VLAN source.
