Projet : WhiteHack â plateforme pĂ©dagogique pour lâapprentissage de la cybersĂ©curitĂ© (cours, labs vulnĂ©rables, CTF).
Auteur : StaĂŻli Ilyes â B3 CybersĂ©curitĂ© â Ynov Campus â AnnĂ©e 2025
WhiteHack est une plateforme web (Laravel) couplĂ©e Ă des environnements pratiques (VM / labs) accessibles via tunnel sĂ©curisĂ©. Lâobjectif : offrir des parcours progressifs (cours â labs â Ă©valuation) conformes aux compĂ©tences RNCP 36061. Le projet inclut une stack complĂšte : application Laravel, reverse-proxy Nginx, orchestration de labs (snapshot/restore), VPN/tunnels pour accĂšs sĂ©curisĂ©, supervision (Prometheus / Grafana) et centralisation des logs (ELK).
- Catalogue de cours (Markdown) et leçons (modules/lessons).
- Dashboard de progression, badges, scores CTF.
- Module « Practice » : accÚs sécurisé aux machines vulnérables (NoVNC / Guacamole ou tunnel).
- Orchestration : démarrage/clone/rollback des VMs labs depuis images/snapshots.
- Authentification + rĂŽles (Ătudiant / Mentor / Admin).
- Supervision : Prometheus (metrics) + Grafana (dashboards).
- Centralisation des logs : ELK (Elasticsearch / Logstash / Kibana).
- RGPD : minimisation des données et rétention configurable.
Utilisateur (navigateur)
ââ HTTPS â Nginx (reverse-proxy) ââ> Laravel (auth, orchestration)
â
ââ NoVNC / Guacamole (GUI web pour VMs)
ââ WireGuard / OpenVPN (optionnel pour accĂšs rĂ©seau)
ââ Orchestrator (libvirt / LXC / Docker) â VM lab (snapshot)
Supervision: Prometheus (node_exporter) â Grafana
Logs: Nginx / Laravel â Logstash â Elasticsearch â Kibana
- PHP â„ 8.x, Composer
- Node.js / npm (pour assets)
- Nginx
- MySQL / MariaDB (ou SQLite pour MVP)
- Git
- (Optionnel) libvirt/docker pour labs
# cloner
git clone <repo> whitehack
cd whitehack
# copier .env (exemple)
cp .env.example .env
# installer dépendances PHP
composer install --no-dev --prefer-dist
# clé app
php artisan key:generate
# config / cache (dev)
php artisan migrate --force
php artisan db:seed --class=CourseContentSeeder
# assets
npm install
npm run dev
# lancer serveur
php artisan serve --host=127.0.0.1 --port=8000APP_NAME=WhiteHack
APP_ENV=local
APP_KEY=base64:...
APP_URL=http://localhost:8000
DB_CONNECTION=sqlite
DB_DATABASE=/full/path/database.sqlite
- Le seeder principal :
database/seeders/CourseContentSeeder.php. - Les leçons sont ajoutées via
createMany([...])avectitle,order,is_lab,markdown.
Commande utile :
php artisan migrate:fresh --seed --seeder=CourseContentSeeder- Installer dépendances (nginx, php-fpm, sqlite, git, composer).
- Cloner repo et setup
.env. - Configurer Nginx (reverse-proxy + SSL).
- Activer ufw (firewall) + fail2ban.
- Fournit accÚs réseau sécurisé aux VM.
- Profil gĂ©nĂ©rĂ© automatiquement, distribuĂ© Ă lâĂ©tudiant.
- LâĂ©tudiant clique « Se connecter » â ouverture dâune session graphique dans le navigateur.
- Avantage : zéro configuration cÎté étudiant.
- Prometheus : collecte métriques.
- Grafana : dashboards et alertes.
- ELK : centralisation et analyse des logs.
- HTTPS (TLS avec Nginx + certbot).
- UFW (pare-feu) : rĂšgles strictes.
- Fail2ban : blocage IP aprĂšs bruteforce.
- Séparation des rÎles / données minimisées (RGPD).
- Ătudiant : choisit cours â lance lab â accĂšs sĂ©curisĂ© GUI/VPN â pratique â reset VM (snapshot).
- Mentor : crée cours et valide contenus.
- Admin : supervise, sauvegarde, gÚre sécurité.
- Dumps réguliers DB (sqlite ou mysql).
- Snapshots VM.
- Tests de restauration périodiques.
- Branches :
main,develop,feat/*. - Workflow : feature â PR â merge.
Commandes utiles :
git log --oneline --graph --decorate --all- 500 : logs Laravel.
- Migrations : vérifier DB.
- NoVNC : vérifier proxypass WebSocket.
- VPN : vérifier clé publique/privée.