Selon les statistiques, le volume du trafic réseau augmente d'environ 50 % chaque année. Cela entraîne une augmentation de la charge sur le matériel et, en particulier, augmente les exigences de performance des IDS/IPS. On peut acheter du matériel spécialisé coûteux, mais il existe une option moins chère : la mise en œuvre d'un des systèmes open source. Beaucoup de nouveaux administrateurs pensent qu'installer et configurer un IPS gratuit est assez difficile. Dans le cas de Suricata, ce n'est pas tout à fait vrai : il est possible de l'installer et de commencer à détecter des attaques courantes avec un ensemble de règles gratuites en quelques minutes.
Pourquoi avoir besoin d'un autre IPS open source ?
Pendant longtemps, le système Snort, considéré comme la norme, a été développé depuis la fin des années 90, il était donc initialement monocore. Au fil des ans, il a acquis toutes les fonctionnalités modernes, comme le support d'IPv6, la possibilité d'analyser les protocoles de couche applicative ou un module d'accès aux données universel.
Le moteur de base Snort 2.X a appris à travailler avec plusieurs cœurs, mais il est resté monocore et ne peut donc pas tirer parti des avantages des plateformes matérielles modernes de manière optimale.
Le problème a été résolu dans la troisième version du système, mais sa préparation a pris tellement de temps que Suricata, écrite de zéro, est arrivée sur le marché. Développée en 2009 comme une alternative multithread à Snort avec des fonctions IPS prêtes à l'emploi. Le code est distribué sous la licence GPLv2, mais les partenaires financiers du projet ont accès à une version fermée du moteur. Certains problèmes de scalabilité dans les premières versions du système se sont posés, mais ils ont été rapidement résolus.
Pourquoi Suricata ?
Suricata dispose de plusieurs modules (comme Snort) : capture, collecte, décodage, détection et sortie. Par défaut, le trafic capturé est traité en un seul flux avant le décodage, ce qui augmente la charge sur le système. Si nécessaire, les flux peuvent être séparés dans les paramètres et distribués sur plusieurs processeurs — Suricata est très bien optimisé pour du matériel spécifique, bien que cela ne soit pas du niveau HOWTO pour les débutants. Il convient également de noter la présence de moyens avancés d'inspection HTTP basés sur la bibliothèque HTP dans Suricata. Ceux-ci peuvent également être utilisés pour logger le trafic sans détection. Le système prend également en charge le décodage IPv6, y compris les tunnels IPv4-in-IPv6, IPv6-in-IPv6 et autres.
Différents interfaces peuvent être utilisés pour intercepter le trafic (NFQueue, IPFRing, LibPcap, IPFW, AF_PACKET, PF_RING), et en mode Unix Socket, il est possible d'analyser automatiquement les fichiers PCAP capturés par d'autres sniffeurs. De plus, l'architecture modulaire de Suricata facilite l'ajout de nouveaux éléments pour la capture, le décodage, l'analyse et le traitement des paquets réseau. Il est également important de noter que Suricata bloque le trafic à l'aide des filtres intégrés du système d'exploitation. Dans GNU/Linux, il existe deux options pour le fonctionnement IPS : via la file d'attente NFQUEUE (mode NFQ) et via zero copy (mode AF_PACKET). Dans le premier cas, le paquet correspondant dans iptables est dirigé vers la file d'attente NFQUEUE, où il peut être traité au niveau utilisateur. Suricata l'exécute selon ses règles et rend un des trois verdicts : NF_ACCEPT, NF_DROP et NF_REPEAT. Les deux premiers n'exigent pas d'explications, tandis que le dernier permet de marquer les paquets et de les renvoyer au début de la table actuelle d'iptables. Le mode AF_PACKET est caractérisé par une plus grande rapidité, mais impose un certain nombre de restrictions au système : il doit avoir deux interfaces réseau et fonctionner comme une passerelle. Un paquet bloqué n'est tout simplement pas transféré vers la deuxième interface.
Une caractéristique importante de Suricata est la possibilité d'utiliser les règles développées pour Snort. L'administrateur a accès, notamment, aux ensembles de règles Sourcefire VRT et OpenSource Emerging Threats, ainsi qu'aux Emerging Threats Pro commerciaux. La sortie unifiée peut être analysée à l'aide de backends populaires, et la sortie vers PCAP et Syslog est également supportée. Les paramètres du système et les règles sont stockés dans des fichiers au format YAML, qui est facilement lisible et peut être traité automatiquement. Le moteur Suricata reconnaît de nombreux protocoles, ce qui permet de ne pas se lier à un numéro de port dans les règles. De plus, le concept de flowbits est activement pratiqué dans les règles de Suricata. Pour suivre les déclenchements, des variables de session sont utilisées, permettant de créer et d'appliquer différents compteurs et indicateurs. De nombreux IDS considèrent différentes connexions TCP comme des entités distinctes et peuvent ne pas voir les liens entre elles, signalant le début d'une attaque. Suricata essaie de voir le tableau d'ensemble et, dans de nombreux cas, reconnaît le trafic malveillant dispersé à travers différentes connexions. On peut parler longtemps de ses avantages, mais passons plutôt à l'installation et à la configuration.
Comment installer ?
Nous allons installer Suricata sur un serveur virtuel fonctionnant sous Ubuntu 18.04 LTS. Toutes les commandes doivent être exécutées en tant qu'utilisateur superutilisateur (root). L'option la plus sûre est de se connecter au serveur via SSH avec un utilisateur normal, puis d'appliquer l'outil sudo pour élever les privilèges. Pour commencer, il est nécessaire d'installer les paquets dont nous aurons besoin :
sudo apt -y install libpcre3 libpcre3-dev build-essential autoconf automake libtool libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libmagic-dev libcap-ng-dev libjansson-dev pkg-config libnetfilter-queue-dev geoip-bin geoip-database geoipupdate apt-transport-httpsConnectons-nous au dépôt externe :
sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get updateInstallons la dernière version stable de Suricata :
sudo apt-get install suricataSi nécessaire, nous modifions les fichiers de configuration en remplaçant le nom par défaut eth0 par le nom réel de l'interface externe du serveur. Les paramètres par défaut sont stockés dans le fichier /etc/default/suricata, tandis que les personnalisés se trouvent dans /etc/suricata/suricata.yaml. La configuration de l'IDS se limite principalement à la modification de ce fichier de configuration. Il contient de nombreux paramètres dont les noms et les fonctions correspondent à ceux de Snort. Cependant, la syntaxe est complètement différente, mais le fichier est beaucoup plus facile à lire que les configurations de Snort, et il est bien commenté.
sudo nano /etc/default/suricata 
et
sudo nano /etc/suricata/suricata.yaml 
Attention ! Avant de lancer, il convient de vérifier les valeurs des variables dans la section vars.
Pour finaliser la configuration, il sera nécessaire d'installer suricata-update pour mettre à jour et charger les règles. C'est assez simple :
sudo apt install python-pip
sudo pip install pyyaml
sudo pip install <a href="https://github.com/OISF/suricata-update/archive/master.zip">https://github.com/OISF/suricata-update/archive/master.zip</a>
sudo pip install --pre --upgrade suricata-updateEnsuite, nous devons exécuter la commande suricata-update pour installer le jeu de règles Emerging Threats Open :
sudo suricata-update 
Pour voir la liste des sources de règles, exécutez la commande suivante :
sudo suricata-update list-sources 
Mise à jour des sources de règles :
sudo suricata-update update-sources 
Revue des sources mises à jour :
sudo suricata-update list-sourcesSi nécessaire, vous pouvez activer les sources gratuites disponibles :
sudo suricata-update enable-source ptresearch/attackdetection
sudo suricata-update enable-source oisf/trafficid
sudo suricata-update enable-source sslbl/ssl-fp-blacklistAprès cela, il est nécessaire de mettre à jour à nouveau les règles :
sudo suricata-updateL'installation et la configuration initiale de Suricata sur Ubuntu 18.04 LTS peuvent être considérées comme terminées. Ensuite, les choses deviennent intéressantes : dans l'article suivant, nous connecterons le serveur virtuel au réseau de bureau via VPN et commencerons à analyser tout le trafic entrant et sortant. Nous accorderons une attention particulière au blocage des attaques DDoS, à l'activité des logiciels malveillants et aux tentatives d'exploitation des vulnérabilités dans les services accessibles depuis les réseaux publics. Pour illustrer cela, nous simulerons des attaques des types les plus courants.
Source : habr.com
