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