C # MVC: Qu'est-ce qu'un bon moyen de prévenir des attaques par déni de service (DOS) sur les sites ASP.NET?

StackOverflow https://stackoverflow.com/questions/933756

Question

Je suis à la recherche d'un moyen bon et peu coûteux pour éviter des attaques par déni de service sur mon site ASP.NET MVC.

J'ai pensé à une solution qui intercepte le HttpHandler et compte alors des demandes dans l'objet du cache, la clé étant quelque chose comme « RequestCount_ [IpAddressOfRequestClient] », mais qui semble comme il générerait une surcharge fou.

Toutes les idées seraient grandement appréciés. Merci!

Était-ce utile?

La solution

Vous pourriez envisager d'essayer de les étrangler demandes. Identifier les utilisateurs par IP et / ou demandes de cookie et limite à (disons) 1 toutes les deux secondes. Un humain ne remarque pas, mais cela ralentirait considérablement d'un bot.

Cela aide au niveau de l'application (protège votre application / base de données), mais ce n'est pas une solution complète, car les coups sont encore à venir au niveau du réseau.

En tant que première ligne de défense je ne serais probablement dépendre du matériel. De nombreux fournisseurs de services Internet offrent une certaine protection, par exemple: http://www.softlayer.com/facilities_network_n2.html

Autres conseils

C'est une question très ancienne, mais j'espère que cette référence aide quelqu'un d'autre.

Maintenant, nous utilisons API .NET Protector ( https://apiprotector.net ) pour protéger nos API contre les attaques DoS et DDoS.

Il est une bibliothèque compatible avec MVC, WebAPI et .NetCore aussi, qui nous a donné de très bons résultats , aussi bien dans simplicité , mais fondamentalement maintenabilité . Avec cette lib vous pouvez protéger chaque fonction de litterally votre API avec une seule ligne, et d'une manière très spécifique.

Comme il est expliqué dans le site Web de l'API .NET Protector:

  

Si vous limitez votre API, de manière générale, aux demandes N par IP ou par   utilisateur, il suffit pour ces demandes de N peut être utilisé constamment   impact sur la même fonction lourde spécifique qui peut sérieusement ralentir   l'ensemble du service.

     

« Chaque fonction de votre API doit être limitée dans un   manière particulière en fonction de la fréquence normale d'utilisation et le coût   de traitement qui cette fonction implique pour le serveur, sinon   vous n'êtes pas protéger votre API. »

     API

Protector .NET vous permet de protéger chaque fonction de votre .NET   API contre les attaques DoS et DDoS sans effort, dans un simple,   de manière déclarative et maintenable.

Le seul point négatif est que il en coûte 5 USD , mais il nous a donné ce que nous cherchais à un prix très bas, contrairement à la bibliothèque WebApiThrottle que même si elle était la première option que j'ai essayé ( parce qu'il est libre), il a fini par être peu pratique ingérable quand nous voulions protéger les différentes fonctions d'une manière spécifique (ce qui est essentiel pour une protection efficace, comme expliqué).

.NET API Protector permet de combiner différentes protections (par ip, par l'utilisateur, par rôle, en général, etc.) décoration chaque fonction avec une seule ligne , ce qui le rend facile à mettre en œuvre et maintenir . Pour une lecture détaillée explaination: https://apiprotector.net/how-it-works

Une anecdote intéressante est il y a ce moment-là, lorsque nous protégeant nos API avec WebApiThrottle , nous avons fait des tests simulant des attaques DDoS, avec de nombreuses demandes parallèles d'hôtes différents, et pour une raison quelconque, (I pensent que cela est dû à quelque chose lié à la synchronisation du fil), des rafales de requêtes sont entrés aux fonctions, et en retard avec le serveur déjà surchargées, l'étranglement a commencé. Ceci, ajouté à la maintenabilité difficile, ne nous donne pas trop de confiance pour une protection solide, et c'est la raison pour laquelle nous avons fini par essayer cette alternative qui fonctionne bien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top