Den73: нельзя так делать, вы так забаните всех подряд у кого будет вхождение 444 например в строке запроса или referer.
зачем все эти лишние действия со скидованием в /tmp/ips, все это одной строкой можно делать
ipset не пускает дубли. iptables пускает
А как тогда парсить код ошибки?
---------- Добавлено 08.03.2014 в 13:28 ----------
Я помню, вы мне скрипт кидали. Но это не спасало при бане через iptables. Позже попробую банить через ipset
WapGraf: Создайте bash скрипт, впишите туда все эти команды и запускайте его из крона. Или же соедените все эти команды с помощью &&, но не думаю что такой вариант будет удобен для использования.
Записать в bash скрипт без изменения синтаксиса команд? В bash вроде другой синтаксис.
Den73: о ротации логов не забывайте, нагрузка зависит от кол. записей в логе и от текущего состояния системы в целом.
вы можете провести тестирование например распарсив лог с 1млн записей.
время выполнения можно узнать так
time команда
А как сделать, чтобы большой лог записывался в архив, ну а дальше по крону?
В iptables подключили ipset?
Да, всё ок. Когда я баню в ручную, т.е. ввожу ipset -A dropip ТУТ_ИП , то прекрасно банит и высвечивает айпишник в ipset -L
Где-то в скрипте ошибка:
awk -F '|' '{if($7 == " 444 ")print $1}' /tmp/ban_location.log | awk '{print $1}' | sort -u | awk '{print "ipset -A dropip " $0}' | sh; cat /dev/null > /tmp/ban_location.logВвел команду:
Потом изменил скрипт:
awk '{if($8 == '444')print $1}' /tmp/ban_location.log | sort -u | awk '{print ipset -A dropip $1}' | sh; cat /dev/null > /tmp/ban_location.logпочему не банит?
Парни, будет ли скрипт выполняться каждые 15 секунд?
Как просмотреть список заблокированных ip?
нельзя так делать, вы так забаните всех подряд у кого будет вхождение 444 например в строке запроса или referer.
зачем все эти лишние действия со скидованием в /tmp/ips, все это одной строкой можно делать
ipset не пускает дубли. iptables пускает
А как тогда парсить код ошибки?
---------- Добавлено 08.03.2014 в 13:28 ----------
Я помню, вы мне скрипт кидали. Но это не спасало при бане через iptables. Позже попробую банить через ipset
Я бы советовал ipset.
Как это сделать? Я в ipset вообще не шарю.
Вот нашел скрипт для удаления дубликатов:
Будет работать?
---------- Добавлено 08.03.2014 в 13:19 ----------
Вот нашел:
while true; do tail -n 10000 /tmp/ban_location.log | grep "444" | cut -d " " -f1 | sort | uniq -c | awk '{if($1>2){print $2}}' | xargs -tl -I _ ipset -A blacklist _; sleep 60; doneПарсит айпишники, которые получили ошибку 444 более двух раз, и заносит в бан.
Будет работать на CentOS?
access_log ban_location.log прописан в конфиге nginx.
Увидел, что на форумах люди советуют банить через nullroute. Как это сделать?
И как же дописать скрипт, чтобы из /tmp/ips парсились айпишники в другой файл, например, в /tmp/uniq_ips. А дальше уже бан через nullroute
Создайте bash скрипт, впишите туда все эти команды и запускайте его из крона. Или же соедените все эти команды с помощью &&, но не думаю что такой вариант будет удобен для использования.
Записать в bash скрипт без изменения синтаксиса команд? В bash вроде другой синтаксис.
Сделал "по-китайски" выполнение неких скриптов в crontab:
Будут ли эти команды выполняться по порядку? Или же они будут выполняться одновременно? Если второе, то как сделать выполнение этих команд по порядку?
о ротации логов не забывайте, нагрузка зависит от кол. записей в логе и от текущего состояния системы в целом.
вы можете провести тестирование например распарсив лог с 1млн записей.
время выполнения можно узнать так
А как сделать, чтобы большой лог записывался в архив, ну а дальше по крону?