Securité wordpress {0}
Au sujet de la securité dans wordpress, il y a certains principes de bases à appliquer. Tout d’abord, basé sur mon expérience dans la matière, la majorité du “defacing” (signer un hack d’un site ou en alterner le contenu) est réalisé par des scripts automatisés. Ce que le script fait c’est qu’il analyse la version de wordpress installé ( il y a certaines techniques d’analyse des fichiers sur le serveur pour déterminer exactement la version ) puis si pour cette version des vulnérabilité sont trouvé, il tente de les exploiter. Tenir la version du wordpress (ou tout autre framework en fait) à jour le plus rapidement possible est donc primordiale. Ceci s’appliquer aussi dans les plugins, puisqu’eux aussi peuvent être exploité. Personnellement, pour wordpress, j’utilise le plugin Update Notifier, sa fonction est très simple, écrire un courriel à chaque update de wordpress ou d’un plugin. Il faut alors être proactif et faire les mises à jour.
Le second exploit très souvent utilisé est simplement d’essayer une série de noms d’utilisateurs / mot de passe par un script pour trouver le bon. Certains trucs très simples peuvent diminuer les probabilités que cette attaque. Premièrement, utiliser un mot de passe, pour tous les utilisateurs, sécure, soit sans mots du dictionnaire et une combinaison de lettres, de chiffres et, idéalement, de caractères spéciaux. Aussi, utiliser un mot de passe de plus de plus de 8 caractères. Grâce à ça, on met le temps pour le script de trouver le bon mot de passe à plus de 3 ans d’essais continuels. Un autre truc simple est de changer l’utilisateur “admin”, c’est une variable “connu” qui diminue les efforts nécessaires à trouver les accès. Certains sites peuvent être hacké simplement en allant dans la section admin et entrant “admin/123456″ ou “admin/admin”. De plus, dans les fichiers de configurations de wordpress (wp-config.php),
define(‘AUTH_KEY’, ‘put your unique phrase here’);
define(‘SECURE_AUTH_KEY’, ‘put your unique phrase here’);
define(‘LOGGED_IN_KEY’, ‘put your unique phrase here’);
define(‘NONCE_KEY’, ‘put your unique phrase here’);
define(‘AUTH_SALT’, ‘put your unique phrase here’);
define(‘SECURE_AUTH_SALT’, ‘put your unique phrase here’);
define(‘LOGGED_IN_SALT’, ‘put your unique phrase here’);
define(‘NONCE_SALT’, ‘put your unique phrase here’);
Ces valeurs doivent être unique pour chaque installation, sinon un pirate peut forger un cookie identifié et “bypassé” l’authentification wordpress. Il peut donc être authentifié admin sans même trouver le mot de passe.
Finalement, il y a toujours les questions de l’environnement autour du script. Parfois, certains hébergements shared sont mal sécurisé et permettent un client infecté d’infecter les autres. Un serveur dédié mal géré est cependant tout autant dangereux puisqu’il a d’autres portes qu’un hacker peut utiliser (exploitation ssh, mysql, apache…) qui sont normalement réglées par un bon administrateur de shared (mais ce n’est pas toutes les compagnies sont née égale ou même il y en a qui s’en foute). Certaines compagnies de shared offrent aussi une période de “grace”, par exemple 14 jours de back-up fichiers et tables mysql. Il faut cependant découvrir le problème avant ça.
Personnellement, mon setup qui fonctionne bien est un serveur dédié mis à jours à chaque semaines du coté OS et immédiatement pour wordpress. J’avais quand même des milliers d’attaques par jours et j’ai travaillé beaucoup au niveau du firewall pour décourager les attaqueurs (les scripts). Par exemple, limiter le nombre de connexions concurrentes à apache à 5, et bannir un ip (temporairement) après 4 essais consécutifs échoués en moins de 60 secondes.
Pour plus de techniques et détails :
http://codex.wordpress.org/Hardening_WordPress
http://blog.iweb.com/en/2011/02/securing-wordpress-against-hackers/2954.html