ACL
1- Définition
Une liste de contrôle d’accès est une collection d’instructions permettant
d’autoriser ou de refuser des paquets en fonction d’un certain nombre de
critères, tels que :
-L'adresse d'origine
-L'adresse de destination
-Le numéro de port.
-Les protocoles de couches supérieures
-D’autres paramètres (horaires par exemple)
Les listes de contrôle d'accès permettent à un administrateur de gérer le
trafic et d'analyser des paquets particuliers.
Les ACLs sont associées à une interface du routeur, et tout trafic acheminé par
cette interface est vérifié afin d'y déceler certaines conditions faisant
partie de la liste de contrôle d'accès.
Les ACL peuvent être créées pour tous les protocoles routés. Il faut donc
définir une liste de contrôle d'accès dans le cas de chaque protocole activé
dans une interface pour contrôler le flux de trafic acheminé par cette
interface.
|
|
Dans le cas de certains protocoles, il
faut créer une liste de contrôle d'accès pour filtrer le trafic entrant et
une pour le trafic sortant. |
2- Vérification
des paquets
Lorsque le routeur détermine s'il doit acheminer ou bloquer un paquet, la
plate-forme logicielle Cisco IOS examine le paquet en fonction de chaque
instruction de condition dans l'ordre dans lequel les instructions ont été
créées.
Si le paquet arrivant à l’interface du routeur satisfait à une condition, il
est autorisé ou refusé (suivant l’instruction) et les autres instructions ne
sont pas vérifiés.
|
|
Si un paquet ne correspond à aucune
instruction dans l’ACL, le paquet est jeté. Ceci est le résultat de
l’instruction implicite deny any à la fin de chaque ACL. |
3- Création des
ACL - Généralités
Pour créer une liste de contrôle d’accès, il faut :
• Créer la liste de
contrôle d'accès en mode de configuration globale.
• Assigner cette ACL à une
interface
Structure générique d’une ACL : Router(config)#access-list numéro
d’ACL {permit|deny} instructions
a) Les
différents types d’ACL
Il existe 3 types de liste de contrôle d’accès : les ACLs standards,
les ACLs étendues et les ACLs nommées.
Les ACLs standards utilisent des spécifications d’adresses simplifiées et
autorisent ou refusent un ensemble de protocole.
Les ACLs étendues utilisent des spécifications d’adresses plus complexes et
autorisent ou refusent des protocoles précis.
Les ACLs nommées peuvent être soit standards, soit étendues ; elles n’ont
pour but que de faciliter la compréhension et de connaître la finalité de
l’ACL.
b) Assignation
des ACLs aux interfaces
Les listes de contrôle d'accès sont affectées à une ou plusieurs interfaces
et peuvent filtrer du trafic entrant ou sortant, selon la configuration. Nous
verrons plus loin où placer les ACLs de façon optimale selon le type d’ACL
créée.
|
|
Une seule liste de contrôle d'accès
est permise par port, par protocole et par direction, c’est-à-dire qu’on ne
peut pas par exemple définir deux ACLs sur l’interface E0 pour le trafic IP
sortant. Par contre, on peut définir deux ACLs pour le trafic IP mais, une
pour le trafic entrant et l’autre pour le trafic sortant… |
c) Numéro
des ACLs
Au moment de configurer les listes de contrôle d'accès il faut identifier
chaque liste de protocole en lui attribuant un numéro unique.
Le numéro choisi pour identifier une liste de contrôle d'accès doit se trouver
à l'intérieur d'une plage précise, valable pour le protocole.
|
Plage |
Protocole |
|
1-99 |
IP standard |
|
100-199 |
IP étendue |
|
600-699 |
AppleTalk |
|
800-899 |
IPX standard |
|
900-999 |
IPX étendue |
|
1000-1099 |
IPX Service Advertising Protocol |
Par exemple, si l’on affecte le numéro 30 à une ACL, cela induit le fait que
cette ACL sera de type standard et concernera le trafic IP.
d) Le masque
générique
Un masque générique est jumelé à une adresse IP. Les chiffres 1 et 0 sont
utilisés pour indiquer la façon de traiter les bits de l'adresse IP
correspondante.
0 pour vérifier et 1 pour ne pas vérifier
Prenons l’exemple suivant :
On veut vérifier (autoriser ou refuser) les sous réseaux 172.30.16.0 à
172.30.31.0
Les deux premiers octets de l’adresse IP sont identiques
16 en notation binaire: 0001 0000
31 en notation binaire: 0001 1111
Les bits commencent à être différents à partir du 4ème bit de ce 3ème octet.
A partir de là on met tous les bits à 1
à Le masque générique est alors 0.0.15.255
4- Création d’une ACL standard
Voici la structure d’une ACL standard :
Router(config)#access-list n° de l’ACL {deny | permit} adresse d’origine
masque générique
Soit la topologie suivante :

On veut interdire au réseau « Invité » d’accéder au réseau
« Comptabilité ».

Le numéro de l’ACL est 1 : il s’agit donc d’une ACL ip standard
L’adresse d’origine est 192.168.0 et le masque est 0.0.0.255
On note que les trois premiers octets du masque ne sont constitués que de 0 et
que le dernier octet n’est constitué que de 1. On vérifie donc exactement les
trois premiers octets de l’adresse d’origine, mais on ne s’occupe pas du
dernier octet.
On a donc bien interdit (deny) tous les postes du réseau 192.168.0.0
La deuxième ligne indique d’autoriser (permit) tout le reste (any), car
n’oublions pas qu’il y a toujours une commande implicite « deny any »
à la fin des ACLs
La deuxième étape est d’affecter cette ACL à une interface du routeur.

On s’aperçoit que le routeur qui a été choisi est Routeur_A. En effet avec
les ACLs standards, comme on ne peut définir que l’adresse d’origine, on place
ces ACLs au plus près de la destination.
Si on avait mis cette ACL sur le routeur B on aurait interdit l’accès à partir
de ce routeur, alors qu’on ne veut interdire que l’accès au réseau
« Comptabilité ».
L’ACL est définie en « out » : on interdit donc le trafic
(requête) provenant du réseau « Invité » à sortir sur
l’interface du réseau « Comptabilité ».
Si on veut interdire du trafic à rentrer sur une interface, on remplace
« out » par « in ».
|
|
Si on ne définit ni «in» ni «out», la
valeur «out» est prise par défaut. |
5- Création
d’une ACL étendue
Voici la structure d’une ACL étendue :
Router(config)# access-list numéro-liste-d'accès {permit | deny}
protocol adresse d’origine masque générique adresse destination
masque générique operateur operande [established]
Operateur operande : lt, gt, eq neq suivi d’un numéro de port
Lt pour lower than (plus petit que)
Gt pour greater than (plus grand que)
Eq pour equal (égal à)
Neq pour non equal (différent de)
Established permet au trafic TCP de passer si les bit ACK sont activées.
Soit la topologie suivante :

Pour cet exemple, on veut refuser au stagiaire d’accéder au serveur TFTP.

On remarque que le mot host a été tapé avant les adresses IP. Ce mot permet
d’éviter de devoir taper le masque générique 0.0.0.0 après l’adresse IP. Host
signifie donc qu’il faut vérifier tous les bits de l’adresse IP.
eq tftp indique qu’il faut interdire le trafic tftp uniquement.
Le protocole indiqué est UDP ; en effet, UDP est le protocole de couche
supérieure qui supporte le service TFTP.
La deuxième ligne indique qu’il faut autoriser tout le reste du trafic (IP)
pour n’importe quelle source (any) vers n’importe quelle destination (le
deuxième any).
Assignons désormais cette ACL :

On remarque que l’ACL a été placée sur le routeur C, au plus proche de la
source. Les ACLs étendues nous permettent de spécifier l’adresse de
destination, il est donc possible de bloquer au plus vite les paquets non
désirés, et d’éviter qu’ils atteignent le routeur A , et donc de polluer la
bande passante pour des paquets qui seront refusés.
6- Les ACL
nommées.
Voici la syntaxe des ACLs nommées :
access-list {standard | extended} nom de l’ACL instructions
|
|
Les listes de contrôle d'accès nommées
ne sont pas compatibles avec les versions de la plate-forme logicielle IOS
Cisco antérieures à la version 11.2. Vous ne pouvez pas utiliser le même
nom dans le cas de listes de contrôle d'accès multiples. |
Reprenons l’exemple précédent, on peut nommer cette ACL
« stagiaire » ce qui sera plus parlant qu’un numéro.
On procède comme
suit :
Router_C(config)#
access-list extended Stagiaire deny udp host 212.16.23.6 host 10.23.4.6 eq tftp
Router_C(config)# access-list Stagiaire permit ip any any
Router_C(config-if) ip access-group Stagiaire out
7- Vérifier ses
ACLs
Utilisez la commande show access-lists pour afficher le contenu de
toutes les listes de contrôle d'accès.
Utilisez la commande show access-lists suivie du nom ou du numéro d'une
liste de contrôle d'accès pour afficher le contenu de cette liste d'accès