Suivant: Détection sur l'applet
Monter: Essais-Erreurs
Précédent: Essais-Erreurs
Notre attaque se base sur des inondations si bien que la première idée qui nous est venue à l'esprit
était d'utiliser des compteurs.
Comme le premier symptôme de cette attaque était une grande quantité d'erreurs 404, nous avons regardé s'il n'était pas possible de faire quelque chose avec cela.
- Du coté du serveur, il s'agirait de compter le nombre d'erreurs 404 qui sont retournées par
client pendant un laps de temps. Cette solution a l'avantage de réduire le nombre de paquets
comptabilisés. De plus, si on est certain que tous les liens du serveur sont corrects, il est
assez facile de fixer un seuil au-delà duquel il y a un risque de DDos.
- De même, du coté du client, il s'agirait de compter le nombre d'erreurs 404 reçues par
utilisateurs. Ici aussi, l'évaluation du nombre d'erreurs acceptées est facile à évaluer.
Ce mode de détection fonctionne correctement. Cependant, cette solution peut rapidement être
contournée si le hacker décide d'envoyer des requêtes vers des pages valides.
Dans ce cas nous avons du envisager une nouvelle solution qui était de compter le nombre de requêtes
effectuées par URL. Cette solution est parfaitement réalisable mais très lourde de conséquences pour
l'IDS.
- En effet, si on se trouve du coté du serveur et que celui-ci comporte beaucoup de ressources
(un grand nombre d'url ou d'éléments référencés par les pages html), on aura un grand nombre de
compteurs à gérer. De plus, il est difficile de savoir si ces requêtes proviennent d'un seul
utilisateur ou de plusieurs. De même pour un site comme le WEF qui n'est ouvert qu'à l'occasion
de certains événements, il n'est pas possible de savoir à l'avance combien de fois une page sera
demandée pendant un certain intervalle.
Donc quel que soit la situation, il est difficile de fixer un seuil au-delà duquel on peut
affirmer que l'on est attaqué.
- Si on se trouve du coté d'un client et que l'organisation dispose d'un grand nombre de machines
susceptibles d'envoyer des requêtes, logger toutes les urls contactées par ses utilisateurs peut
se révéler lourd de conséquence pour l'IDS. En effet, le stockage et l'analyse de ceux-ci sont
susceptibles de causer un DoS de l'ids lui-même.
Bien que cette solution nous permette de détecter un DDoS par requêtes HTTP d'une façon plus
générale que la détection d'erreurs 404, elle n'est pas très performante. De plus, elle risque d'
engendrer un DoS sur l'IDS lui-même ce qui n'est pas vraiment ce que nous souhaitons.
Afin de contourner ce problème, nous nous sommes demandé s'il ne fallait pas plutôt comptabiliser
le nombre de requêtes effectuées (vers des fichiers .html, .php, .jsp, ...)
pendant un certain laps de temps par un utilisateur (sur base des adresses IP)
- Du coté client, il s'agirait de compter le nombre de requêtes lancées par un utilisateur pendant
un intervalle particulier. Sachant que les demandes sont temporisées ( une requête toutes les 2
secondes dans le cas de notre applet ), il doit être possible d'évaluer un nombre limite de
requêtes effectuées. On peut dès lors limiter les intervalles de temps et les bornes supérieurs
ce qui réduit la charge des logs par rapport à la solution précédente.
- Du coté serveur, il s'agirait de compter le nombre de fois qu'un client contacte le serveur
pendant un certain laps de temps. Connaissant la temporisation de l'applet, on peut envisager de
limiter l'intervalle de temps. Comme on distingue les utilisateurs, on n'a plus le problème de
devoir évaluer le nombre de personnes qui risquent de contacter celui-ci. De plus, dès que l'un
deux dépasse le nombre limite de requêtes permises pendant l'intervalle de temps, une alerte est
lancée et le nombre de logs effectués est limité.
Cependant, on conserve l'inconvénient de la gestion des compteurs.
Il est donc clair que la détection par compteur peut être très pénalisante si on ne paramètre pas
bien les éléments à comptabiliser. Cependant, tant que les requêtes sont fausses, la première solution
est très efficace.
Suivant: Détection sur l'applet
Monter: Essais-Erreurs
Précédent: Essais-Erreurs