|
|
 | |  |  | Différentes formes de filtrage avec Cisco IOS |  |
by Nicolas Jombart (16/11/2001)
Panorama des différentes formes de filtrage Cisco (IOS)
--[ Introduction ]----------------------------------------------------------
Le système d'exploitation des routeurs Cisco (IOS) dispose de possibi-
lités de filtrage très intéressantes.
Le but de cette brève n'est pas de donner un howto du filtrage Cisco,
mais plutôt de montrer un panorama des différentes formes de filtrage les
plus courantes, notamment de l'access-list et du filtrage BGP. Le lecteur
est donc vivement invité à se référer aux innombrables documentations en
ligne de Cisco.
--[ Access Control Lists ]--------------------------------------------------
Les ACL (Access Control List ou access-list) sont définies par un numéro
(ou un nom) et peuvent être de plusieurs type :
routeur(config)#access-list ?
<1-99> IP standard access list
<100-199> IP extended access list
<1100-1199> Extended 48-bit MAC address access list
<200-299> Protocol type-code access list
<700-799> 48-bit MAC address access list
(d'autres types existent, pour les autres protocoles qu'IP notamment)
. IP standard access list : Ne permet d'utiliser que les adresses source
pour identifier les paquets
. IP extended access list : Permet d'identifier un paquet par les adres-
ses IP, protocoles et ports source et destination
. Protocol type-code access list : Filtrage sur le protocole
. 48-bit MAC address access list : Filtrage en fonction de l'adresse MAC
Les access-list matchent des paquets selon une syntaxe simple (se référer
aux docs IOS pour les détails), par exemple :
! permet le ping sur tout le réseau
! permet NTP et ssh
! bloque et journalise (sauf le HTTP) tout le reste
access-list 102 remark ACL d'exemple
access-list 102 permit icmp any 192.70.106.0 0.0.0.31 echo
access-list 102 permit udp any eq ntp host 192.70.106.4 eq ntp
access-list 102 permit tcp any host 192.70.106.4 eq 22 established
access-list 102 remark Do not log HTTP request (codered, nimda, whatever)
access-list 102 deny any any eq 80
access-list 102 deny any any log
Notez que les masques de sous-réseau se notent « à l'envers » chez Cisco.
Il est possible d'utiliser :
. log : qui permet de journaliser le paquet matché
Typiquement utilisé à la fin d'une access-list avec une règle :
"deny ip any any log"
. log-input
Journalise en plus l'interface et l'adresse MAC.
. Un nom plutôt qu'un numéro
Il est possible d'utiliser un nom plutôt qu'un simple numéro. C'est
souvent plus parlant.
. remark
Pour commenter l'access-list
Elles sont ensuite appliquées à une interface, un protocole de routage,
ou une communauté SNMP. Une access-list n'a aucun effet si elle n'est pas
appliquée. Il est possible de l'appliquer à différentes entités,
par exemple :
. Une interface, en précisant le sens d'application
Il faut choisir dans quel sens on écrit l'ACL : entrée et/ou sortie. Il
est souvent inutile de filtrer deux fois. La solution la meilleur est
celle qui permet d'écrire les access-lists les plus simples possibles.
. Protocole de routage
Appliquée à un protocole de routage, une ACL permet de filtrer au niveau
de la route, c'est à dire de router ou pas en provenance ou vers une
destination les paquets.
Le mot clef à utiliser est distribute-list.
. Communauté SNMP
Par communauté (RO, RW), une telle ACL permet de limiter aux machines
d'administration et de supervision l'accès à SNMP.
. Serveur HTTP du routeur
Si vous avez vraiment besoin du serveur HTTP du routeur, ce dont on ne
saurait que trop déconseiller, cette ACL vous permet de limiter l'accès.
Syntaxe : ip http access-class XXX
- Filtrage de session -
. established : qui correspond en fait aux drapeaux ACK ou RST
Il s'agit d'un simple filtrage du sens de l'établissement de session,
established ne vérifie en rien l'appartenance d'un paquet à une session
TCP, il ne fait que contrôler les bits concernés. En particulier, les
adresses IP ne sont pas vérifiées.
. reflexive
Afin de réaliser un filtrage de session plus puissant, les ACL "reflexive"
utilisent des entrées temporaires pour décider si un paquet appartient à
une session (TCP et par abus de langage UDP et ICMP) en cours.
Par exemple, la commande "evaluate <NOM>" sur une ACL sortante, permettra
d'utiliser sur l'ACL entrante de l'interface un :
permit tcp any any reflect <NOM>
- Autres types d'access-list -
. dynamic "Lock-and-key"
Ce type d'access-list est une règle temporaire placée par un utilisateur
après authentification sur un routeur.
Une règle dynamic permet alors d'ouvrir des flux à la demande pour une
durée donnée (quelques minutes) grâce à la commande access-enable.
. time-range
Il est possible d'écrire des règles en fonction des jours et de l'heure.
Un exemple est plus parlant :
time-range irc-ok
periodic weekdays 9:00 to 19:00
!
ip access-list extended blah
permit tcp any any eq 6667 time-range irc-ok
!
interface ethernet 0
ip access-group blah in
Cette configuration autorisera l'IRC (6667/TCP) seulement la semaine en
journée.
--[ Filtrage BGP ]----------------------------------------------------------
BGP, Border Gateway Protocol, est dans sa version 4 le protocole de routage
internet le plus utilisé. Pour plus de renseignements sur le fonctionnement
de BGP, se reporter aux RFC 1771 à 1774 et autres ou aux excellentes docu-
mentations de Cisco.
BGP4 est un composant critique d'internet car il détermine sa structure et
des attaques sur BGP peuvent potentiellement faire disparaître temporaire-
ment de la carte des AS tout entiers.
Sans parler de travaux plus ambitieux comme sBGP [1], IOS permet déjà de dur-
cir un peu BGP.
Il est possible de filtrer les annonces BGP en fonction de là où elles sont
émises ou vers quels AS elles sont émises, des numéros d'AS des réseaux.
On utilise pour cela des expressions régulières.
exemple :
router bgp 300
neighbor 10.1.2.10 remote-as 110
neighbor 10.1.2.10 filter-list 1 weight 100
neighbor 10.1.2.10 filter-list 2 out
neighbor 10.1.2.10 filter-list 3 in
ip as-path access-list 1 permit _109_
ip as-path access-list 2 permit ^100$
ip as-path access-list 3 deny _690$
ip as-path access-list 3 permit .*
De plus, un certain nombre d'éléments dans la configuration sont utiles dans
le cas de BGP :
. Restreindre aux peers/neighbors le port 179/TCP
Ainsi seuls les voisins ont accès au protocole BGP sur les borders.
. Utiliser des mots de passe MD5
. Utiliser prefix-list pour maintenir des listes de réseaux 'buggés'
(RFC 1918, classes interdites ou pas ouvertes, multicast, etc.),
ou pour éviter d'annoncer autre chose que son propre réseau.
[1] http://www.net-tech.bbn.com/sbgp/sbgp-index.html
--Nicolas Jombart <Nicolas.Jombart@hsc-labs.com>, obscurity officer.
$Id: cisco-acl.tip,v 1.10 2001/11/20 15:34:08 jombart Exp $
|