Skip to content

Sécurisation

francois-charlier edited this page Dec 2, 2021 · 14 revisions

Sécurité du site web

SSL

Pour la génération de notre certificat SSL nous avons utilisés Let’s Encrypt qui permet de le faire gratuitement et facilement grâce à son logiciel Certbot qui automatise la plupart des étapes requises.

Installation

1. sudo apt install certbot python3-certbot-nginx            # Installation de Certbot
2. sudo nano /etc/nginx/sites-available/example.com          # Vérifier le fichier de configuration
3. sudo certbot --nginx -d checkpcs.com -d www.checkpcs.com  # Obtenir le certificat SSL
4. sudo systemctl status certbot.timer                       # Vérifier l'auto-renouvellement

Honeypot

Nous avons également installer des Honeypots (pot de miel) pour la sécurisation de nos formulaires, cela permet d'éviter les "spambots". Concrètement, cela consiste à mettre des inputs non utilisés dans le formulaire et lors de la soumissions de ce dernier cela vérifie si ils sont bien vides.

Captcha

Finalement, afin de sécuriser au mieux nos formulaires nous décidés d'utiliser les Recaptchas de Google via le module ReCAPTCHA de React.

Installation

1. Génération d'une pair de clé Recaptcha qui sera liée à notre site internet via ce [site](https://www.google.com/recaptcha/admin/create).
2. Il faut ensuite installer et importer dans notre fichier le module Recaptcha de React. 
3. Finalement, il suffit de créer un composant <ReCaptcha/> qui contiendra la clé ainsi que différent paramètre tels que render qui permet de dire si la captcha est explicite ou non.

Sécurité VPS

Fail2Ban

En ce qui concerne la sécurisation du VPS nous avons tout d'abord installer un Fail2Ban ce qui permet d'éviter que quelqu'un essaye de pénétrer le système en essayant une multitude de mot de passe jusqu'à trouver le bon.

Installation

  • Installation du package Fail2Ban.
  • Copie du fichier de configuration appelé "jail.conf" qui permet de définir par exemple le temps du bannissement mais également le nombre de tentative consécutive avant d'être bannis.
   apt-get install fail2ban
   cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  • Après cela le Fail2Ban est bien installé mais deux commandes sont très importante à retenir.
   sudo fail2ban-client status sshd  ==>  Voir la listes des adresses ip bannies
   sudo fail2ban-client set sshd unbanip [...]  ==>   Unban une ip bannie

FireWall

Nous avons ensuite configurer un FireWall grâce au logiciel "iptables" qui nous permis de fermer tout les ports non utilisés et de laisser ouvert que ceux dont on a besoin.

Commande utiles

iptables -A INPUT -p tcp --destination-port 80 -j DROP       ==> Fermer le port 80
iptables -A INPUT -p tcp --destination-port 80 -j ACCEPT     ==> Ouvrir le port 80

Sécurité Base de données

Pour ce qui est de la sécurisation de la base de données nous avons tout d'abord créer un USER qui ne possède que les doits dont il a besoin et pour cela nous avons effectués les commandes suivantes.

CREATE USER 'user'@localhost IDENTIFIED BY 'password';
GRANT PRIVILEGES ON 'yourDB'.* TO 'user'@localhost;

Liste des privilèges :

PRIVILEGE Description
SELECT Faire des sélection dans les tables
INSERT Ajouter des données dans les tables
UPDATE Modifier des données dans les tables
DELETE Supprimer des données dans les tables
CREATE Créer une nouvelle table
ALTER Modifier une table
DROP Supprimer une table
ALL Donner tout les droits

Sécurité des mots de passe

Pour la sécurité des mots de passe nous utilisons le module bcrypt de NodeJS afin de hasher nos mots de passe dans la base de données.

Voici un exemple d'utilisation

bcrypt.hash("password", salt, (err, hash) => {
       console.log(salt + hash)
    });

# letsencrypte pour le server OVH
// salt est le temps que le hashage va prendre pour se faire

Clone this wiki locally