Renforcer la sécurité des CMS¶
Principes de base¶
Voici quelques précautions à prendre pour réduire les risques d’infection de votre CMS :
vérifier que le CMS est à jour en dernière version ;
s’assurer que les plugins et modules soient eux aussi à jour ;
s’inscrire aux bulletins de sécurité du CMS et des plugins ;
filtrer les accès aux admins par des IP autorisées (fichier .htaccess) ;
limiter l’impact des attaques par brute force sur les admin via une authentification par le serveur web ;
supprimer les dossiers/fichiers d’installation ;
complexifier les identifiants (login utilisateur et mot de passe) des accès administration, FTP et BDD ;
interdire l’exécution de code php dans les dossiers ou des fichiers .php qui n’ont pas à se trouver via .htaccess (img/ par exemple) ;
attribuer les bonnes permissions sur les fichiers et dossiers. Se référer au préconisations de l’éditeur du CMS.
Séparation des privilèges¶
DRI respecte l’état de l’art et les bonnes pratiques en matière de sécurité et de défense des environnements web. Aussi, les plates-formes mises à disposition de nos clients sont organisées sous le principe de la séparation des privilèges, c’est à dire que chaque fonctionnalité ne doit posséder que les privilèges et ressources nécessaires à son exécution.
Cette contrainte peut affecter certains développeurs dans l’administration des environnements mais assurément, cette bonne pratique est nécessaire et est un minimum pour éviter toutes intrusions au sein de vos espaces. Ce principe est d’autant plus indispensable sur les environnements mutualisés car pouvant impacter les autres clients. L’intrusion devient alors une porte ouverte avec des rebonds possibles entre différents sites web.
Dans ce contexte, nous imposons la création et la définition de :
un compte dédié à l’utilisateur web Apache en lecture uniquement. Les applications nécessitant des droits en écriture sur certains dossiers (cache, upload,modules…) pourront être traitées en exception et au cas par cas. Dans ce cas de figure, une protection par .htaccess doit alors être appliquée. Ce filtrage par extensions de fichiers sera adapté au besoin et au type de contenu que le dossier doit héberger pour l’application ;
un compte dédié à l’utilisateur ftp en écriture permettant de manipuler les dossiers et fichiers depuis cet accès.
Quelques exemples¶
Voici quelques exemples de directives à placer dans un fichier .htaccess
Prestashop : Désactivation de PHP¶
Placez un fichier .htaccess dans les dossiers cache, download, img, log, mails, upload
# On désactive l'interprétation des fichiers PHP
RemoveHandler .php
# On interdit l'accès aux fichiers PHP
<files "*.php"="">
Deny from all
</files>
Prestashop : protection du backoffice¶
# Authentification par mot de passe
AuthName "Authorized Only"
AuthType Basic
AuthUserFile /var/www/html/virtualdomains/12345/domain.com/projects/htpasswd-require valid-user
# Filtrage IP
Order deny,allow
Deny from all
Allow from 192.0.2.142
Allow from 198.51.100.2
Satisfy Any
Wordpress : configuration de wp-config.php¶
# Définit les droits sur les fichiers crées
define('FS_CHMOD_DIR', 0770 );
define('FS_CHMOD_FILE', 0660 );
# Utilise le FTP pour la mise à jour du code
# depuis le backoffice
define('FS_METHOD', 'ftpsockets');
# Désactive l'édition en ligne
define('DISALLOW_FILE_EDIT', true);
Wordpress : protection du backoffice¶
<filesmatch "wp-login.php"="">
# Authentification par mot de passe
AuthName "Authorized Only"
AuthType Basic
AuthUserFile /var/www/html/virtualdomains/12345/domain.com/projects/htpasswd-require valid-user
# Filtrage IP
Order deny,allow
Deny from all
Allow from 192.0.2.142
Allow from 198.51.100.2
Satisfy Any
</filesmatch>