Le World Wide Web et la sécurité
Par |Pr0teK|, pr0tekti0n@hotmail.com
Ce document parle de la sécurité sur le WWW, qui est sujet tres vaste...
Il est à la portée de tous, surtout pour les novices.
Tout ordinateur relié à Internet court un risque.
Qu'il s'agisse d'un ordinateur utilisé en poste de travail ou bien un serveur important, cela
revient au meme malheureusement.
Les chemins qui permettent de "voler" des informations à des ordinateurs reliés au réseau
(Internet) sont multiples.
Les systemes commerciaux de shopping ou de vpc reclament des méthodes qui protegent les données
qu'ils transmettent de plus en plus performants...
Supposons qu'une société par exemple un grand journal, utilise son serveur Web non pas seulement
pour fournir des informations à ses lecteurs, mais aussi pour échanger des informations avec
d'autres personnes.
La concurence apprend par hasard que le chef de la société utilise son prénom pour mot de passe.
Une semaine plus tard, le reportage du siecle ne parait pas dansd un journal de Paris, mais dans
un magasin toulousain, et cela trois jours avant la date prévue pour sa sortie...
Sans doute un tel incident pourrait etre de quelque utilité... Que le grand public prenne
connaissance des problemes qu'il peut y avoir sur des serveurs Web...
2) Risques pour la sécurité: les navigateurs Web
Les navigateurs Web tel que Netscape ou Ms Explorer, outils standards de tous les usagers, sont
de plus en plus puissants. Mais la puissance de ces logiciels peut dissimuler de nombreux
dangers à peine connus.
C'est une grosse erreur de croire qu'un navigateur ne serait qu'un outil un peu con et dont
sa principale fonction serait de charcher des documents web.
Les nouveaux navigateurs utilisent des programmes supplémentaires tels que les plug and play.
Ceux-ci sont tout d'abord importés du Net, puis mis en service, et ce sans l'avis de l'usager...
En général, le plus grand risque, pour les clients, et qu'un programme s'execute tout seul.
Jusqu'à présent, on connait les javascripts qui permetent à des agresseurs potanciels d'espionner
au moyen de scripts java, des données de l'ordinateur client.
On ne peut prévoir quels autres dangers feront courir ce type de programme.
Il en va ainsi pour les applets java et les plug ins des navigateurs web, chargés à partir du Net
exactement comme les programmes disponibles via FTP: il n'est jamais dit qu'ils sont exempts d'er
reurs et surtout qu'ils sont fiables.
Un programme qui est mis en service relié à un réseau peut occasionner toute sort de dégats.
En voici quelques exemples:
Le cheval de Troie dit à un utilisateur qu'il est d'une grande utilité, alors qu'en réalité, il
lui causera des dommages. A priori, tout logiciel pourrait etre un cheval de Troie.
Et contrairement aux virus, il n'existe pas de procédure générale permettant de détecter les
structures dangereuses des logiciels...
On ne peut jamais etre sur qu'un logiciel chargé à partir du Net est exempt de virus, ou n'est
pas lui meme un virus qui se répand dans le systeme ou il a pénétré.
3) Comment rendre votre navigateur plus sur ?
- Protégez vous contre les virus! Une méthode simple mais pourtant tres efficace consiste à
toujours examiner au moyen d'un antivirus tout ce que vous téléchargez sur le Net.
- Ne faites pas toujours un essai des nouveautés actuelles! Les nouveaux logiciels ont plus de
chance de comporter des erreurs que ceux qui sont déjà sortis depuis longtemps.
Faites attention aussi aux sorties de logiciels non officielles, comme icq99 par exemple, qui
était infecté par un trojan...
- Informez vous! Tenez vous informé de ce qui se passe sur le Net en matière de sécurité, alez
voir les newsgroups (comp.security.*) et allez bien sur voir l'excelent:
http://www.alternetive.asso.fr/securite/
- Le plus important, etre conscient! Sur IRC par exemple, n'acceptez pas de fichiers de personnes
inconnues.
4) Risques pour la sécurité: le serveur Web!
Les problèmes de sécurité sur les serveurs Web sont très divers. Ils peuvent survenir avec:
- Le logiciel serveur (Apache...)
- Le système d'exploitation utilisé (NT, Linux...)
- Les propriétés du TCP/IP
Cette question recouvre des apects très divers, de sorte que nous ne pouvons certes pas donner
un apercu de tout ce qui concerne ces problèmes.
Le système d'exploitation UNIX.
La plupart des serveurs Web tournent sur des systèmes Unix car ils sont particulierement bien
adaptés à la plupart des fonctions serveurs. De plus, les protocoles TCP/IP sont nées sur des
systèmes Unix!
UNIX, en raison de sa souplesse, est prédestiné à l'exploitation de serveurs Web, mais les
risques bien connus en ce qui concerne la sécurité ne lui sont pas inconnu.
Faire fonctionner un serveur Web Unix implique que l'on porte une grande attention aux questions
de sécurité.
Un serveur UNIX devrait faire l'objet d'une installation suffisament sure pour etre protégé
contre les intrusions.
Problèmes de sécurité sur les serveurs du WWW.
La présentation qui suit traite des problèmes des serveurs Web.
La plupart de ces problèmes se retrouvent sur tous les systèmes d'exploitation.
Le coeur de tout serveur Web est le http deamon, qui acceuil les requetes sur un port TCP et
retourne des réponses.
Fonctions d'un serveur http deamon:
------------- ---------------
- Programme - <=========================> - HTTP DEAMON -
------------- ---------------
________| |
| ------V----------
| - Documents Web -
------------------------ -----------------
- Documents Web (html) - |
------------------------ |
^ |
| |
| |
| -------V--------
--------------------- - Port 80 TCP -
- Sytème de fichier - ---------------
---------------------
Pour votre serveur Web, il faut que vous teniez absolument compte des directives concernant la
sécurité.
Les problèmes concernant la sécurité des serveurs peuvent se répartir en deux catégories:
- Les problèmes du httpd liés au système: ce sont les problèmes dus à la configuration du
logiciel http.
- Les bogues: Aucun logiciel n'est exempt de fautes.
L'une des difficultés pour sécuriser un serveur Web sous Unix tient à ce que celui-ci doit etre
lancé avec des autorisations afin de pouvoir servir le port 80, standard du web.
Il faudrait arriver à mettre un logiciel httpd sur le port 1024 par exemple, dans ce cas,
il peut etre ouvert sous un ID d'utilisateur non privilégié.
Le problème est qu'il faudrait ecrire: http://www.serveur.com:port/
Cette solution n'est pas utilisée pour des raisons de marketing (adresse difficile à retenir).
Avec un système multi-utilsateur, les droits d'utilisateurs jouent un role important sur les
données et réprtoires du serveur.
Le User-ID sous lequel marche le serveur doit posséder un minimum de droits de lecture, pour
que les visiteurs puissent y accéder.
Certains systèmes d'exploitation supportent des liens ou des alias pour les fichiers et
répertoires.
Un fichier ou un répertoire est alors relié à un autre nom qui peut se trouver dans un autre
répertoire; ce que l'on appelle un lien.
Qu'un serveur Web tienne compte de tels liens peut soulever des problèmes de sécurité.
Créez par exemple, sous le répertoire accessible du serveur Web, un lien avec un autre répertoire
dont vous voulez voir les données...
Un autre problème (décidement...), peut intervenir quand un serveur Web défectueux assigne un
répertoire par l'intermédiaire d'un lien et non pas du répertoir supérieur...
Si le httpd est configuré de telle manière qu'il tienne compte des liens crées avec la commande
ln -s, alors l'ensemble du système fichier sera vulnérable...
On veut souvent que des répertoires particuliers ne puissent etre lus intégralement par
n'importe qui mais que leur accès soit réduit à un nombre limité d'utilisateurs.
Il est possible de demander un mot de passe lors du chargement d'un répertoire, mais un autre
moyen existe, qui est de restreindre les adresses IP autoriseés ou les host names.
Il faudrait pour cela:
- Utilisez toujours des adresses IP pour le serveur de facon à ce qu'il n'accepte pas que l'on
annule, en revenant en arrière, des numéros IP pour des noms d'hotes.
- N'associez jamais un serveur Proxy en lui donnant une permission d'accès. Car dans ce cas,
tous les utilisateurs pourraient accéder à vos données protégées.
- Pour ne pas etre victime de manipulation DNS, vous devez toujours n'utiliser que des adresses
IP pour vos indications "allow/denied from" et aménager votre serveur Web de telle sorte
que tout reverse-Mapping soit impossible sur le Name Service (Logiciels Apaches/NCSA...).
Les scripts CGI sont des programmes que l'on peut appeler d'un serveur Web. Le serveur peut alors
transmettre des données d'un utilisateur Web au programme qui peut à nouveau envoyer des réponses
à l'utilisateur. (ex: questionnaires...).
Les sripts CGI peuvent remplir de nombreuses taches: du simple envoi d'un message (forum) à la
recherche dans une banque de données. Généralement, les scripts CGI utilisent des formulaires
HTML. (allez voir: http://www.cgiforme.com/)
L'information apportée par un utilisateur peux etre relayée de plusieurs facons:
- dans le cas le plus simple, les informations sont placées sur un serveur puis exploitées par
le script CGI.
- Si le script CGI est appelé avec HTTP-GET, c'est à dire comme un document normal, les entrées
de l'utilisateur sont transférés dans la ligne de la commande.
Remarque: Sur certains systèmes, la longueur de la ligne de commande est très limitée.
Sur les anciennes versions des serveurs Web UNIX, il etait possible d'appeler au moyen de signes
particuliers des commandes système par l'intermédiaire d'un appel CGI.
Ce problème est évité avec l'usage de HTTP-POST.
Les scripts CGI constituent réellement un des plus importants problèmes pour la sécurité des
serveurs Web. Ils permettent que soient lancés des programmes sur lesquels on peut agir librement
. Des intrus qui connaissent des bogues ou des erreurs de programmation peuvent s'ils le veulent
accéder directement à tout système.
A coté des questions de sécurité d'orde "technique", la fiabilité des données transmises via le
Web occupe une importance de plus en plus grande.
Comme, en général, l'ensemble des données sont transmises sur Internet en texte clair, il est
réellement possible à d'enventuels agresseurs de prendre connaissance de celles ci.
Mais ceci est parfaitement inacceptable pour les utilisateurs comme celle des services de VPC.
Codage, confidentialité et... authenticité.
Des systèmes de codage permettent de protéger des données transmises sur Internet.
Vous connaissez sans doute le PGP (Pretty Good Privacy).
Contrairement aux systèmes de cryptages utilisés pour les E-Mail (PGP), un chaos très dense
règne dans l'univers des systèmes de cryptage...
Pour crypter un document Web, un question se pose: Ou doit on effectué la modification ?
La possibilité la plus utilisée est le cryptage des données HTTP.
Pour cela, le protocole HTTP est modifié de telle facon que le serveur Web et le client "s'enten
dent", avant la transmission meme des données.
Autre possibilité: crypter les données TCP/IP.
Les protocoles de cryptage
- NCSA httpd PGP/PEM
Une extension a été developpé par NCSA pour le HTTP Deamon qui sert à utiliser des procédés
tels que le PGP et le PEM.
Dans ce cas, le cryptage n'est pas réalisé sur le serveur mais au moyen de programmes.
--------------- Demande de documents ---------------
| |>===================================================>| |
| BROWSER WEB | | SERVEUR WEB |
| | Contenu Documents | | |
---------------<===================================================<---------------
| |
| |
Documents PGP!
| |
| Serveur Secret <=====|
------------ |
| Logiciel | |
| PGP | |
------------ |
| |
| Client public
Clé publique |
| |
| |
|___________________________-------------____________________________|
| Keyserver |
| |
-------------
- SHTTP
SHTTP (Secure HTTP) a été développé par une société ricaine.
Voici le procédé: (ce shéma est tiré de "SECURITY FIRST" )
-------------- ---------------
| Client Web | | Serveur Web |
-------------- ---------------
NEGOCIATIONS
Je peux ABC, DEF et IJK, mais j'aurais besoin de XTZ
--------------- ---------------
| Browser Web |=============================================>| Serveur Web |
--------------| INTERNET | SHTTP |
|=============================================>---------------
Serveur Publique "Ok, on prend XYZ avec ABC"
TRANSMISSION
Requete Contenu
--------------------============================================>--------------------
| Module de Crypto | INTERNET | Module de Crypto |
--------------------<============================================--------------------
Contenu codé avec
clé publique
Pour SHTTP, on effectue le choix du procédé de cryptage entre client-serveur.
- Microsoft PCT (cette partie est tirée de documents trouvés sur le WWW.)
Autre procédé de cryptage qui est lui aussi direcetement applicable au TCP/IP et qui par
ailleurs peux etre également utilisé pour l'authentification: PCT de MS.
- Netscape SSL (cette partie est tirée de documents trouvés sur le WWW.)
SSL (Secure Sockets Layer) travaille directement sur la couche TCP/IP,
=======================================
= APPLICATION =
=======================================
= HTTP = NTTP = SMTP = ...... =
=======================================
= SLL =
=======================================
= Adresse IP =
=======================================
Le serveur et le client communiquent avec SLL d'apres un processus "handshake" au cour
duquel le serveur envoie un réponse à une demande de clé publique.
6) Bilan: Rien n'est vraiment sur...
Meme si Netscape a remédié à des bogues bien connus, il n'en reste pas moins que les systemes
cryptologiques sont vulnérables.
La question que nous devons nous poser est la suivante: Comment etre à 100 % sur de la sécurité ?
On peut espérer que des pays comme les Etats Unis arretent de mettre des quotas d'export pour
leurs programmes de cryptage...
Des passages de ce document ont été traduit de l'anglais par |Pr0teK| avec l'accord des auteurs
respectifs.
|Pr0teK|