7. Sécurité - GonoGoat/projetIntegrationGrp6 GitHub Wiki

7.1 : Sécurité Serveur

Version du VPS

Nous utilison la dernière version de linux Ubuntu : 20.04.1 LTS.

Accès au VPS

Nous avons désactivé la connexion au root user du VPS et créé un compte non administrateur. Ainsi que changer le port par défaut de SSH 22 en 14 .

Stratégies de pare-feu

Liste des ports ouverts :

Nous avons désactivé tous les ports non utilisés, ci dessous la liste des ports ouverts.

Port Service Protocole
8081 Node.js TCP
5432 Postgress TCP
14 SSH TCP

Gestion accès au serveur

Fail2Ban :

Logiciel libre de sécurité développé en langage Python. Fail2ban communique dans les fichiers de logs les adresses IP potentiellement suspectes. Par exemple, au cas où ces adresses essayent à plusieurs reprises de s’identifier avec de mauvais identifiants. Un certain nombre de tentatives échouées entraîne ensuite automatiquement le blocage de l’adresse IP pendant une période préalablement programmée ( voir plus bas ).

  • maxretry ( nombre d'échec avant qu'une ip ne soit bannie ) = 5
  • bantime ( période en secondes pendant lequel une ip est bannie ) = 10m

7.2 : Sécurité Logicielle

HTTPS

Nous avons désiré intégrer https dans notre travail. Pour ce faire, nous avions commencé à se documenter et à faire les démarches pour implémenter celui-ci. En cours d'installation, des problèmes sont survenu au niveau des certificats. En effet, les nôtres étant "self signed" cela nous causait des problèmes de communication avec l'API. Pour parer ce problème, nous aurions dû aussi faire signer le contrat par une autorité de certification. Mais pour ce faire, il nous aurait fallu un nom de domaine qui ne nous aurait pas été nécessaire pour autre chose. Nous avons donc préféré se limiter à http et ne pas acheter de nom de domaine juste pour ça. D'autres solutions existaient peut-être mais nous avons préféré allouer plus de temps au restant du travail.

API

  • Utilisation de CORS pour protéger les requêtes API.
  • L'API et la DB communique en local sur le VPS.

Application

  • L'utilisateur doit obligatoirement être authentifié sur l'application pour pouvoir accéder fonctionnalités de celle-ci.

7.3 : Sécurité Base de données

  • Les mots de passe utilisateur sont cryptés en Argon2 sur la base de données.
  • Double sauvegarde des data Postgres sur le vps.
  • Un seul compte permet l'accès à la DB.
  • L'API et la DB communique en local sur le VPS.

7.5 : Analyse de droit

GDPR

Stockage des données

Les données personnelles ou données à caractère personnel des utilisateurs de DoorZ sont stockées dans notre base de données uniquement pour le bon fonctionnement de l’application.

Lors de l’inscription d’un nouvel utilisateur, celui-ci donne son consentement pour l’utilisation de ses données personnelles pour le bon fonctionnement de l’application et non dans un objectif de les revendre par la suite. Ces données sont :

  • Nom
  • Prénom
  • Numéro de téléphone
  • Sexe
  • Adresse email
  • Mot de passe
  • L’historique de l’utilisateur sur une porte
  • La liste des portes associées à un utilisateur

Utilisateur inactif

Nous n’avons pas encore mis en place un système de base d’exclusion pour les utilisateurs inactifs depuis plus de 3 ans afin de satisfaire le droit à l’oubli, nous avons donc en 36 mois pour mettre en place ce système.

Utilisateur supprimé

Si un utilisateur veut supprimer son compte, celui-ci sera supprimé endéans un maximum d’un mois.

Protection données utilisateur

Si des données utilisateur sont compromises, l'utilisateur touché en sera averti.