Andrey Reviashko
254
Блоги

DDoS-лайфхаки: как уберечь интернет-магазин в период распродаж

Виды DDoS-атак и как их не допустить интернет-магазинам — колонка от ИТ-директора компании Wildberries.

Поделиться

В избранное

В избранном

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

И не только среди покупателей, но и среди участников так называемого «DarkNet’а»: разрозненные группы лиц, имеющие цель нелегального заработка – в первую очередь, за счет отсутствия должного уровня знаний в области информационной безопасности у своих жертв. Именно его представители имеют «новогоднюю» традицию “заходить в гости” к онлайн-ритейлерам с «письмами счастья», в которых коротко и ясно дают понять, что хотят подарок в виде пяти-шестизначных цифр в рублях (вымогательство, статья 163 УК РФ).

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

1. SYN FLOOD

На сервере жертвы открывается как можно больше соединений. Когда на сервере откроется максимально возможный объем этих соединений, сервер перестает отвечать на запросы.

Решение: ставить в бан IP адреса, с которых приходит слишком много запросов.

2. SLOWLORIS

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

Решение: борьба с данным недугом осуществляется посредством бана подозрительных IP адресов.

3. UDP FLOOD

Атака осуществляется посредством UDP протокола. Ее суть - в обращении на разные, хаотично заданные, порты сервера. Сервер вынужден тратить ресурсы на проверку своих портов на предмет привязки последних к тому или иному сервису.

Решение: Отключить протокол UDP на приемной стороне.

4. ICMP FLOOD

Похож на своего предшественника из предыдущего пункта. Только в последнем используются массовые запросы по протоколу ICMP.

Решение: отключение обработки ICMP пакетов. Как минус - перестает “пинговаться” сервер.

Суть при этом одна – по максимуму загрузить ресурсы компании (в частности сайт-каталог) таким образом, чтобы на обработку запросов от реальных клиентов просто не хватало мощностей. Соответственно, оформление заказов становится недоступно большинству покупателей. В среднем, нагрузка на IT-систему магазина в этот момент увеличивается в 10 раз.

Наше знакомство с подобными атаками состоялось примерно восемь лет назад. Тогда это было интересно: ещё не было настолько мощных организаций, которые смогли бы пропустить через свои сети трафик и сломить нападение. Как сейчас помню тревожный звонок одного из пионеров анти-DoS предприятий, который настоятельно просил убрать наш трафик с их канала, так как те просто не рассчитывали на подобный объем в своих рекламных проспектах.

Мы часто оставались один на один с проблемами от атак на наше веб-приложение. Из самых действенных противоядий от данного вида напастей в ассортименте у дата-центров было отключение иностранного трафика на уровне провайдера. Прибегали к такой мере только в крайних случаях, так как существенная часть клиентов приходила через западные сети. Отключить иностранный трафик приравнивалось к отключению приличной части заказов.

Сейчас это кажется абсурдом, но в те годы, чтобы не заблокировать реальных клиентов вместе с запросами ботнета, мы садились всем ИТ-отделом за дело: получали слепок IP-адресов посетителей сайта, проверяли их через whois сервисы и включали в бан на фаерволе, если пул адресов явно принадлежал не нашим клиентам, а, к примеру, Китаю. И так до победного.

Сейчас ситуация на рынке данных услуг изменилась - анти DoS-сервисы уже не “захлебываются” от ботнет-трафика как ранее. Поэтому, обращаясь к компании по защите веб-приложений от DoS-атак, закажите услугу мониторинга периметра приложения на уязвимости. К примеру, наличие уязвимого из-за устаревшей версии веб-сервера или наличия опасных cross-origin настроек. Это поможет оперативнее реагировать на появление новых уязвимостей – второго по популярности метода в моем рейтинге — нападений на веб-приложения.

А теперь подробнее о том, что стоит сделать еще:

1. Шардировать систему, то есть разделить ее на несколько независимых частей.

Если у вас одна база данных, допустим, на сайте и один веб-сервер — атаковать его проще, чем несколько сайтов, у каждого из которых своя база данных и своя инфраструктура. Данная система способна выдержать большие нагрузки. Как следствие — действие слабых атак, скорее всего, не будет чувствоваться.

Запуская интернет-магазин, многие начинают с того, что на одном сервере «крутится» несколько систем, и, в частности web: иными словами, почти вся инфраструктура. Мы когда-то давно тоже практиковали такое. Несколько лет назад атакующие даже простыми средствами атаки и ботнетами небольших размеров выводили информационную систему из строя. Это же касается не только интернет-магазинов, но и, к примеру, социальных сетей. Вы, наверное, замечали, как не можете войти в свой аккаунт одной из социальных сетей, по причине ее недоступности; это при том, что кто-то из ваших знакомых такой проблемы не испытывает. Это происходит постоянно: где-то больше, где-то меньше.

Те, чьи аккаунты попали в часть системы, которая испытывает на себе DDos-атаку — пали жертвой. Зато оставшаяся часть системы чувствует себя хорошо.

2. Увеличить количество веб-серверов. Зачастую dos-атаки осуществляются на веб-сервер. К счастью, они легко масштабируются и их увеличение позволяет системе дольше по времени оставаться на плаву, особенно в случае «долгих» запросов.

В настоящее время DDos’еры атакуют наш сайт и без предупреждения, порой более менее приличной нагрузкой от 1Гбит/сек. Судя по отчетам системы, происходит это раз в несколько месяцев, без строгой зависимости. Имея на борту множество web-серверов, мы этого не чувствуем и не прибегаем к защите специальных сервисов.

3. Приобрести оборудование для блокировки dos-атак. Сейчас на рынке подобного оборудования конкурирует несколько сильных игроков, соответственно на него снижается стоимость. Внедрение в систему оборудования данного класса вполне может окупиться при отражении первой же атаки.

4. Убрать из системы долго отвечающие ресурсы. Задача dos-атаки занять ресурсы «пустышками», чтобы те не достались реальным пользователям. Если ваша система станет отвечать настолько быстро, что будет успевать обрабатывать и запросы от ботнета, и запросы реальных посетителей, можно считать, что вы одержали маленькую победу. Для этого стоит произвести анализ системы, выявить, а затем и устранить то, что долго отрабатывает во время того или иного запроса.

В погоне за удобством для пользователей в каталогах интернет-магазинов появляется большое количество фильтров. По брендам, по стоимости и т.д.

Увеличение количества параметров в фильтрах утяжеляет запрос: системе становится трудно их обрабатывать и начинается нехватка ресурсов.

Вступая в сезон распродаж, к примеру, в разгар «Черной пятницы», наша система подверглась DDos’у не со стороны злоумышленников, а со стороны наших клиентов. В ряде случаев приходилось отключать «тяжелые« фильтры «на ходу» специально созданными «рубильниками».

5. Научить систему уже на входе подавлять подозрительный трафик. Как пример, по признаку страны. Если нет возможности приобрести оборудование, о котором говорилось выше — есть возможность настроить систему так, что уже на входе будет подавляться подозрительный трафик, например, по признаку страны. Как реальный кейс — трафик из азиатской части тихоокеанского региона крайне подозрителен, так как из того же Сингапура или Китая к нам ходит только ботнет трафик.

И последнее: не надо поддаваться на вымогательства!

#ddos [_ #_]торговля

{ "author_name": "Andrey Reviashko", "author_type": "self", "tags": [], "comments": 6, "likes": 6, "favorites": 4, "is_advertisement": false, "section_name": "blog", "id": "30994", "is_wide": "" }
{ "is_needs_advanced_access": false }

Комментарии Комм.

Популярные

По порядку

0

Прямой эфир

Подписаться на push-уведомления
[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]