Sécurité des rôles WordPress : nettoyer les comptes admin
Sécurité des rôles WordPress : repérez chaque administrateur, supprimez les anciens accès, révoquez les mots de passe d'application, faites une revue trimestrielle.
Aussi en : English Deutsch Español Italiano Polski Português Türkçe
La plupart des sites WordPress comptent plus d'administrateurs que nécessaire. Chacun de ces comptes peut installer une extension, et installer une extension revient à exécuter du code sur votre serveur. La sécurité des rôles utilisateurs WordPress se résume à une règle, le moindre privilège : chaque personne a son propre compte, avec le rôle le plus bas qui lui permet encore de faire son travail.
La sécurité des rôles WordPress commence par compter les admins
Commencez par compter vos administrateurs. Dans le tableau de bord, ouvrez Utilisateurs > Tous les utilisateurs et cliquez sur le filtre « Administrateur » au-dessus de la liste. Notez le nombre et les noms.
Avec WP-CLI, vous obtenez la même liste, avec les dates d'inscription :
wp user list --role=administrator --fields=ID,user_login,user_email,user_registered
Sur un réseau multisite, vérifiez aussi qui contrôle l'ensemble du réseau :
wp super-admin list
Pour chaque compte, posez-vous une question simple : pouvez-vous nommer la personne réelle derrière ce compte, et a-t-elle encore besoin d'un contrôle total ? Si la réponse n'est pas claire, le compte rejoint votre liste de revue. La documentation des commandes utilisateur de WP-CLI détaille toutes les options utilisées dans cet article.
Les cinq rôles par défaut et à qui les attribuer
Le noyau de WordPress fournit cinq rôles, auxquels s'ajoute le Super Admin en multisite. La page officielle Roles and Capabilities donne la liste complète des capacités. En résumé :
| Rôle | Peut faire | Personne type |
|---|---|---|
| Super Admin | Tout, sur l'ensemble d'un réseau multisite | Exploitant du réseau |
| Administrateur | Extensions, thèmes, utilisateurs, réglages | Dirigeant, responsable d'agence |
| Éditeur | Publier et modifier tous les articles et pages | Équipe marketing |
| Auteur | Publier ses propres articles, téléverser des fichiers | Rédacteur régulier |
| Contributeur | Rédiger ses brouillons, sans publier | Rédacteur invité |
| Abonné | Modifier son propre profil | Membre, client de la boutique |
Les extensions ajoutent leurs propres rôles et capacités. WooCommerce, par exemple, crée « Gestionnaire de boutique » et « Client », et un gestionnaire de boutique voit des commandes pleines de données personnelles de clients. Les extensions SEO, LMS et d'adhésion en font souvent autant. Parcourez le filtre par rôle de l'écran Utilisateurs, repérez les rôles que vous ne connaissez pas et vérifiez dans la documentation de l'extension ce qu'ils permettent.
Notre recommandation : le travail éditorial quotidien se fait avec un compte Éditeur. Le compte administrateur sert uniquement aux mises à jour et à la maintenance. Sur un site unique, les éditeurs peuvent encore publier du HTML non filtré : ce n'est donc pas une barrière de sécurité face à des personnes peu fiables. En revanche, un identifiant marketing obtenu par hameçonnage ne permettra plus d'installer des extensions.
Comptes à supprimer ou rétrograder : anciens salariés, agences, identifiants partagés
Les mêmes types de comptes reviennent sur presque tous les sites de petites entreprises :
- Les anciens salariés, dont le compte n'a jamais été supprimé après leur départ.
- L'ancienne agence, toujours administratrice des années après la fin du contrat.
- Un freelance intervenu sur un projet ponctuel, comme une refonte ou une migration de boutique.
- Un identifiant partagé « bureau » ou « contact », utilisé par plusieurs personnes.
- Le nom d'utilisateur « admin » de l'installation d'origine.
Les identifiants partagés sont les plus difficiles à défendre. Quand cinq personnes utilisent le même compte, impossible de savoir qui a modifié un réglage ou exporté des données clients. Impossible aussi de couper l'accès d'une seule personne sans changer le mot de passe de tout le monde. Donnez à chacun son propre compte nominatif.
Les agences doivent fonctionner de la même façon : un compte nominatif par collaborateur, supprimé le jour de la fin du contrat. Si une agence a un accès administrateur à un site contenant des données personnelles, elle est en général un sous-traitant au sens de l'art. 28 du RGPD. Son accès doit figurer dans les documents que vous conservez avec le contrat de sous-traitance. Pour la question des preuves, voyez ce qu'il faut conserver dans un rapport d'audit de sécurité.
Le nom d'utilisateur « admin » ne peut pas être modifié depuis le tableau de bord : WordPress affiche « Les noms d'utilisateur ne peuvent pas être modifiés » sur l'écran du profil. Créez plutôt un nouvel administrateur avec un identifiant personnel :
wp user create jane.doe jane@example.com --role=administrator
Connectez-vous avec ce nouvel utilisateur, puis supprimez l'ancien compte « admin » en réattribuant son contenu, comme expliqué dans la section suivante.
Supprimer sans risque : réattribuer le contenu et garder un administrateur fonctionnel
wp user delete 7 --reassign=2
Pour rétrograder plutôt que supprimer, par exemple un collaborateur qui écrit encore des articles :
wp user set-role mark.writer editor
Rétrograder est souvent la première étape la plus prudente. Si personne ne se plaint au bout de deux semaines, supprimez le compte.
Mots de passe d'application : les accès qui survivent à un changement de mot de passe
Les mots de passe d'application font partie du noyau depuis WordPress 5.6. Ils permettent à des applications et intégrations, comme une appli mobile, un outil de reporting ou un service d'automatisation, de s'authentifier auprès de l'API REST. Le piège : ils continuent de fonctionner quand le mot de passe principal de l'utilisateur change. Si vous réinitialisez le mot de passe d'une ancienne agence mais laissez en place son mot de passe d'application, l'agence a toujours accès au site.
Examinez-les pour chaque administrateur : allez dans Utilisateurs > Tous les utilisateurs, modifiez l'utilisateur et descendez jusqu'à Mots de passe d'application. Avec WP-CLI :
wp user application-password list jane.doe
La liste indique la date de création et de dernière utilisation de chaque mot de passe. Révoquez tout ce que vous ne pouvez pas rattacher à une intégration actuelle :
wp user application-password delete jane.doe <uuid>
Nommez chaque nouveau mot de passe d'application d'après l'intégration qui l'utilise, par exemple « Zapier – export des commandes », pour que la prochaine revue soit rapide. Si personne n'utilise cette fonction sur le site, de nombreuses extensions de sécurité et certains hébergeurs permettent de la désactiver complètement.
Comptes admin cachés après un piratage : comment les repérer
Les attaquants qui réussissent à entrer créent parfois leur propre compte administrateur et le masquent avec du code qui filtre la requête sur les utilisateurs. Le compte n'apparaît alors pas sous Utilisateurs, et il peut aussi échapper à wp user list, car WP-CLI charge les mêmes extensions. Une requête directe sur la base de données contourne ce code :
wp db query "SELECT u.ID, u.user_login, u.user_email, u.user_registered FROM wp_users u JOIN wp_usermeta m ON m.user_id = u.ID WHERE m.meta_key = 'wp_capabilities' AND m.meta_value LIKE '%administrator%'"
Le préfixe wp_ n'est que la valeur par défaut. Lancez d'abord wp db prefix et remplacez wp_ dans les deux noms de tables ainsi que dans la clé meta. Si votre préfixe est xy7_, la clé est xy7_capabilities. En multisite, chaque site a sa propre clé, par exemple wp_2_capabilities.
Comparez le résultat avec le nombre affiché dans le tableau de bord. Cherchez ensuite des dates user_registered récentes et des domaines d'e-mail qui n'appartiennent à personne avec qui vous travaillez. Un administrateur caché ou inexpliqué est le signe d'une compromission, pas une simple tâche de nettoyage. Ne vous contentez pas de le supprimer : suivez les étapes de l'article sur les signes qu'un site WordPress a été piraté.
L'analyse des indicateurs de compromission de l'extension secaudit.eu recherche les administrateurs cachés dans le cadre de son audit.
Une revue d'accès trimestrielle pour les preuves NIS 2 et RGPD
Une revue prend environ 15 minutes. Faites-la chaque trimestre, ainsi qu'à chaque départ d'un collaborateur ou changement de contrat avec une agence :
- Exporter la liste des administrateurs (et des Super Admins en multisite).
- Confirmer la personne et le rôle de chaque compte. Rétrograder ou supprimer les autres.
- Vérifier les rôles ajoutés par les extensions, comme Gestionnaire de boutique.
- Lister et nettoyer les mots de passe d'application de chaque administrateur.
- Confirmer que tous les administrateurs utilisent l'authentification à deux facteurs.
- Confirmer que l'éditeur de fichiers du tableau de bord est désactivé.
- Consigner la date, la personne qui a fait la revue et ce que vous avez modifié.
Cette dernière trace transforme une habitude en preuve. L'art. 21, paragraphe 2, point i), de la directive NIS 2 cite la sécurité des ressources humaines, le contrôle d'accès et la gestion des actifs parmi les mesures minimales (directive (UE) 2022/2555). Les obligations concrètes découlent de la transposition dans chaque pays : consultez donc la loi nationale de transposition de la directive NIS 2. Au titre du RGPD, le contrôle d'accès relève des « mesures techniques et organisationnelles appropriées » de l'art. 32, et l'art. 5, paragraphe 2, exige que vous puissiez en démontrer le respect (règlement (UE) 2016/679).
Une limite à garder en tête : le noyau de WordPress n'enregistre pas la date de dernière connexion d'un utilisateur. Pour repérer les comptes dormants, il faut une extension de journal d'activité ou les journaux d'accès de votre serveur. À défaut, demandez directement aux personnes concernées.
L'extension Security Audit & Compliance de secaudit.eu aide pour la partie récurrente. Elle signale les administrateurs cachés, les mots de passe faibles ou par défaut et les lacunes de durcissement comme un éditeur de fichiers activé, rattache les constats à l'art. 32 du RGPD et à l'art. 21 de la directive NIS 2, et exporte un rapport que vous pouvez classer avec vos notes de revue.
FAQ
Renommer le nom d'utilisateur « admin » suffit-il à bloquer les attaques ?
Non. Cela supprime une hypothèse facile, mais les noms d'utilisateur peuvent souvent être découverts autrement. Des mots de passe forts et uniques, ainsi que l'authentification à deux facteurs, protègent bien davantage.
Une agence peut-elle partager un seul identifiant admin entre ses collaborateurs ?
Non. Chaque personne doit avoir un compte nominatif, afin que vous voyiez qui a fait quoi et puissiez retirer l'accès d'une personne sans toucher aux autres.
Que deviennent les commandes WooCommerce ou les articles quand je supprime un utilisateur ?
Les articles et les pages sont supprimés si vous ne les réattribuez pas. Les extensions stockent leurs propres données de manières différentes : consultez la documentation de l'extension avant de supprimer des comptes de clients ou de personnel de la boutique. En cas de doute, rétrogradez d'abord le compte.
Cet article est une information générale et ne constitue pas un conseil juridique.
Vérifiez votre propre site
Security Audit & Compliance est l’extension WordPress de secaudit.eu : elle recherche les logiciels malveillants, le spam caché, les fichiers du cœur modifiés et le code vulnérable, et rattache ses constats à l’article 32 du RGPD, à l’article 21 de NIS2 et à l’OWASP Top 10.
Voir ce que vérifie l’extension