Plugin de sécurité : le guide ultime pour iTheme Security

Plugin de sécurité : le guide ultime pour iTheme Security

Parmi les plugins de sécurité les plus utilisés sur Wordpress, on peut en citer deux qui se tirent vraiment la bourre sur le partage du marché : Wordfence, et iTheme Security. Ici, on fait un petit point sur les réglages de iTheme Security, parce qu’il y en a quand même beaucoup, et que c’est pas toujours facile de faire le tri. J’utilise ce plugin depuis quelques années, et c’est celui qui m’a fait le moins de misères :)

Réglages principaux

La liste et les explications de tout ce qui figure sur les réglages principaux de ce plugin de sécurité !

Ecrire sur les fichiers

Ce réglage permet à iTheme Security d’écrire sur le fichier wp-config.php (qui gère la connexion à la base de données et d’autres directives) et sur le .htaccess (sécurité, réécriture d’URL, interdiction de certains user-agent etc.). Si vous ne cochez pas la case, il faudra inscrire les réglages à la main, donc je vous conseille très fortement de cocher cette petite case

E-mail de notification

E-mail de notification, c’est la ou les adresses vers lesquelles les notifications du plug-in sont envoyées. À remplir obligatoirement.

Envoyer un e-mail de résumé

La fonction « résumé » permet de n’envoyer qu’un seul e-mail par jour, ça peut éviter de pourrir à votre boîte mail si vous subissez beaucoup d’attaques. À cocher, ou pas, c’est comme vous voulez.

E-mail d’envoi de la sauvegarde

Adresses qui réceptionnent les sauvegardes qui sont faites par e-mail. N’envoyez pas les backups de la base de données à n’importe qui ! Typiquement, c’est réservé aux supers administrateurs du site.

Message de blocage d’hôte

Quand un ordinateur distant a été bloqué, on peut afficher un message personnalisé. Ici, « error » tout seul, ça suffit. Ne vous embêtez pas à passer du temps sur ce champ.

Message du blocage d’utilisateur

Si vous avez banni un utilisateur, vous pouvez lui notifier cette action grâce à ce champ. Par exemple, si votre utilisateur s’est trompé trop de fois lors de ses tentatives de connexion, vous pouvez indiquer de vous envoyer un mail, ou de patienter le temps qu’il soit dé-banni par le plug-in.

Message de blocage de communauté

Le réseau iTheme sécurité liste les utilisateurs qui sont des spammeurs, ou de méchants pirates. Si leur IP est cramée sur le réseau, vous pouvez leur afficher un petit message.

Liste noire des offenseurs récidivistes

Cette case à cocher permet de remplir la base de données des utilisateurs bloqués s’ils ont effectué trop d’attaques.

Seuil de la liste noire

Le seuil de la liste noire, c’est le nombre de blocages requis sur un laps de temps donné pour que l’utilisateur soit banni par le système. Trois blocages par défaut.

Période de Lookback de la liste noire

Le laps de temps dont on vient de parler. Par défaut, c’est sept jours. Donc, si un utilisateur se bloque 3 fois de suite sur une période de 7 jours glissants, il est banni du site. Pour toujours !

Période de blocage

Si un utilisateur fait trop d’erreurs en essayant de se connecter, il sera banni pendant le nombre de minutes défini ici.

Liste blanche de blocage

La liste blanche, c’est simplement les IP qui échappent à tout contrôle pour la procédure de blocage. Il est très fortement conseillé d’ajouter votre adresse IP à cette liste. Vous pouvez également ajouter des plages d’adresses. Suggestion : IP de Googlebot. Lui, on lui pardonne tout !

E-mail de notification des blocages

Pour recevoir un e-mail quand un utilisateur s’est banni du système. Pratique quand vous avez un client un peu maladroit qui fait un peu n’importe quoi : ça permet de lui envoyer un e-mail pour lui expliquer la procédure de connexion, lui rappeler ses identifiants et mots de passe si il les a oubliés. Et éventuellement, de restaurer sa connexion sur le site.

Type de journal

Le type de journal, c’est la façon dont vous enregistrez les événements sur votre site. Vous pouvez choisir entre l’enregistrement uniquement par fichier de log, enregistrement dans la base de données, ou les deux.

Jours pour conserver les journaux de la base de données

Le nombre de jours pendant lesquels vous conservez les logs de la base de données. Ou les fichiers de log tout court.

Chemin vers les journaux

Le dossier de votre serveur dans lequel les fichiers de logs sont enregistrés.

Autoriser le suivi de donnée

Pour permettre à iTheme Security de collecter les données de façon anonyme. Pour améliorer leur service très probablement. Ou vous vendre un produit sur-mesure. Rien n’est gratuit sur le web

Cacher le menu “Sécurité” dans la barre d’administration

Pour cacher le menu de iTheme Security dans la barre de gauche.

Show Error Codes

Celui-là est très important. À chaque fois que vous essayez de vous connecter, et que vous faites une erreur, le serveur renvoie un code pour indiquer par exemple « mauvais mode passe pour ce nom d’utilisateur ». Ici, ça voudrait dire que le nom d’utilisateurs est bon, mais que le mode passe est incorrect. Pour un pirate, c’est du pain béni, puisqu’il n’a plus qu’à faire tourner un dictionnaire de mode passe pour rentrer. À mettre donc sur « non » par défaut.

La détection des erreurs 404

Une erreur 404, c’est quand un utilisateur demande un contenu qui n’est pas là. Le serveur répond « je n’ai pas ce que tu demandes ». Mais beaucoup d’erreur 404 à la suite, c’est suspect : ça peut être un script qui cherche une faille de sécurité sur votre site. Donc lui, on le bannit !

Temps pour se souvenir des erreurs 404 (temps de vérification)

C’est le laps de temps pendant lequel les erreurs 404 doivent être comptabilisées.

Seuil d’erreur

C’est le nombre d’erreurs autorisées pendant ce laps de temps avant de déclencher un blocage.

Fichiers / Répertoire dans la liste blanche 404

Ce sont les fichiers qui échappent à ce contrôle. Si par exemple vous n’avez pas de favicon sur votre site, ça peut être utile de l’indiquer ici. Histoire, justement, de ne pas bannir un navigateur ou un robot qui cherche ce fichier en particulier.

Ignorer les types de fichiers

Les types MIME qui échapperont à cette détection de 404. Par exemple, vous pouvez lister tous les formats images que vous utilisez, les polices de caractère, les CSS etc.

Le mode absent

Le mode absent, c’est la définition du temps où vous ne vous connectez jamais à votre back office. Donc, tout tentatives de connexion en dehors du créneau renseigné : ban ! Regardez bien dans la vidéo, je me plante magistralement en inversant les deux créneaux horaires (et j’ai refait la même erreur à la config, donc soit je suis mauvais, soit leur présentation n’est pas ergonomique du tout !)

Type de restriction

Si vous mettez quotidien, les réglages seront généralisés, ad vitam aeternam. En revanche, si vous indiquez « une fois », c’est pour définir une plage de date bien particulière. Par exemple, un départ en vacances.

Heure de début

Le moment de la journée le back office doit être indisponible. À partir de là, connexion interdite jusqu’à l’heure de fin.

Heure de fin

Le moment de la journée où le back office doit être disponible à nouveau.

Utilisateur banni

Cette fonctionnalité permet de bannir totalement les User-Agent indésirables sur votre site. On peut aussi fonctionner avec des adresses IP ou des plages d’adresses IP. Top pour bannir une liste de pays. Si par exemple votre site est 100 % français, vous pensez vraiment qu’un utilisateur Indien ou Russe va taper une requête en français dans son moteur de recherche pour trouver un sujet en français ? Non. Donc, on peut bannir une liste de pays. Attention, ça affectera aussi les moteurs de recherche. Sauf si vous les avez listés dans la white list vu précédemment. A utiliser avec parcimonie.

Liste noire par défaut

Permet de griller les robots malveillants qui sont listés sur hackrepair.com

Ban List

Pour ajouter vous-même des hôtes bannis, par leur adresse IP, ou par User-Agent. Si par exemple, je n’aime pas Internet Explorer, je peux bannir tous les utilisateurs qui utilisent Internet Explorer.

Local Brute Force Protection

Là, c’est pour vous protéger des attaques de type brute force. Ça permet de filtrer les utilisateurs qui vont tenter de se connecter par exemple au back office en utilisant des noms d’utilisateurs « classiques » et des dictionnaires de mot de passe. Ce type d’attaque s’appelle une attaque brute force. Pour moi, c’est un des réglages les plus importants du plug-in.

Maximum de tentatives de connexion atteinte par hôte

C’est le nombre de fois où vous avez droit à l’erreur avant d’être bloqué ! Si vous ajoutez votre adresse à la white-list, vous échappez ce processus. Ici, le filtrage se fait sur l’adresse IP ou le nom d’hôte.

Maximum de tentatives de connexion atteinte par utilisateur

Même chose que précédemment, mais ici, c’est le nom de l’utilisateur qui est visé. Attention, si votre nom d’auteur, c’est également votre nom d’utilisateur en back-office, et que quelqu’un fait le mariole, vous en paierez. On verra donc un peu plus loin qu’il est fortement conseillé de ne pas utiliser en nom de connexion votre nom d’auteur, et également de cacher l’adresse de connexion au back-office.

Temps pour se souvenir des mauvaises tentatives de connexion

C’est le délai pendant lequel les mauvaises connexions doivent être enregistrées. Pas la peine de mettre des heures, en général après quatre ou cinq tentatives de connexion infructueuse, on a le réflexe de cliquer sur « j’ai oublié mon mot de passe » …

Bannir automatiquement l’utilisateur admin

Case à cocher impérativement : tout utilisateur qui tentera de se logger avec le nom « admin » sera banni automatiquement. Attention, ne cochez pas cette case là si vous utilisez vous-même ce nom ! Changez d’abord votre nom d’utilisateur, et ensuite seulement, vous pourrez cocher la petite case…

Sauvegarde de la base de données

Un must ! C’est ici que vous allez pouvoir programmer des sauvegardes automatiques de votre base de données. Notez bien que ça ne sauvegarde pas les fichiers, pour ça, on pensera une autre solution…

Sauvegarder l’ensemble de la base de données

Cette petite case à cocher vous permet de sauvegarder toutes les tables de la base de données, même si ça concerne un plug-in, ou une table que vous avez inséré à la main pour une autre application. À vous de voir si c’est utile ou pas dans votre cas.

Méthode de sauvegarde

Un bouton select pour voir si vous enregistrez des sauvegardes sur votre serveur, si vous les envoyez uniquement par mail, ou si vous faites les deux en même temps

Emplacement de sauvegarde

L’adresse du dossier dans lequel les fichiers de sauvegarde seront placés par le système.

Sauvegarde conserver

Le nombre de sauvegardes que vous pouvez stocker. N’en mettez pas trop, ça prend de la place ces petites bêtes là ! Entre trois et cinq sauvegardes, c’est bien.

Compresser les fichiers de sauvegarde

C’est une case que je vous recommande de cocher, mais pour ça, il faut que vous ayez un logiciel de compression sur votre serveur. Si vous êtes sur un noyau Linux, il y a de fortes chances que ce soit le cas, et pour nous ici, sur les VPS OVH, il y a tout ce qu’il faut. Compresser la sauvegarde permettra de réduire considérablement le poids du backup. Pratique si vous envoyez des sauvegardes par e-mail.

Exclure les tables

C’est là que vous choisissez les tables que vous ne voulez pas sauvegarder.

Sauvegarde la base de données planifiées

La petite case à cocher indique que vous acceptez de faire des sauvegardes récurrentes en mode automatique. À cocher !

Intervalle de sauvegarde

Le nombre de jours entre lesquels vous ne faites pas de sauvegarde. Si vous mettez par exemple cinq jours, ça veut dire que vous aurez une sauvegarde tous les cinq jours. À vous de voir ce que vous mettez, en fonction de la fréquence de vos publications.

Détection de changement de fichiers

Cette fonction sert à détecter s’il y a eu des modifications de faites sur les fichiers de votre site. Cela vous dira par exemple si vous avez ajouté des fichiers, supprimé des fichiers, ou fait des modifications. Évidemment, si vous utilisez un système de cache, le mail récapitulatif sera plein tous les jours, car les fichiers de cache sont en général mis à jour plusieurs fois au cours d’une période de 24 heures.

Découpe les fichiers pour l’analyse

Cette case à cocher permet de segmenter l’analyse des fichiers. Recommandé si vous avez un serveur qui n’a que peu de mémoire. Sinon, ça va ramer à fond !

Inclure ou exclure des fichiers et des répertoires

Bouton sélect pour inclure ou exclure les fichiers qui suivent juste derrière…

Liste des fichiers répertoire

Ce sont les fichiers et dossiers qui doivent échapper à ce contrôle de modifications. Perso, je ne remplis même pas. Tout est inclus. Parcourir le mail de résumé ne prend que quelques secondes. Ne vous embêtez pas avec ça.

Ignorer les types de fichiers

Les fichiers qui échappent à ce contrôle. Typiquement, tout ce qui est statique, ça ne craint pas grand-chose (les fichiers médias, les images etc.).

Envoyer par e-mail les notifications de changements de fichiers

La petite case à cocher pour recevoir le mail qui vous dit ce qui se passe sur votre serveur.

Afficher les avertissements de modification de fichiers

Pour afficher un avertissement qui vous dit si des fichiers ont été modifiés récemment. Vous pouvez l’utiliser si vous ne recevez pas l’e-mail de notification. Mais les deux en même temps, ça ne sert à rien, c’est redondant.

Network brut force protections

Exactement comme la protection par brute force pour les attaques locales, sauf qu’ici, vous transmettez les données à tous les utilisateurs du réseau iTheme Security.

SSL

Celui-là, évidemment, vous ne pouvez utiliser que si votre serveur accepte les connexions SSL, et que vous avez bien configuré votre Virtualhost. Ici, c’est le cas, donc on va carrément tout mettre en SSL, comme ça, c’est réglé.

Mode SSL pour le front d’office

Ici, vous avez trois options :

  • Non : aucun contenu du front d’office ne sera en https
  • Par contenu : quand vous créez un article ou une page, vous aurez une petite case à cocher pour indiquer que l’adresse doit être en https.
  • Site entier : pour que le front-office soit full https. Si c’est pour un nouveau site, vous pouvez cocher ça, normalement Google devrait aimer.

SSL pour le tableau de bord

Permet de forcer l’utilisation du SSL pour accéder au back office. À cocher !

Strong Password Enforcement

Ce réglage permet de sélectionner un rôle minimum à partir duquel un utilisateur doit choisir un mode passe qui sera difficile à casser. Perso, je recommande le mot de passe fort pour tout le monde, mais je suis parano.

Modification système

Que des choses utiles ici, puisque ça va empêcher l’accès à certains fichiers sensibles, et empêcher l’injection de hack via la barre d’URL.

Système de fichiers

Cette petite case à cocher empêche l’accès à certains fichiers de votre site. À cocher !

Exploration de répertoire

Cocher la petite case empêche les utilisateurs de lire ce qu’il y a dans un répertoire si aucun fichier “index” n’est présent. À cocher !

Méthode de requêtes

Le back-office dit que c’est pour filtrer les hits avec les traces de passage. Je n’ai jamais vraiment su à quoi ça servait. Mais je coche. Je me sens mieux comme ça.

Requêtes de chaînes de caractères suspects

À cocher ! Si une requête est envoyée dans l’URL avec des chaînes de caractères « bizarres », ça bloque tout. Donc, techniquement, c’est pour filtrer les attaques par requête. À cocher !

Caractères d’anglais

Là, si vous êtes français, vous ne pouvez pas cocher ça. Sinon, certaines fonctionnalités de votre site ne fonctionneront pas. Les envois de mails par certains modules par exemple. Pour une fois, à ne pas cocher !

Chaînes longues URL

À cocher ! Celle-là filtre les chaînes de caractères ultra-longue dans l’URL, un truc caractéristique des attaques par injection.

Permission d’écriture sur les fichiers

Tout simplement pour retirer les permissions d’écriture sur certains fichiers sensibles (wp-config.php et htaccess). À cocher !

Fichiers envoyés

La case à cocher permet de désactiver PHP dans le dossier « uploads ». Je trouve ça tout simplement hallucinant que ce ne soit pas déjà le cas en natif. Le dossier upload ne doit contenir que des fichiers statiques !

Modification WordPress

Entête Windows live Writer

Pour désactiver le header Windows live Writer. Un truc de dinosaure créé par Microsoft, donc double raison de le bannir !

Modifier URI d’en-tête

Permet de désactiver l’en-tête RLD. Si votre site ne communique pas avec un autre système comme Flickr, ça ne sert à rien. À bannir !

Commentaires indésirables

Ça permet de réduire le spamco. Couplé à Akismet, ça devrait faire les pieds spammeurs ! À cocher !

Éditeur de fichiers

WordPress permet d’éditer les fichiers situés sur le serveur, en passant directement par un éditeur interne. Grosse faille de sécurité. À cocher. Attention, vous devrez procéder aux modifications de ces fichiers par ftp par exemple. Perso, je ne connais personne qui laisse cette fonction active. Trop risqué.

XML–RPC

XML RPC, c’est un système qui ne devrait plus être utilisé, tant c’est une faille de sécurité critique. Néanmoins, ça sert encore avec le plug-in jet pack, les ping-back, et la publication à distance. Je n’utilise jamais cette fonctionnalité sur WordPress. Donc, vous pouvez le désactiver.

Mais attention, si des marioles s’amusent à pinger ce fichier à fond, ça va générer beaucoup d’erreur 403, et ça fait monter la charge sur apache, qui va bouffer toute la RAM. Dans un prochain tutoriel, on verra comment on peut passer le relais à fail2ban, qui bannira proprement et gentiment les abrutis qui essaient de vous hacker.

Plusieurs tentatives d’authentification par requête XML–RPC

Si un utilisateur tente de se connecter à ce fichier de nombreuses fois, on peut le bloquer. Pour l’instant, mettez sur “bloquer”, mais dans prochain tutoriel, on bannira l’utilisateur indésirable grâce à fail2ban.

Remplacer JQuery par une version sécurisée

Si vous utilisez un vieux thème, dont la version de JQuery n’est pas à jour, ça peut être une faille. Cette option permet de la mettre à jour. Pas forcément conseillé de l’utiliser, puisque ça peut casser votre thème. A vous de voir.

Message d’erreur de connexion

Même topo que précédemment : ça empêche l’affichage de messages d’erreur pour les utilisateurs qui se sont plantés à la connexion. Pratique pour ne pas indiquer un pirate qu’il a le bon login, mais pas encore le bon mot de passe…

Forcer un surnom unique

À mettre en place avant de publier quoi que ce soit si votre site est tout neuf ! Ça permet d’avoir un nom d’utilisateur différent de celui que vous utilisez en tant qu’auteur, pour la connexion au back-office . À cocher donc.

Désactiver les archives en extra des utilisateurs

Si un auteur n’a rien rédigé, il n’a pas de pages d’archives. Ça complique un peu la tâche pour les robots malveillants. À cocher !

Salage WordPress

Les salages WordPress sont une clé secrète qui permet de rendre votre site plus difficile à attaquer. Vous pouvez utiliser cette fonction pour changer vos salages WordPress de temps en temps. Faites quand même un backup auparavant… on ne sait jamais !

Les fonctions avancées de iTheme Security

Les fonctions avancées sont un peu planquées, mais méritent le détour ! Elles permettent d’améliorer encore plus la sécurité de votre site !

Cacher l’administration

C’est de loin la fonction la plus marrante du plug-in…

Cacher l’administration

Petite case à cocher pour activer la fonction de tableau de bord caché : vous allez pouvoir créer une adresse de connexion personnalisée…

Identifiant de connexion

C’est ici que vous rentrez le nouveau slug de l’adresse de connexion. Un truc difficile à deviner si c’est possible…

Activer la redirection

La petite case à cocher pour renvoyer vers une page dédiée pour les malins qui cherchent wp-admin ou wp-login, plutôt que de générer une vieilles 403. Soyez créatifs et faites preuve d’humour !

Identifiant de redirection

Le slug de la page vers laquelle vous renvoyez aux utilisateurs malveillants qui essaient d’accéder au back-office.

Action de connexion personnalisée

Si vous avez une action personnalisée à insérer, c’est ici.

Changer le répertoire de contenu

Cette option permet de modifier le nom du dossier wp-content. C’est un peu un gadget, parce que les robots modernes sont capables de trouver le répertoire en question, donc ne faites pas attention à cette option-là, elle risquerait de vous attirer beaucoup plus de problèmes que d’avantages…

Changer le préfixe des tables

Si vous avez suivi les tutos précédents, vous avez déjà des tables qui ne commencent pas par “wp_“. En effet, c’est fortement recommandé de ne pas utiliser le paramétrage par défaut de wordpress pour le préfixe des tables, puisque ça facilite un hack éventuel. Donc, si vos tables commencent toujours par “wp_”, c’est ici que vous pouvez les changer. Avant toute opération “radicale” sur la base de donnée, on fait toujours une sauvegarde ! Donc ici, faites bien un backup avant de procéder à cette mise à jour !

Charles Annoni

Charles Annoni

Développeur Front-End et Formateur

Charles Annoni accompagne les entreprises dans leur développement sur le web depuis 2008. Il est également formateur dans l’enseignement supérieur.