PROJET FEATURED

NetScanner

Scanner réseau avec détection de vulnérabilités, alertes temps réel et pipeline CI/CD complet.

Laravel 11Reactnmap NSEMariaDBDockerGitLab CI/CD

// CONTEXTE

NetScanner est né d'un besoin concret : pouvoir auditer rapidement les appareils connectés à mon réseau local et repérer des ports ouverts ou des vulnérabilités connues, sans dépendre d'un outil propriétaire. C'est aussi devenu le terrain d'expérimentation idéal pour appliquer mes compétences DevSecOps de bout en bout : backend sécurisé, conteneurisation, intégration continue.

// ARCHITECTURE

Le backend Laravel 11 expose une API REST qui orchestre des scans nmap (NSE inclus pour la détection de vulnérabilités), persiste les résultats dans MariaDB, et les expose à un dashboard React qui affiche en temps réel les appareils détectés, les ports ouverts et les alertes.

L'ensemble tourne en Docker Compose : un conteneur Laravel/PHP-FPM avec les capabilities NET_RAW et NET_ADMIN ajoutées explicitement pour permettre à nmap d'envoyer des paquets réseau bas niveau, un conteneur MariaDB, et un conteneur Nginx en reverse proxy.

Le projet est déployé sur un VPS dédié, isolé du reste de l'infrastructure et accessible uniquement via un tunnel WireGuard personnel.

// DÉFIS RENCONTRÉS

Le principal obstacle a été l'exécution de nmap dans un environnement conteneurisé : par défaut, Docker retire les privilèges réseau bas niveau nécessaires aux scans SYN et à la détection d'OS. La solution a consisté à déclarer explicitement les capabilities NET_RAW/NET_ADMIN dans le docker-compose.yml, en respectant le principe du moindre privilège plutôt que de lancer le conteneur en mode privileged.

// PIPELINE CI/CD

L'intégration continue est gérée via GitLab CI, avec un pipeline dédié par dépôt (API et frontend). À chaque push, trois stages s'enchaînent : lint (Pint côté Laravel, ESLint côté React), tests automatisés (PHPUnit, Vitest), puis construction de l'image Docker via Kaniko, poussée vers le registry GitLab sur la branche principale. Le déploiement sur l'infrastructure reste une étape manuelle documentée, un choix assumé pour ce projet plutôt qu'un objectif non atteint.

// CE QUE J'AI APPRIS

Ce projet m'a permis de manipuler concrètement les capabilities Linux dans un contexte conteneurisé, d'écrire un pipeline CI/CD complet de bout en bout, et de mieux comprendre le compromis sécurité/fonctionnalité -- donner juste assez de privilèges pour que l'outil fonctionne, sans ouvrir la porte à des abus.