Семейство операционных систем Solaris существует уже более 10 лет, и хотя за это время в мире UNIX произошли существенные изменения, данная ОС до сих пор пользуется популярностью и, как свидетельствует первый опыт работы с версией 10, успешно и уверенно развивается.

В ноябре 2004 года исполнительный директор компании Sun Microsystems Скот Макнили заявил о выходе версии ОС Solaris 10, назвав это самым существенным событием за последние десять лет.

Именно на платформе Solaris еще несколько лет назад начали решаться проблемы, которые разработчики других ОС ставят на повестку дня только сегодня. Взять хотя бы проблему безопасности. Потребность в широкодоступной платформе с повышенным уровнем безопасности осознается сейчас большинством разработчиков — можно вспомнить версию Windows XP SP2, почти полностью сконцентрированную на вопросах безопасности, или инициативу Security Enhanced Linux (SELinux), поддерживаемую Агентством национальной безопасности США. Компания Sun занялась разработкой UNIX-системы повышенной безопасности задолго до появления проекта SELinux.

Другое преимущество Solaris — единство платформы. Стандартизация платформы — это то, к чему Linux-сообщество идет только сейчас. например, проект United Linux развалился из-за разногласий между его участниками, в результате чего каждый из членов альянса начал разрабатывать собственную корпоративную платформу. Конечно, мы по-прежнему можем скачать из Сети новейшие дистрибутивы Linux, последние версии ядра и других компонентов и можно надеяться, что ситуация не изменится в обозримом будущем. Однако не секрет, что, например, на сайте компании Oracle приведена таблица, в которой перечислены дистрибутивы ОС Linux, для которых Oracle гарантирует нормальную работу своего продукта — практически ни один из этих дистрибутивов нельзя бесплатно получить из Сети, а цены коробочных версий и лицензий на рабочие места сопоставимы со стоимостью Solaris.

Отсутствие строгих стандартов для прикладного ПО Linux — проблема не только больших компаний. Linux обладает прекрасными средствами сборки приложений из исходных текстов, адаптируемость приложений к различным конфигурациям системы закладывается еще на этапе (грамотного) проектирования приложений, однако все это происходит на уровне исходных текстов. Развертывание и сопровождение приложений с закрытым исходным кодом для различных дистрибутивов Linux представляет серьезную проблему для разработчиков.

Таковы, по крайней мере, две причины, позволившие ОС Solaris удержаться на плаву и это при том, что Sun вовсе не находится в позиции глухой обороны по отношению к Linux. Достаточно вспомнить OpenOffice — лучший на сегодняшний день пакет офисных приложений для Linux.

Сегодня Linux сегментируется не по уровню дружественности пользовательского интерфейса и не по степени простоты установки и настройки (эти проблемы в общем и целом решены), а в соответствии с целевой аудиторией. Это признак успешного развития Linux, но нет ничего удивительного в том, что корпоративный Linux принимает корпоративные правила игры, и, соответственно, корпоративные цены.

Стратегия сближения

Вплоть до недавнего времени Sun фактически развивала две линии Solaris: одну для большинства корпоративных клиентов и другую (Trusted-версию) — для клиентов, предъявляющих повышенные требования к безопасности. Очередная версия Trusted Solaris появлялась обычно после выхода «обычной» Solaris и всегда была основана на ее коде. Первоначально Trusted Solaris предназначалась исключительно для правительственных организаций, но последние версии системы стали доступны и частным предприятиям.

Solaris 10

Между Trusted Solaris и Solaris OS постоянно идет двусторонний обмен технологиями. Trusted Solaris использует «обычный» Solaris как платформу для реализации новых технологий безопасности, а обычный Solaris заимствует из Trusted соответствующие технологии.

Одно из ключевых новшеств Solaris — N1 Grid Containers, технология распределенного компьютинга, позволяющая создавать единую операционную среду на основе всех компьютеров, работающих под управлением Solaris. контейнеры N1 Grid предоставляют возможность создавать «виртуальные компьютеры», способные использовать различные ресурсы распределенной системы. С помощью N1 Grid Containers можно создавать до 400 изолированных друг от друга доменов приложений (контейнеров). Каждый контейнер обладает собственным IP-адресом, областью доступа к памяти, файлам и собственным паролем суперпользователя. К основным преимуществам технологии N1 Grid можно отнести:

  • гибкость в управлении ресурсами при решении задач, достигаемая за счет назначения ресурсов определенным контейнерам;
  • надежность, достигаемая путем изоляции памяти и внешних хранилищ каждого контейнера;
  • повышенная безопасность, которой можно достичь, используя возможность назначения уникального пароля каждому контейнеру.

Наличие у каждого контейнера собственного IP-адреса позволяет идентифицировать контейнер в сети независимо от машины, на которой он работает, что упрощает процесс репликации контейнеров или переноса их с одного сервера сети на другой. По заявлению специалистов Sun, Solaris 10 продвигает на рынок принципиально новое решение в области доменов приложений (software partitioning solution) — технология N1 Grid Containers позволяет создавать домены, простые в управлении (все они работают в рамках одного экземпляра ОС). Отличительной чертой технологий виртуализации N1 Grid Containers является разделение ресурсов ядра ОС между всеми контейнерами (то есть, все контейнеры используют один и тот же экземпляр ядра), в результате чего снижаются издержки виртуализации и упрощается процесс управления контейнерами. Другой компонент технологий N1 Grid — N1 Grid System — позволяет виртуализировать практически любые ресурсы распределенной системы. В сочетании с контейнерами эта технология позволяет динамически, программным способом, определять границы домена приложений.

Второй блок новшеств Solaris 10 связан с безопасностью. Одно из нововведений — поддержка авторизации пользователей с помощью смарт-карт. Появилась также возможность автоматического отключения учетной записи после нескольких следующих подряд неудачных попыток авторизации.

Новшества имеются и на программном уровне. Технология Process Rights Management позволяет более тонко настраивать права доступа процессов к разделяемым ресурсам. С помощью Process Rights Management (PRM) приложение может получать доступ к строго определенным привилегированным ресурсам. Благодаря этому, приложение может обращаться только к тем разделяемым ресурсам, которые действительно необходимы приложению. В традиционных UNIX-системах, как и в большинстве дистрибутивов Linux, для доступа приложений к привилегированным ресурсам использовался бит suid (super user id — идентификатор суперпользователя), позволявший приложениям, запущенным рядовыми пользователями, выполняться от имени (и с правами) супер-пользователя. Таким образом, в случае ошибки рядовой пользователь потенциально мог «случайно» получить права суперпользователя и обратиться ко всем привилегированным ресурсам.

В версии 10 получила дальнейшее развитие система RBAC, изначально реализованная в Trusted Solaris. Это средство безопасности предназначено, прежде всего, для защиты от атак изнутри и подобно технологии PRM, но распространяется не на приложения и процессы, а на пользователей. В рамках RBAC каждому пользователю можно разрешить доступ к ограниченному числу привилегированных ресурсов, действительно ему необходимых.

Помимо RBAC, многие другие технологии безопасности, реализованные в Solaris 10, также пришли из Trusted Solaris, например, управление правами отдельных процессов (Process Rights Management) и расширенная технология управления правами пользователей (User Rights Management).

Еще одна новинка Solaris, призванная облегчить жизнь администраторам и разработчикам, — технология Dynamic Tracing (динамическая трассировка), с помощью которой можно динамически реконфигурировать ядро системы и прикладные программы таким образом, чтобы получать информацию об определенных событиях. Например, можно отслеживать состояние стека функций или аргументы, передаваемые определенной функции в работающем приложении. Делается это путем установки точек контроля (probes) и связанных с ними действий (actions). Можно сказать, что технология динамической трассировки вносит на уровень системы возможности, которые раньше предоставлялись специальными программами-отладчиками, с той лишь разницей, что динамическая трассировка может быть использована в тех условиях, в которых программу-отладчик использовать нельзя (например при контроле работы драйверов уровня ядра). Теперь для получения дополнительной информации о работе приложения не требуется вносить изменения в исходные тексты, перекомпилировать и перезапускать исполнимый модуль. динамическая трассировка позволяет в течение пятнадцати минут выявить узкие места в производительности любых компонентов системы, включая приложения, разработанные сторонними компаниями.

В ответ на обвинение в низкой производительности сетевых приложений (за что ОС Solaris получила в свое время недоброжелательное прозвище «Slowlaris») новая версия была оснащена сетевым движком FireEngine, повышающим производительность системы при работе с сетью (в некоторых случаях на 63% по сравнению с Solaris 9). Среди отличительных черт FireEngine особого внимания заслуживает поддержка стандарта Ethernet 10 Гбит/c, возможность динамического переключения сетевых сервисов между режимом прерываний и режимом опроса, и, в перспективе, поддержка Intel TOE (TCP/IP Offload Engine) — специальных карт, предназначенных для того, чтобы снять с центрального процессора часть нагрузки при обработке сетевых запросов.

ОС повышенной безопасности

Trusted Solaris — первая корпоративная операционная система, получившая сертификат безопасности EAL4+ (Evaluation Assurance Level, уровень оценки безопасности, выдаваемый правительственными организациями США в рамках программы Common Criteria (www.radium.ncsc.mil/tpep/library/ccitse/). По результатам сертификации операционным системам присваиваются баллы от EAL1 (самая небезопасная) до EAL7 (самый высокий уровень безопасности ОС). До сих пор Trusted Solaris выпускалась как отдельная ОС, но будущая Trusted Solaris 10 планируется уже как дополнение к Solaris 10 OS. Перечислим основные отличия Trusted Solaris от Solaris OS.

В Trusted Solaris разные функции супер-пользователя разделены между разными учетными записями, каждая из которых защищается своими средствами (или ролями). Благодаря такому подходу, взломщик, обладающий паролем доступа к одной из привилегированных учетных записей, получит доступ лишь к ограниченному числу защищенных ресурсов. Кроме того, злоумышленнику будет гораздо труднее скрыть следы своего пребывания в системе, так как аудит действий пользователей выполняют специальные компоненты системы, неподконтрольные даже большинству привилегированных пользователей.

У разделения прав суперпользователя есть и еще одно преимущество. Все руководства по многопользовательским системам рекомендуют администраторам проводить в режиме суперпользователя как можно меньше времени, и не выполнять, находясь в нем, операций, для которых привилегии суперпользователя необязательны. Причина этих предостережений в том, что можно без всякого злого умысла нарушить работу системы. В Linux и других UNIX-системах эта проблема была отчасти решена путем введения бита suid, позволяющего запускать многие программы, требующие полномочий суперпользователя, не покидая непривилегированной среды, и таким образом ограничить необходимое время пребывания в режиме суперпользователя. Однако у этого подхода есть свои недостатки.

При работе c Trusted Solaris можно обнаружить, что в системе есть роль root, соответствующая суперпользователю, однако эта роль применяется только в процессе установки и первичной настройки системы — далее ни один пользователь не может принять роль root.

Еще один важный элемент системы безопасности — безопасная графическая оболочка. Графический сервер X Window устроен так, что пользователь, работающий в непривилегированной среде, может получить контроль над программами, обладающими полномочиями суперпользователя (например, suid-программами). Проблема заключается в том, что концепции suid-программ и X-сервера разрабатывались в расчете на безопасную среду, находящуюся под контролем одного пользователя. В качестве решения можно было бы предложить полный отказ от присвоения статуса suid графическим приложениям, однако это снизило бы удобство пользования системой. Вместо этого в Trusted Solaris разработана защищенная графическая оболочка, не позволяющая одним программам получать контроль над окнами других программ.

Третье существенное отличие Trusted Solaris заключается в возможности контроля доступа к периферийным устройствам. В качестве примера можно привести гибкую систему авторизации при работе со съемными носителями данных и дополнительные меры по защите очередей печати — доступ к таким очередям ограничен, чего, кстати, так не хватает в ОС Linux. Кроме того, существует возможность организации обязательного сравнения метки документа, отправляемого на печать, с меткой принтера, позволяющего гарантировать, что конфиденциальные документы будут распечатаны только на доверенных принтерах.

Проблемы конкуренции

Разработчики корпоративных решений на основе ОС Linux, например Red Hat, могут составить серьезную конкуренцию новым версиям Solaris, и неудивительно, что Solaris 10 включает некоторые возможности, которые наблюдатели назвали прямым ответом на вызов со стороны конкурентов мира Linux.

Прежде всего речь идет о более гибкой политике лицензирования. Версия Solaris для IA32 будет бесплатной для пользователей, зарегистрировавшихся на сайте Sun. Эта схема лицензирования включает также бесплатные обновления, связанные с безопасностью, но не включает техническую поддержку.

Еще одна немаловажная деталь — совместимость Solaris 10 и Linux-приложений на уровне двоичных кодов (эта возможность реализована только в вариантах ОС для платформ x86). Вряд ли можно назвать случайным то обстоятельство, что в качестве эмулируемого Linux-дистрибутива выбран Red Hat Enterprise Linux и в планах Sun — добиться совместимости также и с Novell SuSE Linux. При этом поддержка Linux в Solaris не ограничивается простой эмуляцией — Linux-приложениям, выполняющимся под управлением Solaris, будут доступны технологии N1 Grid и возможности динамической трассировки. Очевидно, что совместимость не будет полной — поддержка Linux-приложений в Solaris ориентирована, прежде всего, на пользователей, принявших решение о переходе с Linux на Solaris, и призвана облегчить этот переход.

Традиционным аргументом в пользу высокой безопасности Linux является указание на полную открытость системы, которая позволяет всем заинтересованным пользователям самостоятельно, в меру своей квалификации, анализировать уровень защищенности ее отдельных компонентов. Партнерская программа Sun включает возможность предоставления клиентам компании исходных текстов ОС, причем, в отличие от аналогичной программы компании Microsoft, имеется возможность не только «смотреть» код, но и модифицировать его в соответствии со своими внутренними потребностями.

Нельзя не упомянуть о проектах Sun в области открытого программного обеспечения. Судя по многочисленным заявлениям представителей компании, выход открытого варианта Solaris — вопрос времени.

Андрей Боровский (borovsky@pochtamt.ru) — инженер-программист ФГУП РНИИ КП (Москва)


История Solaris

Жизненный путь ОС Solaris начался в 1991 году с выпуска Solaris 2 Operating Environment (прежняя операционная система, SunOS, была переименована в Solaris 1 и поэтому новый продукт Sun сразу получил номер версии 2). Конечно, история Solaris началась не на пустом месте — у компании Sun уже был немалый опыт технологических инноваций в области программного обеспечения (например, сетевая файловая система NFS, ставшая стандартом в мире UNIX-систем).

В декабре 1995 года завершился широкомасштабный процесс сертификации Trusted Solaris — варианта операционной системы Solaris c повышенной безопасностью. В тот момент сертификацию проходили сразу две версии Trusted Solaris: 1.2 (для платформы SPARC) и Trusted Solaris 2.4 (для SPARC и Intel). Отличительными чертами этой ОС стали безопасная оболочка, поддержка технологии NIS+ и файловая система Trusted NFS, отличающаяся от обычного варианта NFS более высокой степенью защиты данных. Незадолго до этого появилась версия «обычного» Solaris 2.5, а вскоре — основанная на ней Trusted Solaris 2.5.

В начале 2000 года была выпущена версия Solaris 8 Operating Environment, а в конце того же года — Trusted Solaris 8 OE.

В 2002 году компания приняла решение, которые многие наблюдатели оценили как спорное. Представители Sun заявили что очередная версия Solaris (Solaris 9) не будет доступна на платформе IA32. Правда, позднее это решение было пересмотрено и началось энергичное продвижение Solaris 9 для платформы x86. Курс на завоевание рынка серверов на базе процессоров Intel не изменился и сегодня, хотя, по словам представителей Sun, присутствие Sun в этом сегменте рынка все еще близко к нулю — лишь около 600 компаний используют Solaris на платформе IA32.


Безопасность по Trusted Solaris

Мандатный контроль доступа

Кроме обычного, дискреционного (добровольного) контроля доступа в Trusted Solaris реализован мандатный (обязательный) контроль (нечто похожее есть и в SELinux). Мандатный контроль основан на системе меток и разрешений (clearances). Метки и разрешения определяют уровень конфиденциальности файлов и групп пользователей, которым разрешен доступ к этим файлам. Каждый файл в файловой системе Trusted Solaris автоматически помечается меткой, которая рассматривается как дополнительный атрибут файла. Метки также контролируют доступ к ресурсам, связанным с устройствами, таким как сетевая подсистема или экранный буфер. Кроме того, метки можно назначать сообщениям электронной почты и документам, посылаемым на печать. При попытке доступа какого-либо процесса к какому-либо ресурсу система сравнивает метки процесса и ресурса и на основании результатов сравнения разрешает или не разрешает доступ. Метки образуют иерархическую систему: метка с более высоким приоритетом доминирует над меткой с более низким приоритетом.

Роли

Роли можно сравнить с учетными записями, разделяемыми несколькими пользователями. Пользователи, зарегистрировавшиеся в одной и той же роли, имеют доступ к общему домашнему каталогу роли, работают в одной и той же среде окружения и имеют доступ к одним и тем же файлам. Хотя роль может использоваться несколькими разными пользователями, она не позволяет пользователям оставаться анонимными — прежде чем «принять роль» пользователь должен зарегистрироваться в своей учетной записи. Полученный при этом идентификатор применяется затем для фиксирования действий пользователя в выбранной им роли (и определяет, какие роли доступны данному пользователю). Пользователь не может перейти непосредственно из одной роли в другую, для этого необходимо сначала вернуться в свою учетную запись.

Роли дают администратору системы возможность предоставлять пользователям общий доступ к определенным ресурсам, не теряя контроля над идентичностью. В традиционной UNIX-системе администратор для предоставления нескольким пользователям доступа к одним и тем же ресурсам, включая общий домашний каталог, переменные окружения и т.п., должен создать специальную учетную запись и предоставить пользователям ее реквизиты. Но пользователи, регистрирующиеся под одной и той же учетной записью, с точки зрения системы неразличимы. Роли Trusted Solaris позволяют создавать общую учетную запись и при этом различать работающих в ней пользователей.

Профили

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