Sécurité - miguel-antoons/projet_webdev GitHub Wiki

Sécurité NginX

HTTPS

Pour sécuriser la communication entre le serveur et le client, l'utilisation d'HTTPS est indispensable. Pour ça, il faut que le port écoute uniquement sur le port 443 et non plus sur le port 80. Ensuite, à l'aide de Certbot et d'un certificat venant de "Let's Encypt" il faut générer et renouveler régulièrement le certificat SSL. Dans la configuration de NginX on s'assure qu'on utilise bien le port 443 et on spécifie ou trouver les fichier pour la certification et le chiffrement SSL. Enfin, on spécifie quels version de SSL/TLS utiliser.

Configuration

listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/factevis.l2-2.ephec-ti.be/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/factevis.l2-2.ephec-ti.be/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

Interdire l'accès au site pour des non-humains

Pour bloquer les attaques de déni de service distribué, l'accès au site par des entités non humaines sera interdit. Ceci sera fait grâce au fichier de configuration de bind. Ce dernier reverra le code "403 - Forbidden" au client qui (non-humain) qui essaye d'accéder au site.

if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
     return 403;
}

Buffers

Pour éviter que les attackes qui exploitent les buffer overflow occurent, nous avons fixés la valeur des buffers NginX.

client_body_buffer_size 16k;
client_header_buffer_size 1k;
client_max_body_size 16M;
large_client_header_buffers 2 1k;

Attaques ClickJacking

Pour éviter les attaques par du ClickJacking, une ligne de configuration dans NginX fait en sorte de ne pas autoriser des pages externes sur le site.

add_header X-Frame-Options "SAMEORIGIN";

Attackes XSS

Pour éviter des conséquences graves d'une attaque XSS, le serveur NginX va empêcher d'afficher les pages si une attaque de tel sorte a été détecté.

add_header X-XSS-Protection "1; mode=block";

Accès au VPS

Pour sécuriser l'accès au VPS, plusieurs techniques ont été mises en place. Premièrement, on ne peut uniquement se connecter au VPS par moyen de SSH. Toutes les connections par mots de passes sont désactivés. Ensuite, tous les ports non-utilisés sont fermés. Enfin, la connexion directe au compte root a été désactivé ce qui veut dire qu'on a besoin d'un mot de passe pour y accéder.

Tests de la sécurité

Pour tester la sécurité de notre site, nous avons été sur différent site qui permettent de scanner et de trouver les menaces potentiels.

  1. https://sitecheck.sucuri.net/
    Permet de vérifier les risques de sécurité sur notre site grâce à différents tests.

  1. https://www.ssllabs.com/ssltest/
    Permet de vérifier les certificats , la configuration SSL TSL, ...

qualys scan

  1. https://webscan.upguard.com/
    Les résultats des tests sont classés dans les groupes suivants:
  • Risques liés au site Web
  • Risques liés aux e-mails
  • Sécurité Internet
  • Phishing et logiciels malveillants
  • Protection de la marque
  • Bon pour obtenir une posture de sécurité rapide de votre site Web.

upGuard scan

Tester l'accessibilité du site

  1. https://validator.w3.org/checklink
    L’outil vérifie la validité des liens sur nos pages et relève ceux qui sont brisés.

w3 checklink scan

  1. https://ready.mobi/
    Sur une échelle de 0 à 5, mobiReady vous révèle l’adaptabilité de vos pages aux appareils mobiles. Encore mieux, l’outil vous suggère des solutions pour améliorer votre score en cas de mauvaise note.

ready-mobi scan

Sources

Sources Importantes pour le HTTPS

Utiliser la combination des sources pour générer le certificat ssl et activer HTTPS sur nginX.

Pour créer et gérer les permissions de MySQL

⚠️ **GitHub.com Fallback** ⚠️