Tutoriaux > Internet & Réseaux > Les Access Control List (ACL) : Qu'est-ce que c'est et comment s'en servir pour le filtrage réseau
Les Access Control List (ACL) permettent notamment de faire du filtrage, c'est à dire de définir les droits des utilisateurs du réseau, selon leur adresse IP ou le type de paquets qui transitent.
Une Access Control List permet de filtrer les paquets IP, c'est à dire les paquets du niveau 3. Elle permet de définir les actions possibles des utilisateurs du réseau.
Ainsi, une ACL va indiquer au routeur les paquets qu'il doit accepter et ceux qu'il doit refuser, notamment en fonction de leur adresse IP de provenance, leur IP destination et les ports source et destination.
Les ACL sont lues de manière séquentielle par les routeurs, c'est à dire que c'est la première instruction rencontrée pour le paquet en question qui fait foi, et les instructions suivantes ne sont pas utilisées.
Nota : Une ACL non finie se termine toujours par deny any, pour refuser tous les paquets qui ne répondent à aucune règle de l'ACL et ainsi couvrir tous les cas possibles.
On distingue les types d'ACL selon le type de protocole de niveau 3 concerné. Ainsi, sur les routeurs CISCO on peut voir grâce à l'instruction access-list ? cette liste (Il faut être en mode de configuration) :
Code
RouterAidoweb(config)# access-list ?
<1-99> IP standard access list
<100-199> IP extended access list
<200-299> Protocol type-code access list
<300-399> DECnet access list
<600-699> Appletalk access list
<700-799> 48-bit MAC address access list
<800-899> IPX standard access list
<900-999> IPX extended access list
<1000-1099> IPX SAP access list
<1100-1199> Extended 48-bit MAC address access list
<1200-1299> IPX summary address access list
<1300-1999> IP standard access list (expanded range)
<2000-2699> IP extended access list (expanded range)
Les plus utilisées sont les <100-199> IP extended access list, car ce sont souvent des paquets IP qui transitent, notamment sur l'internet.
Les ACL permettent de désigner des groupes d'adresses grâce à l'utilisation d'un masque générique. Dans un masque générique, les 0 signifient qu'il faut vérifier la valeur du bit correspondant, et les 1 signifient qu'il faut l'ignorer.
Attention donc, à ne pas confondre masque générique et masque de sous réseau! Le masque générique permet de filtrer, alors que le masque de sous réseau permet de diviser grâce à l'utilisation d'une addition booléenne.
Code
Adresse IP: 10.1.128.0
Adresse IP (binaire) : 00001010 . 00000001 . 10000000 . 00000000
Masque générique : 0.0.15.255
Masque générique (binaire) : 00000000 . 00000000 . 00001111 . 11111111
Comment comprendre ce masque ? Rappelez vous, les 0 sont ceux qu'on doit trouver dans l'adresse IP, et les 1 ceux qui n'ont pas besoin d'être vérifiés.
Ainsi, une ACL utilisant ce masque laissera passer les paquets de 10.1.128.0 à 10.1.143.255 ! Vous ne comprenez pas pourquoi ? Voyons ça de plus près en binaire, avec des jolies couleurs
Une fois la plage d'adresses à laisser passer définie, il faut l'appliquer dans le routeur lui-même Un peu de langage Cisco s'impose... Une ACL s'applique en deux temps :
Il faut de plus définir le sens sur lequel l'ACL agit, c'est à dire si c'est en entré ou en sortie. (In ou Out).
Cela relève directement de l'utilisation des masques génériques. Ainsi, la syntaxe pour appliquer la règle créée ci-dessus serait : (N'oubliez pas que les ACL sont séquentielles et qu'il faut placer les règles dans le bon ordre ! )
Code
RouterAidoweb(config)# access-list 20 permit 10.2.128.0 0.0.15.255
On va accepter les paquets venant de la plage de données définie plus haut. Et le numéro 20 n'est que le numéro que l'on a donné à l'ACL, qui doit être compris entre 1 et 99, ou entre 1300 et 1999 (car c'est une ACL standard, sur le protocole IP)
L'ACL définie plus haut ne prend en compte que l'adresse IP source. Une ACL étendue permet de prendre en compte plus de critères, comme l'IP destination et les ports utilisés. Et nous avons donné le numéro 121 à l'ACL définie.
Code
RouterAidoweb(config)# access-list 121 deny tcp host 10.2.16.1 10.2.128.0 0.0.15.255 eq 23
Ainsi, ici on interdit à l'hôte 10.2.16.1 l'accès telnet (car port TCP 23) au réseau 10.2.128.0/20. Vous avez donc plus comprendre que la première IP concerne l'hôte (défini par host), la seconde le réseau destination, et la troisième est le masque générique.
Un autre exemple :
Code
RouterAidoweb(config)# access-list 122 permit tcp 10.2.128.0 0.0.0.255 any eq telnet
Ici on autorise tous les hôtes du réseau 10.2.128/24 à utiliser telnet vers tous les réseaux. Joli, non ?
Voici le code pour l'application de la liste 10, à l'interface FastEthernet 0/0 de notre routeur :
Code
RouterAidoweb(config)#interface fa0/0
RouterAidoweb(config-if)#ip access-group ?
<1-199> IP access list (standard or extended)
WORD Access-list name
RouterAidoweb(config-if)#ip access-group 20 ?
in inbound packets
out outbound packets
RouterAidoweb(config-if)#ip access-group 20 in
On a donc appliqué la règle 20, créée ci-dessus, à l'interface Fa0/0, pour les paquets entrants. Tous les autres paquets qui ne viennent pas de la plage d'adresses définie seront refusés.
Pour voir les ACL du routeur, c'est simple :
Code
RouterAidoweb# show access-lists
Ou, pour en voir une particulière :
Code
RouterAidoweb# show access-lists {numéro}
RouterAidoweb# show ip access-list {numéro}
Voilà, ce n'est qu'un bref aperçu des ACL mais j'espère que ça vous ouvrira les yeux sur leur fonctionnement Pour plus d'informations sur leur fonctionnement en profondeur et les syntaxes possibles, vous trouverez pas mal de ressources sur le net
Par Pouzy
, Le 14 Avril 2010 à 18h12
Ce tutoriel est la propriété d'Aidoweb et ne peut en aucun cas être copié.
Merci , c'est vraiment très bien expliqué
juste ce qu'il faut
C'est une bonne lecon
merci
c'est un bon LECON
merci, votre tuto m'est de bon aide
Tutoriaux > Internet & Réseaux > Les Access Control List (ACL) : Qu'est-ce que c'est et comment s'en servir pour le filtrage réseau