Роб из HSpherePackages.com создал (http://dedic.ru/node/116) хороший BFD (Brute Force Detection) скрипт, который позволяет автоматически блокировать атакующие хосты. Скрипт бесплатный и может работать как на Linux, так и FreeBSD.
Дополнение от редактора: Для борьбы с перегрузками на сервере opennet.ru используется скрипт apache_mon (http://www.opennet.me/dev/alertmon/apache_mon.pl), который на основе периодического анализа access лога apache и превышении заданной величины Load Average на сервере, производит блокировку адресов превысивших заданный rate limit. Кроме того, при обнаружении большого числа запросов к динамически создаваемой странице, скрипт позволяет прокэшировать данную страницу через статику. Блокировка осуществляется через mod_rewrite правило через .htaccess, но нетрудно переработать скрипт для блокировки через rewrite map или пакетный фильтр.
URL: http://dedic.ru/node/116
Новость: http://www.opennet.me/opennews/art.shtml?num=6399
> Для борьбы с перегрузками на сервере
> opennet.ru используется скриптЗачем???
посмотрел невнимательно по диагонали.ИМХО чушь сабачачия.
Есть SNORT, есть PF\IPFW, есть GUARDIAN, который на основе анализа IP трафика скоро и правильно банит зломышленника. И есть ACID, который заносит в БД всю историю инцидентов.
Зачем при этом такие тупые полумеры?
как прибили - так и держица
Ну или snortsam
>посмотрел невнимательно по диагонали.
>
>ИМХО чушь сабачачия.
>
>Есть SNORT, есть PF\IPFW, есть GUARDIAN, который на основе анализа IP трафика
>скоро и правильно банит зломышленника. И есть ACID, который заносит в
>БД всю историю инцидентов.Чувствуется у вас очень маленький опыт администрирования web-серверов. На уровне SNORT очень сложно определить нормальный это пользователи или он делает слишком много запросов перегружая этим сервер.
>Зачем при этом такие тупые полумеры?
А затем, что если кто то перегружает именно web-сервер то вполне достаточно блокировать его запросы к web.
> если кто-то перегружает именно web-сервер???
> или он делает слишком много запросов перегружая этим сервер?
вообще-то я (и все все все) обратную задачу решаю - привлечь к своему сервису как можно больше пользователей и задержать их на сервере как можно дольше.Вы представляете себе Ливжорнал или Mail сообщающих "заходите завтр, когда будет поменьше народ"?
ИМХО тупизна.
>вообще-то я (и все все все) обратную задачу решаю - привлечь к своему сервису как можно больше пользователей и задержать их на сервере как можно дольше.
>Вы представляете себе Ливжорнал или Mail сообщающих "заходите завтр, когда будет поменьше народ"?
>ИМХО тупизна.Ресурсы любого сервера не безграничны. И лчше послать одного посетителя, чем позволить ему поставить сервер в позу, когда он не сможет обслуживать посетителей и из за одного пострадают все.
>Есть SNORT, есть PF\IPFW, есть GUARDIAN, который на основе анализа IP трафика
>скоро и правильно банит зломышленника.Т.е. вы предлагайте на и так загруженном серере, дополлнительно постоянно грузить его snort'ом, который будет давать сравнимую с apache нагрузку (про безопасность такого решения я не буду подробно говорить, месяц или два назад в snort очередную дыру находили).
К томуже злоумышленники появляются редко, а вот любители зеркалировать сайт в несколько потоков сплош и рядом. Когда они зеркалируют по одному и раздел в статике, ничего страшного, но когда они начинают зеркалировать динамику, да еще попадается одновременно несколько таких злодеев, при этом LA взлетает, - тут то их и нужно приструнить (не просто зафаерволить, а выдать страницу с предупреждением). Причем, как только они осознали свою ошибку и запросы прекратились или приняли приемлимый объем - убрать адреса из списка блокировки.
Второй вариант - борьба с slashdot-эффектом, когда объем запросов к нескольким страницам приводит к DDoS, здесь выход в подмене на время всплеска активности динамики - статикой.
Через snort, без серьезного рукоприкладства, вы не добъетесь ни первого, ни второго.
> И есть ACID, который заносит в
> БД всю историю инцидентов.Нехватало еще БД дергать.
и зеркалироания есть только расширение канала, а SNORT у меня грузит процы на уровне 0.001% в самом страшном пике.
и в нем постоянно находят дыры.
аш страшно!
>и зеркалироания есть только расширение канала, а SNORT у меня грузит процы
>на уровне 0.001% в самом страшном пике.Какое расширение канала ? Если мы не статику раздаем и 10 одновременных запросов к ресурсоемкому скрипту без всякого трафика задерут LA до небес.
>>и зеркалироания есть только расширение канала, а SNORT у меня грузит процы
>>на уровне 0.001% в самом страшном пике.
>
>Какое расширение канала ? Если мы не статику раздаем и 10 одновременных
>запросов к ресурсоемкому скрипту без всякого трафика задерут LA до небес.
>
Пусть зеркалируют хоть в триста потоков - юзер=ТИЦ=реклама=деньгиСысоевский mod_accel с опцими "кешировать все" и "кешировать на веки"
Скрипт запусается первым, кто требует динамику, все остальные получают статику. Нагрузка снижается резко.
>Поолльзователей надо беречьКогда один пользователь, недумая ни о ком кроме себя, пытается в 100 потоков скачать себе сайт размером несколько Гб и создает нагрузку как тысяча других посетителей, его нужно заносить в какой-нибудь глобальный бан-лист.
>Пусть зеркалируют хоть в триста потоков - юзер=ТИЦ=реклама=деньги
Для крутилки он не юзер, а робот, для рекламы совершенно не интересный. Давайте тогда и за показ баннеров поисковым роботам деньги брать. Чем они хуже автоматических качалок ;-)
>Сысоевский mod_accel с опцими "кешировать все" и "кешировать на веки"
Речь про необходимую динамику, например, в форуме новые сообщения для ников отображать или что-то в шапке крутить в зависимости от контекста. Которую на полную статику можно заменить только в экстренном случае.
>Для крутилки он не юзер, а робот, для рекламы совершенно не интересный.
>Давайте тогда и за показ баннеров поисковым роботам деньги брать. Чем
>они хуже автоматических качалок ;-)Речь о другом. В страницы Opennet.Ru нужно вставить ссылки на Opennet.Ru, кнопочки Opennet.Ru и проч и создать невинные механизмы возврата юзера с "зеркала" на Opennet.Ru.
Листает чел старый форум на "зеркале", неверное движение мыши - и он уже на Opennet.
Чем больше такоо твоего контента накачают и выложат у себя, тем больше народу придет на Opennet.Ru и останется на нем, а не на "зеркале".
Деньги.
>Речь о другом. В страницы Opennet.Ru нужно вставить ссылки на Opennet.Ru, кнопочки
>Opennet.Ru и проч и создать невинные механизмы возврата юзера с "зеркала"
>на Opennet.Ru.Вы не поняли :-) Под зеркалированием я подразумеваю инициативу Васи Пупкина решившего скачать себе несколько документов для чтения на локальной машине, запустившего качалку, ушедшего пить чай, и не обратившего внимание на то что вместо с этими несколькими документами пошел качаться весь сайт. К сожалению, это обычная практика.
Особенно достают обладатели каналов без оплаты за трафик, когда им нужно что-то, они решают скачать за одним весь сайт, в надежде, что что-то еще пригодится, запускают качалку на ночь и утром удивляются объему скаченной информации.
Не мог даже и вообразить, что кто-то может качать сайт в локал для изучения на досуге.Есть активные типы поднимающие LA до 30% (смотрят 1500-2000 тяжелых скриптовых страниц в час), но акселератор довольно быстро гасит волну, все живы.
>Есть активные типы поднимающие LA до 30% (смотрят 1500-2000 тяжелых скриптовых страниц
>в час), но акселератор довольно быстро гасит волну, все живы.
Давай ссылку, потестим сколько запросов выдержит акселлератор ;)
заранее благодарен
>www.to-dress.ru подкрути мне счетчик
>заранее благодаренЗабыл попросить. UA пропиши. Чтобы Рэмблер тебя посчитал.
>заранее благодаренДа, не сдюжил сайт-то :)
А поконкретнее?Не вижу тебя в логах.
Или ты бан от SNORT'а принимаешь за "не сдюжил"?
>А поконкретнее?
>
>Не вижу тебя в логах.Я тестил с разных серверов.
>
>Или ты бан от SNORT'а принимаешь за "не сдюжил"?А за что бан? Я просто попробовал натравить пару сотен wget'ов. Как же забота об юзерах? :))))
>Не мог даже и вообразить, что кто-то может качать сайт в локал
>для изучения на досуге.
>
>Есть активные типы поднимающие LA до 30% (смотрят 1500-2000 тяжелых скриптовых страниц
>в час), но акселератор довольно быстро гасит волну, все живы.А в чем вы считаете Load Average??
Всегда считал значение попугаями, а не процентами.
.
>Пусть зеркалируют хоть в триста потоков - юзер=ТИЦ=реклама=деньгиЗеркалируют не юзера :)
>
>Сысоевский mod_accel с опцими "кешировать все" и "кешировать на веки"
>
>Скрипт запусается первым, кто требует динамику, все остальные получают статику. Нагрузка снижается
>резко.Попробуйте поставить на своем shared хостинге. И услышать жалобы владельцев разнообразных CMS, о том что их контент не обновляется. Вы судя по всему достаточно далеки от области хостинга.
на моем личном физическом сервере и я соврешенно точно не хостер и не провайдер
На личном сервере может жить что угодно. Но когда это публичный популярный веб-сервер, тогда ситуация меняется кардинально :)
>и зеркалироания есть только расширение канала, а SNORT у меня грузит процы
>на уровне 0.001% в самом страшном пике.
Вы представитель техотдела какого-то хостинга? Или у Вас просто корпоративный сервер с 5-ю файлами на HTML?
клевый у тебя скрипт.
еще и роботом меня обозвал!Sorry. Restricted area ! Only for humans.
Извините, при запросе данной интерактивной формы сработала система блокирования роботов.
По этому URL нет полезных для индексации данных. По всем вопросам обращайтесь по адресу mc@tyumen.ru
Если вы получили данный текст по ошибке, наиболее вероятной причиной является использование браузера или прокси сервера
с настройками направленными на излишнюю анонимность.8))))))))
смех и не только.
:-@
>клевый у тебя скрипт.
>еще и роботом меня обозвал!
>смех и не только.Нечего тереть все подряд HTTP заголовки без надобности или использовать анонимные proxy. Чем, напирмер, вам HTTP_USER_AGENT помешал ?
>>клевый у тебя скрипт.
>>еще и роботом меня обозвал!
>>смех и не только.
>
>Нечего тереть все подряд HTTP заголовки без надобности или использовать анонимные proxy.
> Чем, напирмер, вам HTTP_USER_AGENT помешал ?ну вот...
8-(
я оказываеца и проксю теперь неправильно сконфигурил.
и анонимность избыточная.извините...
>>клевый у тебя скрипт.
>>еще и роботом меня обозвал!
>>смех и не только.
>
>Нечего тереть все подряд HTTP заголовки без надобности или использовать анонимные proxy.
> Чем, напирмер, вам HTTP_USER_AGENT помешал ?нее... маразм основанный на паранойе
я хочу страничку - посчу запрос. Если сервант по запросу не дает контент
при отстутствии НЕНУЖНЫХ заголовков - то нуна че-то менять в консерватории...
RFC:14.43 User-Agent
The User-Agent request-header field contains information about the
user agent originating the request. This is for statistical purposes,
the tracing of protocol violations, and automated recognition of user
agents for the sake of tailoring responses to avoid particular user
agent limitations. User agents SHOULD include this field with
requests. The field can contain multiple product tokens (section 3.8)
and comments identifying the agent and any subproducts which form a
significant part of the user agent. By convention, the product tokens
are listed in order of their significance for identifying the
application.User-Agent = "User-Agent" ":" 1*( product | comment )
Example:
User-Agent: CERN-LineMode/2.15 libwww/2.17b3
Так, что... не нравится использовать UA поле, готовьтесь к глюкам. Параноидальное приваси с нормальным функционированием несовместимы.
Нечто подобное?...http://gennadi.dyn.ee/modules.php?name=Forums&file=viewtopic...
Любопытно ... некто Отто поц пытается учить создателя оного из лучших сайтов рунета :)Отто - что создал Максим мы все видим. И только из за этого уже есть смысл прислушиваться к его мнению. Хотелось бы URL на ваш сайт для зацеки глубины и крутизны тэээкссказать ...
А пока я вижу полько ваш талант к созданию флэйма, уж извините за деревенскую простоту :)
>Когда один пользователь, недумая ни о ком кроме
>себя, пытается в 100 потоков скачать себе сайт
>размером несколько Гб и создает нагрузку как
>тысяча других посетителей, его нужно заносить в
>какой-нибудь глобальный бан-лист.яндекс например так делает
echo '* * * * * root hspherebfd >> /dev/null' >> /etc/crontabРазъясните плиз что делает это строчка..
Т.е скрипт запускается один раз или что ? ъ
и что значит: hspherebfd >> /dev/null'
Не сильный знаток, поверхносно пока изучил скрипт.. идея хорошая.
Но вот анализ логов апача это не хорошая идея..
пример: на странице 50 картинок, при аткрытии этой страницы, в логах апача будет больше 50 строк, в моменте скрипт забанит этого перца..вобщем тут не все так хорошо..
>пример: на странице 50 картинок, при аткрытии этой страницы, в логах апача
>будет больше 50 строк, в моменте скрипт забанит этого перца..Картинки скачаются только первый раз, остальное время будут браться из кэша. Для сайтов, на которых на каждой странице по 50 неповторяющихся картинок достаточно увеличить в конфигурации скрипта число допустимых запросов или задать список игнорируемых типов.
кстати аксес лог он не аналезирует
>кстати аксес лог он не аналезируетОн парсит "combined" тип лога apache, если используется другой формат - нужно править regex в скрипте.
>>кстати аксес лог он не аналезирует
>
>Он парсит "combined" тип лога apache, если используется другой формат - нужно
>править regex в скрипте.код в студию где он цепляет лог апача.
> код в студию где он цепляет лог апача.http://www.opennet.me/dev/alertmon/apache_mon.pl
путь к логу задается через log_path, далее по тексту см. где этот log_path используется.
И что в итоге мы видем: httpd/logs/error_log
А что у нас попадает в error_log так что от флуда он ни каким боком не спасает
>И что в итоге мы видем: httpd/logs/error_log
> А что у нас попадает в error_log так что от
>флуда он ни каким боком не спасаетВы про какой скрипт ? apache_mon error_log не трогает.
Так же обязательно указать корректный путь к логу ошибок apache: /%cfgpath/bfd/rules/apache
так вот кроме лога ошибак этот скрипт ничего не смотрит..
>Так же обязательно указать корректный путь к логу ошибок apache: /%cfgpath/bfd/rules/apache:-) Вы прочитали описание от одного скрипта, а смотрите исходники другого :-)
я ничего ничитал а взял и посмотрел исходники (не досконально его конешно пониамю, но суть того что происходит уловил, просто именно на перле никогда не писал)Давайте будем последовательны..:
смотрим фаил apache
$logfile="/hsphere/local/var/httpd/logs/error_log"; < - пусть в этом чудо логи хранятся все логи того что происходит с апачем хотя судя по логики тут должны быть только еррор логи.$checkcmd1="tail -c $diffsize $logfile | grep -iwf $instdir/patterns.txt | grep -i error | grep -i user | tr -d ':' | awk '{ print \$8\":\"\$10 }' | tr -d ']' > $instdir/tmp/$service.tmp";
смотрим что делает это чуда строка:
вырезает последне добовления из этого чудного лог файла находит строчки содержащиеся в patterns.txt + строчки где есть слово user и получившихся строк выбераем ip и второй параметр ХЗ что и все это в фаил http.tmpтеперь смотрим что же у нас в файле: patterns.txt
failed
no such user found
failed password
authentication failure
authentication failed
not found
password fail
Ну и как же он от флуда спосает ? Разбирается еррор лог как не крути..
Ты сам то код смотрел ?root:/usr/local/etc/apache# head /home/love.hardart.ru/logs/error.log
[Thu Nov 10 05:12:15 2005] [error] [client 207.46.98.72] File does not exist: /home/love.hardart.ru/htdocs/robots.txt
[Thu Nov 10 06:20:10 2005] [error] [client 213.180.206.2] File does not exist: /home/love.hardart.ru/htdocs/robots.txt
[Thu Nov 10 14:51:23 2005] [error] [client 207.46.98.72] File does not exist: /home/love.hardart.ru/htdocs/robots.txt
Еще раз говорю, мы с вами разные исходники обсуждаем, я говорю про
http://www.opennet.me/dev/alertmon/apache_mon.plа вы про Brute Force Detection скрипт, который на http://dedic.ru/node/116 и к блокировке флуда не имеет никакого отношения.
В новости говориться о двух разных скриптах.
ок прошу прощение просто не понял что в новости 2 скрипта.