Introduction
Bien que les premiers types de systèmes de détection d’intrusion réseau remontent au début des années 1980, le concept d’IDS a pris son envol lorsque Martin Roesch a créé son système IDS gratuit et open source SNORT. En raison de sa conception légère et de ses options de déploiement flexibles, la base d’utilisateurs de Snort a rapidement augmenté dans les années suivantes (jusqu’à 400 000 actuellement).
En 2001, Martin Roesch a fondé la société Sourcefire (acquise par Cisco en 2013) pour un produit IDS commercial basé sur SNORT. La version originale gratuite et open-source de SNORT est toutefois restée disponible et est encore largement utilisée dans les réseaux du monde entier. Entre-temps, certains concurrents ont gagné du terrain dans le domaine des IDS open source, notamment Suricata IDS.
Quelles sont les principales différences entre eux, et que pouvons-nous attendre à l’avenir de SNORT ?
Règles
Une solution IDS est seulement aussi bonne que les règles disponibles qu’elle peut appliquer au trafic surveillé. Snort a toujours bénéficié d’un soutien important de la part de la communauté, ce qui a conduit à un jeu de règles substantiel, mis à jour régulièrement. La syntaxe des règles est assez simple, et la structure du programme permet à quiconque de déployer des règles personnalisées dans son IDS ou de les partager avec la communauté.
Certaines parties commerciales développent également des règles SNORT, qui peuvent être achetées moyennant des frais mensuels ou annuels. Quelques exemples sont les règles SO/VRT de Talos (publiées gratuitement après un mois) et les services de renseignement sur les menaces de CrowdStrikes.
Suricata peut utiliser les mêmes règles que SNORT. De nombreuses règles VRT, mais pas toutes, fonctionnent encore. Suricata dispose de son propre jeu de règles, initialement diffusé aux abonnés payants mais disponible gratuitement après 30 à 60 jours : Emerging Threats (menaces émergentes). Ces règles Suricata utilisent davantage les fonctionnalités supplémentaires que Suricata a à offrir, telles que la détection de protocole agnostique de port et la détection et l’extraction automatiques de fichiers.
Détection d’application
Depuis les premiers jours de l’existence de Snort, il a été dit que Snort n’est pas « conscient des applications ». Il se contente d’examiner le trafic correspondant à ses règles et prend une mesure (alerte, abandon, etc.) lorsqu’il y a une correspondance. Les préprocesseurs aident en façonnant le trafic dans un format utilisable pour les règles à appliquer : par exemple, en effectuant la décompression et le décodage, mais il n’y avait pas besoin pour Snort de comprendre quelle application générait les données.
Les exigences des entreprises ont cependant changé au fil du temps et pour s’adapter au marché, Snort a lancé OpenAppID dans sa version 2.9.7 en 2014. OpenAppID permet la détection d’applications via des détecteurs dits de couche 7. Bien que l’existence d’une application connue ne constitue pas toujours un incident de sécurité direct (l’utilisation de Dropbox par exemple), elle permet de mieux comprendre ce qui existe au sein du réseau. Non seulement les applications précédemment inconnues peuvent être trouvées, mais leur trafic peut également être abandonné ou faire l’objet d’une alerte en liant un AppID à une règle SNORT IDS/IPS traditionnelle.
Suricata fonctionne légèrement différemment dans cet espace. Il prend en charge les règles de détection de la couche application et peut, par exemple, identifier le trafic HTTP ou SSH sur des ports non standard en fonction des protocoles. Il appliquera également ensuite des paramètres de journal spécifiques au protocole à ces détections.
Il n’y a pas vraiment de meilleur ou de pire produit dans cet espace, cela dépend vraiment de ce que l’entreprise recherche et du système qui comble le mieux les lacunes en matière de détection. Comme les deux sont entièrement open-source, la mise en place d’un environnement de test est relativement rapide et peu coûteuse.
Multithreading
L’un des principaux avantages de Suricata est qu’il a été développé beaucoup plus récemment que Snort. Cela signifie qu’il a beaucoup plus de fonctionnalités à bord qui sont pratiquement incontournables de nos jours. L’une de ces fonctionnalités est le support du multithreading.
L’augmentation du trafic réseau au fil des ans a été suivie de près par les demandes de traitement des dispositifs IDS (mesurées en paquets par seconde). Heureusement, Suricata prend en charge le multithreading dès la boîte. Snort, en revanche, ne prend pas en charge le multithreading. Quel que soit le nombre de cœurs d’un processeur, un seul cœur ou thread sera utilisé par Snort.
Il existe une solution de contournement assez compliquée : l’exécution de plusieurs instances SNORT à fil unique, alimentant toutes le même journal. Les frais généraux supplémentaires pour gérer ce processus (AutoFP) et le coût élevé du matériel, cependant, signifient que cette configuration est rarement trouvée dans les environnements de production. SNORT3 supportera le multithreading, mais il est encore en phase alpha et fonctionne sous le nom de Snort++. Bien entendu, il n’est pas conseillé d’utiliser un produit en phase Alpha dans un environnement de production. Le multithreading est sans aucun doute un argument fort pour considérer Suricata plutôt que Snort.
Extraction de fichiers
Suricata supporte l’extraction de fichiers. Il s’agit d’une fonctionnalité incroyablement utile qui permet l’extraction automatique de fichiers sélectionnés dès qu’une règle contenant l’option « filestore » est déclenchée. Il est, par exemple, possible d’extraire tous les fichiers .pdf ou tous les fichiers .png à un seul pixel et de les stocker dans un dossier préconfiguré pour une analyse manuelle ultérieure, des recherches dans VirusTotal ou même un sandboxing automatisé.
Alternatives
Bien que Snort et Suricata soient certainement les systèmes de détection d’intrusion open-source les plus populaires, il existe quelques alternatives. La version mise à jour de SNORT3 mentionnée précédemment semble très prometteuse, avec son support du multithreading, de l’identification des services et d’un langage de règles plus simple. Ce système est en cours de développement depuis de nombreuses années. Cependant, le stade Alpha remonte à 2014, et une date de sortie pour une version de production n’a pas encore été fixée.
Il existe également des alternatives aux solutions IDS/IPS traditionnelles, mais celles-ci peuvent parfois fonctionner légèrement différemment. Le Bro Network Security Monitor (désormais connu sous le nom de Zeek), par exemple, est plutôt un système de détection des anomalies. Là où Snort et Suricata fonctionnent avec des signatures IDS traditionnelles, Bro/Zeek utilise des scripts pour analyser le trafic.
Un avantage significatif de Bro/Zeek est que ces scripts permettent également des flux de travail hautement automatisés entre différents systèmes, une approche qui permet des décisions beaucoup plus granulaires que les anciennes actions de type pass or drop. Sa configuration peut devenir assez compliquée, cependant.
Conclusion
Il existe plusieurs bonnes options IDS open-source. En raison de leurs différences, cependant, toutes les solutions ne fonctionneront pas pour tous les environnements. La sélection des meilleurs produits devrait être basée sur les autres produits de sécurité, qui peuvent se chevaucher, déjà en place, le type de trafic qui traverse le réseau, la quantité de trafic et l’ensemble des compétences du personnel informatique disponible.