M21 Liste d'accès
Pré requis pour les ACLs Les listes de contrôle d'accès suppose une connaissance complète des protocoles de la pile TCP/IP (tcp, udp, ip, icmp) des applications courantes (ftp, telnet, ssh, smtp, ) Connaissance de la politique de sécurité de l'entreprise besoin en communication entre les différentes entités organisationnelle, Deux conceptions pour la mise en place de la sécurité: j'autorise tout sauf ce qui est explicitement interdit très rapide à mettre en œuvre risques non négligeable d'intrusion (interdiction après incident) j'interdis tout et j'autorise au cas par cas délicat à mettre en place maîtrise complète des flux circulant sur le réseau
Généralité Une Liste d'accès est une séquence d'actions d'autorisation (permit) ou d'interdiction (deny) sur des adresses ou des protocoles de couches supérieures. Elle s'applique à une interface orientée du routeur Un routeur possède une interface Une interface est utilisée en entrée ou en sortie Une ACL est utilisée sur une interface en entrée ou en sortie FE0/0 S0/0 out in in out
Le filtrage en détail Un paquet IP arrive sur une interface Pas d'acl, le paquet transit vers la zone de commutation Interface FE0/0, tampon d'entrée data port src port dst ip src ip dst Zone ACL Zone de commutation
Le filtrage en détail Un paquet IP arrive sur une interface Présence d'une ACL, le paquet vérifie une condition Il est accepté (permit) ou refusé (deny) Interface FE0/0, tampon d'entrée data port src port dst ip src ip dst Zone ACL condition 1 (permit) condition 2 (deny) condition 3 (permit) Zone de commutation
Le filtrage en détail Un paquet IP arrive sur une interface Présence d'une ACL, le paquet vérifie une condition Il est accepté (permit) ou refusé (deny) Interface FE0/0, tampon d'entrée data port src port dst ip src ip dst Zone ACL condition 1 (permit) condition 2 (deny) condition 3 (permit) Zone de commutation
Le filtrage en détail Un paquet IP arrive sur une interface Présence d'une ACL, le paquet ne vérifie aucune condition, il est refusé Interface FE0/0, tampon d'entrée data port src port dst ip src ip dst Zone ACL condition 1 (permit) condition 2 (deny) condition 3 (permit) Zone de commutation
Le filtrage en détail Un paquet arrive en zone de commutation Exploration de la table de routage data port src port dst ip src ip dst Destination Next Hop @ net 1 @ gw 1 @ net 2 @ gw 2 @ net 3 @ gw 3 @ net 4 @ gw 4 @ net 5 @ gw 5 @ net 6 @ gw 6 Interf FE0/1 FE0/1 FE0/2 FE0/2 S0/0 S0/1
Le filtrage en détail Un paquet IP ressort par une interface Processus identique Interface FE0/2, tampon de sortie data port src port dst ip src ip dst Zone de commutation Zone ACL
ACL: inpact sur l'ordre Note sur les ACL L'ordre des ACL est très important: la première règle qui correspond au paquet permet soit de le refuser, soit de l'accepter, même si la règle suivant indique le contraire Une ACL doit se terminer par une instruction du style: "dans tous les autres cas, faire " Si rien n'est précisé, la règle par défaut est utilisée: deny
Types Il existe différents types de Liste d'accès, caractérisée par leur identifiant: - Standard (Standard) id 1 à 99 - Etendue (Extended) id 100 à 199
Instruction d'acl Une ACL est composée d'instructions qui utilisent une syntaxe de groupe d'adresses: le masque générique Le masque générique Deux mots de 32 bits: le premier mot correspond au motif à respecter le deuxième mot indique quels bits doivent être vérifiés 0: vérifier la valeur du bit correspondant 1: ignorer la valeur du bit correspondant
Le masque générique Exemple: 192.168.128.0 0.0.127.255 192.168.128.0 1100 0000. 1010 1000. 1000 0000. 0000 0000 0.0.127.255 0000 0000. 0000 0000. 0111 1111. 1111 1111 192.168.130.4 1100 0000. 1010 1000. 1000 0010. 0000 0100 vrai 192.168.20.2 1100 0000. 1010 1000. 0001 0100. 0000 0010 faux
Le masque générique Exemple: Je veux désigner l'ensemble de la classe de l'adresse réseau 172.16.1.0/24 Une adresse IP vérifie l'appartenance à cet ensemble ssi les 3 premiers octets correspondent à la classe réseau (peu importe la valeur du dernier octet) Le masque générique est donc: 172.16.1.0 0.0.0.255
Le masque générique Exemple: Je veux désigner l'ensemble de la classe de l'adresse réseau 172.16.128.0/18 172 10.16 10.10000000 2.0 10 Bits devant être vérifié Le masque générique est donc: 172.16.128.0 0.0.63.255
Le masque générique Attention: Le masque générique n'est pas le complément du masque! un masque réseau commence par une suite contiguë de 1 se termine par une suite contiguë de 0 un masque générique peut comporter des "trous"
Le masque générique Exemple: Je m'intéresse seulement aux machines 1 à 7 du réseau 172.16.1.0/24 dont les adresses IP sont respectivement 172.16.1.1 jusqu'à 172.16.1.7 Le masque générique doit vérifier deux aspects: l'appartenance à la classe réseau les 5 premiers bits du dernier octet sont nuls Le masque générique est donc: 172.16.1.0 0.0.0.7
Masque générique: cas particuliers Toutes les hôtes: 0.0.0.0 255.255.255.255 raccourci : any Un hôte, d'adresse 172.16.1.132 172.16.1.132 0.0.0.0 raccourci : host 172.16.1.132
Mise en œuvre sur Cisco Deux étapes nécessaires: La définition de l'acl en configuration globale access-list L'application de l'acl à une interface orientée (entrée/sortie) en configuration d'interface access-group
Mise en œuvre sur Cisco Deux catégories d'acl standard, vérifiant sur le paquet filtré l'adresse IP source étendue, vérifiant sur le paquet filtré l'adresse IP source l'adresse IP destination le protocole de niveau 3 ou 4 (icmp, ip, udp, tcp, ) le numéro de port
Mise en œuvre d'une ACL standard Cisco Autoriser uniquement le trafic provenant de A sur B Les interfaces concernées par cet échange sont: RA/E0/IN, RA/S1/OUT, RB/S2/IN, RB/E0/OUT RB(config)#access-list 20 permit 172.16.1.0 0.0.0.255 RB(config)#interface Ethernet 0/0 RB(config-if)#ip access-group 20 out Réseau C non 172.16.0.0/16 S2 S1 Réseau A E0 RA S1 S2 RB E0 Réseau B 172.16.1.0/24 172.16.2.0/24
Mise en œuvre d'une ACL standard Cisco Autoriser uniquement le trafic provenant de A sur B Question : peut-on placer l'acl sur RA/E0/IN? RA/S1/OUT? RB/S2/IN? Réseau C non 172.16.0.0/16 S2 S1 Réseau A E0 RA S1 S2 RB E0 Réseau B 172.16.1.0/24 172.16.2.0/24
Remarque sur l'acl standard Les règles de l'acl standard ne portent pas mention de l'adresse destination Il convient donc de placer l'acl le plus près de la destination
Remarque sur l'acl standard Que ce passe-t'il si l'on place un deny 192.5.5.0 0.0.0.255 sur: Lab_A/E0/in? Lab_D/E0/out? Lab_A E0 S0 Lab_B S1 S0 S1 Lab_C S0 Lab_D S1 E0 219.17.100.0 223.8.151.0 192.5.5.0 210.93.105.0
Mise en œuvre d'une ACL étendue Cisco Justification de l'acl étendue l'acl standard se limite à IP source aucune possibilité de restreindre un protocole en particulier Comment autoriser le web et pas telnet? l'acl standard se place sur le routeur le plus proche de la destination. Le trafic peut être routé jusqu'à destination pour se voir refusé en fin de parcours
Mise en œuvre d'une ACL étendue Cisco Justification Exemple: pourquoi router le trafic de 192.5.5.0 vers 210.93.105.0 si on sait pertinemment qu'il n'a pas le droit? Lab_A E0 S0 Lab_B S1 S0 S1 Lab_C S0 Lab_D S1 E0 219.17.100.0 223.8.151.0 192.5.5.0 210.93.105.0
Mise en œuvre d'une ACL étendue Cisco Déclaration Router(config)# access-list id {permit deny} protocol source [source-mask destination destination-mask operator operand] [established] id: identifiant unique de l'acl (de 100 à 199) {permit deny} : action à apporter (autoriser ou refuser) protocole : protocole à vérifier (ip, tcp, udp, icmp, gre, igrp) source/destination : identifie les adresses sources/destination source/destination-mask : masques génériques source/destination opérateur : lt (less than), gt (greater than), eq (equal), neq (not equal) et un numéro de port established : suivi du trafic tcp lié à une connexion établie (bits ACK activés)
Mise en œuvre d'une ACL étendue Cisco Exemple: autorise tout le trafic IP venant de l hôte 10.0.0.1, quelle que soit la destination access-list 101 permit ip host 10.0.0.1 any refuse le trafic venant du réseau 10.0.0.0/24, quelle que soit la destination access-list 101 deny ip 10.0.0.0 0.0.0.255 any interdit à l hôte 172.16.6.1 l accès telnet au réseau 192.168.1.0/24 access-list 101 deny tcp host 172.16.6.1 192.168.1.0 0.0.0.255 eq 23 autorise tous les hôtes du réseau 172.16.6.0/24 à utiliser telnet vers tous les réseaux access-list 101 permit tcp 172.16.6.0 0.0.0.255 any eq telnet
Remarque sur l'acl étendue Une ACL étendue fait référence à l'adresse destination Il faut la placer le plus près de la source Exemple On veut interdire l'accès à l'hôte 198.150.13.34 Il faut placer l'acl sur C/E0/in S0 S1 B E0 E1 E0 C 198.150.13.34 E0 A 221.23.123.0
ACL nommée Il est possible de nommer une ACL identifiant plus parlant qu'un identifiant numérique on peut modifier une ACL sans avoir à la détruire puis la reconstruire négation d'une règle (instruction no) ajout en fin d'acl plus rapide à configurer plus l'instruction access-list id à tapper Router(config)#ip access-list extended essai Router(config-ext-nacl)#? default Set a command to its defaults deny Specify packets to reject exit Exit from access-list configuration mode no Negate a command or set its defaults permit Specify packets to forward remark Access list entry comment Router(config-ext-nacl)#
Vérification des access-list Sur le routeur show access-lists montre toutes les ACL du routeur show access-lists {name number} montre une ACL en particulier show ip interface {interface-name} montre les ACL qui sont appliquées a cette interface, et dans quel sens show running-config montre toutes les ACL et à quelles interfaces elles sont appliquées
Notes importantes Sécuriser l'accès à un routeur ACL sur TOUTES LES INTERFACES DU ROUTEUR ACL sur la configuration vty instruction access-class LabA(config)# line vty 0 4 LabA(config-line)#login LabA(config-line)# password cisco LabA(config-line)# access-class 2 in LabA(config-line)# end ne pas autoriser finalement de connexion telnet mais préférer une connexion ssh LabA(config)#crypto key generate rsa LabA(config)#line vty 0 4 LabA(config-line)#transport input ssh
Notes importantes Accès au serveur web de l'ios RTA(config)#access-list 17 permit 202.206.100.0 0.0.0.255 RTA(config)#ip http server RTA(config)#ip http access-class 17
Log Une ACL peut être paramétrée pour effectuer une alerte de log à chaque paquet satisfaisant la règle Ce message est envoyé à un serveur syslog Exemple: access-list 101 deny any host 172.16.1.133 eq telnet log
ACL et parefeu Un parefeu est un routeur filtrant plus il contient d'acl, moins il est efficace en routage Extérieur Intérieur Zone démilitarisée
ACL et parefeu Un parefeu est un routeur filtrant plus il contient d'acl, moins il est efficace en routage Extérieur Intérieur Zone démilitarisée
Time-based ACL (IOS >= 12.01(T)) Instruction time-range permet de contrôler l'utilisation d'une ressource Definir un nom d'intervalle de temps: router(config)#time-range time-range-name Utilisez les commandes periodic et absolute: router(config-time-range)# periodic days-of-the-week hh:mm to[days-of-the-week] hh:mm router(config-time-range)# absolute [start time date] [end time date] Sortie du mode de configuration intervalle de temps: router(config-time-range)#exit
Time-based ACL (IOS >= 12.01(T)) Exemple d'utilisation Dans la configuration ci-dessous, RTA est configuré avec la listed'accès nommée STRICT et deux intervalles de temps, NO-HTTP et UDP-YES: L'instruction deny empêche le trafic web les jours de la semaine de 8h à 18h. L'instruction permit autorise le trafic UDP le week-end de 12h à 20h RTA(config)#time-range NO-HTTP RTA(config-time-range)#periodic weekdays 8:00 to 18:00 RTA(config-time-range)#exit RTA(config)#time-range UDP-YES RTA(config-time-range)#periodic weekend 12:00 to 20:00 RTA(config-time-range)#exit RTA(config)#ip access-list extended STRICT RTA(config-ext-nacl)#deny tcp any any eq http time-range NO-HTTP RTA(config-ext-nacl)#permit udp any any time-range UDP-YES RTA(config-ext-nacl)#deny udp any any RTA(config-ext-nacl)#permit ip any any
Commentaires Rend la configuration plus lisible Depuis IOS 12.02(T) router(config)#access-list access-list number remark remark router(config-std-nacl)#remark remark RTA(config)#access-list 101 remark Autorise Admin Sous-réseau Telnet vers Serveurs RTA(config)#access-list 101 permit tcp 192.168.1 0.0.0.255 172.16.1.0 0.0.0.255 eq 23 RTA(config)#access-list 101 deny tcp any 172.16.1.0 0.0.0.255 eq 23 RTA(config)#access-list 101 remark autorise SNMP pour Admin du host uniquement RTA(config)#access-list 101 permit udp host 192.168.1.250 any eq 161 RTA(config)#access-list 101 deny udp any any eq 161 RTA(config)#access-list 101 permit ip any any
Filtrage de session Rappel sur ouverture de session TCP syn syn+ack ack La liste d'accès étendue peut vérifier si un paquet fait partie d'une connexion déjà établie Established - Bits ACK ou RST à 1
Filtrage de session Established argument utilisé exclusivement pour tcp Syntaxe: router(config)#access-list access-list-number permit tcp source-address source-mask destination-address destination-mask established access-list 101 permit tcp any 192.168.1.0 0.0.0.255 established access-list 101 permit icmp any any access-list 101 permit udp any any eq 53 access-list 101 deny ip any 192.168.1.0 0.0.0.255 access-list 101 permit ip any any