Отдать временно ошибку 503 подозрительному клиенту можно настроив limit_zone и limit_req_zone в конфигурации NGINX для каждого типа файлов. Тут и изобретать нечего не надо, лишь вставить 4-6 строк в файл конфигурации NGINX.
Информация какие запросы обрабатываются в одно и то же время как раз есть в логе, так как у каждой строки лога указана дата запроса.
Причем в логе эта информация за длительный период времени, и удачные алгоритмы могут эту информацию использовать для более точного определения ботов.
Во вторых программа анализатор логов получается более универсальной, чем модуль для вебсаервера, так как анализатор логов можно запускать как во время атаки по крону, так и после атаки для анализа HTTP-флуда администратором.
Вы показали сравнение со скриптом, находящим топ быстрых IP.
В моем анализаторе рассчитывается больше разных характеристик для каждого IP и может запускаться много разных алгоритмов для нахождения ботов, так что сранивать его скорость с простым скриптом не очень корректоно.
zexis добавил 18.01.2011 в 16:33
myhand, вы уже написали модуль для вебсервера, принимающий решения кто бот, а кто нет?
Или это только на словах из серии, что можно написать, если постараться?
Вы бы для начала реализовали это, ведь вещь очень нужная была бы при грамотной реализации, а потом бы уже доказывали его преимущество над моим анализатором логов, который у меня уже написан, протестирован и активно мной используется на практике.
В чем сложность анализировать логи постфактумно раз в минуту?
Может быть есть решение и более быстрые( связанные с написанием модулей для вебсаервера), но и постфактумный анализ логов парсером вполне работает.
Моим анализатором 10 000 строк анализируется около секунды, 80 000 строк около 8 секунд. Анализатор загружает лишь одно ядро процессора. На современном сервере ядер несколько, так что остальные ядра при работе анализатора свободны.
При мощном HTTP-флуде с лог пишется максимум 100 000 – 200 000 запросов в минуту.
При среднем HTTP-флуде не более 10 000-30 000 запросов в минуту.
Анализа 5 000 - 80 000 строк обычно хватает что бы найти большую часть ботов.
К тому же анализатор сам решает, сколько строк считывать и анализировать из лога каждую минуту, в зависимости от количества запросов в минуту. Что бы не делать лишней работы.
Заносить IP зарегистрированных пользователей сайта в белый список(которому все разрещено) не всегда может быть правильным.
Так как бывают ситуации, когда начинающий школьник-ддосер атакует со своего компьютера.
Cначала зарегистрируется на сайте, ходит по нему как пользователь через браузер, и паралельно запускает ддосилку наподобии Loic со своего же компа.
Если таких школьников-ддосеров будет несколько, то создадут серьезную нагрузку.
На хакерских сайтах есть форумы, где школьники объединяются в группы и с помощью Loic ддосят со своих компов.
Потом получают неописуемое удовольствие, когда видят что сайт перестает открываться.
Идиоты одним словом, потом многим из них провайдер Инет отключает за вирусную активность.
Поэтому IP зарегистрированных пользователей можно заносить в белый список, но для кликов с белого списка, тоже проверки нужно делать например с более высокими лимитами.
Начните с того, что определите ддосят вас или причина в чем то другом.
Вы еще не выяснили ддосят ли вас, а уже ищете антиддос решения.
1) Посмотрите текущие коннекты к серверу во время торможений
netstat -n|wc
netstat -n|less
нет ли большого количества коннектов?
2) Посмотрите размер и содержимое логов acess.log в день торможений сервера.
Нет ли там большого количества запросов ботов?
Boris A Dolgov, благодарю за интересные замечания по существу.
Комментариев в коде много не бывает. Делать комментарии по русски некто не запрещает.
Да, это минус. Большие функции сложнее отлаживать. И в них больше вероятность ошибок. Покажите мне ваш код, я посмотрю на размер ваших функций.
Посмотрел эту функцию в коде. Она негде не вызывается и не используется. Это не доделанная до конца функция. Эта функция не была отлажена и содержит явную ошибку (использование не инициализированной переменной n). Убрал из текста программы эту не используемую функцию, что бы не смущала.
Программа переделывалась, дополнялась и отлаживалась мной около полугода. Очень много тестировалась. В ней было обнаружено и исправлено много ошибок. Были ошибки очень грубые и критические. Сейчас (после 6 месяцев активного использования) вероятность ошибок в программе не высока.
Главное что программа делает, то что заявлено в ее описании.
А именно строит отчеты и на мой взляд весьма информативные.
zexis добавил 16.01.2011 в 00:37
time tail -130000 access.log |cut -d " " -f2|uniq -c|sort -n|tail -1000 ... real 0m0.934s user 0m0.852s sys 0m0.080s Тормозной Ваш парсер, вот что сударь...
Ваш скрипт лишь находит самые активные IP и выводит из отсортированные по количеству кликов.
К тому же в нем по моему 2 ошибки. (выделил их цветом)
Может вы так хотели написать?
time tail -130000 access.log |cut -d " " –f1|sort||uniq -c|sort -n|tail -1000
В моем анализаторе IP не только сортируются по количеству кликов, но еще для каждого IP рассчитывается много дополнительных данных:
Топ IP адресов
Топ IP адресов, с подсчетом интенсивности кликов
Анализатор анализирует не более 130 000 строк (это указано в описании).
Отчет -I самый ресурсоемкий. попробуйте меньшее количество строк для него, например 10 000.
tail –n 10000 /path/to/access.log >log
Да, опрос в теме, наверное, лишний.
По поводу надежности кода и отсутствия в нем ошибок.
Он выполняется по крону раз в минуту на многих высоконагруженных серверах и не к каким сбоям сервера не приводит
По поводу использования стандартных решений и скриптов bash+sed/awk (или perl)
Сколько времени вам потребуется используя bash+sed/awk (или perl) что бы например сделать следующее?
1) Найти в логе те IP, которые за любую одну минуту сделали более N кликов.
Или
2) Найти в логе те IP, которые обращались менее чем к N разным страницам и сделали по ним более К кликов
3) Найти в логе те страницы к которым обращались более N разных IP.
4) Найти в логе юзерагенты которые использовались более N раз K разными IP адресами.
5) найти страницы, которые были запрошены более N раз, затем найти IP которые кликали только по этим страницам более К раз.
Может дадите ссылку на такие готовые решения?
Конечно, если у вас HTTP флуд состоит всегда из запросов лишь к стартовой
GET / HTTP/1.1
Причем каждый IP делает по десятку запросов в секунду, то флудящие IP можно найти и скриптом bash+sed/awk
Если же HTTP флуд более хитрый, когда имитируется действия пользователя и каждый IP делает по 3-10 запросов в минуту, то таких ботов искать нужно более сложными алгоритмами.
За компьютерной техникой в офлайн магазин действительно идти нет смысла.
Так как все характеристики и цены на нее есть в интернете.
А бытовые товары (пылесос, велосипед и т.д.) удобнее выбирать в офлайн магазине, так как и там можно подержать в руках.
Выбрав понравившуюся модель, можно посмотреть сколько ее минмальная цена в интренете.
Например, разница между минимальной ценой в интрнет магазине и в крупной сети (например м-видео) на один и тот же товар может достигать 30%
За одно лишь Мавроди можно сказать спасибо, за то что его затея покажет сколько в стране безнадежных лохов и безбашенных аферистов.
Пока, судя по реакции общества, их процент довольно низок.
Так как мало кто всерьез воспринял его затею.
Бедные тоже все потеряют, не стройте иллюзий.
Наживутся на этой затеи лишь мошенники и кидалы.
Эта пирамида (если заработает в том виде как предлагается) породит огромное количество мошенничеств и кидков.
1) Тысячники, сотники, десятники будут массово исчезать с деньгами своей тысячи, сотни, десятки.
2) Будет много фальшивых тысячников, сотников, десятников, которые будут собирать деньги и все брать себе. Так как единой, регулярно обновляемой базы участников в системе не будет.
3) Будут воровать чужие аттестаты вебмани, предоставляемые для проверки.
Но я уверен этого не случится, так как ммм-2011 не начнет свою работу в том виде как ее расписал Мавроди. Так как процент людей по интеллекту подобных Мавроди у нас к счастью не велик.
Ведь здесь прямо им говорится – ПИРАМИДА. Большинство испугается явного риска.
Если бы Мавроди сделал иначе, сказал бы что он собрал команду талантливых финансистов, которые вкладывают деньги в супер прибыльные, не потопляемые проекты со 100% гарантии, и пообещал бы высокий процент, то шансов у него было бы больше.
Так как любителей халявы намного больше, чем людей готовых осознанно рисковать.