CISCO · Sécurité

Les Access-list (ACL) CISCO

Filtrer le trafic réseau sur un équipement CISCO : access-list standard, étendue et réflexive, règles de filtrage et mise en application pas à pas.

C’est quoi une ACL ?

  • ACL = Access Control List
  • Access-list = Liste d’accès !

Pour mettre en place des ACL, il faut créer une access-list ET l’appliquer quelque part. Imaginez que vous organisez une soirée privée et que vous ne voulez pas donner l’accès à cette soirée à tout le monde ! Vous allez faire quoi ?

  • Créer une liste d’invitées.
  • Placer un agent de sécurité devant la porte avec votre liste.

Vous allez donner la consigne suivante à votre agent de sécurité :

Voici ta liste. Pour l’appliquer, rien de plus simple, tu regardes ligne par ligne !!!

Liste de l'agent de sécurité
  • Éric DUBOIS en Basket ? ACCEPTÉ.
  • Homme seul en Costard + Cravate ? ACCEPTÉ.
  • Femme en Basket ? REFUSÉ.
  • L’équipe de Rugby en Basket ? REFUSÉ.
  • Homme seul en Chaussure de ville ? REFUSÉ.

Dans notre cas c’est exactement pareil ! On va :

  • Créer une access-list.
  • Mettre cette access-list en place pour qu’elle puisse être active !

Ce cours va porter sur trois grands chapitres :

  • Création d’une access-list.
  • Ajouter des règles de flux.
  • Mise en place d’une access-list.

Création d’une access-list

Comparaison entre une ACL standard et une ACL étendue Cisco

Il existe deux grandes familles d’access-list :

  • Standard (Standard) – Filtrage via l’adresse IP source.
  • Extended (Étendue) – Filtrage via l’IP, le port, le protocole et plein d’autres choses.

Sachant qu’il est possible de créer plusieurs access-list sur un même équipement, il va nous falloir les identifier. Comment ?

  • Soit par des Nombres (Numbered).
  • Soit par des Noms (Named).

Il existe donc 4 types d’access-list :

  • Standard Numbered = Standard numérotée de 1 à 99 et de 1300 à 1999.
  • Extended Numbered = Étendue numérotée, de 100 à 199 et de 2000 à 2699.
  • Standard Named = Standard nommée.
  • Extended Named = Étendue nommée.
Différence entre access-list et IP access-list sur Cisco

Créer une access-list

Comme nous l’avons vu plus haut, vous avez le choix entre 4 types d’access-list :

Access-list Standard Numbered

R1(config)# access-list <1-99> <1300-1999> ou R1(config)# ip access-list standard <1-99> <1300-1999>

À vous de choisir un numéro compris entre 1 à 99 ou de 1300 à 1999.

Access-list Standard Named

R1(config)# ip access-list standard [WORD]

Access-list Extended Numbered

R1(config)# access-list <100-199> <2000-2699> ou R1(config)# ip access-list extended <100-199> <2000-2699>

À vous de choisir un numéro compris entre 100 à 199 ou de 2000 à 2699.

Access-list Extended Named

R1(config)# ip access-list extended [WORD]

Quelle est la différence entre access-list et ip access-list ?

La réponse :

  • access-list est l’ancienne méthode.
  • ip access-list est la nouvelle méthode.

La commande access-list :

  • Oblige à spécifier le numéro de l’access-list à chaque fois que l’on rajoute une règle de filtrage.
  • Supporte uniquement les access-list Numbered (numérotées).

Exemple :

R1(config)# access-list 1 permit 192.168.1.0 0.0.0.255 R1(config)# access-list 1 permit host 192.168.2.1

La commande ip access-list :

  • Nous fait rentrer dans un sous-menu nous permettant de rajouter directement les règles de filtrage sans rappeler le numéro de l’access-list.
  • Supporte les access-list Numbered (numérotées) et Named (nommées).
  • Permet de rajouter des règles de filtrage entre deux lignes après avoir créé une access-list.

Exemple :

R1(config)# ip access-list standard ACL_LINE_VTY R1(config-std-nacl)# permit 192.168.1.0 0.0.0.255 R1(config-std-nacl)# permit host 192.168.2.1

Conclusion :

  • Privilégiez les access-list Named : un nom est plus parlant qu’un numéro.
  • Privilégiez les ip access-list : elles sont plus simples à gérer.

Les règles de flux d’une access-list

Comment est traitée une access-list

Comment un équipement actif utilise cette access-list ?

  • Quand un paquet est reçu, les règles sont évaluées du haut vers le bas.
  • Dès que le paquet match* une règle de l’access-list, l’évaluation des règles s’arrête.
  • À la fin de toutes les règles, le « deny any » (Standard) et le « deny ip any any » (étendue) sont implicites.

* Match = Rencontre ! Le paquet correspond parfaitement à la règle de filtrage (comme un match Tinder !! Paul et Sabine veulent tous les deux se rencontrer ! C’est un match !)

Mise en situation :

Nous avons mis une access-list sur l’interface physique de notre routeur.

Un paquet IP arrive sur notre routeur
Un paquet IP arrive sur notre routeur

Dès qu’un paquet IP arrive sur cette interface, ce paquet va traverser l’access-list suivante :

ip access-list standard LAN_CLIENT permit 192.168.1.0 0.0.0.255 permit 192.168.2.0 0.0.0.255 permit 192.168.3.0 0.0.0.255 permit host 1.1.1.1 permit 192.168.11.0 0.0.0.255 permit 192.168.12.0 0.0.0.255 permit 192.168.13.0 0.0.0.255

Que se dit le routeur :

  • Ligne 1 = 1.1.1.1 est-il dans le LAN 192.168.1.0 /24 ? NON
  • Ligne 2 = 1.1.1.1 est-il dans le LAN 192.168.2.0 /24 ? NON
  • Ligne 3 = 1.1.1.1 est-il dans le LAN 192.168.3.0 /24 ? NON
  • Ligne 4 = 1.1.1.1 correspond à l’IP 1.1.1.1 ? OUI !!!

Cette ligne correspond bien au paquet que je viens de recevoir !!! Vu qu’il y a un permit devant, je vais l’autoriser à passer.

  • Les autres lignes : je ne vais pas regarder les lignes qui suivent, car j’ai déjà trouvé quoi faire de ce paquet.

Et si aucune ligne ne correspond au paquet reçu ? Il sera dropé !!!

Principe de fonctionnement d'une Access Control List (ACL)

DROP et Forward

FORWARD* = Le paquet est autorisé, je le laisse passer.
DROP** = Le paquet est refusé, je le supprime.

* Traduction de Forward = Vers l’avant
** Traduction du mot Drop = Laissez tomber

Conclusion

Il existe une multitude d’options pour les règles de filtrage. Pour voir ceci étape par étape, nous allons commencer par les :

  • access-list standard (plus simple, moins d’options).
  • access-list étendue.
  • access-list réflexive.

Configuration d’une access-list standard

Configuration d'une ACL standard sur un routeur Cisco

Commençons par un petit exemple d’access-list standard :

ip access-list standard LINE_VTY remark ***** LAN Admin réseau ***** permit 10.10.10.0 0.0.0.255 remark ** Serveur de sauvegarde ** permit host 10.10.20.1 permit host 10.10.20.2 remark *********** LOG *********** deny any log

De quoi est composée une règle de flux :

ip access-list standard LINE_VTY [Action] [Adresse IP Source]

Action

  • Permit (autorise le flux).
  • Deny (Drop le flux).
  • Remark (met un commentaire).

Adresse IP

  • any (tout le monde)
  • host X.X.X.X (Adresse IP)
  • X.X.X.X 0.0.0.255 (Adresse réseau)
R1(config)# ip access-list standard LINE_VTY R1(config-std-nacl)# permit ? A.B.C.D Address to match ! Une adresse réseau any Any source host ! Tout le monde host A single host address ! Une adresse IP

Que se passe-t-il quand vous voulez matcher une adresse réseau ?

R1(config-std-nacl)# permit 192.168.10.0 ? A.B.C.D Wildcard bits ! Mettre le masque réseau en Wildcard

Il faut spécifier le Wildcard mask.

Hop-hop-hop-hop-hop-hop !!!! Wildcard mask ??? C’est quoi ça ?

Wildcard = Masque inversé.

  • Un masque de 255.255.255.0 nous donnera un wildcard de 0.0.0.255.
  • Un masque de 255.255.0.0 nous donnera un wildcard de 0.0.255.255.
  • Un masque de 255.0.0.0 nous donnera un wildcard de 0.255.255.255.

Comment j’ai fait ?

J’ai utilisé la formule suivante : Wildcard = 255 – Masque.

Mais pourquoi les wildcard ? À quoi ça sert ? Nous n’aurions pas pu mettre simplement la valeur de notre masque ?

Pour répondre à cette question, je vous invite à jeter un coup d’œil sur l’article Wildcard. Mais pas pour le moment…. Je vous conseille de bien maîtriser les access-list afin de comprendre la plus-value qu’apportent les Wildcard.

Configuration d’une access-list étendue

Configuration d'une ACL étendue sur un routeur Cisco

Une access-list étendue possède beaucoup plus d’options que les access-list standard :

ip access-list extended ACL_TEST [Action] [Protocole] [@IP Src] [Port Source] [@IP Dest.] [Port Dest.] [Options]

NB : nous avons déjà vu la partie [Action] et [@IP Source] dans le chapitre sur les access-list standard.

Protocole

Les plus courants :

  • ip (tout protocole – pas de notion de port).
  • tcp (protocole tcp).
  • udp (protocole udp).
  • icmp (ping, traceroute).

Routage dynamique :

  • ospf.
  • eigrp.

Tunneling :

  • esp.
  • gre.
  • ipinip.

Et plein d’autres …

Port

  • eq (port égal à XXX).
  • gt (port supérieur à XXX).
  • lt (port inférieur à XXX).
  • neq (tous les ports sauf le port XXX).
  • range X-Y (tous les ports compris entre X et Y).

Options

  • log (informe notre serveur Syslog lorsque le flux est matché).

Voici un exemple d’access-list étendue :

R1(config)# ip access-list extended ACL_CLIENTS_VERS_SERVEUR R1(config-ext-nacl)# remark ------------------------------------------------------------- R1(config-ext-nacl)# remark ACTIVE DIRECTORY R1(config-ext-nacl)# remark ------------------------------------------------------------- R1(config-ext-nacl)# remark -------------------------- LDAP ----------------------------- R1(config-ext-nacl)# permit tcp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] eq 389 R1(config-ext-nacl)# permit udp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] eq 389 R1(config-ext-nacl)# remark -------------------------- RPC ------------------------------ R1(config-ext-nacl)# permit tcp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] eq 135 R1(config-ext-nacl)# remark ---------------------- RPC Dynamique ------------------------ R1(config-ext-nacl)# permit tcp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] gt 1023 R1(config-ext-nacl)# remark ------------------------ Kerberos ---------------------------- R1(config-ext-nacl)# permit tcp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] eq 88 R1(config-ext-nacl)# permit udp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] eq 88 R1(config-ext-nacl)# remark --------------------------- SMB ------------------------------ R1(config-ext-nacl)# permit tcp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] eq 445 R1(config-ext-nacl)# remark --------------------------- GPO ------------------------------ R1(config-ext-nacl)# permit icmp [@Rsx-Client] [Wildcard] host [@IP_AD1] echo R1(config-ext-nacl)# permit icmp [@Rsx-Client] [Wildcard] host [@IP_AD1] echo-reply R1(config-ext-nacl)# remark ------------------------------------------------------------- R1(config-ext-nacl)# remark DENY ANY ANY LOG R1(config-ext-nacl)# remark ------------------------------------------------------------- R1(config-ext-nacl)# deny ip any any log

Une access-list étendue propose des centaines d’options !!!! Vous pouvez aussi matcher un flux en fonction :

  • Du champ TOS.
  • Si la connexion est déjà établie ou non.
  • Mettre une plage horaire.
  • Matcher les SYN SYN-ACK ACK d’une connexion TCP.
  • Et tellement d’autres options !!!

En gros vous avez une multitude d’options ! Faire un article sur toutes ces options prendrait un temps fou !!!!! Peut-être plus tard, mais pour le moment, restons dans les généralités !

Configuration d’une access-list réflexive

Mise en évidence

  • Je connecte deux PC entre eux.
  • Je les mets dans le même réseau.
  • Je veux vérifier ma configuration avec la commande ping.

Problème = Le Pare-Feu de mes PC est activé.
Solution = Désactiver le pare-feu !

Mais que s’est-il passé réellement ?

Mise en évidence des ACL réflexive
Mise en évidence des ACL réflexive

Notre firewall :

  • Nous permet de faire des ping.
  • Ne permet pas à une personne externe de nous pinger.

Mais comment se fait-il que notre Firewall laisse passer la réponse à notre ping ?
Grâce à une règle de filtrage réflexive !
Notre Firewall voit notre requête et comprend qu’elle va recevoir une réponse d’ici peu de temps. Il autorise donc le destinataire du ping à répondre au ping dans un laps de temps donné.

Configuration

Reprenons notre exemple d’ACL étendue. Si nous mettons cette ACL en place, nous allons filtrer uniquement les flux CLIENTS => SERVEURS. Mais que fait-on des flux SERVEURS => CLIENTS ?
Nous allons créer une deuxième ACL, identique à la première, mais en inversant les sources et les destinations ? Tout en sachant que nos serveurs ne vont jamais interroger directement nos clients sur ces flux, nous allons mettre en place des ACL réflexives ! Il suffit simplement de rajouter cette commande à chaque fin de ligne :

  • reflect [NOM_DE_L’ACL_DYNAMIQUE]

Puis appliquer cette ACL DYNAMIQUE à une ACL étendue.

  • evaluate [NOM_DE_L’ACL_DYNAMIQUE]
R1(config)# show run | begin ip access-list ip access-list extended ACL_CLIENTS_VERS_SERVEUR remark ------------------------------------------------------------- remark ACTIVE DIRECTORY remark ------------------------------------------------------------- remark -------------------------- LDAP ----------------------------- permit tcp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] eq 389 reflect ACL_DYN_CLT-SRV permit udp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] eq 389 reflect ACL_DYN_CLT-SRV remark -------------------------- RPC ------------------------------ permit tcp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] eq 135 reflect ACL_DYN_CLT-SRV remark ---------------------- RPC Dynamique ------------------------ permit tcp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] gt 1023 reflect ACL_DYN_CLT-SRV remark ------------------------ Kerberos ---------------------------- permit tcp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] eq 88 reflect ACL_DYN_CLT-SRV permit udp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] eq 88 reflect ACL_DYN_CLT-SRV remark --------------------------- SMB ------------------------------ permit tcp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] eq 445 reflect ACL_DYN_CLT-SRV remark --------------------------- GPO ------------------------------ permit icmp [@Rsx-Client] [Wildcard] host [@IP_AD1] echo reflect ACL_DYN_CLT-SRV permit icmp [@Rsx-Client] [Wildcard] host [@IP_AD1] echo-reply reflect ACL_DYN_CLT-SRV remark ------------------------------------------------------------- remark DENY ANY ANY LOG remark ------------------------------------------------------------- deny ip ay any log
R1(config)# ip access-list extended ACL_SERVEUR_VERS_CLIENTS R1(config-ext-nacl)# evaluate ACL_DYN_CLT-SRV R1(config-ext-nacl)# exit

Et enfin, nous allons appliquer nos ACL sur l’interface vlan VLAN_CLIENT.

R1(config)# interface vlan 10 R1(config-if)# description VLAN_CLIENT R1(config-if)# ip access-group ACL_CLIENTS_VERS_SERVEUR out R1(config-if)# ip access-group ACL_SERVEUR_VERS_CLIENTS in

Que se passe-t-il ?

  • Dès qu’un flux est matché par notre access-list ACL_CLIENTS_VERS_SERVEUR, une règle de filtrage temporaire autorisant la réponse à cette requête va être créée de manière dynamique dans l’ACL_SERVEUR_VERS_CLIENTS.
  • Lorsque la réponse à la requête est passée par l’access-list réflexive, cette règle de flux sera supprimée.

Vérification

SW_D_01# show access-lists [...] Reflexive IP access list ACL_DYN_CLT-SRV permit icmp host X.X.X.X host X.X.X.X (12 matches) (time left 275) Extended IP access list ACL_SERVEUR_VERS_CLIENTS 10 evaluate ACL_DYN_CLT-SRV [...]

Appliquer une ACL

Schéma expliquant comment appliquer une ACL sur une interface

Sur une interface physique

Interface physique
Interface physique
R1(config)# interface FastEthernet 0/1 R1(config-if)# description VLAN_CLIENT R1(config-if)# ip access-group ACL_R1_VERS_WAN out R1(config-if)# ip access-group ACL_WAN_VERS_R1 in

Sur une interface vlan

ACL - Interface Vlan
Interface Vlan
SW_D_01(config)# interface vlan 10 SW_D_01(config-if)# description VLAN_CLIENT SW_D_01(config-if)# ip access-group ACL_VLAN_10_VERS_WAN in SW_D_01(config-if)# ip access-group ACL_WAN_VERS_VLAN_10 out

Sur une Line vty

ACL - Line VTY
ACL – Line VTY
R1(config)# line vty 0 4 R1(config-line)# access-class ACL_SSH in

Questions fréquentes sur les ACL Cisco

Qu’est-ce qu’une ACL sur Cisco ?

Une ACL (Access Control List) est une liste de règles qui filtrent le trafic réseau sur un équipement Cisco. Chaque règle autorise (permit) ou refuse (deny) des paquets selon des critères comme l’adresse IP source, destination, le protocole ou le port.

Quelle différence entre ACL standard et étendue ?

Une ACL standard (numéros 1-99) filtre uniquement sur l’adresse IP source. Une ACL étendue (numéros 100-199) filtre sur la source, la destination, le protocole et les ports, offrant un contrôle beaucoup plus précis.

Comment configurer une ACL standard sur Cisco ?

On utilise la commande access-list [numéro] permit/deny [source] [wildcard], puis on applique l’ACL à une interface avec ip access-group [numéro] in/out. Exemple : access-list 10 permit 192.168.1.0 0.0.0.255.

Où appliquer une ACL : en entrée ou en sortie ?

La règle générale : on place une ACL standard au plus près de la destination, et une ACL étendue au plus près de la source. Le sens in filtre le trafic entrant sur l’interface, le sens out filtre le trafic sortant.

Qu’est-ce que le deny implicite d’une ACL ?

À la fin de chaque ACL Cisco se trouve un deny any implicite : tout trafic qui ne correspond à aucune règle permit est automatiquement refusé. Il faut donc toujours prévoir au moins une règle permit pour laisser passer le trafic souhaité.

Conclusion

Les conclusions de cette leçon sont les suivantes :

  • Une ACL étendue ne remplacera jamais un FIREWALL !!! ACL = Couche 4 | Firewall = Couche 7.
  • Les flux récurrents sont à matcher en début d’ACL afin de ne pas surcharger le CPU de notre équipement.
  • Une ACL se place toujours au plus près de la source.
  • Vous voulez rajouter un flux ?
    • Désactiver l’ACL.
    • Effacer l’ACL.
    • Insérer la nouvelle ACL.
    • Appliquer la nouvelle ACL.
Portrait d'Eric Jouffrion, contributeur du site FingerInTheNet

Eric JOUFFRILLON

Co-auteur de l'article

Expert SATCOM
Technicien Réseau
17 ans d’éxpérience déploiement réseau SATCOM
Spécialisé LFN (Long Fat Network).Diffusion vidéo et QOS.

Photo en noir et blanc de Noël Nicolas

Noël NICOLAS

Auteur de l'article

Expert Réseau
15 ans d’expérience
CCNP Routing and Switching
Fondateur du site FingerInTheNet

Formation CCNA 200-301Formation CCNA

Devenez certifié CCNA 200-301

La formation complète Cisco, à votre rythme et accès à vie.

Voir la formation →