ACLs (Access Control Lists) (Listes de Contrôle d’Access) © Mohammed EL HARFAOUI - elharfaoui@gmail.com 4-1 Introduction © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Les ACLs sont des règles fixant les conditions de filtrage qui seront appliquées au trafic circulant via une interface d’un routeur. Les ACL filtrent le trafic réseau en commandant aux interfaces d’un routeur d’acheminer ou de bloquer des paquets qui y transitent. Le routeur examine chaque paquet afin de déterminer s’il doit l’acheminer ou le rejeter en fonction des conditions précisées dans la liste de contrôle d’accès. 2 1 Introduction © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Les ACLs servent à : Contrôler le flux de trafic en déterminant le type de trafic qui sera acheminé ou bloqué au niveau des interfaces du routeur. Améliorer les performances réseau en limitant certain trafic tel que la vidéo, par exemple. Fournir un niveau de sécurité d’accès réseau de base : Filtrer certains hôtes afin de leur accorder ou de leur refuser l’accès à une section (subnet) de réseau. Accorder ou refuser aux utilisateurs la permission d’accéder à certains types de services, tels que FTP ou HTTP. 3 Parcours des instructions © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Une ACL est un groupe d’instructions séquentielles qui définissent si les paquets sont acceptés ou rejetés au niveau des interfaces d’entrée et de sortie. Paquet Correspond à la règle ? OUI NON Autoriser ou refuser ? Autoriser Transmission à la file d’attente Refuser D’autres NON règles explicites existes ? OUI Passer à la règle suivante 4 2 ACL et Routage © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Les ACLs appliquées à une interface d’entrée (inbound) filtre les pacquets avant les decisions de routage (avant d’être routés vers l’interface de sortie). Les ACLs appliquées à une interface de sortie (outbound) filtre les packets après les decisions de routage. 5 Principes fondamentaux © Mohammed EL HARFAOUI (elharfaoui@gmail.com) ACL (Access Control List) Filtrage Liste séquentielle d’instructions Autoriser ou interdire Filtrage des paquets En entrée ou en sortie 1 ACL maximum par Protocole , par Interface et par Direction Autrement dit : pour un protocole donné, une interface d’un routeur peut avoir au maximum deux ACLs: Une ACL en entrée de l’interface (inbound traffic) Une ACL en sortie de l’interface (outbound traffic) 6 3 Principes fondamentaux © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Exemple du schéma ci-dessous : avec deux interfaces et trois protocole, le routeur peut avoir un total de 12 ACL distinctes. Les instructions d’une ACL sont toujours parcourues séquentiellement de la première à la dernière. Si une correspondance est trouvée, la suite des instructions de l’ACL (s’elles y on a ) est ignorée. Si aucune correspondance n’est trouvée te trafic est rejeté L’instruction implicite (deny) est utilisée 7 Critères spécifiables dans une ACL © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Les critères de filtrage qui peuvent être spécifiés dans une ACL sont: Adresses IP sources Adresses IP de destination Numéros de ports (couche de Transport) Protocoles utilisés (couches de Transport et Application) 8 4 Types d’ACLs © Mohammed EL HARFAOUI (elharfaoui@gmail.com) ACL standard ACL étendue (Extended) Frame Header (Ethernet, HDLC, PPP,…) Packet (IP header) Segment header (TCP or UDP) Data Port Number Protocol Source Address Règles de test Destination Address Permit or Deny 9 Types d’ACLs © Mohammed EL HARFAOUI (elharfaoui@gmail.com) ACL standard Se base uniquement sur les adresses IP sources Numérotée (Identifiable par un numéro entre 1-99 ou 1300-1999) Nommée (Identifiable par un nom alphanumérique) ACL étendue (Extended ACL) Se base sur les adresses IP sources et destination, les type de protocoles et les numéros de ports sources et destination. Numérotée (Identifiable par un numéro entre 100-199 ou 2000-2699) Nommée (Identifiable par un nom alphanumérique) 10 5 Numéros d’ACL © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Plage de numéros Type d’ACL associé 1 à 99 1300 à 1999 Standard pour IP 100 à 199 2000 à 2699 Etendue pour IP 600 à 699 AppleTalk 800 à 899 Standard pour IPX 900 à 999 Etendue pour IPX 1000 à 1099 IPX/SAP 11 © Mohammed EL HARFAOUI (elharfaoui@gmail.com) ACLs Standards - Numérotées - Nommées 12 6 Configuration des ACLs numérotées © Mohammed EL HARFAOUI (elharfaoui@gmail.com) La configuration se fait en 2 étapes : 1. Création de l’ACL Router(config)# access-list aclNnumber {permit | deny} {test conditions} 2. Application de l’ACL sur une interface ou sur une line tty (line) Router(config-if)# { protocol } access-group aclNnumber {in|out} Router(config-line)# access-group aclNnumber {in|out} access-group : pour les interfaces (interface) access-class : pour les consoles tty (line) 13 ACL standard nommée: Exemple © Mohammed EL HARFAOUI (elharfaoui@gmail.com) R1(config)# R1(config)# access-list 50 deny 172.16.1.1 access-list 50 permit 172.16.0.0 0.0.255.255 Nombre compris entre 1 et 99, ou entre 1300 et1999 (IOS recent) c’est une ACL standard Refuser ou autoriser Pas de masque générique : par défaut 0.0.0.0 Masque générique La première ligne refuse l’accès à l’adresse IP 172.16.1.1 La deuxième ligne autorise l’accès à toute une plage d’adresses qui est définie par le masque générique (wildcard mask) 0.0.255.255 Cela signifie que tout le subnet 172.16.0.0/16 est autorisé 14 7 Configuration des ACLs nommées © Mohammed EL HARFAOUI (elharfaoui@gmail.com) La configuration se fait en 2 étapes : 1. Création de l’ACL Router(config)# ip access-list standard ACL_NAME Router(config-std-nacl)# [permit | deny | remark] { source [Source-wildcard]} [log] 2. Application de l’ACL sur une interface Router(config-if)#{ protocol } access-group ACL_NAME {in | out} Router(config-line)#{ protocol } access-class ACL_NAME {in | out} access-group : pour les interfaces (interface) access-class : pour les consoles tty (line) 15 Vérification d’une ACL © Mohammed EL HARFAOUI (elharfaoui@gmail.com) 16 8 Masque générique (Wildcard Mask) © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Un masque générique est un masque de 32 bits divisés en quatre octets (Notation décimale pointée) et qui jumelé à une adresse IP. Intérêt Identifier des plages d’adresses et spécifie ce qui doit être autorisé/refusé Signification "0" binaire = vérifiez la correspondance (doit correspondre) "1" binaire = Ignorez la correspondance (peut varier) 17 Comment utiliser les bits du masque générique © Mohammed EL HARFAOUI (elharfaoui@gmail.com) 128 64 32 16 8 4 2 Position des bits dans l’octet 1 Examples 0 0 0 0 0 0 0 0 = check all address bits (match all) 0 0 1 1 1 1 1 1 = ignore last 6 address bits 0 0 0 0 1 1 1 1 = ignore last 4 address bits 1 1 1 1 1 1 0 0 = check last 2 address bits 1 1 1 1 1 1 1 1 = do not check address (ignore bits in octet) 0 signifie "vérifier le bit correspondant" (match) 1 signifie "ignorer le bit correspondant" (don’t care) 18 9 Comment utiliser les bits du masque générique © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Par rapport à un masque de sous-réseau Inverse binaire En notation décimale pointée = Complément à 255 du masque de sous-réseau correspondant Masque de sous-réseau 255.255.224.0 1111 1111.1111 1111.1110 000.0000 0000 Masque générique 0.0.31.255 0000 0000.0000 0000.0001 111.1111 1111 255 . 255 . 255 . 255 - 255 . 255 . 224 . 0 = 0 . . 31 . 255 0 Masque de sous-résea u Masque gé nérique 19 Comment utiliser les bits du masque générique © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Condition ACL: Verifier les subnets IP 172.30.16.0/24 à 172.30.31.0/24 0 : doit correspondre (match) 1 : peut varier (don’t care) 8 7 6 5 4 3 2 1 16 = 0 0 0 1 0 0 0 0 17 = 0 0 0 1 0 0 0 1 18 = 0 0 0 1 0 0 1 0 … = 31 = 0 0 0 1 1 1 1 1 Wildcard mask : 0 0 0 0 1 1 1 1 Network .host 172.30.16. 0 172.30.31. 0 ………………………………………………. |<---- match ----->|<----- don’t care --->| Adresse et masque générique : 172.30.16.0 0.0.15.255 20 10 Masque générique : Ecritures spécifiques © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Keyword any : Wildcard =255.255.255.255 IP =0.0.0.0 any remplace 255.255.255.255 dans le masque générique (et 0.0.0.0 dans l’adresse IP). 0.0.0.0 Any IP address Wildcard mask= 255.255.255.255 (ignorer tout) Keyword host : remplace 0.0.0.0 dans le masque générique. host a.b.c.d Wildcard 0.0.0.0 Wildcard mask= 0.0.0.0 1 seule adresse Exemple : une adresse IP de hôte, :172.30.16.29 Wildcard mask= 0.0.0.0 (verifier tout les bits) 21 Masque générique : Exemples © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Condition ACL: Vérifier les subnets IP 192.168.32.0/24 à 192.168.39.0/24 32 = 0 0 1 0 0 0 0 0 33 34 35 36 37 38 39 = = = = = = = 0 0 0 0 0 0 0 M 0 0 0 0 0 0 0 M 1 1 1 1 1 1 1 M 0 0 0 0 0 0 0 M 0 0 0 0 0 0 0 M 0 1 0 1 1 1 1 D 0 0 1 0 0 1 1 D 1 0 1 0 1 0 1 D Puisque les cinq premiers bits correspondent, les huit réseaux peuvent être récapitulés en un réseau (192.168.32.0/21 ou 192.168.32.0 255.255.248.0). le masque générique correspondant est : 0.0.7.255 (255.255. 255.255 - 255.255.248.0) access-list 15 permit ip 192.168.32.0 0.0.7.255 22 11 Masque générique : Exemples © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Condition ACL: Vérifier les subnets IP 192.168.146.0/24 à 192.168.149.0/24 146 = 147 = 148 = 149 = 1 1 1 1 M 0 0 0 0 M 0 0 0 0 M 1 1 1 1 M 0 0 0 0 M 0 0 1 1 D 1 1 0 0 D 0 1 0 1 D Puisque les cinq premiers bits correspondent, les huit réseaux peuvent être récapitulés en un réseau 192.168.144.0/21. Ce réseau récapitulé, 192.168.144.0/21, couvre une plage de réseaux comprise entre 192.168.144.0 et 192.168.151.0. Parmi ces derniers, les réseaux 192.168.144.0, 192.168.145.0, 192.168.150.0 et 192.168.151.0 ne sont pas dans la liste des quatre réseaux donnée. 23 Masque générique : Exemples © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Afin de couvrir les réseaux spécifiques en question, on a besoin d'un minimum de deux réseaux récapitulés. Les quatre réseaux donnés peuvent être récapitulés dans ces deux réseaux : 1 0 0 1 Pour les réseaux 192.168.146.0/24 146 = 1 0 0 1 et 192.168.147.0/24, tous les bits 147 = 148 = 1 0 0 1 correspondent à l'exception du dernier, qui est à « ignorer ». 149 = 1 0 0 1 Il peuvent être écrit comme M M M M 192.168.146.0/23 (ou 192.168.146.0 255.255.254.0). 0 0 0 0 M 0 0 1 1 D 1 1 0 0 D 0 1 0 1 D Pour les réseaux 192.168.148.0/24 et 192.168.149.0/24, tous les bits correspondent à l'exception du dernier, qui est à « ignorer ». Il peuvent être écrit comme 192.168.148.0/23 (ou 192.168.148.0 255.255.254.0). 192.168.146.0/23 et 192.168.146.0/23 masque générique 0.0.1.255 (255.255. 255.255 - 255.255.254.0) access-list 10 permit 192.168.146.0 0.0.1.255 access-list 10 permit 192.168.148.0 0.0.1.255 24 12 Précautions à prendre et Règles de base à respecter © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Les règles de base suivantes doivent être respectées lors de la création et de l’application des ACLs : Une ACL par protocole, par interface et par direction. Les ACLs standard doivent être appliquées le plus près possible de la destination. Les ACLs étendues doivent être appliquées le plus près possible de la source. Pour faire référence à une interface d’entrée ou de sortie, placez-vous à l’intérieur du routeur en regardant l'interface en question. Les instructions sont traitées séquentiellement jusqu’à la fin de liste Si une correspondance est trouvée, la suite des instructions de l’ACL est ignorée. Si aucune correspondance n’est trouvée, l’instruction implicite (deny) est appliquée. 25 Précautions à prendre et Règles de base à respecter (suite) © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Il existe un refus implicite deny any à la fin de toutes les ACLs. Cela n’apparaît pas dans la liste de configuration. Vous devez avoir au moins une instruction d'autorisation dans une ACL ou tout le trafic sera bloqué. Les entrées d’une ACL doivent filtrer les paquets dans l’ordre, du plus spécifique au plus général. Les hôtes spécifiques doivent être rejetés/autorisés en premier, tandis que les filtres généraux viennent en dernier. La condition de correspondance est examinée en premier. L’acceptation ou le refus est examiné UNIQUEMENT si la condition est vraie. Ne travaillez jamais (interactivement) avec une ACL qui est appliquée de manière active. Utilisez des commentaires indiquant la logique, puis ajoutez les instructions correspondantes. 26 13 Précautions à prendre et Règles de base à respecter (suite) © Mohammed EL HARFAOUI (elharfaoui@gmail.com) La commande no access-list x supprime toute la liste. Soyez particulièrement attentif lorsque vous supprimez une liste d’accès. Si la liste d’accès est appliquée à une interface de production et que vous la supprimez, selon la version de l’IOS, une instruction deny any peut être appliquée par défaut à l’interface et tout le trafic peut être arrêté. Les filtres de sortie ne concernent pas le trafic généré par le routeur local. Une liste d’accès IP envoie un message ICMP ‘Host Unreachable’ (hôte inaccessible) à l’émetteur du paquet lorsque celui ci est rejeté. Testez vos listes de contrôle d’accès sur un réseau d’essai avant de les implémenter sur un réseau de production. Les ACL doivent être crées conformément à la stratégie de sécurité de l’entreprise. 27 ACL Standard numérotée : Exemple 1 © Mohammed EL HARFAOUI (elharfaoui@gmail.com) 172.16.3.0/24 172.16.0.0/16 S0 E0 E1 172.16.4.0/24 172.16.4.13 Router(config)# access-list 1 permit 172.16.0.0 0.0.255.255 (implicit deny all - not visible in the list) (access-list 1 deny 0.0.0.0 255.255.255.255) Router(config)# interface Ethernet 0 Router(config-if)# ip access-group 1 out Router(config)# interface Ethernet 1 Router(config-if)# ip access-group 1 out Permettre uniquement le trafic du réseau 172.16.0.0 .Autre traffic est bloqué. 28 14 ACL Standard numérotée : Exemple 2 © Mohammed EL HARFAOUI (elharfaoui@gmail.com) 172.16.0.0/16 172.16.3.0 172.16.4.0 S0 E0 172.16.4.13 E1 Router(config)# access-list 1 deny 172.16.4.13 0.0.0.0 (Or Router(config)# access-list 1 deny host 172.16.4.13) Router(config)# access-list 1 permit 0.0.0.0 255.255.255.255 (implicit deny all) (access-list 1 deny 0.0.0.0 255.255.255.255) Router(config)# interface ethernet 0 Router(config-if)# ip access-group 1 out Rejeter le trafic du hôte 172.16.4.13 et permettre tout autre traffic d’être acheminer via l’interface Ethernet 0 29 ACL Standard numérotée : Exemple 3 © Mohammed EL HARFAOUI (elharfaoui@gmail.com) 172.16.3.0/24 172.16.0.0/16 172.16.4.0/24 S0 E0 E1 172.16.4.13 Router(config)# access-list 1 deny 172.16.4.0 0.0.0.255 Router(config)# access-list 1 permit any (implicit deny all - not visible in the list) (access-list 1 deny 0.0.0.0 255.255.255.255) Router(config)# interface Ethernet 0 Router(config-if)# ip access-group 1 out Rejeter le trafic initié à partir du réseau 172.16.4.0/24 et permettre tout autre trafic 30 15 ACL Standrd nommée : Exemple © Mohammed EL HARFAOUI (elharfaoui@gmail.com) R1(config)# ip access-list standard NO_ACCESS R1(config-std-nacl)# deny host 192.168.11.10 R1(config-std-nacl)# permit 192.168.11.0 0.0.0.255 R1(config-std-nacl)# Interface Fa0/0 R1(config-if)# ip access-group NO_ACCESS out 31 Question1 © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Créez une liste d'accès qui refuse l'accès à tous les hôtes du réseau 172.16.1.0/24. Autorise l'accès à tous les autres hôtes. Choisissez une interface et appliquez-lui la liste d'accès dans la direction sortante. Router(config)# access-list 2 deny 172.16.1.0 0.0.0.255 Router(config)# access-list 2 permit any Router(config)# Interface ethernet 0 Router(config-if)# ip access-group 2 out 32 16 Question2 © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Créez une liste d'accès qui refuse l'accès aux hôtes du réseau 172.16.0.0/16. Autorise l'accès à l’hôte 172.16.1.1. Choisissez une interface et appliquez-lui la liste d'accès dans la direction sortante. Router(config)# access-list 2 deny 172.16.0.0 0.0.255.255 Router(config)# access-list 2 permit host 172.16.1.1 Router(config)# Interface ethernet 0 Router(config-if)# ip access-group 2 out 33 Question3 © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Créez une liste d'accès qui permet l'accès uniquement au réseau 172.0.0.0/8. Choisissez une interface et appliquez-lui la liste d'accès dans la direction sortante. Router(config)# access-list 2 permit 172.0.0.0 0.255.255.255 Router(config)# Interface ethernet 0 Router(config-if)# ip access-group 2 out 34 17 Modification d’une ACL standard: 1er option © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Pour faire une modification 1. Copier/coller dans un éditeur de texte (‘show run’) 2. Effectuer les modifications voulues 3. Supprimer l’ACL du routeur (‘no access-list’) 4. Insérer (coller) les nouvelles instructions dans le routeur (recréer l’ACL) Note: Pour supprimer complètement une ACL: 1) 2) Désactiver l’ACL de l’interface ( no ip access-group (ou no access-class ) ). Désactiver l’ACL du routeur avec no access-list numACL (ou no ip access-list standard nameACL). 35 Modification d’une ACL standard: 2eme option © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Pour modifier une ACL 1. Afficher le contenu de l’ACL (à travers ‘show access-list’) 2. Effectuer les modifications voulues 3. Supprimer les entrées de l’ACL via la commande ‘no’ et le numéro de séquence de l’entrée. 4. Insérer les nouvelles instructions dans l’ACL à l’emplacement voulue. 36 18 Pratique1 © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Autoriser uniquement le sous-réseau 192.168.10.0/24 à sortir R1(config)# access-list 1 permit 192.168.10.0 0.0.0.255 R1(config)# Interface s0/0/0 R1(config)# ip access-group 1 out 37 Pratique2 © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Refuser l’accès de sortir à l’hôte 192.168.10.10/24 R1(config)# access-list 1 deny 192.168.10.10 0.0.0.0 R1(config)# access-list 1 permit 192.168.10.0 0.0.0.255 R1(config)# Interface s0/0/0 R1(config -if)# ip access-group 1 out 38 19 Pratique3 © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Refuser l’accès de sortir uniquement au sous-réseau 192.168.10.0/24 R1(config)# access-list 1 deny 192.168.10.0 0.0.0.255 R1(config)# access-list 1 permit 192.168. 0.0 0.0.255.255 R1(config)# Interface s0/0/0 R1(config -if)# ip access-group 1 out 39 Contrôle d’accès pour les lignes VTY (telnet & ssh) © Mohammed EL HARFAOUI (elharfaoui@gmail.com) La commande access-class limite les connexions entrantes et sortantes entre une ligne VTY donnée et les adresses IP dans une ACL. Remarque 1: Les ACLs (standard et étendues) s’appliquent aux paquets traversant un routeur. Elles ne sont pas destinées à bloquer les paquets créés sur le routeur. Par défaut, une ACL étendue pour le trafic Telnet sortant n’empêche pas le routeur de lancer des sessions Telnet. Remarque 2: Seules les ACLs numérotées peuvent être appliquées aux lignes VTY. 40 20 Contrôle d’accès pour les lignes VTY (telnet & ssh) © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Autoriser le réseau 192.168.10.0 à accéder aux lignes VTY 0 - 4. L’accès aux lignes VTY est refusé à tous les autres réseaux. Router(config)# access-list 1 permit 192.168.10.0 0.0.0.255 R1(config)# access-list 1 deny any R1(config)# line vty 0 4 R1(config-line)# login R1(config-line)# password cisco R1(config-line)# access-class 1 in 41 © Mohammed EL HARFAOUI (elharfaoui@gmail.com) ACLs Etendues - Numérotées - Nommées 42 21 ACL étendue © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Filtrage plus précis qu’une ACL standard Plus de contrôle ACL basée sur l’adresse source, l’adresse de destination, le protocole et le numéro de port. Syntaxe simplifiée (Pour une ACL numérotée) Router(config)# access-list NumACL { permit | deny | remark } protocol source source-wildcard [operator operand] [port portNumber] destination destination-wildcard [operator operand] [port portNumber] [ established ] [log] 43 Syntaxe simplifiée (Pour une ACL numérotée) © Mohammed EL HARFAOUI (elharfaoui@gmail.com) NumACL : un nombre entre 100 et 199 ou 2000 et 2699. permit | deny : autoriser ou bloquer les adresses respectant les critères spécifiés. remark : Utilisée pour entrer une remarque (Par exemple indique si cette entrée autorise ou bloque l’adresse spécifiée). protocol : Nom ou numéro d’un protocole Internet. Les mots clés communs comprennent icmp, ip, tcp ou udp. Pour faire correspondre un protocole Internet quelconque (y compris les protocoles ICMP, TCP et UDP), utilisez le mot clé ip. source: Réseau ou hôte d’où provient le paquet. source-wildcard: Bits de masque générique à appliquer à la source. destination: Réseau ou hôte auquel le paquet est envoyé. destination -wildcard: Bits de masque générique à appliquer à la destination. operator: (Facultatif) Compare le port source et/ou le port de destination. Les opérateurs éventuels sont les suivants : lt (inférieur à), gt (supérieur à), eq (égal), neq (non égal) et range (plage inclusive) port:(Facultatif) Numéro décimal ou nom d’un port TCP ou UDP. established: (Facultatif) Pour le protocole TCP uniquement : indique une connexion établie. log :(Facultatif) Déclenche la journalisation de l’ACL lorsqu’une correspondance est trouvée 44 22 ACL étendue – Syntaxe © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Router(config)# access-list access-list-number [dynamic dynamic-name [timeout minutes]] {deny | permit} protocol source source-wildcard destination destination-wildcard [precedence precedence] [tos tos] [log | log-input] [time-range timer-ange-name] icmp-type icmp-code icmpmessage igmp-type [operator operand] [port port number or name] [established] [fragments] 45 ACL étendue : Remarques © Mohammed EL HARFAOUI (elharfaoui@gmail.com) protocole IP, TCP, UDP, ICMP, IGMP, GRE, IGRP, EIGRP, OSPF, etc. Ou numéro de protocole (de 0 à 255) opérateur/opérande Pour TCP et UDP uniquement Compare les numéros de ports Pour la source et/ou la destination opérateur Signification eq Egal à neq Différent de lt Inférieur à gt Supérieur à range Entre (nécessite 2 numéros de port) established Uniquement avec TCP Correspond aux sessions TCP déjà établies 46 23 ACL étendue : Exemple d’utilisation © Mohammed EL HARFAOUI (elharfaoui@gmail.com) eq : equal Protocole Source Destination Port 1. access-list 101 permit ip host 10.0.0.1 any 2. access-list 101 deny ip 10.0.0.0 0.0.0.255 any 3. access-list 101 deny tcp host 172.16.6.1 192.168.1.0 0.0.0.255 eq 23 4. access-list 101 permit tcp 172.16.6.0 0.0.0.255 any eq telnet 1. autorise tout le trafic IP venant de l’hôte 10.0.0.1, quelle que soit la destination 2. refuse le trafic venant du réseau 10.0.0.0/24, quelle que soit la destination 3. interdit à l’hôte 172.16.6.1 (only) l’accès telnet au réseau 192.168.1.0/24 4. autorise tous les hôtes du réseau 172.16.6.0/24 à utiliser telnet vers tous les réseaux 47 ACL étendue : Exemple d’utilisation © Mohammed EL HARFAOUI (elharfaoui@gmail.com) 48 24 ACL étendue : Génération des numéros de port © Mohammed EL HARFAOUI (elharfaoui@gmail.com) 49 ACL étendue : Exemple d’utilisation 1 © Mohammed EL HARFAOUI (elharfaoui@gmail.com) R1(config)# ip access-list 101 permit tcp 192.168.10.0 0.0.0.255 any eq 80 R1(config)# ip access-list 101 permit tcp 192.168.10.0 0.0.0.255 any eq 443 R1(config)# ip access-list 102 permit tcp any 192.168.10.0 0.0.0.255 established L’ACL 101 autorise des requêtes TCP depuis le réseau 192.168.10.0 vers les ports 80 et 443 (HTTP & HTTPS) L’ACL 102 autorise des réponses HTTP & HTTPS établies. 50 25 ACL étendue : Application de l’ACL © Mohammed EL HARFAOUI (elharfaoui@gmail.com) R1(config)# interface S0/0/0 R1(config-if)# ip access-group 101 out R1(config-if)# ip access-group 102 in 51 ACL étendue – Exemple 2 © Mohammed EL HARFAOUI (elharfaoui@gmail.com) 172.16.3.0 172.16.0.0 S0 E0 E1 172.16.4.0 172.16.4.13 Router(config)# access-list 101 deny tcp 172.16.4.0 0.0.0.255 172.16.3.0 0.0.0.255 eq 21 Router(config)# access-list 101 deny tcp 172.16.4.0 0.0.0.255 172.16.3.0 0.0.0.255 eq 20 Router(config)# access-list 101 permit ip 172.16.4.0 0.0.0.255 0.0.0.0 255.255.255.255 (implicit deny all) (Router(config)# access-list 101 deny ip 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.25 Router(config-if)# interface ethernet 0 Router(config-if)# ip access-group 101 out Interdire le trafic FTP originaire du réseau 172.16.4.0 vers le réseau 172.16.3.0 via l’interface E0 Autoriser tout autre trafic 52 26 ACL étendue – Exemple 3 © Mohammed EL HARFAOUI (elharfaoui@gmail.com) 172.16.3.0 Non172.16.0.0 S0 E0 E1 172.16.4.0 172.16.4.13 Router(config)# access-list 102 deny tcp 172.16.4.0 0.0.0.255 any eq 23 Router(config)# access-list 102 permit ip any any (implicit deny all) (Router(config)# access-list 102 deny ip 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255) Router(config-if)# interface ethernet 0 Router(config-if)# ip access-group 102 out Interdire uniquement Telnet à partir 172.16.4.0 out of E0 Permettre tout autre trafic 53 ACL étendue – Exemple 4 © Mohammed EL HARFAOUI (elharfaoui@gmail.com) 172.16.3.0 Non172.16.0.0 S0 E0 E1 172.16.4.0 172.16.4.13 Router(config)# access-list access-list 103 permit tcp 172.16.4.0 0.0.0.255 any eq 25 (implicit deny all) (Router(config)# access-list 103 deny ip 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255) Router(config-if)# interface ethernet 0 Router(config-if)# ip access-group 103 out Autoriser uniquement le trafic SMTP (mail) de sortir via E0 Tout autre trafic est interdit 54 27 Vérification des ACLs © Mohammed EL HARFAOUI (elharfaoui@gmail.com) show access-lists Affiche toutes les ACL du routeur show access-lists {name | number} Affiche une ACL en particulier show running-config Affiche toutes les ACL et à quelles interfaces elles sont appliquées 55 Vérification des ACLs © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Suppression d’une ACL (en mode de configuration globale) no access-list {numéro | nom} Visualiser les ACL qui sont appliquées a cette interface, et leur sens d’application: show ip interface [{type} {numéro}] Lab_A#show ip interface FastEthernet 0/0 FastEthernet0/0 is up, line protocol is up Internet address is 20.0.0.1/8 Broadcast address is 255.255.255.255 Address determined by setup command MTU is 1500 bytes Helper address is not set Directed broadcast forwarding is disabled Outgoing access list is 101 Inbound access list is 1 --More-56 28 Vérification des ACLs © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Router#show ip interface Ethernet 0 is up, line protocol is up Internet address is 192.54.222.2, subnet mask is 255.255.255.0 Broadcast address is 255.255.255.255 Address determined by non-volatile memory MTU is 1500 bytes Helper address is 192.52.71.4 Secondary address 131.192.115.2, subnet mask 255.255.255.0 Outgoing access list 10 is set Inbound access list is not set Proxy ARP is enabled Security level is default Split horizon is enabled ICMP redirects are always sent ICMP unreachables are always sent ICMP mask replies are never sent IP fast switching is enabled Gateway Discovery is disabled IP accounting is disabled TCP/IP header compression is disabled Probe proxy name replies are disabled Router# 57 Vérification des ACLs © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Router#show {protocol} access-list {access-list number} Router#show access-lists {access-list number} Router> show access-lists Standard IP access list 19 permit 172.16.19.0 deny 0.0.0.0, wildcard bits 255.255.255.255 Standard IP access list 49 permit 172.16.31.0, wildcard bits 0.0.0.255 permit 172.16.194.0, wildcard bits 0.0.0.255 permit 172.16.195.0, wildcard bits 0.0.0.255 permit 172.16.196.0, wildcard bits 0.0.0.255 permit 172.16.197.0, wildcard bits 0.0.0.255 Extended IP access list 101 permit tcp 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 eq 23 Type code access list 201 permit 0x6001 0x0000 ….. Router> 58 29 Vérification des ACLs © Mohammed EL HARFAOUI (elharfaoui@gmail.com) 59 Pratique 5 © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Refuser le trafic FTP pour depuis le réseau 164.168.12.0/24 vers le réseau 164.168.11.0/24. Router(config)# access-list 101 deny tcp 164.168.12.0 0.0.0.255 164.168.11.0 0.0.0.255 eq 21 Router(config)# access-list 101 deny tcp 164.168.12.0 0.0.0.255 164.168.11.0 0.0.0.255 eq 20 Router(config)# access-list 101 permit ip any any R1(config)# interface Fa0/0 60 R1(config-if)# ip access-group 101 in 30 ACL nommée étendue © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Identification de l’ACL par une chaîne alphanumérique au lieu d’un numéro Intérêt Identifier facilement une ACL avec un nom au lieu d’un numéro Possibilité de supprimer ou ajouter une instruction particulière Pas besoin de tout supprimer comme avec les ACL numérotées Mode de configuration d’ACL nommée étendue (config-ext-nacl)# Exemple: 61 Dépannage d’erreurs relatives aux ACLs © Mohammed EL HARFAOUI (elharfaoui@gmail.com) 62 31 Dépannage d’erreurs relatives aux ACLs © Mohammed EL HARFAOUI (elharfaoui@gmail.com) 63 Dépannage d’erreurs relatives aux ACLs © Mohammed EL HARFAOUI (elharfaoui@gmail.com) 64 32 Dépannage d’erreurs relatives aux ACLs © Mohammed EL HARFAOUI (elharfaoui@gmail.com) 65 Dépannage d’erreurs relatives aux ACLs © Mohammed EL HARFAOUI (elharfaoui@gmail.com) 66 33 ACLs Complexes © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Les listes de contrôle d’accès standard et étendues peuvent être la base d’ACL complexes, qui fournissent des fonctions supplémentaires. Le tableau suivant résume les trois catégories d’ACLs complexes. ACLs complexes ACL dynamiques (lock-andkey ACLs) ACL réflexives (Reflexive ACLs) ACL basées sur le temps (Time-based ACLs) Description Les utilisateurs sont bloqués tant qu’ils n’utilisent pas Telnet/SSH pour se connecter et s’authentifier au routeur. Une fois authentifiés une entrée est ajouté dynamiquement à l’ACL. Autorisent le trafic sortant et limitent le trafic entrant uniquement en réponse aux sessions provenant du routeur lui-même. Autorisent le contrôle d’accès en fonction du temps (heure, jour et semaine). 67 ACLs dynamiques © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Les ACL classiques utilisent l’adresse IP pour déterminer quelles machines communiquent, mais il n’y a pas de vérification de l’identité de l’utilisateur luimême Pour les ACLs dynamiques l’utilisateur doit d’abord s’identifier via: Un nom d’utilisateur Un mot de passe Avec les ACLs dynamiques , on peut spécifier quel utilisateur peut accéder à des ressources (définies en @IP et n° de port), en spécifiant depuis quels hôtes il a le droit de le faire. On peut ainsi donner un accès dynamique à un utilisateur à travers un firewall, sans compromettre les autres restrictions de sécurité. 68 34 ACLs dynamiques © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Une ACL dynamique ou ACL Lock-and-key (verrou) utilise : Une connexion Telnet (ou ssh) L’authentification locale ou distante (TACACS+ ou RADIUS) Une ACL étendue. La configuration d’une ACL dynamique comprend donc: La création d’un compte utilisateur La création et l’application d’une ACL étendue qui bloque le trafic spécifié traversant le routeur (le trafic qu’on veut bloquer). Les utilisateurs souhaitant traverser le routeur sont bloqués par cette ACL tant qu’ils ne se connectent pas au routeur via Telnet et tant qu’ils n’ont pas été authentifiés. 69 ACL dynamiques © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Une fois les utilisateurs authentifiés: La connexion Telnet est abandonnée (fermée). Une entrée unique est ajoutée dynamiquement à l’ACL étendue existante Le trafic est alors autorisé pour une durée déterminée (possibilité de limiter la durée de l’autorisation de connexion). 70 35 ACLs dynamiques : Exemple © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Autoriser un administrateur sur PC1 à obtenir un accès momentané au réseau (192.168.30.0 /24) via le routeur R3. Pour faciliter cette tâche, une ACL dynamique est configurée sur l’interface série S0/0/1 du routeur R3. S0/0/1 71 ACL dynamique : Exemple avec authentification locale © Mohammed EL HARFAOUI (elharfaoui@gmail.com) définition d’un compte utilisateur avec mot de passe R3(config)# username admin password cisco Extanded ACL : autorisation du telnet sur l’interface du routeur ayant cette @IP R3(config)#access-list 101 permit tcp any host 10.2.2.2 eq telnet R3(config)#access-list 101 dynamic MyDynamicACL timeout 15 permit ip 192.168.10.0 0.0.0.255 192.168.30.0 0.0.0.255 entrée dynamique qui autorise tout le trafic IP à partir du réseau 192.168.10.0/24 vers le réseau 192.168.30.0/24 R3(config)# interface s0/0/1 R3(config-if)# ip address 10.2.2.2 255.255.255.252 R3(config-if)# no shut R3(config-if)# ip access-group 101 in R3(config)# line vty 0 4 R3(config-line)# login local R3(config-line)# autocommand access-enable timeout 5 l’authentification se fera en local commande d’activation de la partie dynamique de l’ACL : • elle sera ajoutée après un telnet authentifié • elle restera dans l’ACL pendant 5 minutes 72 36 ACL dynamique : Démo © Mohammed EL HARFAOUI (elharfaoui@gmail.com) 73 ACLs réflexives © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Le filtrage par ACL réflexive consiste à générer une ACL dynamiquement en fonction du trafic sortant afin d’autoriser temporairement le retour. Les ACLs réflexives filtrent les paquets IP en fonction des informations de session des couches supérieures. Elle permettent d’autoriser un certain trafic, seulement s’il a été initié depuis l’intérieur du réseau. Fonctionnement similaire à celui de l’option established ( qui n’est valable que pour le protocole TCP). Les ACL réflexives permettent ce type de filtrage aussi bien avec le protocole TCP, qu’avec le protocole UDP et ICMP. Le routeur examine le trafic sortant. Lorsqu’il détecte une nouvelle connexion, il ajoute une entrée à une ACL provisoire pour autoriser les réponses. 74 37 ACLs réflexives © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Les ACL réflexives comprennent uniquement des entrées provisoires qui sont supprimées automatiquement à la clôture d’une session. Ces entrées sont créées automatiquement au lancement d’une nouvelle session IP (par exemple, avec un paquet sortant). Les ACL réflexives ne s’appliquent pas directement à une interface. Elles sont imbriquées dans une ACL IP étendue nommée appliquée à cette interface. Les ACL réflexives peuvent être utilisées avec d’autres ACLs statiques (étendues et standards). 75 restrictions à l’utilisation des ACL réflexives © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Il y a deux restrictions à l’utilisation des ACL réflexives : Elles doivent être définies et utilisées uniquement dans une ACL IP étendue nommée. Ne fonctionne pas avec les applications qui changent de numéro de port en cours de session (par exemple FTP en mode actif). Le mode par défaut de FTP est le mode actif, dans ce mode : Le client ouvre une connexion de contrôle sur le port 21 du serveur. Quand le client demande des données le serveur utilise son port 20 pour lui envoyer. Le mode actif du protocole FTP est donc incompatible avec les ACLs réflexives. 76 38 ACLs réflexives : Exemple © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Exemple où on a besoin d’une ACL réflexive autorisant le trafic ICMP entrant et sortant, tout en autorisant uniquement le trafic TCP initié à l’intérieur du réseau. Tout autre trafic est refusé. L’ACL réflexive est appliquée (via une ACL étendue) à l’interface de sortie du routeur R2. 77 ACL Réflexive: Démo © Mohammed EL HARFAOUI (elharfaoui@gmail.com) 78 39 ACL Réflexive: Démo © Mohammed EL HARFAOUI (elharfaoui@gmail.com) !! Forcer le routeur R2 à tracker (pister) le trafic IP autorisé !! et initié depuis l’intérieur !! Ce trafic sera pris en charge l’ACL dynamique ALLTRAFFIC R2(config)#ip access-list extended OUTBOUNDFILTERS R2(config-ext-nacl)# permit ip 164.168.20.0 0.0.0.255 any reflect ALLTRAFFIC !! Créer une autre ACL étendue qui va évaluer le trafic de !! retour(Reflected traffic) pour voir s’il a été initié de !! l’intérieur. R2(config)#ip access-list extended INBOUNDFILTERS R2(config-ext-nacl)# evaluate ALLTRAFFIC !! Définir un ‘timeout’ globale R2(config)# ip reflexive-list timeout 180 !! Appliquer les deux ACLs sur l’interface série du routeur R2(config)# interface fa0/0 R2(config-if)# ip access-group OUTBOUNDFILTERS out R2(config-if)# ip access-group INBOUNDFILTERS in 79 ACL à caractère temporel (Time-based ACL) © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Ce genre d’ACL permet d’interdire certains trafics pendant certaines périodes L’implémentation des ACLs basées sur le temps nécessite la création d’une plage horaire, qui définit certains moments de la journée et de la semaine. Identifiez la plage horaire par un nom (qui doit, de préférable, désigner un rôle ou une fonction). La référence de temps utilisée est l’horloge interne du routeur, il est dans ce cas intéressant d’utiliser le protocole NTP (Network Time Protocol ) pour bien synchroniser tous les équipements. 80 40 Exemple d’ ACL basée sur le temps © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Dans cet exemple, une connexion Telnet est autorisée depuis le réseau intérieur au réseau extérieur les lundis, mercredis et vendredis pendant les heures ouvrables. Etape 1. Définissez la plage horaire pour implémenter une ACL et appelez-la EVERYOTHERDAY. Etape 2. Appliquez la plage horaire à l’ACL. Etape 3. Appliquez l’ACL à l’interface. 81 Autres utilisations des ACL © Mohammed EL HARFAOUI (elharfaoui@gmail.com) En plus de leur fonction de filtrage des paquets (acceptation ou rejet), les ACL sont utilisées notamment : Dans la modification des règles NAT (Traffic will be Nated or Not) Dans la mise en œuvre des serveurs AAA Dans la mise en œuvre des VPN Dans la mise en œuvre de la Qualité de Service (QoS). Etc. 82 41 Common Reserved TCP/UDP Port Numbers © Mohammed EL HARFAOUI (elharfaoui@gmail.com) Decimal Keyword Description 20 FTP DATA File Transfer Protocol (data) 21 FTP File Transfer Protocol 22 SSH Secure Shell 23 TELNET Terminal Connection 25 SMTP Simple Mail Transfer Protocol 53 DNS Domain Name Server 69 TFTP Trivial File Transfer Protocol 80 HTTP Hyper Text Transfer Protocol 110 POP3 Post Office Protocol v3 123 NTP Network Time Protocol 161 SNMP Simple Network Management Protocol 443 HTTPS Secure HTTP 520 RIP Routing Information Protocol 83 TD © Mohammed EL HARFAOUI (elharfaoui@gmail.com) 84 42