The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Фильтрация логов nginx посредством sh скрипта"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Фильтрация логов nginx посредством sh скрипта"  +/
Сообщение от Bugster email on 25-Июн-10, 19:16 
Доброго времени суток, помогите реализовать скрипт который выдергивал бы нужные IP адреса из nginx.
Суть скрипта такова, есть модуль у nginx который пишет в логи превышенное число соединений сообщением к примеру:
[error] 19025#0: *4209513 access forbidden by rule, client: 123.123.13.13, server: example.org, request: "GET / HTTP/1.1", host: "example.org"
На одном из ресурсов я нашел скрипт который создает правила блокировки Ip из логов, ниже его содержимое:

# ищем ботов
cat /var/log/nginx/error.log | grep "limiting connections by zone" | grep "request: \"GET / HTTP/1.1"| awk '{print $12}'| awk -F"," '{print $
1}'| sort | uniq -c | sort -nr > /tmp/botnet.blacklist
# очищаем скрипт бана
cat /dev/null > /tmp/iptables_ban.sh
# создаем DROP правила для 50 самых агрессивных ботов
awk '{print "iptables -A INPUT -p tcp --dport 80 -s " $2 " -j DROP" }' botnet.blacklist | head -n 50 >> /tmp/iptables_ban.sh
# загружаем blacklist
bash /tmp/iptables_ban.sh
# делаем ротацию лога
cat /dev/null > /home/www/nginx_log/error.log
[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`

Проблема в том что с сменой версии nginx этот скрипт уже не работает для меня. Я пробовал банально подставить access forbidden by rule вместо limiting connections by zone но это не помогло, что и не удивило меня.

Кто-то может помочь подправить этот скрипт чтобы он работал на основе моих логов? Я пока что в sh скриптах не силен, особенно где речь идет о регулярных выражениях - там совсем глухо.

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Фильтрация логов nginx посредством sh скрипта"  +/
Сообщение от Michael (??) on 25-Июн-10, 19:23 
>[оверквотинг удален]
>"GET / HTTP/1.1", host: "example.org"
>На одном из ресурсов я нашел скрипт который создает правила блокировки Ip
>из логов, ниже его содержимое:
>
># ищем ботов
>cat /var/log/nginx/error.log | grep "limiting connections by zone" | grep "request: \"GET
>/ HTTP/1.1"| awk '{print $12}'| awk -F"," '{print $
>1}'| sort | uniq -c | sort -nr > /tmp/botnet.blacklist
># очищаем скрипт бана
>cat /dev/null > /tmp/iptables_ban.sh

хм... здесь вы заменяете скрипт пустым файлом
># создаем DROP правила для 50 самых агрессивных ботов
>awk '{print "iptables -A INPUT -p tcp --dport 80 -s " $2 " -j DROP" }' botnet.blacklist | head -n 50 >> /tmp/iptables_ban.sh
># загружаем blacklist
>bash /tmp/iptables_ban.sh

а тут пытаетесь его запустить
где логика?

>[оверквотинг удален]
>[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
>
>Проблема в том что с сменой версии nginx этот скрипт уже не
>работает для меня. Я пробовал банально подставить access forbidden by rule
>вместо limiting connections by zone но это не помогло, что и
>не удивило меня.
>
>Кто-то может помочь подправить этот скрипт чтобы он работал на основе моих
>логов? Я пока что в sh скриптах не силен, особенно где
>речь идет о регулярных выражениях - там совсем глухо.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "Фильтрация логов nginx посредством sh скрипта"  +/
Сообщение от Michael (??) on 25-Июн-10, 19:23 
>[оверквотинг удален]
>>[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
>>
>>Проблема в том что с сменой версии nginx этот скрипт уже не
>>работает для меня. Я пробовал банально подставить access forbidden by rule
>>вместо limiting connections by zone но это не помогло, что и
>>не удивило меня.
>>
>>Кто-то может помочь подправить этот скрипт чтобы он работал на основе моих
>>логов? Я пока что в sh скриптах не силен, особенно где
>>речь идет о регулярных выражениях - там совсем глухо.

пардон.. невнимательно прочитал

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "Фильтрация логов nginx посредством sh скрипта"  +/
Сообщение от Bugster email on 26-Июн-10, 13:34 
>[оверквотинг удален]
>>>Проблема в том что с сменой версии nginx этот скрипт уже не
>>>работает для меня. Я пробовал банально подставить access forbidden by rule
>>>вместо limiting connections by zone но это не помогло, что и
>>>не удивило меня.
>>>
>>>Кто-то может помочь подправить этот скрипт чтобы он работал на основе моих
>>>логов? Я пока что в sh скриптах не силен, особенно где
>>>речь идет о регулярных выражениях - там совсем глухо.
>
>пардон.. невнимательно прочитал

Это все хорошо, только помочь некому пока. Читаю о регуялрных, надеюсь голова сама доварит как выделить.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "Фильтрация логов nginx посредством sh скрипта"  +/
Сообщение от anonymous (??) on 03-Июл-10, 14:54 
>Доброго времени суток, помогите реализовать скрипт который выдергивал бы нужные IP адреса
>из nginx.
>Суть скрипта такова, есть модуль у nginx который пишет в логи превышенное
>число соединений сообщением к примеру:
>[error] 19025#0: *4209513 access forbidden by rule, client: 123.123.13.13, server: example.org, request:
># ищем ботов
>cat /var/log/nginx/error.log | grep "limiting connections by zone" | grep "request: \"GET
>/ HTTP/1.1"| awk '{print $12}'| awk -F"," '{print $
>1}'| sort | uniq -c | sort -nr > /tmp/botnet.blacklist

gawk '/access forbidden by rule/ { match($0, /client: ([^,]+),/, a); print a[1] }' /var/log/nginx/error.log | sort | uniq -c | sort -nr > /tmp/botnet.blacklist

можно и sort|uniq|sort переписать на awk, но лениво :-)

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру