PHP INITIÉ - Kit de sécurité PHP

PHP INITIÉ - Kit de sécurité PHP

Pour sécuriser un site il est nécessaire de pouvoir bloquer l'accès au site à des adresses IP hackeuses. La détection de ces IP se fait à l'aide de scripts évolués.

PHP INITIÉ - Kit de sécurité PHP

1ere étape
Installation du kit de sécurité


Forty propose ici un kit complet pour bloquer des IPs et stocker le résultat avec MySQL

Vous devez télécharger et installer ce kit dans un premier temps.
Télécharger le kit de sécurité avec stockage des IP en BDD


Si vous le désirez vous pouvez vous arrêter la. Une fois le kit de sécutité de Forty installé votre site est déjà bien protégé… Mais pas totalement car les hackeurs ont bien des ressources en réserves!! Si vous voulez pousser plus loin la sécurité, continuons ensemble et avant de passer à la deuxième étape, voyons comment un hackeur arrive encore à contourner les sécurités de base.

Comment un hakeur contourne t-il MySQL ?
Le problème du kit de base se trouve dans son mode de lecture qui passe par une base de données MySQL (table ip_bl) pour vérifier qu'une adresse IP a déjà été détectée et lui bloquer l'accès. Le hacker va ainsi pouvoir hacker le site internet en lancant massivement des requêtes classiques et ainsi générer un grand nombre de lecture en base de données. Or, si le nombre d'accès concomitant à la base est limité (sur un hébergement mutualisé par exemple), il sera facile de paralyser le site en monopolisant tout les processus disponibles.
La solution consiste donc, une fois que l'adresse IP qui pose problème a été détectée, de sauvegarder un fichier contenant le message à lui afficher systématiquement. Ainsi, quelques lignes dans la configuration Apache permet d'exclure les robots, spammeurs et hackers gênants sans passer constamment par un script PHP et des accès à la base de données.
Lorsqu'une IP est détectée, il suffit de sauvegarder dans un répertoire (dans cet exemple dans le répertoire /cache_ip_bl/ à la racine du site) un fichier dont le nom contient l'adresse IP et dont le contenu est le message à lui renvoyer.


2eme étape
Mise en place des fonctions pour stoker les IP dans des fichiers
Voici maintenant le script php qui va utiliser les fichiers comme méthode de stockage.
Il vous faut remplacer la fonction controle_ip() du kit que vous venez d’ installer (celui de l’étape 1) par celle donnée ci-dessous et ajouter les deux nouvelles fonctions qui gèrent les fichiers : get_ip_bl_cache_name() et sauve_ip_bl_cache().

Bloquer dynamiquement des IP hack et stocker ces IP dans des fichiers


3eme étape
Mise en place des redirections

Les quelques lignes de ce snippet doivent être ajoutées dans le fichier .htaccess à la racine du site (avant toute autre réécriture car cette règles doit être prioritaire).

Le snippet se résume ainsi:
Si le fichier spécifique à une IP à exclure existe envoyer systématiquement le contenu de ce fichier. La deuxième condition permet d'éviter que la réécriture ne boucle en excluant les fichiers du répertoire cache de cette règle de réécriture.

.01
.02
.03
.04
.05
 
#bloque l'accès au site suite à l'abus d'une adresse IP
RewriteCond %{DOCUMENT_ROOT}/cache_ip_bl/%{REMOTE_ADDR}.html -f
RewriteCond $1 !^cache_ip_bl/
RewriteRule ^(.*)$ /cache_ip_bl/%{REMOTE_ADDR}.html [L]


4eme étape (optionelle)
Nettoyage du répertoire qui contient les IP blaclistées

Il ne faut pas oublier un système de nettoyage du répertoire cache (au bout d'une journée par exemple) pour éviter de bloquer à vie une IP qui risque d'être réattribuée à une autre personne plus tard.
.01
.02
.03
.04
.05
.06
.07
.08
.09
.10
.11
 
<?php

$d
= dir("cache_ip_bl");
while(
$entry = $d->read()) {
   
$path = "cache_ip_bl/".$entry;
   
unlink($path);
}

?>


Et voila !! Bien sur cela devrait vous prendre quelques dizaines de minutes pour installer ce système de sécurité. Mais imaginer le bénéfice si aucun hackeur ne peut plus aspirer, spammer ou mettre en touche votre site. Nous vous laissons le soin d’en tirer les conclusions selon le site qui doit-être sécurisé.