Ivan_83 Опубликовано 24 ноября, 2015 · Жалоба Действительно, блокировка не работает, если у клиента MTU начиная от 67 до 128. Так-же я не проверял, будет ли работать блокировка клиентов за маскарадингом. Скорее всего потому что блокиратор не собирает IP фрагменты, а HTTP запрос нарезается на 1-3 куска при мелком MTU Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ne-vlezay80 Опубликовано 24 ноября, 2015 (изменено) · Жалоба Действительно, блокировка не работает, если у клиента MTU начиная от 67 до 128. Так-же я не проверял, будет ли работать блокировка клиентов за маскарадингом. Скорее всего потому что блокиратор не собирает IP фрагменты, а HTTP запрос нарезается на 1-3 куска при мелком MTU Скорее всего. Надо добавить в nfq_filter поддержку фрагментированных пакетов. Кстати, зашёл на каспаров через браузер - показало заглушку при маленьком mtu. Через wget пускает свободно. А кстати, если клиент за NAT, бкдет ли nfq_filter работать? Изменено 24 ноября, 2015 пользователем ne-vlezay80 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ne-vlezay80 Опубликовано 24 ноября, 2015 · Жалоба Действительно, блокировка не работает, если у клиента MTU начиная от 67 до 128. Так-же я не проверял, будет ли работать блокировка клиентов за маскарадингом. Скорее всего потому что блокиратор не собирает IP фрагменты, а HTTP запрос нарезается на 1-3 куска при мелком MTU А как собрать эти куски Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 24 ноября, 2015 · Жалоба А как собрать эти куски Там нюансы есть. В коде ядра должна быть функция для сборки фрагментов, только она примерно в той части где трафик предназначенный хосту а не транзитный. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ne-vlezay80 Опубликовано 29 ноября, 2015 · Жалоба А как собрать эти куски Там нюансы есть. В коде ядра должна быть функция для сборки фрагментов, только она примерно в той части где трафик предназначенный хосту а не транзитный. а как быть тогда с транзитным трафиком. Видь suricata как то умеет анализировать както фрагментированные пакеты, но в вышестоящие приложение их не передаёт. Но, если в suricat'у запихнуть много правил, то скорость сети будет очень маленькой. Но как мне кажится, в suricat'е есть поддержка luajit. Можно написать lua-скрипт, который бы парсил url и матчил их по списку. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
zhenya` Опубликовано 29 ноября, 2015 · Жалоба https://github.com/max197616/zapret 404. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 29 ноября, 2015 · Жалоба а как быть тогда с транзитным трафиком. Видь suricata как то умеет анализировать както фрагментированные пакеты, но в вышестоящие приложение их не передаёт. Но, если в suricat'у запихнуть много правил, то скорость сети будет очень маленькой. Но как мне кажится, в suricat'е есть поддержка luajit. Можно написать lua-скрипт, который бы парсил url и матчил их по списку. Вероятно они взяли код который собирает пакеты из ядра и адаптировали для использования в своём приложении, либо сами написали. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ne-vlezay80 Опубликовано 30 ноября, 2015 · Жалоба Значит этот код надо будет дописать в nfq_filter. Хоть, на роутере можно просто немного видоизменяться ядро. Подскажите, примерно какой кусок кода в ядре отвечает за сборку tcp-пакетов Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
max1976 Опубликовано 30 ноября, 2015 · Жалоба https://github.com/max197616/zapret 404. Залил актуальную версию скрипта. Значит этот код надо будет дописать в nfq_filter. Хоть, на роутере можно просто немного видоизменяться ядро. Подскажите, примерно какой кусок кода в ядре отвечает за сборку tcp-пакетов nDPI сам умеет собирать пакеты, но в моей версии программы обрабатывается только исходящий трафик и nDPI не может правильно детектировать протоколы с тем уровнем, который необходим для полноценной работы фильтра. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ne-vlezay80 Опубликовано 30 ноября, 2015 · Жалоба max1976, на счёт проблем с блокировкой: nfq_filter не видеть фрагментированными пакеты. Хоть, фильтер нормально все видет на mtu от 164. Вряд-ли кто будет использовать меньше mtu. Хоть, сборку tcp-пакетов добавить в данную прогу было бы не лишним. Хотя, упадёт скорость фильтрации. max1976, nDPI можно не использовать а использовать например исходники из той же suricat'ы или ядра Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 30 ноября, 2015 · Жалоба Значит этот код надо будет дописать в nfq_filter. Хоть, на роутере можно просто немного видоизменяться ядро. Подскажите, примерно какой кусок кода в ядре отвечает за сборку tcp-пакетов Я не знаю линухи внутри, во фре оно называется ip_reassemble() или как то так. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
max1976 Опубликовано 2 декабря, 2015 · Жалоба Значит этот код надо будет дописать в nfq_filter. Хоть, на роутере можно просто немного видоизменяться ядро. Подскажите, примерно какой кусок кода в ядре отвечает за сборку tcp-пакетов Я не знаю линухи внутри, во фре оно называется ip_reassemble() или как то так. Это совсем не тот функционал. В дампе, который мне присал ne-vlezay80, нет фрагментации ip пакетов. Есть обычный TCP обмен между клиентом и сервером мелкими пакетами, где один запрос разбит на 3 пакета. Исходя из этого требуется анализировать весь tcp поток. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ne-vlezay80 Опубликовано 5 декабря, 2015 (изменено) · Жалоба Значит этот код надо будет дописать в nfq_filter. Хоть, на роутере можно просто немного видоизменяться ядро. Подскажите, примерно какой кусок кода в ядре отвечает за сборку tcp-пакетов Я не знаю линухи внутри, во фре оно называется ip_reassemble() или как то так. Это совсем не тот функционал. В дампе, который мне присал ne-vlezay80, нет фрагментации ip пакетов. Есть обычный TCP обмен между клиентом и сервером мелкими пакетами, где один запрос разбит на 3 пакета. Исходя из этого требуется анализировать весь tcp поток. Короче, я предлагаю реализовать анализ данных не по пакетам, а по tcp потоку Изменено 13 декабря, 2015 пользователем ne-vlezay80 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
BETEPAH Опубликовано 22 декабря, 2015 · Жалоба Кто-нибудь скажет про коробки раздаваемые нахаляву для проверки? Может её ресурсы можно направить в нужное русло, а не тупо следить? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ne-vlezay80 Опубликовано 22 декабря, 2015 · Жалоба Кто-нибудь скажет про коробки раздаваемые нахаляву для проверки? Может её ресурсы можно направить в нужное русло, а не тупо следить? Если на халяву - надо разрабатывать самому Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SyJet Опубликовано 22 декабря, 2015 · Жалоба Кто-нибудь скажет про коробки раздаваемые нахаляву для проверки? Может её ресурсы можно направить в нужное русло, а не тупо следить? Это вы про тп-линк от РКН? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
arhead Опубликовано 23 декабря, 2015 (изменено) · Жалоба Просмотр сообщенияBETEPAH (Вчера, 21:21) писал: Кто-нибудь скажет про коробки раздаваемые нахаляву для проверки? Может её ресурсы можно направить в нужное русло, а не тупо следить? Это вы про тп-линк от РКН? Тут я смотрю что то они мне напоминают. А что там можно направить? Самый простецкий роутер. Который скорее будет конектиться к серваку РКН и передвать инфу о блокировках. Изменено 23 декабря, 2015 пользователем arhead Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
evgen.v Опубликовано 24 декабря, 2015 · Жалоба Добрый день! Возник вопрос по nfqfilter от max197616. Программа предназначена для установки непосредственно на сервер доступа или можно установить ее на отдельный сервер? На диаграмме во вложении я набросал структуру, которая сейчас используется для блокировки. На сервере 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 на обоих серверах показывает, что пакеты в одну сторону идут, а обратно ничего не возвращается. В чем может быть проблема, подскажите? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ne-vlezay80 Опубликовано 24 декабря, 2015 · Жалоба Добрый день! Возник вопрос по nfqfilter от max197616. Программа предназначена для установки непосредственно на сервер доступа или можно установить ее на отдельный сервер? На диаграмме во вложении я набросал структуру, которая сейчас используется для блокировки. На сервере 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 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
evgen.v Опубликовано 24 декабря, 2015 · Жалоба Покажи таблицу маршрутизации 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 Делай зеркалку То есть надо зеркалить трафик на коммутаторе? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ne-vlezay80 Опубликовано 24 декабря, 2015 · Жалоба Покажи таблицу маршрутизации 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 Делай зеркалку То есть надо зеркалить трафик на коммутаторе? Да Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
max1976 Опубликовано 24 декабря, 2015 · Жалоба Добрый день! Возник вопрос по nfqfilter от max197616. Программа предназначена для установки непосредственно на сервер доступа или можно установить ее на отдельный сервер? На диаграмме во вложении я набросал структуру, которая сейчас используется для блокировки. Приветствую. У меня программа стоит на виртуалке и анонсит нужные маршруты на бордер. Включите debug в nfqfilter и посмотрите, поступают ли в программу данные(включите в nfqfilter.ini в секции [logging] loggers.root.level = debug) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
max1976 Опубликовано 24 декабря, 2015 · Жалоба То есть надо зеркалить трафик на коммутаторе? Если трафик небольшой, то можно и зеркалом. Nfqueue достаточно медлителен, чтобы работать на больших объемах трафика. При описанной мною схеме (анонсы на бордер) на виртуалке с nfqfilter процессор грузится не более чем на 20% при проходящем исходящем трафике на бордере ~7 гигабит/c. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
evgen.v Опубликовано 24 декабря, 2015 · Жалоба Добрый день! Возник вопрос по 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 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ne-vlezay80 Опубликовано 24 декабря, 2015 (изменено) · Жалоба 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. Изменено 24 декабря, 2015 пользователем ne-vlezay80 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...