Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
ПРАКТИЧЕСКОЕ ПРИМЕНЕНИЕ СЕМАНТИЧЕСКОГОАНАЛИЗА ДЛЯ ФИЛЬТРАЦИИ ТРАФИКА:ВЕБ-ФИЛЬТР РЕМПАРО03.04.2012
Что самое важное в веб-фильтре03.04.12           Где фильтруется              серверное решение              клиентское ...
ТЕХНОЛОГИИ КАТЕГОРИЗАЦИИ03.04.12           Критерии сравнения        Анализ содержания    Списки URL                      ...
Фильтрация по содержимому:           анализ текста                          Текст извлекается из HTML, Flash;03.04.12    ...
Технология «Семантическое зеркало»TM                          >3000 категорий (рубрик) в русской базе03.04.12           ...
Почему не статистика?           Статистические подходы (машинное обучение):03.04.12         метод Байеса,               ...
Подбор терминов:           «легкая лексикография»                          Работа выполняется лингвистами03.04.12        ...
Пример рубрикации                          http://www.xxx.com/               /Leisure:9503.04.12        /Leisure/Personal...
СЕРВЕРНАЯ ТЕХНОЛОГИЯ           ФИЛЬТРАЦИИ03.04.12   Web-фильтр – http-proxy сервер            на уровне провайдера       ...
РОДИТЕЛЬСКИЙ КОНТРОЛЬ03.04.12            решение серверное            web-интерфейс            пользователь может созда...
КАК ЭТО СДЕЛАНО            Прозрачный (transparent) прокси:03/04.12               подразумевается, что весь http-трафик ...
 Apache Traffic Server (далее TS) http://             trafficserver.apache.org/            (Сверх)скоростной - ~10Ktps, ...
SCL – Solver Configuration Language              Правила              Сенсоры              Детекторы03.04.12      Конв...
Детекторы           ContentClass(str categories...) - Detect if the content text matches the specified semantic category/c...
Конвертеры           Deny() - Block access to content with status 403 (HTTP_STATUS_FORBIDDEN).           Pass() - Pass con...
ЛОГИКА ФИЛЬТРАЦИИ                                                         IP клиента,03.04.12                             ...
База ключевых слов, задаваемых               пользователем                          Пользователь (администратор) может со...
ПОЛИТИКИ           Policy("Any", "For all users"): True() ;           Deny(): URLMatchAny("", "black") ;           Pass():...
ПРОИЗВОДИТЕЛЬНОСТЬ            20Mbit/s: 200 HTTP tps: Intel Core i3, 4GB RAM03.04.12            100Mbit/s: 1K HTTP tps: ...
КОНФИГУРАЦИЯ            WebAdmin            Поколения (версии) конфигурации03.04.12            Можно откатиться на пред...
СПАСИБО!   Яков Маркович           Ведущий программист,           Департамент разработок           ymarkovitch@ashmanov.co...
Upcoming SlideShare
Loading in …5
×

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

2,189 views

Published on

  • Be the first to comment

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

  1. 1. ПРАКТИЧЕСКОЕ ПРИМЕНЕНИЕ СЕМАНТИЧЕСКОГОАНАЛИЗА ДЛЯ ФИЛЬТРАЦИИ ТРАФИКА:ВЕБ-ФИЛЬТР РЕМПАРО03.04.2012
  2. 2. Что самое важное в веб-фильтре03.04.12 Где фильтруется  серверное решение  клиентское решение Как фильтруется  определение тематической категории ресурса  анализ содержания в момент обращения  предварительно составленные списки URL  поиск ключевых слов Объем обработки  производительность 2  масштабируемость
  3. 3. ТЕХНОЛОГИИ КАТЕГОРИЗАЦИИ03.04.12 Критерии сравнения Анализ содержания Списки URL Анализируются все Количество Содержат лишь страницы, категоризированных небольшую часть запрашиваемые ресурсов интернет-ресурсов пользователями Изменение содержания сайтов Не имеет значения, Необходимо Миграция сайтов на содержание периодически другие адреса анализируется в проверять актуальность момент обращения Контент, создаваемый пользователями, 3 социальные сети, блоги и т.п.
  4. 4. Фильтрация по содержимому: анализ текста  Текст извлекается из HTML, Flash;03.04.12 элементарно расширяется, можно подключать модули для извлечения текста из чего угодно, в чём есть намек на текст  ContentClass(str categories...) определяет, принадлежит ли текстовое содержимое ресурса какой-либо категории из списка  Анализ текстового содержания web-страниц (технология «Семантическое зеркало»™)  Результат анализа – набор иерархических категорий из предопределенного рубрикатора  Каждая категория из приписанных к тексту выдаётся с уровнем 4 релевантности, т.е. можно оценить не только «о чём» текст, но и «в какой степени именно об этом»
  5. 5. Технология «Семантическое зеркало»TM  >3000 категорий (рубрик) в русской базе03.04.12  Из них для веб-фильтра целесообразно использовать около 150  Русский, английский, вьетнамский, арабский языки; легко подключить украинский, немецкий, французский, испанский и др.; добавление нового языка – от одного месяца  Определяется «вес» терминов каждой рубрики в тексте (с учетом их характерности, длины, количества вхождений, длины текста). Текст получает рубрику, если совокупный вес ее терминов превышает порог  Технология определения тематики сверхкоротких текстов (заголовки, запросы, ссылки) 5  Объем «словарей»: более 430 тысяч терминов в русской базе, более 100 тысяч в английской, более 40 тысяч во вьетнамской
  6. 6. Почему не статистика? Статистические подходы (машинное обучение):03.04.12  метод Байеса,  n-граммы,  нейронные сети,  support vector machines и др. ... не применяются (точнее, применяются только для подбора терминов) Казалось бы, легко автоматически собрать характерные термины по текстам соответствующей тематики (и мы это хорошо умеем) Однако в этом случае:  надо иметь большую отрубрицированную обучающую коллекцию,  много шумящих терминов,  трудно настраиваться на новые виды текстов 6  при изменении обучающей коллекции всё может «поплыть»
  7. 7. Подбор терминов: «легкая лексикография»  Работа выполняется лингвистами03.04.12  Рубрицирующие термины берутся из реальных текстов (претенденты могут отбираться статистическими методами)  Постоянный контроль за тем, чтобы термины не «шумели» (в т.ч. смотрим, какие термины срабатывают на текстах, которые не должны фильтроваться)  Корректировка весов терминов (наиболее характерным вес повышается, «шумным» – понижается  Учет морфологии (во всех формах vs. только в данной) и капитализации  Быстрое накопление «массы» терминов 7  Легкая настройка на новые виды текстов и предметные области
  8. 8. Пример рубрикации  http://www.xxx.com/ /Leisure:9503.04.12 /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 8 /Types:61 /Types/Wiki:56
  9. 9. СЕРВЕРНАЯ ТЕХНОЛОГИЯ ФИЛЬТРАЦИИ03.04.12 Web-фильтр – http-proxy сервер  на уровне провайдера  gateway в локальной сети Продукты  Cluster – для провайдеров (обслуживание от тысяч до десятков миллионов узлов)  Appliance – корпоративные сети, интернет-кафе, образовательные учреждения 9
  10. 10. РОДИТЕЛЬСКИЙ КОНТРОЛЬ03.04.12  решение серверное  web-интерфейс  пользователь может создавать индивидуальное расписание из политик, предоставляемых администратором  можно просматривать логи  аутентификация, само собой 10
  11. 11. КАК ЭТО СДЕЛАНО  Прозрачный (transparent) прокси:03/04.12  подразумевается, что весь http-трафик на уровне gateway в локальной сети или на уровне провайдера перенаправляется на нас  на уровне клиента неотключаем  Явный (explicit) прокси  требует явной конфигурации клиента (браузера или конфигурация прокси Windows)  неинтересно, потому что легко отключается на клиенте  Умеем оба варианта 11
  12. 12.  Apache Traffic Server (далее TS) http:// trafficserver.apache.org/  (Сверх)скоростной - ~10Ktps, 1Gbps на i5 в режиме03.04.12 чистого прокси (без расширений)  Комбинированная модель (конечный автомат + многонитка)  Отлично расширяемый, специально для этого приспособленный, богатый API  Качественная документация  Прекрасный код  Очень приятно и продуктивно работать с главным разработчиком (Leif Hedstrom)  WebFilter — расширение для Apache TS и немного 12 патчей
  13. 13. SCL – Solver Configuration Language  Правила  Сенсоры  Детекторы03.04.12  Конвертеры 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() ; 13
  14. 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.03.04.12 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 14 True() - Return a successfull result
  15. 15. Конвертеры Deny() - Block access to content with status 403 (HTTP_STATUS_FORBIDDEN). Pass() - Pass content to the client as is.03.04.12 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. 15
  16. 16. ЛОГИКА ФИЛЬТРАЦИИ IP клиента,03.04.12 принадлежность к Обработка запроса клиента группе, время запроса, ... URL Обработка заголовков запрашиваемого запроса ресурса IP-адрес Разрешение IP адреса запрашиваемого ресурса ресурса Обработка заголовка Тип содержания ответа Список категорий, Обработка содержания уровень релевантности 16 Передача ответа пользователю
  17. 17. База ключевых слов, задаваемых пользователем  Пользователь (администратор) может создавать собственную базу ключевых слов03.04.12  База ключевых слов строится по тому же иерархическому принципу, что и база Семантического Зеркала, т.е. пользователь создаёт собственную иерархию категорий (рубрик) и приписывает к категориям ключевые слова  Одно и то же ключевое слово может быть привязана к нескольким категориям  При поиске ключевых слов в тексте используется лингвистические средства, применяемые в Семантическом Зеркале (учёт словоизменения, где это применимо, нормализация и т.д.)  Поиск ключевых слов ведётся с учётом языка документа. Каждому ключевому слову должен быть (пользователем) приписан язык при добавлении в базу. Это важно: см. например mist (англ.) и Mist (нем.)  Результат сканирования текста – набор иерархических категорий из пользовательского рубрикатора без уровней релевантности - вхождение ключевого слово в текст автоматически полностью включает все категории, к которому оно привязано. В этом коренное отличие от полноценного семантического анализа, проводимого с помощью баз Семантического Зеркала.  Keywords(str categories...), определяет, есть ли в тексте вхождения ключевых слов, приписанных какой-либо из перечисленных категорий 17
  18. 18. ПОЛИТИКИ Policy("Any", "For all users"): True() ; Deny(): URLMatchAny("", "black") ; Pass(): UserGroup("allowed") || URLMatchAny("", "white", "search-engines", "govbiz") ;03.04.12 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") ; 18 ApplyPolicy("NoGames"): UserGroup("children") && InDayTime("22:00", "8:00", "local");
  19. 19. ПРОИЗВОДИТЕЛЬНОСТЬ  20Mbit/s: 200 HTTP tps: Intel Core i3, 4GB RAM03.04.12  100Mbit/s: 1K HTTP tps: Intel Core i5 (4 cores), 4GB RAM  1Gbit/s: 10K HTTP tps: 2xXeon 4 ядра 8 нитей (например, E5507), 16GB RAM 19
  20. 20. КОНФИГУРАЦИЯ  WebAdmin  Поколения (версии) конфигурации03.04.12  Можно откатиться на предыдущую версию  Если фильтр не принял конфигурацию, автоматически восстанавливается последняя удачная  Конфигурации в кластере хранятся в распределённой БД (MongoDB) 20
  21. 21. СПАСИБО! Яков Маркович Ведущий программист, Департамент разработок ymarkovitch@ashmanov.com Михаил Волович Руководитель лингвистического отдела mv@ashmanov.com Информация о компании, услугах и технологиях www.ashmanov.com03.04.12

×