Applications WEB et sécurité
Transcription
Applications WEB et sécurité
Michel Chabanne –Administrateur sécurité –Ecole Polytechnique [email protected] APPLICATIONS WEB ET SECURITE Une approche de terrain Quelques constats Premiers serveurs visés par les attaques: Web et m a i l ( p l a c é s e n D MZ …) C i b l e s d ’ a t t a q u e : l o g i c i e l s e r v e u r ( I I S , A p a c h e ) e t processeur de script (ASP, .NET, PHP) Objectif: simple « plaisanterie », prise de contrôle, hébergement de contenu illicite La sécurité des services web = sécurité du serveur m a i s p a s s e u l e m e n t … Sécurité multi-niveaux Sécuriser son serveur: comme pour tous les types de service! Sécuriser les applications: l ep l u s d i f f i c i l e … Sécuriser la communication client-serveur: cryptage, inspection de flux, proxy inverse Sécuriser son serveur web (I) Windows: IIS (Internet Information Server) Actuellement en v6 (éradiquer la v5) Les outils IISLockdown et URLScan sont obsolètes Sécurité liée aux mises à jour WindowsUpdate Points clés P a s d ’ I I Ss u r u n c o n t r ô l e u r d ed o m a i n e Les sites sont sur un disque non système Verrouiller les permission NTFS sur les sites Supprimer tous les contenus fournis par défaut Déterminer la techno de script à utiliser et activer seulement celle-l à( . N E T , C GI , A S P , I S A P I …) Sécuriser son serveur web (II) Apache Choisir son OS, le sécuriser (*BSD ! ) Masquer la version ServerSignature ServerTokens Off Prod U t i l i s a t e u r d ’ e x é c u t i o n ! =root ( t r i v i a l m a i s …) Désactiver: Directory browsing, SSI Désactiver les modules non nécessaires (mod_*) Sécuriser son serveur web (III) Apache [suite] Se protéger contre les attaques DoS: Variables Timeout LimitRequestBody MaxSpareServers, MaxRequestsPerChild, ThreadsPerChild, ServerLimit, MaxSpareThreads Utiliser le chrooting (= configuration « cage »). Le module mod_security pour Apache est utile! R e s t r e i n d r el e s a c c è s ( a u t h e n t i f i c a t i o n , @I P …) Sécuriser les logiciels connexes (MySQL…) : u n a u t r e sujet ! –attention aux frontends (phpMyAdmin…) Sécuriser les applications: PHP (I) E x e m p l e s d ’ a t t a q u e s © commentcamarche.net Sécuriser les applications: PHP (II) Un sujet très vaste M i n i m i s e r d i f f u s i o n d ’ i n f o r m a t i o n s s e r v e u r Contrôle des saisies utilisateur Ne pas utiliser de contrôle côté client (JScript, VBScript) Utiliser du code de validation (type, taille des données) Opérer intelligemment avec ses bases de données D e m a n d e r s e u l e m e n t l ’ i n f on é c e s s a i r e! Contrôler, contrôler et encore contrôler les données !! Bien gérer les exceptions/codes erreur de retour Sécuriser les applications: PHP (III) Sécuriser les applications: PHP (IV) Séparer le développement en couches Accès aux données Traitement Présentation Documenter son code en ligne (PHPDoc…) Nomenclature des fonctions et variables Utiliser des « templates » plutôt que de mixer le code HTML et PHP Utiliser error_reporting() intelligemment Journaliser au maximum les événements Sécuriser la communication (I) Le meilleur test: un sniffer ! U n er è g l e : d è s q u ’ i l yaa u t h e n t i f i c a t i o n , i l ya nécessité de SSL/TLS (Transport Layer Security) Voir à ce sujet: certificats SSL RENATER gratuits http://www.renater.fr/spip.php?article429 Apache 2.x inclut un module SSL de base mod_security offre des règles de filtrage basées sur les regex Sécuriser la communication (II) D a n s l ec a s d ’ a p p l i c a t i o n n -tier: penser à sécuriser la communication entre les serveurs (IPSEC?) Sécurité des serveurs IIS : penser au reverse proxy (mod_proxy d ’ A p a c h e ) Serveurs sensibles: utilisation IDS « host »/IPS à considérer; penser également à TripWire Importance de la journalisation et aspects légaux d el ac o n s e r v a t i o n ( 1 a n , m a i s p a s 2 …) Bilan Penser la sécurité de bout en bout (des clients aux – parfois multiples –serveurs) Penser la sécurité en n-dimensions (sur toutes les couches) Développer les applications avec la sécurité comme premier objectif Tenir ses briques à jour ! OS-PHP-Apache-*SQL Merci de votre attention