Petite compilaton de sécurisation de CMSms Topic is solved

Support en français pour CMS Made Simple.

Moderator: jce76350

Post Reply
Pierre M.

Petite compilaton de sécurisation de CMSms

Post by Pierre M. »

Bonsoir,

voici une traduction rapide de A small guide to CMSMS system security.

Ce guide est un condensé des astuces de sécurité glanées sur le forum, le wiki et ailleurs. Il n'est pas exhaustif, il est grand ouvert aux contributions et il peut contenir des erreurs. Vos relectures et vos retours seront donc précieux. (NdT : si vous êtes anglophone, merci de poster vos retours/contributions dans le fil en VO pour faciliter la diffusion dans toutes les traductions)

Paramètres système (sauce unix)

1. Gardez votre système toujours à jour (utilisez cron pour vous notifier par email de la disponibilité de mises à jour).

2. Confinez le sous ensemble Apache en chroot/jail mode.

3. Choisissez un mot de passe robuste pour root. Ne vous loguez jamais en root, utilisez sudo à la place.

4. Pour les accès distants utilisez un tunnel sécurisé (SSH).

5. Protéger votre serveur par firewall/DMZ et surveillez tous les accès avec SNORT.

6. N'installez que le strict minimum nécessaire et désinstallez les services/logiciels/démons inutiles.

7. N'ouvrez que les ports nécessaires (80, 443), et aucun autre.

8. Si vous installez un gestionnaire de base de donnée comme phpmyadmin, renommez son dossier d'installation avec un nom bidon (ex: "/pma39xRlklkLK3d") et protégez ce dossier avec .htaccess et .htpassword (voyez pour cela le site d'Apache et cet autre site).

9. Vérifiez souvent les logS Apache (access.log and error.log) et les logS du système.

Paramétrage PHP

Employez a minima ces paramétrages de sécurisation dans php.ini

Code: Select all

disable_functions = exec, show_source, shell_exec, system, popen, proc_open, proc_nice, ini_restore, passthru,dl
expose_php = Off
display_errors = Off
log_errors = On
register_globals = Off
allow_url_fopen = Off
allow_url_include = Off
Note: La première ligne pourra être mise en commentaire exceptionellement le temps d'utilisation rare d'un module requérant l'une de ces fonctions.

Paramétrage Apache

A la racine de votre installation CMSms, créez un fichier .htaccess contenant :

Code: Select all

RewriteEngine On

#option excluant de lister le contenu des dossiers (évite de diffuser des informations sensibles)
Options -Indexes

# Filtrage d'URL pour empêcher certains piratages
#IF the URI contains a "http:"
RewriteCond %{QUERY_STRING} http\: [OR]

#OR if the URI contains a "["
RewriteCond %{QUERY_STRING} \[ [OR]

#OR if the URI contains a "]"
RewriteCond %{QUERY_STRING} \] [OR]

#OR if the URI contains a "<__script__>"
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]

#OR script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]

#OR any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) [OR]

#OR if the URI contains UNION
RewriteCond %{QUERY_STRING} UNION [OR]

#OR if the URI contains a *
RewriteCond %{QUERY_STRING} \*

#then deny the request (403) On rejette la demande avant qu'elle n'atteigne PHP donc CMSms
RewriteRule ^.*$ - [F,L]
Paramétrage de CMSms

1. Choisissez un bon mot de passe pour l'administrateur.

2. Ne choisissez pas "admin" ou "administrator" comme login d'administrateur. Utilsez autre chose de moins courant. Attention à ne pas révéler ce nom en postant un article avec le compte d'administrateur.

3. Renommez le dossier /admin en un nom bidon (ex: "admin39xRlklkLK3d") difficile à deviner. Changez /config.php en conséquence : $config['admin_dir'] ="admin39xRlklkLK3d"

4. Protégez l'accès http à ce dossier par mot de passe.
Bien des fournisseurs d'hébergement offrent une interface pour ce faire. Sinon, voici un exemple à la main :

Code: Select all

        <Directory /var/www/admin39xRlklkLK3d>
                AuthName "Zone Protegee"
                AuthType Basic
                AuthUserFile /var/www/admin39xRlklkLK3d/.htpasswd
                require valid-user
        </Directory>
Contenu de /admin39xRlklkLK3d/.htpassword

Code: Select all

youruser:yourencryptedpassword
(voyez la documentation d'Apache, chapitre Auth).

5. Forcez les entrées vers l'admin en SSL
Pour ce faire, dans le dossier d'admin, créez ce fichier :
/admin39xRlklkLK3d/.htaccess
avec ce contenu :

Code: Select all

# force all access to /admin to SSL protected page
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
6. Vérifiez les permissions de config.php
Pendant l'installation ou la mise à jour, il faut 777. Cependant, dès que c'est terminé, abaissez ces permissions à 444, voire 440 si ça fonctionne. Si vous n'avez pas d'accès SSH, utilisez votre outil FTP pour ce faire ou un outil de votre fournisseur d'hébergement (ex: Plesk).

7. Vérifiez les permissions du dossier /tmp
Tentez d'abaisser au maximum les permissions sur ce dossier et ses sous dossiers. Graduellement, essayez 775 puis 755 puis 750 si ça passe encore.

8. Vérifiez les permissions du dossier /uploads
Comme ci-dessus. Voyez si votre site fonctionne en chargeant quelques images et en essayant de les afficher par http://www.example-site.com/uploads/images/images.jpg
Dans les Préférences Globales de CMSms, utilisez 002 comme umask pour créer des miniatures.

9. N'exhibez pas votre version de CMSms !
(NdT : comme on le voit si souvent dans le pied de page d'accueil) Editez le bloc de contenu fautif.
Sinon tout le monde saura que vous aurez oublié de mettre à jour CMSms et quelles failles de sécurité connues peuvent être utilisées contre votre site. (le tout indexé par Google)

10. Protégez votre dossier /lib
Créez un fichier /lib/.htaccess file contenant

Code: Select all

order deny,allow
deny from all
allow from 192.168.0.0/24 #votre réseau d'administration
# allow files .js in /lib avoiding errors related to js calling e.g. tag {startExpandCollapse}
#exception : on autorise les appels vers les scripts (.js) nécessaires
<Files ~ ".*\.js$">
 Order deny,allow
  Allow from all
</Files>
D'après Blast, traduit par Pierre M.
athena_pallas
Power Poster
Power Poster
Posts: 272
Joined: Wed Sep 13, 2006 4:41 pm

Re: Petite compilaton de sécurisation de CMSms

Post by athena_pallas »

Waouw, merci pour toutes ces indications, même si je n'en comprends pas la moitié, sans doute parce que je n'utilise que des hébergements mutualisés ?
bmunsch
Forum Members
Forum Members
Posts: 61
Joined: Sat Oct 13, 2007 11:03 am

Re: Petite compilaton de sécurisation de CMSms

Post by bmunsch »

Merci pour les infos  ;)
Pierre M.

Re: Petite compilaton de sécurisation de CMSms

Post by Pierre M. »

Blast (le compilateur des astuces) a eu la gentillesse de wikifier tout ça, y compris la version Française ci-dessus :
http://wiki.cmsmadesimple.org/index.php/How_to/fr

D'où un petit appel à volontaires francophones ayant des compétences wiki :
-il faut mettre à jour l'article en Français à partir des ajouts de Blast dans le fil anglophone.
-et tant que vous y êtes, pour ceux qui sont très motivés pour contribuer au projet, n'hésitez pas à traduire l'ensemble des tutos :
http://wiki.cmsmadesimple.org/index.php/How_to

Je rappelle au passage que chacun peut contribuer au wiki avec son compte forum.

Pierre
athena_pallas
Power Poster
Power Poster
Posts: 272
Joined: Wed Sep 13, 2006 4:41 pm

Re: Petite compilaton de sécurisation de CMSms

Post by athena_pallas »

En complément de ce magnifique post, voici quelques conseils qui viennent du forum de mon hébergeur :
http://forum.ovh.com/showthread.php?t=19263 (Sécuriser et protéger son site web des attaques des pirates et hackers).

J'espère que cela sera utile à quelqu'un.
Pierre M.

Re: Petite compilaton de sécurisation de CMSms

Post by Pierre M. »

Merci Athena.
Les spécialistes doivent pouvoir trouver à discuter sur les détails, mais en tous cas tout le monde est au moins sensibilisé à la protection avec ces explications et conseils.

Pierre
Post Reply

Return to “French - Français”