CAW1 2019 Projet d'Anaël MOISSIARD et William SCHMITT : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
(Modif cas d'utilisation)
(Screencast)
 
(8 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 33 : Ligne 33 :
 
* Un serveur léger permettant de retourner les données de différents honeypots vers le serveur principal
 
* Un serveur léger permettant de retourner les données de différents honeypots vers le serveur principal
  
=== API ===
+
{| class="wikitable"
 
+
|+ Caption: example table
L'API a été décrite dans un fichier yaml selon les modèles d'OpenAPI, de façon à pouvoir générer de la documentation à l'aide de swagger.
+
|-
 +
! 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
 +
|
 +
|
 +
|- /api/group/{groupId}
 +
| 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
 +
|- /api/honeypot/user/{userId}
 +
| 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 ===
 
=== API externe ===
Ligne 47 : Ligne 142 :
 
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.
 
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.
 
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 ===
 +
 +
[[Fichier:Winnie.png]]
 +
 +
 +
=== Diagrammes de transition ===
 +
 +
[[Fichier:Winnie_sequence_de_connexion.png]]
 +
 +
[[Fichier:Winnie sequence groupe.png]]
 +
 +
[[Fichier:Séquence de création de honeypot.png]]
 +
 +
[[Fichier:Séquence d'inscription.png]]
 +
 +
[[Fichier:Séquence de remontée des logs.png]]
  
 
== Cas d'utilisation ==
 
== Cas d'utilisation ==
Ligne 52 : Ligne 166 :
 
=== Invité ===
 
=== Invité ===
  
* Inscription
+
* Inscription {{Avancement|100}}
  
 
=== Utilisateur ===
 
=== Utilisateur ===
  
* Création/Désactivation/Suppression d'un honeypot selon les services associés
+
* Création/Désactivation/Suppression d'un honeypot selon les services associés {{Avancement|100}}
* Consultation des honeypots attachés aux groupes de l'utilisateur
+
* Consultation des honeypots attachés aux groupes de l'utilisateur {{Avancement|100}}
* Changement d'informations personnelles
+
* Changement d'informations personnelles {{Avancement|100}}
* Création/Suppression d'un groupe
+
* Création/Suppression d'un groupe {{Avancement|100}}
* Rejoindre/Quitter un groupe
+
* Rejoindre/Quitter un groupe {{Avancement|100}}
  
 
=== Administrateur général ===
 
=== Administrateur général ===
  
 
* Toutes les fonctionnalités d'un utilisateur classique
 
* Toutes les fonctionnalités d'un utilisateur classique
* Suppression d'utilisateurs
+
* Suppression de tous les utilisateurs {{Avancement|100}}
* Suppression de groupes
+
* Suppression de tous les groupes {{Avancement|100}}
* Consultation/Désactivation/Suppression de tous les honeypots
+
* Consultation/Désactivation/Suppression de tous les honeypots {{Avancement|100}}
  
 
=== Honeypot ===
 
=== Honeypot ===
  
* Insère des données (logs par exemple) dans l'entrée correspondant à son identifiant
+
* Insère des données (logs par exemple) dans l'entrée correspondant à son identifiant {{Avancement|100}}
 +
 
 +
== Interface ==
 +
<center>[[Fichier: Winnie-Interface.png | 1200px]]</center>
 +
 
 +
== Screencast ==
 +
[https://youtu.be/teNtX7oMGNw Disponible ici]

Version actuelle en date du 10 juin 2019 à 14:28

Project schedule.png
Titre du projet Winnie
Cadre Projet Web (2AA)
Page principale CAW1_Demonstration_Realisation

Équipe Anaël Moissiard, William Schmitt
Encadrants Sébastien Viardot


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
Caption: example table
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

Winnie.png


Diagrammes de transition

Winnie sequence de connexion.png

Winnie sequence groupe.png

Séquence de création de honeypot.png

Séquence d'inscription.png

Séquence de remontée des logs.png

Cas d'utilisation

Invité

  • Inscription
    100 %

Utilisateur

  • Création/Désactivation/Suppression d'un honeypot selon les services associés
    100 %
  • Consultation des honeypots attachés aux groupes de l'utilisateur
    100 %
  • Changement d'informations personnelles
    100 %
  • Création/Suppression d'un groupe
    100 %
  • Rejoindre/Quitter un groupe
    100 %

Administrateur général

  • Toutes les fonctionnalités d'un utilisateur classique
  • Suppression de tous les utilisateurs
    100 %
  • Suppression de tous les groupes
    100 %
  • Consultation/Désactivation/Suppression de tous les honeypots
    100 %

Honeypot

  • Insère des données (logs par exemple) dans l'entrée correspondant à son identifiant
    100 %

Interface

Winnie-Interface.png

Screencast

Disponible ici