acl
Les ACLs pour Access Control List sont implémentées sur les switchs et routeurs CISCO ; c'est un mécanisme de filtrage de paquets. Il existe 3 types d'ACLs :
Par convention ou par abus de langage, on appelle souvent ACLs les RACLs (se sont de loin les plus utilisées). Dans la suite de cet article nous utiliserons cette contraction.
Il existe les ACLs standards (numérotées de 1-99 ou 1300-1999) et les ACLs étendues (numérotées 100-199 ou 2000-2699).
(config)#ip access-list <numéro entre 1-99> {permit | deny} <ip source> [<wildcard>]
(config)#access-list <numéro> {permit | deny} <procole> <adresse src> <wildcard src> [<port src]] <adresse dst> <wildcard dst> [<port dst>] [established] [log]
(config)#ip access-list <standard | extended> <nom_de_l'ACL> (config-std-nacl)#permit ip host 10.0.0.1 host 10.0.1.1 log
Les ACLs standards doivent être placées au plus près de la destination, alors que les ACLs étendues doivent être placées au plus près de source.
On applique une access-list sur une interface en “in” ou en “out” (entrée ou sortie de l'interface) :
Router(config)#interface fa0/0 Router(config-if)#access-group 1 {in | out}
Une ACL est lue de manière séquentielle = ligne 1 puis ligne 2, etc. Si la ligne 1 matche, le routeur applique la règle pour le paquet et sort de l'ACL. Ainsi, si plusieurs lignes conviennent pour un même paquet, seule la première sera appliquée.
Voici une manière habile de modifier une ACL “proprement”, c'est-à-dire de la façon la plus efficiente. Soit l'ACL étendue suivante :
#show access-lists Extended IP access list 101 1 permit ip host 10.0.0.1 host 10.0.1.1 2 permit ip host 10.0.0.1 host 10.1.1.1 3 deny tcp host 10.2.1.1 host 10.3.1.1 eq www
On veut ajouter la ligne deny tcp ip host 10.0.0.1 host 10.1.1.1 eq www
en #2. La façon “classique” est de supprimer l'ACL et de la réécrire en insérant la ligne supplémentaire.
La façon la plus rapide est de faire comme ceci :
(config)#ip access-list resequence 101 10 10 (config)#ip access-list extended 101 (config-ext-nacl)#11 deny tcp ip host 10.0.0.1 host 10.1.1.1 eq www (config)#ip access-list resequence 101 10 10
Dans l'ordre, on renumérote les lignes de l'ACL en commençant à 10, et de 10 en 10 (10, 20, 30) ; puis on édite l'ACL pour insérer notre ligne entre les lignes 10 et 20 (exclues) ; enfin, pour avoir une numérotation “propre”, on renumérote l'ACL pour avoir un incrément de 10 entre chaque numéro de ligne.
NB : pour remplacer une ligne :
25 permit etc..
)no <No_Sequence>
)resequence
)Exemple d'ACL de niveau 2, appliqué sur une interface physique :
Switch(config)# mac access-list ext Filter_mac Switch(config-ext-macl)# deny host XXXX.XXXX.XXXX any Switch(config-ext-macl)# permit any any Switch(config-ext-macl)# exit Switch(config)# int g1/0/40 Switch(config-if)# mac access-group Filter_mac in
Les VLAN Access-list ou VLAN access maps sont des ACLs de niveau 2 ou 3, qui s'appliquent sur un VLAN ; elles peuvent donc filtrer du trafic par adresse MAC, mais sont assez peu utilisées.
Pour les mettre en place, il faut spécifier une ou plusieurs map sequence qui associent une action à une ACL ; si un permit de l'ACL “matche”, l'action est appliquée ; si c'est un “deny”, les map sequence suivantes sont vérifiées jusqu'à ce que ça matche. Si un paquet ne match aucune ligne et qu'au moins une ACL de son type est configurée, par défaut le paquet sera droppé.
Ici donc, comme dans les route-map, les termes permit et deny ne sont pas à prendre au sens strict mais en fonction du contexte.
! déclaration de l'ACL niveau 2 mac access-list extended MAC-ACL permit host 0050.5611.05b1 any ! Déclaration de l'access map 1 ; le numéro de séquence (10 ici) est optionnel ; ! il permet de déterminer un ordre d'application dans le cas de multiples access-map ! On filtre (match) sur les adresses MAC (|IP|IPX) en spécifiant "mac address", suivi du nom de l'ACL filtrante ! L'action effectuée en cas de match est de forwarder les paquets vlan access-map 1 10 match mac address MAC-ACL action forward
! Pour dropper le reste on doit créer un second statement (20) vlan access-map 1 20 action drop
! On associe l'access-map qu'on vient de mettre en place aux VLAN 11 et 12 vlan filter 1 vlan-list 11,12
Dans l'exemple précédent on filtre les flux des VLANs 11 et 12 pour ne forwarder que les paquets de la machine d'adresse MAC 0050.5611.05b1.
Cisco permet aussi, avec ses IOS récents, d'inclure la notion de temps sur les ACLs.
Voici un exemple :
! définiton de la période time-range semaine_de_travail periodic weekdays 8:00 to 17:00 ! ! utilisation dans l'ACL ip access-list extended 101 permit tcp 10.0.0.0 0.0.0.255 172.16.1.0 0.0.0.255 eq ssh time-range semaine_de_travail