Cisco offre sur ses matériels de niveau 3 la possibilité de réaliser du filtrage du trafic : on parle d'ACL (Access Control List) qui s'appliquent sur les interfaces du matériel, soit en entrée (IN) ou en sortie (OUT).
Les ACL se configurent de la manière suivante :
access-list <numéroACL> <actions>
interface <numInterface> ip access-group <numéroACL> {in|out}
On ne peut affecter qu'une ACL sur une interface dans chaque sens (1 en out/ 1 en in)
Lors de l'analyse du trafic, le principe général du filtrage s'applique :
Cisco offre deux types d'ACL :
Les ACL standard effectuent un filtrage sur l'adressage IP source. Elles peuvent donc servir à :
access-list <numero1à99> <action> <ipsource> <masqueInversé>
Le masque inversé 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 :
access-list 1 permit 192.168.1.254 0.0.0.0 access-list 1 deny 192.168.1 0.0.0.255
On peut voir la définition de l'ACL avec la commande show access-list :
Standard IP access list 1 10 permit host 192.168.1.254 20 deny 192.168.1.0 0.0.0.255
Les ACL étendues correspondent à des règles de filtrage complètes. Elles peuvent porter sur :
access-list <numero> <action> <protocole> <adresseSource> [<service>] <adresseDestination> [<service>]
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)
Information | Détail | |
---|---|---|
numero | numéro compris entre 100 et 199 ou 2000 et 2699 | |
action | comportement de la règle : * permit (autorise) * deny (interdit) |
|
protocole | protocole de bas niveau (3 ou 4 du modèle OSI) utilisé * icmp * ip * tcp * udp * protocoles de gestion de réseau (RIP, OSPF, GRE, BGP, etc) |
|
adresseSource ou adresseDestination | * any : tout adressage * host <ipMachine> : une machine précise * <ipReseau> <masqueInversé> : un réseau ou sous-réseau IP |
|
service | Définit le ou les ports (source ou destination) à étudier * eq :Match only packets on a given port number * gt : Match only packets with a greater port number * lt : Match only packets with a lower port number * neq : Match only packets not on a given port number * range :Match only packets in the range of port numbers |
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
On peut choisir de nommer les ACL plutôt que de les gérer uniquement par des numéros.
On remplacera la syntaxe
access-list
par la version
ip access-list {extended|standard} <nom>
suivi des règles à appliquer.
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
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
Exemple 2 Définit les possibilités d'échange depuis les réseaux du LAN. Sera appliqué sur l'interface DMZ en out
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
Visualisation La commande show access-list affichera :
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
Une fois les ACL définies, on doit les appliquer aux interfaces.
Sur une interface, on applique les règles en :
Sur une interface donnée et dans un sens (in/out), il ne peut y avoir qu'une ACL.
On doit d'abord choisir l'interface, puis lui affecter l'ACL dans le sens désiré.
interface fa0/0 ip access-group LAN in exit interface fa0/1 ip access-group DMZ out