Представляю вашему вниманию простой скрипт, который может защитить ваш сайт, если его атакуют.
Скрипт защищает только если ваш сайт подвергнут механизму атаки описанному ниже.
Недавно наш сайт (IPBMafia.Ru) был подвергнут этой атаке. Действовало все следующим образом:
большое количество ботов постоянно открывали главную страницу сайта. Это не был HTTP флуд, это были реальные запросы, потому что IP.Board фиксировал этих ботов как гостей.
Самому серверу сайта от этого ничего не было, это мелочь. Но вот база данных не могла справиться с этим, потому что около 10 раз в секунду к ней шли "тяжелые" запросы, направленные на построение главной страницы, которая сама по себе очень "тяжелая". Думаю всем понятно, что база данных не могла обработать все это и просто не отвечала.
Таким образом основной целью этой атаки является не веб-сервер, а база данных.
Мне пришла идея, что раз движок регистрирует их как посетителей, т.е. это не скрытые запросы, а фейковые пользователи, то и работать с ними можно как с реальными пользователями, и вот - скрипт готов.
Скрипт подходит для любого движка, а установка очень простая.
Забыл написать:
Принцип работы
Вы указываете какое количество запросов разрешено в указанное вами количество секунд. Если клиент выполняет больше запросов, чем разрешено, скрипт завершает работу и клиент видит пустую страницу. Движок сайта соответственно не выполняется, поэтому "тормозов" в работе для других пользователей не будет.
Требования
PHP 4 / 5
Установка
IP.Board
Загрузите файл DAFQS.php в корень вашего сайта. globalTemplate.zip
Откройте файл index.php, находящийся в корне вашего сайта и после первой строчки <?php вставьте: require_once 'DAFQS.php';
Перейдите к пункту Настройка
Другие движки
Процедура установки скрипта зависит от архитектуры конкретного движка, поэтому если вам нужно установить этот скрипт не на IP.Board напишите в эту тему название движка, а я сделаю инструкцию под него.
Настройка
После строчки
require_once 'DAFQS.php'; вставьте: new DAFQS(a, b, c);
Где a - максимальное количество запросов от одного клиента, b - лимит секунд, c - время бана в секундах.
Все это расшифровывается как "Если выполнено больше a запросов за b секунд, то выдается бан* на с секунд".
Естественно, в
new DAFQS(a, b, c); a, b, c нужно заменить на необходимые значения, я рекомендую поставить 3, 1, 5.
После этого сохраните файл. Скрипт установлен.
* под баном подразумевается время, в течение которого пользователю не будет отображаться сайт и соответственно, не будет никакой нагрузки от этого пользователя.
Информация
Версия 1.10
Автор _Dark_
Написано для посетителей IPBMafia.Ru
Список изменений:
1.11 - исправлен баг с баном пользователя.
1.10 - добавлена возможность вручную устанавливать время бана.
1.00 - первый релиз.
Сервер apache+nginx.
Можете подсказать скриптик для ограничения коннектов в секунду с 1 IP!?
Как я понял прекрасный вариант, это ngx_http_limit_req_module, но при его подключении в конфиге nginx - у меня на форуме начинают очень долго загружаться Иконки форумов, Смайлики, и прочие мелкие Картинки, хотя модуль отрабатывает как надо и при зажатии кнопки F5 через пару сек выдает ошибку 503 (чего я и хочу добиться).
После такой настройки начинает все лагать и картинки грузятся через раз.
http {
server_tokens off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
limit_req_zone $binary_remote_addr zone=lreq:10m rate=2r/s;
server {
server_name test.com www.test.com;
listen **.**.**.**;
limit_req zone=lreq burst=4;
Здравствуйте пользователи IPBmafia.ru..
Ко мне часто стали добавляться пользователи с вопросом как установить форум? как установить приложение? как установить хук?
Ну мне если честно надоело отвечать на одни и те же вопросы
Тогда я решил сделать видео гайд)
Так что новички смотрите видео и делайте форумы)