@elmoreden

Как защитить свое api от ddos-атак?

Есть простое rest-api, нужно сделать защиту от ddos. Погуглил, внятного ничего не нашел. Подскажите, как защитить api?
  • Вопрос задан
  • 181 просмотр
Пригласить эксперта
Ответы на вопрос 3
pro100chel
@pro100chel
Python && PHP Developer
Смотря что там за API у тебя. Вообще от самых абсурдных атак на канал берут обычно сторонний реверс прокси по типу cloudflare, ddos-guard, stormwall, qrator и прочее.

Но чаще всего это только пол беды. Остальные пол беды это уже более сложные атаки на приложение. Допустим у тебя какая-нибудь доска объявлений по продаже автомобилей, там куча фильтров, пагинация, и все прочее. Так вот на этот запрос к API и будет давить атакующий.

Вообще cloudflare дырявый в этом случае очень, он пропускает почти все. ddos-guard справляется частично, остальные вроде как тоже (слышал от людей, сам не юзал). Тут нужно понимать что на бесплатных или дешевых тарифах могут прошибать, на более дорогих тарифах защиты есть индивидуальная поддержка и фильтры, то есть инженеры почти в реалтайме будут отражать атаку на твой сервис если стандартные средства защиты не справляются.

Но также помимо защитников от атак это еще и битва сторон (атакующего и атакуемого), а еще точнее битва железом. У кого больше мощностей. Даже возьмем тот же самый случай с доской объявлений по продаже автомобилей. Есть куча способов как реализовать это, оптимизировать и все прочее. То есть если у тебя само приложение хорошо спроектировано и реализовано, есть оптимизация то атаку держать будет гораздо проще. Ну и конечно же тут играет роль твоя инфраструктура. Если сервак, на котором крутится приложение имеет ширину канала 100 мбит, 4 ядра и 4 гб RAM, то будет одна ситуация, а если ширина канала 10 гбит, 2 процессора по 32 ядра и 256 гб RAM то это уже совсем другая ситуация. Это конечно все очень образно, в реальности будет не один сервер, а несколько, а то и десятки и сотни серверов, каждый из которых состоит в группе, отвечающей за свою задачу, например за балансировку нагрузки, если нет managed балансировщика, за фронтэнд, за бекэнд, за базу, за кеш, за поиск и т. д.
Ответ написан
@rPman
Хочу напомнить - ddos это не только про сетевые атаки, а любые атаки, направленные на нарушение работы приложения,.. т.е. если злоумышленник найдет как заставить твоих операторов обрабатывать тысячи и миллионы заявок, которые никакой пользы не принесут (с них не будет получен доход) - то это тоже 'атака на отказ обслуживания', ведь операторы будут заняты фейковой работой вместо обслуживанием нормальных клиентов.

Готовых решений ты и не найдешь, кроме как от ограниченного типа атак (сетевых) и тут самому лучше не заморачиваться, а воспользоваться сервисом провайдера.

Правильная защита - это анализ твоей бизнес модели и ее процессов и тщательное тестирование на всех, включая нестандартных и необычных, ситуациях.

p.s. типовые направления атак ddos используют анонимные каналы, т.е. любые команды от анонимного пользователя, которые нельзя сгруппировать по их иннициатору (да хоть по ip адресу) - первые на проверку возможности для использования, вот их и проверяй, как можно раньше в бизнеспроцессах вводи авторизацию (пусть и прозрачную), лимитируй пользователей во всем на разумные количества действий (обычный человек не будет создавать сотню заявок на покупку унитазов, как минимум он создаст одну с пометкой количества).

p.p.s. ограничивая пользователей, всегда предлагай им действия, которые позволят этот лимит убрать, чтобы ошибочно наказанные пользователи не сидели перед экраном - 'вы забанены, идите на..й'
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Если API - то вряд ли его будут DDoS-ить, с его минимальным трафиком.

А с одного IP несколько одновременных коннектов возможны? А то можно в IPTABLES поставить лимит на коннекты.

Ну и на уровне HTTP-сервера фильтровать мусорные запросы, если это Nginx.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы