Лучший способ предотвратить атаки типа "отказ в обслуживании" на веб-сайте - PullRequest
3 голосов
/ 16 августа 2011

У меня есть веб-приложение, и я хотел бы предотвратить атаки DOS, заблокировав IP-адрес, если оно делает много запросов в течение короткого периода времени.

Например, если тот же IP-адрес делает 100 запросов в секунду, я могу предположить, что это какая-то атака, и я хотел бы заблокировать этот IP.

Однако выполнение этой проверки на уровне приложения кажется слишком дорогим - каков оптимальный способ сделать эту проверку?

Должен ли я сделать этот вид проверки на моем:

  • межсетевой экран
  • маршрутизатор
  • apache config
  • где-то еще целиком ...

Ответы [ 2 ]

0 голосов
/ 22 февраля 2012

Некоторые приложения для генерации API в django реализуют некоторые методы для ограничения количества запросов в секунду. Например, django-pneon использует для этого метод дросселирования. Джанго-поршневое дросселирование

Это простой способ решить проблему.

0 голосов
/ 28 января 2012

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

Некоторые вещи, которые вы, возможно, захотите рассмотреть, это: - Вы действительно хотите заблокироватьдоступ ко всему хосту на основе IP-адреса, или вы хотите заблокировать доступ к определенному приложению, работающему на определенном порту.- Иногда, используя NAT, один IP-адрес может отправлять запросы от имени многих реальных хостов.

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

...