Access-list (ACL)

Access-list

Access-list

Présentation


Access-list = Liste d’accès !

 

Principe de fonctionnement


Imaginez que vous organisez une soirée privée et que vous ne voulez pas donner l’accès à cette soirée à tout le monde ! Vous allez faire quoi ?

– Créer une liste d’invitée.
– Placer un agent de sécurité devant la porte avec votre liste.

Vous allez donner la consigne suivante à votre agent de sécurité :

Voici ta liste. Pour l’appliquer, rien de plus simple, tu regardes ligne par ligne !!!

 

Eric DUBOIS en BasketACCEPTE.

Homme seule en Costard + CravateACCEPTE.

Femme en BasketREFUSE.

L’équipe de Rugby en BasketREFUSE.

Homme seule en Chaussure de ville ? REFUSE.

 

Dans notre cas c’est exactement pareil ! on va

– Créer une access-list.
– Mettre cette access-list en place pour qu’elle puisse être active !

Ce cours va porter deux grands chapitres :

– Création d’une Acess-list.
– Mise en place d’une access-list.

 

Terminologie


ACL = access-list.
Standard = Standard.
Extended = étendue.
Named = nommée.
Numbered = numéroté.
Match = Un flux qui correspond à une règle.
Wildcard = Masque de réseau inversé.

 

WildCard Mask


Voir article sur le Wildcard.

Rappel : Wildcard = Masque inversé.

1er Octet 3eme Octet

/0 = 0.0.0.0 = 255.255.255.255
/1 = 128.0.0.0 = 127.255.255.255
/2 = 192.0.0.0 = 63.255.255.255
/3 = 224.0.0.0 = 31.255.255.255
/4 = 240.0.0.0 = 15.255.255.255
/5 = 248.0.0.0 = 7.255.255.255
/6 = 252.0.0.0 = 3.255.255.255
/7 = 254.0.0.0 = 1.255.255.255
/8 = 255.0.0.0 = 0.255.255.255

/17 = 255.255.128.0 = 0.0.127.255
/18 = 255.255.192.0 = 0.0.63.255
/19 = 255.255.224.0 = 0.0.31.255
/20 = 255.255.240.0 = 0.0.15.255
/21 = 255.255.248.0 = 0.0.7.255
/22 = 255.255.252.0 = 0.0.3.255
/23 = 255.255.254.0 = 0.0.1.255
/24 = 255.255.255.0 = 0.0.0.255

2eme Octet 4eme Octet

/9 = 255.128.0.0 = 0.127.255.255
/10 = 255.192.0.0 = 0.63.255.255
/11 = 255.224.0.0 = 0.31.255.255
/12 = 255.240.0.0 = 0.15.255.255
/13 = 255.248.0.0 = 0.7.255.255
/14 = 255.252.0.0 = 0.3.255.255
/15 = 255.254.0.0 = 0.1.255.255
/16 = 255.255.0.0 = 0.0.255.255

/25 = 255.255.255.128 = 0.0.0.127
/26 = 255.255.255.192 = 0.0.0.63
/27 = 255.255.255.224 = 0.0.0.31
/28 = 255.255.255.240 = 0.0.0.15
/29 = 255.255.255.248 = 0.0.0.7
/30 = 255.255.255.252 = 0.0.0.3
/31 = 255.255.255.254 = 0.0.0.1
/32 = 255.255.255.255 = 0.0.0.0

 

Type d’ACL


Différents type d'access-list

Différents type d’access-list

 

ACL standard


– Numéro : de 1 à 99 et de 1300 à 1999.
– Nom : Ce que vous voulez !

Une Access-list standard ne filtre que l’adresse IP source d’un paquet.

 

Numbered

R1(config)# access-list 1 permit 192.168.1.0 0.0.0.255
R1(config)# access-list 1 permit host 192.168.2.1
R1(config)# access-list 1 deny any log

Named

R1(config)# ip access-list standard ACL_LINE_VTY
R1(config-std-nacl)# permit 192.168.1.0 0.0.0.255
R1(config-std-nacl)# permit host 192.168.2.1
R1(config-std-nacl)# deny any log

Exemple

R1(config)# ip access-list standard ACL_LINE_VTY
R1(config-std-nacl)# remark ******* LAN ADMIN *********
R1(config-std-nacl)# permit 192.168.1.0 0.0.0.255 log
R1(config-std-nacl)# remark ***********  SSI **************
R1(config-std-nacl)# permit host 192.168.2.1 log
R1(config-std-nacl)# remark **********  DENY *************
R1(config-std-nacl)# deny any log

 

 

ACL étendue


– Numéro : de 100 à 199 et de 2000 à 2699.
– Nom : Ce que vous voulez !

R1(config)# ip access-list extended ACL_CLIENTS_VERS_SERVEUR
R1(config-ext-nacl)# remark -------------------------------------------------------------
R1(config-ext-nacl)# remark                      ACTIVE DIRECTORY
R1(config-ext-nacl)# remark -------------------------------------------------------------
R1(config-ext-nacl)# remark -------------------------- LDAP -----------------------------
R1(config-ext-nacl)# permit tcp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] eq 389
R1(config-ext-nacl)# permit udp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] eq 389
R1(config-ext-nacl)# remark -------------------------- RPC ------------------------------
R1(config-ext-nacl)# permit tcp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] eq 135
R1(config-ext-nacl)# remark ---------------------- RPC Dynamique ------------------------
R1(config-ext-nacl)# permit tcp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] gt 1023
R1(config-ext-nacl)# remark ------------------------ Kerberos ----------------------------
R1(config-ext-nacl)# permit tcp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] eq 88
R1(config-ext-nacl)# permit udp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] eq 88
R1(config-ext-nacl)# remark --------------------------- SMB ------------------------------
R1(config-ext-nacl)# permit tcp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] eq 445
R1(config-ext-nacl)# remark --------------------------- GPO ------------------------------
R1(config-ext-nacl)# permit icmp [@Rsx-Client] [Wildcard] host [@IP_AD1] echo
R1(config-ext-nacl)# permit icmp [@Rsx-Client] [Wildcard] host [@IP_AD1] echo-reply
R1(config-ext-nacl)# remark -------------------------------------------------------------
R1(config-ext-nacl)# remark                      DENY ANY ANY LOG
R1(config-ext-nacl)# remark -------------------------------------------------------------
R1(config-ext-nacl)# deny ip ay any log

 

Notion de port


eq (port égale à XXX ).
gt (port supérieur à XXX).
lt (port inférieur à XXX).
neq (tous les ports sauf le port XXX).
range X-Y (tous les ports compris entre X et Y).

 

Notion de protocole


Les plus courants

ip (Tout protocole – pas de notion de port).
tcp (protocole tcp).
udp (protocole udp).
icmp (ping, traceroute).

Routage Dynamique

ospf.
eigrp.

Tunneling.

esp.
gre.
ipinip.

Et pleins d’autres …

 

Autres notions


Vous pouvez matcher un flux en fonction

– Du protocole.
– Du champs TOS.
– Si la connection est déja établie ou non.
– Mettre une plage horaire
– Matcher les SYN SYN-ACK ACK d’une connection TCP.
– Et tellement d’autres options !!!

En gros vous avez une multitude d’options ! Faire un article sur toutes ces options prendrais un temps fou !!!!! Peut être plus tard, mais pour le moment restons dans les généralitées !

 

ACL réflexive


 

Mise en évidence


– Je connecte deux PC entre eux.
– Je les met dans le même réseau.
– Je veux vérifier ma configuration avec la commande ping.

Problème = Le Pare-Feu de mes PC sont actives.
Solution = Désactiver le pare feu !

Mais que c’est t’il passé réellement ?

Mise en évidence des ACL réflexive

Mise en évidence des ACL réflexive

 

Notre firewall :

– Nous permet de faire des ping.
– Ne permet pas une personne externe de nous pinger.

Mais comment se fait t-il que notre Firewall laisse passer la réponse à notre ping ?
Grâce à une règle de filtrage réflective !
Notre Firewall voit notre requête et comprend qu’elle va recevoir une réponse d’ici peu de temps. Elle autorise donc le destinataire du ping à répondre au ping dans un laps de temps donnée.

 

Mise en place


Reprenons notre exemple d’ACL étendu.
Si nous mettons cette ACL en place, nous allons filtrer uniquement les flux CLIENTS => SERVEURS
Mais que fais t’ont des flux SERVEURS => CLIENTS ?
Nous allons créer une deuxième ACL, identique à la première, mais en inversant les sources et les destinations ?

Tout en sachant que nos serveurs ne vont jamais interroger directement nos clients sur ces flux, nous allons mettre en place des ACL réflexive !

il suffit simplement de rajouter cette commande à chaque fin de ligne :

reflect [NOM_DE_L’ACL_DYNAMIQUE]

Puis appliquer cette ACL DYNAMIQUE à une ACL étendu.

evaluate [NOM_DE_L’ACL_DYNAMIQUE]

 

R1(config)# show run | begin ip access-list
ip access-list extended ACL_CLIENTS_VERS_SERVEUR
remark -------------------------------------------------------------
remark                    ACTIVE DIRECTORY
remark -------------------------------------------------------------
remark -------------------------- LDAP -----------------------------
permit tcp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] eq 389 reflect ACL_DYN_CLT-SRV
permit udp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] eq 389 reflect ACL_DYN_CLT-SRV
remark -------------------------- RPC ------------------------------
permit tcp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] eq 135 reflect ACL_DYN_CLT-SRV
remark ---------------------- RPC Dynamique ------------------------
permit tcp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] gt 1023 reflect ACL_DYN_CLT-SRV
remark ------------------------ Kerberos ----------------------------
permit tcp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] eq 88 reflect ACL_DYN_CLT-SRV
permit udp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] eq 88 reflect ACL_DYN_CLT-SRV
remark --------------------------- SMB ------------------------------
permit tcp [@Rsx-Client] [Wildcard] gt 1023 host [@IP_AD1] eq 445 reflect ACL_DYN_CLT-SRV
remark --------------------------- GPO ------------------------------
permit icmp [@Rsx-Client] [Wildcard] host [@IP_AD1] echo reflect ACL_DYN_CLT-SRV
permit icmp [@Rsx-Client] [Wildcard] host [@IP_AD1] echo-reply reflect ACL_DYN_CLT-SRV
remark -------------------------------------------------------------
remark                       DENY ANY ANY LOG
remark -------------------------------------------------------------
deny ip ay any log
R1(config)# ip access-list extended ACL_SERVEUR_VERS_CLIENTS
R1(config-ext-nacl)# evaluate ACL_DYN_CLT-SRV
R1(config-ext-nacl)# exit

Et enfin, nous allons appliquer nos ACL sur l’interface vlan  VLAN_CLIENT.

SW_D_01(config)# interface vlan 10
SW_D_01(config-if)# description VLAN_CLIENT
SW_D_01(config-if)# ip access-group ACL_CLIENTS_VERS_SERVEUR out
SW_D_01(config-if)# ip access-group ACL_SERVEUR_VERS_CLIENTS in

 

Vérification


SW_D_01# show access-lists

[...]
Reflexive IP access list ACL_DYN_CLT-SRV
 permit icmp host X.X.X.X host X.X.X.X (12 matches) (time left 275)
Extended IP access list ACL_SERVEUR_VERS_CLIENTS
    10 evaluate ACL_DYN_CLT-SRV


[...]

 

Mise en place des ACL


 

Sur une interface physique


Interface physique

Interface physique

R1(config)# interface FastEthernet 0/1
R1(config-if)# description VLAN_CLIENT
R1(config-if)# ip access-group ACL_R1_VERS_WAN out
R1(config-if)# ip access-group ACL_WAN_VERS_R1 in

 

 

Sur une interface vlan


ACL - Interface Vlan

Interface Vlan

SW_D_01(config)# interface vlan 10
SW_D_01(config-if)# description VLAN_CLIENT
SW_D_01(config-if)# ip access-group ACL_VLAN_10_VERS_WAN in
SW_D_01(config-if)# ip access-group ACL_WAN_VERS_VLAN_10 out

 

Sur une Line vty


ACL - Line VTY

ACL – Line VTY

R1(config)# line vty 0 4
R1(config-line)# access-class ACL_SSH in

 

Conclusion


– Une ACL étendue ne remplacera jamais un FIREWALL !!! ACL = Couche 4 | Firewall = Couche 7.
– Les flux récurrent sont à matcher en début d’ACL afin de ne pas surcharger le CPU de notre équipement.
– Une ACL se place toujours au plus près de la source.
– Vous voulez rajouter un flux ?

Désactiver l’ACL.
Effacer l’ACL.
– Insérer la nouvelle ACL.
Appliquer la nouvelle ACL.

 

En espérant que cet article vous a été utile ! Hésitez pas à me la faire savoir !!

FingerInTheNet.com

Noël NICOLAS

Expert Réseau
10 ans d’expérience
CCNP Routing and Switching
Fondateur du site FingerInTheNet

Poster un Commentaire

5 Commentaires sur "Access-list (ACL)"

Laisser un commentaire

  Subscribe  
plus récents plus anciens plus de votes
Me notifier des
fsr
Invité

Merci beaucoup pour le travail et bon résumé

KayouMT
Invité
Félicitations ! Quelques questions. 1 – Dans la section « ACL réflexive », je suis un peu confus au sujet de ACL_DYN_CLT-SRV. Est-ce que cette ACL est crée automatiquement par l’IOS, à partir du moment où on spécifie « reflect » ? 2 – Ce que la conclusion dit « Une ACL se place toujours au plus près de la source », ce n’est pas ce que j’avais appris sur les ACLs. J’avais appris que « l’ACL standard doit être très proche de la cible » et « l’ACL étendue doit être très proche de la source ». 3 – Une différence important entre l’ACL Standard et l’ACL est étendue… Read more »
constantin
Invité

pourriez m’aider sur comment configurer un firewall ASA