Skip to content

Secu_WEB

FirminMoyen edited this page Aug 25, 2022 · 4 revisions

Risques identifiés :

Injections SQL :

Les injections sql consistent a rentrer des instructons sql dans des champs non prévus a cet effet ce qui a pour effet de pouvoir demander plus d'informations que prévu a la base de données voir meme de l'alterer ou de la détruire.

DOS :

Les attaques par denis de services consistent a envoyer un trop grand nombre de requetes sans interruption vers un serveur, cela a pour effet de surcharger le serveur l'empechant donc de repondre correctement aux requetes des utilisateurs et rendant donc le site web innutilisable.

Man in the middle :

Cette attaque consiste à se placer entre un serveur et un client pour controler tout le trafic et ainsi pouvoir avoir acces et meme modifier les données echangées.

Le cross site scripting (XSS) :

Le cross-site scripting est une attaque par injection dans laquelle un scripte malicieux est injecté dans un site en apparence digne de confiance. Le hacker envoi ensuite le script aux utilisateurs du site et leurs navigateur n'as aucun moyen de savoir que le script est dangereux car il viens d'une source de confiance. ce genre de script peut failement acceder aux cookies, token de session ou autres informations sensibles.

La réécriture d'URL :

Si on ne fait rien pour l'empecher, un attaquant peut acceder a des pages q'il n'est pas sensé voir comme une page destinée aux admin par example, simplement en ecrivant la bonne URL dans la bare de recherche.

Contre Mesures :

DOS :

Il est assez compliqué de se prémunir face aux attaques de typer DOS, ca il n'est pas aisé de differentier les requetes emises par des utilisateurs de celles emises par les attaquants. cependant il est possible de configurer un fireawall ou un revers proxy qui repere certains paternes dans les requetes pour essayer d'identifier celles venant des attaquants.

Injections SQL :

Contre les injections SQL, il existe des fonctions php qui vont repérer des instructions SQL qui ne sont pas a leurs place et les interdir, il est aussi conseillé de toujours chiffrer les données de la base de données ou au moins les plus importantes de sorte qu'un attaquant qui arrive acceder a la DB ne sache pas ce qu'elle contient.

Man in the middle :

Pour se prémunir des attaques Man in the middle, il est tres important d'authentifier la connection pour s'assurer que les données vont et viennent bien de la bonne peronne, c'est a cela que vont servir les certificats SSL.

Etapes de mise en place :

Création de la clée du CA :

openssl genrsa -aes256 -out ca-key.pem 4096

Création du certificat CA :

openssl req -new -x509 -sha256 -days 3650 -key ca-key.pem -out ca.pem

création de la clée du certificat :

openssl genrsa -out cert-key.pem 4096

Création de la requete de signature du certificat :

openssl req -new -sha256 -subj "/CN=M1-8" -key cert-key.pem -out cert.csr

Création d'un extfile avec tous les alias :

echo "subjectAltName=DNS:*m1-8.ephec-ti.be,IP:37.187.33.56" >> extfile.cnf

Création du certificat :

openssl x509 -req -sha256 -days 3650 -in cert.csr -CA ca.pem -CAkey ca-key.pem -out cert.pem -extfile extfile.cnf -CAcreateserial

Il ne reste maintenant plus qu'à lier le certificat a la page web ce qui est fait dans le fichier de configuration de la page web.

Puis il faut dire a notre OS de faire confiance au CA et la maniere de faire dépend de du systeme d'exploitation, voicit comment faire sous windows :

Import-Certificate -FilePath "C:\ca.pem" -CertStoreLocation Cert:\LocalMachine\Root

Et sous Linux :

cp ca.pem /usr/local/share/ca-certificates/ca.crt

Attention a bien changer l'extention du fichier.

sudo update-ca-certificates

Le cross-site cripting :

Il n'y a aps de soluions magique au Cross-site scripting, il faut tout d'abord s'en prémunir au niveau de l'application web ce qui est la responsabilité du developeur, il existe dans les différents framework des options pour se proteger en repérant des paternes ou des caracteres suspicieux par example : mysqli_real_escape_string, htmlSpecialChars, etc. Il est aussi possible de parametrer le serveur web pour le sécuriser au mieux, mais c'est seulement en melangeant plusieures techniques q'on arrive a un niveau de sécurité suffisant.

La réécriture URL :

Pour se prémunir de la réécriture URL on peut configurer sur apache un ficher .htaccess ( racoursit pour html access) il s'agit d'un fichier qui peut regler le fonctionnement du server. Par exemple, cette config :

RewriteEngine On
RewriteRule .* exemple.php

Permet de rediriger toutes les requetes venant d'une réécriture de l'URL vers la page exemple.php.

Quelques bonnes pratiques de configurations sur apache :

  • Ne pas afficher la version d'apache : pour eviter que un attaquant ne sache chercher quelles failles sont présentes dans cette version.Pour cela, modifier ces 2 lignes dans le fichier apache2.conf :
ServerSignature Off
ServerTokens Prod
  • Mettre a jour régulierement : apache est encore tres entretenu au niveau de la sécurité, il est donc important de la garder a jour autant que possible.
  • Activer les fichiers de logs qui ne le sont pas par defaut. Pour cela, inclure le module mod_log_config, ensuite ajouter ces deux fichiers dans nos Virtual hosts :
<Directory /var/www/html>
    Options -Indexes
</Directory>
ErrorLog /var/log/httpd/example.com_error_log
CustomLog /var/log/httpd/example.com_access_log combined
  • Désactiver la liste des répertoirs : Par défaut, Apache liste tout le contenu du répertoire racine du document si aucun fichier d'index n'est disponible. Les répertoirs sont donc a la vue de tous. Pour cela, rajouter ces lignes dans le fichier apache2.conf :
<Directory /var/www/html>
    Options -Indexes
</Directory>

Moyen Firmin

Clone this wiki locally