Vous êtes sur la page 1sur 14

Michel Chabanne Administrateur scurit Ecole Polytechnique

michel.chabanne@polytechnique.edu

APPLICATIONS WEB ET SECURITE


Une approche de terrain
Quelques constats
Premiers serveurs viss par les attaques: Web et
mail (placs en DMZ)
Cibles dattaque: logiciel serveur (IIS, Apache) et
processeur de script (ASP, .NET, PHP)
Objectif: simple plaisanterie , prise de contrle,
hbergement de contenu illicite
La scurit des services web = scurit du serveur
mais pas seulement
Scurit multi-niveaux

Scuriser son serveur: comme pour tous les types de


service!
Scuriser les applications: le plus difficile
Scuriser la communication client-serveur: cryptage,
inspection de flux, proxy inverse
Scuriser son serveur web (I)
Windows: IIS (Internet Information Server)
Actuellement en v6 (radiquer la v5)
Les outils IISLockdown et URLScan sont obsoltes
Scurit lie aux mises jour WindowsUpdate
Points cls
n Pas dIIS sur un contrleur de domaine
n Les sites sont sur un disque non systme
n Verrouiller les permission NTFS sur les sites
n Supprimer tous les contenus fournis par dfaut
n Dterminer la techno de script utiliser et activer seulement
celle-l (.NET, CGI, ASP, ISAPI)
Scuriser son serveur web (II)
Apache
Choisir
son OS, le scuriser (F *BSD ! )
Masquer la version
ServerSignature Off
ServerTokens Prod
Utilisateurdexcution != root (trivial mais)
Dsactiver: Directory browsing, SSI

Dsactiver les modules non ncessaires (mod_*)


Scuriser son serveur web (III)
Apache [suite]
Se protger contre les attaques DoS: Variables
n Timeout
n LimitRequestBody
n MaxSpareServers, MaxRequestsPerChild,
ThreadsPerChild, ServerLimit, MaxSpareThreads
Utiliser le chrooting (= configuration cage ). Le
module mod_security pour Apache est utile!
Restreindre les accs (authentification, @IP)
Scuriser les logiciels connexes (MySQL): un autre
sujet ! attention aux frontends (phpMyAdmin)
Scuriser les applications: PHP (I)

Exemples dattaques

commentcamarche.net
Scuriser les applications: PHP (II)
Un sujet trs vaste
Minimiser diffusion dinformations serveur
Contrle des saisies utilisateur
Ne pas utiliser de contrle ct client (JScript, VBScript)
Utiliser du code de validation (type, taille des donnes)

Oprer intelligemment avec ses bases de donnes


Demander seulement linfo ncessaire !
Contrler, contrler et encore contrler les donnes !!

Bien grer les exceptions/codes erreur de retour


Scuriser les applications: PHP (III)
Scuriser les applications: PHP (IV)
Sparer le dveloppement en couches
Accs aux donnes
Traitement
Prsentation

Documenter son code en ligne (PHPDoc)


Nomenclature des fonctions et variables
Utiliser des templates plutt que de mixer le code
HTML et PHP
Utiliser error_reporting() intelligemment
Journaliser au maximum les vnements
Scuriser la communication (I)
Le meilleur test: un sniffer !
Une rgle: ds quil y a authentification, il y a
ncessit 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 rgles de filtrage bases
sur les regex
Scuriser la communication (II)
Dans le cas dapplication n-tier: penser scuriser
la communication entre les serveurs (IPSEC?)
Scurit des serveurs IIS : penser au reverse proxy
(mod_proxy dApache)
Serveurs sensibles: utilisation IDS host /IPS
considrer; penser galement TripWire
Importance de la journalisation et aspects lgaux
de la conservation (1an, mais pas 2)
Bilan
Penser la scurit de bout en bout (des clients aux
parfois multiples serveurs)
Penser la scurit en n-dimensions (sur toutes les
couches)
Dvelopper les applications avec la scurit comme
premier objectif
Tenir ses briques jour ! OS-PHP-Apache-*SQL
Merci de votre attention