Un script kiddie à Delhi, en Inde, tente de pirater notre site depuis la nuit dernière. Il a écrit un script de navigateur qui fait des requêtes à notre serveur en boucles imbriquées massives, essayant tout sous le soleil.
Il ne va nulle part et ne dépasse même pas nos défenses de base (mais il remplit nos fichiers journaux).
Nous renvoyons un 403 Unauthorized
à ses demandes presque dès leur entrée, mais plus vite nous bloquons ses demandes, plus vite son script s'exécute.
Nous aimerions introduire un "retard" quelconque avant de renvoyer la réponse 403. Plus c'est long, mieux c'est.
Question: Comment pouvons-nous retarder les tentatives de piratage sans affecter le reste du site?
- Je suppose qu'un Sleep (15000) sur son fil serait une mauvaise nouvelle pour les autres visiteurs du site.
- Faire tourner un nouveau fil juste pour lui semble exagéré.
- Existe-t-il un autre moyen d'envoyer une réponse différée?
- Combien de temps pouvons-nous forcer son navigateur à attendre? Je suppose que je ne me soucie pas beaucoup s'il obtient l'
403 Unauthorized
erreur ou éventuellement expire, alors nous pourrions probablement même faire une attente indéfinie / infinie.
Réponses:
Il devrait y avoir un pare-feu séparé quelque part devant votre serveur Web. Vous souhaitez empêcher que les demandes ne parviennent jamais à votre serveur, de sorte que, en ce qui concerne son adresse IP, votre serveur n'existe plus.
la source
Il existe de véritables systèmes de détection d'intrusions, petits et grands, qui le feront automatiquement pour vous en fonction des différents filtres, pots de miel et autres mécanismes
Par exemple, voir fail2ban qui peut être configuré pour prendre des actions basées sur l'analyse des journaux.
De cette façon, vous pouvez
Il existe d'autres outils plus gros, voir la section voir aussi sur wikipedia.
Comme votre question est marquée comme asp.net, je suppose que votre plate-forme de serveur est Windows. Néanmoins, si l'utilisation du pare-feu Linux est une option, vous pouvez essayer ce qui précède
Un tel pare-feu peut être exécuté sur un matériel extrêmement modeste - pensez même à quelque chose comme des routeurs linksys (voir ici ) pour des bandes passantes de liaison très décentes.
la source
S'ils proviennent d'une adresse IP ou d'un bloc d'adresses spécifique, vous pouvez y ajouter un itinéraire de trou noir:
Vous pouvez également accomplir cela en utilisant une règle iptables, mais sachez que les règles iptables sont traversées linéairement, donc si vous commencez à ajouter des règles iptables pour chaque mécréant qui arrive, vous pouvez commencer à consommer beaucoup de CPU. Les tables de routage sont optimisées pour gérer de nombreuses entrées. Par exemple, une de mes boîtes contient 350 000 entrées dans sa table de routage sans problème. Mais si j'avais des règles iptables 3K, la boîte tomberait presque certainement.
Si vous essayez de faire quelque chose où votre application se met en veille pendant plusieurs secondes sur ces connexions, vous risquez de bloquer suffisamment de ressources pour que les demandes légitimes ne puissent pas obtenir de ressources.
la source
iptables
sur un noyau avec desipset
capacités peut correspondre très efficacement à d'énormes listes d'adresses IP, mais il semble qu'aucune des principales distributions ne soit activéeipset
dans leurs noyaux.Vous ne pas voulez le ralentir parce que le ralentissement va mal prendre votre site vers le bas comme si elle était sous une attaque DoS parce que vos fils seront « occupé » le service des demandes de cette personne. Ce que vous voulez faire, c'est bloquer son IP et en finir avec cela. Il n'y a aucune raison d'appâter la personne qui le fait.
la source
Ce que vous recherchez est le module Apache mod_evaisve.
Sur les distributions basées sur Debian, installez-le en utilisant
CentOS / RHEL
mod_evasive garde une trace des demandes venant d'Apache et interdit IP en utilisant iptables qui passent la valeur de seuil. C'est un outil ultime contre les attaques DoS basées sur HTTP et même les attaques DoS distribuées lorsque vous êtes ciblé par un énorme botnet avec des milliers d'IP différentes.
Il s'exécute en tant que module Apache chargé pendant l'exécution et non en tant que démon distinct.
Cependant, un attaquant intelligent avec le contrôle d'un énorme botnet peut toujours faire tomber votre serveur Web en chronométrant les demandes envoyées par chaque zombie du botnet afin qu'aucune IP ne dépasse jamais la valeur de seuil.
Dans ce cas, vous devez utiliser l'IDS basé sur les anomalies et probablement entraîner le système vous-même. Mais il est très peu probable que cela se produise à moins d'avoir de vrais gros ennemis ou quelqu'un avec un programme d'entreprise.
la source
Si vous utilisez linux, utilisez iptables pour limiter le gars à aimer 1 octet / s avec de gros retards et lui faire prendre une éternité pour obtenir une seule requête. S'il est distribué, cela n'aidera pas beaucoup.
Je ne sais pas comment vous le feriez sous Windows, mais vous pouvez trouver des options similaires dans votre routeur ou pare-feu matériel, si vous en avez un.
EDIT: D'accord avec ce qui précède, cela ressemble plus à une question de panne de serveur.
la source
Si l'adresse IP du gars est assez constante, vous pouvez créer un HttpModule personnalisé, branchez-le via une modification dans le fichier web.config et ayez un retard quand il est reconnu comme cette adresse IP. Ou vous pouvez lui renvoyer quelque 404 codes ou le rediriger vers un autre endroit.
la source
Vous savez qu'ils sont en Inde. Votre site a-t-il des clients indiens importants qui empêcheraient simplement de bloquer toute leur plage d'adresses IP au niveau du pare-feu par incréments jusqu'à ce que le flux s'arrête? Ce n'est certainement pas une solution ferme, mais si vous avez simplement affaire à un `` script kiddie '' typique, cela devrait suffire à les décourager et à les envoyer à une autre cible.
Encore mieux, si c'est à partir d'une seule IP, vous pouvez répondre avec votre propre attaque par déni de service :)
la source
En plus de la réponse que vous avez reçue, vous souhaiterez sauvegarder votre documentation (journaux, traces) et la fournir à votre prestataire de services. C'est le plus efficace pendant l'incident car votre fournisseur peut être témoin de l'incursion. Même si vous réussissez dans vos mesures, il est important de limiter les tentatives ultérieures et cela aide votre fournisseur à transmettre une demande au fournisseur de services de l'attaquant; sans doute l'action la plus efficace est que le fournisseur de l'attaquant refuse le service à son client, l'attaquant identifié.
la source
si vous êtes un programmeur, vous pouvez travailler avec l'événement .net Begin_Request et y mettre votre "sommeil"
la source