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

565 пользователей проголосовало

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



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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

 

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

Изменено пользователем ne-vlezay80

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

Изменено пользователем ne-vlezay80

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

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

 

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

Изменено пользователем arhead

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день!

Возник вопрос по 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 на обоих серверах показывает, что пакеты в одну сторону идут, а обратно ничего не возвращается. В чем может быть проблема, подскажите?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день!

Возник вопрос по 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Покажи таблицу маршрутизации 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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Покажи таблицу маршрутизации 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

 

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

 

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

 

Да

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день!

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день!

Возник вопрос по 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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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.

Изменено пользователем ne-vlezay80

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.