Министерство образования и науки Российской Федерации
_________________
САНКТ-ПЕТЕРБУРГСКИЙ
ГОСУДАРСТВЕННЫЙ ПОЛИТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ
__________________________________________________________
А.М. Пласковский, А.Г. Новопашенный, Ю.Е. Подгурский, В.С. Заборовский
МЕТОДЫ И СРЕДСТВА ЗАЩИТЫ КОМПЬЮТЕРНОЙ ИНФОРМАЦИИ
Межсетевое экранирование.
Разграничение доступа на прикладном уровне
Учебное пособие
УДК 004.7:004.942(075.8)
ББК 32.973.202
Пласковский А.М., Новопашенный А.Г., Подгурский Ю.Е., Заборовский В.С. Методы и средства защиты компьютерной информации. Межсетевое экранирование. Разграничение доступа на прикладном уровне. СПб: Изд-во СПбГПУ, 2012. 80 c.
Учебное пособие является логическим продолжением пособия «Методы и средства защиты компьютерной информации. Межсетевое экранирование».
В нем рассматриваются вопросы управления сетевым доступом на прикладном уровне. В пособии анализируются особенности реализации как традиционных протоколов (http, ftp, smtp), так и современных сервисов (icq, skype, bittorrent) с точки зрения возможности их гибкой фильтрации.
Изложенный в пособии теоретический материал сопровождается методическими материалами по лабораторному практикуму на базе учебного класса кафедры «Телематика» СПбГПУ с использованием межсетевых экранов ССПТ-2.
Практические задания в учебном пособии предназначены для освоения материала студентами старших курсов специальности «Вычислительные машины, комплексы, системы и сети».
Табл. __. Ил. __. Библиогр. назв.: 2.
Печатается по решению редакционно-издательского совета Санкт-Петербургского государственного политехнического университета.
© Санкт-Петербургский государственный
политехнический университет, 2012
©Пласковский А.М., Новопашенный А.Г.,
Подгурский Ю.Е., Заборовский В.С., 2012
Оглавление
Введение………………………………………………………………………...3
1 Определение и анализ структур прикладных протоколов для организации гибкой фильтрации……………………………......................…………………5
1.1 Определение структур прикладных протоколов……….………………...5
1.2 Анализ прикладных протоколов………………………….……………...10
1.2.1 Традиционные протоколы прикладного уровня………………………10
1.2.1.1 HTTP…………………………………………………………….10
1.2.1.2 FTP………………………………………………………………19
1.2.1.3 SMTP…………………………………………….………………26
1.2.2 Особенности построения современных протоколов и возможности их гибкой фильтрации……………………………………………………………34
1.2.2.1 Структура и фильтрация ICQ (протокол OSCAR)……………34
1.2.2.2 Структура и фильтрация BitTorrent…………………………...41
1.2.2.3 Структура и фильтрация Skype………………………………..49
2 Принцип функционирования ССПТ-2 в режиме фильтрации прикладного
уровня………………………………………………………………………….54
2.1 Режим управления сессиями и фильтрация прикладного уровня…….54
2.2 Методика создания правил для фильтрации трафика приложений……59
3 Гибкая фильтрация трафика протоколов прикладного уровня средствами МЭ ССПТ-2……………………………………………………………………62
3.1 Фильтрация трафика протокола HTTP……………………………….....63
3.1.1 Обеспечение доступа к WEB-сайтам (пропуск трафика протокола HTTP)……………………………..……………………………………………63
3.1.2 Обеспечение доступа к веб-сайтам из «белого списка»……………..65
3.1.3 Обеспечение блокировки WEB-сайтов из «чёрного списка»………..69
3.2 Фильтрация трафика протокола OSCAR………………………………..72
3.2.1 Блокировка ICQ (запрет трафика протокола OSCAR)…………….....72
3.2.2 Блокировка входящих/исходящих ICQ-сообщений…………………..73
3.2.3 Блокировка пользователей по ICQ-номерам………………………….75
Заключение…………………………………………………………………….78
Список литературы……………………………………………………………79
Введение
Разграничение доступа (фильтрация) на прикладном уровне может рассматриваться с различных точек зрения.
Основной критерий — насколько гибкой (эффективной) оказывается фильтрация. Самое простое решение — режим «разрешить - запретить» работу сетевого приложения. В этом случае не учитываются пользователи, режимы работы, передаваемая информация. Либо весь трафик приложения блокируется, либо пропускается.
Более «глубокий» анализ позволяет учитывать режимы работы приложений, осуществлять блокировку отдельных пользователей и отдельных типов данных.
И, наконец, полная контентная фильтрация даёт возможность осуществлять фильтрацию по любому параметру приложения, в том числе по передаваемым словам и фразам с учётом их кодировок.
Самая первая задача, которую нужно решить — идентификация приложения по его трафику в промежуточной точке.
Самый старый и простой способ — фильтрация по номерам портов транспортного уровня. Однако этот способ ненадёжен, т.к. сетевой администратор или само приложение может перенастроить номера используемых портов. А это значит, что применять только этот способ недостаточно и, следовательно, необходимо выявлять признаки прикладных протоколов вне зависимости от того, какие порты используются приложением.
Для этого можно использовать анализ заголовков протоколов прикладного уровня, характерные для конкретных протоколов сигнатуры (байтовые последовательности). Нужно отметить, что идентификация традиционных протоколов (приложений), таких как http (web), ftp, smtp, pop3 и др. не вызывает особых затруднений. В тоже время идентификация трафика skype, icq, современных пиринговых файлообменных систем представляет собой нетривиальную задачу, так как они специально разрабатывались с учетом возможности маскировки и обхода систем фильтрации.
После идентификации сетевого приложения (прикладного протокола) можно приступать к решению задачи разграничения доступа (фильтрации). Как уже было отмечено, гибкость фильтрации может быть различной. Задача полной блокировки сетевого приложения — самая простая, а вот фильтрация с учетом конкретного пользователя, разрешённых (запрещённых) режимов, операций, типов данных требует выявления конкретных признаков (сигнатур).
Для обеспечения фильтрации на прикладном уровне используются два различных метода. Первый из них, обеспечивающий полную фильтрацию, – это использование промежуточных прокси-серверов. На прокси-сервере полностью собирается любая передаваемая информация. Следовательно, это позволяет её полностью проанализировать и свободно указывать любые параметры передаваемых данных в качестве признаков фильтрации. Однако этот способ имеет ряд недостатков – необходимость создания индивидуального прокси-сервера для каждого прикладного протокола и высокие временные затраты на обработку и анализ передаваемой информации.
Второй метод – это сигнатурный анализ пакетов с раскрытием информации, содержащейся в пакете (при этом анализируются не только заголовки, но и поля данных), и сопоставлением определённых байтовых данных приложениям. Именно этот метод реализован в межсетевом экране ССПТ-2 и позволяет достичь такого уровня фильтрации, при котором можно контролировать работу различных приложений, их отдельные параметры и функции. Этот метод не позволяет полностью анализировать трафик приложений, так как информация анализируется «попакетно», но обеспечивает достаточное быстродействие, характерное для МЭ пакетного типа.
В пособии рассмотрены и проанализированы с точки зрения возможности гибкой фильтрации различные протоколы прикладного уровня, как «традиционные» (http, ftp, smtp) так и относительно новые, реализующие такие сетевые сервисы как skype, icq, p2p.
1 Определение и анализ структур прикладных протоколов для организации гибкой фильтрации
1.1 Определение структур прикладных протоколов
Идентификация приложений методом сигнатурного анализа трафика – это определение признаков прикладных протоколов (а именно, характерных байтовых последовательностей), их сопоставление с функциональными режимами работы приложения и выявление в промежуточной точке.
Данный метод позволяет надёжно и гибко (эффективно) контролировать работу сетевых приложений. Надёжность обеспечивается однозначным соответствием найденных признаков протокола отдельным функциям сетевого приложения. Каждый параметр, функция или режим работы приложения соотносится с уникальной байтовой последовательностью. Управляя передачей этих последовательностей, мы контролируем работу приложения, его отдельные настройки и параметры, тем самым обеспечивая гибкость (эффективность).
Этот способ фильтрации прикладных протоколов более эффективен и надёжен в сравнении со способом блокировки по номерам портов, используемых приложением. Современные сетевые приложения способны самостоятельно или при участии администратора (или обычного пользователя) перенастраивать номера портов. Однако изменение внутренней структуры протокола (буквально – бинарных данных о размерах, значениях и смещениях его заголовков, полей данных и т.д.) доступно только для непосредственных разработчиков. Эффективность решений, полученных методом сигнатурного анализа, напрямую зависит от их соответствия текущей спецификации рассматриваемого протокола в каждом конкретном случае. Стоит отметить, что способ фильтрации на основе байтовых последовательностей не исключает блокировку по номерам портов, а лишь дополняет и конкретизирует этот способ.
В понятие гибкой (эффективной) сигнатурной фильтрации нами включается принятие решения о пропуске/удалении пакетов на основе выявления и идентификации:
-
отдельных команд приложения;
-
отдельных пользователей приложения;
-
передаваемых типов данных;
-
байтовых последовательностей в формате структуры пакета;
-
связей между полями пакета;
-
связей между полями нескольких пакетов в рамках сессии.
Полной и универсальной реализации этих положений на данный момент не существует. Такая ограниченность связана с постоянным ростом множества прикладных протоколов, техническим эволюционированием их внутренней структуры в сторону динамических систем со взаимосвязанными параметрами.
Идентификация «традиционных» прикладных протоколов и приложений, таких как http (протокол web-доступа), ftp (протокол передачи файлов), smtp, pop3 (протоколы электронной почты) и др. не вызывает особых затруднений, о чём будет сказано позже. Проблемы возникают с наиболее сложными и разнообразными структурами протоколов, условно выделенных в группу «современные» прикладные протоколы. Предельный интерес среди них представляют протоколы систем мгновенной передачи сообщений (im-приложения), пиринговых файлообменных сетей (p2p-приложения) и современной ip-телефонии (voip-приложения). Информация об особенностях работы протоколов этих систем отсутствует в открытом доступе и зачастую является коммерческой тайной (как, например, skype). Фактически, это проприетарные и закрытые протоколы со сложной внутренней структурой (многоуровневой системой шифрования, использованием собственных исполняемых файлов с антиотладочными особенностями, высоким уровнем маскирования своего трафика). Характерной особенностью этих протоколов является их регулярная модификация: появление новых версий протоколов, учитывающих новейшие решения в области фильтрации трафика и адаптированных для обхода существующих средств разграничения доступа.
Гибкая сигнатурная фильтрация позволяет достичь максимальной эффективности в управлении работой сетевых приложений, при этом обладает одним существенным недостатком – необходимостью индивидуально анализировать каждый протокол на выявление признаков фильтрации (в виде байтовых последовательностей). Высокие временные и ресурсные затраты на сбор, обработку и анализ экспериментальных данных, а также отсутствие средств автоматического выявления признаков в трафике приложений усложняют получение систем гибкой (эффективной) фильтрации.
Как было сказано, постоянные обновления приложений, предлагаемые разработчиками, могут приводить к изменениям внутренней структуры рассматриваемых протоколов этого приложения. Эти изменения могут быть как незначительными, так и весьма существенными. В последнем случае это способно аннулировать все полученные ранее результаты, которые становятся неактуальными и неэффективными. Процесс выявления признаков фильтрации нужно будет начинать с нуля.
Чем чаще выходят программные обновления и чем значимее внесённые ими изменения в структуры протоколов приложения, тем сложнее поддерживать актуальность имеющихся признаков фильтрации.
Для того чтобы облегчить задачу поиска признаков фильтрации в трафике прикладных протоколов, было предложено систематизировать существующие прикладные протоколы и предложить их классификацию в соответствии с особенностями внутренней структуры, используемыми принципами и подходами их реализации. Предлагаемая классификация основывается на полученных экспериментальных данных о рассмотренных структурах различных прикладных протоколов и даёт определённый взгляд на историю их развития. Для каждого класса сформулированы как его структурные особенности, так и требования к возможностям межсетевого экрана для осуществления гибкой (эффективной) сигнатурной фильтрации. На сегодняшний день в рамках классификации определено четыре основных класса прикладных протоколов.
Протокол со стабильной структурой полей. Сведения о подобных протоколах обычно хорошо известны и имеют открытые спецификации, в которых полностью описаны все возможные варианты передаваемых пакетов, рассмотрены и приведены используемые типы данных, служебные команды и пользовательские функции, чётко определена последовательность и размеры функциональных полей в пакете и соответствующие им байтовые данные. Содержание пакетов, передаваемых в рамках таких протоколов, может быть точно определено до начала работы приложения, так как его параметры изменяются в известных фиксированных диапазонах. Это позволяет однозначно определять расположение и содержание всех полей данных в пакете. К этому классу относятся практически все традиционные прикладные протоколы. Для эффективной фильтрации протоколов этого типа межсетевой экран в первую очередь должен обладать возможностью анализировать информацию, содержащуюся в пакетах в соответствии с правилами разграничения доступа, распознавая команды, группы байтовых последовательностей и явные файловые вложения.
Протокол с нестабильной структурой полей. Главной особенностью этого класса протоколов являются возникающие в работе функциональные поля со случайным набором параметров, зависящих от различных факторов (общего числа пользователей сети, ошибках выполнения и т.д). Границы субпротоколов обозначены неявно, содержит частые включения субструктуры TLV (Type – Length – Value). Фильтрация возможна при определении отдельных дополнительных условий (например, протокол OSCAR в ICQ-клиентах). Спецификации подобных протоколов закрыты или доступны не полностью, их содержание может быть заведомо некорректным или неактуальным. Межсетевой экран должен обладать возможностью автоматического редактирования прикладных правил на основе считывания отдельных полей и расчёта смещений данных в процессе работы приложения.
Протокол с языковой структурой описания – реализован на основе языка описания, представляет собой текстовые последовательности, размеры и смещения которых зависят от конкретной ситуации, происходящей как в самом приложении, так и в сети. Результаты фильтрации неоднозначны – удаление одного пакета может привести как к разрыву сессии, так и к продолжению работы в рамках уже существующей сессии с возможным искажением загружаемого контента (яркими представителями источников такого трафика являются JavaScript, Java-апплеты, ActiveX, различные приложения основанные на языке XML). Для фильтрации данной группы протоколов межсетевой экран должен быть оборудован механизмом контроля/восстановления протокольных сессий и пересборки пакетов.
Протокол с шифрованием данных – основан на полном или частичном шифровании, анализ данных затруднён для неопределённых источников трафика, но возможна фильтрация сертификатов в каждом индивидуальном случае (например, TLS, SSL, шифрованный Skype и BitTorrent). Экран должен быть оснащён модулями проверки сертификатов и расшифровки элементов.
Таким образом, для обеспечения результативной работы межсетевого экрана для максимальной гибкой (эффективной) фильтрации на всей совокупности различных прикладных протоколов необходимо учитывать все указанные подходы. Современный межсетевой экран должен анализировать протокольные команды, байтовые последовательности и передаваемые файлы для контроля трафика традиционных протоколов, а для осуществления фильтрации более сложных протоколов необходимо иметь модули, осуществляющие следующие функции: анализ связанности данных в различных пакетах, контроль протокольных сессий (с возможностью возобновления прерванной сессии), пересборка пакетов, проверка используемых сертификатов и расшифровка закрытых данных. Разработка этих блоков представляет собой отдельную, достаточно сложную проблему.
1.2 Анализ прикладных протоколов
1.2.1 Традиционные протоколы прикладного уровня
1.2.1.1 HTTP
HTTP (HyperText Transfer Prоtocоl) – протокол обмена гипертекстовой информацией, протокол прикладного уровня стека TCP/IP. Его первая версия была разработана в 1991 году Тимом Бернерсом-Ли, как один из базовых элементов «мировой паутины» World Wide Web (WWW).
В 1996 году в RFC 1945 была определена версия HTTP 1.0, а в 1999 году вышла действующая на настоящий момент версия HTTP 1.1. Протокол этот достаточно сложен, его описание составляет почти 200 страниц, поэтому здесь мы касаемся лишь основных его особенностей с точки зрения возможной фильтрации.
В качестве транспортного протокола HTTP использует TCP и работает по стандартной схеме «клиент-сервер». Работа по протоколу HTTP происходит следующим образом: программа-клиент устанавливает TCP-соединение с сервером (стандартный номер порта – 80) и выдает ему HTTP-запрос. Сервер обрабатывает этот запрос и выдает HTTP-ответ клиенту. В версии HTTP 1.1 TCP-соединение может оставаться открытым после отправки ответа на запрос, что позволяет посылать несколько запросов за одно соединение. Протокол HTTP не сохраняет своего состояния, то есть не «помнит» предыдущих запросов и ответов (для этого могут использоваться дополнительные средства).
Таким образом, HTTP сообщения делятся на запросы клиента серверу и ответы сервера клиенту. Оба типа сообщений выглядят следующим образом: сначала идет начальная строка (start-line), затем один или несколько полей заголовка (называемых также просто "заголовки"), затем пустая строка, указывающая конец полей заголовка, а затем, возможно, тело сообщения.
Заголовки и тело сообщения могут отсутствовать, но стартовая строка является обязательным элементом, так как указывает на тип запроса/ответа.
Формат запросов и ответов различный.
Достарыңызбен бөлісу: |