ACL Wildcard Masking

Vue d’ensemble

ACL Wildcard Masking: Une ACL qui signifie : Access Control List est une fonctionnalité de l’IOS Cisco utilisée pour identifier le trafic. L’ACL permet à un administrateur de créer un ensemble de règles qui permette d’autoriser ou d’interdire n’importe quel type de trafic en fonction des informations contenues dans le paquet IP.
Les ACL’s peuvent être utilisés sur des routeurs ou des switchs.

Opération

L’ACL fonctionne dans un ordre séquentiel logique. L’en-tête du paquet, est analyser par les ACL, l’une à la suite de l’autre, de haut en bas. Si une instruction ACL correspond au paquet, alors le reste des ACL sera ignoré. Le paquet est alors autorisé ou refusé, comme on le voit sur la diapo. Si l’en-tête du paquet ne correspond pas à l’instruction ACL, alors le paquet est testé à la seconde instruction et ainsi de suite. Ce processus se poursuit jusqu’à la dernière ACL

ACL

La dernière ACL de la liste, est-ce qu’on appelle une ACL implicite de deny qui refuse systématiquement le paquet. Si aucune des ACL ne matche avec l’entête IP, alors le paquet entier sera détruit.

Wildcard Masking

Pour utiliser certains protocoles ou fonctionnalités des routeurs, on fait parfois appel aux « wildcard masks », qui signifie :  masques inverses. Il permet d’identifier un sous-réseau ou un range d’adresses IP. C’est comme pour le protocole de routage OSPF et aussi pour le NAT, ils utilisent des masques inversés.

Les Wildcard mask, servent à identifier les adresses qui correspondent ou non à certains critères (en principe pour un range d’adresse IP). Leur particularité réside dans la manière dont ils sont appliqués.

Lors de l’application d’un wildcard mask il faut garder en tête que :

  • Un bit avec une valeur de 0 vérifie la correspondance de l’adresse.
  • Un bit avec une valeur de 1 ignore la valeur correspondante de l’adresse.

Prenons un exemple :

Un réseau 193.62.31.64 avec un wildcard mask à 0.0.0.63 (ce qui correspond à un /26). D’un côté vous avez le format décimal et de l’autre le format binaire.

Chaque bit de l’adresse qui correspond à un bit à 0 dans le masque devra être identique pour correspondre au réseau. Dans le cas présent, seuls les 6 derniers bits de l’adresse peuvent varier. Toutes les adresses qui commenceront par ces binaires feront donc partie du range. C’est-à-dire en décimal de 193.62.31.64 a .127

Il y a bien sur un moyen de calculer plus rapidement ces masques inversés. Généralement on utilise des masques inversés correspondant à des sous-réseaux :

  • 4 fois correspond à un masque « normal » /32 ou 4 fois 255, dans ce cas, cela match, une seule adresse.
  • 0.0.63 correspond à un masque en /26 ou 3 fois 255.192
  • 0.0.255 correspond à un masque en /24 ou 3 fois 255.0
  • 0.2 fois 255 correspond à un masque en /16 ou bien 2 fois 255.0.0
  • Et ainsi de suite.

Pour calculer rapidement le masque inversé d’un sous réseau le plus simple est de faire une simple soustraction comme représentée sur la diapo :

Si on prend 4 fois 255 et qu’on soustrait à un masque de sous réseau normal, cela nous donne le masque inversé. 255 moins 255 donne 0. 255 moins 192 donne 63. Et 255 moins 0 donne 255.

Types d’ACL

Types d'ACL

Il existe deux principaux types d’ACL :

  • Les ACL standards vérifient les adresses sources des paquets pouvant être acheminés. Le résultat autorise ou refuse la sortie d’une suite de protocoles entière, basée sur le réseau source, le sous-réseau ou l’adresse IP de l’hôte. Elles sont numérotées de 1 à 99 et de 1300 à 1999. En général on les appliquera principalement le plus proche possible de la destination en raison de leurs faibles précisions
  • Les ACL étendues vérifient les adresses des paquets source et de destination. Ils peuvent également rechercher des protocoles spécifiques, des numéros de port et d’autres paramètres, ce qui permet aux administrateurs plus de flexibilité et de contrôle. Elles sont numérotées de 100 à 199 et 2000 à 2699. Les étendues sont plutôt à appliquer le plus proche possible de la source.

ACL Standard : Configuration

Les ACL standards se configurent sur un routeur Cisco en mode de configuration globale. La commande « access-list » permet de crée une entrée ACL

access-list

  • 172.16.0.0 avec un masque inversé de 0.0.2 fois 255 signifie n’importe quelle adresse source qui commence par 172.16.
  • Une ACL standard est numérotée de 1 à 99, ou de 1300 à 1999, ici dans l’exemple nous avons choisi le 1.

La sortie de la commande show access-list affiche les ACL actuellement configurées.

show access-list

Pour supprimer entièrement une ACL, il faut faire un : no access-list + son numéro d’ACL  en mode de configuration globale.

no access-list

Utilisez de nouveau la commande show access-list permet de confirmer que l’ACL « une » a bien été supprimée. Une ACL pouvant contenir plusieurs lignes, il n’est pas possible de supprimer une ligne individuellement… Le no access-list  avec son numéro supprime tout le contenu de l’ACL. La seule manière d’enlever ou de modifier une ACL serait de copier l’ACL totale dans un éditeur de texte, de faire les changements nécessaires ensuite supprimer l’ACL du routeur avec la commande no access-list et de copier / coller l’ACL modifiée à partir de l’éditeur de texte. Les nouvelles versions de l’IOS permettent une édition plus simple en utilisant une numérotation séquentielle.

 

 

Filtrer le trafic réseau

La nécessité d’implémenter un filtrage du trafic réseau pour limiter ou restreindre l’accès sur une ressource réseau est une tâche commune pour les administrateurs réseau. L’ACL permet de contrôler l’ accès en fonction des informations d’entêtes de paquets de la couche 3.

Ici, nous souhaitons restreindre l’accès internet au PC2.

Filtrer le trafic réseau

Pour cela, il est possible d’implémenter le filtrage du trafic sur le routeur soit en entrée sur l’interface qui est connectée au réseau local ou soit en sortie sur l’interface connectée à Internet. En utilisant une ACL standard, il est possible d’empêcher les paquets de PC2 d’entrer ou de sortir du routeur. Il ne faudra pas oublier d’autoriser explicitement le trafic des autres périphériques du réseau local, car nous voulons appliquer cette règle uniquement au PC1.

Pour se faire, il y’a 2 endroits où il est possible de placer l’ACL. Soit en entrée ou soit en sortit du routeur.

  • Pour une ACL sortante : les paquets entrants sur le routeur sont acheminés vers l’interface de sortie puis sont traités via l’ACL sortante. Si les paquets sont autorisés, ils sont transmis à l’interface. Si les paquets ne sont pas autorisés ou qu’il ya aucune correspondance, ils seront éliminés.
  • Et pour une ACL entrante : les paquets entrants sont traités par l’ACL avant d’être acheminés vers l’interface de sortit. Dans ce cas, L’ACL entrante est efficace, car elle évite au routeur d’acheminer le paquet à la sortie pour qu’au final il soit supprimé… Si le paquet est autorisé alors il sera traité pour le routage.

Sur cette image, l’ACL est placée sur l’interface de sortie.
On voit le paquet arrivé sur l’interface entrante nommé E0, puis il est traité par le routeur.
Comme il reconnait le réseau, il effectue le routage vers son interface de sortie. C’est là que l’ACL entre en jeu. Si c’est accordé le paquet sortira par l’interface S0, et s’il n’est pas autorisé, il sera supprimé.

Afin d’éviter que le routeur applique le routage pour des paquets qui seront au final supprimés, il est plus judicieux de placer l’ACL en entrée, plutôt qu’en sorti.

ACL sortante

Application aux interfaces

Après avoir configuré une ACL, il faut l’appliquer à une interface à l’aide de la commande IP access-group. Une seule ACL n’est autorisée par protocole, par direction et par interface

IP access-group 1 out, applique L’ACL 1 sur l’interface en sortie :

 IP access-group

IP access-group 2 out applique L’ACL 2 sur l’interface en entrée :

 IP access-group out

Pour supprimer une ACL d’une interface, il faut utiliser la même commande avec le « no », directement sur l’interface, puis si on veut la supprimer complètement, il faut compléter la commande par un no access-list  dans le mode de configuration globale.

Il y’a seulement 3 étapes pour mettre en service une ACL :

  • 1 : Tout d’abord, il faut crée une entrée ACL en mode de configuration globale
    Par exemple cette ACL correspond à n’importe quelle adresse qui commence par 10.1.1
  • 2 : Ensuite il faut choisir l’interface ou l’on souhaite appliquer cette ACL
    Branch(config)# interface GigabitEthernet 0/0
    Pour cela il suffit simplement de se connecter sur l’interface. Dans l’exemple on prend la gigabitethernet 0/0
  • 3 : et pour finir, il faut utiliser la commande IP access-group pour l’activer.

Branch(config-if)# IP access-group 1 in
Dans l’exemple, l’ACL est positionnée en entrée de l’interface.

Prenons un exemple, nous souhaitons refuser l’accès à internet pour l’hôte PC2 qui porte l’IP 10.1.1.101 tout en autorisant les autres PC de ce même LAN.

IP access-group 1 in

IP access-group 1 in

Comme la lecture d’une ACL se fait de haut en bas, nous allons créer la première entrée en refusant le PC2 et la seconde en autorisant tout le LAN 10.1.1.0/24

Ensuite nous appliquons cette ACL à l’interface GI0/1 en sortit.

Il est important de spécifier une ligne qui autorise tout le reste du réseau, car implicitement pour des raisons de sécurité, la dernière entrée refuse tout passage. En gros si aucune entrée n’est matchée, le paquet est supprimé.

Vous remarquerez que l’ACL a été placé en sortie du routeur. On aurait pu également la positionner directement sur l’entrée GI0/0. Cela empêcherait toujours la communication de PC2 avec Internet, mais également toute communication avec le routeur.

ACL nommée

Au lieu de déclarer l’ACL standard par un numéro compris entre 1 à 99 et 1300 à 1999, il est possible de lui affecter un nom. Cela permet d’avoir une description sur la fonction de l’ACL. Très utile quand on en a plusieurs.

Dans le mode de configuration global, la commande IP access-list standard + le nom, permet de déclarer une ACL nommée.

ACL nommée

Le nom qu’on attribue à l’ACL (ici Subnet_ONLY) doit être unique.

  • Chaque ligne qu’on rentre dans une ACL est numérotée à partir 10 et incrémentés de 10 pour les suivantes.
  • La commande no 10 dans l’ACL supprime seulement la ligne numérotée en 10.

Ainsi, l’avantage des ACL nommées est qu’il est possible de supprimer ou modifier une ligne sans devoir supprimer l’ACL en entier.

Pour rattacher une ACL nommée sur une interface, il s’agit de la même commande sauf qu’a la place du numéro on met le nom.

ACL nommée

Nommer une ACL permet de mieux comprendre sa fonction. Par exemple, une ACL qui refuse un sous-réseau peut être appelée « NO_Subnet ».

Sur cette image,

Le résultat de la commande « show access-lists » affiche directement les commandes qui ont été utilisées pour configurer L’ACL standard qui est nommée Subnet_ONLY sur le routeur Branch. L’ACL permet le trafic des hôtes sur le sous-réseau 10.1.1.0/24.

Admettons que nous souhaitons maintenant, refuser l’accès uniquement à l’hôte 10.1.1.25 comme les ACL nommées permettent cette fois-ci d’ajouter, de modifier ou de supprimer des entrées individuelles dans une ACL spécifique.

show access-lists

Il est alors possible d’utiliser des numéros de séquence pour insérer une instruction ou l’on souhaite dans l’ACL.

Par défaut la première entrée de l’ACL a été nommé 10. Dans l’exemple on insère une entrée qu’on nomme 5 pour interdire le PC 10.1.1.25. On s’aperçoit bien que l’insertion de cette entrée se soit faite au-dessus de la première instruction qui a été rentrée.

Si un redémarrage de l’équipement a lieu, automatiquement les numéros de séquence se mettront à jours, et suivront leurs incrémentations de base par 10.

Ce qui veut dire que le deny host portera le chiffre 10 et le permit aura le chiffre 20.

La commande access-list resequence permet la mise à jour de ces séquences sans faire de redémarrage.

Suivez le parcours CCNA sur le site Formip et retrouvez tous nos cours pour réussir votre CCNA sur la chaîne YouTube de Formip.

A lire également

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *