PROJECT OVERVIEW
Ведение
Архитектура встраиваемой операционной системы PyrOS для устройств класса межсетевых экранов строится на принципах модульности и расширяемости, что позволяет независимо разрабатывать отдельные модули системы, наращивать возможности аппаратного межсетевого экрана в зависимости от требований рынка, заказчиков и конфигурации аппаратных средств.
Встраиваемая операционная система PyrOS разработана с учетом требований, предъявляемых к межсетевым экранам четвертого класса согласно руководящему документу Гостехкомиссии РФ «Средства вычислительной техники. Межсетевые экраны. Защита от несанкционированного доступа к информации. Показатели защищенности от несанкционированного доступа к информации».
Структура операционной системы PyrOS
Ядро операционной системы PyrOS включает:
- диспетчер процессов, обеспечивающий запуск и выполнения процессов системы управления и дополнительных модулей;
- драйвера устройств: сетевых адаптеров, последовательных интерфейсов, внешних накопителей (флеш-диск, HDD), ускорителя VPN, xDSL модемов;
- сетевой стек, обеспечивающий работу сетевых протоколов, включающий модули поддержки VLAN и протоколов IPSEC;
- таблицу маршрутизации, на основе которой принимаются решения по выборке интерфейса для передачи сетевого пакета;
- пакетный фильтр, включающий модуль трансляции адресов (NAT);
- модуль файловой системы.
Дополнительно в состав операционной системы входят загрузчики, осуществляющие первоначальную загрузку ядра, системные процессы загрузки системы управления и дополнительные модули.
Общее описание архитектуры PyrOS
На рис. 1 представлена архитектура ОС PyrOS. Основными компонентами которой являются:
- ядро операционной системы;
- система управления;
- дополнительные модули.
Ядро операционной системы обеспечивает:
- запуск системных процессов управления;
- поддержку файловой системы для хранения загружаемых модулей и конфигурационных файлов;
- прием, передачу, маршрутизацию IP-пакетов;
- фильтрацию IP-пакетов;
- трансляцию сетевых адресов (механизм NAT).
Система управления предоставляет администратору средства для настройки конфигурации и отслеживания состояния межсетевого экрана. Управление межсетевым экраном производится с помощью интерфейса командной строки, либо через web-интерфейс. В систему управления так же входят: модуль проверки целостности программного обеспечения и конфигурационных файлов, модуль регистрации, модуль обновления встроенного программного обеспечения межсетевого экрана.
Дополнительные модули обеспечивают:
- поддержку протоколов динамической маршрутизации RIP, RIP2, OSPF;
- организацию виртуальных частных сетей (VPN);
- организацию работы DHCP-сервера и DHCP-прокси;
- поддержку DNS-прокси сервера;
- протокол синхронизации времени в сети (NTP);
- учет трафика, проходящего через межсетевой экран;
- обнаружение сетевых атак;
- фильтрацию трафика прикладных протоколов (HTTP, FTP, SMTP);
- генерацию и управление сертификатами, которые используются в протоколах TLS и IPSEC;
- авторизацию клиентов межсетевого экрана через сервер авторизации по протоколу RADIUS;
поддержку мониторинга состояния межсетевого экрана по протоколу SNMP.
Пакетный фильтр
В ОС PyrOS используется фильтр IP-пакетов PF, входящий в состав ядра операционной системы. Его основные возможности:
- отслеживание состояния соединений (stateful firewall);
- встроенный механизм трансляции адресов и портов, режимы трансляции: NAT, PAT, BINAT, redirection;
- поддержка таблиц и пулов (наборов) адресов;
- механизм нормализации трафика (scrub);
- встроенная маршрутизация пакетов;
- ограничение пропускной способности и приоритезация трафика;
- регистрация пакетов, попавших под правило фильтрации;
- механизмы синхронизации состояний межсетевых экранов;
- распознавание типа операционной системы, передающей IP-пакеты.
Тракт прохождения пакетов через фильтр PF показан на рис. 2:
- после получения IP-пакета с сетевого интерфейса и проверки правильности заголовка, пакет передается в фильтр PF, на входе которого пакет проверяется на наличие запрещенных комбинаций флагов TCP, производится сборка фрагментированных пакетов (механизм scrub);
- производится проверка пакета на соответствие ранее созданной сессии (по адресам/портам отправителя и получателя), если пакет принадлежит известной сессии, то он пропускается далее, не проверяясь правилами фильтрации (механизм stateful firewall), что значительно увеличивает пропускную способность фильтра;
- для пакетов протокола TCP производится дополнительная обработка:
- SYN-прокси – ожидание ответа клиента на подтверждение запроса установления TCP соединения, для защиты внутренних серверов сети от SYN-flood атак;
- модуляция – формирование случайного начального номера последовательности TCP пактов для уменьшения вероятности распознавания вида сетевого стека клиентских систем;
- если не найдено подходящей сессии, пакет пропускается через правила трансляции адресов redirection (rdr) и binat, которые по заданным правилам преобразуют адрес (порт) получателя пакета;
- если в командах трансляции явно не указан пропуск фильтрации (pass), после трансляции адресов пакет пропускается через фильтр;
- при блокировке пакета правилами фильтрации, он отбрасывается, отправителю пакета в ответ ничего не посылается,
- при удачном прохождении фильтра создается новая сессия, пакет помечается для обработки в очереди механизма приоритезации трафика;
- если в правиле фильтрации задана необходимость регистрация пакета, попавшего под данное правило, пакет передается на регистрацию;
- если заданы правила маршрутизации, пакет обходит стандартные механизмы маршрутизации в ядре операционной системы
- после обработки пакета фильтром, в ядре определяется необходимость его дальнейшей передачи, исходя из текущей таблицы маршрутизации и локальных адресов, если пакет предназначен локальной системе, то он передается на верхние уровни стека, иначе по таблице маршрутизации определяется интерфейс для дальнейшей передачи пакета;
- исходящий пакет нормализуется (scrub): производится сборка фрагментов, подставляется случайный идентификатор IP-пакета, для TCP-пакетов устанавливается максимальное значение поля TTL IP-заголовка;
- если пакет принадлежит ранее установленной сессии, он минует фильтр, иначе пакет пропускается через механизм трансляции адресов nat и binat, правила фильтрации и генерирует новую сессию;
- исходящий пакет помечается для обработки механизмом приоритезации трафика и регистрируется;
при включенном механизме ограничения пропускной способности и приоритезации трафика (altq) пакет ставится в очередь исходящих пакетов, в соответствии с ранее полученным тегом. В зависимости от заданных параметров очереди, в которую он был помещен, а также заданного алгоритма диспетчеризации, пакет будет задержан, отброшен или передан немедленно.
Архитектура системы управления
Управление межсетевым экраном производится посредством:
- интерфейса командной строки на локальной консоли, подключаемой через последовательный интерфейс RS-232;
- интерфейса командной строки по протоколу SSH;
- WEB-интерфейса по протоколу HTTPS;
- локальной консоли с LCD и клавиатурой на корпусе межсетевого экрана.
Архитектура системы управления ОС PyrOS представлена на рис. 3. Система управления межсетевым экраном строится по модульному принципу и состоит из следующих компонент:
- менеджер ресурсов fwctl, основной компонент, организующий управление системными ресурсами;
- командный интерпретатор fwsh, организующий интерфейс командной строки;
- сервер sshd, и сервер терминалов getty, которые служат для запуска командного интерпретатора fwsh;
- модуль управления миниконсолью fwlcd;
- модуль регистрации fwlog, ведущий локальные файлы регистрации и передающий информацию на удаленные сервера регистрации;
- модуль проверки целостности fwcheck, проверяющий целостность программного обеспечения и конфигурационных файлов межсетевого экрана при его запуске;
- модуль обновления программного обеспечения fwupdate, организующий процесс загрузки и установки новых версий программного обеспечения межсетевого экрана.
Разбиение системы управления на отдельные модули позволяет упростить разработку и поддержку всей системы, т.к. в системе управления применяются различные разнородные пользовательские интерфейсы, однако требует разработки протоколов для организации взаимодействия между отдельными модулями.
Менеджер ресурсов
Система управления строится на базе архитектуры менеджера ресурсов и клиентов, которые работают с ресурсами. На рис. 4 представлена классическая схема менеджера ресурсов. Клиенты по протоколу клиент – менеджер открывают сессию с менеджером ресурсов и через примитивы управления управляют системными ресурсами. Менеджер ресурсов транслирует примитивы управления, полученные от клиентов, в системные вызовы ядра или непосредственно обращается к аппаратным ресурсам системы. Данная архитектура позволяет скрыть от пользовательских процессов все взаимодействие с аппаратурой и ядром операционной системы и вынести системно – независимые части программного обеспечения в отдельные модули.
Менеджер ресурсов fwctl осуществляет управление ресурсами, которые представляют собой наборы данных для управления каждым компонентом (модулем) межсетевого экрана. В таблице 1 представлены ресурсы fwctl и относящиеся к ним команды управления интерфейса командной строки.
Классическая схема построения менеджера ресурсов подразумевает использование в качестве протокола клиент – менеджер системные вызовы open(2), read(2), write(2), close(2), использующих в качестве идентификаторов сессий файловые дескрипторы. Это позволяет максимально упростить протокол взаимодействия и тем самым упростить построение клиентских процессов. Однако в ОС FreeBSD (и других BSD системах) подобные менеджеры ресурсов строятся в виде модулей ядра, что значительно усложняет разработку менеджера ресурса и понижает надежность системы из-за переноса пользовательского кода на уровень ядра. По этой причине решено строить менеджер ресурсов в виде отдельного серверного процесса, при этом в качестве интерфейса клиент – менеджер выбран протокол HTTP. Данный протокол выбран исходя из следующих соображений:
- протокол должен быть стандартизирован, разработка собственных протоколов потребует дополнительных затрат;
- реализация протокола HTTP внутри менеджера ресурсов позволяет отказаться от WEB-сервера в виде отдельного процесса, что уменьшает количество протоколов в системе (отсутствует протокол WEB-сервер – менеджер ресурса) и упрощает управление WEB-сервером;
- унификация протокола к менеджеру ресурсов со стороны командного интерпретатора и WEB-клиентов;
- протокол HTTP позволяет организовать работу по принципу запрос/ответ, аналогичный работе командного интерпретатора;
- протокол работает с текстовыми строками, легко расширяется и модифицируется;
- имеются программные библиотеки реализации клиентской и серверной части протокола HTTP.
Структура менеджера ресурсов fwclt представлена на рис. 5. Для обеспечения безопасности информации передача данных между командным интерпретатором и менеджером ресурсов по протоколу HTTP производится через UNIX – сокеты, доступ к которым извне закрыт. Доступ WEB-браузеров удаленных администраторов к WEB-серверу осуществляется по протоколу HTTP поверх протокола TLS, обеспечивающего защищенное соединение, при котором весь трафик HTTP передается в зашифрованном виде.
При получении запроса HTTP сервер определяет обработчик на основе переданного в запросе URI и передает ему параметры запроса. Конкретный обработчик определяет, значения каких переменных, каких ресурсов необходимо изменить (прочитать) и совершает необходимые действия с ресурсами. На основе полученных данных генератор ответов формирует HTTP ответ, в теле которого, в зависимости от типа клиента, передается полная HTML страница, либо закодированные значения переменных. Генератор HTML страниц создает их содержимое на основе заранее подготовленных шаблонов, подставляя конкретные значения переменных в HTML текст.
Любые действия администратора по изменению конфигурации межсетевого экрана передаются модулю регистрации.
На рис. 6 представлен пример прохождения запроса от администратора на изменение IP-адреса интерфейса “inside”. Администратор через консоль управления вводит команду: ”ip address inside 192.168.1.10”. Командный интерпретатор fwsh преобразует команду администратора в запрос к менеджеру ресурсов, в котором задается ресурс “interfaces” и параметры для изменения значений переменных. WEB-сервер по указанному URI в запросе POST, определяет ресурс и формирует данные для вызова соответствующей функции этого ресурса. Ресурс осуществляет непосредственное обращение к функции ядра системы на изменение адреса сетевого интерфейса. Аналогичным образом осуществляется изменение других параметров системы. Для получения значений переменных ресурса используется метод HTTP GET.
Командный интерпритатор
Для управления межсетевым экраном посредством интерфейса командной строки через локальную консоль или по протоколу SSH используется командный интерпретатор, реализованный в виде отдельного процесса, запускаемого на каждую отдельную сессию работы администратора. Запуск fwsh производится автоматически при подключении консоли на последовательный интерфейс межсетевого экрана, либо при подключении SSH клиентом к серверу SSH. На рис. 7 представлена структурная схема командного интерпретатора.
Администратор с помощью редактора команд вводит необходимую команду, которая передается на синтаксический анализатор, где проверяется правильность синтаксиса заданных параметров команды. После проверки синтаксиса команды формируется запрос на изменение или выборку данных конкретного ресурса системы. По протоколу HTTP запрос передается менеджеру ресурсов fwctl, полученный ответ обрабатывается транслятором ответа и при необходимости выдается на консоль.
Сервер локальной консоли
На аппаратных платформах, имеющих в своем составе локальную консоль управления, состоящую из жидкокристаллического дисплея (LCD) и клавиатуры, запускается сервер локальной консоли fwlcd. Основное назначение локальной консоли состоит в оперативном получении информации о работоспособности межсетевого экрана, состоянии и режимах работы интерфейсов, краткой статистики. Работа администратора производится через систему меню, навигация по которым осуществляется с помощью кнопок на передней панели межсетевого экрана. Структура fwlcd аналогична fwsh и представлена на рис. 8. После выбора администратором пункта меню, формируется HTTP запрос менеджеру ресурсов, полученный ответ обрабатывается и необходимая информация выводится на индикатор.
Сервер регистрации
Сервер регистрации обеспечивает сбор информации от менеджера ресурсов fwctl, пакетного фильтра PF, дополнительных модулей. Регистрации подлежит:
- вся информация, касающаяся действий администратора межсетевого экрана;
- значимые поля IP-пакетов (адреса, протоколы, порты), попавших под правила фильтрации, в которых указана необходимость регистрации;
- установление VPN туннелей;
- обнаруженные вторжения и сетевые атаки.
Информация регистрации накапливается сервером в кольцевом буфере в оперативной памяти, затем, при необходимости ее можно просмотреть. При наличии в аппаратной платформе накопителя на жестком диске, информация регистрации сохраняется на него, тем самым, предотвращая потерю информации в случае отключения электропитания межсетевого экрана. Если в настройках межсетевого экрана указана необходимость передачи информации регистрации на удаленный сервер по протоколу syslog, то сервер fwlog параллельно с записью информации в свой буфер (на диск) передает ее на удаленный сервер.
Модуль проверки целостности
Проверка целостности программного обеспечения межсетевого экрана производится на всех этапах его работы. При старте системы производится проверка контрольных сумм ядра и образа файловой системы, при несоответствии эталонным контрольным суммам, загрузка системы не производится, на локальную консоль выводится сообщение об ошибке. Во время работы системы модуль fwcheck периодически производит проверку контрольных сумм всех исполнимых модулей, находящихся на виртуальном диске. При обнаружении несоответствия контрольной суммы какого-либо модуля выдается сообщение о критической ошибке в систему регистрации и производится перезагрузка межсетевого экрана.
Проверка целостности конфигурационных файлов производится менеджером ресурсов fwctl.