www.colder.ch  -   3 Juin 2004
Sécuritée basée sur l'ip, oui mais ! par Colder.ch

La sécuritée basée sur l'ip du visiteur est tentante, nottament si c'est un script réservé à l'intranet. Donc le script chargé de cette sécurité vérifie que la valeur obtenue par la fonction getenv("REMOTE_ADDR"); appartienne bien aux ips 10.0.0.xxx par exemple.

Prenons un cas concret:

admin.php effectue un test sur l'ip du visiteur, voici un exemple de test courrant:

<?php
list($ip1,$ip2,$ip3,$ip4) = explode(".", getenv("REMOTE_ADDR"), 4);

if (
$ip1 == "10" AND $ip2 == "0" AND $ip3 == "0"){
print
"accès accordé";
}
else{
die(
"accès refusé");
}
?>

Il n'est pas compliqué de comprendre ce script. Premièrement on sépare l'adresse ip par les points, les stoquant dans $ip1, $ip2, $ip3, $ip4, puis on teste les valeurs de ces variables.
Ce test logique repondra TRUE aux ips 10.0.0.xxx, donnant l'accès au visiteur. Ce script est sécurisé car en soit l'on ne peut modifier getenv("REMOTE_ADDR"); qu'en modifiant son adresse ip. Et les ips du type 10.0.0.xxx ne sont pas souvent attribuée sur internet ;) Quoi qu'il en soit , imaginons cette partie entièrement sécurisée, que du point de vue des ip, tout soit sécurisé. Super ! oui mais... Il faut faire très attention avec ces sécurités IP et voici pourquoi:

C'est votre ordinateur en résau qui à accès, pas vous:

Premièrement, il faut vous assurer que vous soyez le seul utilisateur potentiel de votre ordinateur, donc cela requiert un ordinateur sécurisé par mot de passe, quil soit tout le temps sous surveillance etc. Chose délicate, alors qu'une protection utilisateur-mot de passe ne vous ferait moin de souci.

Les trojans:

Les trojans, ces petits programmes commandés de l'exterieur afin de prendre le contrôle de votre machine, bien que les antivirus d'aujourd'hui font la vie dure à ces types de programmes, c'est un risque à ne pas négliger. Car il est bien clair qu'un "pirate" au commande de votre ordinateur, visiteras les pages intranet avec votre IP, lui laissant l'accès complet.

Le SE (Social engineering):

Quoi, le social engineering ? Mais qu'est ce que ca peut bien avoir comme rapport avec les sécurités basées sur l'ip?
Et bien oui, le SE ou l'art de manipuler les gens, est très dangereux et souvent impossible à contrer. Voici l'expliquation shématisée:


Figure 1

Ce shéma illustre la situation initiale, l'idée alors est vite comprise, il faut forcer intranet user à effectuer les actions voulues. Imaginons que la sécurité soit extrème, et qu'ils n'existe pas de moyen de prendre le contrôle de intranet user, il reste cependant l'aspect humain, c'est là que le Social engineering devient "interressant".

Il suffit d'envoyer un mail, contenant une url quelconque, exemple : http://www.attaquant.foo/ le but est d'inspirer confiance à la victime pour lui faire visiter le site. Sur votre site , il vous suffit d'installer une redirection vers le site intranet, avec l'action voulue à l'interieur. exemple: http://intranet/admin/db_manage.php?action=killtable&name="tbl_news". Bien sûr qu'il faut connaitre le fonctionnement du site intranet, ce qui dans la plupart des cas pose problème. Cette redirection va se faire chez lui, lui fesant visiter une page du site intranet dont il a accès, et lui faire automatiquement effectuer une action.

Figure 2

Il est bien sur possible de sauter l'étape [2] en inserrant dans le mail un lien direct vers le serveur, mais si l'utilisateur intranet est méfiant, votre attaque est ratée. Il est donc "préférable" d'utiliser un site qui effectuera la redirection lui même, ou il est impossible de prédire si oui ou non le site est dangereux.

Conclusion:

La sécurité a un prix, mais quand le prix est de simplement devoir se logguer à chaque connexion au site, il est préférable de l'adopter. A mon avis la sécurité par IP est trop dangereuse pour l'aspect pratique qu'elle peut avoir. C'est pourquoi je déconseille les protections simplement basées sur l'ip. A bon entendeur...

Colder.ch, 3 Juin 2004