-
Notifications
You must be signed in to change notification settings - Fork 2
Sécurisation du service web
Responsable : Jarod Boulanger-Flémal
Statut de l'étape : en attente de validation
Site statique : https://www.woodytoys.store
Site dynamique : https://b2b.woodytoys.store:8443
- Attaques de type "Déni de service" (Denial of Service - DoS) : une ou plusieurs machines envoie beaucoup de requête au serveur ce qui créé un grand ralentissement du service.
- Protection des fichiers du serveur : Certain fichier du système pourrait est présent sur le web serveur et créé une faille de sécurité.
- Cross-site scripting (XSS): Permet au d'envoyer du code malveillant à la personne qui navigue sur le site pendant l'échange de requête avec le serveur.
- Intrusion SQL : Le hacker test plein de mot de passe pour ce connecter en temps que root à la base de donnée.
- Injection SQL : Le hacker envoie des requête sql pour trouver des failles ce qui lui permet d'envoyer son propre code malveillant à la base de donnée.
- Mettre un
TimOutdans la configuration d'apache, par défaut à 60 seconds, il peut être baissé. - Bien mettre les fichiers visible par l'utilisateur dans un fichier appart et utiliser docker pour isoler le service de la machine host.
- Utiliser un certificat SSL sur les sites pour assurer leurs identités et encrypter les échanges entre l'utilisateur et le serveur.
- Bloquer le port public mysql et utiliser ssh pour se connecter depuis l'extérieure.
Les deux sites sont équipé de leurs propre certificat ssl, généré via le site zeroSSL. Pour ce faire il faut avoir un nom de domaine et une adresse Email lier a celle-ci.
Une fois les certificats généré, il faut les activés sur les deux services. J'ai créé un nouveau fichier dans WEB, HTTPS contenant les fichiers de configuration en plus qui permette de faire fonctionner HTTPS.
Pour les deux serveurs, la mise en place a été assez similaire, voici leurs configurations.
- Ajouter le server name dans le fichier my-httpd.conf pour le site statique et apache2.conf pour le site dynamique.
ServerName www.woodytoys.store
ServerName b2b.woodytoys.store
- Ajouter le virtual host dans le fichier httpd-ssl.conf pour le site statique et default-ssl.conf pour le site dynamique.
<VirtualHost _default_:443>
# General setup for the virtual host
DocumentRoot "/usr/local/apache2/htdocs"
ServerName www.woodytoys.store
ServerAdmin admin@woodytoys.store
...
<VirtualHost _default_:443>
ServerName b2b.woodytoys.store
#ServerAlias https://b2b.woodytoys.store
ServerAdmin admin@woodytoys.store
DocumentRoot /var/www/html
...
- Dans ce même fichier, pour le site dynamique, il faut dé-commenter ces lignes pour activer l'extension.
...
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
...
#LoadModule ssl_module modules/mod_ssl.so
...
#Include conf/extra/httpd-ssl.conf
...
Pour activer l'extension sur le dynamique, tout ce passe depuis le Dockerfile.
- Les Dockerfile permette de mettre tout les fichiers aux bonne endroit.
Dockerfile du site static:
FROM httpd
COPY ./public-html/ /usr/local/apache2/htdocs/ ;Copie de tout les fichiers visible par le client du site
COPY ./my-httpd.conf /usr/local/apache2/conf/httpd.conf ;copie du fichier de configuration de base
COPY ./server.crt /usr/local/apache2/conf/ ;copie des deux certificats ssl
COPY ./server.key /usr/local/apache2/conf/
COPY ./httpd-ssl.conf /usr/local/apache2/conf/extra/httpd-ssl.conf ;copie du fichier de configuration ssl
Dockerfile du site dynamique:
FROM php:7.2-apache
RUN docker-php-ext-install mysqli ; installation extention mysql
RUN a2enmod rewrite && a2enmod ssl && a2enmod socache_shmcb ;activation des service requis pour HTTPS
COPY ./server.crt /etc/ssl/certs/ ;copie des deux certificats ssl
COPY ./server.key /etc/ssl/private/
COPY ./public-html/ /var/www/html/ ;Copie de tout les fichiers visible par le client du site
COPY ./default-ssl.conf /etc/apache2/sites-available/default-ssl.conf ;copie du fichier de configuration ssl
COPY ./apache2.conf /etc/apache2/apache2.conf ;copie du fichier de configuration de base
RUN a2ensite default-ssl ;activation du service SSL
Ssh permet de sécuriser la connexion à la base de donnée vers l'extérieur via l'utilisation d'une paire de clé.
- Généré les clés ssh.
Pour l'utiliser il vous faudra utiliser une paire de clé pouvant être généré grâce à ssh-keygen, la clé avec l'extension .pub est pour le serveur et la clé sans extension est pour l'utilisateur.
- Désactiver la connexion par mot de passe.
Dans le fichier /etc/ssh/sshd_config mettre la ligne PasswordAuthentication et de mettre la valeur à no.
PasswordAuthentication no
- Se connecter à mysql avec l'adresse ip local de l'interface virtuel de docker avec php.
Pour connaitre l'ip de cette interface, taper cette commande avec le nom de votre container :
docker exec *nom du container* cat /etc/hosts
- Désactiver le port mysql.
Mon VPS est chez microsoft azure donc je ferme et ouvre mes ports depuis un interface web mais avec un VPS classique il faudrait utiliser un pare-feu comme UFW.
Avant toute chose, il faut autorisé le port ssh pour être sûr de ne pas être bloqué.
sudo ufw allow *port ssh (défaut 22)*
Puis désactiver le port de mysql.
sudo ufw deny 3306
Puis activer le pare-feu.
sudo ufw enable
- Se connecter a un client mysql avec ssh
Pour presque tout les clients(mysql workbench, heidisql, dbeaver,...) le principe est le même, il faut mettre localhost comme adresse du serveur mais toujours mettre les identifiant de connexion.

Puis dans la partie ssh, activer le tunnel ssh, mettre l'ip du VPS, le port ssh, le nom d'utilisateur du VPS et dans la méthode d'identification sélectionner clé publique. À présent donné le chemin de votre clé privé ssh et vous pouvez vous connecter.

- Analyse service DNS
- Etat des configurations du service DNS
- Documentation du service DNS
- Sécurisation du service DNS
- Analyse service web
- Etat des configurations du service web
- Documentation du service web
- Sécurisation du service web
- Analyse du service Services internes
- Etat des configurations du service Services internes
- Documentation du service Services internes
- Sécurisation du service Services internes
- Analyse service mail
- Etat des configurations du service mail
- Documentation du service mail
- Sécurisation du service mail