Ivan_83 Posted February 12, 2016 · Report post Вот и хорошо. Share this post Link to post Share on other sites
max1976 Posted February 12, 2016 · Report post В программе добавлена возможность подстановки своего http кода и варианта доп. параметра при редиректе (см. комментарии в .ini файле). Share this post Link to post Share on other sites
ne-vlezay80 Posted February 12, 2016 · Report post Вот и хорошо. я бы сказал - не совсем хорошо Кстати, как парсер работает в коммерчиских системах Share this post Link to post Share on other sites
ne-vlezay80 Posted February 12, 2016 · Report post Кстати, max1976. Какие переменные отвечают за движение трафика в nfq_filter. overty, покажи свои правила и настройки Share this post Link to post Share on other sites
overty Posted February 13, 2016 (edited) · Report post Кстати, max1976. Какие переменные отвечают за движение трафика в nfq_filter. overty, покажи свои правила и настройки ne-vlezay80 Вы совершенно правы, в браузерах у меня не ловит с MTU меньше URL или/и значение заголовка host: Так же проверил это на операторе МТС - все открывается если http запрос происходит в несколько IP пакетов. Попросил коллегу проверить на своей сети, где работает Карбон, и на мое удивление тоже пролетело. Хотя блокировка по доменам работает за счет DNS спуфинга. Всех больше удивил ЭР-Телеком, там такая штука не сработала, но возможно PBR у них по IP из реестра на прокси или офисный роутер проксирует в той конторе, в которой проверял. По доменам так же получаю поддельный IP даже с собственных DNS серверов. DNS спуфят тоже. Настройки у меня стандартные, nfqfilter запущен 8 экземпляров. Трафик поступает с SPAN порта коммутатора. -A ZAPRET -p tcp -m physdev --physdev-in enp4s0f0 -m tcp --dport 80 -j NFQUEUE --queue-balance 0:7 --queue-bypass -A ZAPRET -p tcp -m physdev --physdev-in enp4s0f0 -m tcp --dport 443 -j NFQUEUE --queue-balance 0:7 --queue-bypass -A ZAPRET -p tcp -m physdev --physdev-in enp4s0f0 -m set --match-set PROTOS dst -j NFQUEUE --queue-balance 0:7 --queue-bypass -A ZAPRET -p tcp -m physdev --physdev-in enp4s0f0 -m set --match-set HOSTS dst,dst -j NFQUEUE --queue-balance 0:7 --queue-bypass -A ZAPRET -p tcp -m physdev --physdev-in enp4s0f0 -m set --match-set ALLIP dst -j NFQUEUE --queue-balance 0:7 --queue-bypass ipset-ы PROTOS - порты из файла protos HOSTS - IP и порты из файла hosts ALLIP - Все IP из конфига кваги. Проблему просмотра нескольких пакетов непросто решить их нужно гже-то буферизовать и потом пачкой просматривать. iptables сливает их в nfqueue по одному и ждет вердикта по ним. DNS спуфинг, как дополнителная защита нужна бы. Дело в том что RKN могут в реестр добавить только запись о блокировании домена. И неизвестно на каком порту и какой сервис должен быть заблокирован. Edited February 13, 2016 by overty Share this post Link to post Share on other sites
ne-vlezay80 Posted February 14, 2016 · Report post Кстати, max1976. Какие переменные отвечают за движение трафика в nfq_filter. overty, покажи свои правила и настройки ne-vlezay80 Вы совершенно правы, в браузерах у меня не ловит с MTU меньше URL или/и значение заголовка host: Так же проверил это на операторе МТС - все открывается если http запрос происходит в несколько IP пакетов. Попросил коллегу проверить на своей сети, где работает Карбон, и на мое удивление тоже пролетело. Хотя блокировка по доменам работает за счет DNS спуфинга. Всех больше удивил ЭР-Телеком, там такая штука не сработала, но возможно PBR у них по IP из реестра на прокси или офисный роутер проксирует в той конторе, в которой проверял. По доменам так же получаю поддельный IP даже с собственных DNS серверов. DNS спуфят тоже. Настройки у меня стандартные, nfqfilter запущен 8 экземпляров. Трафик поступает с SPAN порта коммутатора. -A ZAPRET -p tcp -m physdev --physdev-in enp4s0f0 -m tcp --dport 80 -j NFQUEUE --queue-balance 0:7 --queue-bypass -A ZAPRET -p tcp -m physdev --physdev-in enp4s0f0 -m tcp --dport 443 -j NFQUEUE --queue-balance 0:7 --queue-bypass -A ZAPRET -p tcp -m physdev --physdev-in enp4s0f0 -m set --match-set PROTOS dst -j NFQUEUE --queue-balance 0:7 --queue-bypass -A ZAPRET -p tcp -m physdev --physdev-in enp4s0f0 -m set --match-set HOSTS dst,dst -j NFQUEUE --queue-balance 0:7 --queue-bypass -A ZAPRET -p tcp -m physdev --physdev-in enp4s0f0 -m set --match-set ALLIP dst -j NFQUEUE --queue-balance 0:7 --queue-bypass ipset-ы PROTOS - порты из файла protos HOSTS - IP и порты из файла hosts ALLIP - Все IP из конфига кваги. Проблему просмотра нескольких пакетов непросто решить их нужно гже-то буферизовать и потом пачкой просматривать. iptables сливает их в nfqueue по одному и ждет вердикта по ним. DNS спуфинг, как дополнителная защита нужна бы. Дело в том что RKN могут в реестр добавить только запись о блокировании домена. И неизвестно на каком порту и какой сервис должен быть заблокирован. Сейчас проверю на своей симке Share this post Link to post Share on other sites
ne-vlezay80 Posted February 14, 2016 · Report post Кстати, max1976. Какие переменные отвечают за движение трафика в nfq_filter. overty, покажи свои правила и настройки ne-vlezay80 Вы совершенно правы, в браузерах у меня не ловит с MTU меньше URL или/и значение заголовка host: Так же проверил это на операторе МТС - все открывается если http запрос происходит в несколько IP пакетов. Попросил коллегу проверить на своей сети, где работает Карбон, и на мое удивление тоже пролетело. Хотя блокировка по доменам работает за счет DNS спуфинга. Всех больше удивил ЭР-Телеком, там такая штука не сработала, но возможно PBR у них по IP из реестра на прокси или офисный роутер проксирует в той конторе, в которой проверял. По доменам так же получаю поддельный IP даже с собственных DNS серверов. DNS спуфят тоже. Настройки у меня стандартные, nfqfilter запущен 8 экземпляров. Трафик поступает с SPAN порта коммутатора. -A ZAPRET -p tcp -m physdev --physdev-in enp4s0f0 -m tcp --dport 80 -j NFQUEUE --queue-balance 0:7 --queue-bypass -A ZAPRET -p tcp -m physdev --physdev-in enp4s0f0 -m tcp --dport 443 -j NFQUEUE --queue-balance 0:7 --queue-bypass -A ZAPRET -p tcp -m physdev --physdev-in enp4s0f0 -m set --match-set PROTOS dst -j NFQUEUE --queue-balance 0:7 --queue-bypass -A ZAPRET -p tcp -m physdev --physdev-in enp4s0f0 -m set --match-set HOSTS dst,dst -j NFQUEUE --queue-balance 0:7 --queue-bypass -A ZAPRET -p tcp -m physdev --physdev-in enp4s0f0 -m set --match-set ALLIP dst -j NFQUEUE --queue-balance 0:7 --queue-bypass ipset-ы PROTOS - порты из файла protos HOSTS - IP и порты из файла hosts ALLIP - Все IP из конфига кваги. Проблему просмотра нескольких пакетов непросто решить их нужно гже-то буферизовать и потом пачкой просматривать. iptables сливает их в nfqueue по одному и ждет вердикта по ним. DNS спуфинг, как дополнителная защита нужна бы. Дело в том что RKN могут в реестр добавить только запись о блокировании домена. И неизвестно на каком порту и какой сервис должен быть заблокирован. Сейчас проверю на своей симке Кстати, вот тест моего провайдера: root@servl:~# nc kasparov.ru 80 GET / HTTP/1.1 Host: www.kasparov.ru HTTP/1.1 404 Not Found Content-Type: text/html; charset=utf-8 Content-Length: 130 Connection: close <html><head><title>404 Not Found</title></head><body> <h1>Not Found</h1> <p>The requested URL was not found.</p></body></html> root@servl:~# nc ya.ru 80 GET / HTTP/1.1 Host: www.kasparov.ru HTTP/1.1 404 Not Found Content-Type: text/html; charset=utf-8 Content-Length: 130 Connection: close <html><head><title>404 Not Found</title></head><body> <h1>Not Found</h1> <p>The requested URL was not found.</p></body></html> ^C Провайдер каким-то образом определяет трафик в разных пакетах. Скорее всего они как-то его кещируют, или записывают в переменную. А потом анализируют. Реально ли такое сделать на perl? Кстати, есть очень интересный perl скрипт: #!/usr/bin/perl use strict; use Net::Pcap; use NetPacket::Ethernet qw(:strip); use NetPacket::IP qw(:strip); use NetPacket::TCP; use Net::RawIP; $|=1; my $dev='eth1'; my $filter_str='dst port 80'; my @URL = ("hospital-vrn.ru",); my %URL_ARR = (); foreach (@URL) { $URL_ARR{$_} = 1; } print "Filter: $filter_str\n"; my $pcap_t = Net::RawIP->pcapinit($dev, $filter_str, 1500, 250); loop($pcap_t, -1, \&process_pkt,"0"); sub process_pkt { my($pktuser, $hdr, $pkt) = @_; my $ip_obj=NetPacket::IP->decode(eth_strip($pkt)); my $srcip=$ip_obj->{src_ip}; my $dstip=$ip_obj->{dest_ip}; my $proto=$ip_obj->{proto}; my ($tcp_obj, $srcport, $dstport, $dataset, $seqnum, $acknum); if($proto==6){ $tcp_obj=NetPacket::TCP->decode(ip_strip(eth_strip($pkt))); $srcport=$tcp_obj->{src_port}; $dstport=$tcp_obj->{dest_port}; $dataset=$tcp_obj->{data}; $seqnum=$tcp_obj->{seqnum}; $acknum=$tcp_obj->{acknum}; http_handler($dataset, $srcip, $dstip, $srcport, $dstport, $seqnum, $acknum); } } sub http_handler { my ($dataset, $srcip, $dstip, $srcport, $dstport, $seqnum, $acknum) = @_; my ($dataportion, $query, $host); $dataportion = unpack("A*", $dataset); # print "\nDEBUG\n" . unpack("A*",$dataset); if ($dataportion =~ s/^GET\s(.+)\sHTTP\/1\.\d\r\n//) { $query = unpack("A*",$1); $query =~ s/^\/$//; if ($dataportion =~ s/Host:\s(.+)\r\n//) { $host = unpack("A*",$1); if ($URL_ARR{$host . $query}) { print "Matched: $host$query ($srcip)\n"; send_answer($srcip, $dstip, $srcport, $dstport, $seqnum, $acknum); } } } } sub send_answer { my ($srcip, $dstip, $srcport, $dstport, $seqnum, $acknum) = @_; my $header = "HTTP/1.1 301 Moved Permanently Location: http://google.com Connection: close "; my $packet = new Net::RawIP({ip => { saddr => $dstip, daddr => $srcip }, tcp => { source => $dstport, dest => $srcport, seq => $acknum, ack_seq => $seqnum+1, ack => 1, data => $header } }); $packet->send(0,1); exit 0; } Но внём есть косяки: 1. Блокируется только первый url, а остальные потом не блокируются, если не перезапустить скрипт 2. Как же сделать так, чтобы этот скрипт кешировал http пакеты, а потом анализировал их Share this post Link to post Share on other sites
max1976 Posted February 14, 2016 · Report post Провайдер каким-то образом определяет трафик в разных пакетах. А что говорит host kasparov.ru Share this post Link to post Share on other sites
ne-vlezay80 Posted February 14, 2016 (edited) · Report post Провайдер каким-то образом определяет трафик в разных пакетах. А что говорит host kasparov.ru Вот: system@ne-vlezay80:~$ host kasparov.ru kasparov.ru has address 216.92.111.41 kasparov.ru mail is handled by 50 mail1.g1.pair.com. как он это делает? странно Хотя, если блокировщик на perl: можно сваливать весь трафик через libpcap в файл, там его склеивать и анализировать. А потом отправлять RST. Единственный минус: может навернуться жёсткий диск или SSD. Кстати, так может COPM получиться Edited February 14, 2016 by ne-vlezay80 Share this post Link to post Share on other sites
overty Posted February 14, 2016 · Report post max1976 C SSL проблема обнаружилась. curl -v https://www.noxwin.com не сбрасывает подключение, хотя curl -v https://kinokubik.com сбрасывает без проблем. Share this post Link to post Share on other sites
overty Posted February 14, 2016 (edited) · Report post Провайдер каким-то образом определяет трафик в разных пакетах. А что говорит host kasparov.ru Вот: system@ne-vlezay80:~$ host kasparov.ru kasparov.ru has address 216.92.111.41 kasparov.ru mail is handled by 50 mail1.g1.pair.com. как он это делает? странно Хотя, если блокировщик на perl: можно сваливать весь трафик через libpcap в файл, там его склеивать и анализировать. А потом отправлять RST. Единственный минус: может навернуться жёсткий диск или SSD. Кстати, так может COPM получиться Не вариант, быстрее ответ от веб сервера придет с такой логикой чем RSP пакет. И libpcap теряет пакеты, perl возможно ляжет, это все таки не C++. nfqfilter только дорабатывать, если получиться сложить payload нескольких пакетов и далее обработать, но тут слово за max1976. Судя по коду это еще должен и ndpi поддерживать. И очень хотелось бы видеть поддержку DNS спуфинга тоже. Edited February 14, 2016 by overty Share this post Link to post Share on other sites
ne-vlezay80 Posted February 14, 2016 (edited) · Report post Провайдер каким-то образом определяет трафик в разных пакетах. А что говорит host kasparov.ru Вот: system@ne-vlezay80:~$ host kasparov.ru kasparov.ru has address 216.92.111.41 kasparov.ru mail is handled by 50 mail1.g1.pair.com. как он это делает? странно Хотя, если блокировщик на perl: можно сваливать весь трафик через libpcap в файл, там его склеивать и анализировать. А потом отправлять RST. Единственный минус: может навернуться жёсткий диск или SSD. Кстати, так может COPM получиться Не вариант, быстрее ответ от веб сервера придет с такой логикой чем RSP пакет. И libpcap теряет пакеты, perl возможно ляжет, это все таки не C++. nfqfilter только дорабатывать, если получиться сложить payload нескольких пакетов и далее обработать, но тут слово за max1976. Судя по коду это еще должен и ndpi поддерживать. И очень хотелось бы видеть поддержку DNS спуфинга тоже. На счёт сложения payload: тут по любому придётся в файл писать, а потом уже этот файл анализировать. На счёт ответа от сервера: в nfqueue пожно "придержать" пакет пока он небудет проинспектирован. Размещять этот файл лучше в /dev/ram0 Я max1976 спрашивал. Вот что он мне в ЛС прислал: Пока нет свободного времени на решение сложной задачи. Небольшие наработки уже есть' date=' но нужно время. [/quote'] Edited February 14, 2016 by ne-vlezay80 Share this post Link to post Share on other sites
Ivan_83 Posted February 14, 2016 · Report post я бы сказал - не совсем хорошо Не хорошо с таким рвением выполнять антиконституционные законы, которые потом самому же по башке и ударят, когда вдруг заблочат какой то нужный ресурс, например этот. Сделайте чтобы проверки проходило - наотьебись по русски говоря. Если поищите по форуму все эти грабли в построении DPI/фильтрации я описывал ещё пару лет назад, как и много другое, но отпиливать самому себе интернет просто тупо, даже за деньги на работе, а отпиливать чтобы совсем не работало верх критинизма. Share this post Link to post Share on other sites
max1976 Posted February 14, 2016 · Report post max1976 C SSL проблема обнаружилась. curl -v https://www.noxwin.com не сбрасывает подключение, хотя curl -v https://kinokubik.com сбрасывает без проблем. Почему же проблема? В реестре указано http://www.noxwin.com, про https://www.noxwin.com ничего нет. я бы сказал - не совсем хорошо Не хорошо с таким рвением выполнять антиконституционные законы, которые потом самому же по башке и ударят, когда вдруг заблочат какой то нужный ресурс, например этот. Сделайте чтобы проверки проходило - наотьебись по русски говоря. Если поищите по форуму все эти грабли в построении DPI/фильтрации я описывал ещё пару лет назад, как и много другое, но отпиливать самому себе интернет просто тупо, даже за деньги на работе, а отпиливать чтобы совсем не работало верх критинизма. Тест РКН пройден - все хорошо. В любом случае, даже решив проблему с MTU, есть масса других способов, которыми абонент может обойти любой фильтр. Share this post Link to post Share on other sites
ne-vlezay80 Posted February 14, 2016 · Report post max1976 C SSL проблема обнаружилась. curl -v https://www.noxwin.com не сбрасывает подключение, хотя curl -v https://kinokubik.com сбрасывает без проблем. Почему же проблема? В реестре указано http://www.noxwin.com, про https://www.noxwin.com ничего нет. я бы сказал - не совсем хорошо Не хорошо с таким рвением выполнять антиконституционные законы, которые потом самому же по башке и ударят, когда вдруг заблочат какой то нужный ресурс, например этот. Сделайте чтобы проверки проходило - наотьебись по русски говоря. Если поищите по форуму все эти грабли в построении DPI/фильтрации я описывал ещё пару лет назад, как и много другое, но отпиливать самому себе интернет просто тупо, даже за деньги на работе, а отпиливать чтобы совсем не работало верх критинизма. Тест РКН пройден - все хорошо. В любом случае, даже решив проблему с MTU, есть масса других способов, которыми абонент может обойти любой фильтр. Например, повздорил главврач с жиной главы РКН, и врезультате пришла проверка и оштрафовала учереждение. Несмотря на то, что в учереждении стоял очень мощный DPI, который видел пакеты даже в PPTP. Но проверяющие проверяли иерез tor+vpn+proxy+i2p+vpn+tor+i2p+tor+vpn+ssh на vps+vpn+tor obfsproxy+tor. Шутка. Share this post Link to post Share on other sites
zhenya` Posted February 15, 2016 · Report post В ndpi есть структуры для flow... В ntopng можно подсмотреть код для тех кому интересно... Не надо писать в файл, это жуть. Share this post Link to post Share on other sites
ne-vlezay80 Posted February 15, 2016 (edited) · Report post В ndpi есть структуры для flow... В ntopng можно подсмотреть код для тех кому интересно... Не надо писать в файл, это жуть. ndpi не видит трафик от старых ОС. А почему нельзя через файл. Мне кажится, через файл - самое надёжное. По крайней мере, скинуть трафик в файл даде просще, чем реализовывать flow Edited February 15, 2016 by ne-vlezay80 Share this post Link to post Share on other sites
overty Posted February 15, 2016 · Report post max1976 C SSL проблема обнаружилась. curl -v https://www.noxwin.com не сбрасывает подключение, хотя curl -v https://kinokubik.com сбрасывает без проблем. Почему же проблема? В реестре указано http://www.noxwin.com, про https://www.noxwin.com ничего нет. Вот в реестре запись - <content id="268018" includeTime="2016-02-14T19:38:13" entryType="1" hash="F9613459948CEE6229AA35B5FAC8336C"><decision date="2016-02-05" number="2-6-27/2016-01-19-31-ÀÈ" org="ÔÍÑ"/><url><![CDATA[https://www.noxwin.com/]]></url><domain ><![CDATA[www.noxwin.com]]></domain><ip>109.205.94.28</ip></content> В файле ssl_host запись так же есть, но почемуто не сбрасывает по Hello пакету SSL подключение. Share this post Link to post Share on other sites
overty Posted February 15, 2016 · Report post Провайдер каким-то образом определяет трафик в разных пакетах. А что говорит host kasparov.ru Вот: system@ne-vlezay80:~$ host kasparov.ru kasparov.ru has address 216.92.111.41 kasparov.ru mail is handled by 50 mail1.g1.pair.com. как он это делает? странно Хотя, если блокировщик на perl: можно сваливать весь трафик через libpcap в файл, там его склеивать и анализировать. А потом отправлять RST. Единственный минус: может навернуться жёсткий диск или SSD. Кстати, так может COPM получиться Не вариант, быстрее ответ от веб сервера придет с такой логикой чем RSP пакет. И libpcap теряет пакеты, perl возможно ляжет, это все таки не C++. nfqfilter только дорабатывать, если получиться сложить payload нескольких пакетов и далее обработать, но тут слово за max1976. Судя по коду это еще должен и ndpi поддерживать. И очень хотелось бы видеть поддержку DNS спуфинга тоже. На счёт сложения payload: тут по любому придётся в файл писать, а потом уже этот файл анализировать. На счёт ответа от сервера: в nfqueue пожно "придержать" пакет пока он небудет проинспектирован. Размещять этот файл лучше в /dev/ram0 Я max1976 спрашивал. Вот что он мне в ЛС прислал: Пока нет свободного времени на решение сложной задачи. Небольшие наработки уже есть' date=' но нужно время. [/quote'] Интересно, какая будет производительность вашей сети, если пакеты будут придерживать. К вашем сведению nfqueue работает per-flow, а не per-packet. Даже при queue-balance одно подключение попадает в одну и туже очередь. Задержали вы первый пакет, как второй смотреть будете, без вердикта первого? Запись в файл с использованием pcap для меня вообще не вариант. Share this post Link to post Share on other sites
max1976 Posted February 15, 2016 · Report post В файле ssl_host запись так же есть, но почемуто не сбрасывает по Hello пакету SSL подключение. nDPI детектит пакеты к данному хосту как Tor. Share this post Link to post Share on other sites
overty Posted February 15, 2016 · Report post В файле ssl_host запись так же есть, но почемуто не сбрасывает по Hello пакету SSL подключение. nDPI детектит пакеты к данному хосту как Tor. т.е. не исправить? Share this post Link to post Share on other sites
max1976 Posted February 15, 2016 · Report post В файле ssl_host запись так же есть, но почемуто не сбрасывает по Hello пакету SSL подключение. nDPI детектит пакеты к данному хосту как Tor. т.е. не исправить? Исправить можно, если добавить в условие проверки SSL TOR. Share this post Link to post Share on other sites
yKpon Posted February 15, 2016 (edited) · Report post у меня у одного так скрипт выгрузки работает? root@skyprox-main:/home/rkn/zapret# ./zapret.pl binmode() on closed filehandle F at ./zapret.pl line 373. read() on closed filehandle F at ./zapret.pl line 374. Use of uninitialized value in numeric ne (!=) at ./zapret.pl line 374. binmode() on closed filehandle F at ./zapret.pl line 381. read() on closed filehandle F at ./zapret.pl line 382. Use of uninitialized value in numeric ne (!=) at ./zapret.pl line 382. Subroutine _call redefined at (eval 147) line 50. Subroutine OperatorRequestService::want_som redefined at (eval 147) line 92. Subroutine AUTOLOAD redefined at (eval 147) line 109. Subroutine OperatorRequestService::getLastDumpDate redefined at (eval 147) line 107. Subroutine OperatorRequestService::sendRequest redefined at (eval 147) line 107. Subroutine OperatorRequestService::getResult redefined at (eval 147) line 107. Subroutine OperatorRequestService::getLastDumpDateEx redefined at (eval 147) line 107. Use of uninitialized value in subroutine entry at /usr/local/share/perl/5.20.2/SOAP/Lite.pm line 289. Use of uninitialized value in subroutine entry at /usr/local/share/perl/5.20.2/SOAP/Lite.pm line 289. Use of uninitialized value $res in string eq at ./zapret.pl line 395. Use of uninitialized value $code in concatenation (.) or string at ./zapret.pl line 407. Died at ./zapret.pl line 409. Debian 8.3.0 скрипт из git-а на данный момент Edited February 15, 2016 by yKpon Share this post Link to post Share on other sites
max1976 Posted February 15, 2016 · Report post В файле ssl_host запись так же есть, но почемуто не сбрасывает по Hello пакету SSL подключение. nDPI детектит пакеты к данному хосту как Tor. т.е. не исправить? Исправить можно, если добавить в условие проверки SSL TOR. Похоже что в nDPI есть баг, напишу разработчикам. Share this post Link to post Share on other sites
max1976 Posted February 15, 2016 · Report post binmode() on closed filehandle F at ./zapret.pl line 373. Ошибки при работе с файлами запроса и подписью. Share this post Link to post Share on other sites