Analyse service WEB sécurité - bahuwart/Projet-admin-2 GitHub Wiki
La sécurité des services web est extrêmement importante dans notre monde connecté due à l'évolution très rapide des technologies et à l'amélioration permanente des cyber-attaqueurs dans leur domaine. Il est donc essentiel de prendre des mesures solides pour pouvoir protéger les données sensibles, la confidentialité et la disponibilité des informations stockées.
Cette analyse va vous permettre de mieux comprendre en profondeur les éléments à sécuriser, pourquoi les sécuriser et comment le faire.
-
Les données des utilisateurs : Ces informations sont d'une grande importance car elles pourraient être utilisées à des fins nuisibles pour l'utilisateur à qui ces informations auraient été prises. Les données utilisateurs peuvent être composé de l'adresse de l'utilisateur, son numéro de téléphone, les potentielles autres adresses mails, les informations financières, etc.
-
La base de données en général : La sécurité de la base de données est hyper importante pour protéger les données qui y sont stockées. Outre le fait qu'elle contienne les information utilisateur, la base de données contient également énormément d'information concernant la boite ou l'entreprise à qui elle appartient ce qui pourrait être critique pour celle-ci.
-
Les attaques par déni de service distribué (DDoS) : Cette attaque vise à submerger le serveur web en saturant sa bande passante ou en épuisant ses ressources. Cela rend donc le service indisponible pour les utilisateurs ou administrateurs.
Pour plus d'informations, n'hésitez pas à consulter le site Akamai.
-
L'injection SQL : Les attaques d'injection SQL exploitent les failles de sécurité en rapport ave la base de données. Lors de l'attaque, le pirate informatique insère un fragment de requête SQL dans une requête en cours. Cette attaque permet au pirate d'accéder à la base de données et de pouvoir en modifier son contenu.
Pour plus d'informations, n'hésitez pas à consulter le site Oracle.
-
Le "Brute Force" : Cette attaque consiste à tenter de deviner les identifiants de connexion en essayent différentes combinaisons de noms d'utilisateur et de mots de passe. Les pirates utilisent des programmes automatisés pour pouvoir tester de multiples combinaisons afin de pouvoir trouver le lots gagnant. Si l'utilisateur possède un mot de passe faible ou non sécurisé, il sera d'autant plus facile de le trouver.
Pour plus d'informations, n'hésitez pas à consulter le site Kaspersky.
-
Le "Cross-Site Scripting" (XXS) : Les attaques XXS consistent à insérer du code malveillant dans des sites Web. Les pirates informatiques injectent un script malveillant dans le contenu d'un site Web ciblé, ce script sera ensuite affiché par le navigateur de la victime. Le problème est que le navigateur na peut pas distinguer les balises du pirates donc il les exécute toutes sans savoir les quelles sont malveillantes.
Pour plus d'informations, n'hésitez pas à consulter le site Kaspersky.
- Contre les attaques par déni de service distribué (DDoS) : Afin d'anticiper ce type d'attaque il est important de mettre en place des pares feu ainsi que des répartiteurs de charge (Load Balancing) qui peuvent contribuer à absorber certaines attaques DDoS. La pose d'un Proxy et d'un Reverse Proxy peuvent être également utile pour se prémunir contre les attaques DDoS. L'idée est de globalement limiter de nombre de requêtes venant d'une même adresse IP et de faire un gros tri avant d'arriver sur les serveurs web.
Le Proxy aura un rôle protecteur duc côté client car il filtrera le trafic entrant et bloquera les paquets malveillants avant qu'ils n'arrivent vers le serveur. Il peut aussi réduire la bande passante afin de limiter le débit de demande.
Le Reverse Proxy, lui, se trouvera juste avant le serveur web et jouera donc un rôle protecteur du côté serveur. Il peut agir comme un bouclier en filtrant le trafic entrant, en identifiant les demandes malveillantes et en bloquant les attaques.
-
Contre l'injection SQL : Pour pouvoir se prémunir d'une injection SQL, la création de comptes utilisateurs à accès limité peut être une bonne solution. Le fait de donner uniquement les privilèges nécessaires réduit la taille de la surface d'attaque potentielle et réduit par conséquent l'exploitation des failles de sécurité. L'utilisation de requêtes préparées est une autre solution populaire contre l'injection SQL. L'idée est de préparer des requêtes avec des espaces qui seront réservés pour les valeurs insérées par les utilisateurs, valeurs qui seront considérées comme des simple données et non comme du code SQL. Ainsi, même si les utilisateurs fournissent des valeurs malveillantes, elles ne seront pas considérées comme étant du code SQL exécutable.
-
Contre le "Brute Force" : Encourager les utilisateurs à utiliser des mots de passe fort composés d'un nombre de caractères minimum, de caractères spéciaux, de chiffre, etc., est une bonne manière de se prémunir contre le "Brute Force". Plus fort et complexe sera le mot de passe, plus long sera le temps pour le "Brute Force".
-
Contre le "Cross-Site Scripting" (XXS) : Un des pratiques les plus simple à mettre en œuvre pour se prémunir contre ce genre d'attaque est de tout simplement tenir à jour les logiciels utilisés pour le site web. Le fait de tenir à jour les bibliothèques, les Frameworks et les composants dans le code permet de bénéficier des correctifs de sécurité les plus récents. S'assurer que les développeur du site adoptes des bonnes pratiques de programmation est une autre solution au "Cross-Site Scripting". Le fait de savoir comment bien sécuriser son code et de vérifier le type de chaque donnée transmis par l'utilisateur permet de limiter l'étendue de possibilité qu'un pirate pourrait utilisé pour attaquer le site web.
La sécurisation du service web passe premièrement par la mise en place du HTTPS qui permet de chiffrer les communications entre un client et le serveur grâce à l'acquisition d'un certificat TLS/SSL, certificat qui sera généré automatiquement grâce au module certbot.
Voici comment mettre en place HTTPS dans un serveur web :
- Activation du module ssl grâce
sudo a2enmod ssl
- Recharger le configuration d'Apache2
sudo systemctl reload apache2
- Installation de certbot
sudo apt update
sudo apt install certbot
- Génération des certificats
sudo certbot --apache
Une fois fait, il vous faut maintenant aller dans le fichier de configuration de votre hôte. Par exemple "/etc/apache2/sites-available/example.com.conf".
- Ce fichier pourrait ressembler à ceci :
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin [email protected]
DocumentRoot /srv/web/example.com/www
<Directory /srv/web/example.com/www>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride none
Require all granted
</Directory>
ErrorLog /var/log/apache2/error.example.com.log
CustomLog /var/log/apache2/access.example.com.log combined
</VirtualHost>
- Dans le cas du fichier ci-dessus, modifier le de la sorte à y ajouter un "VirtualHost" sur le port 443 (port standard pour le HTTPS) :
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin [email protected]
# Redirection 301 vers le site en HTTPS
Redirect permanent / https://example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
ServerAdmin [email protected]
DocumentRoot /srv/web/example.com/www
<Directory /srv/web/example.com/www>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride none
Require all granted
</Directory>
# directives obligatoires pour TLS
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
Header always set Strict-Transport-Security "max-age=15768000"
ErrorLog /var/log/apache2/error.example.com.log
CustomLog /var/log/apache2/access.example.com.log combined
</VirtualHost>
- Après avoir fait cela, il vous suffit d'enregistrer le fichier et de recharger la configuration d'Apache à l'aide de cette commande :
sudo systemctl reload apache2
Après avoir suivi tout ça, votre site Internet devrait maintenant être accessible en HTTPS.
Pour plus de précision sur la mise en place de HTTPS, n'hésitez pas à aller consulter le site Wiki ubuntu-fr.
- Oracle, Qu’est-ce qu’une injection SQL et comment se protéger de cette attaque ? Consulté le 29 mai 2023
- Akamai, Qu'est-ce qu'une attaque DDoS ? Consulté le 29 mai 2023
- Kaspersky, Qu'est-ce qu'une attaque par force brute ? Consulté le 29 mai 2023
- Kaspersky, Qu’est-ce qu’une attaque XSS (Cross-Site Scripting) ? Consulté le 29 mai 2023
- Moodle, Web : Déploiement et sécurisation. Consulté le 29 mai 2023
- Wiki ubuntu-fr, Utiliser HTTPS avec Apache2. Consulté le 29 mai 2023
GONZALEZ Shayann 2TL2