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].