Sécurité - miguel-antoons/projet_webdev GitHub Wiki
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
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;
}
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;
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";
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";
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.
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.
-
https://sitecheck.sucuri.net/
Permet de vérifier les risques de sécurité sur notre site grâce à différents tests.
-
https://www.ssllabs.com/ssltest/
Permet de vérifier les certificats , la configuration SSL TSL, ...
-
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.
-
https://validator.w3.org/checklink
L’outil vérifie la validité des liens sur nos pages et relève ceux qui sont brisés.
-
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.
- https://www.linuxtechi.com/harden-secure-nginx-web-server-linux/
- https://www.howtoforge.com/tips-and-tricks-to-secure-your-nginx-web-server/#prevent-information-disclosure
- https://certbot.eff.org/lets-encrypt/debianbuster-nginx
-
https://stackoverflow.com/questions/3354242/a-better-approach-than-storing-mysql-password-in-plain-text-in-config-file
- https://pentacent.medium.com/nginx-and-lets-encrypt-with-docker-in-less-than-5-minutes-b4b8a60d3a71
- https://www.cloudbooklet.com/how-to-install-nginx-and-lets-encrypt-with-docker-ubuntu-20-04/
Utiliser la combination des sources pour générer le certificat ssl et activer HTTPS sur nginX.