Comment installer Bro sur Ubuntu 16.04

introduction

Bro est un cadre d’analyse de réseau open-source et une application de surveillance de la sécurité. Il rassemble certaines des meilleures fonctionnalités de OSSEC et osquery dans un beau paquet.

Bro peut effectuer à la fois une analyse et une détection basées sur la signature et le comportement, mais l’essentiel de son travail est une analyse et une détection basées sur le comportement. La longue liste de fonctionnalités de Bro inclut la possibilité de:

  • Détecter les attaques par force brute contre des services réseau tels que SSH et FTP

  • Effectuer la surveillance et l’analyse du trafic HTTP

  • Détecter les modifications du logiciel installé

  • Effectuer la validation du certificat SSL / TLS

  • Détecter les attaques par injection SQL

  • Effectuer une surveillance de l’intégrité des fichiers de tous les fichiers

  • Envoi de rapports d’activité, de résumés, d’incidents et d’alertes par courrier électronique

  • Géolocalisation des adresses IP au niveau de la ville

  • Fonctionne en mode autonome ou distribué

Bro peut être installé à partir des sources ou via un gestionnaire de paquets. L’installation à partir des sources est plus complexe, mais c’est la seule méthode qui prend en charge la géolocalisation IP si la bibliothèque de géolocalisation est installée avant sa compilation.

Installer Bro permet au système de disposer de commandes supplémentaires telles que + bro + et + broctl +. + bro + peut être utilisé pour analyser des fichiers de trace ainsi que pour analyser le trafic en direct; + broctl + est le shell interactif et l’utilitaire de ligne de commande utilisé pour gérer les installations Bro autonomes ou distribuées.

Dans cet article, vous installerez Bro à partir de la source sur Ubuntu 16.04 en mode autonome.

Conditions préalables

Pour compléter cet article, vous devez disposer des éléments suivants:

  • Un serveur Ubuntu 16.04 avec un pare-feu et un compte utilisateur non root avec les privilèges sudo configurés à l’aide de ce Initial Setup Guide pour Ubuntu 16.04. Étant donné que nous allons effectuer certaines tâches nécessitant de la mémoire vive, vous devez activer un serveur disposant d’au moins 1 Go de mémoire.

  • Postfix est installé en tant qu’agent de transfert de courrier avec envoi uniquement sur le serveur à l’aide de https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-as-a-send-only. -smtp-server-on-ubuntu-16-04 [ce guide sur Postfix sur Ubuntu 16.04]. Un MTA comme Postfix doit être installé pour que Bro puisse envoyer des alertes par courrier électronique. Il fonctionnera sans un, mais les emails ne seront pas envoyés.

Étape 1 - Installation des dépendances

Avant de pouvoir installer Bro à partir des sources, vous devez installer ses dépendances.

Tout d’abord, mettez à jour la base de données de paquets. Si vous ne le faites pas avant d’installer des packages, des erreurs peuvent survenir.

sudo apt-get update

Les dépendances de Bro incluent un certain nombre de bibliothèques et d’outils, comme Libpcap, OpenSSL et https://www.isc.org/ téléchargements / bind / [BIND8]. BroControl nécessite également Python 2.6 ou supérieur. Puisque nous construisons Bro à partir des sources, nous aurons besoin de dépendances supplémentaires, telles que CMake, SWIG, https: // www.gnu.org/software/bison/[Bison] et un compilateur C / C ++.

Vous pouvez installer toutes les dépendances nécessaires en même temps:

sudo apt-get install bison cmake flex g++ gdb make libmagic-dev libpcap-dev libgeoip-dev libssl-dev python-dev swig2.0 zlib1g-dev

Une fois l’installation terminée, l’étape suivante consiste à télécharger les bases de données que Bro utilisera pour la géolocalisation IP.

Étape 2 - Télécharger une base de données GeoIP

Ici, nous allons télécharger une base de données GeoIP dont dépend Bro pour la géolocalisation d’adresses IP. Nous allons télécharger deux fichiers compressés contenant une base de données IPv4 et une base de données IPv6, les décompresser, puis les déplacer dans le répertoire + / usr / share / GeoIP +.

Téléchargez les bases de données IPv4 et IPv6.

wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCityv6-beta/GeoLiteCityv6.dat.gz

Décompressez les deux fichiers, ce qui placera deux fichiers nommés + GeoLiteCity.dat + et + GeoLiteCityv6.dat + dans votre répertoire de travail.

gzip -d GeoLiteCity.dat.gz
gzip -d GeoLiteCityv6.dat.gz

Puis déplacez-vous dans le répertoire approprié, en les renommant dans le processus.

sudo mv GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat
sudo mv GeoLiteCityv6.dat /usr/share/GeoIP/GeoIPCityv6.dat

Avec la base de données GeoIP en place, nous pouvons installer Bro lui-même à l’étape suivante.

Étape 3 - Installation de Bro From Source

Pour installer Bro à partir des sources, nous devons d’abord cloner le référentiel à partir de GitHub.

Git est déjà installé par défaut sur Ubuntu, vous pouvez donc cloner le référentiel avec la commande suivante. Les fichiers seront placés dans un répertoire nommé + bro +.

git clone --recursive git://git.bro.org/bro

Allez dans le répertoire du projet.

cd bro

Exécuter la configuration de Bro, ce qui devrait prendre moins d’une minute.

./configure

Ensuite, utilisez + make + pour construire le programme. Cela peut prendre jusqu’à 20 minutes, selon votre serveur.

make

Vous verrez un pourcentage d’achèvement au début de la plupart des lignes de sortie au cours de l’exécution.

Une fois terminé, installez Bro, ce qui devrait prendre moins d’une minute.

sudo make install

Bro sera installé dans le répertoire + / usr / local / bro +.

Maintenant, vous devez ajouter le répertoire + / usr / local / bro / bin dans votre` + $ PATH`. Pour vous assurer qu’il est disponible de manière globale, la meilleure approche consiste à spécifier le chemin d’accès dans un fichier du répertoire + / etc / profile.d +. Nous appellerons ce fichier + 3rd-party.sh +.

Créez et ouvrez + 3rd-party.sh + avec votre éditeur de texte préféré.

sudo nano /etc/profile.d/3rd-party.sh

Copiez et collez les lignes suivantes dans celui-ci. La première ligne est un commentaire explicatif et la deuxième ligne s’assurera que + / usr / local / bro / bin + est ajouté au chemin de n’importe quel utilisateur du système.

/etc/profile.d/3rd-party.sh

# Expand PATH to include the path to Bro's binaries

export PATH=$PATH:/usr/local/bro/bin

Enregistrez et fermez le fichier, puis activez les modifications avec + source.

source /etc/profile.d/3rd-party.sh

Toutefois, les artefacts d’anciens paramètres ont tendance à persister. Vous pouvez donc vous déconnecter et vous reconnecter pour vous assurer que votre chemin est correctement chargé.

Maintenant que Bro est installé, nous devons apporter quelques modifications à la configuration pour qu’il fonctionne correctement.

Étape 4 - Configuration de Bro

Dans cette étape, nous allons personnaliser quelques fichiers pour nous assurer que Bro fonctionne correctement. Tous les fichiers sont situés dans le répertoire + / usr / local / bro / etc +, et ils sont:

  • + node.cfg +, utilisé pour configurer les nœuds à surveiller.

  • + networks.cfg +, qui contient une liste des réseaux dans la notation CIDR local du nœud.

  • + broctl.cfg +, qui est le fichier de configuration global de BroControl pour la messagerie, la journalisation et d’autres paramètres.

Voyons ce qui doit être modifié dans chaque fichier.

Configuration des nœuds à surveiller

Pour configurer les nœuds que Bro surveillera, nous devons modifier le fichier + node.cfg +.

Hors de la boîte, Bro est configuré pour fonctionner en mode autonome. Comme il s’agit d’une installation autonome, il n’est pas nécessaire de modifier ce fichier, mais il est bon de vérifier que les valeurs sont correctes.

Ouvrez le fichier pour le modifier.

sudo nano /usr/local/bro/etc/node.cfg

Dans la section + bro +, recherchez le paramètre + interface +. Il s’agit de + etho0 + par défaut, et cela doit correspondre à l’interface publique de votre serveur Ubuntu 16.04. Si ce n’est pas le cas, veillez à le mettre à jour.

/usr/local/bro/etc/node.cfg

[bro]
type=standalone
host=localhost
interface=

Enregistrez et fermez le fichier lorsque vous avez terminé. Nous allons configurer le ou les réseaux privés auxquels le nœud appartient ensuite.

Configuration des réseaux privés du nœud

Le fichier + networks.cfg + est l’endroit où vous configurez les réseaux IP auxquels le nœud appartient (c’est-à-dire réseau IP de l’une des interfaces de votre serveur que vous souhaitez surveiller).

Pour commencer, ouvrez le fichier.

sudo nano /usr/local/bro/etc/networks.cfg

Par défaut, le fichier est fourni avec les trois blocs IP privés déjà configurés, à titre d’exemple de la manière dont vous devez spécifier le vôtre.

/usr/local/bro/etc/networks.cfg

# List of local networks in CIDR notation, optionally followed by a
# descriptive tag.
# For example, "10.0.0.0/8" or "fe80::/64" are valid prefixes.

10.0.0.0/8          Private IP space
172.16.0.0/12       Private IP space
192.168.0.0/16      Private IP space

Supprimez les trois entrées existantes, puis ajoutez les vôtres. Vous pouvez utiliser + ip addr show pour vérifier les adresses réseau de vos interfaces de serveur. La version finale de votre + networks.cfg + devrait ressembler à la suivante, avec vos adresses réseau remplacées par:

Exemple /usr/local/bro/etc/networks.cfg

         Public IP space
        Private IP space

Enregistrez et fermez le fichier lorsque vous avez fini de le modifier. Nous allons ensuite configurer les paramètres de messagerie et de journalisation.

Configuration des paramètres de messagerie et de journalisation

Le fichier + broctl.cfg + vous permet de configurer comment BroControl gère ses responsabilités en matière de messagerie et de journalisation. La plupart des valeurs par défaut n’ont pas besoin d’être modifiées. Il vous suffit de spécifier l’adresse e-mail cible.

Ouvrez le fichier pour le modifier.

sudo nano /usr/local/bro/etc/broctl.cfg

Sous la section * Options de messagerie * en haut du fichier, recherchez le paramètre * MailTo * et remplacez-le par une adresse électronique valide que vous contrôlez. Toutes les alertes par courrier électronique seront envoyées à cette adresse.

/usr/local/bro/etc/broctl.cfg

. . .
# Mail Options

# Recipient address for all emails sent out by Bro and BroControl.
MailTo =
. . .

Enregistrez et fermez le fichier lorsque vous avez fini de le modifier.

C’est toute la configuration dont Bro a besoin. Vous pouvez donc utiliser BroControl pour démarrer et gérer Bro.

Étape 5 - Gestion de Bro avec BroControl

BroControl est utilisé pour gérer les installations de Bro: démarrage et arrêt du service, déploiement de Bro et exécution d’autres tâches de gestion. C’est à la fois un outil de ligne de commande et un shell interactif.

Si + broctl + est appelé avec + sudo / usr / local / bro / bin / broctl +, il lancera le shell interactif:

OutputWelcome to BroControl 1.5-21

Type "help" for help.

[BroControl] >

Vous pouvez quitter le shell interactif avec la commande + exit +.

À partir du shell, vous pouvez exécuter n’importe quelle commande Bro valide. Les mêmes commandes peuvent également être exécutées directement à partir de la ligne de commande sans appeler le shell. L’exécution des commandes sur la ligne de commande est souvent une approche plus utile car elle vous permet de canaliser la sortie d’une commande + broctl + dans une commande Linux standard. Pour le reste de cette étape, nous invoquerons les commandes + broctl + sur la ligne de commande.

Commencez par utiliser + broctl deploy + pour démarrer Bro et assurez-vous que les fichiers nécessaires à BroControl et Bro sont mis à jour en fonction des configurations de l’étape 4.

sudo /usr/local/bro/bin/broctl deploy

Vous devez également exécuter cette commande chaque fois que des modifications sont apportées aux fichiers de configuration ou aux scripts.

Vous pouvez vérifier l’état de Bro à l’aide de la commande + status +.

sudo /usr/local/bro/bin/broctl status

La sortie ressemblera à ce qui suit. En plus de + running +, le statut peut aussi être + crashed + ou + + arrêt +.

OutputName         Type       Host          Status    Pid    Started
bro          standalone localhost     running   6807   12 Apr 05:42:50

Si vous devez redémarrer Bro, vous pouvez utiliser + sudo / usr / local / bro / bin / broctl restart +.

Ensuite, rendons le service Bro plus robuste lors de la mise en place a Cron.

Étape 6 - Configuration de cron pour Bro

Bro n’a pas de fichier descripteur de service Systemd, mais il est fourni avec un script cron qui, s’il est activé, redémarrera Bro s’il se bloque et effectue d’autres tâches, telles que la recherche d’un espace disque suffisant et la suppression des fichiers journaux expirés.

La commande + cron + de Bro est activée immédiatement, mais vous devez installer un travail cron qui déclenche le script. Vous devez d’abord ajouter un fichier de paquetage cron pour Bro dans + / etc / cron.d +. Suivant la convention, nous appellerons ce fichier + bro +, alors créez-le et ouvrez-le.

sudo nano /etc/cron.d/bro

L’entrée à copier et coller dans le fichier est affichée ensuite. «+ Cron +» de Bro sera lancé toutes les cinq minutes. S’il détecte que Bro s’est écrasé, il le redémarrera.

/etc/cron.d/bro

*/5 * * * * root /usr/local/bro/bin/broctl cron

Vous pouvez modifier le + 5 + dans la commande ci-dessus si vous voulez qu’il s’exécute plus souvent.

Enregistrez et fermez le fichier lorsque vous avez terminé.

Lorsque le travail cron est activé, vous devriez recevoir un email indiquant qu’un répertoire pour le fichier de statistiques a été créé dans + / usr / local / bro / logs / stats +. Sachez que Bro doit réellement planter (c.-à-d. être arrêté sans cérémonie) pour que cela fonctionne. Cela ne fonctionnera pas si vous arrêtez Bro vous-même en utilisant gracieusement stop + de BroControl.

Pour vérifier que cela fonctionne, vous devez soit redémarrer le serveur, soit tuer un des processus Bro. Si vous suivez la route de redémarrage, Bro sera redémarré cinq minutes après la fin du processus de redémarrage par le serveur. Pour utiliser l’autre approche, obtenez d’abord l’un des ID de processus de Bro.

ps aux | grep bro

Ensuite, tuez l’un des processus.

sudo kill -9

Si vous vérifiez ensuite l’état à l’aide de:

sudo /usr/local/bro/bin/broctl status

La sortie montrera qu’il s’est écrasé.

OutputName         Type       Host          Status    Pid    Started
bro          standalone localhost     crashed

Appelez cette même commande quelques minutes plus tard et le résultat indiquera qu’elle est à nouveau en cours d’exécution.

Avec Bro fonctionnant pleinement, vous devriez recevoir un courrier électronique récapitulatif des activités intéressantes capturées sur l’interface environ toutes les heures. Et si cela se bloque et redémarre, vous recevrez un courrier électronique l’informant qu’il a commencé après un crash. Dans la dernière et dernière étape, examinons quelques autres grands services publics de Bro.

Étape 7 - Utilisation des scripts de stratégie + bro +, + bro-cut + et Bro

+ bro + et + bro-cut + sont les deux autres commandes principales fournies avec Bro. Avec + bro +, vous pouvez capturer le trafic en direct et analyser les fichiers de trace capturés à l’aide d’autres outils. + bro-cut + est un outil personnalisé pour lire et obtenir des données à partir des journaux Bro.

La commande utilisée pour capturer le trafic en direct avec + bro + est au format + sudo / usr / local / bro / bin / bro -i +. Au minimum, vous devez spécifier l’interface à partir de laquelle il doit capturer le trafic. ++ fait référence aux scripts de politique qui définissent les processus de Bro. Vous n’avez pas besoin de spécifier de script ni de script, la commande peut également ressembler à + ​​sudo / usr / local / bro / bin / bro -i +.

Étant donné que + bro + crée de nombreux fichiers à partir d’une session de capture unique vers le répertoire de travail, il est préférable d’appeler une commande de capture + bro + dans un répertoire créé uniquement pour cette session de capture. Ce qui suit, par exemple, montre une longue liste (+ ls -l +) des fichiers créés pendant une session de capture de trafic en direct.

Outputtotal 152
-rw-r--r-- 1 root root   277 Apr 14 09:20 capture_loss.log
-rw-r--r-- 1 root root  4711 Apr 14 09:20 conn.log
-rw-r--r-- 1 root root  2614 Apr 14 04:49 dns.log
-rw-r--r-- 1 root root 25168 Apr 14 09:20 loaded_scripts.log
-rw-r--r-- 1 root root   253 Apr 14 09:20 packet_filter.log
-rw-r--r-- 1 root root   686 Apr 14 09:20 reporter.log
-rw-r--r-- 1 root root   708 Apr 14 04:49 ssh.log
-rw-r--r-- 1 root root   793 Apr 14 09:20 stats.log
-rw-r--r-- 1 root root   373 Apr 14 09:20 weird.log

Vous pouvez essayer d’exécuter une des commandes de capture maintenant. Après l’avoir laissé tourner un peu, utilisez + CTRL + C + pour mettre fin à la session de capture + bro +. Vous pouvez lire chacun avec + bro-cut + en utilisant une commande comme `+ cat | / usr / local / bro / bin / bro-cut -C -d + `.

Conclusion

Cet article vous a présenté Bro et comment l’installer de manière autonome à partir des sources. Vous avez également appris à installer les bases de données Geov IPv4 et IPv6 de MaxMind utilisées par Bro pour la géolocalisation des adresses IP au niveau de la ville. Pour ce mode d’installation autonome, vous avez également appris à modifier les aspects pertinents de ses fichiers de configuration, à les gérer avec + broctrl +, à utiliser + bro + pour capturer le trafic en direct et + bro-cut + pour afficher et lire le résultat. les fichiers journaux.

Vous pouvez accéder à plus d’informations sur l’utilisation de Bro à partir du site de documentation du https://www.bro.org/documentation/index.html].

Related