URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 12681
[ Назад ]

Исходное сообщение
"OpenNews: Скрипты для борьбы с флудом и подбором паролей"

Отправлено opennews , 08-Ноя-05 23:55 
Роб из 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


Содержание

Сообщения в этом обсуждении
"apache_mon???"
Отправлено Otto Katz Feldkurat , 08-Ноя-05 23:55 
> Для борьбы с перегрузками на сервере
> opennet.ru используется скрипт

Зачем???


"Скрипт этот"
Отправлено Otto Katz Feldkurat , 09-Ноя-05 00:08 
посмотрел невнимательно по диагонали.

ИМХО чушь сабачачия.

Есть SNORT, есть PF\IPFW, есть GUARDIAN, который на основе анализа IP трафика скоро и правильно банит зломышленника. И есть ACID, который заносит в БД всю историю инцидентов.

Зачем при этом такие тупые полумеры?


"Скрипт этот"
Отправлено _Nick_ , 09-Ноя-05 01:20 
как прибили - так и держица

"Скрипт этот"
Отправлено неаноним , 09-Ноя-05 03:52 
Ну или snortsam

"Скрипт этот"
Отправлено citrin , 09-Ноя-05 08:21 
>посмотрел невнимательно по диагонали.
>
>ИМХО чушь сабачачия.
>
>Есть SNORT, есть PF\IPFW, есть GUARDIAN, который на основе анализа IP трафика
>скоро и правильно банит зломышленника. И есть ACID, который заносит в
>БД всю историю инцидентов.

Чувствуется у вас очень маленький опыт администрирования web-серверов. На уровне SNORT очень сложно определить нормальный это пользователи или он делает слишком много запросов перегружая этим сервер.

>Зачем при этом такие тупые полумеры?

А затем, что если кто то перегружает именно web-сервер то вполне достаточно блокировать его запросы к web.


"если кто-то перегружает именно web-сервер "
Отправлено Otto Katz Feldkurat , 09-Ноя-05 10:16 
> если кто-то перегружает именно web-сервер???
> или он делает слишком много запросов перегружая этим сервер?


вообще-то я (и все все все) обратную задачу решаю - привлечь к своему сервису как можно больше пользователей и задержать их на сервере как можно дольше.

Вы представляете себе Ливжорнал или Mail сообщающих "заходите завтр, когда будет поменьше народ"?

ИМХО тупизна.


"если кто-то перегружает именно web-сервер "
Отправлено citrin , 09-Ноя-05 10:31 
>вообще-то я (и все все все) обратную задачу решаю - привлечь к своему сервису как можно больше пользователей и задержать их на сервере как можно дольше.
>Вы представляете себе Ливжорнал или Mail сообщающих "заходите завтр, когда будет поменьше народ"?
>ИМХО тупизна.

Ресурсы любого сервера не безграничны. И лчше послать одного посетителя, чем позволить ему поставить сервер в позу, когда он не сможет обслуживать посетителей и из за одного пострадают все.


"Скрипт этот"
Отправлено Maxim Chirkov , 09-Ноя-05 09:29 
>Есть SNORT, есть PF\IPFW, есть GUARDIAN, который на основе анализа IP трафика
>скоро и правильно банит зломышленника.

Т.е. вы предлагайте на и так загруженном серере, дополлнительно постоянно грузить его snort'ом, который будет давать сравнимую с apache нагрузку (про безопасность такого решения я не буду подробно говорить, месяц или два назад в snort очередную дыру находили).

К томуже злоумышленники появляются редко, а вот любители зеркалировать сайт в несколько потоков сплош и рядом. Когда они зеркалируют по одному и раздел в статике, ничего страшного, но когда они начинают зеркалировать динамику, да еще попадается одновременно несколько таких злодеев, при этом LA взлетает,  - тут то их и нужно приструнить (не просто зафаерволить, а выдать страницу с предупреждением). Причем, как только они осознали свою ошибку и запросы прекратились или приняли приемлимый объем - убрать адреса из списка блокировки.

Второй вариант - борьба с slashdot-эффектом, когда объем запросов к нескольким страницам приводит к DDoS, здесь выход в подмене на время всплеска активности динамики - статикой.

Через snort, без серьезного рукоприкладства, вы не добъетесь ни первого, ни второго.

> И есть ACID, который заносит в
> БД всю историю инцидентов.

Нехватало еще БД дергать.



"Против слэшдот-эффекта"
Отправлено Otto Katz Feldkurat , 09-Ноя-05 10:20 
и зеркалироания есть только расширение канала, а SNORT у меня грузит процы на уровне 0.001% в самом страшном пике.

"Против слэшдот-эффекта"
Отправлено HilL , 09-Ноя-05 12:08 
и в нем постоянно находят дыры.
аш страшно!

"Против слэшдот-эффекта"
Отправлено Maxim Chirkov , 09-Ноя-05 13:47 
>и зеркалироания есть только расширение канала, а SNORT у меня грузит процы
>на уровне 0.001% в самом страшном пике.

Какое расширение канала ? Если мы не статику раздаем и 10 одновременных запросов к ресурсоемкому скрипту без всякого трафика задерут LA до небес.


"Поолльзователей надо беречь"
Отправлено Otto , 09-Ноя-05 15:50 
>>и зеркалироания есть только расширение канала, а SNORT у меня грузит процы
>>на уровне 0.001% в самом страшном пике.
>
>Какое расширение канала ? Если мы не статику раздаем и 10 одновременных
>запросов к ресурсоемкому скрипту без всякого трафика задерут LA до небес.
>


Пусть зеркалируют хоть в триста потоков - юзер=ТИЦ=реклама=деньги

Сысоевский mod_accel с опцими "кешировать все" и "кешировать на веки"

Скрипт запусается первым, кто требует динамику, все остальные получают статику. Нагрузка снижается резко.


"Поолльзователей надо беречь"
Отправлено Maxim Chirkov , 09-Ноя-05 16:17 
>Поолльзователей надо беречь

Когда один пользователь, недумая ни о ком кроме себя, пытается в 100 потоков скачать себе сайт размером несколько Гб и  создает нагрузку как тысяча других посетителей, его нужно заносить в какой-нибудь глобальный бан-лист.

>Пусть зеркалируют хоть в триста потоков - юзер=ТИЦ=реклама=деньги

Для крутилки он не юзер, а робот, для рекламы совершенно не интересный. Давайте тогда и за показ баннеров поисковым роботам деньги брать. Чем они хуже автоматических качалок ;-)

>Сысоевский mod_accel с опцими "кешировать все" и "кешировать на веки"

Речь про необходимую динамику, например, в форуме новые сообщения для ников отображать или что-то в шапке крутить в зависимости от контекста. Которую на полную статику можно заменить только в экстренном случае.


"Поолльзователей надо беречь"
Отправлено Otto Katz Feldkurat , 09-Ноя-05 23:59 
>Для крутилки он не юзер, а робот, для рекламы совершенно не интересный.
>Давайте тогда и за показ баннеров поисковым роботам деньги брать. Чем
>они хуже автоматических качалок ;-)

Речь о другом. В страницы Opennet.Ru нужно вставить ссылки на Opennet.Ru, кнопочки Opennet.Ru и проч и создать невинные механизмы возврата юзера с "зеркала" на Opennet.Ru.

Листает чел старый форум на "зеркале", неверное движение мыши - и он уже на Opennet.

Чем больше такоо твоего контента накачают и выложат у себя, тем больше народу придет на Opennet.Ru и останется на нем, а не на "зеркале".

Деньги.


"Поолльзователей надо беречь"
Отправлено Maxim Chirkov , 10-Ноя-05 09:22 
>Речь о другом. В страницы Opennet.Ru нужно вставить ссылки на Opennet.Ru, кнопочки
>Opennet.Ru и проч и создать невинные механизмы возврата юзера с "зеркала"
>на Opennet.Ru.

Вы не поняли :-) Под зеркалированием я подразумеваю инициативу Васи Пупкина решившего скачать себе несколько документов для чтения на локальной машине, запустившего качалку, ушедшего пить чай, и не обратившего внимание на то что вместо с этими несколькими документами пошел качаться весь сайт. К сожалению, это обычная практика.

Особенно достают обладатели  каналов без оплаты за трафик, когда им нужно что-то, они решают скачать за одним весь сайт, в надежде,  что что-то еще пригодится, запускают качалку на ночь и утром удивляются объему скаченной информации.


"для чтения на локальной машине"
Отправлено Otto Katz Feldkurat , 10-Ноя-05 11:13 
Не мог даже и вообразить, что кто-то может качать сайт в локал для изучения на досуге.

Есть активные типы поднимающие LA до 30% (смотрят 1500-2000 тяжелых скриптовых страниц в час), но акселератор довольно быстро гасит волну, все живы.


"для чтения на локальной машине"
Отправлено eSupport.org.ua , 10-Ноя-05 13:25 
>Есть активные типы поднимающие LA до 30% (смотрят 1500-2000 тяжелых скриптовых страниц
>в час), но акселератор довольно быстро гасит волну, все живы.


Давай ссылку, потестим сколько запросов выдержит акселлератор ;)


"www.to-dress.ru подкрути мне счетчик"
Отправлено Otto Katz Feldkurat , 10-Ноя-05 16:14 
заранее благодарен

"алё, гараж!"
Отправлено Otto Katz Feldkurat , 10-Ноя-05 16:29 
>www.to-dress.ru подкрути мне счетчик
>заранее благодарен

Забыл попросить. UA пропиши. Чтобы Рэмблер тебя посчитал.



"www.to-dress.ru подкрути мне счетчик"
Отправлено eSupport.org.ua , 11-Ноя-05 09:11 
>заранее благодарен

Да, не сдюжил сайт-то :)


"Да, не сдюжил сайт-то :)"
Отправлено Otto Katz Feldkurat , 11-Ноя-05 11:08 
А поконкретнее?

Не вижу тебя в логах.

Или ты бан от SNORT'а принимаешь за "не сдюжил"?


"Да, не сдюжил сайт-то :)"
Отправлено eSupport.org.ua , 12-Ноя-05 08:05 
>А поконкретнее?
>
>Не вижу тебя в логах.

Я тестил с разных серверов.

>
>Или ты бан от SNORT'а принимаешь за "не сдюжил"?

А за что бан? Я просто попробовал натравить пару сотен wget'ов. Как же забота об юзерах? :))))



"для чтения на локальной машине"
Отправлено sash , 10-Ноя-05 16:14 
>Не мог даже и вообразить, что кто-то может качать сайт в локал
>для изучения на досуге.
>
>Есть активные типы поднимающие LA до 30% (смотрят 1500-2000 тяжелых скриптовых страниц
>в час), но акселератор довольно быстро гасит волну, все живы.

А в чем вы считаете Load Average??

Всегда считал значение попугаями, а не процентами.


"это я про WCPU"
Отправлено Otto Katz Feldkurat , 10-Ноя-05 20:09 
.

"Поолльзователей надо беречь"
Отправлено eSupport.org.ua , 09-Ноя-05 18:46 
>Пусть зеркалируют хоть в триста потоков - юзер=ТИЦ=реклама=деньги

Зеркалируют не юзера :)

>
>Сысоевский mod_accel с опцими "кешировать все" и "кешировать на веки"
>
>Скрипт запусается первым, кто требует динамику, все остальные получают статику. Нагрузка снижается
>резко.

Попробуйте поставить на своем shared хостинге. И услышать жалобы владельцев разнообразных CMS, о том что их контент не обновляется. Вы судя по всему достаточно далеки от области хостинга.



"mod_accel живет"
Отправлено Otto Katz Feldkurat , 09-Ноя-05 23:54 
на моем личном физическом сервере и я соврешенно точно не хостер и не провайдер

"mod_accel живет"
Отправлено eSupport.org.ua , 10-Ноя-05 08:25 
На личном сервере может жить что угодно. Но когда это публичный популярный веб-сервер, тогда ситуация меняется кардинально :)

"Против слэшдот-эффекта"
Отправлено eSupport.org.ua , 09-Ноя-05 18:44 
>и зеркалироания есть только расширение канала, а SNORT у меня грузит процы
>на уровне 0.001% в самом страшном пике.


Вы представитель техотдела какого-то хостинга? Или у Вас просто корпоративный сервер с 5-ю файлами на HTML?


"Скрипт этот"
Отправлено HilL , 09-Ноя-05 12:11 
клевый у тебя скрипт.
еще и роботом меня обозвал!

Sorry. Restricted area ! Only for humans.

Извините, при запросе данной интерактивной формы сработала система блокирования роботов.
По этому URL нет полезных для индексации данных. По всем вопросам обращайтесь по адресу mc@tyumen.ru
Если вы получили данный текст по ошибке, наиболее вероятной причиной является использование браузера или прокси сервера
с настройками направленными на излишнюю анонимность.

8))))))))

смех и не только.

:-@


"Скрипт этот"
Отправлено Maxim Chirkov , 09-Ноя-05 13:53 
>клевый у тебя скрипт.
>еще и роботом меня обозвал!
>смех и не только.

Нечего тереть все подряд HTTP заголовки без надобности или использовать анонимные proxy.  Чем, напирмер, вам HTTP_USER_AGENT помешал ?


"Скрипт этот"
Отправлено HilL , 10-Ноя-05 12:23 
>>клевый у тебя скрипт.
>>еще и роботом меня обозвал!
>>смех и не только.
>
>Нечего тереть все подряд HTTP заголовки без надобности или использовать анонимные proxy.
> Чем, напирмер, вам HTTP_USER_AGENT помешал ?

ну вот...
8-(
я оказываеца и проксю теперь неправильно сконфигурил.
и анонимность избыточная.

извините...


"Скрипт этот"
Отправлено _Nick_ , 12-Ноя-05 06:05 
>>клевый у тебя скрипт.
>>еще и роботом меня обозвал!
>>смех и не только.
>
>Нечего тереть все подряд HTTP заголовки без надобности или использовать анонимные proxy.
> Чем, напирмер, вам HTTP_USER_AGENT помешал ?

нее... маразм основанный на паранойе
я хочу страничку - посчу запрос. Если сервант по запросу не дает контент
при отстутствии НЕНУЖНЫХ заголовков - то нуна че-то менять в  консерватории...


"Скрипт этот"
Отправлено NuclearCat , 27-Ноя-05 08:36 
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 поле, готовьтесь к глюкам. Параноидальное приваси с нормальным функционированием несовместимы.


"Скрипты для борьбы с флудом и подбором паролей"
Отправлено Gennadi , 09-Ноя-05 17:35 
Нечто подобное?...

http://gennadi.dyn.ee/modules.php?name=Forums&file=viewtopic...


"Скрипты для борьбы с флудом и подбором паролей"
Отправлено GR , 09-Ноя-05 17:36 
Любопытно ... некто Отто поц пытается учить создателя оного из лучших сайтов рунета :)

Отто - что создал Максим мы все видим. И только из за этого уже есть смысл прислушиваться к его мнению. Хотелось бы URL на ваш сайт для зацеки глубины и крутизны тэээкссказать ...
А пока я вижу полько ваш талант к созданию флэйма, уж извините за деревенскую простоту :)


"Скрипты для борьбы с флудом и подбором паролей"
Отправлено Ыгыдшл , 10-Ноя-05 10:22 
>Когда один пользователь, недумая ни о ком кроме
>себя, пытается в 100 потоков скачать себе сайт
>размером несколько Гб и  создает нагрузку как
>тысяча других посетителей, его нужно заносить в
>какой-нибудь глобальный бан-лист.

яндекс например так делает


"Скрипты для борьбы с флудом и подбором паролей"
Отправлено Аноним , 10-Ноя-05 10:58 
echo '* * * * * root hspherebfd >> /dev/null' >> /etc/crontab

Разъясните плиз что делает это строчка..
Т.е скрипт запускается один раз или что ? ъ
и что значит: hspherebfd >> /dev/null'


"Скрипты для борьбы с флудом и подбором паролей"
Отправлено ZloiJoker , 10-Ноя-05 11:17 
Не сильный знаток, поверхносно пока изучил скрипт.. идея хорошая.
Но вот анализ логов апача это не хорошая идея..
пример: на странице 50 картинок, при аткрытии этой страницы, в логах апача будет больше 50 строк, в моменте скрипт забанит этого перца..

вобщем тут не все так хорошо..


"Скрипты для борьбы с флудом и подбором паролей"
Отправлено Maxim Chirkov , 10-Ноя-05 11:32 
>пример: на странице 50 картинок, при аткрытии этой страницы, в логах апача
>будет больше 50 строк, в моменте скрипт забанит этого перца..

Картинки скачаются только первый раз, остальное время будут браться из кэша. Для сайтов, на которых на каждой странице по 50 неповторяющихся картинок достаточно увеличить в конфигурации скрипта число допустимых запросов или задать список игнорируемых типов.


"Скрипты для борьбы с флудом и подбором паролей"
Отправлено ZloiJoker , 10-Ноя-05 11:23 
кстати аксес лог он не аналезирует

"Скрипты для борьбы с флудом и подбором паролей"
Отправлено Maxim Chirkov , 10-Ноя-05 11:39 
>кстати аксес лог он не аналезирует

Он парсит "combined" тип лога apache, если используется другой формат - нужно править regex в скрипте.


"Скрипты для борьбы с флудом и подбором паролей"
Отправлено ZloiJoker , 10-Ноя-05 11:47 
>>кстати аксес лог он не аналезирует
>
>Он парсит "combined" тип лога apache, если используется другой формат - нужно
>править regex в скрипте.

код в студию где он цепляет лог апача.


"Скрипты для борьбы с флудом и подбором паролей"
Отправлено Maxim Chirkov , 10-Ноя-05 12:06 
> код в студию где он цепляет лог апача.

http://www.opennet.me/dev/alertmon/apache_mon.pl
путь к логу задается через log_path, далее по тексту см. где этот log_path используется.


"Скрипты для борьбы с флудом и подбором паролей"
Отправлено ZloiJoker , 10-Ноя-05 13:51 
И что в итоге мы видем: httpd/logs/error_log
А что у нас попадает в error_log  так что от флуда он ни каким боком не спасает

"Скрипты для борьбы с флудом и подбором паролей"
Отправлено Maxim Chirkov , 10-Ноя-05 13:56 
>И что в итоге мы видем: httpd/logs/error_log
> А что у нас попадает в error_log  так что от
>флуда он ни каким боком не спасает

Вы про какой скрипт ? apache_mon  error_log  не трогает.



"Скрипты для борьбы с флудом и подбором паролей"
Отправлено ZloiJoker , 10-Ноя-05 14:13 
Так же обязательно указать корректный путь к логу ошибок apache: /%cfgpath/bfd/rules/apache

"Скрипты для борьбы с флудом и подбором паролей"
Отправлено ZloiJoker , 10-Ноя-05 14:14 
так вот кроме лога ошибак этот скрипт ничего не смотрит..

"Скрипты для борьбы с флудом и подбором паролей"
Отправлено Maxim Chirkov , 10-Ноя-05 14:29 
>Так же обязательно указать корректный путь к логу ошибок apache: /%cfgpath/bfd/rules/apache

:-) Вы прочитали описание от одного скрипта, а смотрите исходники другого :-)


"Скрипты для борьбы с флудом и подбором паролей"
Отправлено ZloiJoker , 10-Ноя-05 16:37 
я ничего ничитал а взял и посмотрел исходники (не досконально его конешно пониамю, но суть того что происходит уловил, просто именно на перле никогда не писал)

Давайте будем последовательны..:
смотрим фаил 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


"Скрипты для борьбы с флудом и подбором паролей"
Отправлено Maxim Chirkov , 10-Ноя-05 17:15 
Еще раз говорю, мы с вами разные исходники обсуждаем, я говорю про
http://www.opennet.me/dev/alertmon/apache_mon.pl

а вы про Brute Force Detection скрипт, который на http://dedic.ru/node/116 и к блокировке флуда не имеет никакого отношения.

В новости говориться о двух разных скриптах.


"Скрипты для борьбы с флудом и подбором паролей"
Отправлено ZloiJoker , 10-Ноя-05 18:27 
ок прошу прощение просто не понял что в новости 2 скрипта.