FreeBSD + Ntopng : Transformez votre Raspberry Pi en IDS pour sécuriser votre réseau
Vous avez un vieux Raspberry Pi dans votre placard ? Savez-vous que vous pouviez le transformer facilement en solution d'analyse de votre réseau local afin d'identifier des comportements anormaux ?
- Utilisation de protocoles non sécurisés.
- Scan de port.
- Présence de VLAN fantôme.
- Scan DNS.
- ... etc
Cet article détaille comment mettre en place FreeBSD sur un Raspberry Pi et configurer Ntopng pour permettre d'analyser le trafic réseau sur votre réseau local.
Pourquoi avoir choisi FreeBSD ?
L'énorme avantage de FreeBSD est son faible besoin de ressources, le système consomme très peu de mémoire.
Sur un Raspberry Pi 2 que j'ai à disposition, les solutions Redis, Ntopng et FreeBSD peuvent tenir en 350 Mo de RAM sans difficulté.
Alors que les autres IDS du marché comme Snort ou Suricata requièrent des ressources systèmes plus importantes pour fonctionner, la solution Ntopng peut se satisfaire d'un petit Raspberry Pi.
Mais attention, le petit processeur du Rasbperry Pi sera tout de même fortement sollicité en fonction de la bande passante de votre connexion vers Internet. Si jamais la solution n'arrive pas à analyser l'ensemble du trafic, un certain nombre de paquets réseau seront exclus de l'analyse et vous pourrez observer qu'une partie du trafic analysé.
Comment installer FreeBSD sur un Raspberry Pi ?
FreeBSD est une distribution Unix libre de la famille BSD, FreeBSD ne contient pas de noyau Linux mais un noyau FreeBSD monolithique modulaire.
FreeBSD est largement utilisé sur des plateformes minimalistes avec de forts besoins sécuritaires : Firewall, stockage ... C'est d'ailleurs sur FreeBSD que se repose la solution Pfsense, largement déployée comme solution de Firewall.
FreeBSD supporte l'architecture ARM du Raspberry Pi depuis quelques années.
Des images de FreeBSD pour Rasberry Pi B / 2 et 3 sont disponibles depuis le site de FreeBSD.
Après avoir téléchargé l'image de votre choix, dézippé l'archive avec un outil de décompression comme 7zip par exemple, insérez une carte Micro SD dans votre PC et flashez la carte Micro SD avec l'image téléchargée grâce à un outil comme Win32DiskImager par exemple.
Une fois l'opération réalisée, insérez la carte dans le Raspberry Pi et branchez le sur votre réseau.
Comment configurer le Raspberry Pi sous FreeBSD ?
Vous avez deux choix :
- Connecter le Rasbperry Pi à un clavier et un écran et configurer le Rasbperry Pi localement.
- Se connecter en SSH au Raspberry Pi si vous connaissez l'adresse IP que votre serveur DHCP a pu lui donner.
Les identifiants par défaut sont les suivants :
- freebsd/freebsd pour l'utilisateur standard.
- root/root pour l'administrateur.
Pour réaliser les opérations suivantes, assurez-vous d'avoir les droits root sur votre terminal.
$ su
Une fois cette opération réalisée, l'étape suivante consiste à changer le fuseau horaire :
# ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime
# ntpdate ntp.nic.fr
De changer la structure de votre clavier :
# kbdmap
De mettre à jour le gestionnaire de paquets :
# pkg update
De vérifier la présence de NtopNG parmis les outils installables :
root@generic:/home/freebsd # pkg search ntopng
ntopng-4.0.d20200710,1 Network monitoring tool with command line and web interfaces
D'installer Ntopng :
# pkg install ntopng
Et enfin d'installer Redis, une dépendance forte de NtopNG pour fonctionner.
# pkg install redis
Comment démarrer le service Ntopng ?
Une fois l'ensemble des outils installer, vous devrez ajouter les lignes suivantes dans le fichier /etc/rc.conf de votre Raspberry Pi pour que ces services puissent démarrer automatiquement à chaque redémarrage système.
# vi /etc/rc.conf
redis_enable="YES"
ntopng_enable=YES
ntopng_flags=/usr/local/etc/ntopng.conf
Vous pouvez maintenant démarrer le processus Redis et Ntopng :
# service redis onestart
# service ntopng onestart
Connectez-vous maintenant à l'interface d'administration du portail Ntopng qui est exposé par défaut sur le port 3000 de votre Raspberri Pi.
Comment faire du port mirroring ?
Maintenant que votre serveur Ntopng est fonctionnel, il faut maintenant que votre Raspberry Pi reçoive l'ensemble du trafic réseau échangé vers Internet pour pouvoir analyser l'ensemble des flux réseaux.
Sur un réseau Ethernet "Switché" l'ensemble des paquets réseau ne sont pas transmis à chaque hôte. Un filtrage est réalisé par le filtre pour ne transmettre que les paquets qui lui sont adressés.
Pour permettre à votre Raspberry Pi de recevoir tout le trafic sortant et entrant de votre réseau, il faut donc que l'ensemble du trafic échangé entre votre Switch et votre box ADSL soit aussi envoyé vers votre Raspberry Pi. Cette fonctionnalité sur un switch réseau s'appelle le port Mirroring. Dans mon cas j'utilise un Switch DLink D-Link DGS-1100-16 que je vous avais précédemment présenté dans mon tutoriel baie de brassage.
Dans cet exemple, la prise numéro 10 correspond à la prise sur laquelle est connectée ma Freebox et la prise numéro 16 correspond à mon Raspberry Pi :
Une fois ce port mirroring en place, le Raspberry Pi recevra sur son interface réseau l'ensemble des du trafic échangé entre votre domicile et Internet.
Ajouter la géolocalisation des IP à Ntopng
Ntopng supporte par défaut la géolocalisation des IP identifiées.
Pour que cette géolocalisation puisse se faire, vous devrez créer un compte sur la plateforme Maxmind pour y télécharger les bases de données gratuites de géolocalisation des IP.
Contrairement à il y a quelques mois, Maxmind ne met plus à disposition librement des données. Un compte est nécessaire pour permettre la récupération des paquets.
Téléchargez les fichiers Gzip : "GeoLite2 ASN", "GeoLite2 City" et "GeoLite2 Country".
Décompressez les 3 archives et copiez les fichiers avec l'extension ".mmdb" dans le répertoire suivant : "/usr/local/share/ntopng/httpdocs/"
# mv *.mmdb /usr/local/share/ntopng/httpdocs/
Redémarrez le service Ntopng pour lui permettre d'exploiter pleinement ces bases de données de géolocalisation d'IP.
La page "Hosts -> Geo Map" de Ntopng vous permettra d'observer vers quels endroits vos données sont échangées sur Internet.
Cette vue est très pratique pour identifier d'un seul coup d'oeil tous les endroits de la planette avec lequel échange votre réseau local.
Qu'est-ce que Ntopng m'a permis d'identifier ?
Ntopng permet de visualiser une synthèse visuelle de ce que peut échanger votre réseau local avec Internet.
Il permet d'analyser en temps réel les flux réseau échangés :
Il permet d'analyser l'ensemble des périphériques réseau connectés et les classer par bande passante consommée :
Il permet de mettre en avant l'ensemble des alertes de comportement réseau suspects :
En savoir plus ...
Si vous souhaitez aller plus loin, je vous encourage à aller lire la documentation de Ntopng en ligne.
Une version commerciale existe de Ntopng avec des fonctionnalités avancées que je n'ai pas testés.
N'hésitez pas à rejoindre le serveur Discord Geeek si vous avez des questions ou si souhaitez échanger !