rapport final wso2

35
Sécurisation de web service Tuteur : Christophe TURBOUT Auteur : Gaëtan TURCAS Année universitaire : 2012-2013

Upload: imadelaabedy

Post on 25-Sep-2015

243 views

Category:

Documents


0 download

DESCRIPTION

Sécurité des web-services

TRANSCRIPT

  • Scurisation de web service Tuteur : Christophe TURBOUT

    Auteur : Gatan TURCAS

    Anne universitaire : 2012-2013

  • Scurisation de web service 2012/2013

    Gatan TURCAS 2

    Remerciements

    Je tiens remercier monsieur Christophe TURBOUT de m'avoir accompagn tout au long de ce projet, en effet grce lui j'ai pu dvelopper ce projet dans le bon sens, en tablissant une liste dtapes franchir afin de le mener bien.

    Enfin, je remercie lquipe des enseignants toujours prsente pour rpondre toutes mes questions.

  • Scurisation de web service 2012/2013

    Gatan TURCAS 3

    Sommaire

    1. Web service ........................................................................................ 5

    1.1. Qu'est-ce quun Web service? ................................................................................... 5

    1.1.1. Fonctionnement ........................................................................................................................... 5

    1.1.2. Avantages ........................................................................................................................................ 6

    1.1.3. Inconvnients................................................................................................................................ 6

    2. WSO2 Framework for PHP ............................................................ 7

    2.1. Fonctionnent ..................................................................................................................... 7

    2.2. Composition du web service Framework PHP ................................................. 8

    2.3. Utilisations et utilisateurs ........................................................................................ 10

    3. Les objectifs..................................................................................... 13

    3.1. Installation ...................................................................................................................... 13

    3.1.1. Problmes rencontrs............................................................................................................ 14

    3.2. Tests de la plate-forme .............................................................................................. 15

    3.2.1. Mon premier service............................................................................................................... 16

    3.2.2. Tests de scurit ....................................................................................................................... 18

    3.2.3. Fonctionnement des certificats ......................................................................................... 19

    3.2.4. Test 1 aucune scurit ........................................................................................................... 22

    3.2.5. Test 2 Authentifications ........................................................................................................ 22

    3.2.6. Test 3 Chiffrements ................................................................................................................. 23

    3.2.7. Test 4 Signatures avec les certificats .............................................................................. 24

    3.2.8. Test 5 Temps de validit d'un message ......................................................................... 25

    3.2.9. Problmes rencontrs............................................................................................................ 25

    3.3. Mise jour de scurit de la plate-forme ......................................................... 27

    3.4. Intgrer du CDATA ...................................................................................................... 27

    3.5. Conclusion des quatre objectifs ............................................................................ 29

    4. Droulement du projet ................................................................ 29

    5. Conclusion ....................................................................................... 31

    6. Glossaire .......................................................................................... 32

    7. Bibliographie .................................................................................. 33

    8. Annexe .............................................................................................. 34

  • Scurisation de web service 2012/2013

    Gatan TURCAS 4

    Introduction

    Aujourdhui, linformatique joue un rle essentiel aussi bien pour les professionnels que pour les particuliers. En effet, les systmes informatiques sont dsormais au cur de toutes les fonctions de lentreprise et plus gnralement dans la vie quotidienne. tant ainsi trs utilis, il y la ncessit de les optimiser.

    Pour cela, il existe des outils appels Web Service. Ceux-ci sont trs utiliss dans le domaine des entreprises pour garantir un fonctionnement permanent des services.

    Ainsi, ce projet portera essentiellement sur ltude et lanalyse d'une solution de web service "WSO Web Service Framework for PHP". Le projet se situe donc dans une thmatique de test et d'amlioration de la scurit : Comment installer tester et amliorer la plateforme WSO ? .

    Pour rpondre cette problmatique, je vais dans un premier temps vous expliquer ce quest un Web service , comment il fonctionne et opre. Dans un deuxime temps, je montrerai la ralisation des diffrents objectifs, comprenant l'installation, tests de la scurit, mise jour de scurit puis l'intgration de CDATA. Enfin nous tirerons une conclusion.

  • Scurisation de web service 2012/2013

    Gatan TURCAS 5

    1. Web service

    Avec la connexion des ordinateurs en rseau sur internet, il est possible de faire fonctionner des applications sur des serveurs distants. L'intrt d'une application fonctionnant distance est de permettre notamment :

    De centraliser les donnes uniquement sur un serveur distant Le serveur est gnralement physiquement plus puissant (puissance de calcul, de

    stockage) que les ordinateurs des clients. Le service centralis peut tre utilis simultanment par un grand nombre

    dutilisateurs. L'application distante peut tre utilise simultanment par un grand nombre

    d'utilisateurs et sa mise jour n'intervient qu' un seul endroit.

    Les Web Services sont une solution dfinissant un standard de communication avec des applications distantes et d'en rcuprer les rsultats travers internet.

    1.1. Qu'est-ce quun Web service?

    Un service web, ou web service, est un programme de communication entre applications distantes travers internet ou intranet. Le concept est indpendant de tout langage de programmation. La notion darchitecture de service a t dfinie sur le modle SOA. SOA (Service Oriented Architecture) est un modle d'architecture permettant lintgration des divers systmes dinformation de lentreprise qui considre chaque ressource informatique comme un service.

    1.1.1. Fonctionnement

    Un ou plusieurs clients d'environnement diffrents comme client Java, PHP vont envoyer une requte un ou des services situs dans un autre lieu. Le service va traiter et interprter la demande et renvoyer une rponse au client. Le service est interconnect des basses de donnes.

    Pour communiquer, il utilise le protocole HTTP comme moyen de transport.

    Les requtes changes entre clients et services utilisent le protocole SOAP (Simple Object Access Protocol) ou REST (Representational State Transfer). Ces requtes sont dans un format XML, elles sont envoyes du client au service. Le service interprte les

  • Scurisation de web service 2012/2013

    Gatan TURCAS 6

    balises XML, puis traite et calcul le message du client. Le service finit par envoyer une rponse de type SOAP ou REST au client.

    1.1.2. Avantages

    L'avantage d'utiliser une architecture web Service est de centraliser la puissance de calculs dans un serveur ddi aux calculs et reli directement la base de donnes. Les clients qui peuvent tre nombreux sont donc allgs de la puissance de calcul. Cet avantage permet donc de diminuer les couts. Si la puissance de calcul avait t rpartie sur tous les clients, le cout aurait t beaucoup plus lev (multiplication des serveurs physiques puissants, multiplication des bases de donnes...).

    Un autre avantage est la maintenance informatique, le fait de centraliser les services facilite la gestion base de donnes services, serveur web.

    1.1.3. Inconvnients

    Si le web service n'est pas scuris, il y a potentiellement une faille de scurit avec une attaque de type l'homme du milieu "man in the middle " entre client et service, o les changes de donnes peuvent tre interceptes et modifies en usurpant l'identit d'un client ou d'un service. Heureusement, il existe des parades pour viter ce type d'attaque avec des certificats d'authenticits. Nous verrons plus en dtails la scurit du web service.

  • Scurisation de web service 2012/2013

    Gatan TURCAS 7

    2. WSO2 Framework for PHP

    WSO2 est une solution de web service open source, disponible en plusieurs langages de programmation par exemple en C, PHP. Il est destin aux dveloppeurs et aux professionnels.

    La solution de web service est un middleware, il se place entre les clients et services. Elle permet linteroprabilit des diffrents langages de programmation (.net, java, PHP...).

    La version tudie pour le projet annuel est WSO2 Framework for PHP.

    Un API est disponible sur le site officiel WSO.com afin de connatre les diffrentes classes et options qui soffrent l'utilisateur. Notamment les paramtres de scurits, que j'ai utilis et analys dans le projet.

    WSO2 est disponible sous diffrents types de format chacun ayant des utilisations diffrentes.

    2.1. Fonctionnent

    Source : http://wso.com

    Un client ou des clients (partie de gauche) de diffrents environnements (java, .net, c++, navigateur internet) veulent accder diffrents serveurs d'applications contenant des services (partie de droite). WSO le serveur de web service qui est un middleware, se situe donc au milieu. Il permet de contrler les actions et requtes de clients vers services. Le Framework en PHP permet d'interprter la configuration dans le code des clients et services afin d'appliquer des actions.

    La base de donnes peut tre relie au web service afin de la rendre accessible depuis les clients ou serveurs d'applications. La puissance de calcul ncessaire est centralise

  • Scurisation de web service 2012/2013

    Gatan TURCAS 8

    au niveau des serveurs dapplications. La puissance physique des clients peut tre ainsi rduite, car elle neffectue pas de calcul.

    2.2. Composition du web service Framework PHP

    Le Web service dfini dans ce projet repose sur plusieurs couches pour fonctionner.

    Source : http://wso2.com

    Le cur du web service repose sur le serveur Web Apache avec le module Axis2/c. Le cur est crit en C (Web service Framework for C) permettant le fonctionnement et la configuration de la plate-forme. La communication se fait avec le langage XML, et les protocoles SOAP et REST.

    XML (Extensible Markup Language) : langage de programmation avec balises extensibles (cration de ses propres noms pour les balises).

    SOAP (Simple Object Access Protocol) : Transmit ion des messages avec le protocole SOAP en HTTP (Hypertext Transfer Protocol), et HTTPS (Hypertext Transfer Protocol Secure). L'intrt de SOAP est qu'il permet d'autoriser un objet invoquer des mthodes d'objets physiquement situs sur un autre serveur.

    REST (Representational State Transfer) : est un style darchitecture de web service bas sur les URL (Uniform Resource Locator). Il se base sur HTTP pour la

  • Scurisation de web service 2012/2013

    Gatan TURCAS 9

    transmission de messages entre clients et services. Cependant, il ne rajoute pas de nouvelle couche d'abstraction au-dessus du protocole contrairement SOAP.

    Binary Attachments with MTOM (Message Transmission Optimization Mechanism) : On peut attacher une pice jointe aux messages changs par le web service.

    Diffrentes options de web service WS-* sont possible comme WS-Security qui permet de configurer la scurit, comme la mise en place du chiffrement des donnes, ou encore l'authentification.

    WS-Addressing : Standard permettant de transmettre des messages SOAP.

    WS-Security : permet d'appliquer des options de scurit.

    WS-securityPolicy : reprsente un ensemble d'options qui dcrivent les possibilits et les contraintes de scurit.

    WS-ReliableMessaging : Spcifications sur la fiabilit des messages.

    Le Framework en PHP est constitu du service API et client API qui permet linterprtation et le traitement des commandes en langage PHP vers le cur en C. Le Framework permet de gnrer et d'interprter le WSDL (Web Service Description Langages). Celui-ci fournit une description des actions possibles du web service en format XML. En outre, le WSDL dcrit le protocole de communication SOAP, le format des messages requis pour communiquer avec le web service, les mthodes que le client peut invoquer.

    Enfin, le web service est compatible avec .NTE et Java qui permet l'interoprabilit entre plusieurs langages.

  • Scurisation de web service 2012/2013

    Gatan TURCAS 10

    2.3. Utilisations et utilisateurs

    Aujourd'hui, la plate-forme de web service WSO est utilise au niveau international dans diffrents domaines. Par exemple, le domaine du commerce en ligne, des transports ou encore de la communication. Des entreprises comme Ebay ou Expedia se servent du web service WSO.

    Dans l'image ci-dessous vous pouvez voir diffrents domaines d'utilisation ainsi qu'un panel de clients qui utilisent le web service WSO.

    Source : http://wso.com

    Exemple d'utilisation avec Expedia

    Expdia est une agence de voyages. Lorsquun client d'Expdia va sur le site internet : expedia.com, celui-ci accde un formulaire de recherche de voyage , cette page internet affiche dans le navigateur web d'un utilisateur est considre comme client.

  • Scurisation de web service 2012/2013

    Gatan TURCAS 11

    Ci-dessous le site Expedia.fr avec son formulaire de recherche de voyage.

    Une fois que l'utilisateur du site a rempli le formulaire de recherche de vol, celui-ci va cliquer sur rechercher un voyage, le client web va envoyer une requte contenant les informations inscrites dans le formulaire au service web. Le service va rechercher dans sa base de donnes les vols possibles en fonction des contraintes inscrites dans le formulaire, puis va renvoyer une rponse au client web avec les rsultats de sa recherche.

    Ci-dessous la rponse du site Expedia pour la recherche dun vol Paris New York.

  • Scurisation de web service 2012/2013

    Gatan TURCAS 12

    Enfin, la compagnie WSO2 propose plusieurs autres applications, serveurs et modules qui ne seront pas tudis dans ce projet.

  • Scurisation de web service 2012/2013

    Gatan TURCAS 13

    3. Les objectifs

    Cette partie est ddie l'explication des diffrents objectifs du projet, ainsi que la ralisation, solution, et quelques problmes rencontrs. Les l'objectifs du projet ont t dcoups en quatre tches : Installation, tests de scurit, mise jour de scurit et enfin inclure du CDATA.

    3.1. Installation

    Le premier objectif du projet consiste installer la plateforme WSO2 for PHP dans un environnement de test. Pour ce faire, j'ai mis dans un premier temps, un environnement virtuel avec le logiciel VirtualBox. Cette solution de virtualisation me permet de transporter et d'exporter mon travail d'un ordinateur un autre sans modifier l'environnement du systme d'exploitation de la machine mre. Vous trouverez dans lannexe les dtails des commandes pour linstallation.

    Ensuite, partir de VirtualBox, j'ai install un systme UNIX Debian. WSO2 est galement compatible pour une installation Windows. Mon choix s'est port sur le systme UNIX qui me permet contrairement son concurrent Microsoft d'avoir une visibilit supplmentaire sur se qui se passe vraiment.

    Avant de mettre en place la plate-forme, WSO2 a besoin pour fonctionner de certains prs requis. Il faut tout d'abord installer :

    Le serveur Web Apaches avec quelques modules associs.

    PHP5 pour le langage de programmation PHP avec quelques modules associs.

    OpenSSL pour la scurit et la gnration de certificats.

    Une fois les diffrents services installs, il faut tlcharger WSO2 framework for PHP, le compiler et l'installer. Enfin, il reste configurer PHP5 avec la plate-forme.

    Ci-dessous le schma dinstallation

  • Scurisation de web service 2012/2013

    Gatan TURCAS 14

    3.1.1. Problmes rencontrs

    Linstallation de la plate-forme WSO2 a t assez lourde mettre en place. La documentation fournie par WSO manque d'informations et de dtails au niveau des prs requis dinstallation. En effet, il faut notamment activer les services comme PHP dans un certain mode ou version ( dev ). cause de ce problme de mode, la compilation de WSO chouait. J'ai rsolu le problme de chaque module un un avec lerreur fournie chaque compilation (30 minutes une compilation...).

    Autres problmes : La prise en charge du mode WSDL ne se faisait pas correctement une fois la plate-forme WSO excute. Le problme tait d la mauvaise configuration de PHP qui chargeait mal lenvironnement de WSO. J'ai russi le rsoudre avec l'aide de mon tuteur de projet en corrigeant un fichier de configuration de PHP.

    Malgr quelques difficults d'installation, la plate-forme de web service est finalement oprationnelle pour les tests.

  • Scurisation de web service 2012/2013

    Gatan TURCAS 15

    3.2. Tests de la plate-forme

    Dans cette partie, je vais vous prsenter le fonctionnement de la plate-forme partir de la solution installe prcdente.

    WSO fournit des exemples accessibles via le navigateur web qui permet de valider et de comprendre le fonctionnement des requtes changes entre clients et services, la gnration de WSDL, diffrentes options de scurit.

    Dans l'image ci-dessous vous pouvez apercevoir la page d'exemple fourni par WSO

    Dans chaque exemple on, peut afficher le code en PHP de la partie client et du service. Le bouton WSDL permet d'afficher en langage XML la description du service. En enfin, le lien run client excute la page PHP du client.

    Ci-dessous un extrait du premier exemple au format WSDL.

  • Scurisation de web service 2012/2013

    Gatan TURCAS 16

    Ci-dessous le premier exemple excut.

    Ces premiers exemples simples mont permis de comprendre le fonctionnement de la plate-forme WSO. J'ai ainsi abouti crire un code afin de comprendre et vrifier le code ct service et client. J'ai donc suivi un tutoriel recommand sur le site wso.com pour les dbutants, afin de tester le mcanisme de messages envoys entre client et service.

    3.2.1. Mon premier service

    Mon premier service va calculer la valeur factorielle d'un nombre. On se place dans l'optique gnrale que le service est hberg sur un serveur avec une puissance importante de calcul. Le client peut tre une machine lambda avec de faibles performances. Dans notre simulation on s'imagine que le calcul d'une factorielle require des ressources processeur importantes.

    Le client veut connatre la valeur de la factorielle du nombre 10. Il va envoyer une requte

    HTTP contenant un message SOAP. Dans celui-ci, on trouve en XML la valeur 10. Le service

    rceptionne la requte et interprter le message. Il calcule la factorielle du nombre 10, et il

    renvoie une rponse contenant les rsultats de la factorielle 10.

    L'image ci-dessous met en vidence les changes de message entre clients services.

    J'ai ainsi cr un fichier client.php contenant le code client permettant d'envoyer et recevoir des requtes au service de factorisation service.php. Ce dernier est aussi un fichier programmer

    Le code PHP du client: En vert le code en PHP en rouge la partie requte en XML qui sera envoye au service, en jaune (optionnel) affiche dans le navigateur web les messages envoys et reus..

  • Scurisation de web service 2012/2013

    Gatan TURCAS 17

    $client = new WSClient(array("to" => "http://localhost/facto/service.php"));

    $response = $client->request($requestPayloadString);

    $simplexml = new SimpleXMLElement($response->str);

    echo "Result = ".$simplexml->result[0]."";

    printf(" Request = %s ", htmlspecialchars($client->getLastRequest()));

    printf(" Response = %s ", htmlspecialchars($client->getLastResponse()));

    ?>

    Pour le service en PHP : En vert le code en PHP, en rouge la rponse en XML qui sera envoye au client.

    str);

    $value = $simplexml->param[0];

    $result = factorial($value);

    $responsePayloadString =

    En excutant le client dans un navigateur, on obtient le rsultat suivant :

    Result = 3628800

    Request = 10

  • Scurisation de web service 2012/2013

    Gatan TURCAS 18

    Response = 3628800

    La rponse du service donne le rsultat de la factorielle 10 qui est 3628800.

    En jaune, on peut remarquer la requte envoye du client au service. Le message contient une enveloppe SOAP constitue de balise XML avec la valeur 10.

    En rouge, la rponse du service qui utilise galement le standard SOAP. On peut voir le rsultat dans la rponse reue par le client.

    Concernant la scurit de cet change entre client service, rien ne prouve que le service, ou client contact soit bien le bon. Les messages peuvent tre couts et lu par une personne extrieure en coutant le canal de transmission avec un outil comme tel que Wireshark. Enfin, le service ne demande pas d'authentification au client. Il est donc important de scuriser ses changes. C'est pour cette raison que le projet porte sur des tests de scurit

    3.2.2. Tests de scurit

    Les trois critres de scurit reposent sur la: disponibilit, l'intgrit et la confidentialit.

    Source de l'image Wikipedia.org

    La disponibilit : Vise rendre le plus disponible et fonctionnel le systme informatique. Il est possible de calculer la disponibilit en pourcentage sur une priode dfinie. Pour assurer la disponibilit, plusieurs moyens peuvent tre combins tels que la sauvegarde, redonder les quipements, et enfin prvoir un plan de reprise d'activit (PRA).

    Intgrit : a pour objectifs de garder les donnes intactes que ce soit dans une transmission, dans un stockage ou encore de leur traitement. L'intgrit vise s'assurer que les donnes nont pas t altres (modifies) par un pirate ou une erreur de traitement. Afin de permettre une intgrit des donnes pendant les changes, il faut utiliser une fonction de hachages tels que MD5 (Message Digest 5) et des certificats clef

  • Scurisation de web service 2012/2013

    Gatan TURCAS 19

    publique et prive. Ces derniers prouvent l'identit des deux correspondants par exemple entre client et service. La fonction de hachage permet de donner une empreinte unique une donne, si la donne a t modifie l'empreinte changera aussi. On peut ainsi prouver que la donne n'a pas t corrompue. Cette section de scurit permet de se prmunir de la clbre attaque de l'homme du milieu.

    La confidentialit : a pour but de rendre accessible l'information uniquement aux personnes autorises et authentifies. La confidentialit peut tre associe aux donnes d'un systme d'information, et aussi aux messages transmis entre entits. Pour rendre cette confidentialit possible, il faut chiffrer les donnes et messages avec un algorithme de cryptographie tel que RSA (Rivest Shamir Adleman). Il y a deux possibilits : soit d'utiliser un secret partag (dit symtrique), ou le systme de certificats clef publique et clef prive (dit asymtrique).

    Enfin, sur les donnes stockes dans le systme d'information, il faut utiliser des pare-feu pour bloquer les ventuelles intrusions.

    De plus l'authenticit est primordiale dans la scurit car elle vise vrifier la bonne identit d'une personne. C'est pour cette raison que j'ai dcid d'utiliser le systme de certificat X509 pour les tests du web service. Dans cette tude, le critre de disponibilit ne sera pas utilis, pour la raison que les options ne dpendent pas directement du web service, mais plutt du systme mit en place autour (tel quun serveur de sauvegarde).

    3.2.3. Fonctionnement des certificats

    Utilit : pour identifier une ressource, chiffrer les donnes changes entre deux entits.

    Le certificat doit tre sign par un tiers de confiance tel que verising pour prouver la valeur sre de lidentit de celui qui possde le certificat. Le tiers de confiance permet de rvoquer un certificat si l'utilisateur du certificat est frauduleux, ou encore sil a t victime d'un piratage. Un certificat rvoqu par une autorit, n'est plus valid auprs des navigateurs web, ou autres outils qui vrifient le tiers de confiance. Dans le cas de notre web service, nous allons utiliser des certificats auto-signs pour des raisons de simplicit et de prix.(un certificat sign par un tiers un cot).

    Notre client et service possdent chacun une paire de clefs publique et prive.

    Si le client envoie un message chiffr (avec le couple clef publique du service et clef prive du client) au service, celui-ci est sr que c'est le client qui a envoy le message, car le service connat la clef publique du client et peut dchiffrer le message avec le couple clef publique du client et clef prive du service

  • Scurisation de web service 2012/2013

    Gatan TURCAS 20

    Dans limage ci-dessus le client et service schangent des messages chiffrs avec la cl publique du client et du service (selon le sens des requtes). Le pirate peut couter les messages chiffrs changs. Il connait les clefs publiques du client et service. Seulement pour dchiffrer les messages, il lui faut au moins une clef prive quil ne possde pas.

    Pour crer les certificats, j'ai utilis Openssl. Dans un premier temps, on gnre un certificat non sign.csr et une cl prive.pem.. Puis on cre un certificat ca.crt qui va permettre d auto-signer le certificat .crs. Quand celui-ci est sign par le certificat dautorit, il obtient comme extension .crt .

    Lutilitaire Keytool permet de crer des keystore . Un keystore permet de contenir plusieurs certificats et clefs prives. C'est en quelque sorte un coffre contenant des certificats. Le keystore permet une gestion simplifie des certificats. WSO prend en charge les keystore au format p12. J'ai donc dcid de crer un keystore pour le client et un pour le service.

  • Scurisation de web service 2012/2013

    Gatan TURCAS 21

    Ci-dessous un schma rassemblant clef prive, certificat (clef publique) et le keystore.

    Ci-dessous le certificat client.crt gnr (clef publique) :

    Ci-dessous la clef prive client.key :

  • Scurisation de web service 2012/2013

    Gatan TURCAS 22

    Pour chacun des tests suivants, le client va envoyer hello au service, celui-ci doit rpondre se

    qu'il reoit laide de la fonction echo . Seules les options de scurit WS-Security changent.

    Sauf pour le premier test, les rponses affiches ne sont pas compltes cause de leurs

    longueurs.

    3.2.4. Test 1 aucune scurit Le premier test doit permettre de comparer un test sans scurit et un avec scurit.

    Response = Hello

    Request = Hello

    Response = Hello

    Ici on peut voir que les deux requtes changes (rouge requte client ->service et en vert rponse du service ->client) ne possdent pas de champs d'authentification. Les messages circulent en claire, ce qui induit que n'importe quel client peut communiquer avec le service se faisant passer pour n'importe qui.

    3.2.5. Test 2 Authentifications

    Authentification par login et mot de passe (mode digest pour le mot de passe c'est--dire qu'il doit tre chiffr) : Pour des raisons de longueur et pour faciliter la comprhension, Le client et le service utilise les certificats pour sauthentifier en plus du login et mot de passe.

    Rappel, partir de ce test, les requtes prsentes sont des extraits.

    Dans la requte envoye par le client on retrouve le login Gaetan (en vert) et le mot de passe chiffr (en rouge) qui tait secure :

    gaetanfSAOwuJcTvggljQlZkABnx01dlk=

    >Hello

    World!

  • Scurisation de web service 2012/2013

    Gatan TURCAS 23

    Dans la requte et la rponse on peut voir en claire le message hello (en jaune).

    3.2.6. Test 3 Chiffrements

    Dans ce test, on va chiffrer les donnes envoyes au service. Mise en place des certificats sur le client et service. Le client connait la clef publique du service, et le service connait la clef publique du client.

    Dans le message envoy au service on ne peut plus voir le texte hello : il y a, la place la clef du certificat gnr avec RSA(en vert) puis suivi du texte chiffr (en rouge) avec l'algorithme AES-256 (Advanced Encryption Standard) :

    C=fr, ST=normandie, L=caen,

    O=Internet Widgits Pty

    Ltd1NooJg72e1ea

    eoiFySOGSdHbhKEcFiaNOXapsrFfpqcTdwyQhBHn9Vx5sB9UBbQsgGUm7my61hWX7RfiaU9Xfbw==C5xe8BqGutF3pAUOjUK3wh0O5MoscJOSIrSadTYlQ1JC+1/z

    SNPTUwyfOmWRYcQDwRQqeUtV3TZOdufTxIYGyTRBpE/4G0b1VCB17G0cDVdtadkwc2VbKlgZG69f7

    GZOQbTSGmszAnqp54iFroiFBg==

    Ainsi, on peut dire que le chiffrement est efficace, car le message HELLO ne circule plus en claire.

    Dans la rponse on peut galement remarquer les informations sur le certificat en vert, mais il y a dans la rponse le texte en claire ( en rouge) .

    C=fr, ST=normandie, L=caen, O=Internet Widgits Pty

    Ltd10aM2VbK2O

    OP4D7JFAAEOpFlV/x60P8y76fGtBI4q5vX8pm5DBWHBFn1HruEMjjJSdvBaOU8/HIhvqxvdh+5y+g==Hello

    World!

    La confidentialit des messages transmis entre client et service est compromise si le message circule en claire dans la rponse.

  • Scurisation de web service 2012/2013

    Gatan TURCAS 24

    J'ai abouti deux hypothses sur la question : pourquoi dans la rponse le message n'est pas chiffr ?

    1. WSO un problme de chiffrement dans la rponse du service. Dans le code du service il y a bien le chiffrement d'activ.

    2. Le client dchiffre directement le message ds la rception donc le chiffr non visible cet instant.

    Solution possible pour vrifier la deuxime hypothse : on peut regarder les changes avec Wireshark qui va capturer toutes les trames IP changes.

    On peut voir sur la capture avec wireshark que la rponse du service captur est en claire contrairement la requte du client.

    L'hypothse numro deux concluante. Il y a donc potentiellement un problme de scurit au niveau de la plate-forme WSO.

    3.2.7. Test 4 Signatures avec les certificats

    Rappel : la signature permet de vrifier la bonne identit d'un client ou d'un service.

    En jaune la signature cre avec le certificat. De plus, on remarque en rouge que le message est envoy en claire ce qui est normal, car l'option de chiffrement n'est pas active.

    NxMzh4WZhwYyEVTvxGS6eskd

    9Bg=FRjcLX0z9jKorXzZu4rXw/OL

    LFtgiraKH2l22PpCVTGKuqcdUeYnSKUd+5XZHlNccRIayuGWLgeoFGerZXSHR/fEyRX3aAIyK0wLIEyhl

    4JeMKzjS3dguzrouY7p9lndtlupZCBoXKEoZOMVlwWJ/IBlBACbBKaJxcDRVgTsXkc= ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-

    1.0#X509v3"/>Hello

    World!

    La rponse contient galement la signature.

  • Scurisation de web service 2012/2013

    Gatan TURCAS 25

    3.2.8. Test 5 Temps de validit d'un message

    L'option timestamp permet de dfinir une heure de validit de la requte envoye. J'ai programm une valeur de 60 secondes de validit.

    Dans la requte envoye au service, on peut voir en jaune l'option de date de validit. Ici la requte expire le 2013-02-28 13:46:53. En rouge le message est transmis en claire ce qui est normal, car l'option de chiffrement n'est pas active

    2013-02-

    28T13:45:53.230Z2013-02-

    28T13:46:53.231ZHello

    World!

    Il y a la mme option dans la rponse du serveur.

    Cette option de scurit permet d'viter qu'un pirate puisse rejouer des messages envoys au service ou au client.

    3.2.9. Problmes rencontrs

    Au dbut des tests je devais tester la plate-forme avec un logiciel open source SoapUI. Celui-ci permet de tester les web service. Malheureusement, il semble que la version de java utilise par SoapUi pour la gestion des keystores soit incompatible avec la version des keystores crs pour WSO. J'ai pass beaucoup de temps corriger ce problme, mais sans succs. Cependant, j'ai test le logiciel SoapUI sur un autre web service mit a disposition par le tutoriel du logiciel.

    Pour utiliser un service avec SoapUI, il suffit d'utiliser le format WSDL gnr par un service avec une URL de ce type : http://monwebservice.com/service.php?WSDL

    Une fois le service charg on peut configurer les options de scurit associes aux requtes envoyes au service. Une fois correctement configur, on peut notamment faire des tests de scurit pousss comme un test de charge de requte d'authentification.

  • Scurisation de web service 2012/2013

    Gatan TURCAS 26

    Vous pouvez voir dans l'image ci-dessous linterface graphique de SoapUI

    1 la gestion des diffrents projets en arborescence

    2 La requte envoye au service

    3 L'URL du service

    4 La rponse du service ici on peut voir une erreur de signature.

    C'est pourquoi cause de ces incompatibilits, et en accord avec mon tuteur, j'ai fait les tests de scurit (montrs prcdemment) en me basant sur les requtes changes visibles dans le navigateur web, et dans Wireshark.

    1

    2

    3

    4

  • Scurisation de web service 2012/2013

    Gatan TURCAS 27

    3.3. Mise jour de scurit de la plate-forme

    Le but est de mettre jour les bibliothques de scurit WS-security. WSO utilise OpeSSL pour grer la scurit.

    Au moment de la compilation du web service, celui-ci va chercher les modules et bibliothques ncessaires. Notamment les bibliothques Openssl. La solution sur un systme dj install, est de mettre a jour Openssl, puis de recompiler le web service avec les nouveauts de OpenSSL.

    Cette partie, valide par mon tuteur Christophe Turbout, a donc t traite assez rapidement.

    3.4. Intgrer du CDATA

    Le CDATA (Caratere DATA) permet de dfinir une chane de caractre dans du XML qui sera interprte uniquement comme du texte. Le CDATA commence une balise (en vert dans l'exemple ci-dessous). lintrieur on retrouve du texte pouvant contenir des symboles tels que < > & . En XML ces symboles ont une signification bien particulire comme une balise , si celle-ci n'est pas ferme on a une erreur dans le code XML. Le CDATA ne doit pas interprter les balises et symboles comme du XML (en jaune).

    Dans le body

    Du texte dans le Cdata avec une fausse balise & encore du texte

    ]]>

    Par dfaut, WSO ne gre pas correctement le CDATA. En effet, certain caractres comme < ,>, & sont quand mme interprts et peuvent provoquer des erreurs. WSO utilise une mauvaise bibliothque XML qui pose problme avec le CDATA. La solution consiste compiler le web service avec une option prenant en compte la dernire version libxml2.

    Test sur la plate-forme partir de lexemple de la factorielle. On va inclure du CDATA dans le XML et vrifier le comportement. Dans le CDATA nous allons mettre une balise non ferme, ainsi le CDATA est malgr tout interprt, mais nous allons avoir une erreur.

    Le client envoie le XML Le service envoie du XML

    10

    service avec suivis du

  • Scurisation de web service 2012/2013

    Gatan TURCAS 28

    suivis du symbole & un

    chiffre 3 ]]>

    symbole & un chiffre 3 ]]>

    $result

    En jaune ci-dessus la balise qui devrait provoquer une erreur XML si le CDATA n'est pas pris en compte.

    On excute le client et on obtient le rsultat ci-dessous :

    Result = 3628800

    Request = 10 le CDATA envoye par le

    client avec suivis du symbole & un chiffre 3

    Response = le CDATA envoye par le service avec

    suivis du symbole & un chiffre 3 3628800

    On remarque donc dans un premier temps qu'il n'y a pas d'erreur. En regardant plus en dtails les messages changs, on peut voir que les caractres spciaux et & ont t remplacs automatiquement par des codes (en jaune) pour ne pas tre interprts.

    Maintenant, si on remplace le XML du client en enlevant lentte

    10

    Le CDATA envoye par le client avec suivis du symbole & un chiffre 3

    En excutant dans un navigateur, on obtient une page vide.

    Dans les logs du web service on peut voir l'erreur qu'il n'arrive pas lire le XML, car le XML a une balise non ferme.

    Extrait d'un fichier de log du web service.

    [Thu Feb 28 11:32:29 2013] [error] libxml2_reader_wrapper.c(954) Specification mandate

    value for attribute non

    -- SEVERITY_ERROR

    [Thu Feb 28 11:32:29 2013] [error] libxml2_reader_wrapper.c(954) attributes construct error

    -- SEVERITY_ERROR

    [Thu Feb 28 11:32:29 2013] [error] libxml2_reader_wrapper.c(954) Couldn't find end of

    Start Tag balise

    -- SEVERITY_ERROR

  • Scurisation de web service 2012/2013

    Gatan TURCAS 29

    [Thu Feb 28 11:32:29 2013] [error] libxml2_reader_wrapper.c(443) error occurred in

    reading xml stream

    Le CDATA a bien rempli sa fonction de ne pas interprter le contenue du CDATA.

    Lobjectif du projet d'intgrer du CDATA est donc russi et fonctionnel grce aux options de compilation du web service.

    3.5. Conclusion des quatre objectifs

    L'installation de la plate-forme est assez lourde mettre en place, notamment cause de ses pr-requis pour la compilation et une documentation pas assez dtaille. Cependant, une fois correctement configure, la plate-forme est oprationnelle.

    Le deuxime objectif tait le plus long raliser. Les tests de scurits ont t raliss un un permettant de vrifier chaque option de scurit. J'ai cependant relev un problme qui demande un approfondissement sur le chiffrement du message contenu dans la rponse du service.

    Les mises jour de scurit des bibliothques ws-security repose sur OpenSSL. La solution trouve est trs simple : il suffit de compiler de nouveau le web service avec les dernires mises jour dOpenSSL.

    Enfin, le dernier objectif, d'intgrer du CDATA a t russi en important la bibliothque libxml2 l'installation de la plate-forme.

    4. Droulement du projet

    Le projet a t ralis sur la priode universitaire de fin octobre 2012 dbut mars 2013 soit 18 semaines afin de rpondre aux quatre objectifs. Sur cette dure il y a eu 3 soutenances : une en anglais pour prsenter le projet, une mi parcours et enfin, une soutenance finale.

    Dans la page suivante, un diagramme de Gant sur le dcoupage et rpartitions des diffrentes tches en fonction du temps.

  • Scurisation de web service 2012/2013

    Gatan TURCAS 30

  • Scurisation de web service 2012/2013

    Gatan TURCAS 31

    5. Conclusion

    WSO2 Framework for PHP est une solution de web service permettant d'amliorer les performances des serveurs web. Dans ce projet universitaire de 18 semaines, j'ai d raliser quatre objectifs : installer la plate-forme WSO2 Framework for PHP, la tester, mettre jour les bibliothques de scurit et enfin intgrer du CDATA.

    Je peux dire que ce projet de scurisation de web service a t trs enrichissant. En effet, grce celui-ci, j'ai pu matriser de nombreuses technologies utilises dans le domaine de la scurit et des web service trs utilises dans le monde professionnel.

    De plus, le projet m'a permit dacqurir de nombreuses connaissances en matire de programmation informatique. En effet, venant dun cursus orient Systme et rseaux, j'avais quelques lacunes en programmation. Cependant, J'ai su les surmonter et dvelopper au maximum mes connaissances afin de mener bien ce projet. Le web service install est fonctionnel, et amlior.

    Enfin, il reste un point de scurit approfondir, afin de dterminer pourquoi la rponse du service n'est pas chiffre. Nanmoins, ce projet, m'a permis de comprendre lintrt des technologies autour des web service et dassimiler son importance au sein du monde professionnel.

  • Scurisation de web service 2012/2013

    Gatan TURCAS 32

    6. Glossaire

    HTTP (Hypertext Transfer Protocol) : est un protocole de navigation internet.

    HTTPS (Hypertext Transfer Protocol secure) : est un protocole de navigation internet scurise.

    SOA (Service Oriented Architecture) : Larchitecture oriente service reprsente un moyen technique dintgration des divers systmes dinformation de lentreprise considrant chaque ressource informatique comme un service.

    SOAP (Simple Object Access Protocol) : Il permet la transmission de messages entre objets distants, ce qui veut dire qu'il autorise un objet invoquer des mthodes d'objets physiquement situs sur un autre serveur.

    WSDL (Web Services Description Language) : dcrit une Interface publique d'accs un Service Web.

    XML (Extensible Markup Language) : est un langage informatique de balisage.

    Open SSL (Secure Layer Security): Est un module utilis pour la cration de certificat. Il permet de gnrer des cls de chiffrements

    VirtualBox : Est un logiciel qui permet de lancer sur un systme dexploitation dautres systmes.

    URL (Uniform Ressource Locator): Est une adresse internet de type http://google.com qui pointe vers une page web.

    Pare-feu: Celui-ci permet dappliquer des rgles de filtrage sur le trafic entrant et sortant dun rseau.

    WS-* : reposent tous sur un ensemble de protocoles et de standards de base utilises pour l'change de donnes entre applications dans des environnements divers. Cest une liste de spcification lie au web service.

    Certificat X509 : il est comme une carte d'identit numrique. Il est utilis principalement pour identifier une ressource, mais aussi pour chiffrer des changes.

  • Scurisation de web service 2012/2013

    Gatan TURCAS 33

    Apache : Serveur Web le plus utilis actuellement.

    PHP (Hypertext Preprocessor) : est un langage programmation principalement utilis pour produire des pages Web dynamiques via un serveur http.

    CDATA (Caratere DATA) : permet d'indiquer l'analyseur de ne pas interprter les caractres contenu dans la section CDATA.

    7. Bibliographie

    Sites consults :

    http://wso2.com

    http://openssl.org

    http://httpd.apache.org

    http://php.net

    http://www.xmlsoft.org

    http://planet.petalslink.com/home/pygibello/2010/12/02/generation-dun-

    keystore-jks-contenant-un-certificat-signe-openssl-keytool/

    http://wikipedia.org

  • Scurisation de web service 2012/2013

    Gatan TURCAS 34

    8. Annexe

    Installation de la plateforme WSO

    1. Installation de la distribution linux Debian avec interface graphique.

    2. Ajout des sources liste:

    On ajoute les sources listes suivantes dans le fichier /etc/apt/sources.liste :

    deb http://ftp.fr.debian.org/debian stable main contrib non-free

    deb-src http://ftp.fr.debian.org/debian stable main contrib non-free

    deb http://ftp.debian.org/debian/ squeeze-updates main contrib non-free

    deb-src http://ftp.debian.org/debian/ squeeze-updates main contrib non-free

    deb http://security.debian.org/ squeeze/updates main contrib non-free

    deb-src http://security.debian.org/ squeeze/updates main contrib non-free

    3. Installation des modules ncessaires:

    Module build-essential:

    apt-get install build-essential

    Serveur Web apache:

    apt-get install apache2

    Le module PHP5 et PHP en mode dev et xsl:

    apt-get install php5 php5-dev php5-xsl

    Des bibliothques, et le mode axis2c pour apache :

    apt-get install libaxis2c-dev libaxis2c-doc librampart-dev libaxis2c-bin libapache2-mod-

    axis2c libxml2-dev

    4. Tlchargement de la plate-forme WSO2 framework for php depuis le site officiel. 5. Compilation WSO

    Dans le dossier source de wso2for php tlcharg prcdemment :

    ./configure ( ajouter les options si erreur)

    make

    make install

  • Scurisation de web service 2012/2013

    Gatan TURCAS 35

    6. Configuration de PHP

    Dans le fichier /etc/php/conf/php.ini il faut ajouter les lignes suivantes afin dintgrer le web service :

    [wsf]

    extension=wsf.so

    extension=xsl.so

    extension_dir="/usr/lib/php5/20090626+lfs/"

    include_path = ".:/home/wso2-wsf-php-src-2.1.0/scripts/"

    wsf.home="/usr/lib/php5/20090626+lfs/wsf_c/"

    wsf.log_level=5

    7. Test PHP

    Pour vrifier si les modules installs sont bien activs on peut crer dans le serveur web

    (/var/www/) un fichier test.php qui contient :

    En accedant la page dans un navigateur web, on a des informations sur les modules PHP

    modules activs.

    8. Exemples fournis par WSO Pour accder aux exemples fournis par WSO il faut crer un Lien symbolique :

    ln -s /home/wso2-wsf-php-src-2.1.0/samples /var/www/samples

    A partir de maintenant la plate-forme est oprationnelle.

    9. Fichiers de logs Il est possible de consulter les logs du web service :

    /tmp/wsf_php_server.log pour la partie serveur et /tmp/wsf_php_client.log pour la partie

    client.