/

Comment sécuriser son site WordPress sans plugin ? [2023]

La sécurité d’un site web est un aspect essentiel pour tout propriétaire de site WordPress. Bien que de nombreux plugins puissent vous aider à renforcer la sécurité, il existe également de nombreuses étapes que vous pouvez suivre pour sécuriser votre site sans avoir à recourir à des extensions tierces. Dans cet article, nous allons explorer diverses méthodes pour renforcer la sécurité de votre site WordPress.

Prendre soin de la sécurité de son site est un combat constant d’autant plus lorsqu’on utilise le CMS WordPress. Non pas qu’il soit plus vulnérable mais car sa popularité fait de lui une proie prisée des pirates et robots malveillants. Bien que de nombreux plugins puissent vous aider à renforcer la sécurité, il existe également de nombreuses étapes que vous pouvez suivre pour sécuriser votre site sans avoir à recourir à des extensions tierces. Dans cet article, nous allons explorer diverses méthodes pour renforcer la sécurité de votre site internet WordPress grâce à quelques astuces et un peu de code.

Attention, dans cet article, nous ne vous conseillons pas de ne pas installer de plugin pour améliorer la sécurité de votre site WordPress, nous vous proposons seulement des possibilités différentes. De plus, si vous n’avez pas de connaissances techniques, évitez de copier des morceaux de code que vous ne comprenez pas. Notez également que ces snippets de code pourraient entrer en conflit avec certains plugins de sécurité, soyez donc sûr de ce que vous faites (et faites une sauvegarde du site avant toute modification).

Choix d’un mot de passe sécurisé et nom d’administrateur connu

Le premier et le plus simple moyen de sécuriser votre site WordPress est de choisir un mot de passe robuste pour votre compte administrateur. Assurez-vous d’utiliser une combinaison de lettres majuscules et minuscules, de chiffres et de caractères spéciaux. Évitez les mots de passe faciles à deviner et les mots de passe courts. Plus votre mot de passe est long, plus il sera compliqué à compromettre.

De plus, évitez d’utiliser l’identifiant par défaut « admin » comme nom d’administrateur. Créez un nom d’utilisateur unique pour votre compte administrateur.

Ne jamais fournir ses codes d’accès

Cela peut sembler évident, mais il est crucial de ne jamais partager vos identifiants de connexion avec qui que ce soit, sauf si c’est absolument nécessaire. Même un ami ou un collègue de confiance ne devrait pas avoir accès à votre compte administrateur.

Si vous devez absolument fournir vos accès administrateur, essayez de ne pas envoyer votre identifiant et votre mot de passe via le même mode de communication. Envoyez par exemple l’un par email et l’autre par SMS ou par téléphone.

Vous pouvez également utiliser des outils de partage de données sensibles comme One Time Secret ou Reveal It (by Secupress)

Gérer correctement vos comptes utilisateurs

Gestion des utilisateurs avec des privilèges minimaux

Lorsque vous gérez un site WordPress, il est important de ne pas attribuer des privilèges administratifs à plus de personnes que nécessaire. Les utilisateurs avec des privilèges administratifs ont un contrôle total sur le site, y compris la capacité de modifier les paramètres, les thèmes, les plugins et même de supprimer du contenu.
Pour améliorer la sécurité de votre site, suivez ces bonnes pratiques :

  • Utilisez le niveau d’accès approprié : Attribuez des rôles d’utilisateur en fonction des besoins de chaque personne. Par exemple, si quelqu’un ne doit que publier du contenu, attribuez-lui le rôle de « Contributeur » ou « Auteur » plutôt que « Administrateur ».
  • Limitez l’accès à l’administration : N’accordez l’accès à l’interface d’administration qu’aux utilisateurs qui en ont réellement besoin. Les utilisateurs avec des rôles de niveau inférieur n’ont pas besoin d’accéder à l’administration.
  • Révisez les privilèges régulièrement : Passez en revue les utilisateurs et leurs privilèges périodiquement. Révoquez les privilèges d’accès si un utilisateur n’en a plus besoin.
  • Utilisez un compte administrateur principal : Si possible, utilisez un seul compte administrateur principal pour la gestion du site. Cela limite le nombre de comptes avec des privilèges étendus

Suppression des comptes inactifs

Les comptes inactifs représentent un risque potentiel pour la sécurité de votre site. Un compte inactif pourrait être compromis sans que personne ne le sache. Supprimez donc les comptes inactifs lorsque vous le pouvez.

Désactiver l’édition de fichiers dans l’administration

Pour éviter que des utilisateurs non autorisés n’éditent des fichiers sensibles, vous pouvez désactiver l’éditeur de fichiers dans l’interface d’administration en ajoutant cette ligne à votre fichier wp-config.php :

PHP
                    /**
 * Disallow file edit in WordPress admin
 */
define('DISALLOW_FILE_EDIT', true);
                

Cacher la version de votre WordPress

WordPress inclut par défaut sa version dans le code source HTML de votre site. Les attaquants peuvent utiliser cette information pour cibler des vulnérabilités spécifiques à une version donnée. Vous pouvez masquer la version de WordPress en ajoutant le code suivant dans votre fichier functions.php (présent à la racine de votre thème) :

PHP
                    /**
 * Remove WordPress version in head generator meta
 */
remove_action('wp_head', 'wp_generator');
                
piratage-wordpress

Empêcher les appels XMLRPC

L’API XML-RPC de WordPress peut être utilisée à des fins malveillantes. Vous pouvez la désactiver en ajoutant le code suivant dans votre fichier functions.php (présent à la racine de votre thème) :

PHP
                    /**
 * Disable XMLRPC
 */
add_filter('xmlrpc_enabled', '__return_false');
                

Protection contre le DDOS

Vous pouvez également protéger votre WordPress contre les attaques par déni de service distribué (DDoS) qui peuvent submerger votre serveur avec un trafic excessif, entraînant une indisponibilité du site. Une attaque DDoS vise à perturber la disponibilité du site en le submergeant de trafic, le rendant inaccessible aux utilisateurs légitimes.

Pour mettre en place une protection contre les attaques DDoS, vous avez deux options principales :

  • Avec l’aide de votre hébergeur : De nombreux hébergeurs proposent des services de protection contre les DDoS. Contactez votre hébergeur pour vous informer sur les solutions de sécurité qu’ils proposent et mettez-les en place si nécessaire.
  • Utilisation de services tiers de sécurité : Vous pouvez également envisager d’utiliser des services tiers de sécurité contre les DDoS, tels que Cloudflare ou Sucuri, qui sont conçus pour atténuer les attaques DDoS avant qu’elles n’atteignent votre site.

Restrictions au niveau du HTACCESS

Le fichier htaccess mis en place par WordPress peut également servir à protéger votre site internet.
Il permet notamment de mettre un ensemble de règles populaires telles que celles proposées par 7G Firewall

Gardez bien en tête que ces règles peuvent créer des effets de bords si elles ne sont pas maitrisées

Supprimer l’accès à l’API si elle n’est pas utilisée

WordPress utilise diverses API pour des fonctionnalités telles que les commentaires, les pingbacks, etc. Si vous n’utilisez pas ces fonctionnalités, il est recommandé de les désactiver. Vous pouvez le faire en ajoutant le code suivant dans votre fichier functions.php (présent à la racine de votre thème) :

PHP
                    /**
 * Disable entire REST API
 */
add_filter( 'rest_authentication_errors', function( $access ) {
	return new WP_Error( 'rest_disabled', __( 'The WordPress REST API has been disabled.' ), array( 'status' => rest_authorization_required_code() ) );
} );
                

Si l’API vous est utile, vous devez à minima supprimer le noeud qui expose vos utilisateurs.
En effet, la liste de vos utilisateurs est visible par défaut dans l’API et c’est très risqué pour la sécurité de votre site, ça permet aux attaquants de connaître votre identifiant.

Voici un snippet pour désactiver ce noeud :

PHP
                    /**
 * Remove user list endpoint from rest api
 */
add_filter( 'rest_endpoints', 'disable_custom_rest_endpoints' );
function disable_custom_rest_endpoints( $endpoints ) {
    
    if ( isset( $endpoints['/wp/v2/users'] ) ) {
        unset( $endpoints['/wp/v2/users'] );
    }
    if ( isset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] ) ) {
        unset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] );
    }

    return $endpoints;
}
                

Mettre à jour ses plugins et le core de WordPress

La quasi majorité des piratages WordPress ont lieu à cause de plugins non mis à jour ou des versions obsolètes de WordPress. Il est de votre devoir de toujours mettre à jour vos plugins ainsi que le core de WordPress pour éviter d’exposer des failles de sécurités connues sur votre site internet. Les éditeurs de plugins ainsi que les contributeurs WordPress communiquent souvent sur des failles de sécurité découvertes et critiques, vous devez donc rester informé et mettre à jour régulièrement.

mise-a-jour-wordpress-securite

Renommer le préfixe des tables de la base de données

Lors de l’installation de WordPress, le CMS génère un préfixe par défaut pour les tables de la base de données, généralement « wp_ ». Vous pouvez le changer lors de l’installation pour quelque chose de plus unique pour renforcer la sécurité. En effet lors de certaines attaques, les robots ou attaquants tentent d’obtenir ou de modifier des informations de votre base de données. Si ils connaissent le nom de vos tables, c’est plus facile pour eux. À contrario, si vous choisissez un prefixe unique, il sera impossible pour eux d’exploiter certaines failles.

Bien choisir ses plugins

Les plugins étant l’une des premières portes d’entrée pour les pirates, veuillez à être vigilant lorsque vous choisissez des plugins pour votre site WordPress. Assurez-vous qu’ils sont régulièrement mis à jour par leurs développeurs et qu’ils ont de bonnes critiques. Évitez les plugins obsolètes ou non maintenus. Préférez les plugins approuvés par la communauté et n’installez pas de plugins qui n’auraient pas d’intérêt pour votre site ou dont vous ne comprenez pas le fonctionnement.

Empêcher le brute force

Le brute force consiste à tester une combinaison de mots de passe sur votre site à partir d’un script afin de trouver le bon mot de passe. Les attaquants se basent le plus régulièrement sur des dictionnaires de mots de passe leur permettant de tester des milliers (centaines de milliers même) de password. En utilisant un mot de passe compliqué comme nous avons vu plus haut, l’accès ne sera jamais compromis, cependant il n’est jamais plaisant de subir des attaques de la sorte car ils ralentissent votre site internet.

Pour empêcher l’attaque par brute force, vous avez plusieurs possibilités :

Restreindre l’accès à la connexion admin à une seule ou plusieurs adresse(s) IP : ce qui empêchera les attaquants d’accéder à votre formulaire de connexion. Pour celà vous devez ajouter ceci à votre fichier .htaccess (xx.xx.xx.xx étant votre adresse IP) :

                    <Files wp-login.php>
  Order Deny,Allow
  Deny from all
  Allow from xx.xx.xx.xx
</Files>
                

Mettre en place un snippet permettant de bloquer un utilisateur via son IP au bout de X tentatives de connexion pendant une durée de X secondes
Ajouter ce code dans votre fichier .htaccess
$failed_login_limit permet de définir le nombre de tentative de connexion
$blocked_time permet de définir la durée durant laquelle l’utilisateur sera bloqué une fois les tentatives atteintes (en secondes).

Empêcher l’accès au dossier uploads et autres dossiers sensibles

Il est toujours bon de restreindre un maximum l’accés à fichiers et dossiers de votre site pour éviter les failles de sécurité ainsi que le vol de certaines données sensibles. Vous pouvez empêcher l’accès aux dossiers sensibles, tels que le dossier « uploads », en ajoutant cette ligne dans votre fichier .htaccess :

Vérifier si votre hébergeur ne le fait pas déjà en vous rendant à l’URL suivante url-de-votre-site/wp-content/uploads/

restreindre-access-uploads
.htaccess
                    Options - Indexes
                
PHP
                    <?php
add_action('wp_login_failed', function(){
	$failed_login_limit  = 2;
	$blocked_time        = 60; // in seconds
	if ( !isset($_COOKIE['wordpress_failed_logins']) ) {
		setcookie('wordpress_failed_logins', 1, time()+$blocked_time*60*24);
	} else {
		$failed_logins = intval($_COOKIE['wordpress_failed_logins']) + 1;
		if ( $failed_logins >= $failed_login_limit ) {
			$user_ip = $_SERVER['REMOTE_ADDR'];
			$htaccess_file = ABSPATH.'.htaccess';
			$existing_content = @file_get_contents($htaccess_file) ;
			$new_content = "# Block user after $failed_login_limit failed login attempts\n";
			$new_content .= "order deny,allow\n";
			$new_content .= "deny from $user_ip\n\n";
			if ( $existing_content ) {
				$new_content .= $existing_content;
			}
			file_put_contents($htaccess_file, $new_content);
		}
		setcookie('wordpress_failed_logins', $failed_logins, time()+$blocked_time*60*24);
	}
});
                

Changer le lien d’administration

Par défaut, le lien d’administration de WordPress est « /wp-admin ». Il est donc connu de tous, ce qui n’est pas bon pour la sécurité de votre site. Vous devez changer cette url en utilisant un slug personnalisé pour l’accès au panneau d’administration. Cela rendra plus difficile pour les attaquants de trouver la page de connexion.

Comme il faut pas mal de code pour réaliser cette modification (il ne faut oublier aucun lien sur votre site ainsi que dans les emails), nous ferons une exception ici en utilisant le plugin WPS Hide Login (dans le cas ou vous utiliseriez pas un plugin de sécurité qui propose déjà cette fonctionnalité)

Choix de l’hébergeur

Choisissez un hébergeur fiable qui offre des mesures de sécurité robustes. Un bon hébergeur peut grandement contribuer à la sécurité de votre site WordPress. Évitez donc les petits hébergeurs récents ou les hébergements gratuits au risque de voir votre site piraté malgré toutes les mesures que vous pourrez mettre en place pour améliorer la sécurité de votre site internet.

Chez Undefined, nous utilisons Faaaster, un hébergeur français spécialisé dans l’hébergement WordPress et qui met à un point d’honneur à garantir la sécurité des sites internet qu’il héberge.

Chiffrement des données et communications

Activez le SSL (certificat SSL) sur votre site pour chiffrer les communications entre le serveur et les navigateurs. De plus, vous pouvez ajouter la constante FORCE_SSL_ADMIN à votre fichier wp-config.php pour forcer l’utilisation du protocole HTTPS pour l’administration de WordPress.

Si votre site stocke des données sensibles, assurez-vous de les chiffrer correctement. Envisagez d’utiliser des outils de cryptage pour les données sensibles stockées dans la base de données.

Limitez les informations fournies dans les erreurs de connexion

Parfois, WordPress affiche un message d’erreur indiquant que le mot de passe ne correspond pas à un identifiant donné lorsqu’un utilisateur saisit un mot de passe incorrect. Vous pouvez désactiver ce message d’erreur en ajoutant le code suivant dans votre fichier functions.php (présent à la racine de votre thème) :

PHP
                    add_filter( 'login_errors', function() {
    return 'Identifiants incorrects';
});
                

Sécurisez vos formulaires

Les formulaires mal sécurisés peuvent également devenir une porte d’entrée pour les attaquants. Ceux-ci exploitant des failles de sécurité vieilles comme le monde (de l’internet) pour accéder à votre base de données, déposer des fichiers sur votre site ou piéger vos utilisateurs. Voici quelques mesures que vous pouvez prendre pour sécuriser les formulaires de votre site WordPress.

Privilégiez la validation côté serveur

La validation côté serveur est une étape cruciale pour garantir la sécurité de vos formulaires. Même si la validation côté client (utilisée par JavaScript) peut améliorer l’expérience de l’utilisateur en signalant rapidement les erreurs, elle ne doit pas être considérée comme la seule ligne de défense. La validation côté serveur doit toujours être effectuée pour éviter que des données incorrectes ou malveillantes ne soient acceptées.

Sécurisez vos formulaires

Mettez en place des mécanismes de protection contre le spam ainsi que le brute force (vu plus haut) et si possible utilisez des mécanismes de token anti-CSRF pour valider vos formulaires.
Pour le spam, vous pouvez opter pour la mise en place de reCAPTCHA qui permet de détecter les soumissions par des robots.

Filtrez et échappez les données

Lorsque vous traitez les données soumises via des formulaires, assurez-vous de les filtrer et de les échapper correctement pour éviter les attaques XSS (Cross-Site Scripting) et les injections SQL. Utilisez les fonctions de sécurité fournies par WordPress telles que sanitize_text_field() pour nettoyer les entrées utilisateur.

Vous pouvez également utiliser des plugins pour créer vos formulaires (comme Gravity Forms) et vous assurez qu’ils soient sécurisés.

Activer WAF (Firewall d’application web)

Un pare-feu d’application Web (WAF) peut aider à bloquer les attaques communes contre votre site WordPress en filtrant le trafic malveillant. De nombreux hébergeurs proposent des solutions de WAF intégrées.
Si vous avez des compétences techniques avancées, envisagez de mettre en place un pare-feu applicatif Web personnalisé pour votre site WordPress qui vous permettra de renforcer considérablement la sécurité de votre site WordPress sans avoir besoin de plugins supplémentaires.

Formation des utilisateurs

Si vous n’êtes pas seul à utiliser votre site internet, fournissez une formation de base sur la sécurité en ligne à tous les utilisateurs autorisés à accéder à l’administration de votre site. Cela peut les sensibiliser aux bonnes pratiques de sécurité et réduire les risques liés à des erreurs humaines (bien trop souvent à l’origine de piratages)

Surveillance de la sécurité en temps réel

Utilisez un service de surveillance de la sécurité en temps réel pour détecter les menaces potentielles et les activités suspectes sur votre site. Cela peut vous alerter rapidement en cas d’incident de sécurité.

Surveillance des journaux d’accès

En plus de ces mesures de protection, restez vigilant notamment en examinant régulièrement les journaux d’accès de votre site pour détecter les activités suspectes ou les tentatives d’intrusion. Les journaux peuvent fournir des informations précieuses pour identifier les problèmes de sécurité potentiels.

Test de pénétration et de vulnérabilité

Vous pouvez éventuellement engagez des professionnels en sécurité informatique pour effectuer des tests de pénétration réguliers de votre site. Cela peut aider à identifier les vulnérabilités que vous pourriez avoir manquées.

vulnerabilite-wordpress

Faire des sauvegardes régulières

Enfin, réalisez des sauvegardes régulières, cela ne vous protégera pas des attaques mais si votre site venait à être compromis, avoir une sauvegarde récente peut vous permettre de restaurer votre site rapidement et de vous sortir du pétrin.

Les hébergeurs récents proposent souvent des sauvegardes automatiques mais il est toujours conseillé de doubler les sauvegardes pour éviter les mauvaises surprises au moment de restaurer une sauvegarde. Pour cela, vous pouvez faire des sauvegardes manuelles régulières ou utiliser un plugin qui s’occupera de faire les sauvegardes pour vous.

Conclusion

En conclusion, la sécurité de votre site WordPress est une priorité incontournable pour garantir la pérennité de votre site internet et la protection des données sensibles de votre site et de ses utilisateurs. Ce que nous avons exploré dans cet article démontre qu’il est tout à fait possible de renforcer la sécurité de votre site sans avoir recours à un plugin de sécurité même si cela demande parfois quelques connaissances techniques.

Il est essentiel de prendre au sérieux la sécurité de votre site et de rester informé des dernières menaces et des meilleures pratiques en matière de sécurité web. Chaque mesure que vous prenez pour renforcer la sécurité de votre site contribue à le rendre plus robuste face aux menaces en ligne. N’oubliez pas que la sécurité est un processus continu, et chaque effort que vous investissez dans la protection de votre site WordPress en vaut la peine. Commencez dès aujourd’hui à sécuriser votre site, et rappelez-vous que chaque petite étape compte pour renforcer la protection de votre vitrine en ligne.

Article rédigé par
Nicolas RIVIERE
Expert WordPress

Vous cherchez un prestataire pour sécuriser votre site internet ?

En tant que studio de développement WordPress spécialisé, nous mettons notre expertise à votre service pour créer, sécuriser et optimiser votre site web. Forts d’une expérience approfondie dans le domaine, nous sommes déterminés à vous offrir des solutions WordPress sur mesure, adaptées à vos besoins spécifiques.

Lien copié dans le presse papier