OSSIR Bretagne : Suricata

Suricata est un IDS/IPS Open source financé par l’OISF.

Eric Leblond, ancien CTO d’EdenWall, à l’origine de nuFW, contributeur de netfilter et d’autres trucs cools.

Face aux difficultés de suivi des évolution de Snort Inline, le projet Suricata a été créé ainsi que l’OISF. L’objectif était d’apporter de nouvelles idées et de nouvelles techno dans un IDS/IPS Open-Source.

Financé sur la base d’un financement du Homeland Security Department, le projet intègre progressivement dans le consortium des Industriels pour équilibrer le financement entre Étatique et Industriel. La fondation emploie des développeurs de tous les coins du monde.

Les objectifs de l’OISF sont d’apporter de nouvelles technologies dans le monde des IDS et d’adresser notamment les problématiques de performance face à l’accroissement des débits. L’accélération matérielle, le multi-threading font partie des axes forts de développement de Suricata.

Suricata n’est qu’un moteur qui mange des paquets et qui sort des alertes. Ensuite il faut enrober ce moteur avec une interface capable d’analyser les logs et de rendre ces alertes intelligibles (SIEM). Security Onion est un exemple de distribution intégrant directement Suricata.

La sortie de Suricata à fait l’objet d’un grand nombre de trolls entre Sourcefire et l’équipe de Suricata. (l’action Sourcefire a d’ailleurs pris une claque à ce moment là…).

Suricata est bien plus scalable que Snort qui reste lui mono-process. On peut même scripter des choses en LUA dedans (ndlr: mais qu’est-ce qu’ils ont tous avec LUA !!!).

La detection automatique du protocole permet notamment de suivre de l’IRC/HTTP dans des ports hauts comme le font certains malwares pour communiquer avec les canaux de C&C.

La normalisation systématique des échanges réseaux est l’une des grandes forces de Suricata, permettant l’écriture de règles simples

Suricata tient 10Gbps sur un serveur « standard » avec 32Go de ram, un xeon 2.7Gz…  et supporte des cartes d’accélération matérielles. Toute l’architecture de Suricata  permet de configurer finement quel core travaille sur quel flux/protocole permettant de gérer les priorités.
Coté IPS, Suricata fonctionne avec NFQueue, ipfw et AF_PACKET pour la reconfiguration du firewall.

Coté règles, Suricata est compatible avec presque toutes les règles SNORT, et supporte les ruleset VRT ou Emerging Threats. Mais Suricata fonctionne bien mieux avec ses règles qu’avec les règles Snort. Si vous utilisez votre jeu de règles VRT, Suricata va vous sembler mou et lent. Si vous employez des règles suricata, vous bénéficierez d’un ensemble d’améliorations au niveau performance qui font l’intérêt de ce moteur.

Coté IDS HTTP (ndlr: le protocole réseau universel),  la reconnaissance de protocole redirige le flux vers une lib developpé par le créateur de mod_security (Ivan Ristic) et développeur d’Iron BEE.  La lib se tape tous le travail de reconstitution de l’échange HTTP (gzip n’ co, fragmentation etc…). Ce qui permet l’écriture de règles simples et normalisés ou l’on viens désigner les différents champs des headers HTTP.

Le jeu de mots clefs permet d’opérer sur les types mimes des fichiers et d’effectuer des recherche genre type mime = jpeg et contenu !jpeg. Ou encore d’écrire des règles anti-boulets genre lever une alerte si le fichier contient « secret » ou « RSA Private Key »

En bonus track, Suricata contient un parser de handshake codé from scratch par Pierre Chifflier (ANSSI) permettant de suivre les échanges TLS et de détecter des attaques type Mitm & cie et d’écrire des règles permettant de vérifier la version du protocole, l’AC, la chaine de certificats, etc… Ce qui permet de détecter des problèmes de type absence d’utilisation des certificats de l’entreprise sur les serveurs de l’entreprise, ou bien de détecter que les certificats de google sont utilisés pour les sites google…

Bref Suricata c’est scalable, puissant et ultra-configurable… un snort killer vraiment Open-Source disponible sur Github