Sécurité - Listes d'Accès - Standards et Etendues - Configuration ccnp_cch
Sommaire • Introduction • Exemples de configuration - Autoriser un host à accéder à un réseau - Interdire à un host d'accéder à un réseau - Autoriser l'accès pour un intervalle d'adresses contigues - Interdire le traic Telnet - Autoriser uniquement les réseaux internes à initier une session TCP - Interdire le trafic FTP - Autoriser icmp echo request - Autoriser HTTP, Telnet, Mail, POP3 et FTP - Autoriser DNS - Autoriser les mises à jour de routage - Utiliser une liste d'accès avec la commande debug ccnp_cch
Introduction Ce document fournit des exemples de configurations pour les listes d'accès les plus communément utilisées pour filtrer les paquets sur la base de l'adresse destination, de l'adresse source, de numéros de ports ou toutes combinaisons de ces différents critères. Les listes d'accès filtrent le trafic en autorisant ou en bloquant l'acheminement des paquets sur l'interface du routeur. Le routeur examine chaque paquet pour détermi- ner si le paquet doit être acheminé ou éliminé d'après les critères spécifiés dans la liste d'accès. Les exemples de ce document montrent que la liste d'accès est constituée en deux étapes: 1. Création de la liste de d'accès 2. Application de la liste de d'accès à l'interface La liste d'accès IP est une liste séquentielle de conditions "autorisé" (permit) et "interdit" (deny) qui s'applique à un paquet IP. Le routeur teste tous les paquets IP un à un d'après les conditions contenues dans la liste d'accès. La première correspon- dance trouvée détermine si le logiciel IOS Cisco accepte ou rejette le paquet. Comme l'IOS Cisco arrête le test des conditions après la première correspondance trouvée, l'ordre des conditions est primordial. S'il n'y a aucune correspondance entre le paquet et les conditions de la liste, le routeur rejette le paquet à cause de la pré- sence d'une clause de rejet total implicite en fin de liste. Il y a plusieurs types de listes de d'accès qui peuvent être configurées sur les routeurs avec l'IOS Cisco. - Listes d'accès IP Standards - Standard IP ACLs - Listes d'accès IP Etendues - Extended IP ACLs - Listes d'accès IP Dynamiques - Lock and Key ACLs - Listes d'accès IP nommées - IP named ACLs - Listes d'accès Reflexives - Relexives ACLs - Listes d'accès basées sur le temps - Time-based ACLs - Entrées commentées de listes d'accès - Commented IP ACLs entries - Listes d'accès basées sur le contexte - Context-based ACLs - Proxy d'authentification - Authentication Proxy - Listes d'accès compilées - Turbo ACLs - Listes d'accès distribuées basées sur - Distributed Time-based ACLs le temps Ce document traite traite quelques listes d'accès standards et étendues les plus com- munément utilisées. ccnp_cch
La syntaxe d'une liste d'accès standard est la suivante La syntaxe d'une liste d'accès standard est la suivante. Les listes d'accès standards contrôlent le trafic en comparant l'adresse source de paquets IP à l'adresse configurée dans la liste de contrôle d'accès. access-list access-list-number { permit|deny} { host|source source-wilcard|any } Les listes d'accès étendues contrôlent le trafic en comparant les source et destination des paquets IP aux adresses configurées dans la liste d'accès. En plus des adresses source et destination, les listes d'accès étendues peuvent être plus granulaires et être configurées pour filtrer le trafic par protocole, numéro de ports et d'autres critères tels que la valeur DSCP, la priorité (precedence) et l'état du bit SYN. Voici quelques formats de commandes pour les listes d'accès IP étendues. IP access-list access-list-number [dynamic dynamic-name [timeout minutes]] { permit|deny} protocol source source-wilcard destination destination-wildcard [precedence precedence] [tos tos] [log | log-input] [time-range time-range-name] [fragments] ICMP access-list access-list-number [dynamic dynamic-name [timeout minutes]] { permit|deny} icmp source source-wilcard destination destination-wildcard [icmp-type [icmp-code] | [icmp-message] [precedence precedence] [tos tos] [log | log-input] [time-range time-range-name] [fragments] TCP access-list access-list-number [dynamic dynamic-name [timeout minutes]] { permit|deny} tcp source source-wildcard [operator [port]] destination destination-wildcard [operator [port]] [established] [precedence precedence] [tos tos] [log | log-input] [time-range time-range-name] [fragments] UDP access-list access-list-number [dynamic dynamic-name [timeout minutes]] { permit|deny} tcp source source-wilcard [operator [port]] destination destination-wildcard [operator [port]] [precedence precedence] [tos tos] [log | log-input] [time-range time-range-name] [fragments] ccnp_cch
Exemples de configuration Les exemples de configurations suivants utilisent les listes d'accès les plus communé- ment utilisées. Autoriser un host à accéder à un réseau. L'exemple suivant montre un host donné autorisé à accéder au réseau. Tout le trafic issu du host B destiné au réseau NetA est autorisé et tout autre trafic issu du réseau NetB vers le réseau NetA est interdit. R1 E0 NetA NetB Host B: 192.168.10.1 La configuration suivante montre comment le host a été autorisé à accéder au réseau. Cette configuration autorise uniquement le host avec l'adresse 192.168.10.1 au travers de l'interface Ethernet0 sur le routeur R1. Le host a accès aux services IP du réseau NetA. Aucun autre host du réseau NetB n'aura accès au réseau NetA. Aucune instruc- tion "deny" n'a été configurée dans la liste d'accès. Par défaut, il y a un "deny all" implicite à la fin de chaque liste d'accès. Tout ce qui n'est pas explicitement autorisé est interdit. R1 hostname R1 ! interface Ethernet0 ip access-group 1 in ! access-list 1 permit host 192.18.10.1 Note: La liste d'accès ci-dessus filtre les paquets IP du réseau NetB vers le réseau NetA. Les paquets destinés au host B depuis le réseau NetA sont toujours permis. Note: La liste d'accès suivante est une autre méthode pour configurer la même règle. access-list 1 permit 192.18.10.1 0.0.0.0 ccnp_cch
ccnp_cch Interdire à un host donné d'accéder à un réseau L'exemple suivant montre que le trafic issu du host B à destination du réseau NetA sera interdit tandis que tout autre trafic du réseau NetB vers le réseau NetA sera autorisé. R1 E0 NetA NetB Host B: 192.168.10.1 La configuration suivante bloque tous les paquets issus du host 192.168.10.1/32 au travers de l'interface Ethernet0 du routeur R1 et autorise tout le reste. Parce qu'il y a une clause "deny all" implicite à la fin de chaque liste d'accès, vous devez permettre de manière explicite tout le reste en utilisant la commande access-list 1 permit any. R1 hostname R1 ! interface Ethernet0 ip access-group 1 in ! access-list 1 deny host 192.18.10.1 access-list 1 permit any Note: L'ordre des instructions est critique pour le fonctionnement de la liste d'accès. Si l'ordre des entrées est inversé comme le montre le listage ci-dessous, la première ligne permettra tous les paquets IP. Par conséquent la liste d'accès ne bloquera pas le trafic du host 192.168.10.1/32 vers le réseau NetA. access-list 1 permit any access-list 1 deny host 192.18.10.1 ccnp_cch
ccnp_cch Autoriser l'accès pour un intervalle d'adresses contigues L'exemple suivant montre que tous les hosts du réseau NetB avec l'adresse de réseau 192.168.10.0/24 sont autorisés à accéder au réseau 192.168.200.0/24 dans NetA. R1 E0 NetA NetB 192.168.10.1 192.168.200.1 La configuration suivante autorise les paquets IP dont l'adresse source est dans le réseau 192.168.10.0/24 et l'adresse destination dans le réseau 192.168.200.0/24 à accéder à NetA. Encore une fois il ya la clause "deny all" implicite à la fin de la liste d'accès qui interdit tout trafic en entrée sur Ethernet0 de R1. R1 hostname R1 ! interface Ethernet0 ip access-group 101 in ! access-list 101 permit ip 192.18.10.0 0.0.0.255 192.168.200.0 0.0.0.255 Note: Dans la commande access-list 101 permit ip 192.18.10.0 0.0.0.255 192.168.200.0 0.0.0.255, "0.0.0.255" est le masque générique pour le réseau 192.168.10.0 dont le mas- que est 255.255.255.0. Les listes d'accès utilisent un masque générique pour connaître combien de bits de l'adresse doivent correspondre. Dans l'exemple ci-dessus, la liste d'accès permet tous les hosts dont l'adresse réseau source est 192.168.10.0/24 et l'adresse destination 192.168.200.0/24. ccnp_cch
ccnp_cch Interdire le trafic Telnet Dévalider l'accès Telnet pour votre réseau privé depuis un réseau public peut être né- cessaire afin de respecter des critères de sécurité. L'exemple suivant montre comment le trafic Telnet depuis NetB (réseau public) destiné à NetA (réseau privé) est refusé mais permet à NetA d'initier et établir des sessions Telnet avec NetB et tout autre trafic IP. R1 E0 NetA NetB Telnet utilise le port TCP 23. La configuration suivante montre que tout le trafic TCP destiné à NetA pour le port 23 est bloqué et que tout autre trafic IP est autorisé. R1 hostname R1 ! interface Ethernet0 ip access-group 102 in ! access-list 102 deny tcp any any eq 23 access-list 102 permit ip any any Autoriser uniquement les réseaux internes à initier une session TCP L'exemple suivant montre que le trafic TCP issu de NetA et destiné à NetB est autorisé tandis que le trafic TCP issu de NetB vers NetA est bloqué. R1 E0 NetA NetB Le but de la liste d'accès dans cet exemple est double: • Autoriser les hosts dans NetA à initier et établir des sessions TCP vers les hosts de NetB. • Empêcher les hosts de NetB d'initier et d'établir une session TCP destinée aux hosts de NetA. ccnp_cch
ccnp_cch R1 hostname R1 ! interface Ethernet0 ip access-group 102 in ! access-list 102 deny tcp any any gt 1023 established Cette configuration autorise les paquets à passer en entrée sur l'interface Ethernet 0 de R1 quand les bits ACK ou RST sont positionnés dans l'en-tête TCP et que le port destination à une valeur supérieure à 1023. Comme tous les ports bien-connus pour les services IP ont des valeurs inférieures à 1023, tout paquet avec un port destination inférieur à 1023 et/ou le bit ACK/RST non positionné sera bloqué par la liste d'accès numéro 102. Par conséquent, si host de NetB initie une connexion TCP en transmet- tant le premier segment TCP (avec le bit SYN) avec un numéro de port inférieur à 1023 , il sera bloqué et la session TCP échouera. Les sessions TCP initiées depuis NetA vers NetB seront autorisées car elles auront le bit ACK/RST positionés sur le trafic retour et utiliseront un numéro de port supérieur à 1023. Interdire le trafic FTP L'exemple suivant montre que le trafic FTP ( Port 21-TCP pour les commandes- Port 20 pour les données) issu depuis NetB et destiné à NetA sera bloqué tandis que tout autre trafic IP est permis. R1 E0 NetA NetB FTP utilise les ports 20 et 21. Par conséquent le trafic destiné aux ports 20 et 21 est bloqué et tout autre trafic est explicitement autorisé. R1 hostname R1 ! interface Ethernet0 ip access-group 102 in ! access-list 102 deny tcp any any eq ftp access-list 102 deny tcp any any eq ftp-data access-list 102 permit ip any any ccnp_cch
ccnp_cch Permettre icmp echo request L'exemple suivant montre comment ICMP (Internet Control Message Protocol) issu de NetA et destiné à NetB sera autorisé et que les "ping" issus de NetB vers NetA seront bloqués. R1 E0 NetA NetB FTP utilise les ports 20 et 21. Par conséquent le trafic destiné aux ports 20 et 21 est bloqué et tout autre trafic est explicitement autorisé. R1 hostname R1 ! interface Ethernet0 ip access-group 102 in ! access-list 102 deny icmp any any echo-reply access-list 102 permit ip any any ccnp_cch
ccnp_cch Autoriser HTTP, Telnet, Mail, POP3 et FTP L'exemple suivant montre que seul le trafic HTTP, Telnet, Mail, POP3 et FTP issu de NetB vers NetA sera autorisé tandis que le reste du trafic sera bloqué. R1 E0 NetA NetB La configuration suivante permet le trafic TCP avec les ports destination qui corres- pondent aux valeurs www (port 80), telnet (port 23), smtp (port 25), pop3 (port 110) et ftp (port 20 et port 21). Notez qu'il y a toujours la clause "deny all" implicite en de liste d'accès pour bloquer le reste du trafic. R1 hostname R1 ! interface Ethernet0 ip access-group 102 in ! access-list 102 permit tcp any any eq www access-list 102 permit tcp any any eq telnet access-list 102 permit tcp any any eq smtp access-list 102 permit tcp any any eq pop3 access-list 102 permit tcp any any eq 21 access-list 102 permit tcp any any eq 20 ccnp_cch
Autoriser DNS L'exemple suivant montre que seul le trafic DNS sera autorisé et que le reste du trafic issu de NEtB vers NetA sera bloqué. R1 E0 NetA NetB La configuration suivante permet le trafic TCP et UDP avec le port destination 53. La clause "deny all" implicite en de liste d'accès bloque le reste du trafic. R1 hostname R1 ! interface Ethernet0 ip access-group 102 in ! access-list 102 permit tcp any any eq domain access-list 102 permit tcp any eq domain any access-list 102 permit udp any any eq domain access-list 102 permit tcp any eq domain any Autoriser les mises à jour de routage Chaque fois que vous appliquez une liste d'accès sur une interface, assurez-vous que les mises à jour de routage ne sont pas bloquées. Pour autoriser les paquets de mises à jour de routage, utilisez les liste d'accès correspondantes pour être sur que les mises à jour de routage ne soient bloquées. Pour autoriser RIP (Routing Information Protocol): access-list 102 permit udp any any eq rip Pour autoriser IGRP (Interior Gateway Routing Protocol): access-list 102 permit igrp any any Pour autoriser EIGRP (Enhanced Interior Gateway Routing Protocol): access-list 102 permit eigrp any any Pour autoriser OSPF (Open Shortest Path First): ccnp_cch
ccnp_cch Pour autoriser OSPF (Open Shortest Path First): access-list 102 permit ospf any any Pour autoriser BGP (Border Gateway Protocol): access-list 102 permit tcp any any eq 179 access-list 102 permit tcp any eq 179 any Utiliser une liste d'accès avec la commande debug L'utilisation de la commande debug requiert l'allocation de ressources système comme de la mémoire et du traitement CPU. Dans des situations extrêmes cela peut entraîner l'arrêt d'un système très chargé. La commande debug doit être utilisée avec beaucoup de précaution. Un des moyens de réduire l'impact de la commande debug sur les res- sources du système est d'utiliser une liste d'accès pour définir de manière très sélec- tive le trafic qui doit être examiné. La configuration suivante active la commande debug ip packet uniquement pour les paquets échangés entre les deux hosts 10.1.1.1 et 172.16.1.1 R1(config)#access-list 199 permit tcp host 10.1.1.1 host 172.16.1.1 R1(config)#access-list 199 permit tcp host 172.16.1.1 host 10.1.1.1 R1(config)#exit R1# debug ip packet 199 detail IP packet debugging is on (detailed) for access-list 199 ccnp_cch