Les ACLs

Une liste de contrôle d’accès (ACL – Access Control List) donne la possibilité d’identifié les types de paquet en énumérant les en-tête IP, TCP ou en encore TCP. Ainsi, nous pourrons faire correspondre des adresse IP sources ou des protocoles sources utilisés et des adresses IP de destination ou des protocoles de destinations. Avec cette correspondance, nous allons pouvoir attribuer des contrôles, autoriser ou refuser, autrement dit des règles. Les listes de contrôles d’accès sont généralement utilisées pour mettre en place des filtres mais ce n’est pas là sa seule utilité. En effet nous utilisons également la liste des contrôles d’accès pour faire correspondre des paquets et les niveaux de qualité de service (QoS). Dans ce chapitre, nous aborderons les ACL permettant de filtrer.

Les routeurs CISCO permettent d’attribuer des règles de filtrages sur les ports d’entrée ou sur les ports de sorties des paquets. Lorsque nous indiquons au port d’entrée, nous ferons en sorte que le paquet n’arrive pas jusqu’au processus de routage, ainsi nous économisons de la ressource matérielle. En règle générale une ACL, nous configurerons le filtrage au plus près de la restriction.

Pour illustrer ses propos, nous nous appuierons sur l’illustration suivant :

Dans ce schéma, si nous souhaitons que le PC vert ne communique pas avec le PC gris, nous devons configurer la règle de filtrage sur le port Gig0/0.

La correspondance des paquets

La correspondance des paquets fait référence à la manière de configurer les ACL, en indiquant qu’elles sont les informations utilisées pour filtrer, cela peut être une adresse IP ou un protocole. En d’autres termes la première phase de la configuration d’une règle de filtrage va être la recherche d’information. Nous configurerons de tel façon que le routeur qui reçoit le paquet puisse se poser la question « Est-ce que l’adresse IP ou le protocole qui a été indiquer dans l’ACL est présent dans ce paquet ?». Cette question, il se la posera lorsqu’un paquet arrive et pour toutes les ACLs qui auront été créé. Nous pourrions représenter ce processus dans le diagramme suivant :

Ce digramme représente un logigramme, en effet, les ACL suivent une logique. Ainsi, dès qu’une correspondance est trouvé, il n’ira pas plus loin. Par exemple, si nous indiquons explicitement un refus en première règle de filtrage et qu’en deuxième règle de filtrage nous acceptons tous les paquets, tous les paquets seront refusé. Dans le cas où nous inversons ses règles tous les paquets seront acceptés.

Les types des ACL

Pour créer des règles de filtrage, nous pouvons nous appuyer sur 3 types de liste de contrôle que nous allons décrire dans ce chapitre.

ACL standard

Les ACL standard sont identifiées par un nombre de 1 à 99 et de 1300 à 1999. Ce type d’ACL se concentre uniquement sur les adresses IP. Nous pourrons ainsi autoriser ou interdire un réseau de communiquer avec un autre réseau.

Pour illustrer ses propos, nous allons partir de la topologie suivante :

Sur le routeur nous aurons la configuration suivante :

Router(config)#interface GigabitEthernet0/0
Router(config-if)#ip address 192.168.0.254 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#interface GigabitEthernet0/1
Router(config-if)#ip address 192.168.1.254 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#interface GigabitEthernet0/2
Router(config-if)#ip address 192.168.2.254 255.255.255.0
Router(config-if)#no shutdown

A ce stade, les machines réseaux sont interconnecté par le routeur et sont donc en mesure de
communiquer entre eux.
Nous allons maintenant interdire le réseau 192.168.0.0 de communiquer avec le réseau 192.168.1.0. Nous
allons donc interdire sur l’interface gig 0/0 de laisser passer le trafic extérieur émanant du réseau
192.168.1.0
Pour traduire cela en ligne de commande nous devons faire 3 choses :

  1. Créer la règle
  2. Sélection l’interface qui sera concerné par la règle
  3. Appliquer la règle

Créer la règle

Router(config)#access-list 1 deny 192.168.1.0 0.0.0.255

Ici, nous déclarons le réseau avec son masque inversé.

Sélection l’interface qui sera concerné par la règle

Router(config)#interface gigabitEthernet 0/0

Appliquer la règle

Router(config-if)#ip access-group 1 out

Dan cette partie on applique l’ACL n°1 que nous avons créé à l’étape « Créer la règle » puis nous indiquons que cette règle s’applique pour les paquets extérieurs au réseau de l’interface.

Nous créerons aussi une seconde règle qui autorisera le réseau 192.168.2.0

Router(config)#access-list 2 permit 192.168.2.0 0.0.0.255
Router(config)#interface gig 0/0
Router(config-if)#ip access-group 2 out

Nous pouvons maintenant tester que les règles sont bien opérantes.

En bref, notre première règle était le refus des paquets avec, dans l’entête, une adresse source du réseau 192.168.1.0. Mais pour accepter les paquets venant du réseau 192.168.2.0, nous sommes obligées de créer la règle. En effet, si nous ne créons pas cette adresse, il n’y aura pas de correspondance entre l’IP source contenu dans l’entête du paquet et les règles, ce qui entrainera un « deny » implicite. En partant de ce principe, dans ce contexte, nous aurions très bien pu ne configurer que la règle pour le réseau 192.168.2.0, ce qui aurait implicitement interdit le réseau 192.168.1.0.

ACL étendues

Les ACL étendues, comme son nom le laisse supposer, étendrons les possibilités de la liste de contrôle, nous allons pouvoir filtrer en se basant sur les adresses IP de l’entête du paquet mais nous allons pouvoir aussi étendre les informations vers des informations du segment à savoir le port ou le protocole contenu dans les entêtes de segment. Cela nous permettra de créer des règles de filtrage qui soit le plus fin possible, on pourrait ainsi interdire les requêtes ping vers un serveur de fichier mais pas l’accès aux dossiers partagés qu’il héberge.

Les ACL étendues sont, comme les ACL étendues, identifiable par un numéro, de 100 à 199 et de 2000 à 2699.

La configuration observera les mêmes étapes que les ACL standard à savoir :

  1. Création de la règle
  2. Sélection de l’interface
  3. Appliquer la règle à l’interface

Pour la mise en place d’une ACL étendue, nous repartirons de la même topologie que nous avons utilisé pour les ACL standard. Il faudra bien évidemment effacer les fichiers de configuration. Nous créerons une règle qui interdit le requête ICMP de PC2 vers PC3 et nous autoriserons les requêtes ICMP de PC2 vers PC1.

Pour la configuration des interfaces nous garderons la même configuration que nous avons utilisé dans la partie ACL standard.

Router(config)#interface GigabitEthernet0/0
Router(config-if)#ip address 192.168.0.254 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#interface GigabitEthernet0/1
Router(config-if)#ip address 192.168.1.254 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#interface GigabitEthernet0/2
Router(config-if)#ip address 192.168.2.254 255.255.255.0
Router(config-if)#no shutdown

Puis nous créerons les règles

Router(config)#access-list 100 deny icmp 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255
Router(config)#access-list 100 permit icmp 192.168.0.0 0.0.0.255 192.168.1.0 0.0.0.255
Router(config-if)#interface gig 0/1
Router(config-if)#ip access-group 100 out

Nous pouvons maintenant tester depuis PC2

ACL nommées

Les ACL nommées regroupent les ACL standard et les ACL étendues mais contrairement à ses types d’ACL, les ACL nommées ne sont pas identifiées par un nombre mais par une valeur qui peut être alphanumérique. Elle apporte également une flexibilité dans l’ordre des ACL. En effet, lorsque que vous créer une ACL standard ou ACL étendues, un numéro de séquence est créé par règle, ce numéro de séquence indique l’ordre qui sera utilisé par le processus correspondance de paquet. Le numéro de séquence est incrémenté de 10 à chaque nouvelles règles. Ainsi la première règle d’une liste de contrôle aura comme numéro de séquence 10, la seconde 20 et ainsi de suite.

Nous pouvons le vérifier en nous basant sur le TP de mise en pratique d’une ACL étendue, via la commande permettant d’afficher les contrôles d’une liste.

On voit dans cette capture que les règles ont bien un numéro de séquence.

Si nous souhaitons créer une règle qui autorise la machine 192.168.2.1 à envoyer des requêtes ICMP, il faudra donc la place avec la première règle, c’est-à-dire attribuer à la règle valeur inférieur à 10 et par conséquent créer une ACL nommée.

Commençons par supprimer l’ACL étendue

Router(config)#no access-list 100

Nous pouvons maintenant créer notre liste de règle.

Nous devons explicitement indiquer si elle est de type standard ou étendue. Dans notre cas, nous agissons sur le protocole ping donc c’est une ACL étendue. Nous devons également lui attribuer un nom. Cela se traduira par la commande :

Router(config)#ip access-list extended ICMP_192.168.2.1_AUTORISER

Ensuite, nous créerons la règle, ici le numéro de séquence doit être inférieur à 10 par exemple 8. De plus, nous allons autoriser une IP d’une machine et non un réseau entier.

Router(config)# 10 deny icmp 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255
Router(config)# 20 permit icmp 192.168.0.0 0.0.0.255 192.168.1.0 0.0.0.255
Router(config)#8 permit icmp host 192.168.2.1 192.168.1.0 0.0.0.255

Nous allons sélectionner l’interface qui sera concerné par cette règle

Router(config-ext-nacl)#interface gig 0/1

Pour nous terminerons, en attribuant la règle à l’interface.

Router(config-if)#ip access-group ICMP_192.168.2.1_AUTORISER out

Pour faire les tests de bon fonctionnement, nous modifierons la topologie de la façon suivante :

PC2 devra pouvoir communiquer avec PC3 mais pas avec PC4.