21
03.04.2012 ПРАКТИЧЕСКОЕ ПРИМЕНЕНИЕ СЕМАНТИЧЕСКОГО АНАЛИЗА ДЛЯ ФИЛЬТРАЦИИ ТРАФИКА: ВЕБ-ФИЛЬТР РЕМПАРО

Практическое применение семантического анализа для фильтрации трафика (Яков Маркович, Михаил Волович)

  • Upload
    ontico

  • View
    1.731

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Практическое применение семантического анализа для фильтрации трафика (Яков Маркович, Михаил Волович)

03.04.2012

ПРАКТИЧЕСКОЕ ПРИМЕНЕНИЕ СЕМАНТИЧЕСКОГО АНАЛИЗА ДЛЯ ФИЛЬТРАЦИИ ТРАФИКА:

ВЕБ-ФИЛЬТР РЕМПАРО

Page 2: Практическое применение семантического анализа для фильтрации трафика (Яков Маркович, Михаил Волович)

03.04.12

2

Что самое важное в веб-фильтре

Где фильтруется серверное решение клиентское решение

Как фильтруется определение тематической категории ресурса

анализ содержания в момент обращения предварительно составленные списки URL

поиск ключевых слов

Объем обработки производительность масштабируемость

Page 3: Практическое применение семантического анализа для фильтрации трафика (Яков Маркович, Михаил Волович)

03.04.12

3

ТЕХНОЛОГИИ КАТЕГОРИЗАЦИИ

Критерии сравнения Анализ содержания Списки URL

Количество категоризированных ресурсов

Анализируются все страницы, запрашиваемые пользователями

Содержат лишь небольшую часть интернет-ресурсов

Изменение содержания сайтов

Не имеет значения, содержание анализируется в момент обращения

Необходимо периодически проверять актуальность

Миграция сайтов на другие адреса

Контент, создаваемый пользователями, социальные сети, блоги и т.п.

Page 4: Практическое применение семантического анализа для фильтрации трафика (Яков Маркович, Михаил Волович)

03.04.12

4

Текст извлекается из HTML, Flash;элементарно расширяется, можно подключать модули для извлечения текста из чего угодно, в чём есть намек на текст

ContentClass(str categories...) определяет, принадлежит ли текстовое содержимое ресурса какой-либо категории из списка

Анализ текстового содержания web-страниц (технология «Семантическое зеркало»™)

Результат анализа – набор иерархических категорий из предопределенного рубрикатора

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

Фильтрация по содержимому:анализ текста

Page 5: Практическое применение семантического анализа для фильтрации трафика (Яков Маркович, Михаил Волович)

03.04.12

5

>3000 категорий (рубрик) в русской базе

Из них для веб-фильтра целесообразно использовать около 150

Русский, английский, вьетнамский, арабский языки;легко подключить украинский, немецкий, французский, испанский и др.; добавление нового языка – от одного месяца

Определяется «вес» терминов каждой рубрики в тексте(с учетом их характерности, длины, количества вхождений, длины текста). Текст получает рубрику, если совокупный вес ее терминов превышает порог

Технология определения тематики сверхкоротких текстов (заголовки, запросы, ссылки)

Объем «словарей»: более 430 тысяч терминов в русской базе, более 100 тысяч в английской, более 40 тысяч во вьетнамской

Технология «Семантическое зеркало»TM

Page 6: Практическое применение семантического анализа для фильтрации трафика (Яков Маркович, Михаил Волович)

03.04.12

6

Статистические подходы (машинное обучение): метод Байеса, n-граммы, нейронные сети, support vector machines и др.

... не применяются(точнее, применяются только для подбора терминов)

Казалось бы, легко автоматически собрать характерные термины по текстам соответствующей тематики(и мы это хорошо умеем)

Однако в этом случае: надо иметь большую отрубрицированную обучающую коллекцию, много шумящих терминов, трудно настраиваться на новые виды текстов при изменении обучающей коллекции всё может «поплыть»

Почему не статистика?

Page 7: Практическое применение семантического анализа для фильтрации трафика (Яков Маркович, Михаил Волович)

03.04.12

7

Работа выполняется лингвистами

Рубрицирующие термины берутся из реальных текстов(претенденты могут отбираться статистическими методами)

Постоянный контроль за тем, чтобы термины не «шумели»(в т.ч. смотрим, какие термины срабатывают на текстах, которые не должны фильтроваться)

Корректировка весов терминов (наиболее характерным вес повышается, «шумным» – понижается

Учет морфологии (во всех формах vs. только в данной) и капитализации

Быстрое накопление «массы» терминов

Легкая настройка на новые виды текстов и предметные области

Подбор терминов:«легкая лексикография»

Page 8: Практическое применение семантического анализа для фильтрации трафика (Яков Маркович, Михаил Волович)

03.04.12

8

http://www.xxx.com/

/Leisure:95/Leisure/PersonalLife:95/Leisure/PersonalLife/Adult:95/Leisure/PersonalLife/Adult/EroPorno:95/Leisure/PersonalLife/Adult/EroPorno/Pornography:95/Abuse:3

http://ru.wikipedia.org/wiki/Половое_воспитание

/SciTech:29/Family:68/Family/Children:36/Health:95/Health/Med:95/Health/Med/Sexual:70/Society:95/Society/JobAndEducation:82/Society/JobAndEducation/Education:80/Leisure:81/Leisure/PersonalLife:79/Leisure/PersonalLife/Adult:73/Leisure/PersonalLife/Adult/AboutSex:53/World:59/Types:61/Types/Wiki:56

Пример рубрикации

Page 9: Практическое применение семантического анализа для фильтрации трафика (Яков Маркович, Михаил Волович)

03.04.12

9

СЕРВЕРНАЯ ТЕХНОЛОГИЯ ФИЛЬТРАЦИИ

Web-фильтр – http-proxy сервер на уровне провайдера gateway в локальной сети

Продукты Cluster – для провайдеров (обслуживание от тысяч до

десятков миллионов узлов) Appliance – корпоративные сети, интернет-кафе,

образовательные учреждения

Page 10: Практическое применение семантического анализа для фильтрации трафика (Яков Маркович, Михаил Волович)

03.04.12

10

РОДИТЕЛЬСКИЙ КОНТРОЛЬ

решение серверное web-интерфейс пользователь может создавать индивидуальное

расписание из политик, предоставляемых администратором

можно просматривать логи аутентификация, само собой

Page 11: Практическое применение семантического анализа для фильтрации трафика (Яков Маркович, Михаил Волович)

03/04.12

11

Прозрачный (transparent) прокси: подразумевается, что весь http-трафик на уровне

gateway в локальной сети или на уровне провайдера перенаправляется на нас

на уровне клиента неотключаем

Явный (explicit) прокси требует явной конфигурации клиента (браузера или

конфигурация прокси Windows) неинтересно, потому что легко отключается на

клиенте Умеем оба варианта

КАК ЭТО СДЕЛАНО

Page 12: Практическое применение семантического анализа для фильтрации трафика (Яков Маркович, Михаил Волович)

03.04.12

12

Apache Traffic Server (далее TS) http://trafficserver.apache.org/

(Сверх)скоростной - ~10Ktps, 1Gbps на i5 в режиме чистого прокси (без расширений)

Комбинированная модель (конечный автомат + многонитка)

Отлично расширяемый, специально для этого приспособленный, богатый API

Качественная документация Прекрасный код Очень приятно и продуктивно работать с главным

разработчиком (Leif Hedstrom)

WebFilter — расширение для Apache TS и немного патчей

Page 13: Практическое применение семантического анализа для фильтрации трафика (Яков Маркович, Михаил Волович)

03.04.12

13

SCL – Solver Configuration Language Правила Сенсоры Детекторы Конвертеры

Pass(): UserGroup("admin", "pass_all") || URLMatchAny("", "search-engines", "govbiz") ;

Redirect("http://www.smeshariki.ru/"): UserGroup("preschool") && (URLMatchAny("", "porno", "obscene") || ContentClass("/Leisure/PersonalLife", "/Abuse", "/Accidents") && !ContentClass("/Accidents/ActOfGod")) ;

Deny(): UserGroup("preschool", "children") && ContentClass("/Abuse”, "/Leisure/Games/Gambling") ;

Deny(): ContentClass("/Abuse/Obscene", "/Leisure/PersonalLife/Adult") ;

// Запретить игры кроме викторин с 22:00 до 8:00

HtmlTemplate("bedtime"): InDayTime("22:00", "8:00", "local") && ContentClass("/Leisure/Games") && !ContentClass("/Leisure/Games/Quiz") ;

Warn("gambling-is-dangerous"): ContentClass("/Leisure/Games/Gambling") ;

// Pass the remaining content untouched

Pass(): True() ;

Page 14: Практическое применение семантического анализа для фильтрации трафика (Яков Маркович, Михаил Волович)

03.04.12

14

Детекторы

ContentClass(str categories...) - Detect if the content text matches the specified semantic category/categories.

Keywords(str categories...) - Detect if the content text matches the specified keyword category/categories.

URLMatchAll(str field, str lists...) - Detect if the value of an HTTP request field matches with ALL given URL lists.

URLMatchAny(str field, str lists...) - Detect if the value of an HTTP request field with ANY of given URL lists.

ClientGeoIP(str ...) - Detect if client IP belongs to a specified country or/and region.

ServerGeoIP(str ...) - Detect if server IP belongs to a specified country or/and region.

UserGroup(str ...) - Detect if client IP belongs to one of the specified user groups.

InDayTime(str begin, str end, str tz = "") - Check if the current time falls into the specified daytime interval.

IsDayOfWeek(str tz, int days...) - Check if the current time falls into the specified day(s) of week.

ContentType(str mimetypes...) - Detect if response content mime-type matches one of the detector arguments.

HttpStatus(int statlist...) - Detect if HTTP response status matches one of the detector arguments.

False() - Return an unsuccessfull result

True() - Return a successfull result

Page 15: Практическое применение семантического анализа для фильтрации трафика (Яков Маркович, Михаил Волович)

03.04.12

15

Конвертеры

Deny() - Block access to content with status 403 (HTTP_STATUS_FORBIDDEN).

Pass() - Pass content to the client as is.

Redirect(str url, int wait = 0, str name = "", str values...) - Redirect client to a specified URL.

TextMessage(str message) - Show a plain text message.

Warn(str name = "", str values...) - Output a page with a warning message and a link to the original resource.

HtmlTemplate(str name, int status = 200, str reason = "", str values...) - Output html template with substituted parameters

Policy(str name, str description = "") - Declare a webfilter policy.

ApplyPolicy(str policies...) - Make active a specified set of policies.

Page 16: Практическое применение семантического анализа для фильтрации трафика (Яков Маркович, Михаил Волович)

03.04.12

16

ЛОГИКА ФИЛЬТРАЦИИ

Обработка запроса клиента

Обработка заголовков запроса

Разрешение IP адреса ресурса

Обработка заголовка ответа

Обработка содержания

IP клиента, принадлежность к

группе, время запроса, ...

URL запрашиваемого

ресурса

IP-адрес запрашиваемого

ресурса

Тип содержания

Список категорий, уровень

релевантности

Передача ответа пользователю

Page 17: Практическое применение семантического анализа для фильтрации трафика (Яков Маркович, Михаил Волович)

03.04.12

17

Пользователь (администратор) может создавать собственную базу ключевых слов База ключевых слов строится по тому же иерархическому принципу, что и база

Семантического Зеркала, т.е. пользователь создаёт собственную иерархию категорий (рубрик) и приписывает к категориям ключевые слова

Одно и то же ключевое слово может быть привязана к нескольким категориям При поиске ключевых слов в тексте используется лингвистические средства,

применяемые в Семантическом Зеркале (учёт словоизменения, где это применимо, нормализация и т.д.)

Поиск ключевых слов ведётся с учётом языка документа. Каждому ключевому слову должен быть (пользователем) приписан язык при добавлении в базу.Это важно: см. например mist (англ.) и Mist (нем.)

Результат сканирования текста – набор иерархических категорий из пользовательского рубрикатора без уровней релевантности - вхождение ключевого слово в текст автоматически полностью включает все категории, к которому оно привязано. В этом коренное отличие от полноценного семантического анализа, проводимого с помощью баз Семантического Зеркала.

Keywords(str categories...), определяет, есть ли в тексте вхождения ключевых слов, приписанных какой-либо из перечисленных категорий

База ключевых слов, задаваемых пользователем

Page 18: Практическое применение семантического анализа для фильтрации трафика (Яков Маркович, Михаил Волович)

03.04.12

18

Policy("Any", "For all users"): True() ;

Deny(): URLMatchAny("", "black") ;

Pass(): UserGroup("allowed") || URLMatchAny("", "white", "search-engines", "govbiz") ;

Policy("Admin", "For administrator"): UserGroup("admin") ;

Pass(): URLMatchAny("", "config") ;

DemoFrame("OK", 1): True() ;

Policy("Parent", ""): True() ;

Pass(): ContentClass("/Leisure/PersonalLife") ;

Policy("Child", ""): True() ;

Deny(): ContentClass("/Leisure/PersonalLife/Adult") ||

ContentClass("/Leisure/Games/Gambling") ;

Policy("NoGames", ""): True() ;

Deny(): ContentClass("/Leisure/Games") ;

ApplyPolicy("Admin", "Any"): True() ;

ApplyPolicy("Parent"): UserGroup("parents") ;

ApplyPolicy("Child"): UserGroup("children") ;

ApplyPolicy("NoGames"): UserGroup("children") && InDayTime("22:00", "8:00", "local");

ПОЛИТИКИ

Page 19: Практическое применение семантического анализа для фильтрации трафика (Яков Маркович, Михаил Волович)

03.04.12

19

ПРОИЗВОДИТЕЛЬНОСТЬ

20Mbit/s: 200 HTTP tps: Intel Core i3, 4GB RAM100Mbit/s: 1K HTTP tps: Intel Core i5 (4 cores), 4GB RAM1Gbit/s: 10K HTTP tps: 2xXeon 4 ядра 8 нитей (например,

E5507), 16GB RAM

Page 20: Практическое применение семантического анализа для фильтрации трафика (Яков Маркович, Михаил Волович)

03.04.12

20

WebAdmin Поколения (версии) конфигурации Можно откатиться на предыдущую версию Если фильтр не принял конфигурацию, автоматически

восстанавливается последняя удачная Конфигурации в кластере хранятся в распределённой

БД (MongoDB)

КОНФИГУРАЦИЯ

Page 21: Практическое применение семантического анализа для фильтрации трафика (Яков Маркович, Михаил Волович)

03.04.12

СПАСИБО! Яков МарковичВедущий программист,Департамент разработок[email protected]

Михаил ВоловичРуководитель лингвистического отдела[email protected]

Информация о компании, услугах и технологияхwww.ashmanov.com