C # MVC: Как можно предотвратить атаки типа «отказ в обслуживании» (DOS) на сайты ASP.NET? - PullRequest
1 голос
/ 01 июня 2009

Я ищу хороший и недорогой способ предотвратить атаки типа "отказ в обслуживании" на моем сайте ASP.NET MVC.

Я думал о решении, которое перехватывает HttpHandler, а затем подсчитывает запросы в объекте Cache, причем ключ является чем-то вроде «RequestCount_ [IpAddressOfRequestClient]», но, похоже, это приведет к сумасшедшим издержкам.

Любые идеи будут с благодарностью. Спасибо!

Ответы [ 2 ]

4 голосов
/ 01 июня 2009

Возможно, вы попытаетесь ограничить запросы. Идентифицируйте пользователей по IP и / или cookie и ограничьте количество запросов (скажем) 1 каждые две секунды. Человек не заметит, но это значительно замедлит бот.

Это помогает на уровне приложений (защищает ваше приложение / базу данных), но не является полным решением, поскольку хиты все еще приходят на уровне сети.

В качестве передовой линии защиты я бы, вероятно, зависел от аппаратного обеспечения. Многие интернет-провайдеры предлагают некоторую защиту, например: http://www.softlayer.com/facilities_network_n2.html

0 голосов
/ 10 мая 2019

Это очень старый вопрос, но я надеюсь, что эта ссылка поможет кому-то еще.

Теперь мы используем ' API Protector .NET ' (https://apiprotector.net) для защиты наших API от атак DoS и DDoS.

Это библиотека, совместимая с MVC, WebApi и .NetCore , которая дала нам очень хорошие результаты , оба в простоте , но в основном в ремонтопригодность . С помощью этой библиотеки вы можете защитить каждую функцию вашего API буквально одной строкой и совершенно особым образом.

Как объясняется на сайте API Protector .NET:

Если вы ограничите свой API, как правило, N запросами на IP или на пользователю достаточно, чтобы эти N запросов можно было постоянно использовать воздействовать на ту же конкретную тяжелую функцию, которая может серьезно замедлить весь сервис.

«Каждая функция вашего API должна быть ограничена в конкретный способ в зависимости от нормальной частоты использования и стоимости обработки, которую эта функция подразумевает для сервера, в противном случае Вы не защищаете свой API. "

API Protector .NET позволяет защищать каждую функцию вашего .NET API против DoS и DDoS-атак без усилий, в простой, декларативный и обслуживаемый способ.

Единственный минус в том, что стоит 5 * 1030 долларов США, но он дал нам то, что мы искали, по очень низкой цене, в отличие от библиотеки WebApiThrottle, хотя это был первый вариант, который я попробовал (потому что это бесплатно), это оказалось практически неосуществимым, когда мы хотели защитить различные функции определенным образом (что важно для эффективной защиты, как объяснено).

API Protector .NET позволяет комбинировать различные защиты (по ip, пользователю, роли, в целом и т. Д.), Украшая каждую функцию одной строкой , что упрощает реализацию и поддерживать . Для подробного объяснения читайте: https://apiprotector.net/how-it-works

Интересным анекдотом является то время, когда , когда мы все еще защищали наши API с помощью WebApiThrottle , мы провели несколько тестов, имитирующих DDoS-атаки, с множеством параллельных запросов от разных хостов и по какой-то причине (я думаю, это связано с чем-то, связанным с синхронизацией потоков), в функции поступили пакеты запросов, и позднее, когда сервер уже перегружен, началось регулирование. Это, в дополнение к трудной ремонтопригодности, не давало нам особой уверенности в надежной защите, и поэтому мы в итоге попробовали эту альтернативу, которая хорошо работает.

...