I. Présentation
Comment détecter les nouveaux appareils connectés à un réseau local ? S’agit-il d’appareils connus ou s’agit-il d’une intrusion ? Ce sont des questions qu’il est légitime de se poser, et qu’il est important de se poser.
Dans cet article, nous allons découvrir la solution open source NetAlertX, anciennement Pi.Alert, qui va permettre de surveiller l’activité des appareils sur un réseau. Avec cette solution, vous pouvez savoir combien d’appareils sont connectés à votre réseau, quels sont les appareils détectés par NetAlertX et surtout recevoir une notification lorsqu’un nouvel appareil est détecté. Concrètement, la solution va cartographier votre réseau.
NetAlertX saura satisfaire ceux qui veulent surveiller l’activité de leur réseau local à la maison, mais il peut s’avérer utile également en entreprise, en fonction des outils déjà en place. Il peut combler un manque dans l’outillage du service informatique, et il ne coûte rien. Si ce n’est qu’il faudra des ressources pour exécuter l’application et « des petites mains » pour l’utiliser, la configurer et la maintenir.
II. Les fonctionnalités de NetAlertX
Commençons par évoquer les fonctionnalités principales de NetAlertX, tout en sachant que cette solution est personnalisable puisqu’il est possible de lui greffer des plugins. Elle est d’ailleurs livrée avec un ensemble de plugins prêts à l’emploi, que vous pouvez choisir d’activer ou non en fonction de vos besoins.
La première mission de NetAlertX, c’est de détecter et de référencer les appareils connectés à votre réseau au sens large, puisqu’il peut analyser plusieurs sous-réseaux. Pour cela, il s’appuie sur un scan ARP et ce dernier sera complété par Nslookup, Pholus et NetBIOS pour la reconnaissance des noms des appareils (ces tâches sont effectuées à intervalles réguliers). La découverte du réseau est aussi possible via SNMP, bien que ce soit désactivé par défaut. De plus, l’analyse d’une machine peut être complétée par un scan NMAP, si l’administrateur le souhaite.
Note : NetAlertX peut aussi puiser des informations à partir d’autres solutions telles que UNIFI, TP-Link Omada, PiHole ou encore en allant lire la base de baux d’un serveur DHCP.
Chaque appareil détecté par NetAlertX sera intégré à l’inventaire de l’application et il disposera de sa propre fiche de configuration. Ceci permettra à l’administrateur de définir le nom manuellement, le type d’appareils, l’emplacement, l’icône, etc…
L’application NetAlertX effectuera un suivi précis de chaque appareil, permettant de savoir quand un appareil est connecté ou déconnecté. Cela lui permettra de créer un historique de présence par jour, semaine, mois et année, pour chaque appareil de votre réseau.
Le système de notifications, qui prend en charge des dizaines de services, de la notification par e-mail à l’envoi d’un message sur Telegram, permet d’être informé de cette activité. NetAlertX peut aussi vous avertir d’une panne sur un appareil, si celui-ci semble hors ligne alors qu’il doit être toujours sur l’état connecté.
Ces fonctionnalités sont complétées par d’autres telles que la possibilité d’effectuer un test de débit, de surveiller la disponibilité d’un site web ou encore de synchroniser plusieurs instances NetAlertX. Nous pourrions aussi citer la prise en charge du Wake On LAN.
L’installation de NetAlertX dans un conteneur Docker est pleinement prise en charge (méthode recommandée). Des travaux sont en cours pour que l’application soit déployable sur un serveur ou en bare-metal. Ce second mode d’installation, bien qu’expérimental, serait fonctionnel, notamment sur Debian.
III. Installation de NetAlertX avec Docker
Nous allons suivre les recommandations et installer NetAlertX avec Docker, sur une machine Debian 12. L’installation de Docker sur Debian ne sera pas évoquée dans cet article. Référez-vous à celui-ci :
Nous allons créer un fichier Docker Compose pour déployer l’application. Avant cela, nous allons créer un répertoire pour ce projet avec la commande mkdir :
mkdir /opt/docker-compose/netalertx
Puis, nous allons créer le fichier « docker-compose.yml » dans ce répertoire :
nano /opt/docker-compose/netalertx/docker-compose.yml
Ensuite, indiquez le contenu suivant dans le fichier :
services:
netalertx:
image: jokobsk/netalertx:latest # Nom de l'image Docker à utiliser
container_name: netalertx # Nom du conteneur Docker
healthcheck: # Vérifier état de santé du conteneur (attention au port)
test: curl -f http://127.0.0.1:15000/ || exit 1
mem_limit: 1g # Limite RAM pour le conteneur
security_opt:
- no-new-privileges:true # Option de sécurité contre l'élévation de privilèges
volumes:
- config:/app/config:rw # Volume pour "config" (configuration)
- db:/app/db:rw # Volume pour "db" (base de données)
- log:/app/front/log:rw # Volume pour "log" (journaux)
environment:
TZ: Europe/Paris # Fuseau horaire
PORT: 15000 # Port à utiliser sur la machine locale (adapter le healthcheck en fonction)
# ALWAYS_FRESH_INSTALL: true # Réinitialise l'application (effacer toutes les données)
network_mode: host # Mode "host" obligatoire pour cette application
restart: on-failure:5 # Restart en cas de problème avec le conteneur ; 5 tentatives pour relancer
volumes: # Créer automatiquement les volumes nécessaires
config:
db:
log:
Ce déploiement repose sur l’image Docker nommée « jokobsk/netalertx:latest » et l’application sera disponible sur le port 15000 de l’hôte.
Enregistrez ce fichier, positionnez-vous dans le répertoire du projet et exécutez la commande suivante :
cd /opt/docker-compose/netalertx/
docker compose up -d
Quelques minutes plus tard, votre conteneur doit être en cours d’exécution.
docker ps
Désormais, vous pouvez accéder à NetAlertX via l’adresse IP de l’hôte Docker, en spécifiant le port 15000.
- http://192.168.10.200:15000
Si vous souhaitez déployer NetAlertX sur un NAS Synology, suivez notre tutoriel :
IV. Configuration de NetAlertX
La configuration de NetAlertX est très riche en paramètres, donc tout ne sera pas évoqué dans cet article. Il convient d’explorer les menus et l’interface de l’outil, ainsi que sa documentation, pour rechercher les paramètres correspondants à vos besoins.
Les paramètres sont accessibles sur la gauche, à partir du menu « Settings« . Quand nous arrivons sur cette page, nous pouvons voir la planification des tâches de découvertes (exécutées via crontab). Par exemple, le scan ARP est effectué toutes les 5 minutes par NetAlertX (ceci est personnalisable).
A. Afficher l’interface en français
Pour afficher l’interface de NetAlertX en français, cliquez sur « Core » sur la gauche. Puis, descendez sur la page jusqu’à trouver le bloc « UI settings« . Cliquez dessus pour afficher les paramètres qu’il contient.
Ici, vous verrez le paramètre « UI language » configuré par défaut sur l’anglais. Vous pouvez basculer en français et cliquer sur le bouton vert intitulé « Save« . Ce bouton est essentiel puisqu’il sert à enregistrer les changements effectués dans la configuration.
B. Définir un mot de passe d’accès à NetAlertX
Par défaut, et vous l’avez surement constaté, l’interface de NetAlertX est accessible sans mot de passe. Bien entendu, pour des raisons évidentes de sécurité, c’est déconseillé de laisser l’application dans cette posture et nous devons remédier à cela.
Toujours dans les paramètres, dans « System« , la section « Set password » permet d’activer l’option « Enable login » et de définir un mot de passe. Il n’y a pas de nom d’utilisateur, mais seulement un mot de passe pour protéger l’accès à l’interface de l’application. À l’heure actuelle, cette application n’intègre pas de gestion d’utilisateurs ni de gestion de rôles.
Après avoir sauvegardé, vous serez redirigé vers la page de connexion. Désormais, le mot de passe est obligatoire pour accéder à l’interface de l’application.
À l’heure actuelle, NetAlertX ne semble pas prendre en charge le MFA.
Note : pour rechercher un paramètre plus facilement, utilisez la zone de saisie « Filter » accessible dans la barre grise où se situe également le bouton « Enregistrer« . Ceci permet de faire une recherche par mot clé.
C. Configurer les notifications par e-mail
Bien que les notifications soient visibles directement dans l’application (via le menu latéral ou l’icône en forme de cloche en haut à droite), vous pourriez avoir envie de configurer les notifications par e-mail. Vous pouvez utiliser le service de messagerie de votre choix,
Si nous prenons l’exemple de Google avec Gmail, il est nécessaire de commencer par créer un mot de passe d’application.
Ensuite, la section « Editeurs » des paramètres vous permettra de déclarer le serveur SMTP, le mot de passe, etc… Mais la première étape consiste à définir l’option « When to run » sur « on_notification« . Ainsi, vous recevrez un e-mail à chaque nouvel événement.
Ensuite, renseignez les différents paramètres. J’attire votre attention sur ceux-là en particulier :
- SMTP server URL : serveur SMTP à utiliser, en l’occurrence « smtp.gmail.com » pour Gmail.
- SMTP user : votre adresse e-mail Gmail.
- SMTP password : le mot de passe d’application créé précédemment.
- Send email to : l’adresse e-mail du destinataire.
- Email subject : l’objet des messages.
Sauvegardez et le tour est joué ! Lors du prochain événement, par exemple, une machine qui se connecte au réseau, vous devriez recevoir un e-mail. Voici un exemple :
Remarque : NetAlertX est une application est assez bavarde, donc des notifications sont susceptibles d’être envoyées très régulièrement. Sachez que sur la fiche de chaque appareil, vous ajuster l’envoi de notifications. Ce n’est surement pas utile de recevoir une notification sur l’activité de tous vos appareils.
D. Configurer la découverte du réseau
Par défaut, NetAlertX est configuré pour scanner le réseau « 192.168.1.0/24 » via l’interface « eth0« . Mais, cela ne correspond pas forcément à votre réseau et l’interface n’est pas obligatoirement celle-ci. Nous allons voir comment configurer la découverte réseau.
La première étape consiste à repérer le nom de l’interface réseau à utiliser. Dans le menu latéral, cliquez sur « A propos » / « About » puis sur « Infos système » / « System info« . Repérez l’interface réseau correspondante à votre hôte physique et permettant au conteneur d’accéder au réseau local. Ici, il s’agit de l’interface « eth1« .
Une fois l’information en votre possession, cliquez sur « Paramètres » dans le menu latéral. Dans la section « Général« , repérez le paramètre nommé « SCAN_SUBNETS« . Vous pouvez éditer l’entrée existante ou en ajouter une nouvelle.
Voici la syntaxe à adopter pour ajouter le réseau « 192.168.10.0/24 » à scanner depuis « eth0 » :
192.168.10.0/24 --interface=eth0
Voilà, sauvegardez et patientez jusqu’à la prochaine analyse… Vos premiers appareils devraient remonter ! Rendez-vous dans la section « Appareils » de l’interface.
E. Personnaliser les appareils
Quand vous cliquez sur un appareil dans la liste des appareils détectés, vous pouvez éditer sa configuration. Ceci sera l’occasion de le nommer, si le nom n’a pas été détecté, mais aussi de spécifier le propriétaire, le type d’appareil, ou encore son emplacement. C’est aussi à cet endroit que vous pouvez activer la surveillance contre les pannes en cochant l’option « Alerte de panne« .
Je vous recommande de déclarer votre routeur en sélectionnant le type « Router » et en indiquant le « Node (MAC) » nommé « Internet » pour le lier à la racine de la topologie réseau. En effet, NetAlertX peut être utilisé pour déterminer les relations parent-enfants entre vos appareils. Les parents seront forcément des équipements réseaux tels que des switchs, des routeurs ou des firewalls.
Les autres onglets, tels que « Tools« , « Sessions » et « Presence » donne accès à des outils supplémentaires (scan NMAP sur l’hôte, par exemple) et à des statistiques. L’onglet « Presence » donne des informations sur l’historique de présence de cet appareil sur le réseau.
F. La topologie du réseau
En cliquant sur le bouton « Réseau » à gauche, vous accédez à un aperçu de la topologie de votre réseau. À ce jour, et bien que des travaux de développement soient en cours, c’est à vous de définir cette topologie manuellement.
Voici un aperçu de ce que ça peut donner :
Pour créer les relations, choisissez l’un de vos équipements réseaux (cela dépend du type définit dans les paramètres de chaque appareil) et piochez dans la liste des « Unassigned devices« , c’est-à-dire les appareils non assignés. Pour associer un appareil à un équipement réseau, et donc créer une relation parent-enfant, cliquez sur le bouton « Assigner« .
Pour plus d’informations sur cette fonction, consultez ce lien :
V. Conclusion
Cette découverte de la solution NetAlertX est terminée ! Il y aurait encore beaucoup à dire et à expliquer, mais vous disposez d’informations essentielles pour vous lancer ! Personnellement, j’ai mis en place cette application sur mon NAS Synology afin d’analyser le réseau de mon domicile et d’effectuer un suivi des équipements qui s’y connectent.
En complément, voici le lien vers la documentation de l’outil :