antiddos php скрипт для сайта
Простое решение для предотвращения DDoS — атак на PHP
DDoStop — это модифицированная версия проекта DDoS-Shield. Загрузить проект DDoStop можно здесь.
Описание
DDoStop — это набор скриптов с минимальным кодом для быстрой конфигурации и развертывания защиты PHP — страниц сайта от DDoS — атак. Конечно, проект не претендует на профессиональный подход к решению данной проблемы, но для простой защиты от ботов и мелких DDoS — атак вполне годен.
Техническая сторона
DDoStop работает по модели различного временного доступа реальных посетителей и ботов. Есть возможность сконфигурировать проект на минимальное среднее время между визитами одного посетителя и максимальных посещений за минимальное время — это главный пункт конфигурации. Реальные посетители физически не могут посетить одну страницу 90 в течении 30 секунд, но боты, которые являются основными DDoS — вредителями, могут себе такое позволить. Когда боты начинают атаковать, то они сразу попадают под запрет на доступ к сайту с выдачей ошибки в заголовке 503, как ниже на рисунке
Файлы проекта и включение в сайт
Проект состоит из 2 скриптов php: ddos/index.php и conf_ddos.php, иконки бана в папке ddos/images/cross.gif, файла лога ddos/log/AttackersIPs.Log.
Для включения сайта достаточно разархивировать проект с GitHub в корневую папку сайта, как ниже на рисунке
И теперь, для того чтобы защитить ту или иную страницу достаточно подключить файл conf_ddos.php при помощи php функции require(«./conf_ddos.php») первой строчкой
Конфигурация/настройка защиты
Вся конфигурация и настройка управляется через conf_ddos.php, который имеет следующий вид
Проверка
Для проверки заходим на страницу с включенной DDoS защитой и жмем F5 для имитации обновления страницы в режиме DDoS — атаки и видим страницу
Быстрый php-скрипт для защиты от мощных ддос атак
admin
Администратор
PHP-скрипт для защиты от ддос, способный противостоять даже сильным ддос-атакам, благодаря связке с iptables или Cloudflare.
Информация по обновлениям внизу темы.
Внимание! Любые вопросы по работе и установке скрипта пишите в теме! Оперативно отвечаю.
Приватные консультации только после платной установки скрипта.
Я рекомендую Cloudflare, особенно если у вас маленькая впс-ка, во избежании риска отключения хостером за превышение нагрузки. К тому же, возможны другие типы атак на ваш сервер, а через Cloudflare вы можете спрятать свой IP.
Результат работы скрипта в связке с Cloudflare, с разными настройками режима блокировки по странам.
Теперь в админку добавлена функция, позвляющая удалить из Cloudflare забаненые в ходе атаки сайты.
update
Cloudflare отключили возможность выставлять блок по странам, доступен только challenge. Боты не умеют обходить challenge, но ддосер может пройти капчу вручную. Решение этой проблемы в процессе.
Файл настроек скрипта.
Для просмотра содержимого, просто зарегистрируйтесь на форуме и отпишитесь в теме, зачем вам нужен скрипт.
Требования: PHP 5.4 и выше, модуль curl
Узнать о наличии модуля curl можно через phpinfo();
——
Важное обновление от 23.01.2020.
Добавлена возможность менять конфигурацию хэша счетчика запросов.
$config[‘counter’]=[‘url’=>1, ‘user_agent’=>0];
Если user_agent установить в 1, то будет учитываться браузер для конфигурации хэша счетчика. Это пригодится в случае, если пользователи вашего сайта используют популярные прокси: ускорители трафика, бесплатные VPN для обхода блокировок и т.п. Теоретически, ддосер может менять User Agent при каждом обращении бота, поэтому включайте User Agent с осторожностью.
Защита от DDoS на уровне веб-сервера
Статистика DDoS-атак показывает неизменный рост и смещение вектора с сетевого уровня на уровень приложений.
Если у Вас есть небольшой сайт на сервере с минимальными характеристиками, то положить его можно любым вполне легальным средством стресс-тестирования. (Не рекомендую этого никому делать т.к. IP-адрес легко вычисляется и экспериментатор может влететь на возмещение ущерба.) Поэтому сайт без защиты от DDoS очень скоро будет выглядеть так же дико, как компьютер с Windows-98 без анивирусника.
Первое, что можно и нужно сделать для защиты сайта — настроить брандмауэр iptables. Я использую почти без изменений настройки iptables из статьи на сайте одного из поставщиков защиты от DDoS-атак. Единственное что я поменял — увеличил число допустимых соединений в правилах #8 и #10.
Прежде чем запускать на выполнение скрипт, меняющий параметры iptables, нужно убедиться, что есть альтернативная возможность сбросить эти параметры в начальное состояние. Т.к. если правила заданы неверно, к серверу не сможет подключится никто, в том числе и администратор.
Брандмауэр iptables контролирует атаку на сетевом уровне. Следующее что необходимо настроить — это веб-сервер. В качестве веб-сервера, который открыт для доступа из интернет будем рассматривать nginx. В файле nginx.conf нужно увеличить лимиты на колчество файлов и открытых коннектов (пример взят из Википедии):
Далее настраиваем сервер по умолчанию, который будет запрещать доступ для тех устройств (например IoT), который будут обращаться по IP-адресу а не по доменному имени:
Так же в nginx можно настроить некоторые лимиты на количество обращений, но такая настройка будет не очень гибкой и совсем не избирательной. Наша цель сделать такую защиту на уровне веб-сервера, чтобы погасить запросы злоумышленников, но пропускать на сервер запросы добропорядочных пользователей.
Чтобы не пересказывать уже имеющийся на Хабре материал, предлагаю ознакомится с отличной статьей, а так же с модулем автора указаной статьи kyprizel/testcookie-nginx-module. То, что позволяет сделать этот модуль уже хорошо. Но если Вам понадобится модернизировать его — то сделать это будет непросто.
На сегодняшний день очень многие поставщики услуг защиты от DDoS используют сервер openresty (связка nginx + Lua от Taobao). Скорость выполнения хорошего кода на Lua немного уступает хорошему коду на С. Но разрабатывать на Lua быстрее и проще, и к тому же скрипты можно менять без перекомпиляции сервера. При следуюшем рестарте они будут прочитаны, скомпилированы LuaJIT, и это все что требуется.
Подробная инструкция как уcтановить optnresty. После установки продолжаем настраивать nginx. В разделе http определяем нужные параметры для работы скритов Lua:
Строка lua_shared_dict создает новый словарь (ключ-значение). Этот словарь будет единым для всех запросов, поэтому в нем удобно хранить белые и черные списки. Это словарь, кроме параметров ключ-значение, может иметь параметр time-to-live, который идеально подходит для хранения счетчиков, если нужно ограничить количество запросов в промежуток времени.
Строка lua_package_path задает пути для поиска модулей Lua, в котрый нужно включить каталог со скриптами. Две подряд точки с запятой в конце строки означают, что этот путь добавляется к текущему значению пути, а не полностью заменяет его.
Строка init_by_lua задает код, который будет выполнен один раз при старте сервера (а не при каждом новом запросе). В ней задается белый список IP-адресов. Второй праметр функции add — true — это просто значние которое потом используется в операторе if. Третий параметр time-to-live отсутсвует, поэтому значение будет храниться без ограничения по времени.
Строка access_by_lua_file задает путь к скрипту, который будет выполняться при каждом запросе к серверу (не только при старте сервера). В нем, собственно, и находится вся логика защиты.
Рассмотрим некоторые из проверок, которые можно сделать при помощи скрипта на Lua:
Язык Lua во многом похож (даже слишком) на JavaScript, поэтому код на Lua интуитивно понятен всем, кто пишет на JavaScript.
Глобальная переменная ngx служит для связи с контекстом сервера nginx. Оператор return вне тела функции означает возврат из модуля. В данном примере, если IP-адрес в белом списке, то работа скрипта оканчивается, и продолжается обычная обработка запроса nginx.
И, наконец, мы даем «зеленую дорогу» поисковым ботам. Тут приходится использовать счетчик, т.к. под поискового бота часто подделываются злоумышленники — поэтому считаем количество обращений. banlist:set(search_bot, 1, 10) инициализирует счетчик, который обнулится через 10 секунд после создания. banlist:incr(search_bot, 1) прибавляет к текущему значению счетчика единицу.
Дальнейшее распознавание ботов и злоумышленников может вестись по разным направлениям. Как было предложено в статье такое распознавание основано на проверках, поддерживает ли клиент редиректы, установку cookie и выполнения кода JavaScript. Ну или все, что можно еще придумать.
Как правило, такой веб-сервер используют в качестве прокси, а защищаемый веб-сервер размещают на другом IP-адресе.
Антиддос скрипты на PHP
Администратор
На уровне PHP защищаться от ддоса не эффективно, такие скрипты применяют на хостинг-тарифах, где нет возможности конфигурации сервера. Впрочем, хостеры обычно отключают сайт, если на него идет ДДос, поэтому никакие скрипты вы использовать не успеете.
Но прежде чем использовать подобные скрипты, надо оценить обстановку.
Если ваш хостер предоставляет SSH-доступ, попробуйте с помощью команды
либо, если ддос несильный, закоментируйте срочку _index.php в корне вашего сайта. После чего можно поизучать логи и оценить силу и таргетинг ддоса.
Если ддос действительно слабенький, можно попробовать использовать PHP скрипты, но предупреждаю, они будут загружать сервер и годятся только как временное решение проблемы.
Антиддос скрипт от админа xaknet.ru:
SR_team
New Member
admin
Администратор
Скрипт нужно инклюдить в исполняемый файл, в index.php, например.
Создаем файл, допустим, antiddos.php, туда копируем любой код из вышеприведенных, затем в файле index.php пишем вверху:
Артем
New Member
У меня вопрос по Антиддос скрипт от админа xaknet.ru
Ето нужно создать папку _bots и положить в корень? И нужен ли слеш / в конце?
И нужно ли в папке _bots создавать какие то файлы или скрипт сам создаст?
Артем
New Member
Marcus
Member
admin
Администратор
Не такой уж и бред. Их можно в совокупности с файерволлом использовать для тех, кто в администрировании не очень силен.
Если ддос не сильный можно вывесить проверку на бота.
Алгоритм следующий.
Сначала делаем проверку на поискового бота по юзер агенту. Если поисковой бот, то пускаем на сайт. Для остальных вывешиваем заглушку подобно той, что у CloudFlare. Можно просто ссылками: при слабых ддос атаках боты глупые (иногда у них одинаковые юзер агента или вообще юзер агентов нет, что сильно облегчает нам работу). Все, кто нажал по ссылке «я не бот» добавляются в белый список. Через какое-то время заносим скриптом все IP черного списка в iptables, а потом из iptables удаляем ip из белого списка. Либо сохраняем ip не бота в сессию и удаляем его из черного списка.
Быстрый php-скрипт для защиты от мощных ддос атак
admin
Администратор
maskmask
New Member
maskmask
New Member
PHP-скрипт для защиты от ддос, способный противостоять даже сильным ддос-атакам, благодаря связке с iptables или Cloudflare.
Информация по обновлениям внизу темы.
Внимание! Любые вопросы по работе и установке скрипта пишите в теме! Оперативно отвечаю.
Приватные консультации только после платной установки скрипта.
Я рекомендую Cloudflare, особенно если у вас маленькая впс-ка, во избежании риска отключения хостером за превышение нагрузки. К тому же, возможны другие типы атак на ваш сервер, а через Cloudflare вы можете спрятать свой IP.
Результат работы скрипта в связке с Cloudflare, с разными настройками режима блокировки по странам.
Теперь в админку добавлена функция, позвляющая удалить из Cloudflare забаненые в ходе атаки сайты.
update
Cloudflare отключили возможность выставлять блок по странам, доступен только challenge. Боты не умеют обходить challenge, но ддосер может пройти капчу вручную. Решение этой проблемы в процессе.
Файл настроек скрипта.
—-
Ссылка для скачивания и инструкция по установке: [Скрытый контент]Для просмотра содержимого, просто зарегистрируйтесь на форуме и отпишитесь в теме, зачем вам нужен скрипт.
Требования: PHP 5.4, модуль curl
Узнать о наличии модуля curl можно через phpinfo();
——
Важное обновление от 23.01.2020.
Добавлена возможность менять конфигурацию хэша счетчика запросов.
$config[‘counter’]=[‘url’=>1, ‘user_agent’=>0];
Если user_agent установить в 1, то будет учитываться браузер для конфигурации хэша счетчика. Это пригодится в случае, если пользователи вашего сайта используют популярные прокси: ускорители трафика, бесплатные VPN для обхода блокировок и т.п. Теоретически, ддосер может менять User Agent при каждом обращении бота, поэтому включайте User Agent с осторожностью.