C # MVC:Какой хороший способ предотвратить атаки типа "отказ в обслуживании" (DOS) на ASP.NET сайты?

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

Вопрос

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

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

Мы будем очень признательны за любые идеи.Спасибо!

Это было полезно?

Решение

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

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

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

Другие советы

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

Теперь мы используем '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 долларов США, но это дало нам то, что мы искали, по очень низкой цене, в отличие от библиотеки WebApiThrottle, которая, хотя это был первый вариант, который я попробовал (потому что он бесплатный), в конечном итоге оказалась непрактичной, не поддерживаемой, когда мы хотели защитить различные функции определенным способом (что, как объяснено, критически важно для эффективной защиты).

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top