CAW1 2019 Projet d'Anaël MOISSIARD et William SCHMITT
![]() | |
---|---|
Titre du projet | Winnie |
Cadre | Projet Web (2AA) |
Page principale | CAW1_Demonstration_Realisation
|
Équipe | Anaël Moissiard, William Schmitt |
Encadrants | Sébastien Viardot |
Sommaire
Description
Winnie aime le miel. Winnie est un gestionnaire de honeypots, ces serveurs volontairement laissés ouverts sur internet avec peu ou pas de moyens de sécurité. Ce service web permet de gérer des honeypots à distance, d'agréger leurs logs afin, par exemple, d'identifier les tendances dans les attaques du moment.
Technologies utilisées
Backend
- Node.js + Express.js
- MongoDB
- Mongoose
Front end
- Angular 7
- Materialize
Choix techniques
Architecture des noeuds Winnie
Winnie se compose de 3 parties à proprement parler :
- Un serveur principal pour la centralisation des données retournées par les honeypots, l'API et le service de la partie client
- Une application angular pour les interactions utilisateur
- Un serveur léger permettant de retourner les données de différents honeypots vers le serveur principal
URL | GET | PUT | POST | PATCH | DELETE |
---|---|---|---|---|---|
/api/user | Retourne la liste des utilisateurs | Crée un nouvel utilisateur | |||
/api/user/{userId} | Retourne un utilisateur selon l'id passé en paramètre | Met à jour un utilisateur | Supprime un utilisateur | ||
/api/group | Retourne la liste des groupes | Crée un groupe | |||
Retourne un groupe selon l'id passé en paramètre | Met à jour un groupe | Supprime un groupe | |||
/api/group/{groupId}/user/{userId} | Ajoute cet utilisateur à ce groupe | Supprime cet utilisateur de ce groupe | |||
/api/auth/login | Authentifie un utilisateur | ||||
/api/auth/logout | Dé-logue un utilisateur | ||||
/api/honeypot | Retourne la liste des honeypots | Crée un honeypot | |||
/api/honeypot/{honeypotId} | Retourne un honeypot selon l'id passé en paramètre | Supprime le honeypot dont l'id est passé en paramètre | |||
api/honeypot/{honeypotName}/logs | Retourne les logs d'un honeypot | Met à jour les logs du honeypot dont le nom est passé en paramètre | Supprime les logs associés à un honeypot | ||
Retourne les honeypots associés à l'utilisateur dont l'identifiant est passé en paramètre | |||||
/api/honeypot/group/{groupId} | Retourne les honeypots associés au groupe dont l'identifiant est passé en paramètre | ||||
/honeypot/{honeypotName}/alive | Rend le honeypot "vivant" en base de donnée | Éteint un honeypot |
API externe
En guise de preuve de concept, Winnie peut lancer des honeypots http sur la Google Cloud Platform. Google met à disposition une librairie javascript pour gérer les machines virtuelles.
Les services d'intégration continue génèrent automatiquement une tarball contenant le serveur léger, qui est téléchargée par la machine virtuelle après avoir démarré. Ce serveur léger récupère dans les métadonnées du projet Google Compute Engine associé l'URL du serveur maître, auquel des rapports périodiques (par défaut toutes les 5 minutes) sont envoyés.
Permissions
Winnie permet une gestion de groupes d'utilisateurs, de façon à pouvoir partager les données remontées par un serveur léger, mais également de différencier les utilisateurs lambda des administrateurs. Un utilisateur appartient et est administrateur du groupe portant son nom, et peut créer des groupes supplémentaires.
Modélisation
Modèle de données
Diagrammes de transition
Cas d'utilisation
Invité
- Inscription
Utilisateur
- Création/Désactivation/Suppression d'un honeypot selon les services associés
- Consultation des honeypots attachés aux groupes de l'utilisateur
- Changement d'informations personnelles
- Création/Suppression d'un groupe
- Rejoindre/Quitter un groupe
Administrateur général
- Toutes les fonctionnalités d'un utilisateur classique
- Suppression de tous les utilisateurs
- Suppression de tous les groupes
- Consultation/Désactivation/Suppression de tous les honeypots
Honeypot
- Insère des données (logs par exemple) dans l'entrée correspondant à son identifiant
Interface
