xtc ['ekstəsi]: The feeling when ICT succeeds

Français

Qu'est-ce que le plugin GX Website Security pour CMSimple?

Le plugin GX Website Security est un script conçu pour prendre en charge certains problèmes de sécurité communs aux scripts PHP.

Il est construit pour apporter une protection immédiate et transparente de diverses façons. On a toujours entendu parlé des scripts présentant des failles de sécurité dues à ceux qui les ont écrit sans assez de précautions. Ce plugin est conçu pour tenter de compenser ce manque de précaution.

A l'origine il est basé sur le script Cafe CounterIntelligence PHP Website Security de Mike Parniak.

C'est un plugin pour le CMS CMS CMSimple (XH).


Contre quoi le plugin GX Website Security peut-il protéger ?

Débordement de requêtes HTTP

A l'origine le script a été créé pour lutter contre ce type d'attaque.

Des programmes peuvent être crées pour innonder votre site web de requêtes GET ou POST, pour saturer le CPU, générer des milliers d'emails, remplir des bases de données ou autres choses. Très peu de scripts sont conçus pour contrer ce type d'attaque et les hébergeurs commerciaux peuvent résilier votre compte si vous en êtes victime (c'est leur serveur qui est saturé !). Ce plugin peut aider à contrer ce type d'attaque.

Vulnérabilités d'affichage de script

De loin la faille la plus courante des scripts PHP.

Des utilisateurs trouvent une variable CGI qui sera affichée intégralement, et la passent à travers du code HTML (généralement du code javascript) qui enverra un cookie utilisateur ou autre à leur serveur. Ils utilisent cette information pour voler un login ou pire. Le script GX a la possibilité de "nettoyer" les données GET, POST et COOKIE et de convertir les caractères HTML en codes non exécutables par le serveur. Ceci annule généralement le danger de ce type de faille.

Protection contre le débordement général

Une possibilité supplémentaire du script est d'effectuer un test basé sur le temps contre le débordement d'une fonction particulière. Ca signifie que vous lui passez un identifiant unique et une valeur de temps, et éventuellement un nombre limite. La fonction vérifiera si elle a été appelée le nombre limite de fois par le même utilisateur en dehors de l'intervalle de temps fixé.

Bannissement d'IP par .htaccess

En option (définie par défaut) ce sript peut modifier votre fichier .htaccess pour bannir les adresses IP des utilisateurs qui abusent de votre site web. Ca réduira drastiquement la surcharge CPU due à leurs tentatives et empêche leurs prochaines.

Pour fonctionner le script doit pouvoir accéder en écriture au fichier .htaccess, s'il existe.

Aperçu/vol du source HTML

Le script peu automatiquement enrober les pages dans une fonction JavaScript qui utilise une technique de dissimulation, ou avec la propre méthode de GXSecurity qui rend impossible l'accès au source à partir des données transmises. La clé d'encryption est stockée dans un cookie qui change à chaque requête, alors à moins de récupérer chaque clé en même temps que les données, la décryption est impossible a fortiori !

Blocage d'adresses IP en liste noire (RBL)

Le script peut automatiquement identifier des adresses IP blacklistées comme spammeurs connus et les empêcher d'accéder au site et de tenter de le pirater.

Blocage de visiteurs par origine

Votre site est souvent visité par des utilisateurs résidant dans des pays d'où des pirates ou des robots de spam opèrent.

Ce script vous donne la possibilité de bannir individuellement les visiteurs provenant de ces pays.

Détection de crack et d'injection d'URL

Le script peut automatiquement détecter les attaques par crack et injection d'URL.


Comment dois-je utiliser ce plugin ?

Installer GXSecurity

Copier simplement le plugin dans le dossier Plugins de CMSimple - C'est fait !!!

Ok, pour éditer ou enregistrer des paramètres il est nécessaire (sur certains serveurs) de "chmoder" des dossiers et des fichiers. Dans le dossier du plugin, vous avez 5 dossiers - config, css, languages, log et lib - qui doivent avoir tous les droits d'accès (chmod 777). Même chose pour leurs fichiers.

De plus vous devez initialiser le plugin dans votre template. Ajouter simplement la ligne suivante au tout début de votre fichier template.htm :

<?php echo GXSecurity();?>

resp. si il y a des problèmes en mode administrateur:

<?php if (!$adm) echo GXSecurity();?>

Configurer GXSecurity

Il y a un lot de variables de configuration que vous devez définir et choisir selon vos besoins.

Variable Valeur
usehtaccessbans 1 = modifier le fichier .htaccess pour bannir des IPs
0 = ne pas bannir d'IPs
filterGETvars 1 = nettoyer les tags HTML dans les variables GET
0 = ne pas le faire
filterCOOKIEvars 1 = nettoyer les tags HTML dans les variables COOKIES
0 = ne pas le faire
filterPOSTvars 1 = nettoyer les tags HTML dans les variables POST
0 = ne pas le faire
extraPOSTprotection 1 = utiliser la protection extra POST
0 = ne pas le faire
extraGETprotection 1 = utiliser la protection extra GET
0 = ne pas le faire (non recommandé !)
checkmultiPOST 1 = autoriser seulement un nombre "maxmultiPOST" de POST successifs
0 = sans limite
maxmultiPOST Nombre maximal d'opérations POST par file, si "checkmultiPOST" est activé
zipcompress 1 = compression des pages avec la librairie PHP GZIP(diminution de la bande passante mais augmentation de l'occupation CPU)
0 = ne pas le faire
compresslevel Niveau de compression GZIP, de 1 (faible) à 9 (maximum)
cpuloadmonitor 1 = bloque l'accès au dessus d'une certaine charge du système
0 = ne pas le faire
cpumaxload 5 minutes maximum de charge moyenne avant de bloquer l'accès
gxsessionpath si n'est pas vide, défini un chemin pour stocker les fichiers de session
filterblacklistedIPs 1 = filtrer les IPs blacklistées
0 = ne pas le faire
dnsbl_lists DNS-based Blackhole List
filtercountries 1 = filtrer les pays d'après le fichier pays
0 = ne pas le faire
crackcheck 1 = vérifier les cracks et injections
0 = ne pas le faire
countryfile nom du fichier contenant les pays à bloquer
crackfile nom du fichier contenant les codes de cracks ou d'injections à détecter
badattempts nombre de mauvaises tentatives avant de bannir l'IP dans le fichier .htaccess ou d'avertir que des accès trop rapides ont eu lieu
logheader Entête des fichiers log
logcycle Cycle des fichiers log: <D>aily (un fichier par jour), <M>onthly (un fichier par mois) ou <Y>early (un fichier par année)
logdelimiter Séparateur entre les champs dans les fichiers log
httpBL_key Code d'accès http:BL personnel du Projet Honey Pot.
Si la variable est vide, le test est passé.
httpBL_spamthreat Valeur de seuil pour des menaces de spammers (défault = 1)
Informations détaillées voir http://www.projecthoneypot.org/httpbl_api.php
httpBL_otherthreat Valeur de seuil pour d'autres menaces (défault = 40)
Informations détaillées voir http://www.projecthoneypot.org/httpbl_api.php
checkbothost 1 = Vérifier le host pour des robots (user agent)
0 = ne pas le faire
checkhosttype 1 = Standard (gethostbyaddr())
2 = *nix (plus rapide que 1)
3 = Win (plus rapide que 1)
waitingtime Temps en secondes qu'il faut attendre avant qu'un nouveau acces soit possible après un bloquage

Certaines options sollicitant le CPU ou pouvant causer problème ont été désactivées par défaut. Des essais approfondis de bon fonctionnement sont nécessaires pour définir les meilleures options pour votre site.

Attention: encodage GZIP / encryption HTML

Si vous voulez utiliser ces options avec GXSecurity, vous devez vous assurer que votre serveur n'utilise pas déjà la compression GZIP. Si c'est le cas désactivez le dans votre script et activez le dans GXSecurity. Vous ne pouvez pas utiliser l'encryption HTML si vous utilisez le buffer gzip de votre propre script parce que le buffer gzip nécessite d'être placé avant le buffer d'encryption. GXSecurity s'assure que l'utilisateur peut accepter l'encodage gzip avant de s'en servir, n'hésitez pas à utiliser le gzip de GXSecurity plutôt que le vôtre.

Attention: nettoyage des variables POST

Certains scripts laissent aux utilisateurs la possibilité d'incorporer du code HTML dans des articles, messages ou signatures, etc... Si votre script l'impose désactivez le nettoyage POST, sinon il convertira les caractères < > en ;lt ;gt . Dans le cas contraire activez-le, cela réduira grandement les risques de problèmes de "croisement de sites" (on peut voler vos cookies utilisateurs et autres).

Attention: CPU LoadMonitor

Cela peut présenter des inconvénients de s'en tenir à la charge du CPU. C'est probablement plus sûr de le désactiver. Rien n'assure que le service rendu soit réel, et ca peut ralentir les processus si le CPU doit effectivement exécuter une commande externe... Utiliser à vos propres risques !


Problèmes connus

Pour que l'éditeur interne de CMSimple (OEdit) fonctionne correctement avec GXSecurity, "session use_trans_sid" doit être sur "OFF" dans PHP.INI ou les variables PHP doivent être modifiables par GXSecurity. Plus d'informations à ce sujet peuvent être trouvées ici: http://www.php.net/manual/fr/ref.session.php.

Des formulaires successifs sont bloqué par checkMultiPost, resp. maxmultiPost doit être assez élevé. Avec checkMultiPost sur OFF les entrées sont encore assez protégées car on teste toujours si il y a trop d'opérations consécutives.


Garanties

Il n'y a pas de garantie à utiliser ce plugin. Il sera utilisé à vos propres risques. Nous n'assumerons aucune responsabilité en cas de pertes de données causées par GXSecurity.


Où trouver GXSecurity ?

La dernière version de GXSecurity peut être téléchargée ici.


Aide et questions

Aide et questions seulement dans le forum CMSimple et/ou dans le wiki CMSimple svp.


Comment améliorer GXSecurity ?

Je ne suis pas un expert en sécurité de sites web ou de code PHP, alors si vous voyez un moyen d'améliorer un aspect de ce plugin alors contactez moi sur mon site.

 

© 2007-2015 par Gerd Xhonneux, xtc