Есть ли защита от своеобразного ддоса?

12
tmatm
На сайте с 22.04.2006
Offline
221
1030

Есть ряд очень посещаемых сайтов с чатами, форумами. Там можно добавить сообщение с картинкой, но в качестве картинки указать адрес страницы (т.е. не .jpg, .png, .gif, .bmp, а вообще любое расширение файла). И вот на сайте с 10000 посетителями в онлайне некто случайно или нарочно добавляет в чат сообщение с таким кодом: <img src="http://[мой-сайт]/page.php">

В итоге все эти 10000 посетителей постоянно обращаются к _http://[мой-сайт]/page.php, даже не подозревая об этом. Я же получаю огромную дополнительную нагрузку (сотни или даже тысячи запросов в секунду к динамической странице), не дающую мне никакой пользы, т.к. все эти посетители сам мой сайт не видят.

Сейчас баню таких "левых" посетителей с помощью Nginx по рефереру. Если реферер соответствует имени сайта из списка, то 403 ошибка.

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

Есть ли способ лучше, чтобы избавиться от такого своеобразного ддоса (желательно такими средствами, чтобы запрос не доходил до работы скрипта, генерящего страницу)?

Optimizator.Ru ( https://optimizator.ru/ ) — регистрация и продление доменов в RU-CENTER и REG.RU: RU, РФ от 123 р.; MSK.RU, SPB.RU и др. 168 р. + REG.RU ( https://reg.optimizator.ru/ ). Освобождающиеся домены от 150 р. ( https://optimizator.ru/backorder/ )
Den73
На сайте с 26.06.2010
Offline
523
#1

конечно есть, тему надо было создавать в разделе администрирования.

tmatm
На сайте с 22.04.2006
Offline
221
#2
Den73:
конечно есть

Пользователи загружают сайт через браузер, т.е. куки получают, юзер агент у них тоже нормальный. Банить по IP всех, кто запрашивает только страницу без js, css, картинок на ней тоже не самый подходящий вариант, т.к. пользователь может потом зайти на сайт по нормальному (не через "img src").

Den73:
тему надо было создавать в разделе администрирования.

Да, возможно. Просто подумал, что хостерам это будет тоже интересно, наверняка многие хостинги из-за этого страдают, даже если и не замечают этого.

A
На сайте с 19.07.2010
Offline
130
#3
tmatm:
Пользователи загружают сайт через браузер, т.е. куки получают

ставьте куки яваскриптом, если страница загружена нак "img src", то яваскрипт не выполнится и куки не поставятся.

при желании(необходимости) можно всем безкуковым давать статическую страничку с яваскриптом, которая ставит куку и обновляет саму себя.

при обновлении, если кука есть - нормальный контент.

.............
S
На сайте с 23.05.2004
Offline
315
#4
admak:
ставьте куки яваскриптом, если страница загружена нак "img src", то яваскрипт не выполнится и куки не поставятся.

А то, что сначала грузиться страница, а только потом js/css и прочее, в голову не приходило ? :D

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

Это просто подпись.
tmatm
На сайте с 22.04.2006
Offline
221
#5

Да, вариант вполне неплохой. Если в реферере чужой сайт и нет куки, то редиректим на статическую страницу с кукой, которая уже джаваскриптом переправляет пользователя на полноценную страницу.

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

A
На сайте с 19.07.2010
Offline
130
#6
tmatm:
Сейчас баню таких "левых" посетителей с помощью Nginx по рефереру. Если реферер соответствует имени сайта из списка, то 403 ошибка.

если отдавать 403, то при каждом рефреше клиентский браузер будет дергать ваш сервер снова и снова.

если уверены, что точно запрос "кака", то отдайте пустую страницу с кодом 200 и установите на ней большое время кеширования для браузера. например для nginx: expires 30d;

теперь браузер не будет дергать ваш сервер при рефрешах(не путать с принудительным рефрешем Ctrl+F5).

zexis
На сайте с 09.08.2005
Offline
388
#7

Tmatm, интерсный способ организации ддос атак.

Admak, по-моему ваш метод выставлять куки в данной ситуации не поможет.

Так как те кто заходят на сайт первый раз, они все без кук.

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

Даже не знаю, как можно защитится от такой атаки.

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

A
На сайте с 19.07.2010
Offline
130
#8
Stek:
А то, что сначала грузиться страница, а только потом js/css и прочее, в голову не приходило ? :D

а при чем тут страница с бекенда/js/css?

nginx может сам определять наличие куки и подсовывать мелкую статическую страничку с js на ней.

tmatm: никакого редиректа не нужно.

"сначала грузиться страница, а только потом js/css" - по ходу, inline js выполняется сразу без ожидания догрузки страницы и прочего.

---------- Добавлено 24.09.2014 в 09:50 ----------

zexis:
Tmatm, интерсный способ организации ддос атак.

очень старый способ... эфективная защита тоже известна - отдавать не 403, а 401-й(авторизацию). тогда ляжет не ваш сайт, а ляжет сайт того, кто атакует.

Admak, по-моему ваш метод выставлять куки в данной ситуации не поможет.
Так как те кто заходят на сайт первый раз, они все без кук.
Ставь куки не ставь, а по любому хотя бы один запрос к сайту будет сделан.

для бекенда это может быть проблемой, для nginx - нет.

tmatm
На сайте с 22.04.2006
Offline
221
#9
zexis:
Admak, по-моему ваш метод выставлять куки в данной ситуации не поможет.
Так как те кто заходят на сайт первый раз, они все без кук.
Ставь куки не ставь, а по любому хотя бы один запрос к сайту будет сделан.
Даже не знаю, как можно защитится от такой атаки.

Не, поможет. С помощью Nginx определяем, что пользователь без куки и с чужим сайтом в реферере. Такому посетителю выдаём мелкую статичную страницу с большим expires, которая джаваскриптом (который в отдельном файле) ставит куку и обновляет себя. Теперь уже у посетителя будет кука и Nginx покажет полноценную страницу.

P.S. img src загружает только саму страницу без внешних js. Вот это и используется. Т.е. через img src пользователь получит 1 раз мелкую статичную страницу и больше не будет беспокоить запросами.

A
На сайте с 19.07.2010
Offline
130
#10
tmatm:
P.S. img src загружает только саму страницу без внешних js. Вот это и используется.

стоп-стоп, я имел ввиду inline js, т.е. яваскрипт на самой странице. этого будет достаточно, он не выполнится.

не нужно создавать себе лишние сложности.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий