Перейти к содержимому
Калькуляторы

OK-2004

Активный участник
  • Публикации

    153
  • Зарегистрирован

  • Посещение

1 подписчик

О OK-2004

  • Звание
    Студент
    Студент

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Пол
    Array

Город

  • Город
    Array

Посетители профиля

1643 просмотра профиля
  1. Вот фрагмент скрипта, который если запущен не в интерактивном режиме валит свой выхлоп в файл лога, мож Вам поможет : ...... if [[ -z "$TERM" ]] || [[ "$TERM" = "dumb" ]] ; then set -vx exec 3>&1 4>&2 exec 1>$r0/${me}_${ymdhm}.debug 2>&1 else set -vx fi .....
  2. У меня этот скрипт тоже вчера перестал под вечер работать. Перешёл на скрипт : https://forum.nag.ru/applications/core/interface/file/attachment.php?id=46655 с ним проблем нет.
  3. я знаю и не люблю эту утилиту, именно поэтому переписал её на баше в своё время. За dump_stat.sh - отдельное спасибо, Зы : заметил что Вы пользуетесь idn, хорошая утилита, но не поддерживает стандарт IDNA2008 ( тока IDNA2003 ) если Ваш дистрибутив имеет пакет idn2 - лучше пользуйесь им
  4. А каким скриптом Вы получили такую статистику ? Перерыл в Вашем erdi.tar,gz все срипты, не нашёл даже наличия в них фразы "Поиск дублей в реестре ". Насчёт наложения масок подсетей - столкнулся с этим, когда пихал эти подсети в ipset. Пришлось развертывать эти подсети в единый список ip-ов, юниковать/сортировать и заново агрегировать и после пихать получившийся новый список в ipset Конечно с blackhole маршрутами такое извращение не нужно....
  5. #!/bin/bash while read line4 ; do IFS=/ read ip mask <<< ${line4} hm=$(ipcalc -bn $line4|awk '/^HostMin: / {print $2}') wi=$(whois ${hm}|grep "^OrgName\|^Country\|^CIDR"|awk '{print $2}'|tr "\n" " ") if [ "x$wi" == "x" ] ; then wi=$(whois ${hm}|grep "^netname\|^country\|^route"|awk '{print $2}'|tr "\n" " ") fi echo "$net/$mask : ${wi}" done < spisok_setey.txt
  6. Попробуйте загнать все сетки из dump.xml в spisok_setey_from_dump.xml.txt , пропарсить этот файлик вот этим скриптом этот файлик и на выходе получите spisok_ipov_from_spiska_setey.txt #!/bin/bash while read line ; do IFS=/ read ip mask <<< ${line} if [ $mask -eq 32 ] ; then echo "$ip" >> spisok_ipov_from_spiska_setey.txt.0 elif [ $mask -eq 31 ] ; then str=$(ipcalc -bn $line|awk '/^HostMin: / { n=$2 } /^HostMax: / { b=$2 } END { printf "lo="; printf n; printf ";hi=";printf b }') ; eval "$str" read a b c d <<< $(echo $lo |tr . ' ') ; read e f g h <<< $(echo $hi |tr . ' ') eval "echo {$a..$e}.{$b..$f}.{$c..$g}.{$d..$h}"|tr " " "\n" >> spisok_ipov_from_spiska_setey.txt.0 else str=$(ipcalc -bn $line|awk '/^Address: / { n=$2 } /^Broadcast: / { b=$2 } END { printf "lo="; printf n; printf ";hi=";printf b }') ; eval "$str" read a b c d <<< $(echo $lo |tr . ' ') ; read e f g h <<< $(echo $hi |tr . ' ') eval "echo {$a..$e}.{$b..$f}.{$c..$g}.{$d..$h}"|tr " " "\n" >> spisok_ipov_from_spiska_setey.txt.0 fi sleep 3 done < spisok_setey_from_dump.xml.txt cat spisok_ipov_from_spiska_setey.txt.0|sort -n|uniq > spisok_ipov_from_spiska_setey.txt
  7. Tcpdump-ом сниффить заркалированный траффик и писать его потом в файлы можно, но это не изящное решение. Самое интересное, что 10 лет назад один товарищ уже озадачился подобным вопросом и явил миру daemonlogger как раз для этих целей https://talosintelligence.com/daemon ( в стандартных репах большинства дистрибутивов отыщите ). Сам пользуюсь этой штукой лет 5. Как говориться - поставил и забыл. Единственное что написал - обёртку на bash для складирования pcap-файлов на "ремотный стораж."
  8. Добрый день! При попытке зайти на : https://forum.nag.ru/index.php?/topic/136717-dhcp-nastroyka/&do=getNewComment Получаю : Извините, возникла проблема У вас нет прав на просмотр этого контента. Код ошибки: 2S136/V Как лечить ?
  9. Ваша мысль ,что идеология проги может нести в себе не только особенности мышления разработчика но и налёт местного колорита, вглядов и традиций, весьма спорна но оригинальна. Теперь по делу: Закостенелось и тяжеловестность ни разу не замечали , хотя непосредственно юзаем его с 2006 года. Немного запутана документация. По диагонали прочитать не удасться. Немного странен алгоритм начисления абоненток. Но это - на любителя. Но прошу учесть : БЖБ - боевой биллинг. Его пишут под большого провайдера Уфы и в виде конечного продукта продают нам грешным.
  10. Ну наконец-то! +2 Все хотелки ТС-а в БЖБ давно реализованы с помощью контрагентов, шаблонов договоров, шаблонов комментариев договоров, шаблонов названий договоров, групп параметров договоров, групп договоров и многоуровневыми ролями и правами доступа к объектами биллинга для разных операторов.
  11. А в конфигах зон Вашего bind-а есть упоминания зоны "domain.ru" или clue-records на "sub.domain.ru". Кто держит зону "domain.ru" ?
  12. Как всегда , прекрасная работа, за что Вам alibek - огромное спасибо. А мы продолжим тоже... Часто при сбое системы парсинга дампа реестра или системы блокировки ревизору "распахиваются" все двери ко всем ресурсам в таком опасном и грозном нонче инете. Процесс востановления совсем не детерменирован во времени и на это время надо бы перевести всю сетку с клиентами и ревизором в "карантинный" режим, в котором инет будет открыт тока по белым спискам а всё остальное заблочено. Если у прова есть при этом свой кэширующий днс для клиентов - то дело сильно упрощается. У нас как раз есть такой ДНС и ниже приведена методика перевода его в карантинный режим : 1. Допустим у нас есть список белых урлов, которые точно никогда не попадут в реестр: ( его размер определяется тока фантазией прова и рекомендациями соотв.органов) cat doms.allow: mail.ru yandex.ru rkn.gov.ru gov.ru kremlin.ru google.ru rfc-revizor.ru gosuslugi.ru ...... Скрипт find_ns.sh ищет ДНС-сервера , которым делегированы эти зоны и делает на их основе заготовки для forward-зон нашего карантинного ДНС-а : #!/bin/bash r=/dev/shm #set -vx rx='([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])' rm -rf $r/dns ; mkdir $r/dns ; rm -f /etc/bind/my_zones ; rm -f /etc/bind/db.fake.middle while read line ; do dig -4 NS +noall +additional ${line}|awk '{print $5}' > $r/dns/${line}.0 if [ -s $r/dns/${line}.0 ] ; then while read line1 ; do if [[ ${line1} =~ ^$rx\.$rx\.$rx\.$rx$ ]] ; then echo "${line1}" >> $r/dns/${line} ; fi done < $r/dns/${line}.0 if [ -s $r/dns/${line} ] ; then string= delim="; " while read line2 ; do string="$string$line2$delim" done < $r/dns/${line} echo "zone \"${line}\" { type forward; forward only; forwarders { ${string} }; };" >> /etc/bind/my_zones echo "${line}. IN NS fakens." >> /etc/bind/db.fake.middle fi else rm -f $r/dns/${line}.0 fi sleep 5 done < /root/doms.allow #set +vx cat /etc/bind/db.fake.head /etc/bind/db.fake.middle /etc/bind/db.fake.tail > /etc/bind/db.fake rm -f $r/dns/*.0 exit 0 Файлы /etc/bind/db.fake.head и /etc/bind/db.fake.tail - "шапка" и "хвост" для создания файковой (aka sinkhole) корневой зоны cat db.fake.head: $ORIGIN . $TTL 2 . IN SOA localhost. root.localhost. ( 2015082010 ; serial 3600 ; refresh 1 ; retry 604800 ; expire 86499 ; minimum ) NS fakens. fakens. IN A 192.168.121.79 cat db.fake.tail: *.ru. IN A 192.168.121.79 *. IN A 192.168.121.79 192.168.121.79 - ип-адресс нашего ДНС "изображающего" из себя всю систему корневых серверов Инета. cat db.fake.middle: mail.ru. IN NS fakens. yandex.ru. IN NS fakens. rkn.gov.ru. IN NS fakens. gov.ru. IN NS fakens. kremlin.ru. IN NS fakens. google.ru. IN NS fakens. rfc-revizor.ru. IN NS fakens. gosuslugi.ru. IN NS fakens. db.fake - корневая зона нашего ДНС-а: cat db.fake: $ORIGIN . $TTL 2 . IN SOA localhost. root.localhost. ( 2015082010 ; serial 3600 ; refresh 1 ; retry 604800 ; expire 86499 ; minimum ) NS fakens. fakens. IN A 192.168.121.79 mail.ru. IN NS fakens. yandex.ru. IN NS fakens. rkn.gov.ru. IN NS fakens. gov.ru. IN NS fakens. kremlin.ru. IN NS fakens. google.ru. IN NS fakens. rfc-revizor.ru. IN NS fakens. gosuslugi.ru. IN NS fakens. *.ru. IN A 192.168.121.79 *. IN A 192.168.121.79 /etc/bind/my_zones - псевдоделегация : zone "mail.ru" { type forward; forward only; forwarders { 217.69.139.112; 94.100.180.138; 185.30.176.202; }; }; zone "yandex.ru" { type forward; forward only; forwarders { 213.180.193.1; 93.158.134.1; }; }; zone "rkn.gov.ru" { type forward; forward only; forwarders { 213.234.223.137; 217.106.225.146; }; }; zone "gov.ru" { type forward; forward only; forwarders { 95.173.128.77; 194.226.65.9; 193.232.66.15; 194.85.84.15; 193.232.82.15; 194.226.80.79; 194.226.127.210; }; }; zone "kremlin.ru" { type forward; forward only; forwarders { 95.173.128.77; 194.226.65.9; 193.232.66.15; 194.85.84.15; 193.232.82.15; 194.226.80.79; 194.226.127.210; }; }; zone "google.ru" { type forward; forward only; forwarders { 216.239.32.10; 216.239.34.10; 216.239.36.10; 216.239.38.10; }; }; zone "rfc-revizor.ru" { type forward; forward only; forwarders { 193.232.146.1; 91.217.20.1; 91.217.21.1; 185.119.138.10; 185.119.136.12; }; }; zone "gosuslugi.ru" { type forward; forward only; forwarders { 109.207.2.218; 213.59.255.175; 91.217.20.1; 91.217.21.1; }; }; Таперича пришла пора познакомиться с named.conf нашего псевдокорневого фейкового ДНС-а : options { directory "/var/cache/bind"; dump-file "/var/log/named/cache_dump.db"; statistics-file "/var/log/named/named_stats.txt"; auth-nxdomain no ; allow-recursion { none; }; allow-query { none; }; allow-transfer { none; }; notify no; recursion no; version "REFUSED"; query-source address 192.168.121.79; check-names master ignore; check-names slave ignore; recursive-clients 10000; listen-on { 192.168.121.79; 127.0.0.1; }; listen-on-v6 { none; }; }; include "/etc/bind/logging"; include "/etc/bind/rndc.key"; controls { inet 127.0.0.1 allow { localhost; } keys { rndc-key; }; }; ///////////////////////////////////////////////////// acl local { 127.0.0.1; 192.168.121.79; }; //////////////////////////// ипы наших клиентов, среди которых затерялся и ревизор acl our_net { 192.168.88.0/24; 192.168.89.0/24; 192.168.121.0/24; }; /////////////////////////////////////////////////////// view "local" { match-clients { "local"; }; allow-recursion { local; }; allow-query { local; }; include "/etc/bind/local_zones"; recursion yes; }; ///////////////////////////////////////////////////// view "our_net" { match-clients { "our_net"; }; allow-recursion { our_net; }; allow-query { our_net; }; include "/etc/bind/common_zones"; recursion yes; }; /////////////////////////////////////////// view "all" { match-clients { any ; }; allow-query { none ; }; recursion no; allow-recursion { none; }; include "/etc/bind/common_zones"; }; В /etc/bind/local_zones лежат нормальные зоны для обычного днс: zone "." in { type hint; file "/etc/bind/db.root.orig"; }; // zone "localhost" { type master; file "/etc/bind/db.localhost" ; } ; zone "local" { type master; file "/etc/bind/db.local" ; } ; zone "127.in-addr.arpa" { type master; file "/etc/bind/db.127" ; } ; zone "0.in-addr.arpa" { type master; file "/etc/bind/db.0" ; } ; zone "255.in-addr.arpa" { type master; file "/etc/bind/db.255" ; } ; // zone "нашикорпоративныедомены.ru" { type forward; forward only; forwarders { Ип.Нашего.Авторитативного.ДНС-сервера, которому ник.ру делегировал наши зоны; }; }; zone "другиеклиентскиедомены.ru" { type forward; forward only; forwarders { Ип.Нашего.Авторитативного.ДНС-сервера, которому ник.ру делегировал наши зоны; }; }; // /etc/bind/db.root.orig - стандартная root-зона из поставки бинда В /etc/bind/common_zones - "ДНС-песочница для наших клиентов": zone "." in { type master; file "/etc/bind/db.fake"; }; zone "." in { type hint; file "/etc/bind/db.root"; }; // zone "localhost" { type master; file "/etc/bind/db.localhost" ; } ; zone "local" { type master; file "/etc/bind/db.local" ; } ; zone "127.in-addr.arpa" { type master; file "/etc/bind/db.127" ; } ; zone "0.in-addr.arpa" { type master; file "/etc/bind/db.0" ; } ; zone "255.in-addr.arpa" { type master; file "/etc/bind/db.255" ; } ; // zone "нашикорпоративныедомены.ru" { type forward; forward only; forwarders { Ип.Нашего.Авторитативного.ДНС-сервера, которому ник.ру делегировал наши зоны; }; }; zone "другиеклиентскиедомены.ru" { type forward; forward only; forwarders { Ип.Нашего.Авторитативного.ДНС-сервера, которому ник.ру делегировал наши зоны; }; }; // include "/etc/bind/my_zones"; /etc/bind/db.fake и /etc/bind/db.root - "сладкая парочка" особенных рутовых зон: cat db.root: . 3600 IN NS fakens. fakens. 3600 A 192.168.121.79 cat db.fake: $ORIGIN . $TTL 2 . IN SOA localhost. root.localhost. ( 2015082010 ; serial 3600 ; refresh 1 ; retry 604800 ; expire 86499 ; minimum ) NS fakens. fakens. IN A 192.168.121.79 mail.ru. IN NS fakens. yandex.ru. IN NS fakens. rkn.gov.ru. IN NS fakens. gov.ru. IN NS fakens. kremlin.ru. IN NS fakens. google.ru. IN NS fakens. rfc-revizor.ru. IN NS fakens. gosuslugi.ru. IN NS fakens. *.ru. IN A 192.168.121.79 *. IN A 192.168.121.79 Вот вообщем-то и всё... Следует отметить , что на 192.168.121.79 кроме фейкового корневого днс-а сидит еще и простой веб-сервер, выплёвывающий на любые обращения по порту tcp/80 статику в виде :"404-я ( на сайте ведутся регламентные профилактические работы, позвоните через 15 мин)" В результете всего этого действа пользователи спокойно бродят по белым доменам, ждут , когда на других сайтах закончятся регламентные работы, а мы пока яростно чиним нашу систему блокировки. P.S. Есть ещё один способ введения "карантинго" режима, более мягкий.. Он может пригодиться , если парсинг дампа реестра прошёл удачно, а вот система dpi сломалась. За основу его взят замечательный скрипт erdi-request.sh топик-стартера. В результате урезания и упрощения этого скрипта( вырезал в основном то - что не смог понять :) ) и добавления "индусского" кода - родилась версия erdi-lite. Исходный скрипт от alibek мне так полюбился, что я даже не стал менять имена основных переменных, в знак уважения и признательности к его труду. Запуск - через start.sh В результате работы этого скрипта мы имеем 2 списка : список доменов, упоминание которых встречается в реестре ( не важно где ) и список ип-ов , которые тока можно найти в реестре. Далее список ип-ов ужимается агрегированием одиночных ип-ов в близкие по диапазону подсети , дабы у ipset-a не "снесло крышу". Список доменов "скармливается" фейковому днс-у (сейчас таких зон на нём - 32507), а список ип-ов - ipset-у ( кол-во таких записей на сегодня - 24249 ). В итоге тотально блочим все урлы и домены по домену и все ип-ы по iptables/ipset erdi_lite.zip
  13. Простой конвертер реестра РКН в html: rkn_2html.sh.zip
  14. Новая версия dump_parser.sh (Добавлены подробные комменты)
  15. 1."category queries" у bind9 принципиально выставил в "none" (включу когда накопим денег на массив из SAS-винтов) 2.анализируется весь ДНС-трафик, а не только тот , который адресован конкрентному днс-серверу. ( у нас с помощью PBR весь клиентский ДНС-трафик отправляется в другой канал, где его либо встречают пачка наших рекурсивных резолверов, либо транзитом уходит в большой инет в зависимости от ситуации)