andy_68 (andy_68) wrote,
andy_68
andy_68

контент-фильтр под netgraph

Так случилось, что в последнее время я несколько озаботился задачами контент-фильтрации, при этом с одной стороны создающий минимальный геморрой пользователю, а с другой стоящей все же разумных денег. В процессе анализа задачи пришел к выводу, что жизнь мне облегчил бы стейтлесс фильтр содержимого tcp пакетов. Именно tcp, и именно стетлесс.
Воодушевленный коллегой tarkhil (ну так тебе надо, возьми и напиши), а так же его рассказами про то, какая классная штука нетграф, я подумал "а почему бы и не?" На и начал...
Большое человеческое спасибо  nuclight за его старые посты http://nuclight.livejournal.com/126612.html и http://nuclight.livejournal.com/122098.html, а так же ospf_ripe за http://ospf-ripe.livejournal.com/2194.html , однако изложенный в последнем подход (использование bpf c предварительной компиляцией условий фильтрации) показался мне слабоприемлемым для моих задач.
В итоге я сочинил вот это http://nest.ahome.ru/pub/ng_grep-alpha-01.tgz
имеет 3 хука
in -- входящий
meet -- сюда попадют пакеты, соответствущие одному из паттернов
miss -- а сюда не соответствующие ни одному (а так же нулевые, ошибки и так далее)
таблица паттернов заполняется через msg, соответственно команды
add -- добавить паттерн в таблицу
del -- удалить паттерн из таблицы
check -- проверить наличие паттерна в таблице (если есть, то нет ошибки. Если нет -- соответсвенно есть)
пакет проверяется тупо на совпадение со всеми паттернами по очереди, с ignore case. Ну то есть вообще-то флаг предусмотрен и для case, но игнорируется (пока) и тупо присваивается ignore case. Сравнение -- strncasecmp, по длинне паттерна.
на FreeBSD 10.0 amd64 компилится без ворнингов, проблем при запуске нет.
Tags: ng_grep, работа
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 12 comments
Следующий шаг - это все-таки сортированная таблица, весьма заметно ускорящая поиск. Ну, и лицензирование в Минсвязи и Роспотребнадзоре проект на гитхабе и анонс, хотя бы, в ru_freebsd и ru_root
да, я эту мысь думаю... Но я ее начал думать несколько своеобразно -- а не поиграть ли в БПФ, точнее даже в БПУ? В конце концов, чем текст не оцифрованный сигнал? Последовательность байтов она и есть как есть. В любом случае на преобразование затраты фиксированы, паттерны можно преобразовать заранее -- только вот беда, это полный матч, регэкспа не получается. По крайней мере на первый взгляд.
Да, БПФ -- это не берклеевский фильтр, это Быстрое Преобразование Фурье, а БПУ -- соответственно Уолша, которое мы горячо любим за отсутствие уножений и прочих мерзких синусов...
Но это так, мысли с недосыпу...
Ну вообще-то не очень хорошая идея - использовать один специнструмент вместо другого специнструмента.

Я бы копал куда-то в область гнуперфа...
Читаю первую часть поста, БПФ... стало страшно, то ли Эндичка сбрендил, то ли bpf научили пакеты не терять если загрузка интерфейса хоть сколько существенна... Читаю дальше, вижу иную расшифровку БПФ... Отлегло от сердца =)
Дык! Математику в школе учить надо (было)!
Это в какой школе преобразование Фурье проходят? Или ты за термин универ/институт = высшая школа? =)
Привет. Из внешней сети я должен видеть http://192.168.4.223/cgi-bin/show_l2tp.pl ?
Маска, вы кто? И вообще, такие вопрсы лучше в скайпе или почет. Причем кантровской ;-)

Нечестивый Дятел

May 15 2014, 22:25:42 UTC 3 years ago Edited:  May 15 2014, 22:28:59 UTC

Мимокрокодил. Сканировал диапазон 192.168.0.0—192.168.254.254. Наш любимый extel не рубит такие пакеты, а гоняет по сети. Соответственно 4.223 нащупал твой веб сервер. Видимо твой шлюз роутит такие пакеты во внутреннюю сеть. Или у тебя провайдер нлайн какой-то, те тоже пропускают.
tracert 192.168.4.223

Трассировка маршрута к 192.168.4.223 с максимальным числом прыжков 30

1 1 ms <1 мс <1 мс 192.168.0.1
2 <1 мс 1 ms <1 мс broadband-хххххххх.clients.extel.ru [хххххххххххххх]
3 <1 мс <1 мс <1 мс 192.168.68.1
4 * * * Превышен интервал ожидания для запроса.
5 <1 мс <1 мс 1 ms 192.168.4.223

Трассировка завершена.

andy_68

May 16 2014, 05:33:08 UTC 3 years ago Edited:  May 16 2014, 05:38:04 UTC

Да, сервер мой.
ххх.ххх.67.251 - - [15/May/2014:17:28:22 +0400] "GET / HTTP/1.1" 200 1656 "-" "Mozilla/5.0"

Ваши следы?

Да, из внешней сети сервер видим быть не должен. Спасибо за инфу.
Ага, мои следы.
Удачи.