Protéger son site wordpress avec une version statique

Si vous avez déployé un site Wordpress pour un événement ponctuel ou bien si ce site Wordpress évolue très peu dans le temps (page personnelle, etc.), il est pertinent d’en proposer une version statique sur Internet (c’est à dire des pages HTML non modifiables) afin de le rendre robuste aux tentatives de piratage très courantes sur les sites de type CMS.

(Dans la documentation suivante, on s’appuie sur un site déployé avec PLMshift : Site Wordpress - Documentation Technique de PLMshift)

Pour cela, il suffit de réaliser les étapes suivantes:

  1. activez les mises à jour automatique de Wordpress ainsi que des plugins et thèmes

  2. installez le plugin simply-static à configurer de la façon suivante:

    • cochez Use absolute URL et mettez l’URL de votre site
    • choisissez la méthode répertoire local
    • donnez comme répertoire local : /opt/app-root/src/static
    • générez le site statique

Ainsi vous aurez une version de votre site dans le dossier static de votre site web : vous pouvez le vérifier en parcourant votre site sous l’URL https://monwordpress.math.cnrs.fr/static

  1. Ensuite, il vous faut une version éditable de votre site:

    • créez une Route supplémentaire (comme par exemple monsite-protege.apps.math.cnrs.fr) à l’identique de la Route principale (Service de votre wordpress, port 8080), TLS terminaison : edge, Insecure traffic : Redirect
    • sur la page des préférences : réglage général de votre wordpress mettez l’url de votre nouvelle Route comme site Wordpress et URL Wordpress
    • éditez la Route principale (celle que vous voulez exposer en mode statique) en ajoutant simplement l’annotation suivante : haproxy.router.openshift.io/rewrite-target: /static
  2. Et enfin, limitez l’accès au Wordpress, afin de garantir que votre CMS ne sera pas accessible par des utilisateurs malveillants:

    • créez un fichier .htpasswd avec un indentifiant et mot de passe de votre choix : Dans un terminal de votre Pod Wordpress, tapez : htpasswd -bc .htpasswd mon_login mon_mot_de_passe
    • ajouter la configuration nécessaire pour le serveur web Apache :
$ echo <<< EOF >> .htaccess

IndexIgnore *

<IF "%{REQUEST_URI} =~ m#^/static# || -z req('X-Forwarded-For') "> 
    Require all granted
</IF>
<ELSE>
    AuthType Basic
    AuthName "Site de redaction - acces limite"
    AuthUserFile /opt/app-root/src/.htpasswd
    Require valid-user
</ELSE>
EOF

Maintenant l’accès à la Route protégée nécessite l’identifiant et mot de passe mis dans .htpasswd et le site statique est accessible à tout le monde.

A chaque nouvelle édition de votre site, pensez à aller sur le plugin simply-static pour régénérer une version statique à jour de votre site. Au préalable, il faut que vous configuriez l’identifiant et le mot de passe que vous avez mis en place à l’étape 4 dans la partie “Avancé” (HTTP Basic Authentication) des réglages de Simply Static.