WikiMiNET

La documentation technique et administrative

Outils pour utilisateurs

Outils du site


wiki:services:ids:bro

Table des matières

Bro

Toutes les informations données ici sont extraites du site de Bro.

Installation

Il faut tout d’abord résoudre les problèmes de dépendance On utilise apt-get pour installer les paquets manquants :

# apt-get install cmake make gcc g++ flex bison libpcap-dev libssl-dev python-dev swig zlib1g-dev libmagic-dev

Dans notre cas, nous avons aussi intégré LibGeoIP, qui permet de savoir directement d’ou viennent les IP référencées, curl et gawk qui permettent d'envoyer les résultats à un noeud Elasticsearch permettant d’indexer les résultats et de les manipuler bien plus facilement et rapidement.

Ensuite, il suffit de récupérer la dernière version de Bro, comme vous le souhaitez (version stable ou version gitée.

Pour installer Bro, il nous faut une dernière chose : PF_RING. En effet, les IDS utilisent beaucoup de CPU, et lorsque le cœur monte à 100%, il perd tous les paquets qui arrivent en plus. D'où l'utilité de PF_RING qui permet de diviser le trafic afin de le faire analyser par plusieurs instances de bro, ce qui permet d’utiliser tous les cœurs de la machine et donc d'éviter les pertes. Il faut donc l’installer et dans l’installation de Bro, rajouter à la ligne ./configure, l’option —with-pcap=<chemin vers pfring> (par défaut c’est /usr/local/pfring).

Configuration

Une fois l’installation de Bro terminée, il faut modifier le fichier /usr/local/bro/etc/node.cfg afin d’obtenir quelque chose dans ce style :

# Example BroControl node configuration.
#
# This example has a standalone node ready to go except for possibly changing
# the sniffing interface.

# This is a complete standalone configuration.  Most likely you will
# only need to change the interface.
#[bro]
#type=standalone
#host=localhost
#interface=eth1

## Below is an example clustered configuration. If you use this,
## remove the [bro] node above.

[manager]
type=manager
host=localhost

[proxy-0]
type=proxy
host=localhost

[worker-0]
type=worker
host=localhost
interface=eth1
lb_method=pf_ring

lb_procs=4

Cela permet ici par exemple d’utiliser 6 cœurs (4 process de traitement, 1 de management et 1 de proxy).

Ensuite pour connaître le taux de perte de paquets par Bro, on modifie le fichier /usr/local/bro/share/bro/sites. On ajoute à la fin de ce fichier la ligne @load misc/capture-loss. Les valeurs de pertes sont alors stockées dans /usr/local/bro/logs/*/capture_loss.log.

Si on ne fait rien, on se rend vite compte que les pertes sont assez importantes (environ 60%), ce qui n’est bien sûr pas acceptable. En fait, cela vient du fait que c’est la carte réseau qui, par défaut, compte le nombre de trames et vérifie qu’elles sont complètes. C’est ce qu’on appelle le offloading, dont la description se trouve ici. Il faut donc faire repasser cette fonction sur le processeur pour avoir des taux de pertes corrects.

La commande à rentrer est la suivante : ethtool –offload eth1 rx off tx off.

Pour finir, afin de contrôler Bro, nous utilisons Broctl. Avant d'utiliser un nouveau script, il faut toujours penser à faire un broctl check, vérifier que tout va bien puis faire un broctl install et un broctl restart.

wiki/services/ids/bro.txt · Dernière modification: 2020/06/27 18:16 (modification externe)