Организация профилей безопасности

Описание работы будет неполным без рассказа об организации профилей безопасности. Действительно, установка всех разрешений для большого количества приложений при неправильном подходе может свести на нет все усилия. Пользователь может просто запутаться и либо забросить настройку системы, либо настроить ее неправильно. В CORE FORCE конфигурация разрешений сделана таким образом, чтобы обеспечить максимальную гибкость и возможность их повторного использования. Так, для установки разрешений, которые могут быть применены к любой программе, можно использовать 2 комплекта: системный и индивидуальный. Если конкретной программе не указаны разрешения, то будет использоваться встроенный, т.е. системный набор разрешений. Такие наборы разрешений группируются в профили безопасности, позволяющие программе нормально работать, но в то же время иметь доступ только к разрешенным объектам. Но в разных условиях (доверенная сеть, Интернет, запуск непонятной утилиты) могут потребоваться различные разрешения, как более жесткие блокирующие, всякую подозрительную деятельность, так и легкие, не отвлекающие при работе.

Для более гибкой их организации каждый профиль безопасности имеет набор уровней безопасности: High, Medium, Medium-Low, Low и Custom.

Каждый сконфигурирован с таким расчетом, чтобы обеспечить необходимый баланс. Пользователю в большинстве случаев достаточно просто выбрать необходимый уровень, не вникая в подробности, а просто почитав описание (рис. 2). Гибкости этой схеме добавляет то, что уровень безопасности выставляется не один на всех, а используется более индивидуальный подход. То есть можно системный уровень выбрать одним, программам же выставить другие уровни. И теперь при открытии документа Acrobat Reader не будет каждый раз запрашиваться разрешение, а почтовый клиент для отправки и приема почты будет использовать только указанные сервера и спрашивать подтверждение на большинство потенциально опасных операций (запись в реестр, например).

Кирпичиками, на которых строятся профили безопасности, являются разрешения. Разрешения применяются к сетевым ресурсам, файлам, реестру, обеспечивая полноценную основу для защиты программ. Если запрос подходит под правило, то к объекту могут быть применены различные действия block или no (блокировать), pass или yes (разрешить), ask (спросить подтверждение), inherit (наследовать системные настройки). Не говоря уже об опциях запроса. Здесь и протокол, TCP-флаг, IP-адрес и порт источника/приемника, сетевой интерфейс, каталог, файл, ветка реестра и пр., которым необходимо разрешить определенные действия: получение списка файлов, чтение, запись, удаление или выполнение. Дополнительно можно включать журналирование определенных событий и еще много других полезных опций.

Поэтому конфигурирование при помощи разрешений является несколько непрактичным. Ведь если программа не должна писать в системную область, то в Windows придется описывать довольно много объектов. А если то же самое затем придется делать и для другой программы? Проще сгруппировать все разрешения, предназначенные для определенных целей в некий блок, который затем можно многократно использовать. И если придется изменять некие параметры (добавить каталоги, указать правила фильтрации и т. п.), то это необходимо будет сделать только в одном месте. Такие блоки называются «политики» (policies).

Теперь при создании нового профиля безопасности достаточно собрать подходящие политики и указать уровень безопасности, для которого они должны применяться. CORE FORCE уже имеет некоторое количество встроенных политик, предназначенных для самых разнообразных операций. Конечно же, их можно создавать и самому, как самостоятельно, так и используя уже имеющиеся и связывая их через Assigned Policies. При создании политике желательно дать название, которое будет описывать его функциональное назначение. Например, такие имена говорят сами за себя «Network. Send and receive mails» или «Cannot execute from temp (confirmation required)».

Разрешения конфигурируются только в политиках, если две политики (разрешения) назначены на один и тот жеобъект, последний аннулирует предыдущий, то есть фактически политики прилагаются в порядке объявления. Например, если в одной политике запрещен доступ к каталогу, а в последующем разрешен, то в итоге доступ будет все-таки разрешен. Именно поэтому в некоторых политиках (чаще в сетевых) доступ сначала запрещается для всего (Protocol – Any, Address – Any, Direction – Any и т. д.). А в последующих правилах разрешения ослабляются, открывая доступ к тому, что действительно необходимо. Для файлов чаще проще поступить наоборот, т.е. сначала все разрешить, а потом запретить доступ к системным каталогам. При необходимости очередность разрешений в политике можно изменять при помощи стрелок. В отдельном пункте «Permissions» можно указать свои параметры, которые будут иметь более высокий приоритет перед всеми остальными вне зависимости от выставленного уровня безопасности. Разрешения можно копировать в другие профили.

Естественно, созданные политики могут многократно использоваться для описания профилей безопасности различных программ. Такие многократно используемые политики создаются и сохраняются в отдельной вкладке «Shared Policies». Итак, текущая конфигурация безопасности приложения и системы будет определена исходя из настроек трех уровней: Security Profile (Program/System) – Security Levels – Policies.

Как видите, создание профиля безопасности хоть и максимально продумано, но обычный пользователь вряд ли будет этим заниматься. Поэтому одной из задач проекта было создание общества экспертов, в обязанность которых будет входить и разработка готовых профилей безопасности. Сейчас в репозитории проекта можно найти около сотни профилей для наиболее популярных программ (ICQ, IE, GPG, Mozilla Firefox и Thunderbird, FlashGet и другие). Каждый из них включает имя профиля (часто название программы), ник разработчика, рейтинг, дату последнего изменения и краткое описание. В Policy Developer реализован импорт и экспорт профилей безопасности посредством удобных для восприятия человеком XML-файлов с расширением CFX.

Например, политика, запрещающая модификацию системных файлов, выглядит так.

 
 

А сетевая политика, разрешающая исходящие соединения по протоколу SMB, выглядит так.


Более сложные политики занимают несколько экранов, но на общей читаемости это не сказывается, всегда можно понять принцип его работы. Для удобства переноса между компьютерами используются переменные, как общесистемные вроде [ProgramFiles], так и устанавливаемые пользователем. Например, моя локальная сеть выглядит так.


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