Vous êtes sur la page 1sur 78

La scurit et Joomla!

Comment scuriser son site ?


v1.2 10/09/2013

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

Qui suis-je ?
Dveloppeur de lextension AllEvents; gestionnaire dvnements pour Joomla! Modrateur Joomla!France Membre fondateur de la Christophe Avonture JUG! Wallonie

http://allevents.avonture.be/fr/qui-suis-je.html
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 2

Objectifs de cette prsentation


Vous trouverez dans cette prsentation quelques conseils que tout un chacun peut appliquer et ne requrant que peu de connaissances techniques. Cette documentation ne se veut nullement exhaustive; juste tre un recueil de trucs & astuces et de bonnes pratiques du web. Il sagit de partager mon exprience personnelle et des outils que jai tests, le choix des outils proposs nest donc pas exhaustif ni qualitatif. Nhsitez pas me suggrer vos propres trucs :
http://allevents.avonture.be/fr/forum/articles/571
AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 23/09/2013 3

Quelles actions/que faire?


Faites vos emplettes : ignorez ce qui vous semble superflu ou inutile. Exactement comme sur votre ordinateur o vous ninstallez pas trois anti-virus, ne pensez pas quen multipliant les outils (.htaccess, CrawlProtect, Admin Tools, jHackGuard, ) vous allez tre inattaquable; choisissez juste ceux avec lesquels vous tes confortables.
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 4

Obfuscation
Lobfuscation nest pas proprement parler une technique de scurit : il sagit de ne pas montrer une information, de la rendre invisible. Cacher le meta generator de la page, le numro de version de Joomla!, ne change strictement rien la scurit intrinsque du site; cela narrtera pas les hackeurs qui font du brute-force . Faut-il laisser ces informations sur le net ? Publiquement ? Je pense que non. Moins le pirate en saura sur le site, plus il devra en apprendre et plus on aura de chance de dtecter son activit.
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 5

Prrequis

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

Protger votre ordinateur


There is no point in following all the best Joomla! security advice you can find if you dont take the simple step of securing your own personal computer with up to date anti-virus software.
Brian Teeman, Co-founder Joomla!
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 7

Le B.A.BA

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

Mots de passe 1/2


Planifier doublier vos mots de passe : utilisez SuperGenPass qui permet de gnrer la vole un mot de passe unique par sites web. Configurer SuperGenPass pour gnrer un mot de 20 caractres. Modifiez tous vos mots de passes Web par ceux de SuperGenPass. Au besoin, conservez une trace des mots de passe dans LastPass. Approfondir : Et vous, cest quoi votre couple login-mot de passe ?
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 9

Mots de passe 2/2


Utilisez un mot de passe diffrent pour chaque site web mais aussi chaque utilisateurs, chaque outil (FTP, ) et chaque base de donnes. Si vous souhaitez contraindre vos utilisateurs choisir des mots de passe selon certaines rgles, il existe quelques plugins pour cela dans la JED : http://extensions.joomla.org/extensions/access-asecurity/site-security/password-management
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 10

Joomla! est-il jour ?


Quelque soit la version majeure de Joomla! que vous utilisez (1.5, 2.5, ), songez toujours installer la dernire mise--jour. Ainsi, ne restez pas avec un J1.5.22 alors que J1.5.26 est disponible. Si votre version majeure de Joomla! est ancienne, prvoyez dans votre agenda le temps ncessaire pour faire une mise niveau.
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 11

Extensions, modules,
Limitez le nombre au maximum; dsinstallez tout qui nest pas utilis. Mettez jour vos extensions, plugins et modules. Consultez rgulirement les sites de leurs auteurs. Inscrivez-vous aux fils RSS ou fanpage. Noubliez pas de mettre jour votre template ds lors quune nouvelle version est disponible. Utilisez cUpdater; il sagit dun plugin qui vous envoie un email pour vous avertir quune mise jour dune extension, module, est disponible.
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 12

Configuration de votre site

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

13

Hbergeur
Analysez loffre de votre hbergeur et comparez ce quil propose en matire de scurit. Tous ne se valent pas, loin de l. Lun des meilleurs tant SiteGround.com. Faites la comparaison... Assurez-vous davoir la dernire version de PHP (Sept 2013 : 5.3.27, 5.4.19 ou 5.5.3) Il est parfois possible de choisir sa version depuis son panneau de contrle. Lire .htaccess Activer PHP 5.4
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 14

Compte admin
Veuillez ne jamais utiliser un compte nomm admin . Si vous en avez un, modifier son statut de super admin public puis dsactivez-le (technique du honeypot ). Vous pourriez surveiller les tentatives
de connexion avec ce compte.

Limitez au maximum le nombre de comptes de type admin. Apprenez grer les ACLs afin que les accs soient strictement ceux requis.
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 15

Lutter contre le spam


Marre des inscriptions fantmes ? Installez Community Builder et, dans les paramtres du gestionnaire des utilisateurs natifs de Joomla!, dsactivez les inscriptions. Dans les paramtres de CB, activez les inscriptions indpendamment du paramtre global du site. Au besoin, achetez et installer le plugin CB Captcha.
Appronfondir: http://allevents.avonture.be/fr/joomla/securite/item/470joomla-robots-ghost-users.html

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

16

Installation dextensions
Jamais sans les avoir testes en local ! Faites un backup de votre site auparavant Vrifier sur la Vulnerable Extensions List si lextension nest pas mentionne. Limitez au maximum le nombre dextensions installes sur votre site de production.

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

17

Nettoyez, encore et toujours


Supprimez rgulirement les extensions, modules et plugins que vous nutilisez plus. Supprimez les templates que vous nutilisez pas. Nettoyez rgulirement le dossier /tmp. Une tche dans le crontab de votre hbergeur peut le faire automatiquement.

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

18

meta name="generator"
Certains scripts tentent de reprer les sites Joomla!. Une des techniques est danalyser le code de la page la recherche du "generator. En supprimant ce code, vous rendez donc un peu plus difficile de cibler votre site. Pour cela, ditez le fichier index.php de votre template et ajoutez la ligne ci-dessous aprs la gnration des metas de Joomla.
<?php JFactory::getDocument()->setGenerator(''); ?>

Si vraiment, vous ny arrivez pas, utilisez le plugin Generator Meta Tag for Joomla
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 19

Firefox/Chrome - Addon
Installez le plugin Joomla-version-check pour Firefox ou Chrome : si votre numro de version est dvoil, votre site dvoile trop dinformations : Interdisez l'accs aux fichiers .xml de l'administration

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

20

Protgez /administrator
Utilisez un fichier .htpasswd pour protger laccs au dossier /administrator. Exemple de fichier .htpasswd :
<IfModule mod_auth.c> AuthUserFile /home/path/.htpasswd AuthName Ami ou ennemi ? Veuillez vous identifier" AuthType Basic <Limit GET POST> Require valid-user </Limit> </IfModule>
http://perishablepress.com/htaccess-password-protection-tricks/ Vous pouvez gnrer un fichier .htpasswd depuis http://aspirine.org/htpasswd.html
AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

23/09/2013

21

Activez le mode SEF


Lorsque vous activez le mode SEF, votre site naffiche plus des urls telles que index.php?option=com_user&view=login& qui donnent trop dinformations et qui invitent tenter de modifier au petit bonheur la chance les valeurs des paramtres.

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

22

Dsactivez la couche FTP


Il nest, en gnral, pas ncessaire dutiliser la couche FTP au niveau de la configuration gnrale de votre site, si vous lutilisez, supprimez les donnes (login, mot de passe) et dsactivez la couche FTP. Problme majeur: le login et le mot de passe est stock en clair dans configuration.php Si votre hbergeur vous contraint utiliser la couche FTP pour installer un composant, veillez chaque fois supprimer le login/password.
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 23

Debug Mode / Rapport derreurs


Sur un site de production, il ne faut jamais activer le mode debug. Rendez-vous dans la configuration gnrale de votre site, onglet Systme et veillez ce que le dbogage systme et dbogage de langue soient dsactivs. Dans longlet Serveur, paramtrez le rapport derreurs sur Aucun.
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 24

Masquez un maximum dinformations


Moins lattaquant en sait sur votre site, plus difficile sera pour lui de cibler une attaque fructueuse. Ne laissez donc pas des fichiers .php qui pourraient p.ex. afficher un phpinfo() (parfois de tels fichiers sont crs par lhbergeur).

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

25

Dsactivez laffichage des positions des modules


Depuis Joomla!1.6, vous pouvez dsactiver lutilisation du ?tp=1 depuis lcran de gestion des paramtres des templates Pour Joomla 1.5, veuillez bloquer cette utilisation depuis le fichier .htaccess
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 26

Cron jobs
Si vous avez accs au cron de votre serveur, ajouter une tche quotidienne telle que celle ci-dessous qui vous enverra un email si un fichier a t modifi dans les dernires 24 heures (except le dossier cache du site) :
find /home/account_name/public_html/ -path /home/account_name/public_html/cache -prune -o -type f -ctime -1 -exec ls -ls {} \;

http://forum.joomla.org/viewtopic.php?f=621&t=801614 Adapter le chemin daccs vers le vtre.

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

27

Base de donnes

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

28

Quel est lutilisateur qui accde votre base de donnes?


Au niveau de votre gestionnaire de base de donnes (dans votre panneau de contrle), vrifiez que lutilisateur qui accde votre base de donnes nest pas root . Si cest le cas, changez-cela sans dlai en crant un nouvel utilisateur. Un utilisateur = une base de donnes et un mot de passe unique (le plus long possible (20 caractres))
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 29

jos_
Sous Joomla 1.5, le prfixe jos_ tait propos par dfaut et peu de personnes prenaient le temps de le changer. Grosse erreur car, dans ce cas, le hackeur sait comment se nomme la table des utilisateurs : jos_users. Et il peut satteler lattaque (SQL injection). Si cest votre cas, utilisez la fonctionnalit Database table prefix editor de Admin Tools pour changer ce prfixe sans dlai.
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 30

Compte admin
A linstallation de votre site Joomla, le premier utilisateur cr dans la base de donnes est un utilisateur de type super-admin. Idalement, crez lun ou lautre utilisateur puis un nouveau compte admin qui sera votre compte admin : dsactivez le premier. But : que le premier utilisateur de votre table xxx_users ne soit pas un super-admin quun script pourrait trop facilement dtecter.
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 31

ID 42 ou 62
Sur les anciennes installations de Joomla!, le compte super-admin tait toujours le compte ID 42 (ou 62). Vrifiez si cest votre cas et si oui, crez-vous un nouveau compte super-admin et dsactivez lancien. Admin Tools permet de changer le ID de votre compte admin mais attention, faites-le dabord sur un site local et vrifiez tout car le ID nest pas chang dans tous les composants (p.ex. pas dans AllEvents, Kunena, ) et cela va induire de gros problmes si vous avez dj du contenu.
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 32

Outils

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

33

FTP
De prfrence, paramtrez vos connexions en SFTP (ou SSH). Si vous utilisez FileZilla, il est impratif de protger laccs aux fichiers .xml. Cet article propose une solution :
http://allevents.avonture.be/fr/joomla/item/372-filezilla_secured

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

34

Akeeba Backup 1/2


Si ce nest pas encore fait, installez sans tarder Akeeba Backup et faites un backup de votre site. Copiez rgulirement les fichiers .jpa vers un autre endroit (votre disque dur p.ex.) et testez la sauvegarde afin de vous assurer quelle est correcte. Sachez que la version Pro de Akeeba Backup permet de sauvegarder dans le cloud (Dropbox p.ex.); intressant en cas de crash de votre serveur p.ex.
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 35

Akeeba Backup 2/2


Comme indiqu dans la documentation de Akeeba, page 132 Securing the output directory , ne stocker pas vos backup dans le dossier /administrator/components/com_akeeba/backup mais dans un dossier en dehors de votre site (au-dessus de www ou public_html )
The best approach is to use a directory which is outside your web server's root. By definition, this is not directly exposed to the web and is usually unavailable to file administration utilities.
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 36

Admin Tools & RSFirewall!


Admin Tools et RSFirewall! sont deux composants dadministration permettant de mieux scuriser votre site. Le premier propose une version gratuite; pas le second. Admin Tools Free permet p.ex. de protger votre dossier /administrator par un couple identifiant / mot de passe (fichier .htpasswd) Tutoriel video
Si vous naimez pas ce type de protection, vous pouvez opter pour JL Secure MySite qui ajoute une clef=valeur lappel ladministration.

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

37

CrawlProtect
CrawlProtect est un logiciel gratuit et externe Joomla! et qui ajoute une couche de protection aux pages web de Joomla! CrawlProtect bloque un grand nombre dattaques type injection de code / SQL. Il ajoute un grand nombre de rules au fichier .htaccess ainsi que vous propose dajouter une ligne de code dans le fichier index.php de votre site pour assurer le suivi des tentatives dattaque.
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 38

EyeSite
EyeSite est un composant backend qui va stocker dans la base de donnes de votre site le CRC de chaque fichier prsent sur le site un moment T. Une seconde comparaison un instant T2 permet alors de comparer la liste des fichiers ayant t modifis.

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

39

jHackGuard
jHackGuard est un plugin gratuit dvelopp par lhbergeur SiteGroud.com et qui permet, linstar de CrawlProtect, de protger son site contre des tentatives dinjection, des remote URL/File inclusions , remote code execution ,

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

40

eXtplorer
Des composants comme eXtplorer sont trs pratiques lorsque vous navez pas un accs FTP votre site de production mais prsente une relle menace car si un intrus parvient se connecter sur votre administration, ce type de composant lui donne accs lentiret de votre site; scurit .htaccess en moins. Si vous en avez besoin, installez le composant, faites ce que vous deviez faire puis dsinstaller-le sans dlai.
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 41

Outils de supervision
Admincredible (payant, version beta gratuite rachet par Watchful.li en septembre 2013) Watchful.li (payant) propose un dashboard online qui reprend tous vos sites et permet, entre autre, de les mettre jour ainsi que de planifier lexcution de vos backups.
Offre 12 mois gratuit; plan Starter Code JDCH13 Valable entre le 21/09/2013 et le 21/10/2013

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

42

chmod

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

43

chmod - Introduction

Le chmod dfinit le niveau daccs au fichier. Un chmod 777 revient cocher toutes les cases et donc que tout le monde peut lire, excuter et modifier le fichier. Si votre but est dtre hack, bingo! Un chmod 440 est idal pour le fichier configuration.php : seul le propritaire (vous et donc Joomla) et le groupe (votre hbergeur) peut y accder en lecture seule. Vous garantissez donc que le fichier ne pourra pas tre modifi par quiconque moins de pouvoir changer le chmod.
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 44

chmod
Le chmod dun dossier devrait tre 750 (ou 755) et celui dun fichier est gnralement 640 (ou 644). Modifiez le chmod 550 de votre dossier /templates/*yourtemplate* pour rendre impossible dcrire et crer un fichier dans ce dossier trs sensible. Testez, testez et testez encore, sur un site de tests test.

La version gratuite de Admin Tools permet de grer facilement les chmods depuis Joomla!. CrawlProtect le permet aussi depuis son interface web.

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

45

configuration.php
Changer le chmod du fichier en 440 afin que personne ne puisse crire dedans. Si vous devez modifier la configuration gnrale de votre site, changez le chmod en 640 puis remettez 440 aprs votre changement.

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

46

index.php
Ce fichier doit toujours tre en chmod 440. Pensez que vous avez deux index.php : celui prsent dans la racine de votre site et celui qui correspond votre template utilis (dans le dossier /templates/*yourtemplate*) Si vous devez modifier le fichier, changer le chmod en 640 puis remettez 440 aprs vos changements.
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 47

Dplacer les dossiers /logs et /tmp

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

48

/logs et /tmp - 1/3


Ces dossiers ne doivent pas forcment tre dans le dossier de votre site web mais peuvent remonter dun niveau cd en dehors du dossier www (ou public_html). Lintrt : ces dossiers ntant plus dans le dossier www, ils ne sont plus accessibles depuis le navigateur; cest donc une menace en moins.
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 49

/logs et /tmp - 2/3


Connectez-vous avec votre client FTP sur votre site. A la racine de votre compte, crez au besoin un dossier logs et un autre tmp (il est probable que ces dossiers existent dj). Personnellement, je cre un sous-dossier joomla dans ces deux dossiers.
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 50

/logs et /tmp 3/3


Rendez-vous dans votre dossier www/votre_site. ditez votre fichier configuration.php. Modifier les lignes public $log_path et $tmp_path et supprimer la partie /public_html/votre_site
public $log_path = '/home/xxxxx/public_html/votre_site/logs'; public $log_path = '/home/xxxxx/logs';

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

51

.htaccess

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

52

.htaccess
Lauteur de Akeeba Backup et Admin Tools, Nicholas K. Dionysopoulos, propose un fichier .htaccess optimis et apportant une excellente couche de scurisation :
https://github.com/nikosdion/master-htaccess

Only a Ninja can kill an another Ninja :


http://magazine.joomla.org/issues/issue-oct-2010/item/214-only-a-ninjacan-kill-another-ninja

Le chmod du fichier .htaccess doit tre 444.


23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 53

Interdire laccs aux fichiers .htaccess et configuration.php


Soyez certain que vos fichiers .htaccess et configuration.php ne soient pas accessibles depuis un navigateur :
<Files .htaccess> order allow, deny deny from all </Files> <Files configuration.php > order allow, deny deny from all </Files>
AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

23/09/2013

54

.htaccess Interdire laccs aux fichiers xml


Ne rvlez pas trop, interdisez que lon puisse consulter les fichiers .xml de votre administration. Cet article dcrit comment faire :
http://allevents.avonture.be/fr/joomla/item/464-protection-xml.html

Basiquement, il suffit de crer un fichier /administrator/.htaccess et dy placer la rgle suivante :


<Files ~ ".xml$"> order allow,deny deny from all satisfy all </Files>

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

55

.htaccess Interdire de lister le contenu dun dossier


Forcer lutilisateur introduire une url mentionnant un nom de fichier (p.ex. /index.php); les fichiers index.html ne sont ds lors plus ncessaires :
IndexIgnore * Options All Indexes

( ne pas utiliser dans votre dossier / et /administrator sauf si vous souhaitez que lutilisateur mentionne obligatoirement index.php dans lurl)

Forcer index.php afin que le serveur nexcute pas, p.ex., index.html, default.htm,
DirectoryIndex index.php
AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 23/09/2013 56

.htaccess Bloquer laccs certains dossiers


A priori, il ny a aucune raison quun utilisateur accde un fichier du cache de Joomla (/cache) ni un fichier se trouvant dans le dossier temporaire (/tmp). Utilisez la rgle ci-dessous pour bloquer ces accs :
## Disallow front-end access for certain Joomla! system directories RewriteRule ^includes/js/ - [L] RewriteRule ^(cache|includes|language|libraries|logs|tmp)/ - [F]

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

57

.htaccess Interdisez lexcution de code php


Bloquez lexcution de code .php depuis certains dossiers (particulirement les dossiers /medias et /images) o ce type de code nest pas suppos se trouver. Cet article en parle :
http://allevents.avonture.be/fr/joomla/item/468-no-php-allowed.html

Testez, testez, testez. Cette mesure augmente fortement la scurit de votre site!
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 58

.htaccess Refouler les robots malveillants


Adoptez les rgles .htaccess permettant dinterdire les robots malveillants sur votre site
#Liste fortement abrge

RewriteCond %{HTTP_USER_AGENT} ^BadGuy [OR] RewriteCond %{HTTP_USER_AGENT} ^Zeus RewriteRule .* - [F] http://docs.joomla.org/Htaccess_examples_(security), Block bad user agents

Pour approfondir : http://allevents.avonture.be/fr/joomla/securite/item/470joomla-robots-ghost-users.html


23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 59

.htaccess Refoulez les urls malveillantes


Certaines attaques / spam se font en tentant de poster des formulaires par la mthode GET. Vous pouvez tablir une parade sur base de certains mots clefs ( vous de complter la liste):
RewriteCond %{QUERY_STRING} \b(ambien|blue\spill|cialis)\b [NC,OR] RewriteCond %{QUERY_STRING} \b(erections|hoodia|viagra)\b [NC,OR] RewriteCond %{QUERY_STRING} \b(vicodin|vuiton|xanax|ypxaieo)\b [NC] RewriteRule .* - [F]
(liste partielle)
AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

23/09/2013

60

.htaccess Ne pas afficher certains fichiers


Interdisez laffichage de certains fichiers; selon lextension : si quelquun tente daccder un tel fichier depuis le navigateur, laffichage sera refus. Ainsi, p.ex., bloquer laccs aux fichiers de langues (.ini) de Joomla!
<Files ~ "\.(inc|class|sql|ini|conf|exe|dll|bin|tpl|bkp|dat|c|h|py|spd|theme|module)$"> deny from all </Files>

http://ralph.davidovits.net/internet/se-proteger-des-pirates-ethackers.html#htaccess #5
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 61

.htaccess Bloquer certaines requtes (XSS, injection, )


Bloquer les urls reprenant certains mots / instructions, exemple :
RewriteEngine On RewriteCond %{REQUEST_METHOD} (GET|POST) [NC] RewriteCond %{QUERY_STRING} ^(.*)(%3C|<)/?script(.*)$ [NC,OR] RewriteCond %{QUERY_STRING} ^(.*)(%3D|=)?javascript(%3A|:)(.*)$ [NC,OR] RewriteCond %{QUERY_STRING} ^(.*)document\.location\.href(.*)$ [OR] RewriteCond %{QUERY_STRING} ^(.*)(%3D|=)http(%3A|:)(/|%2F){2}(.*)$ [NC,OR] RewriteCond %{QUERY_STRING} ^(.*)GLOBALS(=|[|%[0-9A-Z]{0,2})(.*)$ [OR] RewriteCond %{QUERY_STRING} ^(.*)_REQUEST(=|[|%[0-9A-Z]{0,2})(.*)$ [OR] RewriteCond %{QUERY_STRING} ^(.*)(SELECT(%20|\+)|UNION(%20|\+)ALL|INSERT(%20|\+)|DELETE(%20|\+)|CHA R\(|UPDATE(%20|\+)|REPLACE(%20|\+)|LIMIT(%20|\+))(.*)$ [NC] RewriteRule (.*) - [F]

http://ralph.davidovits.net/internet/se-proteger-des-pirates-ethackers.html#htaccess #8
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 62

.htaccess - Fingerprint
Interdisez lutilisation de ?tp=1, ?templage=nom_template ou encore ?tmpl=offline Ajoutez dans votre .htaccess si ncessaire ces lignes :
RewriteCond %{QUERY_STRING} (&|%3F){1,1}tp= [OR] RewriteCond %{QUERY_STRING} (&|%3F){1,1}template= [OR] RewriteCond %{QUERY_STRING} (&|%3F){1,1}tmpl= [NC] RewriteRule ^(.*)$ - [R=404,L]

http://magazine.joomla.org/issues/issue-oct-2010/item/214-only-a-ninja-cankill-another-ninja
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 63

.htaccess Version de PHP


Une ancienne version de PHP est moins scurise quune plus rcente. Si cela vous est possible, upgradez votre version.

Pour les sites J2.5+, activez PHP 5.4 en ajoutant la ligne cidessous dans votre .htaccess
AddHandler application/x-httpd-php54 .php .php5 .php4 .php3 (Attention, cette instruction varie dun hbergeur un autre; parfois cest SetEnv PHP_VER 5_4)

!!! Testez votre site pour tre sr quil fonctionne correctement avec cette version-l de PHP
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 64

.htaccess Easter eggs & server infos


Prfrablement dsactiver dans votre php.ini (voir ce slide), les ufs de Pques sont utilisables depuis une url du type index.php?=PHPE9568F34D428-11d2-A769-00AA001ACF42 Pour interdire les Easter eggs et la transmission dinformations sur votre serveur web, ajoutez ces lignes ci-dessous dans votre fichier .htaccess
RewriteCond %{QUERY_STRING} \=PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC] RewriteRule .* - [F]

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

65

php.ini

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

66

Affichage des erreurs = off


Sur un site de production, il ne faut jamais afficher les messages derreurs qui donneraient alors des informations prcieuses lattaquant. 1. ditez votre fichier php.ini 2. Cherchez la variable display_errors 3. Au besoin, changez la valeur sur off Si vous navez pas accs au fichier php.ini, vous pouvez obtenir le mme rsultat en ajoutant cette ligne dans votre fichier .htaccess :
php_flag display_errors off
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 67

Safe Mode
Contrairement ce quon pourrait croire, activer le safe mode dans php.ini nest pas une mesure de scurit. Safe Mode est dailleurs dprci depuis PHP 5.3 et supprim en 5.4. Si votre site est configur en Safe Mode ON, dsactivez cette option. Lire : http://us3.php.net/manual/en/features.safe-mode.php#ini.safe-mode

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

68

expose_php Easter eggs 1/2


Tentez daccder votre site web avec une url comme celle-ci :

index.php?=PHPE9568F34-D428-11d2-A76900AA001ACF42

Voyez-vous le logo ? Si oui, oups En affichant les en-ttes de la page; on dcouvre le numro de version de PHP utilise sur le site
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 69

expose_php Easter eggs 2/2


1. ditez votre fichier php.ini 2. Recherchez la variable expose_php 3. Modifiez sa valeur sur Off Si vous navez pas accs au fichier php.ini, vous pouvez crire une rgle pour le fichier .htaccess : voir ce slide. Lire : http://perishablepress.com/expose-php/
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 70

Trop tard, votre site a t hack

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

71

Trop tard 1/4 ?


Sucuri SiteCheck permet de scanner votre site web la recherche de malware. myJoomla.com est une interface web payante (1er audit gratuit) permettant de lancer une batterie de tests et de vrifier la scurit de votre site; avant et aprs un hack. Dans ce dernier cas, vous serez guid dans la rsolution du hack. Prenez connaissance de larticle Your site has been hacked or defaced sur doc.joomla.org
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 72

Trop tard 2/4 ?


Dsactivez laccs votre site; passez-le en mode maintenance : toutes personnes qui tentera daccder votre site sera roriente vers Google; sauf vous. Ajoutez ces deux lignes dans votre .htaccess :
RewriteCond %{REMOTE_ADDR} !127.0.0.1 RewriteRule .* www.google.be [L,R=307]

(adapter 127.0.0.1 par votre adresse IP)


AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

23/09/2013

73

Trop tard 3/4 ?


Scannez votre site la recherche dune bestiole grce au script JAMSS Joomla! AntiMalware Scan Script. Retrouver la liste complte des fichiers ayant t modifis : http://ralph.davidovits.net/internet/seproteger-des-pirates-ethackers.html#fichmodif
23/09/2013 AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 74

Trop tard 4/4 ?


Nicholas K. Dionysopoulos, lauteur de Akeeba, explique donne aussi quelques conseils Unhacking your site Rinitialisez le mot de passe de ladmin (kiwik.net) et/ou crez un nouveau compte (kiwik.net) Si navez pas accs phpMyAdmin mais votre FTP, utilisez Reset Admin Password

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

75

Lectures additionnelles

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

76

Lectures additionnelles
Forum Scurit Joomla France Scurit Joomla Aide-Joomla.com Votre site Joomla! est-il bien scuris ? Joomla Security Checklist Fortifying your Joomla! Website Joomla Security Feed Simple Security Guide, part 1 & part 2 How to keep your Joomla-based website secure ? Top 10 Stupidest Administrator Tricks
AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be 77

23/09/2013

Questions, suggestions, partage dides, contribution,


http://allevents.avonture.be/fr/forum/articles/571

23/09/2013

AllEvents, a Joomla Component by Christophe Avonture http://allevents.avonture.be

78