Dram

Рейтинг
1114
Регистрация
28.06.2008

Решил все же попробовать обновить Nginx (пересобрать с модулем бротли) на тестовом впс.

Скачал стаб. версию nginx, openssl, brotli, сконфигурировал.

Все прошло нормально.

Выполнил

make

долго все собирало, закончилось так

-Wl,-z,relro -Wl,-z,now \
-shared
sed -e "s|%%PREFIX%%|/usr/share/nginx|" \
-e "s|%%PID_PATH%%|/run/nginx.pid|" \
-e "s|%%CONF_PATH%%|/etc/nginx/nginx.conf|" \
-e "s|%%ERROR_LOG_PATH%%|/var/log/nginx/error.log|" \
< man/nginx.8 > objs/nginx.8
make[1]: Leaving directory '/opt/nginx-1.14.0'

сделал

make install

закончилось все так

test -d '/usr/lib/nginx/modules' \
|| mkdir -p '/usr/lib/nginx/modules'
test ! -f '/usr/lib/nginx/modules/ngx_http_xslt_filter_module.so' \
|| mv '/usr/lib/nginx/modules/ngx_http_xslt_filter_module.so' \
'/usr/lib/nginx/modules/ngx_http_xslt_filter_module.so.old'
cp objs/ngx_http_xslt_filter_module.so '/usr/lib/nginx/modules/ngx_http_xslt_filter_module.so'
test ! -f '/usr/lib/nginx/modules/ngx_http_image_filter_module.so' \
|| mv '/usr/lib/nginx/modules/ngx_http_image_filter_module.so' \
'/usr/lib/nginx/modules/ngx_http_image_filter_module.so.old'
cp objs/ngx_http_image_filter_module.so '/usr/lib/nginx/modules/ngx_http_image_filter_module.so'
test ! -f '/usr/lib/nginx/modules/ngx_http_geoip_module.so' \
|| mv '/usr/lib/nginx/modules/ngx_http_geoip_module.so' \
'/usr/lib/nginx/modules/ngx_http_geoip_module.so.old'
cp objs/ngx_http_geoip_module.so '/usr/lib/nginx/modules/ngx_http_geoip_module.so'
test ! -f '/usr/lib/nginx/modules/ngx_mail_module.so' \
|| mv '/usr/lib/nginx/modules/ngx_mail_module.so' \
'/usr/lib/nginx/modules/ngx_mail_module.so.old'
cp objs/ngx_mail_module.so '/usr/lib/nginx/modules/ngx_mail_module.so'
test ! -f '/usr/lib/nginx/modules/ngx_stream_module.so' \
|| mv '/usr/lib/nginx/modules/ngx_stream_module.so' \
'/usr/lib/nginx/modules/ngx_stream_module.so.old'
cp objs/ngx_stream_module.so '/usr/lib/nginx/modules/ngx_stream_module.so'
make[1]: Leaving directory '/opt/nginx-1.14.0'

далее service nginx restart и проверяю

nginx -V
nginx version: nginx/1.10.3

И вот не могу понять почему не обновилось?

---------- Добавлено 02.09.2018 в 11:49 ----------

Оптимизайка:
Попробуйте сначала сделать service nginx stop а потом apt --fix-broken install
и её выхлоп полный покажите

service nginx stop

root@Debian-93-stretch-64-minimal /opt/nginx-1.14.0 # apt --fix-broken install

Reading package lists... Done

Building dependency tree

Reading state information... Done

0 upgraded, 0 newly installed, 0 to remove and 122 not upgraded.

было тиц 160 - стало ИКС = 2100

Если у кого-то из читающих тоже будет проблема с почтой, мне помогло это решение http://blog.asidorov.name/2013/10/gmail-debian-exim4.html

Необходимо запретить exim'у общаться по протоколу IPv6:
# vim /etc/exim4/exim4.conf.template

Над строкой begin acl необходимо добавить такую запись:
disable_ipv6 = true

И все, перезагружаем почтовый сервер:
# service exim4 restart

и там еще небольшая обшибочка в скрипте, нужно очищать файл перед записью

...
cp /dev/null result.txt
cat dns.txt | while read line
do
host $line >> result.txt
done
...

Все сделал

#!/bin/bash
cat /var/log/nginx/access.zakos_pod_good_bot.log | awk '{if ($9=="503") {print $1}}' | sort | uniq -c | sort -nr | head | awk '{print $2}' > dns.txt
cat dns.txt | while read line
do
host $line >> result.txt
done
FILEPATH=gootbot.log
egrep -w 'yandex|google' result.txt > $FILEPATH
if [ -s $FILEPATH ]
then
mail -s 'Возможно хороший бот' 444@gmail.com < $FILEPATH
fi

пару часов погуглил и продвинулся еще дальше, вот что имею на данный момент

#!/bin/bash
cat /var/log/nginx/access.zakos_pod_good_bot.log | awk '{if ($9=="503") {print $1}}' | sort | uniq -c | sort -nr | head | awk '{print $2}' > dns.txt
cat dns.txt | while read line
do
host $line >> result.txt
done

в файл result.txt получаю вывод

Host 136.3.216.91.in-addr.arpa. not found: 3(NXDOMAIN)
Host 202.246.213.95.in-addr.arpa. not found: 3(NXDOMAIN)
204.246.213.95.in-addr.arpa domain name pointer angry.io.
Host 0.139.66.13.in-addr.arpa. not found: 3(NXDOMAIN)
Host 84.205.202.82.in-addr.arpa. not found: 3(NXDOMAIN)
82.205.202.82.in-addr.arpa domain name pointer as3.angry.io.
Host 53.3.216.91.in-addr.arpa. not found: 3(NXDOMAIN)
Host 31.183.181.95.in-addr.arpa. not found: 3(NXDOMAIN)
Host 183.90.243.91.in-addr.arpa. not found: 3(NXDOMAIN)
Host 13.90.243.91.in-addr.arpa. not found: 3(NXDOMAIN)
Host 136.3.216.91.in-addr.arpa. not found: 3(NXDOMAIN)

теперь пытаюсь понять как его просканировать на наличие слов yandex и google и если нашло - то отправлять админу уведомление

как то так надо..

egrep -w 'yandex|google' result.txt



---------- Добавлено 01.09.2018 в 10:29 ----------

почти дописал :)))

#!/bin/bash
cat /var/log/nginx/access.zakos_pod_good_bot.log | awk '{if ($9=="503") {print $1}}' | sort | uniq -c | sort -nr | head | awk '{print $2}' > dns.txt
cat dns.txt | while read line
do
host $line >> result.txt
done
FILEPATH=gootbot.log
egrep -w 'yandex|google' result.txt > $FILEPATH
if [ -s $FILEPATH ]
then
mail -s 'Возможно хороший бот' 444@gmail.com < $FILEPATH
fi

Но почему то письмо не приходит :( (я там специально добавил строку с яндексом для проверки, лог gootbot.log создался)

---------- Добавлено 01.09.2018 в 10:58 ----------

Понял на сервере не настроена почта, тут ошибка /var/log/exim4

SMTP error from remote mail server after end of data: 451 4.7.1 Sorry, the service is currently unavailable. Please come back later. 1535788455-L6m2Q984CN-sFVmqsvO
info@site.ru R=dnslookup_relay_to_domains T=remote_smtp defer (-46) H=mx.yandex.net [213.180.193.89]: SMTP error from remote mail server after end of data: 451 4.7.1 Sorry, the service is currently unavailable. Please come back later. 1535788431-W37gQEU4Nr-rp74xrmp

Ну а вот группа в ВК https://vk.com/gamblingpro

Теперь то что нужно!!! Спасибо!

---------- Добавлено 31.08.2018 в 23:15 ----------

Skom, сори не дает репу плюсануть, а можно еще вопрос.

Я тут такую конструкцию соорудил

#!/bin/bash
cat /var/log/nginx/access.bot.log | awk '{if ($9=="503") {print $1}}' | sort | uniq -c | sort -nr | head | awk '{print $2}' > dns.txt

Я хочу обратный DNS-запрос делать для тех IP что в файл записал.

Далее логику работы я вижу такой - каждый из этих IP проверяем командой Host, например

host 95.213.246.202
Host 202.246.213.95.in-addr.arpa. not found: 3(NXDOMAIN)

и т.д. Куда то записываем эти данные, в лог какой-то. Далее сканируем этот лог на наличие в нем

yandex.ru
google.com

Так как IP ботов яндекса и гугла возвращает

host 37.9.113.197
197.113.9.37.in-addr.arpa domain name pointer 37-9-113-197.spider.yandex.com.

host 66.249.76.57
57.76.249.66.in-addr.arpa domain name pointer crawl-66-249-76-57.googlebot.com.

Если при сканировании лога нашли Яндекс или Гугл - шлем уведомление админу.

Как это можно реализовать ?

что-то не прокатывает


root@m ~ # cat /var/log/nginx/access.bot.log | awk '{if ($9=="503") {print $1}}' | sort | uniq -c | sort -nr | head
117 95.213.246.202
103 95.213.246.204
66 82.202.205.84
60 82.202.205.82
34 13.66.139.0
12 23.103.64.39
9 178.57.65.193
8 46.243.173.199
7 91.216.3.114
7 46.243.173.84
root@m ~ # cat /var/log/nginx/access.bot.log | awk '{if ($9=="503") {print $1}}' | sort | uniq | sort -nr | head
193.93.195.99
193.93.195.90
193.93.195.87
193.93.195.68
193.93.195.67
193.93.195.62
193.93.195.59
193.93.195.51
193.93.195.50
193.93.195.47
root@m ~ # cat /var/log/nginx/access.bot.log | awk '{if ($9=="503") {print $1}}' | sort | uniq | sort -nru | head
193.93.193.112
188.68.1.100
185.89.101.100
185.223.160.104
185.14.194.130
185.13.32.104
185.101.68.103
178.57.65.102
178.159.97.100
146.185.202.106

Сегодняшний лог access.zakos_pod_good_bot.log на данный момент содержит 3413 (!!!) записей.

Я не вижу смысла делать столько запросов, мне бы вполне хватило просканировать топ 10

про sort -nru не понял, попробовал запрос с ним, разницы не увидел.

Яж не кодер и 90% написанного вам не понял :((

---------- Добавлено 31.08.2018 в 22:00 ----------

просто запрос

cat /var/log/nginx/access.zakos_pod_good_bot.log | awk '{if ($9=="503") {print $1}}' | sort -nru

вывел непоятные IP не те что изначатльный запрос сортировал

---------- Добавлено 31.08.2018 в 22:16 ----------

пока остановился на этом


#!/bin/bash
cat /var/log/nginx/access.zakos_pod_good_bot.log | awk '{if ($9=="503") {print $1}}' | sort | uniq -c | sort -nr | head | awk '{print $2}' > dns.txt

как теперь проверять то что записалось в dns.txt ?

Всего: 6924