AGuerand / Projet-Secu-B3Ynov

0 stars 0 forks source link

Projet Final B3 Cybersécurité Paris Ynov Campus 2023- IDS/WAF Securisation de la couche 7(Application)🛡️

Ce projet vise à améliorer la sécurité de la partie application de Open Systems Interconnection en locurence le protocole HTTP qui est utilisé pour la communication entre les client Web et les serveurs. Pour un deployment simplifié stable on ce base sur le framework de dev. Web Flask, le but de l'exercice est de deployer un eventaille de techniques et fonctionnalitées de securité pour pré-munir les actions malveillantes lié à la couche 7, en détectant et bloquant les attaques par force brute, les injections SQL, les ataques XSS et Les agents d'automatisation d'attaque connu en Cyber-Sécurité. ET fournir également un système de logging pour garder une trace des requêtes malveillantes et des adresses IP associées, comportement correspondant à un WAF (Web Application Firewall).

Membres de l'equipe

Architecture du Projet

alt text

Fonctionnalités

Dépendances

Lancer le Projet à partir de Docker

  1. Installer l'image Docker
 docker pull jhighpriestcode/flask-ids-waf:version-1.0
  1. Lancer le container Docker (⚠️spécifié votre adresse mail de reception)

    docker run -p 5000:5000 -e MAIL_RECEPTOR=your_email@example.com jhighpriestcode/flask-ids-waf:version-1.0
  2. L'application sera accessible à l'adresse http://127.0.0.1:5000.

Lancer le Projet à partir de Python

  1. Clonez ce dépôt
git clone https://github.com/AGuerand/Projet-Secu-B3Ynov.git
  1. Installez les dépendances à partir du requirements.txt du Repo:
pip install requirements.txt
  1. Donner les droits suffissant au programme pour analyser les ports (si vous êtes sous Linux) :
su
  1. Exécutez l'application avec la commande :
python app.py
  1. L'application sera accessible à l'adresse http://127.0.0.1:5000.

Utilisation

Les routes login et register de l'application sont protégées par la fonction log_and_protect. Elle vérifie les tentatives de connexion échouées pour détecter les attaques par force brute et analyse les entrées utilisateur pour détecter les injections SQL et les attaques XSS.

Si une attaque est détectée, l'adresse IP de l'émetteur est bloquée temporairement pendant 5 minutes, et un message d'erreur est renvoyé. Les requêtes suspectes sont enregistrées dans un fichier http_requests.log, y compris l'heure, la date et l'adresse IP de l'émetteur et un message d'avertissement est envoyé à l'adresse mail de l'Administrateur.

Structure des fichiers

Personnalisation

Vous pouvez personnaliser les paramètres de sécurité en modifiant les variables globales dans http_logger.py :

Problèmes connus et solutions

  1. Problème : Erreur lors de l'installation des dépendances avec pip.
    • Solution : Assurez-vous d'avoir la dernière version de pip installée. Vous pouvez la mettre à jour avec la commande pip install --upgrade pip. Si le problème persiste, essayez d'installer les dépendances une par une pour identifier celle qui pose problème.
  2. Problème : Erreur "Permission Denied" lors de l'exécution de l'application.
    • Solution : Vous avez peut-être besoin de droits d'administrateur pour exécuter certaines parties du code. Essayez d'exécuter l'application en tant qu'administrateur ou utilisez sudo si vous êtes sur Linux.
  3. Problème: Si probléme avec l'interface utilsateur.
    • Solution : Effacé les cookies de sessions de votre navigateur.

      Avertissement

Veuillez noter que l'approche utiliser peut ne pas être à 100 % fiable, car elles se bases sur les caracteristiques simples pour identifier les différentes types de attaques, certaines attaques avancé peuvent avoir raison de ce projet mais les attaques par soumision de formulaire sont gerer de facon à ralentir un maximum l'attaquant, le controle du flux de requete et la standardisation des formulaires clients joue un grand un role dans ce projet . Par exemple:

CREDIT/SOURCE

Pour réaliser ce projet, voici une liste de ressources et de documentations utilisé :

  1. Flask : Le framework web Python utilisé pour développer l'application.

  2. Flask-SQLAlchemy : L'extension Flask pour interagir avec des bases de données SQL.

  3. Flask-Login : L'extension Flask pour gérer les sessions utilisateurs.

  4. WTForms : Une bibliothèque Python pour gérer les formulaires web.

  5. SQLite : Le système de base de données SQL utilisé pour stocker les informations des utilisateurs.

  6. Gmail SMTP :

  7. Captcha : Bibliotheque Captcha de Python

  8. Sécurité web : Ressources pour comprendre les attaques par force brute, les injections SQL, les attaques XSS et les agents de cybersécurité.