Actualités :
14/05/2010 - Nouvelle fonctionnalité : devis en ligne !
30/04/2010 - Un exemple de Blind SQL Injection : Vulnérabilité Cacti
26/03/2010 - Forensics : un cas réel d'intrusion
22/02/2010 - Nos nouvelles offres : ToIP, VPN, Pont Hertzien et Forensic
29/01/2010 - Suivez nos Tweets
17/09/2009 - Debug VPN sous CheckPoint SecurePlatform
16/09/2009 - Activation des modules Apache sur Ubuntu 8.0.4 Server
04/09/2009 - Support du FTP passif sur un serveur protégé par iptables/netfilter
01/09/2009 - Linux Guru Wanted !
28/07/2009 - Désactiver la méthode TRACE sur Apache
20/07/2009 - Copier avec écrasement en mode non interactif
14/07/2009 - Connaitre la version de son Linux
28/03/2009 - NIST lance le concours pour SHA-3
17/01/2008 - Newsletter Janvier 2008
07/01/2008 - Monter un environnement PXE en 5 minutes
05/01/2008 - Google fabrique son propre switch 10Gb
15/12/2007 - wfuzz, un fuzzer HTTP
15/11/2007 - Newsletter Novembre 07
23/10/2007 - Un audit sécurité wifi
25/06/2007 - Visioconférences IP au travers de firewalls
12/06/2007 - Monter un serveur FTP sécurisé
10/05/2007 - Methodes AntiSpam
19/04/2007 - Proxy SNMP
13/03/2007 - NBAR, une fonctionnalité méconnue
04/03/2007 - Déchiffrer une session SSL : méthodes et limitations
24/02/2007 - LoadBalancer : Algorithmes de répartition
22/02/2007 - Rebond sur un PIX : évolutions au fil des versions
19/02/2007 - Apple se moque de la sécurité de Vista
25/01/2007 - Mesure réseau sous Linux
20/01/2007 - Load-Balancers : Introduction

 

 

 

Vous pouvez également retouver d'autres articles sur notre blog ou sur Twitter .

 

13/03/2007 - NBAR, une fonctionnalité méconnue
Les équipements réseaux ne cessent de s'approcher des applications : chiffrement, compression, cache (ou accéleration en termes marketing), qualité de service, partage de charge, stockage, iPBX, détection si ce n'est prévention d'intrusion et maintenant même anti-spam !


Le but de cet article est de revenir sur une de ces avancées qui bien qu'ancienne (elle date de 2000) reste peu connue et utilisée : Cisco NBAR (Network Based Application Recognition) est une fonctionnalité embarquée sur les routeurs Cisco récents permettant la reconnaissance des applications à partir de signatures et non plus uniquement sur des ports TCP/UDP.

En l'activant, on peut construire le boitier QoS du "pauvre" en ce sens qu'aucun équipement ou coût suplémentaire n'est nécessaire : l'expert réseau démontre sa plus-value !

 

Evidemment, l'architecture doit être routée (ce qui élimine certaines topologies : les LANs étendus au moyen de liens Ethernet 802.1Q, qu'ils soient fournis par des opérateurs ou bien des fibres noires) et sous contrôle ( les routeurs ne doivent pas être gérés par un tiers, typiquement un opérateur ou un hébergeur). NBAR permet d'identifier les flux , à l'instar des ACLs, mais en utilisant des signatures pour détecter les applications utilisant des ports mouvants (par nature tels skype, h.323, ou par "accident"HTTP, Citrix,etc..) ou bien se camouflant (canaux cachés avec stunnel, protocoles P2P : kazaa, emule, winMX , etc..). Ces signatures, nommées PDLM, sont mises à jour régulièrement et téléchargeables sous forme de mises à jour sur le site web de Cisco (nécessite un accès CCO).

Certains flux utilisant des ports statiques généralement inchangés ou non modifiables (typiquement DNS, Exchange ou bien Netbios) sont définis comme tels dans NBAR (i.e sans signature applicative).

 

Malheureusement, la plupart de ces signatures sont très orientées P2P (on trouve le même biais dans les boitiers de QoS des constructeurs Allot ou Packeteers) ou bien VoIP /ToIP. On peut imaginer que le marché entrevu par le filtrage à grande échelle des flux P2P par les FAIs a justifié ce positionnement.

Certaines signatures demandes à être testées : nous avons découvert début 2007 que la signature TFTP d'un des constructeurs majeurs de boitiers de QoS ne fonctionnait pas (TFTP utilise des ports UDP dynamiques négociés lors de la session de contrôle) : c'est très problématique surtout lorsqu'on sait que la plupart des IP Phones bootent en chargeant leur logiciel par TFTP. Comment ce trafic pourrait-il être protégé si il n'est pas reconnu correctement ?

 

Revenons aux commandes Cisco : une fois le flux identifié, on applique les mécanismes de queueing classiques :

 

RTR(config)class-map match-any bad_trafic

RTR(config-cmap)#match protocol edonkey

RTR(config-cmap)#match protocol napster

RTR(config-cmap)#match protocol fasttrack

[..]

RTR(config)policy-map kill_bad_trafic

RTR(config-pmap)#classmap bad_trafic

RTR(config-pmap-c)#drop

 

Si on veut être moins dur (par exemple pour du traffic web à titre personnel), on limite le débit à 100 kbits/s :

 

RTR(config)class-map match-any perso_trafic

RTR(config-cmap)#match protocol http url "*voila.fr*"

RTR(config-cmap)#match protocol http url "*youtube.com*" [..]

RTR(config)policy-map slow_perso_trafic

RTR(config-pmap)#classmap perso_trafic

RTR(config-pmap-c)#bandwidth 100

 

Il existe des possibilités pour rendre la QoS récursive (en utilisant des service-policy à l'intérieur d'une policy-map) mais cela sera l'objet d'un autre article... Reste à l'appliquer sur l'interface Se0/0 vers Internet :

 

RTR(config)#interface serial0/0

RTR(config-if)#service-policy input kill_bad_trafic

RTR(config-if)#ip nbar protocol-discovery

 

La puissance de NBAR lorsqu'il est appliqué à HTTP tient à son caractère stateful ( gestion des état en français ?) : bien que ce soient les paquets sortants qui contiennent l'URL, les paquets entrants (c-a-d les données) seront classifiés dans le même flot et ainsi soumis à la politique de QoS (dans le cas présent limitation en téléchargement à 10Kbps -mot clé input).

 

Enfin, NBAR permet d'obtenir des statistiques d'utilisation applicative en quasi temps réel : une fonctionnalité que nous utilisons assez souvent lors de nos audits réseau et que nous ne disposons pas d'outils de métrologie sur site.

 

RTR#conf t

Enter configuration commands, one per line. End with CNTL/Z.

RTR(config)#int fa0/0

RTR(config-if)#ip nbar protocol-discovery

RTR(config-if)#^Z

 

[10 min plus tard]

RTR#show ip nbar protocol-discovery stats bit-rate top-n 10

Stats NBAR

On appréciera le fait que les statistiques concernent les paquets entrants et sortant de l'interface selectionnée. La période de référence (ici 5 min) est modifiable via la commande :

 

RTR#int fa0/0

RTR(config-if)#load-interval ?

<30-600> Load interval delay in seconds

 

Cette variable était déjà utilisé lors du calcul de la charge et de la fiabilité de l'interface :

 

RTR#sho int fa0/0 FastEthernet0/0 is up, line protocol is up

Hardware is MV96340 Ethernet, address is 0019.56bc.1288 (bia 0019.56bc.1288)

Internet address is 172.31.252.31/24 MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,

reliability 255/255, txload 1/255, rxload 1/255 Encapsulation ARPA, loopback not set

 

En ce qui concerne la partie monitoring à moyen et long terme, Cisco publie une MIB NBAR qui vise peut-être à concurrencer la norme IETF RMON2 qui n'a jamais vraiment décollé.
Des frameworks de monitoring tels que Cacti peuvent ainsi grapher les stats NBAR.

 NBAR et Cacti

 

Un dernier point : surveillez l'accroissement de CPU dû à NBAR. Ci dessous un extrait de la FAQ de NBAR:

 

Q. What type of performance can I expect with NBAR?

A. NBAR can classify stateful protocols with 300-byte packets with average flow lengths at 90 Mbps with just a 15 percent increase in CPU. For protocols classified by static port numbers, NBAR performs about the same as traditional access control lists (ACLs).

Q. How much memory does NBAR use?

A. NBAR uses 150 bytes of DRAM to track each stateful protocol flow. By default, NBAR allocates 1 MB of memory for flow resources, allowing NBAR to track about 5000 stateful flows without allocating more memory. NBAR will automatically allocate additional memory if needed.

 

Bonne découverte des flux de votre réseau !