АРХИТЕКТУРА МНОГОУРОВНЕВОГО БРАНДМАУЭРА
MULTI-LEVEL FIREWALL ARCHITECTURE

Родственные заявки
Настоящая заявка содержит предмет изобретения, связанный с предметом заявки на патент «Multi-Layer Based Method for Implementing Network Firewalls» (Основанный на многочисленных уровнях способ реализации сетевых брандмауэров), код поверенного 221039; «A Method and Framework for Integrating a Plurality of Network Policies» (Способ и структура для объединения множества сетевых политик), код поверенного 221041; и «Method for Managing Network Filter Based Policy» (Способ управления политикой, основанной на сетевом фильтре), код поверенного 221037; поданные в тот же день, что и настоящая заявка, описания которых специально включены в эту заявку посредством ссылки.
Область техники, к которой относится изобретение
Настоящее изобретение, в основном, относится к компьютерным системам и к защите сети. Более конкретно, настоящее изобретение относится к архитектуре брандмауэра (средства межсетевой защиты), реализованной в одном или нескольких сетевых устройствах.
Предшествующий уровень техники
Сетевые протоколы предназначены для того, чтобы обеспечивать связь между сетевыми устройствами посредством открытого обмена данными. Хотя открытый обмен данными в значительной степени улучшает использование сетевых устройств для выполнения задач, он также создает проблемы, потому что сетевые протоколы не предназначены для защиты сети, и, в основном, ее не обеспечивают. Компьютеры, подсоединенные как к сетям общего пользования, так и к частным сетям, таким как локальные сети (ЛС, LAN), глобальные сети (ГС, WAN), интрасети и Интернет, восприимчивы к злонамеренным атакам, совершаемым другими сетевыми устройствами, подсоединенными к сети либо непосредственно, либо опосредованно. Такие злонамеренные атаки включают в себя кражу данных, атаки с целью отказа в обслуживании (ОВО, DOS), распространение компьютерных вирусов и т.п. Возникают другие связанные вопросы при подключении компьютеров к сетям, такие как управление доступом детей к нежелательным или несоответствующим web-сайтам.
Брандмауэр представляет собой инструментальное средство, используемое для защиты отдельных пользователей, сетевых устройств и сетей в целом от злонамеренных атак, в то же самое время также добавляя возможность управления обменом данными по сети посредством реализации политики. Брандмауэр реализует политику посредством исследования сетевых пакетов и определения того, основываясь на этом исследовании, должны ли пакеты быть разрешены или, наоборот, блокированы для дальнейшего прохождения по сети.
Политика, реализуемая посредством брандмауэра, определяется одним или несколькими фильтрами. Каждый фильтр включает в себя параметры фильтра и ассоциируемое действие. Параметры фильтра используются для идентификации сетевых пакетов, на которые распространяется политика брандмауэра, и включают в себя информацию, такую как аппаратные адреса, например, адреса протокола управления доступом к среде передачи (МАС), сетевые адреса, например, адреса Интернет-протокола (IP), тип протокола, например, протокол управления передачей (ТСР), номера портов и т.п. Действие определяет то, как должны обрабатываться пакеты с параметрами, которые соответствуют параметрам фильтра. В качестве конкретного примера, фильтр включает в качестве своих параметров адрес унифицированного указателя ресурса (УУР, URL), например, «http://www.foo.com». Фильтр также ассоциирует действие блокирования, т.е. удаление пакета, с этим адресом УУР. Всякий раз когда брандмауэр исследует пакет и в результате этого исследования идентифицирует адрес УУР «http://www.foo.com», внедренный в пакет, брандмауэр удаляет пакет, тем самым предотвращая его прохождение по сети.
Сетевые устройства производят обмен данными посредством посылки и приема пакетов через сетевой стек, содержащий многоуровневую сетевую архитектуру. Хотя существуют различные модели сетевой архитектуры, большинство из них включают в себя по меньшей мере прикладной уровень, транспортный уровень, сетевой уровень и канальный уровень. Сетевые пакеты последовательно проходят каждый уровень, и когда пакет проходит через каждый уровень, он подвергается обработке. Для исходящих пакетов прикладной уровень обрабатывает данные согласно протоколам прикладного уровня, таким как протокол передачи гипертекста (ИТТР), протокол передачи файлов (FTP) и простой протокол передачи почты (SMTP), не говоря о других. Другие уровни, такие как сетевой уровень и транспортный уровень, пакетируют данные посредством заключения их в заголовки TCP и IP. Уровни выполняют обратную обработку для входящих пакетов, например, посредством синтаксического анализа заголовков, распакетирования данных и т.д. Многоуровневая «стековая» архитектура и функция обработки, выполняемая уровнями, приводит к динамической структуре пакетов, в результате чего содержимое пакетов, включающее в себя параметры пакетов, изменяется по мере прохождения пакета по стеку сетевых протоколов.
Брандмауэры исследуют пакеты в контрольной точке, расположенной внутри многоуровневого сетевого стека. В одном крайнем случае контрольная точка находится на прикладном уровне. Например, брандмауэр используется в качестве поставщика многоуровневых услуг (ПМУ, LSP). Пакеты на прикладном уровне включают в себя лежащие в основе данные, которые будут передаваться на другое сетевое устройство или которые были приняты от другого сетевого устройства. Исследование пакета на прикладном уровне позволяет брандмауэру идентифицировать параметры прикладного уровня, такие как адрес УУР, и сравнить параметры прикладного уровня с параметрами фильтра. Однако другие параметры пакета, такие как адреса IP, номера портов, адреса МАС и т.п., недоступны, потому что они либо не были добавлены к исходящим пакетам, либо были удалены из входящих пакетов в результате синтаксического анализа.
В другом крайнем случае контрольная точка брандмауэра выполнена на нижних уровнях сетевого стека в качестве промежуточного драйвера, вставленного между канальным уровнем и сетевым уровнем. Пакеты на нижних уровнях сетевого стека включают в себя максимальное количество параметров, например, номера интерфейсов, адреса MAC, адреса IP, тип протокола, порты и данные полезной нагрузки. Хотя пакеты включают в себя такие параметры, из этого не следует, что параметры являются легко определяемыми. После того как брандмауэр примет пакет, брандмауэру необходимо провести синтаксический анализ и интерпретировать соответствующий параметр пакета для сравнения с параметрами фильтра. Таким образом, как уровни в сетевом стеке, так и брандмауэр выполняют избыточные функции синтаксического анализа пакетов и интерпретации.
Краткое изложение сущности изобретения
Настоящее изобретение относится к архитектуре брандмауэра, которая позволяет применять фильтры брандмауэра к сетевым пакетам на всех уровнях сетевого стека. Архитектура включает в себя набор процессоров уровня, выполненных с возможностью обработки параметров уровня из сетевого пакета. Параметрами уровня являются параметры, ассоциируемые с процессором уровня, и включают в себя параметры, которые процессор уровня синтаксически анализирует из сетевого пакета, добавляет к нему или иным образом получает из него. Процессоры уровня выполнены с дополнительной возможностью выдачи запросов классификации, которые включают в себя параметры уровня.
Архитектура также включает в себя первое средство брандмауэра, содержащее интерфейс уровня, набор установленных фильтров и компонент поиска. Интерфейс уровня принимает параметры уровня, посланные как часть запроса классификации. Компонент поиска первого средства брандмауэра использует параметры уровня для идентификации одного или нескольких фильтров соответствия из набора установленных фильтров. Каждый фильтр соответствия включает в себя действие, которое инструктирует процессор уровня в отношении того, разрешить ли пакету дальнейшее прохождение по сети или блокировать пакет. Первое средство брандмауэра возвращает по меньшей мере одно действие на процессор уровня через интерфейс уровня.
В варианте выполнения изобретения процессоры уровня поддерживают контекст пакета. Процессор уровня принимает контекст пакета от процессора предыдущего уровня и посылает контекст пакета на первое средство брандмауэра. Компонент поиска в первом средстве брандмауэра использует контекст пакета в комбинации с параметрами уровня для идентификации одного или нескольких фильтров соответствия. Процессор уровня также модифицирует контекст пакета посредством добавления параметров уровня и последующей посылки модифицированного контекста пакета на процессор следующего уровня.
В другом варианте выполнения изобретения один или несколько вызовов включены в качестве части архитектуры брандмауэра. Каждый из одного или нескольких модулей вызова обеспечивает дополнительные функциональные возможности (кроме разрешения и блокирования), такие как функция ведения журнала регистрации пакетов, проверка в соответствии с протоколом защиты сетевого трафика на уровне IP Интернета (IPSec) и выполнение родительского контроля. Модуль вызываемого функционального средства исполняется в отношении пакета, когда тот идентифицирован как действие в одном из фильтров соответствия.
В другом варианте выполнения изобретения обеспечивается второе средство брандмауэра. Второе средство брандмауэра добавляет новые фильтры к набору установленных фильтров посредством интерфейса прикладного программирования (ИПП, API) управления. Второе средство брандмауэра также включает в себя копию первого средства брандмауэра, упоминаемую как модуль фильтра, которая дублирует службы первого средства брандмауэра во втором средстве брандмауэра.
Дополнительные признаки и преимущества изобретения станут очевидными из последующего подробного описания иллюстративных вариантов выполнения, которое приводится с ссылкой на прилагаемые чертежи.
Перечень фигур чертежей
Хотя в прилагаемой формуле изобретения подробно изложены признаки настоящего изобретения, изобретение вместе с его задачами и преимуществами лучше всего можно понять из последующего подробного описания, рассматриваемого совместно с прилагаемыми чертежами, на которых:
фиг.1 - блок-схема, иллюстрирующая, в основном, примерную компьютерную систему, в которой развернуто настоящее изобретение;
фиг.2 - блок-схема, иллюстрирующая, в основном, примерную сетевую среду, в соответствии с которой используется настоящее изобретение;
фиг.3 - блок-схема, иллюстрирующая, в основном, архитектуру брандмауэра настоящего изобретения;
фиг.4 - блок-схема, иллюстрирующая примерный фильтр, используемый с настоящим изобретением;
фиг.5 - блок-схема, иллюстрирующая примерную структуру данных для контекста пакета, используемую с настоящим изобретением;
фиг.6 - блок-схема, иллюстрирующая примерный набор интерфейсов прикладного программирования, используемых с настоящим изобретением;
фиг.7 - блок-схема, иллюстрирующая примерный интерфейс прикладного программирования, используемый с настоящим изобретением;
фиг.8 - блок-схема, иллюстрирующая функции, выполняемые сетевыми уровнями в соответствии с настоящим изобретением; и
фиг.9 - блок-схема, иллюстрирующая примерный набор вызовов, используемых с настоящим изобретением.
Подробное описание изобретения
Описана архитектура брандмауэра, которая выполнена с возможностью фильтрации при многоуровневых процессах, упоминаемых в этой заявке как уровни. Архитектура включает в себя процесс режима пользователя и процесс режима ядра, исполняющиеся в операционной системе. Альтернативно, архитектура брандмауэра выполняется вне операционной системы в одном или нескольких программных модулях или в отдельном режиме операционной системы.
Процесс режима ядра включает в себя множество уровней, содержащих стек протоколов, средство брандмауэра ядра и один или несколько вызовов. Стек протоколов включает в себя прикладной уровень, транспортный уровень, сетевой уровень и канальный уровень. Дополнительные уровни добавляются или удаляются из архитектуры, как это потребуется. Каждый уровень образует запрашивающий уровень, выполненный с возможностью приема сетевого пакета и данных контекста соответствующего пакета от предыдущего уровня или процесса. Запрашивающий уровень затем выдает запрос классификации на средство брандмауэра ядра через ИПП уровня. Запрос классификации включает в себя пакет, принимаемый запрашивающим уровнем, контекст пакета и набор параметров уровня, ассоциируемых с запрашивающим уровнем. Средство брандмауэра ядра обрабатывает запрос и возвращает действие. Действие, в качестве примера, инструктирует запрашивающий уровень, как обрабатывать пакет (например, разрешить или блокировать). Если действием является разрешение, то запрашивающий уровень обрабатывает пакет в соответствии с протоколом уровня, модифицирует контекст пакета таким образом, чтобы он включал в себя параметры уровня, и передает пакет и контекст пакета на следующий уровень. Если действием является блокирование, то запрашивающий уровень удаляет пакет и не передает пакет на следующий уровень. Запрашивающий уровень может выполнить дополнительные функции в результате действия блокирования, например, завершение соединения TCP, где пакет IP удаляется.
Средство брандмауэра ядра включает в себя ИПП уровня, набор установленных фильтров и ИПП вызываемых функциональных средств. Каждый из набора установленных фильтров включает в себя набор условий фильтра и ассоциируемое действие. Средство брандмауэра ядра обрабатывает запрос классификации, посылаемый от запрашивающего уровня, посредством идентификации одного или нескольких фильтров соответствия. Фильтры соответствия имеют условия фильтра, которые соответствуют параметрам уровня и контексту пакета. Если идентифицированы фильтры соответствия, то они применяются в порядке приоритета фильтров. Если действием применяемого фильтра является разрешение или блокирование, то действие возвращается на запрашивающий уровень. Если действием является вызов, то запрос классификации, выданный запрашивающим уровнем, вместе с идентификацией фильтра соответствия передается одному из модулей вызова. Модуль вызова выполняет свою запрограммированную функцию и возвращает действие средству брандмауэра ядра.
Средство брандмауэра ядра применяет к пакету фильтры соответствия в порядке приоритета до тех пор, пока не будет обозначено по меньшей мере завершающее действие. Если обозначено завершающее действие, то оно возвращается запрашивающему уровню, и не применяются дополнительные фильтры соответствия. Если для пакета не идентифицированы фильтры соответствия, то запрашивающий уровень уведомляется, что не было найдено фильтров соответствия, и запрашивающий уровень тогда принимает решение, как обрабатывать пакет. Обычно, когда не идентифицирован фильтр соответствия, запрашивающий фильтр обрабатывает пакет так, как если бы было возвращено разрешающее действие.
Иллюстративные процессы режима пользователя включают в себя средство брандмауэра режима пользователя и один или несколько поставщиков (провайдеров) политик. Поставщики политик получают политику от любого подходящего источника, такого как энергозависимая или энергонезависимая память или ввод пользователем при помощи графического пользовательского интерфейса или подобного инструментального средства. Политика представляет собой источник информации для представления нового фильтра, включающего в себя набор условий фильтра и ассоциируемые действия.
Режим пользователя также включает в себя копию средства брандмауэра ядра в средстве брандмауэра пользователя, тем самым позволяя создавать уровни режима пользователя. Уровни режима пользователя затем используют соответствующую режиму пользователя копию средства брандмауэра ядра для установки фильтров и для идентификации фильтров, которые соответствуют набору параметров, разрешающих применение фильтрации в режиме пользователя.
В варианте выполнения изобретения интерфейс вызовов между средством брандмауэра и набором модулей вызова обеспечивает возможность фактически неограниченного расширения возможностей брандмауэра. В качестве примера, вызов контекста НТТР обеспечивает средство родительского контроля посредством идентификации допустимых и недопустимых адресов УУР. Вызов IPSec проверяет, что пакеты, для которых подразумевается использование IPSec, были надлежащим образом подвергнуты обработке IPSec. Вызов записи в журнал в регистрации регистрирует пакеты, удовлетворяющие установленным критериям, таким образом облегчая последующее исследование пакетов. Вызов обнаружения вторжения идентифицирует подозрительные пакеты, основываясь на известных алгоритмах.
Обращаясь к чертежам, на которых одинаковые позиции относятся к одинаковым элементам, изобретение иллюстрируется как осуществленное в подходящей вычислительной среде. Хотя это не требуется, изобретение описывается в общем контексте машиноисполняемых инструкций, таких как программные модули, исполняемые персональным компьютером. В общих чертах, программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.д., которые выполняют определенные задачи или реализуют определенные абстрактные типы данных. Изобретение также может быть осуществлено в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки, которые связаны по сети передачи данных. В распределенной вычислительной среде программные модули могут быть расположены как на локальных, так и на удаленных устройствах хранения данных.
На фиг.1 изображен пример подходящей среды 100 вычислительной системы, в которой может быть реализовано изобретение. Среда 100 вычислительной системы представляет собой только один пример подходящей вычислительной среды и, как предполагается, не подразумевает никакого ограничения в отношении объема использования или функциональных возможностей изобретения. Также вычислительная среда 100 не должна интерпретироваться как имеющая какую-либо зависимость или требование, относящееся к любому одному или комбинации компонентов, изображенных в примерной операционной среде 100.
Изобретение может работать с многочисленными другими средами или конфигурациями вычислительной системы общего назначения или специального назначения. Примеры общеизвестных вычислительных систем, сред и/или конфигураций, которые могут быть подходящими для использования с изобретением, включают в себя, но не в ограничительном смысле, персональные компьютеры, серверные компьютеры, карманные или переносные устройства, многопроцессорные системы, микропроцессорные системы, телевизионные приставки, программируемую бытовую электронику, сетевые персональные компьютеры, миникомпьютеры, универсальные компьютеры (мейнфреймы), распределенные вычислительные среды, которые включают в себя любую из вышеуказанных систем или устройств, и т.п.
Изобретение может быть описано в общем контексте машиноисполняемых инструкций, таких как программные модули, исполняемые компьютером. В общем случае, программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют определенные абстрактные типы данных. Изобретение также может быть осуществлено в распределенных вычислительных средах, где задачи выполняются посредством удаленных устройств обработки, которые соединены по сети передачи данных. В распределенной вычислительной среде программные модули могут быть расположены как на локальных, так и на удаленных носителях данных компьютеров, включающих в себя устройства хранения данных.
Как показано на фиг.1, примерная система для осуществления изобретения включает в себя вычислительное устройство общего назначения в виде компьютера 110. Компоненты компьютера 110 могут включать в себя, но не в ограничительном смысле, процессор 120, системную память 130 и системную шину 121, которая соединяет различные компоненты системы, включая системную память, с процессором 120. Системная шина 121 может относиться к любому из нескольких типов шинных структур, включая шину памяти или контроллер памяти, периферийную шину и локальную шину, использующие любую из многочисленных шинных архитектур. В качестве примера, а не ограничения, такие архитектуры включают в себя шину архитектуры промышленного стандарта (ISA), шину микроканальной архитектуры (МCА), расширенную шину ISA (EISA), локальную шину Ассоциации по стандартам в области видеоэлектроники (VESA) и шину межсоединений периферийных компонентов (PCI), также известную как мезонинная шина расширения.
Компьютер 110 обычно включает в себя разнообразные машиночитаемые носители. Машиночитаемые носители могут быть любыми доступными носителями, к которым компьютер 110 может осуществить доступ, и включают в себя как энергозависимые, так и энергонезависимые носители, как съемные, так и несъемные носители. В качестве примера, а не ограничения, машиночитаемые носители могут содержать носители данных компьютера и среды передачи данных. Носители данных компьютера включают в себя как энергозависимые, так и энергонезависимые, как съемные, так и несъемные носители, реализованные любым способом или по любой технологии для хранения информации, такой как машиночитаемые инструкции, структуры данных, программные модули или другие данные. Носители данных компьютера включают в себя, но не в ограничительном смысле, оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ), электрически стираемое программируемое ПЗУ (EEPROM), флэш-память или память, изготовленную по другой технологии, компакт-диск, цифровой многофункциональный диск (DVD) или другой накопитель на оптических дисках, магнитные кассеты, магнитную ленту, накопитель на магнитных дисках или другие магнитные запоминающие устройства, или любой другой носитель, который может быть использован для хранения требуемой информации и к которому компьютером 110 может осуществить доступ. Среда передачи данных обычно воплощает машиночитаемые инструкции, структуры данных, программные модули или другие данные в модулированном данными сигнале, таком как несущая волна или другой транспортный механизм, и включает в себя любую среду доставки информации. Термин «модулированный данными сигнал» означает сигнал, одна или несколько характеристик которого установлены или изменены так, что они кодируют информацию в сигнале. В качестве примера, а не ограничения, среда передачи данных включает в себя проводную среду, такую как проводная сеть или непосредственное проводное соединение, и беспроводную среду, такую как акустическая, радиочастотная (РЧ), инфракрасная и другая беспроводная среда. Комбинации любых из вышеперечисленных сред также должны быть включены в сферу рассмотрения машиночитаемых носителей.
Системная память 130 включает в себя носители данных компьютера в виде энергозависимой и/или энергонезависимой памяти, такой как постоянное запоминающее устройство (ПЗУ) 131 и оперативное запоминающее устройство (ОЗУ) 132. Базовая система 133 ввода/вывода (BIOS), содержащая базовые процедуры, которые способствуют передаче информации между элементами внутри компьютера 110, как например, во время запуска, обычно хранится в ПЗУ 131. ОЗУ 132 обычно содержит данные и/или программные модули, которые оперативно доступны для процессора 120 и/или обрабатываются им в текущий момент. В качестве примера, а не ограничения, на фиг.1 изображена операционная система 134, программы 135 приложений, другие программные модули 136 и данные 137 программ.
Компьютер 110 также может включать в себя другие съемные/несъемные, энергозависимые/энергонезависимые носители данных компьютера. Только в качестве примера, на фиг.1 изображен накопитель 141 на жестких магнитных дисках, который считывает несъемный энергонезависимый магнитный носитель или записывает на него, дисковод 151 для магнитного диска, который считывает съемный энергонезависимый магнитный диск 152 или записывает на него, и дисковод 155 для оптического диска, который считывает съемный энергонезависимый оптический диск 156, такой как компакт-диск или другой оптический носитель или записывает на него. Другие съемные/несъемные, энергозависимые/энергонезависимые носители данных компьютера, которые могут быть использованы в примерной операционной среде, включают в себя, но не в ограничительном смысле, кассеты с магнитной лентой, карты флэш-памяти, цифровые многофункциональные диски, цифровую видеоленту, твердотельное ОЗУ, твердотельное ПЗУ и т.п. Накопитель 141 на жестких магнитных дисках обычно подсоединен к системной шине 121 через интерфейс несъемной памяти, такой как интерфейс 140, а дисковод 151 для магнитного диска и дисковод 155 для оптического диска обычно подсоединены к системной шине 121 посредством интерфейса съемной памяти, такой как интерфейс 150.
Дисководы и накопители и связанные с ними носители данных компьютера, описанные выше и изображенные на фиг.1, обеспечивают хранение машиночитаемых инструкций, структур данных, программных модулей и других данных для компьютера 110. На фиг.1, например, накопитель 141 на жестких магнитных дисках изображен как хранящий операционную систему 144, программы 145 приложений, другие программные модули 146 и данные 147 программ. Следует отметить, что эти компоненты могут быть либо теми же, либо отличными от операционной системы 134, программ 135 приложений, других программных модулей 136 и данных 137 программ. Операционной системе 144, программам 145 приложений, другим программным модулям 146 и данным 147 программ здесь даны другие номера, чтобы показать, что, как минимум, они являются другими копиями. Пользователь может вводить команды и информацию в компьютер 110 через устройства ввода, такие как клавиатура 162 и указательное устройство 161, обычно упоминаемое как мышь, шаровой указатель или сенсорная панель. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, игровой планшет, антенну спутниковой связи, сканер или т.п. Эти и другие устройства ввода часто подключены к процессору 120 через интерфейс 160 ввода пользователем, который подсоединен к системной шине, но может быть подсоединен посредством другого интерфейса и шинных структур, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB). Монитор 191 или устройство отображения другого типа также подсоединено к системной шине 121 через интерфейс, такой как видеоинтерфейс 190. В дополнение к монитору компьютеры также могут включать в себя другие периферийные устройства вывода, такие как громкоговорители 197 и принтер 196, которые могут быть подсоединены через интерфейс 195 периферийных устройств вывода.
Компьютер 110 может работать в сетевой среде, используя логические соединения с одним или более удаленными компьютерами, такими как удаленный компьютер 180. Удаленным компьютером 180 может быть другой персональный компьютер, сервер, маршрутизатор, сетевой ПК, одноранговое устройство или другой общий узел сети, и он обычно включает в себя многие или все из элементов, описанных выше в отношении персонального компьютера 110, хотя только устройство 181 хранения данных изображено на фиг.1. Логические соединения, изображенные на фиг.1, включают в себя локальную сеть (ЛС) 171 и глобальную сеть (ГС) 173, но также могут включать в себя другие сети. Такие сетевые среды общеизвестны в офисах, компьютерных сетях масштаба предприятия, интрасетях и Интернете.
При использовании в сетевой среде ЛС персональный компьютер 110 подключается к ЛС 171 через сетевой интерфейс или адаптер 170. При использовании в сетевой среде ГС компьютер 110 обычно включает в себя модем 172 или другое средство для установления связи через ГС 173, такую как Интернет. Модем 172, который может быть внутренним или внешним, может быть подсоединен к системной шине 121 через интерфейс 160 ввода пользователем или другой соответствующий механизм. В сетевой среде программные модули, описанные в отношении персонального компьютера 110 или его частей, могут храниться на удаленном устройстве хранения данных. В качестве примера, а не ограничения, на фиг.1 изображены удаленные программы 185 приложений, постоянно находящиеся на запоминающем устройстве 181. Понятно, что показанные сетевые соединения являются примерными и могут быть использованы другие средства установления линии связи между компьютерами.
В нижеследующем описании изобретение описывается с ссылкой на действия и символические представления операций, которые выполняются одним или несколькими компьютерами, если не указано иначе. По существу, понятно, что такие действия и операции, которые иногда упоминаются как машиноисполняемые, включают в себя манипулирование процессором компьютера электрическими сигналами, представляющими данные в структурированной форме. Это манипулирование преобразует данные или сохраняет их в ячейках системы памяти компьютера, которое реконфигурирует или иным образом изменяет работу компьютера таким образом, который хорошо понятен для специалиста в этой области техники. Структуры данных, где данные сохраняются, представляют собой физические ячейки памяти, которые имеют конкретные свойства, определяемые форматом данных. Однако, хотя изобретение описывается в вышеприведенном контексте, он не подразумевается ограничивающим, так как специалисту в этой области техники понятно, что многие действия и операции, описанные в этой заявке ниже, также могут быть осуществлены аппаратными средствами.
Сетевая среда, в которой используется архитектура брандмауэра настоящего изобретения, ниже описывается с ссылкой на фиг.2. Сеть является иллюстративной по сути, так как архитектура брандмауэра настоящего изобретения реализуется в любом сетевом устройстве, которое подключается к любой сетевой конфигурации. Сетевая среда включает в себя частную сеть 200 и сеть 202 общего пользования. Частная сеть 200 и сеть 202 общего пользования представляют собой сети любого подходящего типа, например, локальные сети (ЛС), глобальные сети (ГС), интрасети, Интернет или любые их комбинации.
Сетевая среда включает в себя множество сетевых устройств 204, 206, 208, 210 и 212. Сетевые устройства 204, 206 подключены к частной сети 200. Сетевые устройства 210, 212 подключены к сети 202 общего пользования. Сетевое устройство 208 подключено как к частной сети 200, так и к сети 202 общего пользования и предоставляет интерфейс между ними. Сетевые устройства подключаются к сети общего пользования и к частной сети, используя любую подходящую технологию, такую как Ethernet, 1394 или 802.11 (b). Сетевые устройства дополнительно реализуются как любые подходящие вычислительные устройства, такие как персональные компьютеры, серверы, карманные устройства, принтеры, коммутаторы, маршрутизаторы, мосты, повторители и т.п.
Сетевое устройство 208 включает в себя брандмауэр 214 и один или несколько фильтров 216. Брандмауэр 214 представляет собой программный модуль или набор программных модулей, выполненных в соответствии с архитектурой настоящего изобретения, которые исследуют сетевые пакеты, передаваемые между сетевыми устройствами 204, 206, 208, подключенными к частной сети 200, и сетевыми устройствами 210, 212, подключенными к сети 202 общего пользования. В варианте выполнения изобретения брандмауэр 214 также исследует локально предназначаемые сетевые пакеты, посылаемые от сетевых устройств в частной сети 200 и предназначенные для них же.
Брандмауэр 214 реализуется на сетевом устройстве 208 для защиты и управления сетевым трафиком, которым обмениваются между собой частная сеть 200 и сетью 202 общего пользования, упоминаемый как пограничный брандмауэр. Альтернативно, брандмауэр 214 реализуется на отдельном сетевом устройстве и защищает его, такой как изображенный на сетевом устройстве 210, упоминаемый как брандмауэр, ориентированный на сетевой узел или хост-ориентированный брандмауэр. Брандмауэр также может быть реализован в виде централизованно управляемой группы хостов (сетевых узлов) и/или пограничных брандмауэров синхронизированным образом, упоминаемый как распределенный брандмауэр. Размещение сетевого устройства или устройств, реализующих брандмауэр 214, предпочтительно выбирается так, что брандмауэр 214 исследует весь сетевой трафик, предназначенный для сетевых устройств, которые он обязан защищать.
Фильтры 216 выполнены как часть брандмауэра 214. Альтернативно, фильтры 216 выполнены как часть отдельной структуры данных, доступной для брандмауэра 214. Брандмауэр 214 и фильтры 216 выполняют политику брандмауэра, предназначенную для защиты сетевых устройств 204, 206, 208 от злонамеренных атак, происходящих с сетевых устройств 210, 212, подсоединенных к сети общего пользования. Брандмауэр 214 также обеспечивает дополнительные функциональные возможности, такие как способствующие выполнению родительского контроля, обнаружение вторжения, ведение журнала регистрации сетевых пакетов и другие дополнительные основанные на фильтрах функциональные возможности.
Каждый фильтр 216 включает в себя набор условий фильтра и одно или несколько ассоциируемых действий. Условия фильтра включают в себя параметры и информацию, которые могут быть проанализированы синтаксически или иным образом получены из сетевых пакетов, такие как номера интерфейсов, адреса аппаратных средств, сетевые адреса, тип протокола, номера портов и данные полезной нагрузки. Одно или несколько ассоциируемых действий определяют то, как сетевое устройство, реализующее брандмауэр, должно обрабатывать пакеты, которые соответствуют условиям фильтра. Типовые действия включают в себя разрешение, т.е. разрешение пакету продолжать прохождение по сети, и блокирование, т.е. предотвращение дальнейшего прохождения по сети посредством удаления пакета.
Брандмауэр 214 исследует сетевые пакеты, проходящие по сети, когда они принимаются сетевым устройством 208, и посредством сравнения параметров пакетов с условиями фильтра, идентифицирует один или несколько фильтров соответствия. Фильтр соответствия является результатом этой операции, когда условия фильтра соответствуют параметрам пакета. Параметры пакета, подобно условиям фильтра, включают в себя информацию, которая синтаксически анализируется или иным образом получается из пакетов. Когда брандмауэр идентифицирует фильтр соответствия, то выполняется одно или несколько действий, ассоциируемых с условиями фильтра.
На фиг.3 изображен общий вид варианта выполнения архитектуры брандмауэра настоящего изобретения. Архитектура обеспечивает возможность обработки пакетов фильтрами на всех уровнях сетевого стека. Брандмауэр обеспечивает возможности центрального управления, которые позволяют добавлять и удалять фильтры и идентифицировать и разрешать конфликты фильтров. Архитектура брандмауэра является расширяемой в том смысле, что уровни фильтра добавляются и удаляются по необходимости и расширяются для того, чтобы включать специальные функциональные возможности, кроме действий разрешения и блокирования. Хотя изобретение описывается с определенной ссылкой на брандмауэры и фильтры брандмауэра, оно также используется для содействия и управления другими фильтрами и политиками. В качестве конкретных примеров, настоящее изобретение пригодно для содействия и управления фильтрами, используемыми при определении качества обслуживания (QoS), в стеке протоколов защиты сетевого трафика на уровне IP (IPSec), а также в других протоколах шифрования, аутентификации и управления ключами защиты.
Архитектура брандмауэра включает в себя процесс 250 режима пользователя и процесс 252 режима ядра. Процесс 250 режима пользователя и процесс 252 режима ядра выполняются как часть операционной системы в сетевом устройстве. Для специалиста в этой области техники понятно, что процесс 250 режима пользователя и процесс 252 режима ядра операционной системы включают в себя дополнительные компоненты, которые для упрощения не показаны. Альтернативно, архитектура брандмауэра выполняется в целом или частично вне операционной системы в виде одного или нескольких программных модулей или прикладных программ или в отдельном процессе операционной системы.
Процесс 252 режима ядра включает в себя сетевой стек 254, первое средство брандмауэра, упоминаемый в этой заявке как средство 256 брандмауэра ядра, и необязательные вызовы 258. В совокупности, процесс 252 режима ядра выполняет установленную политику брандмауэра посредством идентификации фильтров соответствия для сетевых пакетов, обработки пакетов в соответствии с известными протоколами и выполнения других действий над пакетами, обозначаемых фильтрами соответствия.
Сетевой стек 254 содержит множество процессов уровня, упоминаемых в этой заявке как уровни, включающих в себя уровень 268 потока данных, транспортный уровень 270, сетевой уровень 272 и канальный уровень 274. Архитектура брандмауэра настоящего изобретения является расширяемой, и дополнительные уровни динамически добавляются и удаляются по мере необходимости. Пример добавляемого уровня включает в себя уровень 276 доступа к файлу, осуществляемый в соответствии с протоколом блока серверных сообщений (SMB). Уровни могут работать совместно с другими программными модулями, такими как модуль 278 синтаксического анализа протокола передачи гипертекста (НТТР).
Уровни в сетевом стеке 254 обрабатывают входящие и исходящие сетевые пакеты. Исходящими сетевыми пакетами являются пакеты, передаваемые в сеть от сетевого устройства, реализующего архитектуру брандмауэра. Входящими пакетами являются пакеты, принимаемые на сетевом устройстве, реализующем архитектуру брандмауэра. Как указано соответствующими стрелками, показанными на фиг.3, входящие пакеты проходят по сетевому стеку 254 снизу вверх, и исходящие пакеты проходят по сетевому стеку 254 сверху вниз.
Сетевые пакеты последовательно проходят и обрабатываются сетевыми уровнями. В соответствии с известными методиками каждый уровень в сетевом стеке 254 выполнен с возможностью приема пакетов от предыдущего уровня или процесса, обработки пакетов согласно спецификации или протоколу и посылки обработанных пакетов на следующий уровень или процесс. В соответствии с изобретением каждый уровень в сетевом стеке 254 также поддерживает контекст пакета, передает контекст пакета на следующий уровень, выдает запрос классификации на средство 256 брандмауэра ядра и выполняет действие над пакетом согласно политике брандмауэра.
Контекстом пакета является структура данных, которая сопровождает пакет от уровня до уровня. Каждый уровень поддерживает контекст посредством добавления к структуре данных контекста набора параметров, которые уровень должен обрабатывать, например, информацию, которую уровень должен синтаксически выделить из входящих пакетов, добавить к исходящим пакетам или иным образом получить из содержимого пакетов. Примерная структура данных, используемая для контекста пакета, описывается с ссылкой на фиг.5.
Одной из операций, выполняемых уровнями сетевого стека 254, является активирование средства брандмауэра ядра посредством выдачи запроса классификации. Запросом классификации является обращение, выполняемое уровнем в сетевом стеке 254 и запрашивающее, чтобы любые фильтры, которые соответствуют пакету, были идентифицированы, и любое ассоциируемое действие, например разрешение или блокирование, было возвращено уровню. Уровень, выдающий запрос классификации, упоминается в этой заявке как запрашивающий уровень. Каждый уровень также предпринимает действие над пакетом, которое возвращается средством 256 брандмауэра ядра.
Средство 256 брандмауэра ядра включает в себя ИПП 280 уровня, набор установленных фильтров 282 и ИПП 284 вызовов. Средство 256 брандмауэра ядра выполняет различные функции, включающие в себя (1) поддержку набора установленных фильтров 282, определяющих политику брандмауэра, (2) прием запросов классификации от уровней в сетевом стеке 254, (3) идентификацию одного или нескольких фильтров соответствия, основываясь на запросе классификации, и (4) инструктирование запрашивающего уровня о любом действии, которое необходимо выполнить над пакетом, основываясь на фильтрах соответствия.
Каждый фильтр из набора установленных фильтров включает в себя набор условий фильтра и одно или несколько ассоциируемых действий. Как описано с ссылкой на фиг.2, условия фильтра идентифицируют сетевые пакеты, которые подвергаются ассоциируемому действию фильтра. Действия, определенные в наборе установленных фильтров 282, включают в себя разрешение и блокирование. Дополнительные функциональные возможности добавляются при помощи необязательных вызовов 258. Примерный вид фильтров описывается с ссылкой на фиг.4.
ИПП 280 уровня обеспечивает интерфейс между уровнями в сетевом стеке 254 и средством 256 брандмауэра ядра. Посредством ИПП 280 уровня запрашивающий уровень выдает запрос классификации средству 256 брандмауэра ядра. Запрос классификации включает в себя пакет, принимаемый запрашивающим уровнем, контекст пакета, принимаемый запрашивающим уровнем, и параметры уровня. Параметрами уровня являются параметры пакета, обработанные запрашивающим уровнем, например, посредством добавления или синтаксического анализа. В качестве конкретного примера, адреса Интернет-протокола (IP) источника и адресата являются параметрами уровня, посылаемыми сетевым уровнем 272 при реализации протокола IP. Параметры уровня также могут включать в себя информацию помимо параметров пакета, которые добавляются или синтаксически выделяются из пакета. В качестве конкретного примера, параметры уровня включают в себя тип локального адреса. Тип локального адреса определяется уровнем IP и посылается как часть запроса классификации. Типы локальных адресов включают в себя индивидуальный, широковещательный, групповой, альтернативный и т.п. Конкретная реализация ИПП 280 уровня описывается с ссылкой на фиг.6.
В необязательном порядке, вызовы 258 используются для реализации дополнительных функциональных возможностей помимо действий фильтра разрешения и блокирования. Вызов выполняется тогда, когда средство 256 брандмауэра ядра идентифицирует фильтр соответствия для пакета, который включает в себя в качестве ассоциируемого действия вызов одного из модулей вызова. Средство брандмауэра ядра посылает запрос классификации, выданный запрашивающим уровнем, т.е. полный пакет, параметры уровня и контекст пакета, на модуль вызова вместе с идентификацией фильтра соответствия посредством ИПП 284 вызовов. В варианте выполнения изобретения архитектура брандмауэра включает в себя базовый набор вызовов 258. Дополнительные вызовы аналогично уровням добавляются к расширяемой архитектуре брандмауэра по необходимости. Конкретное осуществление ИПП 284 вызовов описывается с ссылкой на фиг.6.
Процесс 250 режима пользователя включает в себя второе средство брандмауэра, упоминаемое как средство 260 брандмауэра пользователя, и один или несколько провайдеров 262 политик, обозначенных «РР1», «РР2» и «РР3». Провайдеры 262 политик представляют собой процессы, которые добавляют политику брандмауэра, т.е. установленные фильтры 282, в архитектуру брандмауэра. Любой процесс используется для выполнения этой задачи. Примером является служба унаследованной политики IPSec (LIPS). Служба унаследованной политики IPSec добавляет фильтры, определяющие сетевой трафик, для которого предполагается использование протоколов IPSec, таких как протокол инкапсуляции полезной нагрузки IP-пакета с целью защиты (ESP) и протокол заголовка аутентификации (АН). В качестве конкретного примера, унаследованная политика IPSec добавляет политику брандмауэра, указывающую, что все незатребованные входящие пакеты должны быть зашифрованы по протоколу ESP. Политика дополнительно обеспечивает то, что должен блокироваться любой незатребованный входящий пакет в виде открытого текста, т.е. незашифрованный пакет. Провайдеры 262 политик получают политику от любого подходящего источника, такого как данные в энергозависимой или энергонезависимой памяти, или графического пользовательского интерфейса (ГПИ, GUI), который позволяет администратору или пользователям системы непосредственно вводить политику. Средство 260 брандмауэра пользователя преобразует политику в новый фильтр, т.е. определяет политику в смысле условий фильтра и ассоциируемых действий, и добавляет новый фильтр в набор установленных фильтров 282.
Средство 260 брандмауэра пользователя также выполняет функции разрешения конфликтов и арбитража фильтров. Когда провайдер 262 политик предоставляет новую политику средству 260 брандмауэра режима пользователя, то средство брандмауэра пользователя определяет, конфликтует ли новый фильтр, вытекающий из новой политики, с любым из установленных фильтров 282. Пример способа идентификации и разрешения конфликтов, который пригоден для использования в структуре настоящего изобретения, описывается в заявке на патент США, озаглавленной «Method for Managing Network Filter Based Policy» (Способ управления политикой, основанной на фильтре), код поверенного 221037.
Архитектура дополнительно включает в себя ИПП 266 средства фильтра, который образует интерфейс между средством 260 брандмауэра режима пользователя и средством 256 брандмауэра ядра. ИПП 266 средства фильтра обеспечивает средство для средства 260 брандмауэра пользователя для добавления новых фильтров или удаления существующих фильтров из набора установленных фильтров 282 и проверки установленных фильтров 282, так что конфликты фильтров могут быть обнаружены и разрешены. ИПП 290 управления, доступный для провайдеров 262 политик, также обеспечивает механизм добавления и удаления фильтров из архитектуры.
Средство 260 брандмауэра режима пользователя также включает в себя модуль 294 фильтра. Модуль 294 фильтра представляет собой копию средства 256 брандмауэра ядра в режиме 250 пользователя. Копия модуля 294 фильтра в средстве 260 брандмауэра режима пользователя позволяет средству 260 брандмауэра пользователя дублировать службы средства 256 брандмауэра ядра для одного или нескольких процессов уровня режима пользователя, упоминаемых в этой заявке как уровни 282 режима пользователя. Уровни 282 режима пользователя добавляются аналогично тому, как создаются уровни режима ядра. Так как модуль 294 фильтра представляет собой соответствующую режиму пользователя копию средства 256 брандмауэра ядра, то понятно, что любая функциональная возможность, описанная в этой заявке для средства 256 брандмауэра ядра, также применима к модулю 294 фильтра.
ИПП 288 модуля ключей обеспечивает интерфейс между средством 260 политики пользователя и модулем 296 ключей. ИПП 288 модуля ключей используется для сигнализации модулю ключей о необходимости установления ассоциации защиты (АЗ, AS) (структуры данных, ассоциированной с защищенным соединением и определяющая его параметры безопасности).
Архитектура брандмауэра включает в себя политику 286 времени начальной загрузки и отказоустойчивую политику 264. Политика 286 времени начальной загрузки и отказоустойчивая политика 264 реализованы для обеспечения базового набора установленных фильтров 282, в то время как система находится в переходном состоянии, например, когда инициализируется сетевое устройство, например, оно включается, производится его сброс или повторный запуск. Во время переходного состояния существует время ожидания, во время которого не установлен режим 250 пользователя, и нельзя установить фильтры при помощи провайдеров 262 политик и средства 260 брандмауэра пользователя. В результате сетевое устройство уязвимо для воздействия злонамеренных атак, например, от незатребованных входящих пакетов. Политика 286 времени начальной загрузки находится в режиме 252 ядра и загружается в средство 256 брандмауэра ядра до того момента, когда будет установлен режим 250 пользователя. Политика 296 времени начальной загрузки обеспечивает базовый установленный фильтр 282, конфигурируемый для получения любых подходящих условий фильтра и ассоциируемых действий для защиты системы в переходном состоянии. Примером политики 286 времени начальной загрузки является случай, когда блокируются все входящие и исходящие сетевые пакеты.
Если установлен режим 250 пользователя, то переходное состояние продолжается, в то время как провайдеры 262 политик идентифицируют политику и выполняют попытку добавить установленные фильтры 282 в механизм 256 брандмауэра ядра. Когда режим 250 пользователя установлен, то средство 260 брандмауэра пользователя сначала загружает отказоустойчивую политику 264 в средство 256 брандмауэра ядра до того, как любая политика будет принята провайдерами 262 политик. Затем отключается политика 286 времени начальной загрузки. Аналогично политике 286 времени начальной загрузки отказоустойчивая политика 264 представляет собой базовый фильтр, предназначенный для защиты системы от атак во время переходного состояния, когда провайдеры политик и средство брандмауэра пользователя все еще находятся в процессе установки фильтров. Если провайдеры 262 политик успешно установили свои соответствующие фильтры на сетевом устройстве, то отключается отказоустойчивая политика 264.
Ниже описывается набор установленных фильтров 282 с ссылкой на фиг.4. Каждый фильтр 310 из набора установленных фильтров 282 имеет множество полей, включающих в себя идентификатор 312 фильтра, вес 314, одно или несколько действий 316, контекст 328 политики и набор условий 318 фильтра. Идентификатор 312 фильтра обеспечивает уникальную идентификацию фильтра. Идентификатор 312 фильтра используется, например, в качестве средства для того, чтобы средство 256 брандмауэра ядра возвратило информацию о фильтре соответствия средству 260 брандмауэра пользователя и вызовам 258. В варианте выполнения изобретения фильтр назначается одному из уровней в сетевом стеке 254. Идентификатор 312 фильтра используется средством 256 брандмауэра ядра для отслеживания того, какой фильтр назначен какому уровню.
Поле 314 веса включает в себя значение, которое идентифицирует приоритет фильтра 310. Чем больше значение в поле 314 веса, тем более высокий приоритет фильтра. Приоритет фильтра определяет порядок применения фильтров к пакету средством 256 брандмауэра ядра.
В варианте выполнения изобретения фильтр с наибольшим приоритетом, т.е. с наибольшим значением веса, применяется первым, затем применяется фильтр со следующим наивысшим приоритетом и т.д. до тех пор, пока не встретится фильтр соответствия с завершающим действием. Ниже подробно описаны завершающие действия. Если применяется фильтр соответствия с завершающим действием, то средство 256 брандмауэра ядра останавливает применение фильтров соответствия. Таким образом, действие 316, определенное фильтрами соответствия с меньшими приоритетами, не выполняется над пакетом после того, как было применено завершающее действие. Альтернативно, средство 256 брандмауэра идентифицирует отдельный фильтр соответствия и возвращает набор действий от этого отдельного фильтра соответствия.
Набор условий 318 фильтра определяет, соответствует ли пакет фильтру 310. Каждое условие 318 фильтра включает в себя тип 320, данные 322 и идентификатор уровня: идентификатор поля 324. Тип 320 определяет длину и количество переменных, включенных в соответствующие данные 322. Архитектура обеспечивает заранее определенные известные типы переменных, такие как Byte (байт), Short (короткий), Long (длинный), 8 Bytes (8 байт), String (строка), Internet Protocol version 4 (IPv4) Address (адрес Интернет-протокола версии 4 (IPv4)), Internet Protocol version 6 (IPv6) Address (адрес Интернет-протокола версии 6 (IPv6)), IPv4 Address plus Mask (адрес IPv4 плюс маска), IPv6 Address plus Mask (адрес IPv6 плюс маска) и Address Range (диапазон адресов).
Поле 322 данных включает в себя данные, соответствующие типу. Например, если типом является IPv4 Address, то допустимым значением для поля 322 данных является 32-разрядное число в диапазоне 00.00.00.00-255.255.255.255, выраженное в десятичном представлении с разделительными точками. В некоторых случаях тип 320 обеспечивает множество значений в поле 322 данных. Типы Address Range, IPv4 Address plus Mask и IPv6 Address plus Mask допускают два значения адресов IP, определяющих начало и окончание диапазона адресов IP. Для максимальной гибкости архитектура также допускает определяемые пользователем типы. Альтернативно, дополнительные типы добавляются вручную к архитектуре системы.
Идентификатор уровня: идентификатор поля 324 используется для идентификации инициирующего уровня и параметра от инициирующего уровня, соответственно. Инициирующий уровень и параметр от инициирующего уровня определяют параметры пакета, т.е. параметры уровня и контекст пакета, с которыми сравниваются данные 322 при идентификации фильтров соответствия. Инициирующий уровень идентифицирует уровень в сетевом стеке. Параметр от инициирующего уровня идентифицирует конкретный параметр, ассоциированный с инициирующим уровнем. Конкретный пример изображается условием 326 фильтра. Типом является IPv4, тем самым указывая, что данные 322 являются 32-разрядным адресом IP. Идентификатором уровня является «IP», представляя то, что 32-разрядное число представляет собой параметр уровня IP, т.е. сетевого уровня. Идентификатором поля является «Src IP Addr», которое в примере представляет адрес IP источника. Адресом IP, предусмотренным в поле 322 данных, является «123.3.2.1», что указывает, что любой пакет с таким адресом IP источника удовлетворяет условию фильтра, тем самым соответствуя фильтру. Фильтр 310 может включать в себя многочисленные условия 318 фильтра, в этом случае пакет соответствует фильтру 310, только если удовлетворяются все условия фильтра.
Действием 316 в фильтре 310 является разрешение, блокирование или вызов. Если действием 324 в фильтре 310 является разрешение или блокирование, и пакет соответствует фильтру 310, то действие разрешения или блокирования возвращается запрашивающему уровню при помощи средства 256 брандмауэра ядра. Если действием 316 является вызов, то средство 256 брандмауэра ядра выдает свой собственный запрос классификации, который включает в себя полный пакет, параметры уровня, контекст и идентификацию фильтра соответствия, на назначенный модуль 258 вызова. Модуль 258 вызова выполняет свою запрограммированную функцию над пакетом, например обнаружение вторжения. Вызов может возвратить действие (либо разрешение, либо блокирование) средству брандмауэра ядра, которое, в свою очередь, транслирует действие запрашивающему уровню. Вызов также может поддерживать контекст пакета, который аналогично возвращается запрашивающему уровню при помощи средства 256 брандмауэра ядра. Действием также может быть значение, такое как нулевое значение, указывающее, что не существует политики брандмауэра.
Действия обозначаются как завершающие и незавершающие. Если действие является завершающим и если такое действие идентифицировано для пакета, то действие возвращается запрашивающему уровню и к пакету не применяются никакие дополнительные фильтры. Если действие является незавершающим, то продолжаются поиски дополнительного фильтра до тех пор, пока не будет идентифицировано завершающее действие для пакета. По умолчанию разрешение и блокирование являются назначенными завершающими действиями.
Контекст 328 политики используется для хранения политики, отличной от политики брандмауэра, такой как политика защиты или политика QoS. Контекст политики представляет собой любую подходящую структуру данных. Например, контекстом политики является 64-разрядное число, которое интерпретируется процессом, который добавил контекст политики. Контекстом политики и/или действием может быть нулевое значение.
На фиг.5 изображен пример структуры 330 данных, используемой для контекста пакета, который поддерживается уровнями и передается на них в сетевом стеке 254 и модулях 258 вызова. Контекст 330 пакета сопровождает входящий или исходящий сетевой пакет, в то время как он проходит по уровням, и включает в себя один или несколько элементов, обозначенных 336-340. Каждый элемент включает в себя идентификатор уровня: идентификатор поля 332 и соответствующее значение 334.
Идентификатор уровня: идентификатор поля 332 имеет то же значение, что и идентификатор уровня: идентификатор поля 324, предусмотренный как часть условий 318 фильтра в фильтрах 310 (фиг.4). А именно, идентификатор уровня: идентификатор поля 322 идентифицирует инициирующий уровень и параметр уровня от инициирующего уровня для данных в поле 334 значения. Поле 334 значения включает в себя конкретный параметр уровня.
В качестве конкретного примера, элемент 336 включает в себя идентификатор уровня: идентификатор поля 332 «NDIS: Src. MAC Addr.». «NDIS» представляет реализацию спецификации интерфейса сетевого драйвера (СИСД) канального уровня 274 (фиг.1). «Src MAC addr.» представляет адрес МАС источника. Таким образом, идентификатор 332 уровня: поля указывает, что данными в поле 334 значения является адрес МАС источника, который был обработан (канальным) уровнем СИСД. Поле 334 значения включает в себя фактический адрес МАС источника, которым в примере является «00.08.74.4F.22.Е5», выраженный в шестнадцатеричном представлении.
В качестве второго примера, элемент 338 имеет идентификатор уровня: идентификатор поля 332 «NDIS:IF No». Он опять идентифицирует уровень в качестве СИСД, но в этом случае идентифицирует параметр как «IF No», представляющий номер интерфейса в качестве конкретного параметра СИСД. Поле 334 значения включает в себя фактический номер интерфейса, которым в данном случае является 2.
В качестве третьего примера, элемент 340 имеет идентификатор уровня: идентификатор поля 332 «IP:Dst IP Addr.». «IP» представляет сетевой уровень, использующий протокол IP, и «Dst IP Addr» представляет адрес IP назначения в качестве параметра уровня IP. Поле 334 значения включает в себя фактический адрес IP назначения «123.3.2.1.».
Описав лежащую в основе архитектуру брандмауэра настоящего изобретения, внимание обращается на функциональные интерфейсы системы и примерные способы, которые выполняются с использованием лежащей в основе архитектуры брандмауэра, описанной в этой заявке. Функциональные интерфейсы выполняются в виде множества интерфейсов прикладного программирования (ИПП). ИПП включают в себя ИПП 280 уровня, ИПП 284 вызовов, ИПП 266 средства фильтра и ИПП 288 модуля ключей, показанные на фиг.6 и 7.
ИПП 280 уровня способствует обмену данными между каждым из уровней в сетевом стеке 254 и средством 256 брандмауэра ядра. Как показано, ИПП 280 уровня включает в себя метод 402 Classify (классификации), метод 404 Add Layer (добавления уровня) и метод 406 Delete Layer (удаления уровня). ИПП 280 уровня также может выполняться в модуле 294 фильтра, способствуя осуществлению связи между уровнями пользовательского режима и модулем 294 фильтра.
Метод 402 Classify используется запрашивающим уровнем для посылки параметров уровня, пакета, принимаемого запрашивающим уровнем, и контекста пакета на средство 256 брандмауэра ядра. Средство 256 брандмауэра ядра сравнивает (1) параметры уровня от запрашивающего уровня и (2) элементы контекста пакета с условиями 318 фильтра в каждом фильтре 310, назначенном запрашивающему уровню для идентификации фильтров соответствия. Нижеследующее является примерным осуществлением метода Classify. Понятно, что следующие методы описываются как принимающие или возвращающие значения данных. В соответствии с известными способами программирования методы могут использовать указатели на значение данных вместо фактических значений данных.
NTSTATUS
WFPClassify
(
IN ULONG
LayerID,
IN WFP_INCOMING_VALUES*
pInFixedValues,
IN WFP_INCOMING_CONTEXT_VALUE*
pInContext,
PVOID
pPacket,
OUT WFP_ACTION_TYPE*
pActionType,
OUT UINT64*
pOutContext
)
Нижеследующее характеризует перечисленные параметры.
LayerId идентифицирует сетевой уровень, выдающий запрос классификации, т.е. запрашивающий уровень. Как показано на фиг.3, идентификатор уровня идентифицирует уровень в качестве уровня 268 потока данных, транспортного уровня 270, сетевого уровня 272 или канального уровня 274. Другие уровни действительны, если они добавлены к системе. Например, если добавлен уровень 276 SMB, то он имеет свою собственную уникальную идентификацию. Архитектура брандмауэра настоящего изобретения дополнительно разрешает реализации многочисленных протоколов на уровне в сетевом стеке 254. Например, стек имеет два транспортных уровня 270, первый транспортный уровень использует протокол TCP, а второй транспортный уровень использует протокол дейтаграмм пользователя (UDP). Также могут быть добавлены уровни 282 режима пользователя, таким образом формируя действительный уровень.
pInFixedValues включают в себя поднабор параметров уровня, обрабатываемых запрашивающим уровнем. pInFixedValues вместе с элементами контекста пакета сравниваются с условиями фильтра для определения того, соответствует ли пакет фильтру. Примеры параметров уровня по умолчанию, включенных в pInFixedValues для каждого уровня, указаны ниже в таблице А. Понятно, что следующие значения являются примерными только в качестве преимущества архитектуры в том, что она позволяет уровням использовать любые значения, доступные этому уровню.
Таблица А
Уровень
Параметры уровня по умолчанию
Канальный уровень
Адреса МАС источника и назначения;Номер интерфейса
Сетевой уровень
Адреса IP источника и назначения;Тип протокола; Тип локального адреса
Транспортный уровень
Номера порта источника и назначения;
Приложение
Дешифрованная полезная нагрузка протокола прикладного уровня
pInContext включает в себя структуру 330 данных контекста (фиг.5), принимаемую запрашивающим уровнем. Контекст пакета используется средством 256 брандмауэра ядра совместно с параметрами уровня для идентификации пакетов соответствия.
pPacket включает в себя весь пакет, принимаемый запрашивающим уровнем. pPacket не используется средством 256 брандмауэра ядра для идентификации фильтров соответствия. Как описано ранее, средство 256 брандмауэра ядра использует pInFixedValues и pInContext для идентификации фильтров соответствия. pPacket включается в метод Classify, так что средство 256 брандмауэра ядра может посылать его на один или несколько модулей 258 вызова, идентифицируемых как действие 316 в фильтрах соответствия.
pActionType включает в себя действие 316, которое возвращается запрашивающему уровню. Возвращаемым действием 316 является разрешение или блокирование, идентифицированное в фильтре соответствия, или модули вызова, исполняемые фильтром соответствия.
pOutContext включает в себя данные контекста политики. Как описано ранее, контекст политики используется для того, чтобы способствовать сетевым политикам, ассоциированным с IPSec, QoS и любой другой политикой, основанной не на фильтре брандмауэра.
Методы Add Layer 404 и Delete Layer 406 используются для добавления и удаления уровня из архитектуры брандмауэра соответственно. Нижеследующее является примерным видом метода Add Layer 404.
NTSTATUS
AddExtensionLayer(OUT PULONG pLayerId)
При этом нижеследующее характеризует перечисленные параметры.
pLayerId представляет собой уникальное значение идентификации уровня, возвращаемое добавляемому уровню, т.е. уровню, выполняющему метод Add Layer.
Нижеследующее является примерным видом метода Delete Layer 406.
NTSTATUS
RemoveExtensionLayer(ULONG LayerId)
При этом нижеследующее характеризует перечисленные параметры.
LayerId идентифицирует удаляемый уровень; т.е. уровень, выполняющий метод Delete Layer.
ИПП 284 вызовов способствует обмену данными между средством 256 брандмауэра ядра и вызовами 258. ИПП 284 вызовов включает в себя метод 410 Classify, метод 412 Notify (уведомления), метод 414 Register Callout (регистрации вызова) и метод 416 Deregister Callout (дерегистрации вызова). Метод 410 Classify ИПП 284 вызовов аналогичен методу 402 Classify ИПП 280 уровня за исключением того, что он также включает в себя данные фильтра соответствия. Нижеследующее является примерным видом метода 410 Classify, используемого для выполнения вызова.
typedef NTSTATUS (*WFP_CALLOUT_CLASSIFY_FN)
(
IN const WFP_INCOMING_VALUES*
fixedValues,
IN WFP_INCOMING_CONTEXT_VALUE*
wfpContext,
IN VOID*
packet,
IN WFP_FILTER*
matchedFilter,
OUT WFP_ACTION_TYPE*
action,
OUT UINT64*
outContext
)
При этом нижеследующее характеризует перечисленные параметры.
fixedValues включает в себя параметры уровня, посылаемые от запрашивающего уровня. fixedValues представляет собой те же данные, представляемые запрашивающим уровнем в данных pInFixedValues, посылаемых в виде части метода 402 Classify в ИПП 280 уровня.
wfpContext включает в себя структуру 330 данных контекста (фиг.5). Эти данные представляют собой те же данные, что и посылаемые запрашивающим уровнем в pInContext, посылаемом в виде части метода 402 Classify в ИПП 280 уровня.
packet включает в себя весь пакет, принимаемый запрашивающим уровнем. Эти данные представляют собой те же данные, что и посылаемые запрашивающим уровнем в pPacket, посылаемым в виде части метода 402 Classify в ИПП 280 уровня.
matched Filter идентифицирует фильтр, запрашивающий вызов. Обычно фильтр соответствия идентифицируется идентификатором 312 фильтра в фильтре 310 соответствия, инициирующем метод 410 Classify ИПП 284 вызовов.
pActionType включает в себя действие, которое возвращается средству 256 брандмауэра ядра из вызова 258. Если pActionType представляет собой разрешение или блокирование, то он возвращается запрашивающему уровню в качестве pActionType, возвращаемого ИПП 280 уровня. Вызов также может возвратить действие продолжения, которое предписывает средству 256 брандмауэра ядра продолжить применение фильтров соответствия к пакету.
pOutContext включает в себя данные контекста политики, такие как данные политики защиты или QoS.
Метод 412 Notify используется для уведомления вызова в том, когда фильтр 310 добавляется или удаляется из набора установленных фильтров 282, который идентифицирует в качестве одного из своих действий 316 модуль 258 вызова. Уведомление предоставляет вызову возможность предпринять любое требуемое действие, такое как выделение или освобождение буферов, которые будут использованы вызовом 258, когда он выполняется средством 256 брандмауэра ядра. Нижеследующее является примерным видом метода Notify.
typedef NTSTATUS (*WFP_CALLOUT_NOTIFY_FN)
(
IN WFP_NOTIFY_ENUM
notify,
IN WFP_FILTER*
filter
)
При этом нижеследующее характеризует перечисленные параметры.
notify включает в себя числовое значение, которое указывает, добавляется ли или удаляется фильтр. Например, значение 1 указывает, что фильтр добавляется, а значение 2 указывает, что фильтр удаляется.
filter идентифицирует добавляемый или удаляемый фильтр уникальным значением. Это может выполняться посредством создания идентификатора 312 фильтра, включенного в виде части фильтра 310.
Метод 414 Register Callout и метод 416 Deregister Callout используются для добавления и удаления модулей вызова соответственно. Примерный вид метода 414 Register:
NTSTATUS WfpRegisterCallout
(
IN const GUID*
calloutId,
IN const WFP_CALLOUT*
callout,
IN const SECURITY_DESCRIPTOR*
sd
)
При этом нижеследующее характеризует перечисленные параметры.
callout Id обеспечивает уникальную идентификацию для модуля регистрации вызова.
callout обеспечивает любую характерную для вызова информацию, такую как имя службы драйвера, имя устройства и указатели на функции классификации и уведомления вызова.
sd обеспечивает дескриптор защиты для вызова. Дескриптор защиты обеспечивает список управления доступом (СУД, ACL), который определяет, какие процессы могут модифицировать и удалять вызов.
Примерный вид метода 416 Deregister Callout следующий:
NTSTATUS WfpDeregisterCallout
(
IN const GUID*
calloutId
)
При этом нижеследующее характеризует перечисленные параметры.
callout Id представляет собой уникальный идентификатор вызова, подлежащего удалению.
ИПП 266 средства фильтра способствует обмену данными между средством 260 брандмауэра режима пользователя и средством 256 брандмауэра режима ядра. Как показано, ИПП 266 управления включает в себя метод 418 Add Filter (добавления фильтра), метод 420 Delete Filter (удаления фильтра) и метод 422 Enum Layer (перечисления уровней). Методы ИПП 266 средства фильтра также предусматриваются как часть ИПП 290 управления.
Методы Add Filter 418 и Delete Filter 418 используются для добавления нового фильтра к набору установленных фильтров 282 и удаления существующего фильтра из набора установленных фильтров 282 соответственно. Нижеследующее является примерным видом метода 418 Add Filter.
NTSTATUS
AddFilterToLayer
(
ULONG
LayerId,
WFP_FILTER*
pFilter
)
При этом нижеследующее характеризует перечисленные параметры.
LayerId идентифицирует уровень, которому назначен фильтр.
pFilter представляет собой фильтр 310, добавляемый к набору установленных фильтров 282.
Нижеследующее является примерным видом метода 420 Delete Filter.
NTSTATUS
DeleteFilterFromLayer
(
ULONG
LayerId,
ULONG
FilterId
)
При этом нижеследующее характеризует перечисленные параметры.
LayerId идентифицирует уровень, которому назначен фильтр.
pFilter представляет собой фильтр, удаляемый из набора установленных фильтров.
Метод 422 Enum Layer обеспечивает средство для средства 260 брандмауэра пользователя для идентификации всех фильтров, соответствующих набору критериев. Это позволяет ИПП средства фильтра идентифицировать конфликтующие фильтры для арбитража и разрешения конфликтов фильтров. Нижеследующее представляет собой примерный вид метода 422 Enum Layer.
LayerStartEnum
(
PWFP_ENUM_TEMPLATE
pEnumTemplate,
OUT PULONG
pMatchCount,
OUT PWFP_ENUM_HANDLE
pEnumHandle
)
При этом нижеследующее характеризует перечисленные параметры.
pEnumTemplate включает в себя структуру данных, определяющую фильтры, которые должны быть возвращены. Например, он включает в себя параметры, которым условия фильтра должны соответствовать для возвращаемого фильтра.
pMatchCount включает в себя количество соответствий фильтров, основанных на определенном pEnumTemplate.
pEnumHandle включает в себя ссылку на вводы фильтров соответствий.
ИПП 288 модуля ключей обеспечивает интерфейс между модулями ключей и средством 260 брандмауэра пользователя. ИПП 288 модуля ключей включает в себя метод 430 IPSec SA Acquire (сбора АЗ IPSec), метод 432 Expire Notify (уведомления об истечении) и метод 434 IPSec SA Acquire Complete (завершения сбора АЗ IPSec), метод 436 Keying Module Register (регистрации модуля ключей), метод 438 Keying Module Deregister (дерегистрации модуля ключей), метод 440 IPSec Inbound Get SPI (получения индекса параметров защиты (SPI) для входящего IPSec), метод 444 Add Inbound SA (добавления входящей АЗ), метод 446 Add Outbound SA (добавления исходящей АЗ), метод 448 Inbound SA Expire (истечения входящей АЗ) и метод 350 Keying Module Initiate (инициирования модуля ключей). ИПП 288 модуля ключей также может включать в себя методы, ранее описанные для ИПП уровня, такие как метод 402 Classify, метод 404 Add Layer и метод 406 Delete Layer.
ИПП модуля ключей используется для того, чтобы облегчить использование известных протоколов защиты, таких как определенные при помощи IPSec, используемые инициирующим компьютером и отвечающим компьютером. IPSec включает в себя протоколы, такие как AH и ESP. Протокол ESP представляет собой протокол аутентификации и шифрования, который использует криптографические средства для обеспечения целостности, аутентификации источника и конфиденциальности данных. Протокол АН представляет собой протокол аутентификации, который использует хэшированную подпись в заголовке пакета для проверки целостности пакетных данных и достоверности отправителя.
Протокол обмена ключами через Интернет (IKE) обеспечивает способ, согласно которому инициирующий компьютер и отвечающий компьютер согласовывают установки защиты, используемые с протоколами АH и TSP. Согласованные установки защиты формируют структуру данных, называемую ассоциацией защиты (АЗ). АЗ определяет параметры, такие как алгоритм аутентификации, алгоритм шифрования, ключи и продолжительность действия ключей, используемых ESP или АH для защиты содержимого пакета IP. Так как ESP и АH требуют установленной АЗ, то согласование IKE выполняется до того, как инициирующим и отвечающим компьютером используются протоколы ESP или АH. Заданная АЗ идентифицируется величиной, известной как индекс параметров защиты (SPI).
Каждый из инициирующего и отвечающего компьютеров включает в себя драйвер IPSec, который определяет, основываясь на политике IPSec, требуют ли шифрования или аутентификации данные, посылаемые между инициирующим и отвечающим компьютерами. Политика IPSec представляет собой набор фильтров, который определяет то, как сетевое устройство использует IPSec, и включает в себя списки фильтров, методы аутентификации и другую информацию. В варианте выполнения изобретения политика IPSec определяется фильтрами, включенными в набор установленных фильтров в средстве брандмауэра ядра или модуле 294 фильтра. Политика, которая применяется к пакету, идентифицируется посредством активирования уровня модуля ключей, который использует метод Classify для идентификации фильтров соответствия.
Метод 430 IPSec SA Acquire вызывается средством 260 брандмауэра пользователя (через посредника клиента) для передачи запроса драйвера или внешнего запроса инициирования, который уровень 282 режима пользователя реализовал в качестве уровня модуля ключей. Уровень модуля ключей возвращает это обращение и выполняет согласование асинхронно. Если уровень модуля ключей завершил согласование, то уровень модуля ключей выполняет обращение к методу 343 IPSec SA Acquire Complete для уведомления средства 260 политики пользователя о том, что согласование завершено. Нижеследующее является примерным видом метода IPSec SA Acquire.
typedef WIN32_ERR (*PROCESS_IPSEC_SA_ACQUIRE0)
(
IN FWP_IPSEC_ACQUIRE_CONTEXT0
ipsecContext,
IN const FWP_IPSEC_SA_ACQUIRE0*
acquire,
IN FWP_IPSEC_SPI
inboundSAspi
)
При этом нижеследующее характеризует перечисленные параметры.
ipsecContext представляет собой указатель для связи запроса с добавляемой АЗ.
acquire включает в себя необходимую информацию для согласования АЗ согласно известным протоколам, таким как IKE.
inboundSAspi включает в себя SPI, который используется для входящей АЗ.
Выполняется обращение к методу 432 Expire Notify для передачи уведомления об истечении на уровень модуля ключей, который добавил входящую АЗ. Нижеследующее является примерным видом метода Expire Notify.
typedef VOID (*PROCESS_IPSEC_SA_EXPIRE0)
(
IN const FWP_IPSEC_SA_EXPIRE_NOTIFY0*
expireNotify
)
При этом нижеследующее характеризует перечисленные параметры.
expireNotify содержит информацию, идентифицирующую истекающую АЗ. Например, в случае исходящей АЗ предоставляется SPI.
Уровень модуля ключей обращается к методу 434 IPSec SA Acquire Complete для закрытия контекста средства брандмауэра пользователя, после того как он закончил согласование и добавил все АЗ, или он встретил ошибку. После выполнения этого метода уровень модуля ключей не использует повторно ipsecContext ни для какого другого метода ИПП. Нижеследующее является примерным видом метода IPSec SA Acquire Complete.
WIN32_ERR
FwpIPSecSAAcquireComplete0
(
IN FWPM_ENGINE_HANDLE
engineHandle,
IN FWP_IPSEC_ACQUIRE_CONTEXT0
ipsecContext,
IN const FWP_IPSEC_NEGOTIATION_STATUS0*
status
)
При этом нижеследующее характеризует перечисленные параметры.
engineHandle обеспечивает указатель на средство 260 брандмауэра пользователя.
ipsecContext представляет собой контекст, передаваемый средством брандмауэра пользователя при помощи метода IPSec Acquire.
status обеспечивает состояние и другие подробности согласования АЗ. Состояние возвращается средством 260 брандмауэра пользователя, если запрос был инициирован внешним образом посредством FwpKeyingModuleInitiate0.
Уровень модуля ключей обращается к методу 436 Keying Module Register для регистрации средством 260 брандмауэра пользователя и передачи его указателей на функции. Нижеследующее является примерным видом метода Keying Module Register.
WIN32_ERR
FwpKeyingModuleRegister0
(
IN FWPM_ENGINE_HANDLE
engineHandle,
IN const GUID*
keyingModuleID,
IN const FWP_KEYING_MODULE_INFO0*
keymodInfo
)
При этом нижеследующее характеризует перечисленные параметры.
engineHandle обеспечивает указатель на средство 260 брандмауэра пользователя.
keyingModuleID представляет собой уникальный идентификатор для уровня модуля ключей.
keymodInfo включает в себя регистрационную информацию об уровне модуля ключей, такую как указатели на функции процесса IPSec SA Acquire и процесса IPSec SA Expire.
Уровень модуля ключей обращается к методу 438 Keying Module Deregister для дерегистрации модуля ключей из средства 260 брандмауэра пользователя. Нижеследующее является примерным видом метода Keying Module Deregister.
WIN32_ERR
FwpKeyingModuleDeregister0
(
IN FWPM_ENGINE_HANDLE
engineHandle,
IN const GUID*
keyingModuleID
)
При этом нижеследующее характеризует перечисленные параметры.
engineHandle представляет собой указатель на средство 260 брандмауэра пользователя.
keyingModuleID представляет собой уникальный идентификатор уровня модуля ключей.
Уровень модуля ключей обращается к методу 440 IPSec Inbound Get SPI для получения SPI для новой входящей АЗ. Метод 440 IPSec Inbound Get SPI обычно используется тогда, когда уровень модуля ключей выполняется в отвечающем сетевом устройстве. Нижеследующее является примерным видом метода IPSec Inbound Get SPI.
WIN32_ERR
FwpIPSecSAInboundGetSpi0
(
IN FWPM_ENGINE_HANDLE
engineHandle,
IN const FWP_IPSEC_TRAFFIC0*
ipsecTrafficDescriprion,
IN const FWP_IPSEC_UDP_ENCAP0*
udpEncapInfo
OUT FWP_IPSEC_SPI*
inboundSpi
)
При этом нижеследующее характеризует перечисленные параметры.
engineHandle представляет собой указатель на средство 260 брандмауэра пользователя.
ipsecTrafficDescription представляет собой 5-кортежное описание для создания входящей АЗ в «личиночном» состоянии. 5 кортежей включают в себя адреса IP источника и назначения, порты источника и назначения и тип протокола транспортного уровня.
udpEncapInfo представляет собой данные инкапсуляции UDP для создания АЗ в «личиночном» состоянии. Инкапсуляция UDP является известным способом заключения пакета, отформатированного в соответствии с протоколом защиты, в незашифрованный пакет UDP.
inboundSpi представляет собой SPI для входящей АЗ.
Уровень модуля ключей обращается к методу 444 Add Inbound SA для добавления входящей АЗ, т.е. обновления АЗ в «личиночном» состоянии. Средство 260 брандмауэра пользователя использует SPI в АЗ для отображения этого обращения на ее внутреннее состояние и управления вводом-выводом АЗ в драйвер IPSec. Нижеследующее является примерным видом метода Add Inbound SA.
WIN32_ERR
FwpIPSecSAInboundAdd0
(
IN FWPM_ENGINE_HANDLE
engineHandle,
IN const FWP_IPSEC_SA_STRUCT0*
inboundSA
)
При этом нижеследующее характеризует перечисленные параметры.
engineHandle представляет собой указатель на средство 260 брандмауэра пользователя.
inboundSA включает в себя входящую АЗ.
Уровень модуля ключей обращается к методу Add Outbound SA 446 для добавления исходящей АЗ. Средство брандмауэра пользователя использует параметр входящего SPI для отображения этого обращения на ее внутреннее состояние и управления вводом-выводом АЗ в драйвер IPSec. Нижеследующее является примерным видом метода Add Outbound SA.
WIN32_ERR
FwpIPSecSAOutboundAdd0
(
IN FWPM_ENGINE_HANDLE
engineHandle,
IN FWP_IPSEC_SPI
inboundSpi,
IN const FWP_IPSEC_SA_STRUCT0*
outboundSA
)
При этом нижеследующее характеризует перечисленные параметры.
engineHandle представляет собой указатель на средство 260 брандмауэра пользователя.
inboundSpi представляет собой SPI для входящей АЗ, с которой исходящая АЗ образует пару.
outboundSA включает в себя исходящую АЗ.
Уровень модуля ключей обращается к методу 448 Inbound SA Expire для истечения входящей АЗ, которая ранее была добавлена. Нижеследующее является примерным видом метода 448 Inbound SA Expire.
WIN32_ERR
FwpIPSecSAInboundExpire0
(
IN FWPM_ENGINE_HANDLE
engineHandle,
IN const FWP_IPSEC_SA_EXPIRE0*
expire
)
При этом нижеследующее характеризует перечисленные параметры.
engineHandle представляет собой указатель на средство 260 брандмауэра пользователя.
expire включает в себя данные для АЗ, подлежащей истечению.
К методу 450 Keying Module Initiate обращаются известные внешние приложения, такие как служба удаленного доступа (RAS), ИПП Winsock API и т.п. для инициирования уровня модуля ключей и установки АЗ до того как приложение начнет посылать свой сетевой трафик. Средство 260 брандмауэра пользователя асинхронно ожидает обращение к вызову удаленной процедуры (RPC), получает SPI из драйвера IPSec и передает сбор на соответствующий модуль ключей. Если уровень модуля ключей обращается к FwpIPSecSAAcquireComplete0, то средство брандмауэра пользователя завершает асинхронный RPC с состоянием согласования. Нижеследующее является примерным видом метода Keying Module Initiate.
WIN32_ERR
FwpKeyingModuleInitiate0
(
IN FWPM_ENGINE_HANDLE
engineHandle,
IN const FWP_IPSEC_SA_ACQUIRE0*
acquire,
IN HANDLE
waitEvent,
OUT FWP_IPSEC_NEGOTIATION_STATUS0*
negotiationStatus
)
При этом нижеследующее характеризует перечисленные параметры.
engineHandle представляет собой указатель на средство 260 брандмауэра пользователя.
acquire включает в себя данные, необходимые для согласования АЗ.
waitEvent представляет собой указатель на событие, которое запускается тогда, когда доступно состояние согласования. Если клиент, т.е. вызывающее внешнее приложение, не заинтересован в ожидании завершения согласования, он может установить этот параметр в NULL. Внутренним образом посредник клиента в необязательном порядке передает это событие на RPC и запрашивает его установить событие, как только завершится асинхронное обращение к RPC.
negotiationStatus включает в себя результат согласования. negotiationStatus равен NULL, если waitEvent равен NULL. Иначе negotiationStatus остается действительным до тех пор, пока не запустится waitEvent.
На фиг.8 изображены методы, используемые уровнями в сетевом стеке 254 в соответствии с настоящим изобретением. Метод, изображенный на фиг.8, также может быть использован одним или несколькими уровнями 282 режима пользователя во взаимодействии с модулем 294 фильтра и средством 260 брандмауэра пользователя.
Каждый уровень обладает множеством функций, включая обработку сетевых пакетов, выдачи запросов классификации на средство 256 брандмауэра ядра и управление контекстом пакета. В варианте выполнения изобретения эти функции выполняются на каждом из уровней в прослойке 460, 462, 464, 466, установленной в сетевом стеке 254. Альтернативно, эти функциональные возможности непосредственно встроены в отдельные уровни без необходимости прослоек.
Сетевой стек 254 включает в себя уровень 268 потока данных, транспортный уровень 270, сетевой уровень 272 и канальный уровень 274. С целью иллюстрации настоящего изобретения канальный уровень 274 осуществлен в виде драйвера СИСД, сетевой уровень 272 осуществлен в виде уровня IP, транспортный уровень 270 осуществлен в виде уровня ТСР, и уровень 268 потока данных осуществлен в виде уровня НТТР. Понятно, что уровни могут быть осуществлены в соответствии с любым протоколом. Например, транспортный уровень также обеспечивает протокол дейтаграмм пользователя (UDP). Прикладной уровень поддерживает протокол передачи файлов (ТТР), вызов удаленных процедур (RPC), простой протокол передачи почты (SMTP), протокол блока серверных сообщений (SMB) и т.д. Как описано ранее, дополнительные уровни могут быть добавлены к архитектуре, и уровни могут быть удалены. Например, уровни добавляются и удаляются с использованием методов Add Layer и Delete Layer, описанных с ссылкой на фиг.6.
Сетевой пакет, обозначенный 468(а)-(d), изображает сетевой пакет, когда он проходит и обрабатывается уровнями в сетевом стеке 254. Если пакет 468(а)-(d) является входящим пакетом, то он проходит сетевой стек снизу вверх. Если пакет 468(а)-(d) является исходящим пакетом, то он проходит сетевой стек сверху вниз. Хотя такая обработка хорошо известна, она кратко описывается для цели иллюстрации настоящего изобретения.
Предполагая, что приложение, выполняющееся на сетевом устройстве, такое как web-браузер, инициирует запрос на содержимое web-страницы, расположенной на другом сетевом устройстве, приложение выдает запрос на уровень 268 потока данных. В этом примере, поток 264 данных форматирует запрос согласно протоколу НТТР и посылает запрос на транспортный уровень в пакете 468(а). Транспортный уровень 270 принимает пакет 468(а). Транспортный уровень 270, который реализует протокол ТСР, размещает данные в одном или нескольких пакетах, и каждый пакет снабжается заголовком ТСР. Заголовок ТСР включает в себя информацию, такую как порты источника и адресата, тип протокола, т.е. ТСР, номера последовательности, флаги и контрольные суммы. Транспортный уровень затем посылает пакет, обозначенный 468(b), на сетевой уровень.
Сетевой уровень реализует протокол IP и инкапсулирует данные в заголовок IP, который включает в себя адреса IP источника и адресата, флаги, контрольные суммы и другую известную информацию. Заголовок IP также указывает, является ли пакет фрагментированным. Пакет фрагментирован, когда размер пакета IP превышает максимальный размер передаваемого блока (МTU) для сетевой технологии, используемой для передачи пакета. Например, технология Ethernet определяет, что МTU составляет 1500 байтов. Если длина пакета IP превышает МTU, то он фрагментируется на два или более пакетов IP, причем каждый со своим собственным заголовком IP, все из которых имеют длину, равную или меньшую по сравнению с МTU.
В варианте выполнения изобретения сетевой уровень делится на первый и второй уровни. Первый уровень, упоминаемый как фрагментный уровень, обрабатывает фрагменты пакетов IP. Второй уровень, упоминаемый как уровень полной сборки, обрабатывает полные пакеты IP, например, перед тем как исходящие пакеты IP фрагментируются и после того как входящие пакеты IP повторно собираются в единый пакет IP. Вслед за обработкой сетевым уровнем и возможной фрагментацией пакет 468(с) посылается на канальный уровень 274. Канальный уровень 274 дополнительно пакетирует данные посредством создания заголовка МАС с адресами МАС источника и адресата, а также с другой информацией. Пакет затем посылается на плату сетевого интерфейса (ПСИ, NIC), где он физически передается в сеть.
Входящие пакеты обрабатываются в обратном порядке. Пакет 468(d) принимается ПСИ и посылается на канальный уровень 274. Удаляется заголовок МАС, и пакет 468(с) посылается на сетевой уровень, где происходит повторная сборка фрагментов пакета IP, если необходимо, и синтаксически анализируется заголовок IP. Сетевой уровень затем посылает пакет 468(b) на транспортный уровень, где удаляется TCP и, если поток данных посылался во множестве пакетов TCP, происходит повторная сборка потока данных. Наконец, поток 468(а) данных посылается на уровень 268 потока данных, где данные расшифровываются протоколом прикладного уровня, в данном случае протоколом HTTP.
Для каждого исходящего пакета уровни сетевого стека поддерживают контекст 470(а)-(с) пакета. Для каждого входящего пакета уровни сетевого стека поддерживают контекст 472(а)-(с) пакета. Контекст пакета сопровождает каждый пакет, когда он проходит по сетевым уровням. Контекст пакета также передается вызовам 258 (фиг.1) и может ими модифицироваться.
Контекст пакета обновляется, когда пакеты обрабатываются на каждом уровне. Каждый уровень добавляет свои параметры уровня к контексту пакета, таким образом предоставляя эту информацию последующим уровням или процессам. Как показано, канальный уровень 274 добавляет адреса МАС источника и адресата и номер интерфейса для входящего пакета, что иллюстрируется контекстом 472(а). Этот контекст принимается сетевым уровнем 272, который добавляет адреса IP источника и адресата, что иллюстрируется контекстом 472(b). Транспортный уровень 266 принимает контекст и добавляет номера портов, что иллюстрируется контекстом 472(а).
Аналогичный процесс происходит для контекста 470(а)-(с), ассоциированного с исходящими пакетами. Уровень 268 потока данных добавляет информацию, такую как адрес УУР из полезной нагрузки пакета, что иллюстрируется контекстом 470(а), транспортный уровень 270 дополнительно добавляет номера портов источника и адресата, что иллюстрируется контекстом 470(b), и сетевой уровень добавляет адреса IP источника и адресата, что иллюстрируется контекстом 470(с).
Понятно, что каждый уровень может добавлять любую информацию контекста, доступную для этого уровня. Обычно она включает в себя любую информацию, которую уровень должен обрабатывать, т.е. добавлять или синтаксически анализировать или иным образом получать из пакетов.
Когда пакет и его соответствующий контекст принимаются на каждом уровне, уровень функционирует как запрашивающий уровень посредством идентификации параметров уровня и посылки запроса классификации, обозначенного позицией 474. Запрос 474 классификации включает в себя параметры 476 уровня, контекст 478 пакета, принимаемый от предыдущего уровня, и полный пакет 480. Иллюстративным методом, используемым для выдачи запроса классификации, является метод 402 Classify, описанный с ссылкой на ИПП 280 уровня (фиг.7).
В ответ на каждый запрос классификации средство 256 брандмауэра режима ядра сравнивает параметры 476 уровня и контекст 478 пакета с условиями 318 фильтра (фиг.4) фильтров, назначенных запрашивающему уровню. Средство 256 брандмауэра ядра посылает ответ, обозначенный позицией 482, с действием 484 из фильтров 310 соответствия с наибольшим весом 314 на запрашивающий уровень. Средство 256 брандмауэра ядра также возвращает контекст 482 политики. Если средством 256 брандмауэра ядра не идентифицирован никакой фильтр соответствия, то средство брандмауэра ядра уведомляет запрашивающий уровень, что не существует никаких фильтров соответствия. Средство 256 брандмауэра ядра продолжает идентифицировать фильтры соответствия до тех пор, пока фильтр соответствия не будет обозначать завершающее действие, т.е. разрешение или блокирование, или до тех пор, пока не будут проверены все фильтры, назначенные запрашивающему уровню, в зависимости от того, какое из перечисленных условий выполнится первым. Альтернативно, средство 256 брандмауэра ядра идентифицирует все соответствия и возвращает действия на запрашивающий уровень в одном ответе.
Как, в основном, показано, идентификация параметров уровня выполняется как часть нормальной обработки уровня, выполняемой уровнями сетевого стека 254. Не требуется дополнительный синтаксический анализ пакета, в результате чего минимизируется влияние на рабочие характеристики системы. Кроме того, так как уровни взаимодействуют при поддержании контекста пакета, то можно, чтобы средство 256 брандмауэра сравнивало условия фильтра с параметрами пакета на уровнях, которые обычно не имеют доступа к этим параметрам пакета. Например, сетевой уровень 268 принимает контекст для входящих пакетов от канального уровня 274, который включает в себя адреса МАС источника и адресата. Так как сетевой уровень 272 выдает запросы классификации с параметрами сетевого уровня, например, адресами IP источника и адресата, а также с контекстом пакета, средство 256 брандмауэра ядра может фильтровать адреса как IP, так и МАС на сетевом уровне 272, даже если адреса МАС обычно недоступны.
Как показано на фиг.9, ниже описывается иллюстративный набор модулей 258 вызова, включенных в архитектуру брандмауэра настоящего изобретения. Модули 258 вызова включают в себя вызов 500 контекста НТТР, вызов 502 обнаружения вторжения, вызов 504 IPSec и вызов 506 записи в журнал регистрации. НПП 284 вызовов образует интерфейс между средством 256 брандмауэра ядра и вызовами 258.
Вызов 500 контекста НТТР поддерживает кэш 508 допустимых или, альтернативно, недопустимых адресов УУР. Вызов 508 контекста НТТР периодически обращается к серверу 510, служащему в качестве интерфейса к сети общего пользования, который поддерживает адреса УУР и классифицирует их как допустимые или недопустимые. Когда средство 256 брандмауэра ядра выполняет вызов контекста НТТР, вызов исследует пакет, расшифровывает адрес УУР, если это необходимо, и определяет, является ли он допустимым, основываясь на информации в кэше 508. Вызов НТТР затем возвращает разрешение в качестве действия 316, если адрес УУР является допустимым, и блокирование, если адрес УУР является недопустимым, на средство 256 брандмауэра режима ядра, который, в свою очередь, возвращает действие 316 запрашивающему уровню через ИПП 280 уровня. Вызов контекста НТТР является полезным при выполнении функции родительского контроля.
Вызов 502 обнаружения вторжения использует имеющиеся алгоритмы и методы для исследования пакета с целью идентификации признаков наличия вирусов или подозрительных в другом отношении пакетов. Если обнаруживается подозрительный пакет, то возвращается действие 316 блокирования. Примером подозрительного пакета является пакет, в котором все флаги в заголовках IP и TCP установлены в значение единицы. Пакет является подозрительным, потому что он не может быть действительным и может обозначать сигнатуру атаки. Альтернативно, вызов 502 обнаружения вторжения модифицирует контекст пакета, отмечая подозрительную сущность пакета, таким образом откладывая принятие решения в отношении блокирования пакета для последующих уровней в сетевом стеке.
Вызов 504 IPSec предназначен для определения того, был ли к пакету применен надлежащий протокол защиты. Вызов 504 IPSec осуществляет связь с процессом IPSec и определяет, основываясь на политике IPSec, должен ли был пакет быть подвергнут обработке IPSec. Если это так, то вызов 504 IPSec проверяет, основываясь на контексте пакета, подвергался ли, в действительности, пакет обработке IPSec. Если пакет должен был быть обработан согласно IPSec, но не обрабатывался, например, пакет был в виде открытого текста, то возвращается действие блокирования. Если пакет подвергался обработке IPSec, то вызов IPSec удостоверяется в том, что была применена надлежащая ассоциация защиты (АЗ). Если не была применена надлежащая АЗ, то вызов возвращает действие 316 блокирования, в противном случае возвращается действие 316 разрешения. Альтернативно, вызов IPSec модифицирует контекст пакета, откладывая принятие решения в отношении блокирования или разрешения передачи для последующего уровня.
Вызов 506 записи в журнал регистрации используется для сохранения информации, относящейся к пакету, такому как полный пакет, для последующего использования. Таким последующим использованием может быть, например, диагностика некоторого сетевого трафика, который неожиданно не проходит по сети, потому что он блокируется, или для отслеживания злонамеренных атак на систему.
Все ссылки, приведенные в этой заявке, включены в эту заявку во всей их полноте посредством ссылки.
Принимая во внимание многие возможные варианты выполнения, к которым могут быть применены принципы настоящего изобретения, необходимо понять, что вариант выполнения, описанный в этой заявке в отношении чертежей, как подразумевается, является исключительно иллюстративным и не должен рассматриваться как ограничивающий объем изобретения. Например, для специалиста в этой области техники понятно, что элементы изображенного варианта выполнения, показанные в виде программного обеспечения, могут быть выполнены аппаратными средствами, и наоборот, или что изображенный вариант выполнения может быть модифицирован в устройстве и деталях в пределах сущности изобретения. Поэтому, в изобретении, описанном в этой заявке, рассматриваются все такие варианты выполнения, которые могут подпадать под объем, определяемый следующей формулой изобретения и ее эквивалентами.