10 hacks de sécurité pour WordPress pour vous empêcher d’être piraté
WordPress est une énorme réussite, non seulement en termes de chiffres mondiaux, mais aussi, ce qui peut en surprendre certains, en termes de grands noms qui utilisent la plateforme.
Sur Internet, lorsque vous avez à la fois une importante base d’utilisateurs installés et des utilisateurs de haut niveau, vous ne pouvez tout simplement pas éviter de devenir la cible des pirates et des spammeurs. Qu’il s’agisse de colporter des pilules, de promouvoir des idéologies déformées, de voler des données et de casser des sites simplement parce qu’ils le peuvent, se faire pirater pourrait facilement être un casse-tête majeur pour votre entreprise.
Dans cet article, je vais jeter un œil à quelques-uns des trucs, astuces et astuces que vous pouvez utiliser pour vous offrir une meilleure protection contre les dessous miteux du Web.
Familiarisez-vous avec les bases
Bien que vous puissiez penser que certains de ces éléments devraient aller de soi, pensez au nombre de fois où vous avez vu non seulement des clients, mais aussi des collègues développeurs, designers et agences qui devraient savoir qu’ils sont coupables de certains d’entre eux ?
Commencez par rendre vos mots de passe difficiles à deviner. Comment pouvez-vous leur rendre la tâche difficile mais facile pour vous ? Vous pouvez peut-être oublier les substitutions de lettres douteuses telles que « h3ll0 », mélanger les cas et ajouter de la ponctuation et utiliser à la place un mnémonique. En enchaînant trois ou quatre mots ensemble pour créer une image amusante, votre mot de passe sera beaucoup plus facile à retenir que ‘t3r%?9.Fq!G’ et des ordres de grandeur plus difficiles à déchiffrer. N’utilisez simplement pas ‘CorrectHorseBatteryStaple’. Pour une explication complète et amusante de ce principe, consultez XKCD 936.
Vous devez également maintenir à jour vos plugins et votre noyau WordPress. C’est maintenant plus facile à faire avec les versions ultérieures de WordPress. À partir de WordPress 3.7, vous pouvez configurer quatre types de mises à jour automatiques : les fichiers principaux, les plugins, les thèmes et les fichiers de traduction. Un mot d’avertissement – en fonction de votre configuration, vous souhaiterez peut-être désactiver certains d’entre eux afin de pouvoir tester avant de déployer les mises à jour. Même si vous les laissez en direct et que vous rencontrez des problèmes, vous avez toujours des sauvegardes quotidiennes sur lesquelles vous appuyer, n’est-ce pas ?
Facilitez la gestion de plusieurs sites, plugins et sauvegardes avec quelque chose comme InfiniteWP. Les fonctionnalités de base sont gratuites !
Ce ne sont pas les identifiants de connexion que vous recherchez
En plus d’une force de mot de passe supérieure, vous devriez également envisager de déplacer votre URL d’administrateur par défaut et d’utiliser autre chose que « admin » pour votre nom d’utilisateur. À moins que les pirates n’aient une cible spécifique en tête, ils chercheront généralement à exécuter des bots pour automatiser le processus. Ces bots recherchent WordPress, essaient les paramètres par défaut et les mots de passe les plus courants – alors éloignons-nous des valeurs par défaut pour rendre cette tâche plus difficile.
Le moyen le plus simple de modifier votre URL de connexion est peut-être de jeter un œil à des plugins tels que HC Custom WP-Admin URL. Bien sûr, lancez d’abord une sauvegarde !
Pour changer votre nom d’utilisateur administrateur, le moyen le plus simple est de créer un nouvel utilisateur administrateur avec le nom d’utilisateur que vous avez choisi et de supprimer l’ancien. Si vous ne pouvez pas accéder à votre administrateur parce que vous ne vous souvenez pas de votre nom d’utilisateur, vous aurez besoin d’une solution un peu plus drastique. Connectez-vous à phpMyAdmin et chargez votre base de données WordPress. Faites défiler le côté gauche et recherchez la table ‘ks29so_users’. Trouvez le nom d’utilisateur que vous vouliez changer, c’est-à-dire ‘admin’ et modifiez la valeur user_login pour qu’elle soit votre nouveau nom.
Un dernier mot sur le processus de connexion
Avant de nous éloigner du processus de connexion, il reste quelques tâches à accomplir. Vous souvenez-vous de ces bots qui devinent les mots de passe ? Rendons-leur la tâche plus difficile en disant que vous ne pouvez faire qu’un certain nombre de tentatives dans un certain laps de temps et qu’avant de le faire, vous devez transcrire correctement un CAPTCHA. Pour Captcha, vous pouvez essayer d’installer ce plugin et c’est parti. Avantage secondaire – la version premium s’intègre à BuddyPress et au formulaire de contact 7 pour sécuriser vos formulaires de contact contre les soumissions de spam.
Pour limiter les tentatives de connexion, vous pouvez soit ajouter des plugins tels que Limiter les tentatives de connexion, soit demander à votre fournisseur d’hébergement qui peut avoir une solution – Wpengine, par exemple, l’a configuré par défaut.
Sécuriser WordPress avec des modifications apportées à .htaccess
J’espère que vous êtes prêt à vous salir un peu les mains alors que nous passons à des suggestions un peu plus délicates que « installer un plugin » ! Ajoutez ces suggestions après la ligne #END WORDPRESS.
Le premier élément à ajouter va aider à protéger wp-config.php, ce fichier serait dangereux entre de mauvaises mains car il contient des informations importantes sur votre site et sa base de données.
orderallow,deny
deny from all
C’est un bon début, que pouvons-nous faire d’autre ? Eh bien, nous pouvons empêcher les curieux de jeter un œil à vos fichiers et dossiers – je pense que les avantages de cela sont assez explicites !
Voici une combinaison pour bloquer la navigation dans les répertoires :
# directory browsing
Options All -Indexes
Si vous vouliez bloquer un fichier en particulier, utilisez ce qui suit :
Order allow,deny
Deny from all
Nous commençons maintenant à faire des progrès en supprimant l’accès à ceux qui n’en ont pas besoin. Pour amener cela à sa conclusion logique, regardons comment nous pouvons interdire à quelqu’un que nous savons être un mauvais acteur d’accéder à quoi que ce soit sur votre serveur.
Une fois que vous connaissez l’IP, ajoutez simplement ces lignes en remplaçant 127.0.0.1 par la mauvaise IP :
Order Deny,Allow
Deny from 127.0.0.1
Pour mettre à jour cela avec de nouvelles adresses IP, ajoutez simplement de nouvelles lignes « refus de ». Si vous avez besoin de bloquer une plage entière, laissez simplement la plage en question. En d’autres termes, pour tout bloquer de 127.0.0.0 à 127.0.0.255, vous ajouteriez :
Deny from 127.0.0.
Le dernier conseil de cette section est de protéger .htaccess lui-même. Il existe pas mal de sites qui diffusent des méthodes qui sont bonnes, mais pas géniales. La méthode suivante est une gracieuseté de Jeff Starr sur Perishable Press et est beaucoup plus approfondie :
# STRONG HTACCESS PROTECTION
order allow,deny
deny from all
satisfy all
Améliorations de la base de données
Un autre avantage de WordPress pour les pirates est que dans une installation standard, ils sauront comment s’appellent vos tables de base de données. WordPress utilise le préfixe ‘ks29so_’ par défaut, en changeant cela, nous nous éloignons à nouveau des hypothèses des pirates.
D’abord, nous dirons à wp-config.php que nous modifions le préfixe de la table. Ouvrez ce fichier et modifiez les éléments suivants :
$table_prefix = 'ks29so_';
Ajoutez des chiffres ou des lettres :
$table_prefix = ‘ks29so_3drt5_’;
Vous devez ensuite parcourir et modifier chacun des noms de table dans votre base de données. Pour chacune de vos 11 tables, exécutez une commande sous la forme suivante :
RENAME TABLE ‘ks29so_commentmeta‘ TO ‘ks29so_3drt5_commentmeta‘;
Il y aura probablement quelques autres références à l’ancien préfixe que vous devrez effacer. Exécutez cette requête pour répertorier tous les éléments de la table des options en utilisant l’ancien préfixe :
SELECT * FROM ` ks29so_3drt5_options` WHERE `option_name` LIKE'%ks29so_%'
Malheureusement, vous devrez passer par chacun et mettre à jour.
Ensuite, nous devons regarder la table UserMeta, même processus qu’avant :
SELECT * FROM ` ks29so_3drt5_usermeta` WHERE `meta_key` LIKE'%ks29so_%'
Enfin, vous pouvez également limiter l’utilisateur de votre base de données MySQL aux privilèges de lecture et d’écriture suivants : SELECT, INSERT, UPDATE et DELETE. Ainsi, vous pouvez révoquer les privilèges pour la structure et l’administration de la base de données: DROP, ALTER et GRANT. Cependant, cela peut rendre la mise à jour du noyau et l’ajout de nouveaux plugins difficiles car ils peuvent réellement avoir besoin de modifier la structure de la base de données. Si vous suivez cette voie, vous devez être minutieux dans vos sauvegardes et vos tests.
Nouvelles clés s’il vous plaît
Vos clés secrètes sont stockées dans wp-config.php. Cependant, ils ne sont pas si secrets si vous les laissez comme valeurs par défaut! Améliorez votre sécurité en les modifiant. Je vous recommande cependant de ne pas vous fier à votre propre sens du hasard et de la complexité. Utilisez quelque chose comme ce service – cela définit non seulement les clés pour vous, mais il les fait toutes en même temps dans le bon format pour que vous puissiez les coller directement dans votre fichier. Appuyer sur Actualiser montre que vous obtenez un nouveau jeu de clés chaque fois que vous le chargez.
Source de la recette originale
Les plugins sont un vecteur d’attaque suffisamment important lorsque des exploits sont découverts et distribués aux pirates, vous devez donc au moins vous assurer de faire confiance à la source du plugin. Sinon, vous serez peut-être celui qui placera l’exploit sur votre propre site en ajoutant un plugin douteux contenant des logiciels malveillants.
Nettoyage de printemps
Parce que les thèmes et les plugins sont une vulnérabilité potentielle, nous les tenons à jour lorsque nous le pouvons. Si vous avez cessé d’utiliser un plugin/thème, supprimez-le complètement. La désactivation n’est pas suffisante – il suffit de s’en débarrasser ! Si un plugin a été abandonné par son développeur, ce serait également une bonne idée de trouver quelque chose de nouveau et de supprimer l’ancien – si une vulnérabilité de sécurité est trouvée, elle ne sera pas corrigée et obtenir un correctif personnalisé sera probablement très coûteux.
Dans le même ordre d’idées, supprimez toutes les connexions dont vous n’avez plus besoin. Vous faites peut-être confiance à vos ex-employés, et c’est très bien, mais ce n’est pas entièrement une question de confiance. Il s’agit également de réduire la zone d’attaque disponible là où vous le pouvez, en limitant les utilisateurs au niveau d’accès minimum dont ils ont besoin. En règle générale, un ancien employé ou un auteur n’a pas besoin d’accès – je suis sûr qu’il comprendra !
La politique d’entrée s’applique – Autoriser uniquement l’adresse IP de l’administrateur de confiance
J’ai séparé cela des autres conseils .htaccess car il s’agit potentiellement d’une étape légèrement plus sérieuse à considérer. Contrairement à l’étape précédente consistant à interdire les mauvaises adresses IP connues, il s’agit d’autoriser uniquement les bonnes adresses IP connues. Cela améliore votre sécurité, mais à un coût qui vous convient, car vous serez limité à l’endroit où vous pouvez vous connecter pour travailler sur votre site. Allez-y si vous ne bougez pas beaucoup, si vous avez subi des tentatives d’attaque constantes ou simplement si vous pensez que cela vaut la peine d’avoir l’esprit plus tranquille.
orderdeny,allow
allow from 127.0.0.1
deny from all
(encore une fois, remplacez 127.0.0.1 par votre adresse IP).
SSL
Vous ne devez pas accéder à votre administrateur sur un service Wi-Fi public – si vous le faites, les informations d’identification sont envoyées par voie aérienne en texte brut. Le pirate infâme pourrait être assis à côté de vous, en train de siroter un café au lait et d’attaquer secrètement un homme au milieu pour obtenir vos mots de passe et d’autres détails sensibles.
Cependant, si vous le devez, vous pouvez au moins vous offrir un peu plus de protection en activant SSL. Assurez-vous d’abord que votre serveur le supporte, puis ouvrez votre fichier wp-config.php et ajoutez la ligne suivante :
define('FORCE_SSL_ADMIN', true);
Autres choses à regarder
C’est tout pour mon ensemble principal de conseils, mais il y a d’autres aspects à examiner. Vous pouvez encore renforcer votre .htaccess, par exemple, en arrêtant les scripts php en cours d’exécution là où ils ne devraient pas l’être. Vous pouvez également vous assurer que les autorisations de vos fichiers sont définies de manière appropriée, pas seulement dans vos fichiers WordPress, mais sur l’ensemble du serveur.
Mon dernier conseil important, cependant, serait de sauvegarder. Tout cet article est basé sur l’idée qu’il vaut mieux prévenir que guérir, mais des sauvegardes régulières, utilisables et testées devraient être là juste au cas où vous en auriez besoin. Permettez-moi de souligner à la fois régulier et testé – une sauvegarde d’il y a un an n’est essentiellement pas une sauvegarde pour la plupart des sites qui se seront considérablement développés au cours de cette période. Si les sauvegardes ne sont pas testées, vous n’avez pas de sauvegarde. Vous ne voulez vraiment pas en arriver au point où une sauvegarde est nécessaire et vous n’avez qu’à croiser les doigts et espérer que cela fonctionne !
Qu’avez-vous fait pour sécuriser votre site WordPress? Où tracez-vous la ligne entre la sécurité et l’accessibilité/convivialité ? Faites-moi savoir dans les commentaires.