Sécurité : passer de D/E à B avec Secupress

Publié le Publié dans Développement, Wordpress

Secupress est un plugin WordPress de sécurité prenium. Sa version basique est gratuite et permet une défense suffisante. Ce plugin scanne votre site, identifie 35 points de sécurité et vous attribue une note qui représente l'état de santé de votre site. Juste après l'installation du plugin, on obtient une note de D... Mais alors comment passer à la note honorable de B ? (sachant que le A n'est accessible que si vous passez en prenium).

Pré-requis

Pour mon tutoriel, je suis partie d'un WordPress tout neuf en version 4.7.2-fr_FR. Installation de base, je me suis même laissée aller à utiliser le préfixe de base de WordPress, ce qui est prohibé normalement.

Logo de Secupress
Logo de Secupress

Installation du plugin

Comme tout les plugins, depuis la page d'ajout d'extensions de WordPress, je recherche notre plugin Secupress, l'installe et l'active.

Installation et activation de Secupress

 

 

 

 

Une fois activé, Secupress nous propose de "Scanner" notre site. Alors ne perdons pas une minute, et découvrons ce scan (et surtout notre note).

Il est possible que lors du premiers scan, notre note soit inférieur à E ou D. N'hésitez pas à le relancer, il devrait vous afficher une note de E ou D.

Ok mais maintenant ? Comment j'améliore ça ?

Résultats du Scanners de Secupress

Notre première étape : la correction automatique !

Et oui, le plugin nous fourni une correction automatique ! Donc en cliquant sur le bouton "Prochaine étape", on nous propose certaines corrections. Parcourons ensemble ce qui nous ait proposé (je ne vais m'intéresser qu'aux corrections gratuites) :

Utilisateurs & Login

  • Cache les erreurs sur la page de connexion pour éviter d'être lues pas des attaquants : et oui, lorsqu'on essaye de se connecter et que l'on se trompe dans le mot de passe ou le login, WordPress nous le signale. Du coup, le petit méchant pirate qui essaye d'avoir accès à notre administration sait ce qui est faux. Donc pour nous aider, Secupress va modifier ce message pour y mettre quelque chose de moins parlant.

Coeur de WordPress

  • Ajoutez quelques constantes PHP dans votre fichier wp-config.php pour améliorer la sécurité de votre site :
  • Crée un plugin automatique pour remplacer vos clés actuelles stockées dans le fichier wp-config.php ou en base de données pour le mettre encore plus en sécurité : Secupress va créer un "Must-Use Plugins",  pour résumé c'est un plugin qui ne peut être désinstallé et qui est chargé avant tout autre plugin. Idéal pour y enregistrer nos clés, puisqu'il sera enregistré dans un dossier spécifique que l'on pourra protégé.

Données sensibles

  • Active la protection Divulgation de la version de WordPress et/ou la protection Divulgation de la version de PHP du module Données sensibles : on va masquer la version de WordPress, car les petits méchants pirates savent, en fonction de votre version de WordPress, comment vous attaquer.

Scanner de virus

  • Change les permissions sur les fichiers avec ce qui est recommandé pour chacun : certains fichiers n'ont pas besoin d'être accessible en écriture, donc on va les protéger pour éviter que les petits méchants pirates n'aillent les modifier.
  • Active la protection Directory Listing du module Données sensibles : on va bloquer la possibilité de lister nos répertoires, les petits méchants pirates n'ont pas à savoir ce qu'on y met.

Pare-feu

Les étapes de ces corrections, on active les options le blocage pour :

  • les mauvais User Agents du module Pare-feu
  • les mauvais contenus du module Pare-feu
  • les mauvaises méthodes de requête du module Pare-feu
  • les longues URLs du module Pare-feu
  • les longues URLs du module Pare-feu
  • et on active la protection Accès aux mauvaises URLs du module Données sensibles

 

Corrections

Après que Secupress ait corrigé certains points, il nous propose de corriger manuellement d'autres problèmes.

A partir de là, il va nous falloir quelques compétences en développement.

Correction en cours de Secupress

Petit à petit, la sécurité fait son nid !

Il suffit de suivre les étapes proposées, vérifiez si :

  • vous utilisez des plugins qui ont été supprimés du dépôt officiel ou non mis à jour depuis deux ans au moins : dans le cas d'une installation neuve, on a juste à supprimer le plugin de démonstration Hello Dolly. Dans les autres cas, vérifier bien les plugins que l'on vous propose de supprimer.
  • vous avez des plugins ou thèmes désactivés : si vos plugins ou thèmes sont désactivés, c'est que vous n'en avez pas besoin, n'est-ce pas ? Sauf dans le cas où l'un des thèmes est le thème parent de votre site, vous pouvez supprimez les thèmes que vous n'utilisez pas ainsi que les plugins.
  • le préfixe des tables de votre base de données est correct : dans mon cas, j'ai demandé à l'installation à utiliser le préfixe par défaut pour les tables de la base de données. Grossière erreur, mais qui peut être corrigé maintenant ! Mais n'oubliez pas de sauvegarder votre base de données avant de faire cette correction.
  • votre site divulgue la version de WordPress et la version PHP du serveur : on me propose dans mon cas de ne pas rendre accessible le fichier  readme.html, et bien je vais tout simplement le supprimer. Il ne me sert à rien, donc directement à la poubelle !
  • vos fichiers et dossiers on les droits adéquat (chmod) : ici il va falloir jouer avec les droits des dossiers et fichiers, n'hésitez pas à lire mon article que explique comment modifier les droits des fichiers et dossiers de WordPress.
  • votre page de connexion est protégée par une double authentification : pour comprendre comment fonctionne la double authentification, allez faire un tour par ici => Activer la double authentification
  • des fichiers avec de mauvaises extensions sont accessibles dans votre dossier des uploads : pour cela il faut ajouter les lignes suivantes dans notre fichier htaccess :
### INTERDIRE LES AUTRES TYPES DE FICHIER INDEX
<Files ~ "^(index).(p?s?x?htm?|txt|aspx?|cfml?|cgi|pl|php[3-9]|jsp|xml)$">
order allow,deny
deny from all
</Files>

### INTERDIRE L'AFFICHAGE DE CERTAINS FORMATS DE FICHIER
### EXÉCUTÉS PAR LE SERVEUR MAIS INTERDIT D'AFFICHAGE PAR LE NAVIGATEUR WEB
<Files ~ ".(inc|class|sql|ini|conf|exe|dll|bin|tpl|bkp|dat|c|h|py|spd|theme|module)$">
deny from all
</Files>


### INTERDIRE L'AFFICHAGE DE CERTAINS FICHIERS COMME config, option, login, setup, install, admin.
### A ADAPTER SI CELA POSE PROBLEME
<Files ~ "^(install?|(wp-)?config(.inc)?|configure|configuration|login|logging|options?.inc|option|settings?(.inc)?|functions?(.inc)?|setup(.inc)?|default|home|main|errors?|members?|hacke?r?d?|[-_a-z0-9.]*mafia[-_a-z0-9.]*|[-_a-z0-9.]*power[-_a-z0-9.]*|[-_a-z0-9.]*jihad[-_a-z0-9.]*|php|shell|ssh|root|cmd|[0-9]{1,6}|test|data).(p?s?x?htm?l?|txt|aspx?|cfml?|cgi|pl|php[3-9]{0,1}|jsp?|sql|xml)$">
order allow,deny
deny from all
</Files>
</Files>

Notre résultat : un magnifique B !

Résultats des corrections de Secupress

Et voilà, nous sommes passer à une honorable note de B pour notre sécurité.