ACL - Access Control Liste
Une ACL (Access Control List) est un ensemble de règles qui contrôlent le trafic réseau en autorisant ou en refusant l'accès à certaines ressources en fonction de critères comme les adresses IP, les ports ou les protocoles.
Introduction
C’est quoi les Accès List (ACL) ou en français les listes d’accès ?
Les listes d’accès ont plusieurs fonctions possibles sur un routeur ; on l’utilise dans la sécurité d’un réseau comme moyen de :
- Filtrage
- De contrôle des mises à jour du routage
- De la gestion des priorités
- La gestion de la numérisation sur RNIS
- La sécurité d’accès aux informations
- Etc…
Une ACL est une liste ordonnée d’ACE (Access Control Entry) décrivant des règles de filtrage à appliquer au trafic des datagrammes IP.
- Les ACL IP standards testent uniquement l’adresse IP source dans le datagramme IP.
- Les ACL IP étendues testent : l’adresse IP source, l’adresse IP destination, le champ protocole et les Ports TCP ou UDP, etc.
Les ACL IP nommées fonctionnent comme les ACL numérotées, mais présentent plusieurs avantages :
- Un nom ou label est davantage significatif pour nous humains.
- Le nombre d’ACL n’est pas limité de 1 à 99 ou 100 à 199.
- Une simplification dans l’écriture des ACL en cas de modification, une instruction de l’ACL nommée peut-être supprimée séparément contrairement aux ACL numérotées où il faudra supprimer la liste entière.
- Les commentaires sont possibles.
Les ACL Standards numérotées
La logique implémentée par une liste d’accès peut être résumée par la séquence suivante :
- Le paquet est comparé aux paramètres de la première instruction de la liste.
- Si une correspondance est trouvée, l’action définie dans l’instruction est exécutée (soit autoriser ou rejeter).
- Si aucune correspondance n’est trouvée, les deux premières étapes sont répétées avec l’instruction suivante de la liste.
- Si aucune correspondance n’est trouvée par l’ensemble des instructions de la liste, le paquet est rejeté par défaut.
Chaque nouvelle instruction est inscrite à la fin de la liste.
La logique de traitement décrite précédemment nous montre que l’ordre des instructions est très important, pour ajouter une instruction « à sa place » dans la liste, il convient de supprimer la liste puis de la recréer.
Pour cela l’on peut utiliser la technique du copier-coller, ou encore se servir du service TFTP. (Remonter la configuration sur le serveur, la modifier, la redescendre sur le routeur).
Les ACL étendues numérotées
Les Access-List IP étendues sont presque identiques aux listes d’accès standard, en ce qui concerne leur emploi et la logique de traitement des instructions. Cependant elles permettent de comparer un plus grand nombre de champs dans un paquet. La logique de filtrage est par conséquent beaucoup plus complexe.
Néanmoins, ces deux types de liste peuvent filtrer des paquets en entrées comme en sortie.
Rappel :
- Les instructions de la liste sont traitées de façon séquentielle, c’est à dire que dès qu’une instruction fait l’objet d’une correspondance, la recherche prend fin et l’action définie par l’instruction est exécutée.
- Une instruction est considérée comme correspondante seulement si une correspondance est trouvée pour chacun de ses paramètres ; sinon son exécution est interrompue et l’instruction suivante de la liste est examinée.
- Si aucune correspondance n’est trouvée par l’ensemble des instructions de la liste, le paquet est rejeté par défaut.
Les ACL Standards nommées
Vous pouvez identifier votre Access-List par un nom ceci peut permettre d’utiliser plus de 99 Access-Lists simples.
Cette facilité est apparue avec la version 11.2 de l’IOS.
Ce type de liste n’est utilisable que pour le filtrage des paquets ou des routes au niveau d’une interface.
Une liste standard et une liste étendue ne peuvent pas avoir le même nom.
Pour utiliser une Access-List Nommée, la méthode et la syntaxe des commandes sont légèrement différentes.
Les ACL Etendues nommées
Vous pouvez identifier votre Access-List par un nom ceci peut permettre d’utiliser plus de 100 Access
Listes étendues.
Cette facilité est apparue avec la version 11.2 de l’IOS.
Ce type de liste n’est utilisable que pour le filtrage des paquets ou des routes au niveau d’une interface.
Une liste standard et une liste étendue ne peuvent pas avoir le même nom.
Pour utiliser une Access-List Nommée, la méthode et la syntaxe des commandes sont légèrement différentes.
Les ACL Dynamiques
Ce sont des listes d’accès dont certaines lignes peuvent être validées par une commande de type « EXEC » sur le routeur (access-enable).
L’option dynamique sera retenue pour les lignes activées par la commande EXEC : « access-Enable ».
Les ACL basées sur le temps
Ce type d’ACL permet d’autoriser un trafic donné en fonction de créneau horaire :
Les ACL réflectives
Les ACL réflectives sont apparues après les listes d’accès dynamique, de par leur fonctionnement elles mériteraient de porter le nom de listes dynamiques.
Les ACL réflectives sont un moyen simple de filtrer le trafic IP. Elles permettent d’autoriser le trafic initialisé depuis une station de votre réseau et d’interdire le trafic initialisé par une station étrangère. Par exemple lorsqu’un premier paquet arrive sur le routeur et qu’il est autorisé par la liste, une nouvelle entrée temporaire est créée et ajouter à la « réflective liste ».
Il existe deux restrictions relatives à l’utilisation des listes d’accès réflectives :
- Elles peuvent être définies uniquement avec des Access-Lists IP étendues nommées.
- Elles ne fonctionnent pas avec certaines applications qui utilisent des numéros de ports changeant en cours de session, comme le protocole FTP.
Schéma — Types d'ACL
Cas pratique
Nous allons passer en pratique sur comment mettre en place des ACL en créant un réseau dans le logiciel Packet Tracer, dans un prmier temps sur l'ACL - standard, puis un autre réseau avec les mêmes matériaux (même structure), mais en utilisant les ACL - Etendues ; comme cela vous permettra de mieux comprendre la différence de chacun.
Nous aurons besoin d'un serveur, de quatre ordinateurs, de quatre Switch et de trois routeurs, donc voici la topologie ci-dessous :
| Équipement | Adresse IP | Remarque |
|---|---|---|
| PC-1 | 192.168.1.254/24 | Configuré manuellement |
| PC-2 | 192.168.1.253/24 | Configuré manuellement |
| Switch-1 2960 | Commutateur LAN | -- |
| Routeur-1 Fa0/0 | 192.168.1.1/24 | Passerelle |
| Routeur-1 Fa1/0 | 192.168.4.1/24 | Passerelle |
| Switch-2 2960 | Commutateur LAN | -- |
| Routeur-2 Fa1/0 | 192.168.4.2/24 | Passerelle |
| Routeur-2 Fa0/0 | 192.168.2.1/24 | Passerelle |
| Switch-4 | Commutateur LAN | -- |
| PC-3 | 192.168.2.254/24 | Configuré manuellement |
| Routeur-3 Fa1/0 | 192.168.3.1/24 | Passerelle |
| Routeur-3 Fa0/0 | 192.168.4.3/24 | Passerelle |
| Switch-3 | Commutateur LAN | -- |
| Serveur | 192.168.3.254/24 | Configuré manuellement |
| PC-4 | 192.168.3.253/24 | Configuré manuellement |
Je vous laisse mettre en place les composants et leurs fournir des adresse IP pour chaque appareil en ce basent sur le tableau, avant de ce mettre a mettre en place les ACL.
Nous utiliserons la même topologie, pour la mise en place des ACL - standard et ACL - Etentdue, sur deux fichiers différent.
Mise en place de l'ACL - standard
Nous allons mettre en place l'access control list - standard avec les commandes lister ci-dessous, puis fait les tests d'accès du PC-4 vers le PC-3 avec la commande ping sur le PC-4.
! ── Passer en mode privilégié ─────────────────────────
Router> enable
! ── Entrer en mode de configuration globale ───────────
Router# configure terminal
! ── Renommer le Routeur 3 ───────────
Router(config)# hostname R3
! ── Création de ACL ───────────
R3(config)# ip access-list standard 1
! ── Déclaration du blocage de l'adresse IP ───────────
R3(config-std-nacl)# deny 192.168.2.0 0.0.0.255
! ── Permition sur d'autres accès ───────────
R3(config-std-nacl)# permit any
! ── Quitter l'interface ───────────
R3(config-std-nacl)# exit
! ── Accès à l'interface fstEthernet 0/0 ───────────
R3(config)# interface fastEthernet 0/0
! ── Configuration de l'interface FastEthernet 0/0 ───────────
R3(config-if)# ip access-group 1 out
! ── Quitter l'interface ───────────
R3(config-if)# exit
Nous pouvons faire le test d'accès au PC-3, avec la commande ping 192.168.2.254, normalement, il ne devrais plus avoir accès.
Mise en place de l'ACL - étendues
Nous allons mettre en place l'access control list - étendues avec les commandes lister ci-dessous, puis fait les tests d'accès du PC-1 vers le PC-3 avec la commande ping sur le PC-1.
! ── Passer en mode privilégié ─────────────────────────
Router> enable
! ── Entrer en mode de configuration globale ───────────
Router# configure terminal
! ── Renommer le Routeur 1 ───────────
Router(config)# hostname R1
! ── Création de ACL ───────────
R1(onfig)# access-list extended 101
! ── Déclaration du blocage de l'adresse IP ───────────
R1(config-ext-nacl)# deny tcp host 192.168.1.253 host 192.168.3.253
! ── Permition sur d'autres accès ───────────
R1(config-ext-nacl)# permit ip any any
! ── Quitter l'interface ───────────
R1(config-ext-nacl)# exit
! ── Accès à l'interface fstEthernet 0/0 ───────────
R1(config)# interface fastEthernet 0/0
! ── Configuration de l'interface FastEthernet 0/0 ───────────
R1(config-if)# ip access-group 101 in
! ── Quitter l'interface ───────────
R1(config-if)# exit
! ── Accès au groupe ACL 101 créé ───────────
R1(config)# ip access-list extended 101
! ── Déclaration du blocage sur le router R2 ───────────
R1(configext-nacl)# deny icmp host 192.168.2.254 host 192.168.3.253
Nous pouvons faire le test d'accès au PC-3, avec la commande ping 192.168.2.254, normalement, il ne devrais plus avoir accès.
Vérification de la configuration ACL
Commandes cisco pour vérifier les ACL d’un routeur
! ── Montre toutes les ACL du routeur ───────────
Router(config)# Show access-lists
! ── Montre une ACL en particulier ───────────
Router(config)# Show acces-lists « nom ou numéro »
! ── Montre les ACL qui sont appliquées à cette interface, et dans quel sens ───────────
Router(config)# Show ip interface « nom de l’interface »
! ── Voir la configuration courante (chercher access-list) ───────────
Router(config)# show running-config | include access-list
! ── Supprimer une ACL numérotée ───────────
Router(config)# Sno access-list « numéro ACL à supprimé »
! ── Supprimer une ACL nommée ───────────
Router(config)# no ip access-list standard BLOCK_SALES
Router(config)# nno ip access-list extended ALLOW_WEB
! ── Retirer une ACL d'une interface ───────────
Router(config)# interface fastEthernet 0/0
Router(config)# no ip access-group "Numéro de ACL à retirer" in
| Masque réseau | Wildcard mask |
|---|---|
| 255.255.255.0 | 0.0.0.255 |
| 255.255.0.0 | 0.0.255.255 |
| 255.0.0.0 | 0.255.255.255 |
| Hôte unique | host 192.168.1.1 |
| Tout le trafic | any |