Afficher la pageAnciennes révisionsLiens de retourAjouter au livre.Exporter en PDFExportation ODTImport Word DocumentHaut de page Cette page est en lecture seule. Vous pouvez afficher le texte source, mais ne pourrez pas le modifier. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur. ====== ACL Cisco ====== Cisco offre sur ses matériels de niveau 3 la possibilité de réaliser du filtrage du trafic : on parle <wrap em>d'ACL (Access Control List)</wrap> qui s'appliquent sur les interfaces du matériel, soit en entrée (IN) ou en sortie (OUT). ===== Principes ===== ==== Définition et affectation aux interfaces ==== Les ACL se configurent de la manière suivante : * Définition de l'ACL : <code cisco>access-list <numéroACL> <actions></code> * Application de l'ACL à une interface : <code cisco>interface <numInterface> ip access-group <numéroACL> {in|out}</code> <WRAP center round important 95%> On ne peut affecter qu'une ACL sur une interface dans chaque sens (1 en **out**/ 1 en **in**) </WRAP> ==== Ressources ==== * [[https://www.cisco.com/c/fr_ca/support/docs/security/ios-firewall/23602-confaccesslists.html|Cisco]] * [[https://www.fingerinthenet.com/acl/]] : démarches illustrée et bien expliquée ==== Analyse du trafic et application des règles ==== Lors de l'analyse du trafic, le principe général du filtrage s'applique : * parcours des <wrap em>ACL dans l'ordre</wrap> de leur déclaration * <wrap em>si une règle correspond au trafic</wrap> on <wrap em>applique l'action</wrap> (autorisation ou refus) * <wrap em>si aucune règle n'est applicable</wrap>, l'action <wrap em>deny</wrap> (refus) est mise en œuvre (règle par défaut) ===== Les ACL ===== Cisco offre deux types d'ACL : * Les <wrap em>Access-lists Standard</wrap> (numéros de 1 à 99): elles permettent de filtrer uniquement sur les IP sources et sont utilisées pour le filtrage, mais aussi pour l'activation du Nat/Pat. * Les <wrap em>Access-lists Étendues</wrap> (numéros de 100 à 199) : elles permettent de filtrer sur la plupart des champs des en-têtes IP, TCP et UDP. ==== Syntaxe ACL Standard ==== Les ACL standard effectuent un filtrage sur l'adressage IP source. Elles peuvent donc servir à : * gérer le trafic depuis un VLAN * gérer le trafic depuis une machine === Syntaxe === <code lscript>access-list <numero1à99> <action> <ipsource> <masqueInversé></code> <WRAP center round tip 90%> Le <wrap em>masque inversé</wrap> s'écrit à l'opposé du masque de réseau : on place un 0 là ou on veut étudier l'information, et un 1 si on veut l'ignorer. Par exemple : * Masque inversé pour la classe C : 0.0.0.255 * Masque inversé pour une adresse exacte : 0.0.0.0 * Masque 255.255.192.0 inversé : 0.0.63.255 </WRAP> === Exemple === <code lscript> access-list 1 permit 192.168.1.254 0.0.0.0 access-list 1 deny 192.168.1 0.0.0.255</code> * La première ligne autorise le trafic depuis un matériel précis * La deuxième ligne interdit le trafic depuis tout un réseau * L'ensemble appliqué sur une interface (les deux formulations sont équivalentes) : * interdit le trafic pour tout un réseau sauf le matériel .254 * autorise le trafic pour le matériel .254 et l'interdit pour tous les autres équipements du réseau * **Remarque** : si on inverse les deux règles (réseau puis équipement), la deuxième ne s'appliquer jamais On peut voir la définition de l'ACL avec la commande **//show access-list//** : <code lscript>Standard IP access list 1 10 permit host 192.168.1.254 20 deny 192.168.1.0 0.0.0.255</code> ==== Syntaxe ACL étendues ==== Les ACL étendues correspondent à des règles de filtrage complètes. Elles peuvent porter sur : * les informations <wrap em>source</wrap> et <wrap em>destination</wrap> du trafic (IP, port, service, etc) * les <wrap em>protocoles de bas niveau</wrap> (tcp, ip, ospf, etc) * l'<wrap em>adressage IP</wrap> : any (toute adresse), host pour une machine ou IP+masque inversé pour un (sous)réseau * les <wrap em>services réseau</wrap>, * soit par leur nom pour certains services génériques (ftp, pop3, smtp, telnet, www), * soit par leur numéro de port * soit any pour toute valeur === Syntaxe === <code lscript>access-list <numero> <action> <protocole> <adresseSource> [<service>] <adresseDestination> [<service>]</code> <WRAP center round important 90%> La structure de la syntaxe dépendra du **protocole** choisi, certains éléments pouvant ne pas apparaître (les **s<ervice>** si on choisit IP comme protocole par exemple) </WRAP> ^^ Information ^ Détail ^^ ^^ numero | numéro compris entre 100 et 199 ou 2000 et 2699 || ^^ action | comportement de la règle : \\ * <wrap em>permit</wrap> (autorise) \\ * <wrap em>deny</wrap> (interdit) || ^^ protocole | protocole de bas niveau (3 ou 4 du modèle OSI) utilisé \\ * <wrap em>icmp</wrap> \\ * <wrap em>ip</wrap> \\ * <wrap em>tcp</wrap> \\ * <wrap em>udp</wrap> \\ * protocoles de gestion de réseau (RIP, OSPF, GRE, BGP, etc) || ^^ adresseSource \\ ou \\ adresseDestination | * <wrap em>any</wrap> : tout adressage \\ * <wrap em>host <ipMachine></wrap> : une machine précise \\ * <wrap em><ipReseau> <masqueInversé></wrap> : un réseau ou sous-réseau IP || ^^ service | Définit le ou les ports (source ou destination) à étudier \\ * <wrap em>eq</wrap> :Match only packets on a given port number \\ * <wrap em>gt</wrap> : Match only packets with a greater port number \\ * <wrap em>lt</wrap> : Match only packets with a lower port number \\ * <wrap em>neq</wrap> : Match only packets not on a given port number \\ * <wrap em>range</wrap> :Match only packets in the range of port numbers || === Exemples === <code lscript>access-list 101 permit tcp any host 192.168.1.254 eq www access-list 102 permit udp 192.168.1.0 0.0.0.255 any eq domain access-list 103 permit tcp host 192.168.1.30 host 172.20.2.2 eq 3306</code> * 101 : autorise la communication depuis n'importe où vers le serveur Web (http:80) d'IP 192.168.1.254 * 102 : autorise les postes du réseau 192168/10/24 à interroger tout serveur DNS (domain:53) * 103 : autorise l'échange depuis la machine 192.168.1.30 vers le serveur 172.20.2.2 en mysql (3306) ==== ACL nommées et multi-règles ==== On peut choisir de nommer les ACL plutôt que de les gérer uniquement par des numéros. On remplacera la syntaxe <code lscript>access-list</code> par la version <code lscript>ip access-list {extended|standard} <nom> </code> suivi des règles à appliquer. === Exemples === __Exemple 1__ Définit les échanges du réseau depuis le LAN vers un serveur Web, tout serveur DNS et un échange précis entre une machine et un serveur Mysql. sera affectée sur l'interface LAN en **//in//** <code lscript>ip access-list extended LAN permit tcp any host 172.20.1.254 eq www permit udp 192.168.1.0 0.0.0.255 any eq domain permit tcp host 192.168.1.30 host 172.20.2.2 eq 3306</code> __Exemple 2__ Définit les possibilités d'échange depuis les réseaux du LAN. Sera appliqué sur l'interface DMZ en **//out//** <code lscript>ip access-list standard DMZ permit 192.168.1.0 0.0.0.255 permit 192.168.20.0 0.0.0.255 permit 10.20.0.0 0.0.255.255</code> __Visualisation__ La commande **//show access-list//** affichera : <code lscript>Extended IP access list LAN 10 permit tcp any host 172.20.1.254 eq www 20 permit udp 192.168.1.0 0.0.0.255 any eq domain 30 permit tcp host 192.168.1.30 host 172.20.2.2 eq 3306 Standard IP access list DMZ 10 permit 192.168.1.0 0.0.0.255 20 permit 192.168.20.0 0.0.0.255 30 permit 10.20.0.0 0.0.255.255</code> ===== Affectation aux interfaces ===== ==== Principes ==== Une fois les ACL définies, on doit les appliquer aux interfaces. Sur une interface, on applique les règles en : * <wrap em>in</wrap> : le trafic provient de l'extérieur du matériel filtrant (routeur, firewall) et est analysé dès son arrivée sur l'interface. Cela permet de //**bloquer/autoriser le trafic au plus tôt**//. * <wrap em>out</wrap> : le trafic a pu entrer dans le matériel filtrant, il est analysé au moment où il doit ressortir par une interface. Cela peut être utile lorsque des **flux de sources diverses** doivent être gérés vers une destination commune (par exemple vers la DMZ) <WRAP center round tip 80%> Sur une interface donnée et dans un sens (in/out), il ne peut y avoir qu'une ACL. </WRAP> ==== Syntaxe ==== On doit d'abord choisir l'interface, puis lui affecter l'ACL dans le sens désiré. <code lscript>interface fa0/0 ip access-group LAN in exit interface fa0/1 ip access-group DMZ out</code> ciscoacl.txt Dernière modification : 2022/10/10 10:38de admin