Sécuriser l’installation de Matomo
Dans ce chapitre, nous allons aborder la sécurité de Matomo. Je vous donnerai quelques pistes pour sécuriser votre installation et pouvoir surveiller son activité. Nous utiliserons certains plug-ins pour sécuriser Matomo, et nous verrons aussi comment passer sur du HTTPS.
Lorsque nous avons mis en place Matomo, nous avons pris soin de lui dédier un utilisateur MySQL et une base de données, c’est qui est recommandé en matière de sécurité.
Sommaire
I. Le plug-in « Security-Info »
Ce plug-in ne va pas sécuriser de lui-même votre instance Matomo, mais il va analyser votre configuration et vous indiquer s’il y a des choses à corriger. Ces recommandations sont basées sur les meilleures pratiques.
Il est disponible gratuitement sur GitHub : https://github.com/matomo-org/plugin-SecurityInfo/releases
Pour réaliser l’installation, connectez-vous en SSH sur votre serveur, et exécutez les commandes suivantes :
# Se placer dans le dossier des plug-ins
cd /var/www/piwik/plugins/
# Télécharger les sources
wget https://plugins.matomo.org/api/2.0/plugins/SecurityInfo/download/3.0.6
# Renommer le fichier pour ajouter l’extension ZIP
mv 3.0.6 3.0.6.zip
# Décompresser l’archive ZIP, un dossier « SecurityInfo » sera créé
unzip 3.0.6.zip
# Supprimer l’archive
rm 3.0.5.zip
# Attribuer le bon propriétaire et les bons droits
chown www-data:www-data SecurityInfo/ -R
chmod 750 SecurityInfo/ -R
Maintenant, sur l’interface Matomo, on va pouvoir retrouver notre plug-in : Paramètres > Système > Plugins.
Dans la liste, vous allez voir « SecurityInfo » : cliquez sur « Activer ».
Suite à l’activation du plug-in, sur le menu à gauche sous « Diagnostic » vous aurez « Sécurité ».
Le plug-in va vérifier la valeur et l’état de différentes options, lorsque c’est vert c’est tout bon ! Sinon, prêtez attention aux points remontés.
II. Désactiver les plug-ins inutiles
De base, Matomo intègre une grande quantité de plug-ins qui lui permettent d’avoir ses fonctionnalités natives. Certains plug-ins ne vous seront pas utiles, par exemple le plug-in « Ecommerce » est utile seulement si vous avez un site de e-commerce.
Je vous encourage à désactiver les plug-ins non utilisés, si vous avez un doute, testez ! Pour désactiver un plug-in : Paramètres > Système > Plugins et cliquez sur « Désactiver » sur la ligne du plug-in.
III. Forcer le HTTPS pour Matomo
De base, Matomo est capable d’écouter en http ou en HTTPS, voire même les deux. Pour des raisons de sécurité, il vaut mieux le forcer en HTTPS intégralement. Ceci va également permettre de sécuriser le flux entre le site Internet pour lequel vous mesurez l’audience et Matomo lui-même.
Pour que Matomo soit accessible en HTTPS, n’oubliez pas de modifier la configuration de votre serveur web, pour que le site dédié à Matomo soit accessible sur ce protocole. Pour Apache, voici un exemple de configuration pour déclarer un site HTTPS, ici l’exemple est adapté pour Matomo :
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName stats.it-connect.fr
DocumentRoot "/var/www/piwik"
DirectoryIndex index.html index.htm index.php default.php
ServerAlias stats.it-connect.fr
RewriteEngine On
SSLEngine on
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
SSLCertificateFile /var/www/certificats/stats.it-connect.fr.crt
SSLCertificateKeyFile /var/www/certificats/stats.it-connect.fr.key
SSLCertificateChainFile /var/www/certificats/stats.it-connect.fr.ssl.pem
<Directory "/var/www/piwik">
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride all
Order allow,deny
Allow from all
</Directory>
Pour ceux qui n’ont pas suivi l’installation de Matomo dans le chapitre précédent, je vous invite à le lire : installation de Matomo.
Remarque : Vous devrez obtenir un certificat SSL pour que le HTTPS fonctionne, au mieux un certificat reconnut par les navigateurs (à minima Let’s Encrypt) ou alors, au pire, un certificat autosigné, mais il ne sera pas reconnu, car il n’émane pas d’une autorité de certification.
Ensuite, pour forcer Matomo à utiliser le HTTPS, il faut modifier le fichier de configuration « config.ini.php » de Matomo :
nano /var/www/piwik/config/config.ini.php
Sous la section « Général », vous devez définir cette option :
[general]
force_ssl = 1
Ainsi, Matomo va rediriger automatiquement le flux http vers HTTPS.
IV. Protéger Matomo avec un fichier .htaccess
Vos visiteurs ont seulement besoin d’accéder à trois choses :
- Le fichier piwik.js
- Le fichier piwik.php
- L’URL « index.php?module=CoreAdminHome&action=optOut » pour gérer l’opt-in et l’opt-out sur votre page de confidentialité
Ajoutez à cela l’autorisation nécessaire au moteur de recherches sur le fichier « robots.txt ». Pour le reste, vos visiteurs n’ont pas besoin d’y avoir accès, à commencer par la page de connexion, etc.
Pour parvenir à effectuer cette configuration, le plus simple c’est de créer un fichier « .htaccess » où l’on va déclarer nos règles.
Créez ce fichier à la racine du dossier « /var/www/piwik » et éditez-le.
Nous allons tout d’abord ajouter un bloc pour indiquer que l’accès est refusé à tout le monde, sauf depuis une IP ou un host spécifique.
<Files "*">
Order deny,allow
Deny from all
Allow from 50.40.30.20
Allow from manager.mydomain.fr
</Files>
On va ensuite, à l’aide des expressions régulières, autoriser l’accès à tout le monde aux fichiers nécessaires. Ajoutez le bloc ci-dessous à la suite de l’autre :
<Files ~ "^piwik\.(js|php)|robots\.txt$">
Allow from all
Satisfy any
</Files>
Sur le même principe, nous allons ajouter ce troisième bloc pour autoriser l’accès sur l’URL spécifique :
<Files ~ "index.php?module=CoreAdminHome&action=optOut">
Allow from all
Satisfy any
</Files>
Sauvegardez ce fichier et vérifiez le bon fonctionnement : que vous ayez bien accès à l’interface d’administration depuis les IP autorisées, et que vos visiteurs continuent d’être comptabilisés.
V. Empêcher l’indexation dans les moteurs de recherche
Il n’y a pas d’intérêt à ce que votre instance de Matomo soit référencée sur les moteurs de recherche. Il vaut mieux garder cette adresse en mode « privée ». Pour indiquer aux robots de Google, Bing et consort qu’ils ne doivent pas indexer cette page, il faut leur indiquer !
Pour réaliser cette opération, créez le fichier « robots.txt » à la racine de Matomo : /var/www/piwik/
Ensuite, dans ce fichier vous devez inclure le contenu suivant :
User-agent: *
Disallow: /
La première ligne sert à indiquer le robot ciblé, ici la règle s’applique à tous (*) et on effectue un refus directement sur la racine (/).
Sauvegardez ce fichier et le tour est joué !
VI. Autres conseils pour sécuriser Matomo
Nous venons de voir les actions essentielles à mener pour sécuriser votre instance de Matomo. Cependant, il ne faut pas s’arrêter à ces actions, voici une liste de conseils supplémentaires :
- Sauvegardez la base de données Matomo et le fichier config/config.ini.php
- Gardez Matomo et les plug-ins à jour
- Utilisez un mot de passe complexe pour le compte super-utilisateur
- Mettez en place le plug-in « Login Fail Log » pour journaliser les tentatives de connexion en échec et, si vous le souhaitez, vous pourrez utiliser les logs pour déclencher des actions dans fail2ban. Lien du plug-in : Login Fail Log
Bonjour,
Je travaille sur Windows.
Votre cours est excellent !
Merci beaucoup d’avoir pris de votre temps pour aider les autres.
Bien à vous
Bonjour,
Merci pour ce excellent cours !
je travaille sur Windows 7 – Wampserver 3.1.3 – WordPress
Je voudrais Sécuriser l’installation de Matomo en local, mais je n’ai pas réussi à :
– Forcer le HTTPS pour Matomo
le site web n’a pas en https
– Protéger Matomo avec un fichier .htaccess
je remplace par quoi ces deux lignes ?
Allow from 50.40.30.20
Allow from manager.mydomain.fr
Est-ce que le plugin suggéré par Matomo. org : WP-Matomo (WP-Piwik) met en place toute cette configuration de votre cours ?
Cordialement,