Фильтрация логов nginx посредством sh скрипта, Bugster, 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 скриптах не силен, особенно где речь идет о регулярных выражениях - там совсем глухо.
|
- Фильтрация логов nginx посредством sh скрипта, Michael, 19:23 , 25-Июн-10 (1)
>[оверквотинг удален] >"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 скриптах не силен, особенно где >речь идет о регулярных выражениях - там совсем глухо.
- Фильтрация логов nginx посредством sh скрипта, Michael, 19:23 , 25-Июн-10 (2)
>[оверквотинг удален] >>[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid` >> >>Проблема в том что с сменой версии nginx этот скрипт уже не >>работает для меня. Я пробовал банально подставить access forbidden by rule >>вместо limiting connections by zone но это не помогло, что и >>не удивило меня. >> >>Кто-то может помочь подправить этот скрипт чтобы он работал на основе моих >>логов? Я пока что в sh скриптах не силен, особенно где >>речь идет о регулярных выражениях - там совсем глухо. пардон.. невнимательно прочитал
- Фильтрация логов nginx посредством sh скрипта, Bugster, 13:34 , 26-Июн-10 (3)
>[оверквотинг удален] >>>Проблема в том что с сменой версии nginx этот скрипт уже не >>>работает для меня. Я пробовал банально подставить access forbidden by rule >>>вместо limiting connections by zone но это не помогло, что и >>>не удивило меня. >>> >>>Кто-то может помочь подправить этот скрипт чтобы он работал на основе моих >>>логов? Я пока что в sh скриптах не силен, особенно где >>>речь идет о регулярных выражениях - там совсем глухо. > >пардон.. невнимательно прочитал Это все хорошо, только помочь некому пока. Читаю о регуялрных, надеюсь голова сама доварит как выделить.
- Фильтрация логов nginx посредством sh скрипта, anonymous, 14:54 , 03-Июл-10 (4)
>Доброго времени суток, помогите реализовать скрипт который выдергивал бы нужные 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.blacklistgawk '/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, но лениво :-)
|