Objectifs de certification

CCNA 200-301

  • 4.1 Configurer et vérifier inside source NAT (static et pools)

  • 1.7 Décrire la nécessité d’un adressage IPv4 privé

  • 1.6 Configurer et vérifier l’adressage et le sous-réseautage (subnetting) IPv4

  • 1.8 Configurer et vérifier l’adressage et les préfixes IPv6

  • 1.9 Comparer les types d’adresses IPv6

    • 1.9.a Global unicast
    • 1.9.b Unique local
    • 1.9.c Link local
    • 1.9.d Anycast
    • 1.9.e Multicast
    • 1.9.f Modified EUI 64
  • 5.6 Configurer et vérifier les access control lists


ACLs Cisco IPv4 et IPv6

Ce chapitre présente d’abord les principes de base des ACLs Ciso IOS. Ensuite, quelques exemples de mise en oeuvre en IPv4 démontrent leur usage. Enfin, le document se termine par un exposé sur les ACLs IPv6 en Cisco IOS.

1. ACLs

Une liste d’accès est un ensemble d’instructions basées sur des protocoles de couche 3 et de couches supérieures pour contrôler le trafic.

La configuration des ACLs IPv4 et des ACLs IPv6 sont similaires mais aussi très différentes.

Cette fonctionnalité Cisco IOS est utile pour :

  • les fonctions de pare-feu
  • le marquage du trafic, QoS
  • les configurations NAT
  • le contrôle des logs
  • le contrôle des accès aux consoles virtuelles (VTY)
  • le contrôle des informations de routage
  • le contrôle du trafic SNMP, …

1.1. Deux types d’ACLs (IPv4)

Les deux types d’ACLs se distinguent en fonction des critères utilisés :

Une liste simple (standard) et l’autre plus complexe (étendue).

  • Standard : uniquement adresse IPv4 source
  • Étendue :
    • protocole IPv4, ICMPv4, TCP, UDP, ESP, AH, … ou IPv6 et supérieurs
    • origine et destination
    • ports ou types de messages

Les ACLs standard n’existent plus en IPv6.

Liste d’accès standard

Router(config)#access-list numéro-liste-accès {deny|permit} adresse-source [masque-source] [log]

Liste d’accès étendue IPv4

Router(config)#access-list numéro-liste-accès {deny|permit} protocole adresse-source masque-source [opérateur port] adresse-destination masque-destination [opérateur port] [log]

Où protocole (IPv4) peut être :

  • <0-255> An IP protocol number
  • ahp Authentication Header Protocol
  • eigrp Cisco’s EIGRP routing protocol
  • esp Encapsulation Security Payload
  • gre Cisco’s GRE tunneling
  • icmp Internet Control Message Protocol
  • igmp Internet Gateway Message Protocol
  • ip Any Internet Protocol
  • ipinip IP in IP tunneling
  • ospf OSPF routing protocol
  • tcp Transmission Control Protocol
  • udp User Datagram Protocol

Où l’opérateur peut prendre les valeurs suivantes :

  • lt (less than) : “moins que”.
  • gt (greater than) : “plus que”.
  • eq (equal) : “égal à”.
  • neq (not equal) : “non équivalent”.
  • range (inclusive range) : “étendue d’une plage”.

Où le paramètre “port” peut prendre une valeur nominative ou numéraire : de 0 à 65535 ou, par exemple, www, telnet, ftp, etc.

1.2. ACLs numérotées

Les ACLs numérotées sont constituées d’un ensemble de règles :

  • ordonnées selon la frappe
  • ayant un même numéro

Pratique obsolète (en IPv6) dont le numéro indique la nature :

  • IPv4 standard : 1 - 99 et 1300 - 1999
  • IPv4 étendue : 100 - 199 et 2000 - 2699

Par exemple :

En configuration globale : (config)#

access-list 1 deny host 192.168.1.1
access-list 1 permit any

L’ACL standard 1 empêche seulement le trafic venant de l’hôte 192.168.1.100

Un autre exemple :

access-list 102 deny tcp any any eq 23
access-list 102 permit ip any any

L’ACL extended 102 empêche tout trafic vers le service Telnet et autorise tout autre trafic IPv4.

Faut-il encore placer ces ACLs dans une fonction (filtrage, marquage, règles NAT…)

1.3. ACL nommées

Les ACLs nommées se distinguent par un nom.

Il faut spécifier le type standard ou extended en IPv4.

Les ACLs IPv6 sont d’office “extended” de telle sorte que le paramètre disparaît des commandes.

les règles s’incrémentent d’un numéro d’ordre (tous les 10). Cet ID permet d’insérer des règles dans une liste.

(config)#ip access-list standard ACL_IPv4_STD
(config-std-nacl)#permit | deny ?
(config)#exit
(config)#ip access-list extended ACL_IPv4_EXT
(config-ext-nacl)#permit | deny ?
(config)#exit
(config)#ipv6 access-list ACL_IPv6
(config-ipv6-acl)#permit | deny ?

Par exemple :

(config)#ip access-list extended IPv4_LAN
(config-ext-nacl)#
permit tcp 192.168.0.0 0.0.255.255 any eq 80
permit tcp 192.168.0.0 0.0.255.255 any eq 443
#show access-lists
Extended IP access list IPv4_LAN
    10 permit tcp 192.168.0.0 0.0.255.255 any eq www
    20 permit tcp 192.168.0.0 0.0.255.255 any eq 443

1.4. Logique des ACLs appliquées sur les interfaces

Logique des ACLs appliquées sur les interfaces

Le routeur parcourt la liste d’accès et valide chaque règle jusqu’à trouver une correspondance.

Si une correspondance est trouvée, le routeur prend la décision permit ou deny correspondante. Il ne lit pas la suite de la liste.

Une ACL se termine toujours par une règle deny any implicite.

On imagine aisément que plus il y a de règles à examiner, plus il y a de la charge sur le matériel qui contrôle le trafic.

1.5. Masque générique

Il ne faut pas confondre un masque générique (wilcard mask) avec un masque de sous-réseau (subnet mask). Un masque générique est un masque de filtrage.

Quand un bit aura une valeur de 0 dans le masque, il y aura vérification de ce bit sur l’adresse IP de référence.

Lorsque le bit aura une valeur de 1, il n’y en aura pas.

Cette notion est utilisée dans les configurations OSPFv2 sous Cisco IOS.

Masque de réseau

Un masque de réseau est un masque de division ou de regroupement. Une addition booléenne d’une adresse IP et d’un masque de réseau est utilisée pour distinguer la partie réseau de la partie hôte.

En binaire, alors qu’un masque de réseau est nécessairement une suite homogène de 1 et puis de 0, un masque générique peut être une suite quelconque de 1 et de 0 en fonction du filtrage que l’on veut opérer sur des adresses IP.

Exemples de masque générique

Soit un masque générique 0.0.0.0 demande une correspondance exacte de l’adresse IP de référence :

permit 192.168.59.2 0.0.0.0

Le mot-clé host remplace 0.0.0.0 :

permit host 192.168.59.1

255.255.255.255 filtre toutes les adresses IPv4.

permit 0.0.0.0 255.255.255.255

Le mot-clé any remplace 0.0.0.0 255.255.255.255

permit any

Filtrer 192.168.59.0/24

Réseau : 192.168.59.0 255.255.255.0
ACL    : 192.168.59.0 0.0.0.255

Filtrer 192.168.2.40/30

Réseau : 192.168.2.40 255.255.255.252
ACL    : 192.168.2.40 0.0.0.3
Masques de “summarization”

Filtrer tous les réseaux qui commencent en 192.168 :

ACL : 192.168.0.0 0.0.255.255

Numéros pairs sur le dernier octet du /24 :

ACL : 192.168.1.0 0.0.0.254

Numéros impairs sur le troisième octet :

ACL : 0.0.1.0 255.255.254.255

1.6. Applications

En soi, une ACL n’a pas de portée si elle n’est pas appliquée.

De manière non exhaustive, les ACLs trouvent une quantité d’applications en Cisco IOS :

  • Filtrage sans état de trafic de données sur des interfaces.
  • Firewall (filtrage à état) sur des interfaces : ACL bloquante
  • Filtrage de trafic de trafic de gestion (sur une ligne VTY).
  • Trafic source dans une règle NAT (inside source list) pour désigner de nombreuses adresses IP privées à traduire.
  • Transfert de port
  • Déboggage pour filtrer les sorties.
  • … et bien d’autres en ingénérie du trafic (VPN, QoS, filtrage du routage, routage à la demande, …).

1.7. Direction des ACLs de filtrage

Les liste d’accès s’appliquent sur les interfaces :

  • pour le trafic entrant sur l’interface, in
  • pour le trafic sortant de l’interface, out
#show access-lists
Extended IP access list IPv4_LAN
    10 permit tcp 192.168.0.0 0.0.255.255 any eq www
    20 permit tcp 192.168.0.0 0.0.255.255 any eq 443
(config)#int f0/0
(config-subif)#ip access-group IPv4_LAN in

Combien d’ACLs de filtrage sur une interface ?

“Une seule ACL par interface par protocole par direction”

Cela signifie que l’on pourra appliquer au maximum pour chaque interface 4 ACLs :

  • une ACL IPv4 in
  • une ACL IPv4 out
  • une ACL IPv6 in
  • une ACL IPv6 out

1.8. Autres types d’ACLs

Ce document ne couvre pas d’autres types d’ACLs Cisco :

  • ACLs established
  • Reflexive ACLs
  • Dynamic ACLs (sorte de Port Knocking)
  • Time-based ACLs that use time ranges
  • Authentication proxy
  • Turbo ACLs
  • Distributed time-based ACLs

2. Exemples de mise en oeuvre ACLs IOS IPv4

  • Refuser l’accès d’un hôte à un réseau
  • Autoriser une plage contiguë d’adresses IP
  • Autoriser l’accès d’un hôte à une interface
  • Pare-simple CBAC
  • Autoriser des Pings (ICMP)
  • Autoriser le Web, le mail, FTP et SSH
  • Autoriser le trafic DNS
  • Autoriser le trafic de routage
  • Déboggage du trafic
  • Filtrage VTY (Telnet, SSH)
  • Filtrage NTP
  • Configurations NAT, PAT, transfert de ports (DNAT)
  • Règles implicites en IPv6
  • Filtrage IPv6

2.1. Refuser l’accès d’un hôte à un réseau

Refuser PC1 (192.168.59.3) d’accéder à Server (192.168.101.2) :

R1#show ip dhcp binding
Bindings from all pools not associated with VRF:
IP address          Client-ID/	 	    Lease expiration        Type
		    Hardware address/
		    User name
192.168.59.2        000c.298b.3f44          Mar 02 2015 12:08 AM    Automatic
192.168.59.3        0100.5079.6668.00       Mar 02 2015 12:41 AM    Automatic
192.168.101.2       000c.2995.6f42          Mar 02 2015 12:44 AM    Automatic
R1(config)#ip access-list standard DENY_PC1_SERVER
R1(config-std-nacl)#deny host 192.168.59.2
R1(config-std-nacl)#exit
R1(config)#int f1/0
R1(config-if)#ip access-group DENY_PC1_SERVER out

2.2. Autoriser une plage contiguë d’adresses IP

Autoriser le trafic d’une série de LANs adressés en 192.168.X.X/24 derrière le pare-feu :

R1(config)#ip access-list standard PERMIT_LANS
R1(config-std-nacl)#permit 192.168.0.0 0.0.255.255

2.3. Autoriser l’accès d’un hôte à une interface

R1#show ip dhcp binding
Bindings from all pools not associated with VRF:
IP address          Client-ID/	 	    Lease expiration        Type
		    Hardware address/
		    User name
192.168.59.2        000c.298b.3f44          Mar 02 2015 12:08 AM    Automatic
192.168.59.3        0100.5079.6668.00       Mar 02 2015 12:41 AM    Automatic
192.168.101.2       000c.2995.6f42          Mar 02 2015 12:44 AM    Automatic
R1(config)#ip access-list standard PERMIT_PC1
R1(config-std-nacl)#permit host 192.168.59.2
R1(config-std-nacl)#exit
R1(config)#int f0/0
R1(config-if)#ip access-group PERMIT_PC1 in

Test à partir de PC1 et de PC2 avant et après l’application de l’ACL.

2.4. Pare-feu simple CBAC

(config)#ip access-list extended IP_BLOCK
(config-ext-nacl)#100 deny ip any any
(config-ext-nacl)#exit
(config)#exit
(config)#int f0/0
(config-if)#ip access-group IP_BLOCK in
#show access-list IP_BLOCK
Extended IP access list IP_BLOCK
    deny ip any any (39 match(es))
(config)#ip inspect name FW udp
(config)#ip inspect name FW tcp
(config)#int f0/0
(config-subif)#ip inspect FW out

On peut aussi demander à auto secure firewall en mode privilège :

R1#auto secure firewall
		--- AutoSecure Configuration ---

*** AutoSecure configuration enhances the security of
the router, but it will not make it absolutely resistant
to all security attacks ***

AutoSecure will modify the configuration of your device.
All configuration changes will be shown. For a detailed
explanation of how the configuration changes enhance security
and any possible side effects, please refer to Cisco.com for
Autosecure documentation.
At any prompt you may enter '?' for help.
Use ctrl-c to abort this session at any prompt.

Gathering information about the router for AutoSecure

Is this router connected to internet? [no]: yes
Enter the number of interfaces facing the internet [1]:
Interface                  IP-Address      OK? Method Status                Protocol
GigabitEthernet0/0         192.168.1.1     YES NVRAM  up                    up
GigabitEthernet0/1         unassigned      YES NVRAM  administratively down down
GigabitEthernet0/2         192.168.3.1     YES NVRAM  up                    up
GigabitEthernet0/3         unassigned      YES NVRAM  administratively down down
Enter the interface name that is facing the internet: GigabitEthernet0/1

Configure CBAC Firewall feature? [yes/no]: yes

This is the configuration generated:

ip inspect audit-trail
ip inspect dns-timeout 7
ip inspect tcp idle-time 14400
ip inspect udp idle-time 1800
ip inspect name autosec_inspect ftp timeout 3600
ip inspect name autosec_inspect http timeout 3600
ip inspect name autosec_inspect rcmd timeout 3600
ip inspect name autosec_inspect realaudio timeout 3600
ip inspect name autosec_inspect smtp timeout 3600
ip inspect name autosec_inspect tftp timeout 30
ip inspect name autosec_inspect udp timeout 15
ip inspect name autosec_inspect tcp timeout 3600
ip access-list extended autosec_firewall_acl
 permit udp any any eq bootpc
 deny ip any any
interface GigabitEthernet0/1
 ip inspect autosec_inspect out
 ip access-group autosec_firewall_acl in
!
end


Apply this configuration to running-config? [yes]: yes

Applying the config generated to running-config

R1#
*Aug 14 23:03:04.669: %AUTOSEC-5-ENABLED: AutoSecure is configured on the device

2.5. Autoriser des Pings (ICMP)

Le plus simplement du monde avec CBAC :

R1(config)#ip inspect name FW icmp

Autrement par ACL out WAN (f0/0) :

10 permit icmp any any echo-reply

2.6. Autoriser le trafic DNS

Dur dur l’Internet sans DNS …

11 permit udp any eq domain any

2.7. Autoriser le trafic DHCP

12 permit udp any eq bootps any eq bootpc

2.8. Autoriser le Web, le Mail, FTP et SSH

Par exemple Vers le serveur en DMZ 192.168.101.2 venant de toutes les autres zones :

R1(config)#ip access-list extended DMZ_SERVICES
R1(config-ext-nacl)#permit tcp any host 192.168.101.2 eq www
R1(config-ext-nacl)#permit tcp any host 192.168.101.2 eq 22
R1(config-ext-nacl)#permit tcp any host 192.168.101.2 eq smtp
R1(config-ext-nacl)#permit tcp any host 192.168.101.2 eq pop3
R1(config-ext-nacl)#permit tcp any host 192.168.101.2 eq 21
R1(config-ext-nacl)#
R1(config-ext-nacl)#exit
R1(config)#int f1/0
R1(config-if)#ip access-group DMZ_SERVICES out

2.9. Autoriser des mises-à-jour de routage

permit udp any any eq rip
permit eigrp any any
permit ospf any any
permit tcp any any eq 179
permit tcp any eq 179 any

2.10. Déboggage du trafic

Par exemple :

R1(config)#access-list 199 permit tcp host 192.168.56.2 host 192.168.101.2
R1(config)#access-list 199 permit tcp host 192.168.101.2 host 192.168.56.2
R1(config)#end
R1#debug ip packet 199 detail
IP packet debugging is on (detailed) for access list 199

2.11. Refuser/autoriser du trafic SSH

Sur une interface : Non

Sur l’accès à une console VTY : Oui

2.12. Contrôle des accès consoles VTY

(config)#ip access-list extended VTY
(config-ext-nacl)#permit ip host 172.16.0.1 any
(config-ext-nacl)#permit ip 192.168.56.0 0.0.0.255 any
(config-ext-nacl)#exit
(config)#line vty 0 4
(config-line)#ip access-class VTY in

2.13. Contrôle des requêtes NTP

Configuration du service NTP :

ntp master 5
ip access-list standard LAN_R1
 permit 192.168.1.0 0.0.0.255
ntp access-group serve-only LAN_R1

2.14. NAT

Le NAT permet de traduire :

  • les adresses internes (inside)
    • privée (local) en
    • publique (global)
  • les adresses externes (outside)

Le routeur NAT tient une table de traduction

Il transforme le trafic : il remplace les en-têtes IP et de couche transport (UDP/TCP).

PAT

Un routeur peut prendre en compte le port TCP ou UDP utilisé. On appelle cette technique “Port Address Translation”.

La méthode PAT permet de :

  • transférer un service TCP ou UDP sur une adresse privée vers une adresse publique.
  • multiplexer la connectivité globale d’un LAN avec une seule adresse IP publique.

Le “PAT” correspond au “NAT overload” de Cisco

Mise en oeuvre du PAT (NAT Overload)

access-list 1 permit 192.168.0.0 0.0.255.255
!
ip nat inside source list 1 interface f0/1 overload
!
interface f0/1.1
 ip nat inside
interface f0/1.2
 ip nat inside
interface f0/0
 ip nat outside
!
end

Vérification du NAT/PAT

R1#show ip nat translations
Pro  Inside global     Inside local       Outside local      Outside global
icmp 195.238.2.21:11   192.168.1.254:11   195.238.2.22:11    195.238.2.22:11
icmp 195.238.2.21:12   192.168.1.254:12   195.238.2.22:12    195.238.2.22:12
icmp 195.238.2.21:13   192.168.1.254:13   195.238.2.22:13    195.238.2.22:13
icmp 195.238.2.21:14   192.168.1.254:14   195.238.2.22:14    195.238.2.22:14
icmp 195.238.2.21:15   192.168.1.254:15   195.238.2.22:15    195.238.2.22:15

Note :

  • Inside Local = adressage privé
  • Inside Global = adressage public

2.15. Transfert de port (DNAT)

Transfert de trafic du port TCP 3389 entrant surune interface f0/1 (externe) vers une adresse (interne) sur le même port.

(config)#
ip nat inside source static tcp 192.168.59.1 3389 interface f0/1 3389

3. ACLs Cisco IOS IPv6

3.1. Filtrages IPv6

  • Préfixes bogon
  • En-têtes et extension d’en-tête
  • Filtrage des tunnels (6in4, GRE, IPSEC, …)
  • Firewall L2
  • Logs et performances

Dans le document qui suit, on développera :

  • ACL : filtrage sans état
  • IPv6 IOS Firewall : SPI + ACL
  • IPv6 Zone-Based Firewall (ZBF)

3.2. Cisco IPv6 ACLs

Les ACLs IPv6 sont très similaires aux ACLs IPv4. Il n’y a plus que des ACLs nommées étendues.

(config)#ipv6 access-list name
permit/deny protocol {source-ipv6-prefix/prefix-length | any | host source-ipv6-address | auth} [operator [port-number]] {destination-ipv6-prefix/prefix-length | any | host destination-ipv6-address | auth} [operator [port-number]] [dest-option-type[doh-number | doh-type]] [dscp value] [flow-label value] [fragments] [log] [log-input] [mobility] [mobility-type [mh-number | mh-type]] [reflect name [timeout value]] [routing] [routing-type routing-number] [sequence value] [time-range name]

Les ACLs IPv6 sont appliquées sur les interfaces en utilisant la commande :

(config-if)#ipv6 traffic-filter access-list-name {in | out}

Entrées implicites ACLs

Toutes les ACLs IPv6 contiennent deux règles implicites qui autorisent le trafic IPv6 neighbor discovery (ND) à l’envoi et à la réception :

permit icmp any any nd-na
permit icmp any any nd-ns

Comme les ACLs IPv4, les ACLs IPv6 contiennent une règle imlicite qui refuse tout autre trafic.

deny ipv6 any any

Ces règles ne sont pas visibles dans la configuration? On conseillera de les encoder explicitement. Entrer manuellement la règle implicite deny any any vous permettra de journaliser les paquets refuser sans concerner neighbor discovery (ND).

3.3. Exemple ACL IPv6

Exemple refuser tout trafic TCP80 pour une adresse en dehors du LAN :

interface f0/0
 description interface LAN
 ipv6 traffic-filter BLOCK_HOST_01 in
!
ipv6 access-list BLOCK_HOST_01
 sequence 20 deny tcp host 2001:db8:1ab::1 any eq www

3.4. Trafic IPv6 à contrôler

Trafic à bloquer

TypePréfixes
unspecified address::
loopback address::1
IPv4-compatible addresses::/96
IPv4-mapped addresses (obsolète) ::ffff:0.0.0.0/96, ::/8
automatically tunneled packets using compatible addresses (déprécié RFC 4291)::0.0.0.0/96
other compatible addresses ::224.0.0.0/100, ::127.0.0.0/104, ::0.0.0.0/104, ::255.0.0.0/104
false 6to4 packets 2002:e000::/20, 2002:7f00::/24, 2002:0000::/24, 2002:ff00::/24, 2002:0a00::/24, 2002:ac10::/28, 2002:c0a8::/32
link-local addressesfe80::/10
site-local addresses (déprécié)fec0::/10
unique-local packetsfc00::/7
multicast packets (seulement comme adresse source)ff00::/8
documentation address2001:db8::/32
6Bone addresses (déprécié)3ffe::/16

Messages ND à autoriser

Messages ND à autoriser.

  • IPv6 multicast packets (MAC addresses 3333.0000.0000 à 3333.FFFF.FFFF).
  • Neighbor Advertisement (NA), Neighbor Solicitation (NS) messages, et les paquets Duplicate Address Detection (DAD).
  • Router Advertisement (RA) and Router Solicitation (RS) pour SLAAC.

3.5. Exemple d’ACL bloquante

ipv6 access-list Internet-Inbound
 remark Deny loopback address
 deny ipv6 ::1/128 any
 remark Deny IPv4-compatible addresses
 deny ipv6 0::/96 any
 remark Deny IPv4-mapped addresses (obsolete)
 deny ipv6 ::ffff:0.0.0.0/96 any
 remark Deny auto tunneled packets w/compatible addresses (RFC 4291)
 deny ipv6 ::0.0.0.0/96 any
 remark Deny other compatible addresses
 deny ipv6 ::224.0.0.0/100 any log
 deny ipv6 ::127.0.0.0/104 any log
 deny ipv6 ::0.0.0.0/104 any log
 deny ipv6 ::255.0.0.0/104 any log
 remark Deny false 6to4 packets
 deny ipv6 2002:e000::/20 any log
 deny ipv6 2002:7f00::/24 any log
 deny ipv6 2002:0000::/24 any log
 deny ipv6 2002:ff00::/24 any log
 deny ipv6 2002:0a00::/24 any log
 deny ipv6 2002:ac10::/28 any log
 deny ipv6 2002:c0a8::/32 any log
 remark Permit good NDP messages since we deny and log at the end
 permit icmp fe80::/10 any nd-na
 permit icmp fe80::/10 any nd-ns
 remark Deny Link-Local communications
 deny ipv6 fe80::/10 any
 remark Deny Site-Local (deprecated)
 deny ipv6 fec0::/10 any
 remark Deny Unique-Local packets
 deny ipv6 fc00::/7 any
 remark Deny multicast packets
 deny ipv6 ff00::/8 any
 remark Deny Documentation Address
 deny ipv6 2001:db8::/32 any
 remark Deny 6Bone addresses (deprecated)
 deny ipv6 3ffe::/16 any
 remark Deny RH0 packets
 deny ipv6 any any routing-type 0 log
 remark Deny our own addresses coming inbound
 deny ipv6 2001:db8:11::/48 any log
 remark permit BGP to and from our EBGP neighbor
 permit tcp host 2001:db8:4::1 host 2001:db8:4::2 eq bgp
 permit tcp host 2001:db8:4::1 eq bgp host 2001:db8:4::2
 remark Permit traffic to our web server
 permit tcp any host 2001:db8:11::100 eq www
 remark Permit our returned traffic from internal clients
 permit tcp any 2001:db8:11::/48 range 1024 65535
 permit udp any 2001:db8:11::/48 range 1024 65535
 remark Permit inbound DNS responses to our internal caching DNS server
 permit udp any eq domain host 2001:db8:11:30:20c:29ff:fe5d:982a
 remark Permit good ICMPv6 message types
 permit icmp any 2001:db8:11::/48 destination-unreachable
 permit icmp any 2001:db8:11::/48 packet-too-big
 permit icmp any 2001:db8:11::/48 parameter-problem
 permit icmp any 2001:db8:11::/48 echo-reply
 remark Permit our ISP to ping our external interface
 permit icmp host 2001:db8:4::1 host 2001:db8:4::2 echo-request
 remark Deny everything else and log it
 deny ipv6 any any log

4. Firewall CBAC IPv6 standard

Firewall Cisco IOS SPI et ACL. En 6 étapes :

  1. Vérifier la connectivité et le routage
  2. Configuration globale
  3. Configuration des interfaces
  4. Configuration des ACLs
  5. Tester de l’extérieur et de l’intérieur
  6. Ouverture du trafic

4.1. Paramètres globaux

! paramètres globaux
enable
configure terminal
 ipv6 unicast-routing
 ipv6 inspect name ipv6_test icmp timeout 60
 ipv6 inspect name ipv6_test tcp timeout 60
 ipv6 inspect name ipv6_test udp timeout 60

4.2. Configuration des interfaces

interface G0/0
 description LAN (TRUST)
 ipv6 enable
 ipv6 traffic-filter INBOUND out
 ipv6 inspect ipv6_test in
!
interface G0/1
 description WAN (UNTRUST)
 ipv6 enable
 ipv6 traffic-filter OUTBOUND in

4.3. ACLs bloquantes

ipv6 access-list INBOUND
permit icmp any any nd-na
permit icmp any any nd-ns
deny ipv6 any any log
!
ipv6 access-list OUTBOUND
 permit icmp any any nd-na
 permit icmp any any nd-ns
 deny ipv6 any any log

4.4. Vérifications

show ipv6 access-lists
show ipv6 inspect ?

5. Exemple de configuration ZBF

A titre de comparaison avec les ACLs et Stateful Packet Inspection, voici une version moderne du pare-feu à état appelée en Cisco IOS “Zone Based Firewall” (ZBF).

Source : https://supportforums.cisco.com/docs/DOC-28403

On trouve deux zones de sécurité dans cette topologie.

  • z1 où l’interface g0/0 est associée est une zone de confiance (interne)
  • z2 où l’interface g0/1 est associée est une zone sans confiance (externe, untrusted)

Le trafic à surveiller est celui qui va de la zone “z1” à la “z2”, en IPv4 comme en IPv6, pour les protocoles :

  • tcp
  • udp
  • icmp

5.1. Création du firewall

parameter-map type inspect v6-param-map
 sessions maximum 10000
 ipv6 routing-header-enforcement loose
!
class-map type inspect match-any v6-class
 match protocol tcp
 match protocol udp
 match protocol icmp
!
policy-map type inspect v6-policy
 class type inspect v6-class
  inspect
!
zone security z1
zone security z2
!
zone-pair security zp source z1 destination z2
 service-policy type inspect v6-policy

5.2. Configuration des interfaces

interface g0/0
 description LAN (TRUST)
 ipv6 enable
 zone-member z1
!
interface g0/1
description Internet (UNTRUST)
 ipv6 enable
 zone-member z2

5.3. Diagnostic fondamental ACLs IPv6

Sous Cisco IOS :

show ipv6 access-list [access-list-name]
show ipv6 inspect {name inspection-name | config | interfaces | session [detail] | all}
show logging [slot slot-number | summary]

Pour les épreuves :

6. Références ACLs IPv6