The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Для FreeBSD подготовлен ng_grep, NetGraph-модуль для фильтрации контента

23.04.2014 11:06

Доступна тестовая версия NetGraph-модуля ng_grep, созданного для решения задачи анализа и фильтрации содержимого транзитных http-запросов при исполнении решений Роскомнадзора. Работа фильтра протестирована во FreeBSD 10.0. Полный список блокировки Роскомнадзора ng_grep обрабатывает без проблем, но нагрузочного тестирования еще не проводилось.

Пример условий, которые понимает и обрабатывает модуль:


   # ngctl msg grep: add {raw=\\"http://www.sample.ru/sample\\"}
   Rec'd response "add" (2) from "[3836]:":
   Args:   { i_c=1 raw="http://www.sample.ru/sample" }


  1. Главная ссылка к новости (http://nest.ahome.ru/ng_grep/i...)
  2. РосКомСвобода
Автор новости: andy_68
Тип: Программы
Короткая ссылка: https://opennet.ru/39626-freebsd
Ключевые слова: freebsd, netgraph
Поддержать дальнейшую публикацию новостей на OpenNET.


Обсуждение (59) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, danfe (ok), 11:20, 23/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +24 +/
    Нужен модуль для фильтрации интернета от Роскомнадзора.
     
     
  • 2.3, Пушистик (ok), 11:26, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • –5 +/
    В последнее время всё больше и больше стал замечать, что безобидные сайты блокируют ни за что. Причём не только на русском и англ языках.

    Ещё полно всяких неадекватов, которые специально ищут сайты, и пишут заяву на их закрытие. Потом, в своих блогах красуются, статейки с фотками об проделанной работе.
    Развлекаются так, короче.

     
     
  • 3.6, DeadLoco (ok), 11:38, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Потомственное стукачество + синдром вахтера дают ядреную смесь.
     
  • 3.87, Аноним (-), 00:59, 24/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > В последнее время всё больше и больше стал замечать, что безобидные сайты
    > блокируют ни за что. Причём не только на русском и англ языках.

    Спасибо, капитан. Эти (beep!) заблочили, например, сервера cloudflare. Гении! О том что это CDN и плашка будет вываливаться при посещении 100500 рандомных сайтов - эти с... в роскомпозоре, разумеется не в курсе. Офигительно.

     
     
  • 4.98, Аноним (-), 12:31, 24/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Знает и рекомендует не использовать CF.
     
  • 2.65, Xaionaro (ok), 18:43, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Нужен модуль для фильтрации интернета от Роскомнадзора.

    https://github.com/AntiZapret/antizapret

     
  • 2.84, StainlessRat (??), 22:01, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ipfw add deny from роспатрёпнадзор to any
    ipfw add deny from any to роспатрёпнадзор
     

  • 1.2, Аноним (-), 11:23, 23/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Нужен интернет без надзора
     
     
  • 2.20, Andrey Mitrofanov (?), 13:14, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Нужен интернет без надзора

    Начинай отделять коммуникации (на 5 с + -- "связи, информационных технологий и массовых коммуникаций") от интернета, потом переходи к отделению Роскомнадзора от.

     
  • 2.31, Аноним (-), 14:50, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    i2p тебе в руки.
     

  • 1.5, Revolution (?), 11:30, 23/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    ng_roskomnadzor
     
     
  • 2.55, andy_68 (ok), 17:08, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > ng_roskomnadzor

    ng_1984 ;-) Была такая мысль... Один коллега предложил ng_f451, но тут я был не согласен в принципе.

     
     
  • 3.79, anonymous (??), 21:24, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ng_f451 это пять
     

  • 1.8, Dmitry (??), 11:40, 23/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    --- ng_grep.c.orig 2014-04-17 02:11:36.000000000 +0300
    +++ ng_grep.c 2014-04-23 10:39:17.000000000 +0300
    @@ -280,7 +280,7 @@
    if(hook==priv->miss || hook==priv->meet){
    log(LOG_ERR,"ng_grep::rcvdata from out-only hook, discard!\n");
    NG_FREE_ITEM(item);
    - error=EINVAL;
    + return(EINVAL);
    }

    m=item->body.da_m;
     
     
  • 2.32, andy_68 (ok), 14:52, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо!
     
  • 2.36, Аноним (-), 15:06, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    return - не функция, позорище.
     
     
  • 3.37, Аноним (-), 15:22, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Похоже человек на всякий случай макрос в скобки поставил, а то с макросами всякие казусы бывают.
     
     
  • 4.46, andy_68 (ok), 16:20, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Похоже человек на всякий случай макрос в скобки поставил, а то с
    > макросами всякие казусы бывают.

    Имхо, это даже не так важно -- человек показал ошибку в логике, и спасибо ему за это еще раз. Я все равно исправил по-другому...

     
  • 4.49, danfe (ok), 16:34, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Похоже человек на всякий случай макрос в скобки поставил, а то с макросами всякие казусы бывают.

    Хоть EINVAL и макроопределение, скобки в данном случае необязательны (т.к. лишь одна лексема: 22), но так диктует man style(9) FreeBSD (видимо, ради consistency с if, while, for).

     
     
  • 5.80, cvsup1 (?), 21:39, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В не ANSI C, return могла быть (и была) функцией или иным не ключевым словом, ноги оттуда
     
     
  • 6.82, Аноним (-), 21:49, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вас не затруднит указать параграф стандарта ANSI C, где это описано?

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

     
     
  • 7.95, Аноним (-), 10:25, 24/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    >В не ANSI C
    >не
    >не
     

  • 1.10, Аноним (-), 11:49, 23/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Полный список блокировки Роскомнадзора ng_grep обрабатывает без проблем

    Хотелось бы узнать, каким таким образом "без проблем" удается обрабатывать HTTPS URL?

     
     
  • 2.17, Нанобот (ok), 13:02, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • +5 +/
    для людей у, которых проблема со зрением: попробуйте навести большую лупу на последнее слово в следующей строке:

    >для решения задачи анализа и фильтрации содержимого транзитных >>>>http<<<-запросов

     
     
  • 3.56, andy_68 (ok), 17:15, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > для людей у, которых проблема со зрением: попробуйте навести большую лупу на
    > последнее слово в следующей строке:
    >>для решения задачи анализа и фильтрации содержимого транзитных >>>>http<<<-запросов

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

     

  • 1.11, Dmitry (??), 11:50, 23/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В файлике my_pattern.c не обрабатываются ошибки аллокации памяти.
    В частности:
    pattern->next = malloc(sizeof(*pattern->next), M_NETGRAPH_GREP, M_ZERO|M_NOWAIT);
    и т.п.
    Для сравнения строк желательно задавать ограничение на количество сравниваемых символов
     
     
  • 2.28, andy_68 (?), 14:40, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Неправда ваша, дяденька... Буквально 3 строками ниже
    if((pattern->next && pattern->precomp)

    Про ограничения -- согласен, а что, просмотрел где-то? Поищу, поправлю.

     
     
  • 3.96, Аноним (-), 10:29, 24/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > if((pattern->next && pattern->precomp)

    Не очень хорошая практика, на мой взгляд. Лучше явно сравнивать с NULL, ибо согласно стандарту он необязательно равен нулю.

     
     
  • 4.97, Led (ok), 12:27, 24/04/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> if((pattern->next && pattern->precomp)
    > Не очень хорошая практика, на мой взгляд. Лучше явно сравнивать с NULL,
    > ибо согласно стандарту он необязательно равен нулю.

    А кто тебе сказал, сто если не указывать "явно сравнивать с NULL", то компилятор будет сравнивать указатель с нулём?

     
     
  • 5.99, Аноним (-), 14:14, 24/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Я не понял твоего вопроса. Компилятор сравнивать ничего не будет, во-первых. А во-вторых, в языке Си истинным считается любое ненулевое значение. Запись вида "if((pattern->next != 0 && pattern->precomp != 0)" избыточна.
     
     
  • 6.100, andy_68 (ok), 15:24, 24/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Я не понял твоего вопроса. Компилятор сравнивать ничего не будет, во-первых. А
    > во-вторых, в языке Си истинным считается любое ненулевое значение. Запись вида
    > "if((pattern->next != 0 && pattern->precomp != 0)" избыточна.

    Ну, такая-то запись попросту некорректна... Речь шла о
    if((pattern->next != NULL && pattern->precomp != NULL)

     
  • 6.114, Led (ok), 09:12, 25/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Я не понял твоего вопроса. Компилятор сравнивать ничего не будет, во-первых. А
    > во-вторых, в языке Си истинным считается любое ненулевое значение.

    Ок, и что же является "ненулевым значением" для указателя?

     
     
  • 7.115, Аноним (-), 12:05, 25/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Не ноль.
     
     
  • 8.116, Led (ok), 18:23, 26/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Уверен ... текст свёрнут, показать
     
     
  • 9.117, Аноним (-), 23:49, 26/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Ну что за дурацкие вопросы Как маленький, ей-богу Посмотри в стандарте, если м... текст свёрнут, показать
     
     
  • 10.118, Led (ok), 00:14, 27/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    При чём тут Почитай вот это, внимательно http c-faq com null ptrtest ht... текст свёрнут, показать
     

  • 1.19, Аноним (-), 13:09, 23/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Роскомнадзор ничего хорошего в этой жизни не сделал.
     
     
  • 2.23, Аноним (-), 14:08, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Роскомнадзор ничего хорошего в этой жизни не сделал.

    А должен был?

    Как следует из самоназвания - это всеобщий полицейский всея Руси. Надзирающий за всем и вся.

    Следует ли вообще в принципе удивляться его существованию?

    Кстати, в качестве девиза Роскомнадзору предлагаю старинную фразу - "Кто устережет сторожей?"

     
     
  • 3.30, SergMarkov (ok), 14:50, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    >> Роскомнадзор ничего хорошего в этой жизни не сделал.
    > А должен был?
    > Как следует из самоназвания - это всеобщий полицейский всея Руси. Надзирающий за
    > всем и вся.
    > Следует ли вообще в принципе удивляться его существованию?
    > Кстати, в качестве девиза Роскомнадзору предлагаю старинную фразу - "Кто устережет сторожей?"

    Нацлидер денно и нощно следит за качеством импортируемых огурцов, ты что, не знал, шоли ? :-)


     
  • 3.81, хм (?), 21:41, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    >"Кто устережет сторожей?"

    "Тот кто ворует у воров"

     

  • 1.22, anonymous (??), 14:07, 23/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >ngctl msg grep: add {raw=\"http://www.sample.ru/sample\"}

    Я так понимаю с таким правилом зарежется и текст, где будет присутствовать эта ссылка?

     
     
  • 2.24, Аноним (-), 14:09, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    >>ngctl msg grep: add {raw=\"http://www.sample.ru/sample\"}
    > Я так понимаю с таким правилом зарежется и текст, где будет присутствовать
    > эта ссылка?

    Сквида с регэкспами вживе видел?

     
     
  • 3.26, anonymous (??), 14:18, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Речь не о сквиде, а об этом конкретном примере. А почему Вы отвечаете вопросом на вопрос?
     
     
  • 4.33, andy_68 (ok), 14:56, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Речь не о сквиде, а об этом конкретном примере. А почему Вы
    > отвечаете вопросом на вопрос?

    В данном конкретном примере будет искать совпадение строки, без каких-бы то ни было регэкспов. То есть в match попадут пакеты, не "содержащие" строку, а "состоящие" из нее, и только они.

    Сосбвенно, пользы от raw особой нет, делалось для url
    raw осталась как заготовка для подключения регэкспов.

     
     
  • 5.61, YetAnotherOnanym (ok), 17:40, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > а "состоящие" из нее, и только они

    чорт, а я уже хотел порадоваться, что письмо самого роскомнадзора, например, со следующей версией списка, в котором присутствует этот url, тоже будет зарезано.

     
     
  • 6.74, andy_68 (ok), 19:30, 23/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    >> а "состоящие" из нее, и только они
    > чорт, а я уже хотел порадоваться, что письмо самого роскомнадзора, например, со
    > следующей версией списка, в котором присутствует этот url, тоже будет зарезано.

    Я умею стрелять себе в ногу. Но делаю это только когда действительно хочу ;-)

     
  • 2.111, свободный бздун (?), 21:01, 24/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Я так понимаю с таким правилом зарежется и текст, где будет присутствовать
    > эта ссылка?

    Если дополнительно проверять наличие tcp-флага push, который обычно стоит при запросе get/post, то контент не будет резаться.

     
     
  • 3.112, andy_68 (ok), 04:24, 25/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    для паттерна типа url я все равно http заголовок частино разбираю, потому анализируется только запрос. Потому позволил себе tcp флаги не анализировать. Хотя, может, и не прав, подумаю.
     

  • 1.101, некто (ok), 16:09, 24/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    инструменты на базе регулярок известны своей "отзывчивостью" вложенным и сложным выражениям...
     
     
  • 2.105, andy_68 (ok), 18:07, 24/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > инструменты на базе регулярок известны своей "отзывчивостью" вложенным и сложным выражениям...

    Регулярками там пока не пахнет, хотя может быть по настроению и добавлю, благо есть куда.
    Http заголовок частино парсится, и ищется строгое соответствие полей. Именно по указанной вами причине ;-) А кроме того, это еще и быстрее.

     
     
  • 3.109, некто (ok), 20:28, 24/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    >> инструменты на базе регулярок известны своей "отзывчивостью" вложенным и сложным выражениям...
    > Регулярками там пока не пахнет, хотя может быть по настроению и добавлю,
    > благо есть куда.
    > Http заголовок частино парсится, и ищется строгое соответствие полей. Именно по указанной
    > вами причине ;-) А кроме того, это еще и быстрее.

    grep в названии это просто маркетинг? как слово java в javascript?

     
     
  • 4.113, andy_68 (ok), 04:25, 25/04/2014 [^] [^^] [^^^] [ответить]  
  • +/

    > grep в названии это просто маркетинг? как слово java в javascript?

    пока, к сожалению, да.

     

  • 1.102, некто (ok), 16:12, 24/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Чтобы не парсить контент типа? А если контент слегка мутирует?
     
     
  • 2.107, andy_68 (ok), 18:33, 24/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Чтобы не парсить контент типа? А если контент слегка мутирует?

    А он не перестанет быть при этом валидным http запросом?

     
     
  • 3.108, некто (ok), 20:25, 24/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    с чего это вдруг?
     
     
  • 4.110, andy_68 (ok), 20:54, 24/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > с чего это вдруг?

    с того, что мутирует ;-)

    Формат http запроса-ответа, равно как формат tcp и ip, поверх которых оно живет, описаны достаточно жестко. Мы не можем изменить их только с одной стороны, например, использовав вместо GET слово ДАЙ, точнее можем конечно, но сессия не состоится, ибо сервер не поймет. А обновить библиотеки на всех серверах, не отразив это в RFC -- это из разряда фантистики... А буде оно отразится в RFC -- так и в фильтр внести изменения недолго.

     

  • 1.103, некто (ok), 16:21, 24/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Извиняюсь.

    Это конечно хорошо что предоставляется исходный код. Но все равно такие инструменты противоречат тому, что сервера и окружение предназначены для предоставления людям информации.

    Немного не в тему, но не лишне напомнить: те кого блокируют просто найдут другие, более эффективные способы передачи информации.

    Как насчет инструментов, технологий, облегчающих и упрощающих передачу информации по каналам с большой зашумленностью?

     
     
  • 2.104, andy_68 (ok), 18:02, 24/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Извиняюсь.
    > Это конечно хорошо что предоставляется исходный код. Но все равно такие инструменты
    > противоречат тому, что сервера и окружение предназначены для предоставления людям информации.

    Позволю себе не согласиться. Этот инструмент раскидывает пакеты на два хука в зависимости от выполнения/невыполнения некоего условия, не более того, но и не менее. Инструмент не будет дискардить пакеты, если хук куда-то поцеплен надлежащим образом... А то так можно на оператор if начать ругаться.

    > Как насчет инструментов, технологий, облегчающих и упрощающих передачу информации по
    > каналам с большой зашумленностью?

    Не люблю согласованные фильтры... Что остается? Коды с коррекцией?

     
     
  • 3.106, andy_68 (ok), 18:10, 24/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    >> Как насчет инструментов, технологий, облегчающих и упрощающих передачу информации по
    >> каналам с большой зашумленностью?
    > Не люблю согласованные фильтры... Что остается? Коды с коррекцией?

    Кстати, была мысль, но руки пока не дошли -- рассмотреть входной пакет как набор отсчетов и прокрутить над ним БПУ, посмотреть, сколь быстро сойдется. По идее, операция недолгая, благо бабочка без умножений и поворотов.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:
    При перепечатке указание ссылки на opennet.ru обязательно



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2021 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру