Защита от DDOS атак на PHP

Форум для тех кто начинает осваивать язык php.
Аватара пользователя
Бывший военный
Сообщения: 6
Благодарил (а): 10 раз
Поблагодарили: 1 раз

Защита от DDOS атак на PHP

Сообщение Бывший военный » Пн окт 10, 2016 4:42 pm

Здравия желаю!
Стоит сразу отметить, что 100% защиты на PHP вы не получите, если вашему противнику вздумается нагнуть ваш сервер, он это сделает, не смотря на PHP защиту от DDOS'а. Но всё же, от слабого Ддоса можно спастись.

Идея далеко не нонсанц. Суть моего предложения в блокировке IP адресов, которые обращаются к сайту более одного раза в секунду. При входе пользователя на сайт, определяем его IP адрес и время входа. Используя IP пользователя ищем его в таблице, где находятся запрещённые IP, если такого IP не нашлось, ищем его в таблице логов посещения, нашли? Значит сравниваем время его предыдущего входа с текущим, сравниваем разницу, больше секунды или нет. Больше секунды? Добавляем новую запись об этом IP. Если меньше секунды, значить добавляем IP в таблицу запрещённых адресов.

Вот, такая схема. Я прошу помочь довести её о ума, кто чем может.
Благодарю.
Реклама
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

Re: Защита от DDOS атак на PHP

Сообщение Slash » Пн окт 10, 2016 6:23 pm

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

Еще, думаю, лучше блокировать IP адреса в файле .htaccess, а не в базе. Так лишних проверок и запросов можно избежать, так защита будет более сильнее. Как заблокировать IP адрес пользователя в .htaccess, разумеется делать блокировку на автомате.
Не $100000
Сообщения: 11
Благодарил (а): 1 раз
Поблагодарили: 10 раз

Re: Защита от DDOS атак на PHP

Сообщение Не $100000 » Ср окт 12, 2016 11:18 am

Зачем на php? Запускать интерпретатор - слишком накладно. sh - наше все.
Для понимания гуглим DDoS Deflate :geek:
cefp
Сообщения: 333
Поблагодарили: 3 раза

Re: Защита от DDOS атак на PHP

Сообщение cefp » Ср окт 12, 2016 5:58 pm

Deflane как я понял доступно, если есть возможность менять конфигурацию сервера. На небольших хостингах такое не доступно.

По поводу решения на php, почему бы не использовать его совместно с апач? То есть с файлом .htaccess

В качестве таблицы логов можно использовать текстовый лог файл сервера, тогда не нужно обращаться к базе данных. Заблокированные ip адреса можно с помощью php вносить в файл .htaccess

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

Возникает ещё один вопрос. Если в организации стоит локальная сеть и во внешнюю сеть все выходят с одним IP адресом, то как отличит таких посетителей от ботов?
d o h o d - s - n u l y a .ru - идеи бизнеса.
Не $100000
Сообщения: 11
Благодарил (а): 1 раз
Поблагодарили: 10 раз

Re: Защита от DDOS атак на PHP

Сообщение Не $100000 » Ср окт 12, 2016 8:51 pm

cefp писал(а):использовать его совместно с апач? То есть с файлом .htaccess

Одно решение адовее другого. Мало того, что запускаем громоздкий интерпретатор php, так еще сверху давайте мастодонта апача напряжем. Пусть он каждый раз перепроверяет файлик (а он во время наплыва зловредов может распухнуть ой-ой-ой) - нам не жалко? :)
cefp писал(а):На небольших хостингах такое не доступно.

Самые простые VPS стоят копейки - от 100-120р в месяц. Два пива - не деньги.
Аватара пользователя
PCB
Сообщения: 28
Благодарил (а): 5 раз
Поблагодарили: 8 раз

Re: Защита от DDOS атак на PHP

Сообщение PCB » Чт окт 13, 2016 1:45 pm

Не $100000 писал(а):давайте мастодонта апача напряжем

Но ведь при блокировке ip в .htaccess снижается нагрузка на сервер в целом, разве нет?
Вот пример: Нагрузка на сервер от активности пользователя.
Не $100000
Сообщения: 11
Благодарил (а): 1 раз
Поблагодарили: 10 раз

Re: Защита от DDOS атак на PHP

Сообщение Не $100000 » Чт окт 13, 2016 6:42 pm

PCB писал(а):разве нет

Блокировать с помощью апача МНОЖЕСТВО IP (у нас же ДДоС, да?) - это все равно что строить танк Маус и прыгать от радости - он может и защищенный, но сдвинуть сию махину с места - еще надо постараться. Апач - монстр, во время ДДоСа он будет запущен в сотнях instance' ов, каждый из которых будет анализировать нехилого (помним про множество IP?) размера файл, отрабатывать и завершаться - у вас ресурсы резиновые или где?
Я достаточно понятно излагаю? ;)
Аватара пользователя
PCB
Сообщения: 28
Благодарил (а): 5 раз
Поблагодарили: 8 раз

Re: Защита от DDOS атак на PHP

Сообщение PCB » Чт окт 13, 2016 9:45 pm

Не $100000 писал(а):Я достаточно понятно излагаю?

Вполне. Спасибо, Не $100000!

Складывается мнение, на php не выйдет защититься от ДДоСа.
Не $100000
Сообщения: 11
Благодарил (а): 1 раз
Поблагодарили: 10 раз

Re: Защита от DDOS атак на PHP

Сообщение Не $100000 » Чт окт 13, 2016 9:50 pm

PCB писал(а):на php не выйдет защититься от ДДоСа

В рамках shared-хостинга (и вообще просто лимитированных ресурсов) - нет. А в рамках VPS/VDS/DS - это не имеет смысла (по множеству причин). Блокировка на уровне фаервола быстрее, экономичнее и в целом ПРОСТО эффективнее, а парсинг логов и внесение правил в фаер силами sh-скрипта и проще, и эффективнее, и вообще решения уже есть - велосипед изобретать не надо.
Аватара пользователя
PCB
Сообщения: 28
Благодарил (а): 5 раз
Поблагодарили: 8 раз

Re: Защита от DDOS атак на PHP

Сообщение PCB » Чт окт 13, 2016 10:00 pm

Не $100000, Вы хорошо разбираетесь в этом непростом деле!
Не $100000 писал(а):решения уже есть

Вы пользуетесь DDoS Deflate?
Не $100000
Сообщения: 11
Благодарил (а): 1 раз
Поблагодарили: 10 раз

Re: Защита от DDOS атак на PHP

Сообщение Не $100000 » Чт окт 13, 2016 10:33 pm

PCB писал(а):хорошо разбираетесь

Не особо, просто приходилось сталкиваться.
PCB писал(а):Вы пользуетесь DDoS Deflate

Не везде и не всегда. Есть Еще mod_limit_req для nginx (аналога для apache вроде нет, а для lighthttpd есть, но навскидку не помню как называется) например.
Есть и другие варианты - некоторые варианты можно вполне себе комбинировать.
cefp
Сообщения: 333
Поблагодарили: 3 раза

Re: Защита от DDOS атак на PHP

Сообщение cefp » Чт окт 13, 2016 11:19 pm

Думаю, на php была бы интересна защита от возможных нагрузок с единичных IP, как в случае из темы: Нагрузка на сервер от активности пользователя. Чтобы вручную не искать с какого адреса идёт нагрузка. Ну и чтобы проверка делалась не часто, например один раз в пять минут, чтобы сама проверка не нагружала хостинг.

Мне понравилось описание mod_limit_req для nginx. Он снижает скорость обработки запросов с IP повышенной активности. Наверно, это один из лучших вариантов для переходных моментов, когда не понятно началась ли атака или это просто пользователи активизировались.
d o h o d - s - n u l y a .ru - идеи бизнеса.
Не $100000
Сообщения: 11
Благодарил (а): 1 раз
Поблагодарили: 10 раз

Re: Защита от DDOS атак на PHP

Сообщение Не $100000 » Чт окт 13, 2016 11:36 pm

cefp, зачем php тут вообще? Пишем sh-скрипт (или модифицируем тот же DDoSD) - или на php оно само напишется? - вносим его в cron, а итог его работы - так уж и быть, если правила фаера недоступны - в .htaccess
По ресурсам экономичнее, по времени выполнения - быстрее. Что еще надо? :?
Аватара пользователя
Бывший военный
Сообщения: 6
Благодарил (а): 10 раз
Поблагодарили: 1 раз

Re: Защита от DDOS атак на PHP

Сообщение Бывший военный » Пт окт 14, 2016 1:50 am

Спасибо за поддержку!

Не $100000, с тобой не поспоришь! :)
Не $100000 писал(а):Пишем sh-скрипт (или модифицируем тот же DDoSD)

А можно пример скрипта показать?
cefp
Сообщения: 333
Поблагодарили: 3 раза

Re: Защита от DDOS атак на PHP

Сообщение cefp » Пт окт 14, 2016 3:22 pm

Можно ли запускать sh-скрипт на обычном хостинге не VPS? Если можно, то больше ничего не надо. :) Ну может кроме кода.
d o h o d - s - n u l y a .ru - идеи бизнеса.

Вернуться в «PHP»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость