Jump to content
Калькуляторы
Блокировка веб ресурса  

541 members have voted

  1. 1. Для блокировка используем



Блокировка сайтов провайдерами маневры с DNS

Действительно, блокировка не работает, если у клиента MTU начиная от 67 до 128. Так-же я не проверял, будет ли работать блокировка клиентов за маскарадингом.

Скорее всего потому что блокиратор не собирает IP фрагменты, а HTTP запрос нарезается на 1-3 куска при мелком MTU

Share this post


Link to post
Share on other sites
Действительно, блокировка не работает, если у клиента MTU начиная от 67 до 128. Так-же я не проверял, будет ли работать блокировка клиентов за маскарадингом.

Скорее всего потому что блокиратор не собирает IP фрагменты, а HTTP запрос нарезается на 1-3 куска при мелком MTU

Скорее всего. Надо добавить в nfq_filter поддержку фрагментированных пакетов.

Кстати, зашёл на каспаров через браузер - показало заглушку при маленьком mtu. Через wget пускает свободно.

 

А кстати, если клиент за NAT, бкдет ли nfq_filter работать?

Edited by ne-vlezay80

Share this post


Link to post
Share on other sites
Действительно, блокировка не работает, если у клиента MTU начиная от 67 до 128. Так-же я не проверял, будет ли работать блокировка клиентов за маскарадингом.

Скорее всего потому что блокиратор не собирает IP фрагменты, а HTTP запрос нарезается на 1-3 куска при мелком MTU

А как собрать эти куски

Share this post


Link to post
Share on other sites
А как собрать эти куски

Там нюансы есть.

В коде ядра должна быть функция для сборки фрагментов, только она примерно в той части где трафик предназначенный хосту а не транзитный.

Share this post


Link to post
Share on other sites
А как собрать эти куски

Там нюансы есть.

В коде ядра должна быть функция для сборки фрагментов, только она примерно в той части где трафик предназначенный хосту а не транзитный.

а как быть тогда с транзитным трафиком. Видь suricata как то умеет анализировать както фрагментированные пакеты, но в вышестоящие приложение их не передаёт. Но, если в suricat'у запихнуть много правил, то скорость сети будет очень маленькой. Но как мне кажится, в suricat'е есть поддержка luajit. Можно написать lua-скрипт, который бы парсил url и матчил их по списку.

Share this post


Link to post
Share on other sites
а как быть тогда с транзитным трафиком. Видь suricata как то умеет анализировать както фрагментированные пакеты, но в вышестоящие приложение их не передаёт. Но, если в suricat'у запихнуть много правил, то скорость сети будет очень маленькой. Но как мне кажится, в suricat'е есть поддержка luajit. Можно написать lua-скрипт, который бы парсил url и матчил их по списку.

Вероятно они взяли код который собирает пакеты из ядра и адаптировали для использования в своём приложении, либо сами написали.

Share this post


Link to post
Share on other sites

Значит этот код надо будет дописать в nfq_filter. Хоть, на роутере можно просто немного видоизменяться ядро. Подскажите, примерно какой кусок кода в ядре отвечает за сборку tcp-пакетов

Share this post


Link to post
Share on other sites

Залил актуальную версию скрипта.

 

Значит этот код надо будет дописать в nfq_filter. Хоть, на роутере можно просто немного видоизменяться ядро. Подскажите, примерно какой кусок кода в ядре отвечает за сборку tcp-пакетов

nDPI сам умеет собирать пакеты, но в моей версии программы обрабатывается только исходящий трафик и nDPI не может правильно детектировать протоколы с тем уровнем, который необходим для полноценной работы фильтра.

Share this post


Link to post
Share on other sites

max1976, на счёт проблем с блокировкой: nfq_filter не видеть фрагментированными пакеты. Хоть, фильтер нормально все видет на mtu от 164. Вряд-ли кто будет использовать меньше mtu. Хоть, сборку tcp-пакетов добавить в данную прогу было бы не лишним. Хотя, упадёт скорость фильтрации.

 

max1976, nDPI можно не использовать а использовать например исходники из той же suricat'ы или ядра

Share this post


Link to post
Share on other sites
Значит этот код надо будет дописать в nfq_filter. Хоть, на роутере можно просто немного видоизменяться ядро. Подскажите, примерно какой кусок кода в ядре отвечает за сборку tcp-пакетов

Я не знаю линухи внутри, во фре оно называется ip_reassemble() или как то так.

Share this post


Link to post
Share on other sites
Значит этот код надо будет дописать в nfq_filter. Хоть, на роутере можно просто немного видоизменяться ядро. Подскажите, примерно какой кусок кода в ядре отвечает за сборку tcp-пакетов

Я не знаю линухи внутри, во фре оно называется ip_reassemble() или как то так.

Это совсем не тот функционал. В дампе, который мне присал ne-vlezay80, нет фрагментации ip пакетов. Есть обычный TCP обмен между клиентом и сервером мелкими пакетами, где один запрос разбит на 3 пакета. Исходя из этого требуется анализировать весь tcp поток.

Share this post


Link to post
Share on other sites
Значит этот код надо будет дописать в nfq_filter. Хоть, на роутере можно просто немного видоизменяться ядро. Подскажите, примерно какой кусок кода в ядре отвечает за сборку tcp-пакетов

Я не знаю линухи внутри, во фре оно называется ip_reassemble() или как то так.

Это совсем не тот функционал. В дампе, который мне присал ne-vlezay80, нет фрагментации ip пакетов. Есть обычный TCP обмен между клиентом и сервером мелкими пакетами, где один запрос разбит на 3 пакета. Исходя из этого требуется анализировать весь tcp поток.

Короче, я предлагаю реализовать анализ данных не по пакетам, а по tcp потоку

Edited by ne-vlezay80

Share this post


Link to post
Share on other sites

Кто-нибудь скажет про коробки раздаваемые нахаляву для проверки? Может её ресурсы можно направить в нужное русло, а не тупо следить?

Share this post


Link to post
Share on other sites

Кто-нибудь скажет про коробки раздаваемые нахаляву для проверки? Может её ресурсы можно направить в нужное русло, а не тупо следить?

Если на халяву - надо разрабатывать самому

Share this post


Link to post
Share on other sites

Кто-нибудь скажет про коробки раздаваемые нахаляву для проверки? Может её ресурсы можно направить в нужное русло, а не тупо следить?

Это вы про тп-линк от РКН?

Share this post


Link to post
Share on other sites

Просмотр сообщенияBETEPAH (Вчера, 21:21) писал:

Кто-нибудь скажет про коробки раздаваемые нахаляву для проверки? Может её ресурсы можно направить в нужное русло, а не тупо следить?

 

Это вы про тп-линк от РКН?

 

Тут я смотрю что то они мне напоминают. А что там можно направить? Самый простецкий роутер. Который скорее будет конектиться к серваку РКН и передвать инфу о блокировках.

Edited by arhead

Share this post


Link to post
Share on other sites

Добрый день!

Возник вопрос по nfqfilter от max197616. Программа предназначена для установки непосредственно на сервер доступа или можно установить ее на отдельный сервер? На диаграмме во вложении я набросал структуру, которая сейчас используется для блокировки. post-120591-085841900 1450955405_thumb.png На сервере ZAPRET собрал nfqfilter, составил список URL и доменов, запустил, ошибок не выдает, пакеты идут, но редирект не совершается.

 

Лог nfqfilter

 

2015-12-24 14:19:31.178 [41663] Information Application - Thread 'nfqThread': redirected domains 0, redirected urls: 0, marked ssl: 0, marked hosts: 0, rst send: 0
2015-12-24 14:19:31.178 [41663] Information Application - State of task nfqThread is 2
2015-12-24 14:19:31.178 [41663] Information Application - State of task SenderTask is 2
2015-12-24 14:19:41.178 [41663] Information Application - nDPI memory (once): 105.04 KB
2015-12-24 14:19:41.178 [41663] Information Application - nDPI memory per flow: 1.91 KB
2015-12-24 14:19:41.178 [41663] Information Application - nDPI current memory usage: 1.78 MB
2015-12-24 14:19:41.178 [41663] Information Application - nDPI maximum memory usage: 1.78 MB
2015-12-24 14:19:41.178 [41663] Information Application - State of task NFQStatisticTask is 2
2015-12-24 14:19:41.178 [41663] Information Application - Thread 'nfqThread': redirected domains 0, redirected urls: 0, marked ssl: 0, marked hosts: 0, rst send: 0
2015-12-24 14:19:41.178 [41663] Information Application - State of task nfqThread is 2
2015-12-24 14:19:41.178 [41663] Information Application - State of task SenderTask is 2
2015-12-24 14:19:51.179 [41663] Information Application - nDPI memory (once): 105.04 KB
2015-12-24 14:19:51.179 [41663] Information Application - nDPI memory per flow: 1.91 KB
2015-12-24 14:19:51.179 [41663] Information Application - nDPI current memory usage: 1.78 MB
2015-12-24 14:19:51.179 [41663] Information Application - nDPI maximum memory usage: 1.78 MB
2015-12-24 14:19:51.179 [41663] Information Application - State of task NFQStatisticTask is 2
2015-12-24 14:19:51.179 [41663] Information Application - Thread 'nfqThread': redirected domains 0, redirected urls: 0, marked ssl: 0, marked hosts: 0, rst send: 0
2015-12-24 14:19:51.179 [41663] Information Application - State of task nfqThread is 2
2015-12-24 14:19:51.179 [41663] Information Application - State of task SenderTask is 2

 

 

# cat /proc/net/netfilter/nfnetlink_queue

0 41663 0 2 65531 0 0 421 1

 

Перенаправление пакетов с бордера осуществляется путем указания маршрута до IP запрещенных ресурсов через сервер блокировки:

 

 

# iptables -t mangle -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A PREROUTING -s XXX.XXX.XXX.XXX/YY {абоненты} -p tcp -m set --match-set badip dst -m tcp --dport 80 -j MARK --set-xmark 0x2/0xffffffff

# ip rule
0:	from all lookup local 
32765:	from all fwmark 0x2/0x2 lookup 102

# ip route list table 102
default via ZZZ.ZZZ.ZZZ.ZZZ {IP сервера ZAPRET} dev eth1

 

 

tcpdump на обоих серверах показывает, что пакеты в одну сторону идут, а обратно ничего не возвращается. В чем может быть проблема, подскажите?

Share this post


Link to post
Share on other sites

Добрый день!

Возник вопрос по nfqfilter от max197616. Программа предназначена для установки непосредственно на сервер доступа или можно установить ее на отдельный сервер? На диаграмме во вложении я набросал структуру, которая сейчас используется для блокировки. post-120591-085841900 1450955405_thumb.png На сервере ZAPRET собрал nfqfilter, составил список URL и доменов, запустил, ошибок не выдает, пакеты идут, но редирект не совершается.

 

Лог nfqfilter

 

2015-12-24 14:19:31.178 [41663] Information Application - Thread 'nfqThread': redirected domains 0, redirected urls: 0, marked ssl: 0, marked hosts: 0, rst send: 0
2015-12-24 14:19:31.178 [41663] Information Application - State of task nfqThread is 2
2015-12-24 14:19:31.178 [41663] Information Application - State of task SenderTask is 2
2015-12-24 14:19:41.178 [41663] Information Application - nDPI memory (once): 105.04 KB
2015-12-24 14:19:41.178 [41663] Information Application - nDPI memory per flow: 1.91 KB
2015-12-24 14:19:41.178 [41663] Information Application - nDPI current memory usage: 1.78 MB
2015-12-24 14:19:41.178 [41663] Information Application - nDPI maximum memory usage: 1.78 MB
2015-12-24 14:19:41.178 [41663] Information Application - State of task NFQStatisticTask is 2
2015-12-24 14:19:41.178 [41663] Information Application - Thread 'nfqThread': redirected domains 0, redirected urls: 0, marked ssl: 0, marked hosts: 0, rst send: 0
2015-12-24 14:19:41.178 [41663] Information Application - State of task nfqThread is 2
2015-12-24 14:19:41.178 [41663] Information Application - State of task SenderTask is 2
2015-12-24 14:19:51.179 [41663] Information Application - nDPI memory (once): 105.04 KB
2015-12-24 14:19:51.179 [41663] Information Application - nDPI memory per flow: 1.91 KB
2015-12-24 14:19:51.179 [41663] Information Application - nDPI current memory usage: 1.78 MB
2015-12-24 14:19:51.179 [41663] Information Application - nDPI maximum memory usage: 1.78 MB
2015-12-24 14:19:51.179 [41663] Information Application - State of task NFQStatisticTask is 2
2015-12-24 14:19:51.179 [41663] Information Application - Thread 'nfqThread': redirected domains 0, redirected urls: 0, marked ssl: 0, marked hosts: 0, rst send: 0
2015-12-24 14:19:51.179 [41663] Information Application - State of task nfqThread is 2
2015-12-24 14:19:51.179 [41663] Information Application - State of task SenderTask is 2

 

 

# cat /proc/net/netfilter/nfnetlink_queue

0 41663 0 2 65531 0 0 421 1

 

Перенаправление пакетов с бордера осуществляется путем указания маршрута до IP запрещенных ресурсов через сервер блокировки:

 

 

# iptables -t mangle -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A PREROUTING -s XXX.XXX.XXX.XXX/YY {абоненты} -p tcp -m set --match-set badip dst -m tcp --dport 80 -j MARK --set-xmark 0x2/0xffffffff

# ip rule
0:	from all lookup local 
32765:	from all fwmark 0x2/0x2 lookup 102

# ip route list table 102
default via ZZZ.ZZZ.ZZZ.ZZZ {IP сервера ZAPRET} dev eth1

 

 

tcpdump на обоих серверах показывает, что пакеты в одну сторону идут, а обратно ничего не возвращается. В чем может быть проблема, подскажите?

 

Делай зеркалку

Покажи таблицу маршрутизации ZAPRET

Share this post


Link to post
Share on other sites

Покажи таблицу маршрутизации ZAPRET

 

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

 

# ip r
default via XXX.XXX.XXX.246 {IP бордера} dev vlan761  proto static  metric 400 
XXX.XXX.XXX.240/29 dev vlan761  proto kernel  scope link  src XXX.XXX.XXX.243  metric 400

 

Делай зеркалку

 

То есть надо зеркалить трафик на коммутаторе?

Share this post


Link to post
Share on other sites

Покажи таблицу маршрутизации ZAPRET

 

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

 

# ip r
default via XXX.XXX.XXX.246 {IP бордера} dev vlan761  proto static  metric 400 
XXX.XXX.XXX.240/29 dev vlan761  proto kernel  scope link  src XXX.XXX.XXX.243  metric 400

 

Делай зеркалку

 

То есть надо зеркалить трафик на коммутаторе?

 

Да

Share this post


Link to post
Share on other sites

Добрый день!

Возник вопрос по nfqfilter от max197616. Программа предназначена для установки непосредственно на сервер доступа или можно установить ее на отдельный сервер? На диаграмме во вложении я набросал структуру, которая сейчас используется для блокировки.

Приветствую.

У меня программа стоит на виртуалке и анонсит нужные маршруты на бордер.

Включите debug в nfqfilter и посмотрите, поступают ли в программу данные(включите в nfqfilter.ini в секции [logging] loggers.root.level = debug)

Share this post


Link to post
Share on other sites

То есть надо зеркалить трафик на коммутаторе?

Если трафик небольшой, то можно и зеркалом. Nfqueue достаточно медлителен, чтобы работать на больших объемах трафика.

При описанной мною схеме (анонсы на бордер) на виртуалке с nfqfilter процессор грузится не более чем на 20% при проходящем исходящем трафике на бордере ~7 гигабит/c.

Share this post


Link to post
Share on other sites

Добрый день!

Возник вопрос по nfqfilter от max197616. Программа предназначена для установки непосредственно на сервер доступа или можно установить ее на отдельный сервер? На диаграмме во вложении я набросал структуру, которая сейчас используется для блокировки.

Приветствую.

У меня программа стоит на виртуалке и анонсит нужные маршруты на бордер.

Включите debug в nfqfilter и посмотрите, поступают ли в программу данные(включите в nfqfilter.ini в секции [logging] loggers.root.level = debug)

 

Включил дебаг, данные приходят, как я понимаю, вот лог:

 

2015-12-24 16:33:22.493 [42933] Information Application - Starting up on queue: 0
2015-12-24 16:33:22.690 [42933] Debug Application - Starting statistic task...
2015-12-24 16:33:22.690 [42933] Debug nfqThread - Trying to open nfq library
2015-12-24 16:33:22.690 [42933] Information nfqThread - NFQ: Binding to queue 0
2015-12-24 16:33:22.690 [42933] Information nfqThread - Setting queue length to 4096
2015-12-24 16:33:22.690 [42933] Information nfqThread - Setting nfnl bufsize to 6144000
2015-12-24 16:33:22.690 [42933] Debug SenderTask - Starting SenderTask...
2015-12-24 16:33:31.311 [42933] Debug nfqThread - Got the packet from queue
2015-12-24 16:33:31.561 [42933] Debug nfqThread - Got the packet from queue
2015-12-24 16:33:31.616 [42933] Debug nfqThread - Got the packet from queue
2015-12-24 16:33:31.867 [42933] Debug nfqThread - Got the packet from queue
2015-12-24 16:33:32.318 [42933] Debug nfqThread - Got the packet from queue
2015-12-24 16:33:32.562 [42933] Debug nfqThread - Got the packet from queue
2015-12-24 16:33:32.618 [42933] Debug nfqThread - Got the packet from queue
2015-12-24 16:33:32.690 [42933] Information Application - nDPI memory (once): 105.04 KB
2015-12-24 16:33:32.690 [42933] Information Application - nDPI memory per flow: 1.91 KB
2015-12-24 16:33:32.690 [42933] Information Application - nDPI current memory usage: 1.78 MB
2015-12-24 16:33:32.690 [42933] Information Application - nDPI maximum memory usage: 1.78 MB
2015-12-24 16:33:32.690 [42933] Information Application - State of task NFQStatisticTask is 2
2015-12-24 16:33:32.690 [42933] Information Application - Thread 'nfqThread': redirected domains 0, redirected urls: 0, marked ssl: 0, marked hosts: 0, rst send: 0
2015-12-24 16:33:32.690 [42933] Information Application - State of task nfqThread is 2
2015-12-24 16:33:32.690 [42933] Information Application - State of task SenderTask is 2
2015-12-24 16:33:32.868 [42933] Debug nfqThread - Got the packet from queue
2015-12-24 16:33:34.318 [42933] Debug nfqThread - Got the packet from queue
2015-12-24 16:33:34.566 [42933] Debug nfqThread - Got the packet from queue
2015-12-24 16:33:34.622 [42933] Debug nfqThread - Got the packet from queue
2015-12-24 16:33:34.870 [42933] Debug nfqThread - Got the packet from queue
2015-12-24 16:33:38.325 [42933] Debug nfqThread - Got the packet from queue
2015-12-24 16:33:38.573 [42933] Debug nfqThread - Got the packet from queue
2015-12-24 16:33:38.629 [42933] Debug nfqThread - Got the packet from queue
2015-12-24 16:33:38.877 [42933] Debug nfqThread - Got the packet from queue

 

Share this post


Link to post
Share on other sites

max1976 , кстати, предлагаю реализовать в nfq_filter такую схему:

 

1. Если в запросе Host: есть например hospital-vrn.ru

a) Запрос разбит на hospit

al-vrn.ru

2. В первом пакете есть Host: hospit

 

Короче схема такая:

1. Если в фильтре в domains hospital-vrn.ru, в пакете Host: hospit, то пакет матчим

2. Если в фильтре в domains hospital-vrn.ru, в пакете Host: hospitдфтвюкг, то пакет не матчим

 

Кстати, в linux есть очень интересная игрушка conntrack. Я бы на вашем месте добалил бы парсинг всего трафика через неё, потому что через неё у меня работает блокировка даже при маленьком MTU.

Edited by ne-vlezay80

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now