Den73

Den73
Рейтинг
523
Регистрация
26.06.2010
grisha2217:
Пример можно?:)

то что делает барф


awk '/REGEX/{print $1}' /var/log/nginx/access.log | sort | uniq -c | awk '{if($1 > 10) print "ipset -A ban " $2}' | sh

REGEX - что искать.

если нужно по коду ответа то


awk '{if($8 == '200')print $1}' /var/log/nginx/access.log | sort | uniq -c | awk '{if($1 > 10) print "ipset -A ban " $2}' | sh

$8 может отличаться, в зависимости от структуры логов.

и т.д

ipset нужен и белый список в нем.

можно вообще еще сократить. на чистом awk

шило на мыло 🍾

зачем нужен barf, этот же функционал реализуется в 1 строку средствами системных утилит.

grisha2217:
У меня http флуд

http идет по tcp, что бы уст. tcp сессию нужно отправить пакет с флагом syn

поэтому http сопроваждается тем же сином, просто у вас внимание сосредоточено на L7 приложении.

когда будет больше трафика там уже вылезут все другие проблемы.

grisha2217:
444,505 я сам добавил.


Что оставил:
(405|503|444|505)


444 - получает тот, кто в списке запрещенных стран
505 - получает тот, кто отсылает серверу запросы, содержащие "//?True


Именно эти запросы есть в логах. Nginx успешно отбивает такие запросы. Но апач почему-то загибается.

//?True ну это же типично только для 1 ботнета, каждый раз будете новые костыли добавлять

grisha2217:
Дак скрипт же смотрит тех, кто получит ошибки 505,444 и пр и заблочит их. Что здесь плохого?

400|403|405|499|503

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

403 ваш бэкенд может так отвечать валидным пользователям (например нюансы сайта),а вы их банить пытаетесь.

499 тоже нужно быть аккуратнее, это могут быть браузеры, просто клиент закрыл соединение раньше времени.

444 там нету.

ADMINS_IP там 1, а если у вас на сервере кол ip больше чем 1 то вы можете забанить собственные адреса))

WapGraf:
А правила фаервола такие селают только одно - при достижении лимита отрубят весь трафик.

---------- Добавлено 23.02.2014 в 13:44 ----------


логи можно обнулять после каждого парсинга.

это само собой, если не обнулять это нужно быть ....

даже если обнулять то за xxx времени прилетает столько записей то что на парсинг уходит много времени.

ну а если брать только xxx посл. записей то какой тогда вообще смысл...

те же 10к ботов со среднем рейтом 30rps не дадут спокойно парсить, все рухнет. (на обычном 1 сервере)

grisha2217:
Подниму, пожалуй, тему.


Нашел статейку. Ссылка


Конфиг nginx'a настроил, дал права на на файлы. Запускаю скрипт мониторинга, ни один айпишник не улетел в бан. В чем может быть причина?

пустая трата времени, скрипты без реалтайма - не помогут, атака на ваш сервер завершиться с успехом :)

это может навредить больше чем принести пользу (будете отдавать ошибку "полезным ботам"). "вредные" медленные боты - не редкое явление, приведенный вами скрипт разве что от F5

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

нужно смотреть, могу пофиксить от 20$.

WapGraf:
Den73, как CGI? Однозначно. Как FastCGI? Нет. Тут уже "на вкус и цвет".

на вкус и цвет согласен. с FastCGI ушли 2 года назад или 3, уже не помню.

WapGraf:
Den73, но модуль апача + itk работает медленее чем просто модуль апача.

ну и ладно, там оверхед не значительный.

это лучше чем apache/cgi

Всего: 7715