Fonctionnement et mise en place d un reverse proxy sécurisé avec Apache. Dimitri ségard 8 mai 2011



Documents pareils
ADF Reverse Proxy. Thierry DOSTES

Installation d OwnCloud 8.0 sous Debian Avec connexion des utilisateurs active directory et mise en place de HTTPS

Serveur de partage de documents. Étude et proposition d'une solution afin de mettre en place un serveur de partage de documents.

WEB APPLICATION FIREWALL AVEC APACHE ET MOD_SECURITY

Aide à la Détection de Faiblesses d un site Web Mandataire inverse, Modsecurity

07/03/2014 SECURISATION DMZ

Apache en tant que reverse proxy

Mandataires, caches et filtres

SÉCURITÉ DU SI. Mini PKI. Denoun Jérémy De Daniloff Cyril Bettan Michael SUJET (3): Version : 1.0

MANUEL D INSTALLATION D UN PROXY

Le filtrage de niveau IP

Gestion d identités PSL Installation IdP Authentic

Sécuriser les applications web

Serveur Web Apache - SSL - PHP Debian GNU/Linux

REPARTITION DE CHARGE LINUX

SECURIDAY 2013 Cyber War

APPLICATIONS WEB ET SECURITE

Exemple : vous voulez tester votre site en local avant de l uploader via FTP chez votre hébergeur externe.

Proxy et reverse proxy. Serveurs mandataires et relais inverses

SECURIDAY 2012 Pro Edition

Réaliser un inventaire Documentation utilisateur

GENERALITES. COURS TCP/IP Niveau 1

But de cette présentation. Proxy filtrant avec Squid et SquidGuard. Serveur proxy. Serveur proxy. Hainaut P

TP HTTP. Université Pierre Mendès France U.F.R. Sciences de l Homme et de la Société Master IC²A

Dans l'épisode précédent

«clustering» et «load balancing» avec Zope et ZEO

La Latecion protection anti-intrusion Web Web Le concept «Zero effort Security» La protection des applications Extranet

Intérêt du NAT (Network Address Translation) Administration Réseau Niveau routage. Exemple d Intranet. Principe NAT

Vulnérabilités et sécurisation des applications Web

Fiche Technique. Cisco Security Agent

FICHE PRODUIT COREYE CACHE Architecture technique En bref Plateforme Clients Web Coreye Cache applicative Références Principe de fonctionnement

Sécuriser les applications web de l entreprise

Une approche positive du filtrage applicatif Web. Didier «grk» Conchaudron Sébastien «blotus» Blot

Sécurité des réseaux Les attaques

Déployer des services en IPv6

BTS SIO SISR3 TP 1-I Le service Web [1] Le service Web [1]

Procédure d'installation

Groupe Eyrolles, 2004, ISBN :

Installation du serveur WEB Apache ( MySQL, PHP) sous Debian 7.

Internet - Outils. Nicolas Delestre. À partir des cours Outils réseaux de Paul Tavernier et Nicolas Prunier

Réseau - Sécurité - Métrologie - Data Center. Le leader du marché allemand des UTM débarque en France avec des arguments forts!

Linux sécurité des réseaux

Vulnérabilités et solutions de sécurisation des applications Web

Serveur FTP. 20 décembre. Windows Server 2008R2

Rapport de certification ANSSI-CSPN-2011/14. Fonctionnalités de pare-feu de StoneGate Firewall/VPN build 8069

Répartition des charges avec HaProxy CONTEXTE MFC JULIEN HUBERT

Apache 2.4 Installation et configuration

TAGREROUT Seyf Allah TMRIM

Table des matières Hakim Benameurlaine 1

Autorité de certification

Réalisation d un portail captif d accès authentifié à Internet

TCP/IP, NAT/PAT et Firewall

laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007

(structure des entêtes)

Guide d administration de Microsoft Exchange ActiveSync

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

Cisco Certified Network Associate

Supplément de renseignements : Examens d applications et pare-feux d applications web clarifiés Normes : Normes en matière de sécurité des données de

Un reverse proxy, pour quoi faire?

SQUID P r o x y L i b r e p o u r U n i x e t L i n u x

Formations. «Règles de l Art» Certilience formation N SIRET APE 6202A - N TVA Intracommunautaire FR

NOTE: Pour une meilleure sécurisation, nous vous recommandons de faire l installation des outils web à l intérieur d un serveur virtuel.

Sécurisation du réseau

(Third-Man Attack) PASCAL BONHEUR PASCAL 4/07/2001. Introduction. 1 Domain Name Server. 2 Commandes DNS. 3 Hacking des serveurs DNS

Installation UpdatEngine serveur (CentOs apache2 / MySQL)

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Déploiement d OCS 1.02 RC2 sous Debian Etch 64

Présentation du relais HTTP Open Source Vulture. Arnaud Desmons Jérémie Jourdin

Ce document décrit une solution de single sign-on (SSO) sécurisée permettant d accéder à Microsoft Exchange avec des tablettes ou smartphones.

Linux et le Shell. Francois BAYART. Atelier du samedi 20 Novembre

Un concept multi-centre de données traditionnel basé sur le DNS

WEBMESTRE : CONCEPTION DE SITES ET ADMINISTRATION DE SERVEURS WEB

Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi

Les serveurs WEBUne introduction

Netfilter & Iptables. Théorie Firewall. Autoriser le trafic entrant d'une connexion déjà établie. Permettre le trafic entrant sur un port spécifique

LINUX - Sécurité. Déroulé de l'action. - 3 jours - Contenu de formation

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

Retour d expérience sur Prelude

Le Tunneling DNS. P.Bienaimé X.Delot P.Mazon K.Tagourti A.Yahi A.Zerrouki. Université de Rouen - M2SSI. 24 février 2011

Mise en place d un serveur Proxy sous Ubuntu / Debian

Le routeur de la Freebox explications et configuration

Installation et Configuration de Squid et SquidGuard sous Debian 7

La Gestion des Applications la plus efficace du marché

Firewall IDS Architecture. Assurer le contrôle des connexions au. Sécurité 1

Cellier Clément, Maginot Quentin, Tripier Axel, Zaorski Jean, Zini Robin. 18 mars 2015

Sécurité des réseaux Firewalls

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Cisco Certified Network Associate

Formations. «Produits & Applications»

MISE EN PLACE DU FIREWALL SHOREWALL


Tutoriel compte-rendu Mission 1

CIBLE DE SECURITE CSPN DU PRODUIT PASS. (Product for Advanced SSO)

Réseau - VirtualBox. Sommaire

Présentation de la solution Open Source «Vulture» Version 2.0

Gestion d identités PSL Exploitation IdP Authentic

10 problèmes de réseau courants que PRTG Network Monitor vous aide à résoudre

Transcription:

Fonctionnement et mise en place d un reverse proxy sécurisé avec Apache. Dimitri ségard 8 mai 2011

Sommaire 1 Un peu de théorie 3 1.1 Qu est-ce qu un reverse proxy?................. 3 1.1.1 Généralités........................ 3 1.1.2 Avantages et inconvénients................ 3 1.1.3 Un proxy inversé sécurisé................. 4 1.2 Fonctionnement d Apache appliqué à notre cas......... 5 1.2.1 mod_evasive....................... 5 1.2.2 mod_ssl.......................... 5 1.2.3 mod_security....................... 6 1.2.4 mod_proxy........................ 6 2 Mise en place 6 2.1 Installation............................ 6 2.2 Configuration........................... 7 3 Références 10 2

1 Un peu de théorie 1.1 Qu est-ce qu un reverse proxy? 1.1.1 Généralités Un reverse proxy effectue le travail opposé à celui d un proxy "standard". En effet, un proxy classique se place entre un client et les serveurs auxquels il peut accéder. Il transfère les requêtes HTTP du client aux serveurs externes et lui renvoie les réponses correspondantes. Un proxy inversé se place entre un serveur et tout ses clients. Plus généralement, on va utiliser ce type de proxy afin d obtenir un seul point d entrée vers un ou plusieurs serveurs de manière transparente pour l utilisateur. Le reverse proxy récupère les requêtes HTTP des clients et se charge de les transmettre aux serveurs internes designés par les requêtes correspondantes. Il existe de nombreuses solutions logicielles qui implémentent ce mécanisme (Apache, Squid, Pound, Nginx etc...). 1.1.2 Avantages et inconvénients Ce type d infrastructure permet de contrôler en un unique point l accès aux serveurs. Le proxy va également permettre de filtrer de manière efficace les requêtes qui sont transmises aux serveurs. En effet, le proxy ne transmet pas la requête telle qu il la reçoit mais il en créé une nouvelle qui est basée sur celle qu il a reçu. 3

On peut laisser à la charge du proxy de déchiffrer le traffic SSL/TLS qu il intercepte. On peut alors laisser les requêtes transiter en clair sur le réseau interne (audit de sécurité plus facile de cette manière) et en même temps réduire la consommation de bande passante. Ce système permet d obtenir une couche supplémentaire de sécurité, à la place d avoir plusieurs serveurs visibles de l extérieur (multipliant ainsi les risques d attaques), il n y a que le proxy qui est mis en avant ce qui permet de cacher le reste des serveurs. Cacher la topologie réseau permet de donner beaucoup moins d informations aux attaquants et ainsi offrir une meilleure résistance aux attaques mais également d effectuer des changements internes sans avoir à en notifier les utilisateurs (transparence totale pour l utilisateur). Il existe quelques points négatifs quant à la mise en place d un reverse proxy. Un seul point d accès au réseau permet d accroître la sécurité mais cela signifie qu il existe un unique point de défaillance du système : si le reverse proxy est attaqué, cela peut engendrer des conséquences graves car l attaquant aura accès à tout le réseau. On peut remédier à cela en mettant en place plusieurs reverse proxy afin de limiter les risques de défaillances. De plus, le fait d accroître la sécurité va sensiblement accroître la complexité du réseau. 1.1.3 Un proxy inversé sécurisé Notre objectif est d obtenir un reverse proxy basé sur Apache qui accepte uniquement des requêtes HTTPS en entrée et qui les redirige en clair vers un serveur. Les requêtes une fois déchiffrées doivent être analysées et filtrées par un pare-feu applicatif afin de limiter les risques d attaques pouvant viser le serveur. Il s agit d un module Apache appelé mod_security qui permet de réaliser ce genre d opérations de filtrage au niveau des requêtes HTTP. 4

1.2 Fonctionnement d Apache appliqué à notre cas La mise en place d un reverse proxy avec Apache a besoin du module proxy qui est disponible nativement. Cependant, dans notre cadre qui nécessite une certaine sécurité nous devons utiliser des modules supplémentaires comme le module ssl (natif) ainsi que le module security. On peut éventuellement ajouter le module evasive afin de pouvoir limiter dans une certaine mesure les attaques de type DDOS (Distributed Denial of Service). 1.2.1 mod_evasive Ce module de sécurité pour Apache a pour objectif de détecter les accès massifs à certaines ressources qui sont révélateurs d attaques de type DDOS et de les stopper (dans une certaine mesure) en bloquant temporairement les IP néfastes. Il peut être intéressant d installer ce type d outil sur un reverse proxy afin de limiter les risques de défaillances en cas de DDOS de faible ou moyenne envergure. 1.2.2 mod_ssl Il s agit du module dédié aux échanges chiffrés grâce aux protocoles SSL/TLS. Dans notre configuration, il va s occuper de vérifier si le client utilise bien une connexion sécurisée. Si ce n est pas le cas, le client qui utilise une requête non sécurisée se verra éconduit. 5

1.2.3 mod_security Ce module est un pare-feu applicatif permettant de filtrer les flux HTTPS de manière très précise parce qu il a accès aux données de la transaction avant le chiffrement et après le déchiffrement. Il agit un peu à la manière d un IDS (Intrusion Detection System) mais en analysant le traffic réseau au niveau HTTP. mod_security fonctionne grâce à une ensemble de règles assez complexes permettant de bloquer des schémas d attaques HTTP et de filtrer certaines requêtes suspicieuses. Ce module va plus loin en filtrant également les réponses HTTP ainsi que le contenu des requêtes de type POST. Lorsqu il est correctement configuré, il permet d empêcher de manière très efficace un nombre impressionnant d attaques (injections sql, tentatives d attaques type xss etc..). 1.2.4 mod_proxy Son rôle est de récupérer les flux SSL/TLS qu il reçoit et de les renvoyer sous forme de requêtes HTTP simples vers le/les serveurs protégés derrière le proxy. 2 Mise en place 2.1 Installation Nous allons tenter de mettre en place sous Ubuntu Server 10.04 LTS la solution de reverse proxy que nous avons évoqué précédemment. $ sudo apt-get install apache2 $ sudo apt-get install libapache2-mod-security2 libapache2-mod-evasive Les paquets nécessaires à la configuration ont été installés. Il est bien évidemment possible d installer Apache et les différents modules à partir de leurs sources. Il est également possible d installer les modules et de les ajouter à une configuration Apache pré-existante en utilisant la commande apxs2. 6

2.2 Configuration On pense à stopper Apache avant de faire les modifications : $ sudo service apache2 stop On active les modules nécessaires : $ sudo a2enmod proxy proxy_http ssl Il est inutile d activer les modules evasive et security car ceux-ci ont déjà été activés lors de l installation via apt-get. On peut vérifier que tous les modules ont bien été activés de la manière suivante : $ ls /etc/apache2/mods-enabled/ grep -ie "security evasive proxy ssl" ou bien de cette façon pour voir la liste des modules activés : $ a2enmod Pour mettre en place une configuration minimale pour mod_security : $ cp /usr/share/doc/mod-security-common/examples/modsecurity.conf-minimal /etc/apache2/conf.d/mod-security.conf Il est possible de définir des règles de filtrage beaucoup plus pointues pour mod_security (cf. Références). énormément de documentation sur mod_security est obsolète depuis la sortie de la version 2 (exemple : directives SecFilter* dépréciées). Il faut maintenant modifier la configuration d Apache afin qu il puisse écouter sur le port 443. Pour cela, nous allons modifier le fichier 000-default présent dans /etc/apache2/sites-enabled : 7

Listen 443 <VirtualHost x.x.x.x> DocumentRoot /www/example.com ServerName www.example1.com # Autres directives ici </VirtualHost> Les protocoles SSL/TLS fonctionnent n apprécient pas vraiment la directive NameVirtualHost, il faut donc spécifier en dur l adresse IP du serveur. On utilise les directives suivantes pour configurer mod_ssl : SSLEngine on SSLCertificateFile /usr/local/apache/conf/ssl.crt/bar.crt SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/bar.key Afin de mettre en place le reverse proxy nous devons paramétrer les directives inhérentes à mod_proxy. D après les exemples présents dans la documentation, on obtient quelque chose de la sorte : ProxyRequests Off ProxyPass /foo http://foo.example.com/bar ProxyPassReverse /foo http://foo.example.com/bar La directive ProxyPass va permettre de faire pointer http ://votresite.com/foo vers http ://foo.example.com/bar et ainsi rediriger les requêtes vers le serveur interne. ProxyPassReserve permet d ajuster les en-têtes Location, Content-Location et URI des réponses de redirection HTTP. Il faut également passer la directive ProxyRequests à off ce qui permet de désactiver la fonctionnalité de proxy simple mais pas celle de reverse proxy. 8

Pour configurer mod_evasive, il vous faudra modifier /etc/apache2/apache2.conf pour ajouter quelques lignes : <IfModule mod_evasive20.c> DOSHashTableSize 3097 DOSBlockingPeriod 20 DOSSiteInterval 20 DOSSiteCount 40 DOSPageInterval 1 DOSPageCount 3 </IfModule> Il s agit de bloquer un attaquant en lui renvoyant une erreur 403 pendant une période (DOSBlockingPeriod) s il charge plus d un certain nombre de page (DOSSiteCount) pendant un certain intervalle (DOSSiteInterval). Dans ce cas, on bloque un utilisateur s il charge plus de 40 pages en 20 secondes. On pense à relancer Apache une fois la configuration terminée : $ sudo service apache2 restart 9

3 Références Sites officiels http://httpd.apache.org/ http://www.modsecurity.org/ http://www.zdziarski.com/blog/?page_id=442 Documentations http://httpd.apache.org/docs/2.2/mod/mod_proxy.html http://sourceforge.net/apps/mediawiki/mod-security/index.php?title= Reference_Manual http://www.modssl.org/docs/2.1/ssl_reference.html Tutoriels http://www.securite-info.org/tutoriel-15-eviter-les-attaques-dos. html http://www.symantec.com/connect/articles/web-security-appliance -apache-and-modsecurity http://www.symantec.com/connect/articles/apache-2-ssltls-step-step-part-1 http://www.hsc.fr/ressources/breves/ssl_virtualhosts.html.en http://www.nbs-system.com/blog/modsecurity_howto/ http://www.apachetutor.org/admin/reverseproxies http://www.askapache.com/htaccess/reverse-proxy-apache.html Document rédigé avec L A TEX 10