myth Опубликовано 19 апреля, 2018 · Жалоба 2018-04-19 00:21:18 | INFO | main | Version Dump: 2.3. OK 2018-04-19 01:01:15 | INFO | main | Version Dump: 2.3. OK 2018-04-19 01:41:13 | INFO | main | Version Dump: 2.3. OK 2018-04-19 02:20:46 | INFO | main | Version Dump: 2.3. OK 2018-04-19 03:21:42 | INFO | main | Version Dump: 2.3. OK 2018-04-19 03:40:46 | INFO | main | Version Dump: 2.3. OK 2018-04-19 04:21:12 | INFO | main | Version Dump: 2.3. OK 2018-04-19 04:40:45 | INFO | main | Version Dump: 2.3. OK 2018-04-19 05:21:41 | INFO | main | Version Dump: 2.3. OK 2018-04-19 05:41:12 | INFO | main | Version Dump: 2.3. OK 2018-04-19 06:21:42 | INFO | main | Version Dump: 2.3. OK 2018-04-19 07:21:41 | INFO | main | Version Dump: 2.3. OK 2018-04-19 07:41:23 | INFO | main | Version Dump: 2.3. OK 2018-04-19 08:20:46 | INFO | main | Version Dump: 2.3. OK 2018-04-19 09:01:17 | INFO | main | Version Dump: 2.3. OK 2018-04-19 09:41:21 | INFO | main | Version Dump: 2.3. OK 2018-04-19 10:01:17 | INFO | main | Version Dump: 2.3. OK 2018-04-19 10:40:46 | INFO | main | Version Dump: 2.3. OK 2018-04-19 11:01:18 | INFO | main | Version Dump: 2.3. OK 2018-04-19 11:41:46 | INFO | main | Version Dump: 2.3. OK 2018-04-19 12:20:45 | INFO | main | Version Dump: 2.3. OK 2018-04-19 12:41:16 | INFO | main | Version Dump: 2.3. OK 2018-04-19 13:41:12 | INFO | main | Version Dump: 2.3. OK Обработка пользовательского списка исключений же if( defined($EX_IPS{$ip}) ) { # print "Excluding ip ".$ip.": match excluded ip in DB.\n"; $MAIL_EXCLUDES .= "Excluding ip ".$ip.": match excluded ip in DB.\n"; $logger->debug("Excluding ip ".$ip); next; } Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
arhead Опубликовано 19 апреля, 2018 · Жалоба 8 минут назад, myth сказал: Обработка пользовательского списка исключений же Нет. Следующий блок. где ZAP_OLD_IPS Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
myth Опубликовано 19 апреля, 2018 · Жалоба хз, может база побилась Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
max1976 Опубликовано 19 апреля, 2018 · Жалоба Исправлено поведение zapret.pl при обнаружении пустого ip. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alexdirty Опубликовано 19 апреля, 2018 · Жалоба Подскажите, как СКАТ блокирует подсети? ICMP должны проходить? Например сеть 91.108.4.0/22. Есть хост 91.108.4.10, который у оператора со СКАТом отвечает на ICMP но выдаёт заглушку при обращении через WEB. А как он с другими сетевыми портами поступает? Блочит? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SokolovS Опубликовано 19 апреля, 2018 · Жалоба Аналогично с zapret.pl: 2018-04-19 13:41:38 | ERROR | main | Eval: Can't call method "binip" on an undefined value at /usr/local/scripts/zapret/zapret.pl line 867. 2018-04-19 13:41:58 | INFO | main | Load iterations: 1, resolved domains ipv4: 0, resolved domains ipv6: 0 2018-04-19 13:41:58 | INFO | main | Added: domains: 1, urls: 2, IPv4 ips: 2, IPv6 ips: 0, subnets: 0, records: 3 2018-04-19 13:41:58 | INFO | main | Deleted: old domains: 15633, old urls: 13661, old ips: 58781, old only ips: 835, old subnets: 20, old records: 28162 Самое плохое в последней строчке. Похоже скрипт пропустил все, что после возникновения ошибки и почистил БД. 4 минуты назад, max1976 сказал: Исправлено поведение zapret.pl при обнаружении пустого ip. Пока писал, исправлено )) Спасибо. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
myth Опубликовано 19 апреля, 2018 · Жалоба Приехало и ко мне. Интересно... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
XomA Опубликовано 19 апреля, 2018 · Жалоба 24 минуты назад, max1976 сказал: Исправлено поведение zapret.pl при обнаружении пустого ip. Спасибо, все работает Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Piyoz Опубликовано 19 апреля, 2018 · Жалоба 29 минут назад, max1976 сказал: Исправлено поведение zapret.pl при обнаружении пустого ip. Спасибо. Было бы неплохо для таких случаев иметь возможность парсинга локального файла реестра. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
myth Опубликовано 19 апреля, 2018 · Жалоба Или die при каждом удобном случае Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
max1976 Опубликовано 19 апреля, 2018 (изменено) · Жалоба Если кому-то интересно, я выложил новую версию zapret.pl. Из кода удален функционал резолвинга доменов. Переделан алгоритм разбора xml, работы с реестром, что существенно сократило время обработки реестра. Можно ставить в крон вызов скрипта каждые 10 минут, что позволит оперативно обновлять БД. Теперь, при возникновении нештатных ситуаций с реестром, не будет очистки БД. Изменено 19 апреля, 2018 пользователем max1976 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 19 апреля, 2018 · Жалоба Сделал скриптик, который считает статистику по дампу. Статистика по дампу Сводка по URL: - всего записей: 58627 - наиболее длинный URL: 1133 - протокол HTTP: всего 50721; порты 80 81 888 8001 8080 8081 - протокол HTTPS: всего 7894; порты 443 16869 - другие протоколы: всего 12; newcamd525 - top-10 доменов: vidoevo.com myvido1.com exyi.com agaclip.com viduba.com molodegka.xyz graniru.info paktune.pk voroniny-online.pw pixiv.net Сводка по доменам: - всего доменов: 68318 - из них с маской: 3641 - top-10 доменов без маски: sl.pt googleusercontent.com bcdl.rocks bkfind.space amazonaws.com ru.com bookolimp.site sl-reverse.com graniru.info sexros.net - top-10 доменов с маской: bkfind.space ru.com olimp9b55.gdn olimp6301.site olimpa88c.site olimpa89a.top olimp98b4.top olimp656f.top olimp58e8.top olimp4859.top Сводка по IP-адресам: - всего адресов: 2612 - top-10 для адресов: 188.42.196 185.49.71 188.42.189 185.106.140 185.82.210 173.0.153 188.124.247 87.117.232 185.164.174 125.209.252 - всего подсетей: 61 - top-10 для подсетей: 34.192.0.0/10 52.192.0.0/11 35.192.0.0/12 35.208.0.0/12 35.224.0.0/12 52.64.0.0/12 54.144.0.0/12 54.160.0.0/12 34.240.0.0/13 34.248.0.0/13 - общий размер подсетей: 18197760 Сам скрипт под спойлером. Скрытый текст Для работы скрипта нужен сам дамп в XML, и пакет xmlstarlet. #!/bin/bash ### Работа с дампом - статистика ERDI_XML="/usr/bin/xmlstarlet" DUMP="путь-к-дампу/dump_last.xml" echo "Дамп: $DUMP (байт `stat --format='%s' $DUMP`, строк `wc --lines $DUMP | cut -d' ' -f1`)" # | sed -e 's/\(.*\)/\U\1/' | xargs idn --quiet -u --no-tld echo "Формируются списки из дампа..." echo "- список адресов (list-url.txt)" "${ERDI_XML}" select -T -t -m "/reg:register/content[not(@blockType) and url]" \ -v "url" -n "$DUMP" \ | sort -u | awk '{ print length, $0 }' | sort -nr | cut -d" " -f2- \ > list-url.txt echo "- список доменов (list-domain.txt)" "${ERDI_XML}" select -T -t -m "/reg:register/content[@blockType='domain']" \ -v "domain" -n "$DUMP" \ | idn --quiet | sed 's/\(.*\)/\L\1/' \ | sed 's/\.$//' \ | sort -u | awk '{ print length, $0 }' | sort -nr | cut -d" " -f2- \ > list-domain.txt echo "- список доменов с маской (list-mask.txt)" "${ERDI_XML}" select -T -t -m "/reg:register/content[@blockType='domain-mask']" \ -v "domain" -n "$DUMP" \ | idn --quiet | sed 's/\(.*\)/\L\1/' \ | sed 's/\.$//' \ | sort -u | awk '{ print length, $0 }' | sort -nr | cut -d" " -f2- \ > list-mask.txt echo "- список IP-адресов (list-ip.txt)" "${ERDI_XML}" select -T -t -m "/reg:register/content[@blockType='ip' and ip]" \ -v "ip" -n "$DUMP" \ | sort -V -u \ > list-ip.txt echo "- список IP-подсетей (list-net.txt)" "${ERDI_XML}" select -T -t -m "/reg:register/content[@blockType='ip' and ipSubnet]" \ -v "ipSubnet" -n "$DUMP" \ | sort -V -u \ > list-net.txt echo "Статистика по дампу" echo " Сводка по URL: " echo " - всего записей: `wc --lines list-url.txt | cut -d' ' -f1`" echo " - наиболее длинный URL: `head -n 1 list-url.txt | wc --chars`" echo " - протокол HTTP: всего `grep -c -E '^http://' list-url.txt`; порты `grep -E '^http://[^/]+:[0-9]+' list-url.txt | grep -E -o '^http://[^/]+:[0-9]+' | cut -d':' -f3 | sort -u -n | tr '\n' ' '`" echo " - протокол HTTPS: всего `grep -c -E '^https://' list-url.txt`; порты `grep -E '^https://[^/]+:[0-9]+' list-url.txt | grep -E -o '^https://[^/]+:[0-9]+' | cut -d':' -f3 | sort -u -n | tr '\n' ' '`" echo " - другие протоколы: всего `grep -c -E -v '^https?://' list-url.txt`; `grep -E -v '^https?://' list-url.txt | grep -E -o '^.+://' | cut -d':' -f1 | sort -u | tr '\n' ' '`" echo " - top-10 доменов: `grep -E -o '^https?://[^/]+' list-url.txt | cut -d':' -f2 | cut -c3- | cut -d'.' -f2- | grep -F '.' | sort | uniq -c | sort -nr | head -n 10 | cut -c9- | tr '\n' ' '`" echo " Сводка по доменам: " echo " - всего доменов: `wc --lines list-domain.txt list-mask.txt | tail -n 1 | grep -E -o '[0-9]+'`" echo " - из них с маской: `wc --lines list-mask.txt | cut -d' ' -f1`" echo " - top-10 доменов без маски: `rev list-domain.txt | cut -d'.' -f1-2 | rev | sort | uniq -c | sort -nr | head -n 10 | cut -c9- | tr '\n' ' '`" echo " - top-10 доменов с маской: `rev list-mask.txt | cut -d'.' -f1-2 | rev | sort | uniq -c | sort -nr | head -n 10 | cut -c9- | tr '\n' ' '`" echo " Сводка по IP-адресам: " echo " - всего адресов: `wc --lines list-ip.txt | cut -d' ' -f1`" echo " - top-10 для адресов: `cut -d'.' -f1-3 list-ip.txt | sort -V | uniq -c | sort -nr | head -n 10 | cut -c9- | tr '\n' ' '`" echo " - всего подсетей: `wc --lines list-net.txt | cut -d' ' -f1`" echo " - top-10 для подсетей: " sort -n -t'/' -k2 list-net.txt | head -n 10 | sed 's/^/ /' echo " - общий размер подсетей: `cut -d'/' -f2 list-net.txt | awk '{s+=2^(32-$1)}END{print s}'`" Скрипт вначале выгружает разные типы записей в разные файлы, а затем по ним получает статистику. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
myth Опубликовано 19 апреля, 2018 · Жалоба Перешел на dev ветку, потестю Наверное, так лучше $logger->info("Starting RKN at ".(localtime())); Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
myth Опубликовано 19 апреля, 2018 · Жалоба Работает, действительно, намного быстрее Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
big-town Опубликовано 19 апреля, 2018 · Жалоба Тоже клон гита сделал, но потестить пока не могу. Мне ресурс выгрузки vigruzki.rkn.gov.ru уже второй день недоступен ни через один аплинк :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
arhead Опубликовано 19 апреля, 2018 · Жалоба 44 минуты назад, big-town сказал: Мне ресурс выгрузки vigruzki.rkn.gov.ru уже второй день недоступен ни через один аплинк :) А пальчиком РКН еще не грозил? А то у мена была похожая ситуация года два назад. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
big-town Опубликовано 19 апреля, 2018 (изменено) · Жалоба 4 минуты назад, arhead сказал: А пальчиком РКН еще не грозил? А то у мена была похожая ситуация года два назад. А мы уже ученые. Сделал скрины трэйсера и отослал в обл. отделение РКН, где явно видно что проблемы не у меня. Интернет ломал не я ;). Изменено 19 апреля, 2018 пользователем big-town Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hsvt Опубликовано 19 апреля, 2018 · Жалоба 2 часа назад, max1976 сказал: Если кому-то интересно, я выложил новую версию zapret.pl. Из кода удален функционал резолвинга доменов. Переделан алгоритм разбора xml, работы с реестром, что существенно сократило время обработки реестра. Можно ставить в крон вызов скрипта каждые 10 минут, что позволит оперативно обновлять БД. Теперь, при возникновении нештатных ситуаций с реестром, не будет очистки БД. Спасибо за труд, а в zapret.sql появились изменения и лучше БД новую залить? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
myth Опубликовано 19 апреля, 2018 · Жалоба Просто применить SQL Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
max1976 Опубликовано 19 апреля, 2018 · Жалоба Только что, hsvt сказал: Спасибо за труд, а в zapret.sql появились изменения и лучше БД новую залить? Можно в новую, а можно и текущую обновить: alter table zap2_records add column hash varchar(60) NULL; CREATE INDEX record_id_idx ON zap2_domains(record_id); CREATE INDEX record_id_idx ON zap2_only_ips(record_id); CREATE INDEX record_id_idx ON zap2_urls(record_id); CREATE INDEX record_id_idx ON zap2_subnets(record_id); Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SokolovS Опубликовано 19 апреля, 2018 · Жалоба Еще надо: ALTER TABLE zap2_domains CHANGE COLUMN `domain` `domain` varchar(255) DEFAULT NULL; Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
big-town Опубликовано 19 апреля, 2018 · Жалоба 8 минут назад, SokolovS сказал: Еще надо: ALTER TABLE zap2_domains CHANGE COLUMN `domain` `domain` varchar(255) DEFAULT NULL; Зачем оно изначально varchar(255) DEFAULT NULL +--------------+-----------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+-----------------+------+-----+-------------------+----------------+ | id | int(6) unsigned | NO | PRI | NULL | auto_increment | | date_add | timestamp | NO | | CURRENT_TIMESTAMP | | | record_id | int(6) unsigned | NO | MUL | NULL | | | domain | varchar(255) | NO | | NULL | | | domain_fixed | varchar(60) | NO | | NULL | | +--------------+-----------------+------+-----+-------------------+----------------+ Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SokolovS Опубликовано 19 апреля, 2018 (изменено) · Жалоба 5 минут назад, big-town сказал: Зачем оно изначально varchar(255) DEFAULT NULL +--------------+-----------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+-----------------+------+-----+-------------------+----------------+ | id | int(6) unsigned | NO | PRI | NULL | auto_increment | | date_add | timestamp | NO | | CURRENT_TIMESTAMP | | | record_id | int(6) unsigned | NO | MUL | NULL | | | domain | varchar(255) | NO | | NULL | | | domain_fixed | varchar(60) | NO | | NULL | | +--------------+-----------------+------+-----+-------------------+----------------+ См. определение таблицы: https://github.com/max197616/zapret/blob/master/zapret.sql И у вас в колонке Null стоит NO. Изменено 19 апреля, 2018 пользователем SokolovS Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
big-town Опубликовано 19 апреля, 2018 · Жалоба 8 минут назад, SokolovS сказал: И у вас в колонке Null стоит NO. Извиняюсь, на размер смотрел, упустил из виду NULL. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SokolovS Опубликовано 19 апреля, 2018 · Жалоба 3 часа назад, max1976 сказал: Если кому-то интересно, я выложил новую версию zapret.pl. Из кода удален функционал резолвинга доменов. Переделан алгоритм разбора xml, работы с реестром, что существенно сократило время обработки реестра. Можно ставить в крон вызов скрипта каждые 10 минут, что позволит оперативно обновлять БД. Теперь, при возникновении нештатных ситуаций с реестром, не будет очистки БД. Если в конфиге переменная our_blacklist закомментирована, то в логе будет ошибка открытия файла. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...