Découverte d’aeSecure
Par Christophe Avonture, développeur d’aeSecure
Qui suis-je ?
• Développeur d’aeSecure, suite de protection et d’optimisation de sites web Apache
• Ancien développeur d’AllEvents; gestionnaire d’évènements pour Joomla!®
• Modérateur Joomla! France (cavo789)
• Membre fondateur de la JUGWallonie
http://www.aesecure.com/fr/accueil/contact.html
Et lui, c’est Nono 2
Ce beau jeune homme à gauche se prénomme Nono et il veillera à la
sécurisation de votre site ainsi que de son optimisation.
A l’issue de cet atelier
• vous saurez comment installer aeSecure et vous aurez appris à le configurer pour accroître la sécurité de votre site;
• vous apprendrez comment identifier un éventuel blocage et ce qu’il faut faire pour le lever;
• vous aurez vu les différentes composantes d’aeSecure.
Vous verrez également en œuvre les fonctions Premium et Pro telles que
l’optimisation des sites, la fonction « Charger depuis aeSecure » et l’interface multi-sites.
aeSecure, c’est quoi ?
aeSecure est un pare-feu logiciel (WAF) permettant de sécuriser et optimiser tout site web tournant sous Apache : Joomla!, Drupal, WordPress,
Prestashop, SPIP, VTiger, Typo3, Magento, Koken, …, php et même html : dès lors que le site est sous Apache, aeSecure le protégera et l’optimisera.
Il s’agit d’un logiciel Freemium : version gratuite disponible.
http://www.aesecure.com/fr/telechargement.html
A l’occasion du JoomlaDay™
France 2015, 20% de
réduction sur toutes les offres d’aeSecure (logiciel et
services).
Le code à utiliser lors de la finalisation de la commande
est JDAY15FR.
(valable jusqu’à 20 mai 2015)
Prérequis
Prérequis techniques
• Serveur web Apache
• PHP v5.2 minimum
Compétences techniques
aeSecure se voulant résolument pédagogique, il est destiné à tout-un- chacun et non à des experts en sécurité. En lisant les introductions et les explications détaillées, vous comprendrez la finalité de chaque
fonctionnalités et leur mise en œuvre ne requérant qu’un seul clic.
Vidéo de présentation - YouTube
https://www.youtube.com/channel/UCcWKn7bn14libVhcf0Vu_zQ
Site de démo en ligne
• Démo totalement fonctionnelle
• Aucune action n’est réellement effectuée; juste simulée
• Certains écrans sont toutefois bloqués pour des raisons de confidentialité
http://www.aesecure.com/_demo/aesecure/setup.php?lang=fr-FR
Internationalisation
• Langue originale : Française
• Traduction terminée : Anglais, Portugais (Brésil & Portugal) et Russe
• En cours de finalisation : Italien (75%)
• En cours : Espagnol et Arabe (20%) Aidez-moi à traduire aeSecure
et recevez une version Pro;
à vie
Pare-feu – Firewall - WAF
• Un pare-feu tel qu’aeSecure est mis en œuvre au travers du fichier .htaccess de votre site Apache.
• A chaque requête vers votre site, que ce soit vers une page, un fichier css, une image, … à chaque fois, le fichier .htaccess est
exécuté. Ce faisant, les « règles » (rules) d’aeSecure sont lues et exécutées.
• Ces règles analysent le contexte (l’URL et ses paramètres, le
dossier ciblés (p.ex. /images), l’origine de la requête, …) afin de déterminer si elle est saine ou suspecte.
Pare-feu – Firewall - WAF
Si l’URL est jugée suspecte, elle est stoppée avant même que votre serveur n’ait exécuté l’action (Joomla!® n’en saura rien, la requête étant stoppée en amont).
.htaccess et php.ini
La protection mise en place par aeSecure se fait au travers de deux fichiers de configuration : .htaccess et php.ini
Ces deux fichiers se trouvent à la racine de votre site.
Il faut que votre hébergeur soit configuré de telle manière que ces fichiers soient lus et pris en compte (c’est presque toujours le cas).
Remarque : aeSecure positionne des fichiers .htaccess dans d’autres dossiers que le dossier racine (p.ex. /administrator, /images, /libraries, /media, /tmp, …) mais un seul php.ini; à la racine.
aeSecure, quels blocages ?
• Interception d’attaques de type SQL Injection, XSS, LFI/RFI (file inclusion);
• Blocage d’URLs provenant de certains referrer / adresses IP;
• Blocage sur base de mots clef dans l’URL;
• Interdiction d’exécution de code php dans certains dossiers (p.ex.
/images);
• Principe de liste blanche ou protection par mot de passe pour l’accès à des dossiers spécifiques;
• Interdiction d’accès au fichier robots.txt hormis pour les bots autorisés;
• …
aeSecure, quelles optimisations ?
• Activation du mode Google PageSpeed si présent sur le serveur;
• Activation de la compression gzip (si présent sur le serveur);
• Activation du cache des fichiers statiques;
• Minification des fichiers css, javascript et html;
À venir dans la version 2.1 (Juin 2015) d’aeSecure,
• Réorganisation du code (css au début, javascript à la fin)
• Ajout des attributs height et width des images
• Redimensionnement des images
• Inline des petites ressources (css, js, images)
• Lazyload des images,
• …
Installation (1/3)
1. Rendez-vous à l’URL
http://www.aesecure.com/fr/telechargement.html
2. Téléchargez la version gratuite ou identifiez-vous pour acquérir/télécharger une version payante.
La version gratuite est illimitée dans le temps et convient parfaitement pour sécuriser un site.
La version Premium offre plus de fonctionnalités ainsi que l’optimisation des sites. Le support est disponible à partir de la version Premium+.
La version Pro reprend l’interface multi-sites, le script crontab et le max. de fonctionnalités.
http://www.aesecure.com/fr/documentation/rapide/telechargement.html
Installation (2/3)
3. Sélectionnez l’option « Enregistrer le fichier » et cliquez sur Ok
4. En local, sauvez le fichier aesecure.php à la racine de votre site web.
En distant, lancez votre client FTP, connectez-vous à votre site et sauvez le fichier à la racine de votre site web.
Installation (3/3)
5. Le fichier aesecure.php étant à la racine de votre site, accédez-y grâce à votre navigateur préféré : http://votresite/aesecure.php 6. À cet instant, aeSecure va être téléchargé et installé sur votre
site. Après deux ou trois secondes, vous verrez apparaître l’écran de fin d’installation et l’URL sera changée en p.ex.
http://votresite/aesecure/setup.php?BMXCq-z4JHw-yu80T- 1YR2U-Upsdb-w7Auw
Remarque : le fichier http://votresite/aesecure.php est supprimé automatiquement.
Selon votre abonnement, sélectionnez la version à installer sur le site
Confirmez avoir lu les deux remarques
Cliquez ici pour finaliser l’installation
Accès à votre écran de configuration
L’URL de votre écran de configuration est importante, veuillez la sauvegarder dans p.ex. vos favoris.
http://votresite/aesecure/setup.php?BMXCq-z4JHw-yu80T-1YR2U-Upsdb-w7Auw
Cette valeur est votre « clef ». C’est grâce à elle que votre accès à aeSecure sera autorisé. Ne la perdez pas; vous en aurez besoin à chaque accès à votre interface aeSecure.
http://www.aesecure.com/fr/documentation/faq/19-clef-incorrecte.html
Découverte de l’interface
• aeSecure est « mono-écran » : toute la configuration se fait au travers de l’écran setup.php.
• Pour chaque fonctionnalités, vous trouverez au minimum trois onglets:
1. Introduction – La raison de cette fonctionnalité; en quelques mots
2. Explications détaillées – Pourquoi vous devriez appliquer cette fonction; explications longues et détaillées
3. Protéger (parfois « Optimiser » ou « Éditer ») – Activation de la fonctionnalité
Must, Good, Extreme or Need ?
Chaque fonctionnalité dispose d’un ruban permettant de savoir si vous devriez l’activer.
Ruban Explications
Must Impératif; vous devez l’activer (options 1.1 et 1.2)
Good Généralement, il s’agit d’une fonctionnalité à activer mais non obligatoire
Extreme Renforce fortement la sécurisation du site mais pourrait gêner certaines actions (ex.
2.4 Bloquer les uploads)
Need L’utilisation de ces options va varier selon vos sites et le moment (ex. 1.9 Activation du mode maintenance)
Must – Obligatoire : 1.1 et 1.2
Seules deux fonctionnalités sont obligatoires et doivent être activées pour que la protection d’aeSecure soit opérationnelle : 1.1 et 1.2
Activation d’une fonctionnalité
Cliquez sur l’onglet « Protéger! » (ou Optimiser!); vous verrez apparaître un bouton style interrupteur : soit il est actif (fond vert) soit inactif (fond rouge) Pour activer la protection, il suffit donc de cliquer sur le bouton « Installé » pour que cet état devienne actif. Notez que le texte peut parfois varier selon la fonctionnalité.
Description des fonctionnalités
L’onglet « Explications détaillées »
disponible pour chaque fonctionnalités reprend un long texte explicatif avec, à chaque fois, un lien vers une explication plus longue sur le site d’aeSecure.
La documentation est immédiatement disponible à l’URL ci-dessous :
http://www.aesecure.com/fr/documentation/fonctionnalites.html
Fonctionnalités recommandées version Free
• 1.1 Mise en place du fichier .htaccess de aeSecure (activation obligatoire)
• 1.2 Protection des dossiers (activation obligatoire)
• 1.3 Masquer les erreurs Apache (interdire l’affichage)
• 1.7 Interdiction d’accès à certains fichiers par URL (bloquer p.ex. /admin.php, /configuration.php, /upload.php, /hack.php, …)
• 2.2 Protection par mot de passe (Afin de protéger les accès aux dossiers /administrator et /aesecure)
• 2.3 Limite les robots et le spam
• 2.6 Bloque l'accès aux fichiers et dossiers cachés
• 4.2 Bloquer les inscriptions natives de Joomla!® (si cela est possible selon l’objectif de votre site)
• 4.3 Protéger les fichiers de l’administration de Joomla!®
• 7.1 Réécriture des URLs (activer la réécriture)
• 7.2 Force le www (ou non) dans les URLs (forcer le www)
Fonctionnalités Premium recommandées
• 1.6 Blocage sur base d'éléments dans l'URL(bloquer p.ex. un dossier comme /php-ofc-library, le mot streaming, une tâche comme task=upload, …)
• 2.1 Restreindre l'accès à un dossier selon l'adresse IP (idéal si vous avez une IP fixe)
• 2.4 Bloque l’upload de fichiers (mais strictement sur les sites « dormants »)
• 2.5 Bloque l'indexation de certains fichiers
• 2.7 Bloque l'accès au fichier robots.txt aux curieux
• 2.8 Bloque l’accès sur base du ‘user-Agent’ (p.ex. BOT for JCE ou MJ12bot)
• 4.4 Bloquer l’accès à certains composants de Joomla!® (p.ex. com_jdownload, com_k2, com_oziogallery, … dès lors qu’ils ne sont pas installés sur votre site)
• 8.1 Tirer profit du module mod_pagespeed ou 8.2 Active la compression côté serveur et
8.3 Spécifie la durée de vie des fichiers statiques (8.2 et 8.3 déjà inclus dans 8.1)
• 8.4 « Minification » des fichiers CSS, HTML et javascript (css et html oui, javascript : vérifier que cela n’engendre aucun dysfonctionnements de votre site)
En supplément des fonctionnalités gratuites; voici celles qu’il est opportun d’activer sur les sites protégés avec la version Premium :
1.1 – Mise en place du fichier .htaccess
Votre fichier existant est sauvegardé dans le dossier
/aesecure/setup/backup et il est intégré dans le nouveau fichier mis en place : votre configuration est conservée.
Vous pourrez l’éditer grâce à l’option 1.4 d’aeSecure.
Positionne le fichier .htaccess d’aeSecure à la racine de votre site (obligatoire)
1.2 – Protection des dossiers
1. Selon le type de votre site web (Joomla!, WordPress, …), un fichier .htaccess sera placé dans des dossiers spécifiques comme /images, /media, /tmp, etc. afin d’interdire l’exécution de codes php.
2. Génère un fichier index.html dans les dossiers où il n’y en a pas 3. Crée un fichier php.ini à la racine du site web.
Positionne de multiples fichiers .htaccess dans un grand nombre de
dossiers; crée des fichiers index.html et génère un fichier php.ini à la racine du site (obligatoire)
2.1 ou 2.2 – /administrator & /aesecure
Si vous avez une adresse IP fixe, la solution la plus sécurisée est la fonctionnalité 2.1 qui permet de
restreindre l’accès aux dossiers à votre seule IP (ou vos IPs).
Si vous n’avez pas une adresse dynamique ou êtes
plusieurs à travailler sur le site, l’option 2.2 permettra de forcer l’utilisateur à introduire un login / password au niveau d’Apache; comme illustré ici à droite.
Songer à protéger l’accès à vos dossiers sensibles : /administrator et /aesecure (et d’autres peut-être).
3.1 – Fichiers et dossiers
L’option 3.1 permet de gérer les permissions (chmod) mais aussi de visionner, supprimer ou
télécharger un fichier.
Elle permet aussi de télécharger une archive d’un dossier (sous- dossier inclus).
Sur fond vert : le chmod préconisé pour ce fichier/dossier.
Nono en action : accès refusé
Lorsqu’un accès est refusé, aeSecure affiche une page
« accès refusé » avec un
message court et un code (ici, le code 148).
L’activation d’une fonctionnalité comme 1.1 génère un grand
nombre de règles qui peuvent correspondre à plusieurs
blocages.
Intervenir en cas de blocage trop strict
• Les codes sont, volontairement, « aléatoires » : ils ne sont pas mis en relation avec la fonctionnalité activée ni croissant.
• Pour retrouver la programmation du blocage, le plus simple est d’éditer le fichier nommé .htaccess se trouvant à la racine de votre site et de faire une recherche sur « s=xxx » où xxx est le
code à rechercher (p.ex. 148). Pour cela, connectez-vous à votre site par FTP et éditer le fichier .htaccess que vous trouverez à la racine de votre site.
Identifier le bloc de règles (les « rules »)
Fonctionnalité qui permet d’activer / désactiver ce bloc
Cas simple : en désactivant la fonctionnalité 1.7, on désactive le code 148.
Code 490 – Attaque de type shell détectée
Ici, le code 490 est mentionnée car l’URL
contient une remontée de dossier (../../) qu’aeSecure bloque (ce type d’URL est suspecte et pourrait mener à des attaques type « file inclusion » ou de
découverte (téléchargement fichiers systèmes p.ex.)).
Modifier une règle manuellement
Si vous voudriez autoriser ce type d’URL, il faut désactivez la protection; sachant que le code est 490 :
• Recherchez « s=490 » avec votre éditeur de texte
• Vous verrez la dernière ligne d’un bloc (RewriteRule … s=490)
• Soit vous commentez tout le bloc si vous n’êtes pas sûr de vous (=> vous affaiblissez la sécurité de votre site);
• Soit vous identifiez la ligne et vous la commentez
Modifier une règle manuellement
Attention, si vous modifiez le fichier .htaccess, deux points sont primordiaux sous peine d’une erreur 500 :
• Utilisez un éditeur de texte « brut »; sans mise en page, tel que Notepad.
• Sauvez au format UTF-8 No BOM Sous Windows, Notepad++ fait très bien « le job ».
Accès refusé - Logging
• Chaque requête stoppée est enregistrée dans un fichier journal
• Le log reprend la date, heure, adresse IP, URL bloquée, le referrer et un code d’identification
• Vous pouvez décider de recevoir des mails d’alerte ou pas; selon les codes d’identification
Notification email
Selon votre configuration, vous pouvez être notifié par email lorsqu’aeSecure bloque une requête.
L’email reprends l’URL requêtée ainsi que différentes informations comme l’adresse IP de l’utilisateur, sa localisation sur une carte et plusieurs informations concernant la
requête et le contexte.
Les mails peuvent être activés en fonction de certains code d’identification.
Outils
Selon votre version (free / premium / pro), le menu des outils proposera plus ou moins de fonctionnalités.
Les lignes suivies d’une puce jaune concernent des outils Premium.
Les lignes bleues des outils Pro
Les autres outils étant disponibles dès la version gratuite.
Outils – Test d’intrusion / hacking (pentest)
Outils – phpinfo
Outils – Fichiers ayant été modifiés récemment
Optimisation de la vitesse d’affichage du site
En intervenant sur la mise en cache des fichiers statiques ainsi que la compression de la page; aeSecure permet d’accélérer l’affichage de votre page web.
Sans devoir mettre les mains dans le « cambouis », votre site sera plus rapide et des outils comme GTmetrix ou dareboost vous permettront de le constater.
Optimisation de la vitesse d’affichage du site
Avec la prochaine version 2.1, aeSecure ira plus loin dans l’optimisation :
• réorganisation le rendu html en positionnant les scripts css au début de la page, les scripts js à la fin,
• redimensionnement les images selon la taille choisie pour l’affichage,
• LazyLoad pour le chargement des images,
• ajout des attributs largeur (width) et hauteur (height) dans le code html,
• injection dans la page html des fichiers css et js inférieur à une certaine taille,
• ajout en base64 les petites images dans la page web.
Fonction « Charger depuis aeSecure »
Cette fonctionnalité permet de récupérer depuis le site aesecure.com :
• soit une liste de valeurs comme celles des referrers, des user-agents,
… qui auront été identifiés comme malsain par le développeur d’aeSecure,
• soit une mise-à-jour des règles (p.ex. nouvelle programmation pour la fonction 2.3)
« Charger depuis aeSecure » vous permet aussi de visualiser le code de chaque fonctionnalités avant de l’appliquer et donc de la personnaliser par la même occasion.
« Charger depuis aeSecure »; voir le code
Le code de la fonction est chargé depuis aesecure.com.
Ainsi, vous disposez toujours de la
dernière version de ce
code.
« Charger depuis aeSecure » - Charger les valeurs
En cliquant sur le
bouton, vous obtenez une liste de valeurs qui est maintenue par le
développeur d’aeSecure.
Vous ne devez donc pas analyser vos logs pour en ressortir les attaques fréquentes.
Interface de gestion multi-sites
• L’interface multi-sites est une fonctionnalité d’aeSecure Pro avec le multi-sites installé.
• Supervision des sites Joomla!®, Wordpress,
Drupal, … (peu importe le CMS; peu importe la version du CMS) au départ d’un seul écran.
• Pour accéder à l’écran, cliquez sur le bouton
« Multi-sites » dans le menu supérieur.
Multi-sites – Ajouter un site
Pour ajouter un site, cliquez sur Actions puis Ajouter un site
Compléter l’écran d’ajout en donnant l’URL complète vers le site à ajouter
Multi-sites – Activer un site (1/2)
Après l’ajout, il est plus que probable que le site
apparaisse avec un fond jaune.
Ceci est une mesure de
protection supplémentaire; il vous faut activer la gestion multi-sites sur le site
« enfant ».
Le site « enfant » étant celui qui est surveillé par l’interface multi-sites.
Multi-sites – Activer un site (2/2)
• Rendez-vous sur votre site « enfant »
• Cliquez sur l’icône Outils puis Options
• Cliquez sur le bouton Sauver au bas de l’écran
• Revenez sur votre multi-sites et rafraichissez la page; le site sera affiché en « vert »
Zone de filtres (liste déroulante ou zone de recherche)
Infos systèmes
Navigations :
•interface aeSecure du site
•frontend
•backend
Quelques-unes des actions possibles depuis l’interface :
•Voir le log des attaques
•Voir le log des erreurs Apache
•Installer une nouvelle version d’aeSecure
•Prendre un backup du site (fichiers & base de données)
•Afficher la liste des fichiers ayant été modifiés récemment
•…
Liste des options activées sur le site enfant avec possibilité de voir le contenu de certaines
valeur (loupe)
Multi-sites – Vue d’ensemble
aeSecure's QuickIcon Administration
Module d’administration permettant l’ajout d’un module « Quick icons » dans
l’admin de Joomla!®
Compatible J1.5 jusqu’à J3.4
http://extensions.joomla.org/extensions/extension/access-a-security/aesecure-s-quickicon-administration-module
Scan & Nettoyage – Logiciel d’analyse
Un logiciel d’analyse et de nettoyage a été développé en
complément d’aeSecure afin de permettre de nettoyer des sites ayant été hackés; toutefois ce logiciel n’est pas téléchargeable.
Il est exclusivement destiné à un usage personnel dans le cadre de prestations de nettoyage.
Les slides ci-après ont donc une valeur
« informative ».
Scan & Nettoyage – Résultat partiel d’un scan
Scan & Nettoyage – Détection d’un hack
• Affichage de la menace
• Icônes d’action pour
« white lister » le fichier ou le supprimer
• Menu contextuel pour décrypter le code,
supprimer une portion du fichier, …
Analyse de logs Apache
Un logiciel d’analyse de logs Apache a également été développé pour simplifier la lecture des logs et analyser les vecteurs des
attaques. Ce logiciel n’est pas téléchargeable.
Il est exclusivement destiné à un usage personnel dans le cadre de prestations de nettoyage.
Les slides ci-après ont donc une valeur
« informative ».
Analyse de logs Apache
http://www.aesecure.com/fr/telechargement.html
http://www.aesecure.com/fr/forum/boite-a-idees.html
Merci pour votre attention !
https://www.facebook.com/aesecure https://twitter.com/aesecure
https://www.youtube.com/channel/UCcWKn7bn14libVhcf0Vu_zQ https://plus.google.com/+Aesecure789