Как создается ОС, сертифицированная по I классу защиты

Рассказ из первых рук о том, как создается, а потом готовится к сертификации для работы с данными под грифом «особой важности» защищенная ОС Astra Linux.

f0c689b681b128482db68a14ae545d5f.jpg

Что представляет собой Astra Linux?


3ed14e4f641c4d9a09e1950d2440e460.png

Astra — отечественный дистрибутив Linux, сочетающий в себе компоненты от сообщества, распространяющиеся по открытым лицензиями типа GPL, MPL, Xiph License и др., и программное обеспечение собственной разработки одноименной группы компаний. Пользовательский функционал закрыт по большей части компонентами из состава открытого программного обеспечения — стандартные механизмы Linux используются для выполнения основных задач, например, запуска приложений, виртуализации, поддержки аппаратного обеспечения или того же Steam. Компоненты собственной разработки в основном решают две ключевые задачи: обеспечения безопасности, а также взаимодействие графического интерфейса операционной системы и человека.

С точки зрения лицензирования дистрибутив является сложным объектом (понятие из ч. 4 ГК РФ), т.е. составным произведением, поэтому распространение его в целом имеет некоторые ограничения. Хотя все компоненты открытого программного обеспечения, входящие в продукт, сохраняют свой свободный статус.

243f6c5d34db935331a280efac88101a.png

97b889b50e34a08b8c5bb099e6e6e066.png

2d1333ab980698577037f603adc310d4.png

19eba1c39f2440397243b904e62483a2.png

b70885e8999be197518cc4c0dc5f82df.png

Версии Astra Linux существуют под самые разнообразные платформы. При этом наименование платформы «спрятано» в первую цифру номера версии:

  • 1 и 2 — Intel (версии Смоленск и Орел);
  • 3 — IBM System Z (Мурманск);
  • 4 — ARM (Новороссийск)
  • 6 — процессоры MIPS (Севастополь);
  • 8 — Эльбрус (Ленинград).


Казалось бы, непривычное решение — вынести на первую позицию тип платформы, получив странную последовательность версий — 1.6, 2.12.13, 8.1 и т.п. Но это сделано осознанно, чтобы упростить жизнь технической поддержке, поскольку визуально графический интерфейс операционной системы выглядит одинаково на любой аппаратной платформе вне зависимости от целевой области применения компьютера: от сервера до смартфона. Так в разговоре с пользователем можно быстрее понять, о какой именно платформе идет речь.

Кстати, версия под каждую платформу имеет свое кодовое имя в честь одного из городов-героев России. Здесь гайдлайнов нет, опираемся на чувство прекрасного.

Среди разрабатываемых версий Astra есть как обычные дистрибутивы, так и защищенные (Special Edition), ориентированные на работу с конфиденциальными данными, сертифицированные по требованиям безопасности информации всех систем сертификации России. С точки зрения пользовательского набора функций версии почти не различаются. Однако система защиты в них выстроена по-разному. Некоторые компоненты специальной версии, требующиеся для работы с конфиденциальными данными, хотя они и не обязательно избыточны для обычных пользователей и бизнеса, в обычную версию не включены, т.к. нормативная и правовая база Российской Федерации требует их обязательной сертификации.

Базовая версия — что и для кого


Обычная версия Astra Linux ориентирована на корпоративных заказчиков. Для домашних пользователей при использовании в некоммерческих целях лицензия бесплатна —, но в развитии мы стремимся удовлетворить потребности именно корпоративного сегмента. В конце концов, мы тоже коммерческая компания, а сегмент домашних пользователей — очень непростой. Для них есть различные дистрибутивы Linux, в том числе бесплатные.

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

ccbe5005594671fc51b18782f9b0abf5.jpg

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

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

Специальная версия


Помимо обычных версий, у Astra Linux есть так называемые специальные версии — Special Edition, которые разрабатываются с расчетом на сертификацию ФСТЭК России и других систем сертификации. С точки зрения пользовательского функционала специальная версия практически ничем не отличается от обычной. Однако в ней реализованы дополнительные компоненты для повышения безопасности (как раз самописные), в частности:

  • мандатная модель управления доступом (MAC) и контроля целостности (MIC), когда все компоненты системы иерархически разделяются по степени важности для ее безопасности от самых недоверенных, пользовательских (уровень целостности 0), до системных, административных (уровень целостности по умолчанию 63);
  • автоматическая проверка электронной цифровой подписи любого файла в системе для защиты от несанкционированного изменения. Фактически механизм ЭЦП может блокировать не только отдельные файлы, но даже скрипты, написанные в любом текстовом редакторе на языках вроде Python или Perl. При попытке запуска или открытия файла модуль, висящий в памяти, на лету проверяет корректность ЭЦП и принимает решение о возможности запуска. В случае со скриптами ЭЦП помещается не в сам скрипт, а в расширенные атрибуты файловой системы. Отдельно хотелось бы отметить использование термина «электронно-цифровая подпись» в отношении реализованной функции безопасности. Такое наименование намеренно взято из национального стандарта ГОСТ Р 34.10 и используется в нашей документации и справочных материалах в целях четкого отделения реализованной в Astra Linux функции безопасности от задачи обеспечения юридической значимости электронного документа, решаемой соответствующими средствами создания и проверки электронной подписи;


201d4ef81e5506bc2f9525a27ae59f5f.png

  • режим киоска, на уровне ядра разрешающий запуск строго определенного набора приложений;
  • ограничение работы с интерпретируемыми языками программирования;
  • ограничение доступа пользователей к консоли;
  • возможность затирания файлов на диске последовательностями нулей и единиц в несколько проходов;
  • блокировка подключения «незнакомых» внешних устройств, препятствующая занесению в систему вредоносного ПО через различные хитрости с флешками. Не секрет, что системы предприятия можно скомпрометировать, просто разбросав симпатичные флешки с вредоносным ПО вокруг здания в расчете на то, что кто-нибудь из сотрудников да поднимет. В нашем случае такой трюк не пройдет.


Разумеется, это не полный список. Есть масса других модулей и компонентов. Все эти инструменты работают независимо друг от друга, обеспечивая эдакое эшелонирование системы безопасности. Все перечисленные функции безопасности реализованы на основе оригинальных отечественных разработок в области компьютерной безопасности без использования разработанного АНБ США SELinux.

e6c80b53d50813abbcf3891fd48219c3.png

При этом они включаются и отключаются независимо друг от друга (администратором системы). Для некоторых компонент существуют разные режимы работы. Например, для средства проверки ЭЦП можно включить режим обучения, когда файлы с неверной ЭЦП (или у которых она отсутствует) все-таки запускаются, но на уровне системы выдается предупреждение. Все эти механизмы настраиваются администратором под политику безопасности, определенную руководством. При этом почти вся настройка уже осуществляется как в графическом режиме. Безусловно, администраторам доступен весь набор инструментов консольном исполнении для автоматизации задач по настройке и конфигурированию подсистем безопасности.

d4af5d1290e9e8676918625ff4c19e50.png

bdc0f400015d8316f6f6d7c66492d4db.png
Текущая версия Astra Linux Special Edition — Смоленск 1.6.

Специальная версия развивается, как и обычная, однако нововведения в нее попадают только после тестирования и обкатки в обычном релизе.

Как мы готовили специальную версию к сертификации


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

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

В зависимости от функционала информационных систем вопросами их сертификации на возможность использования в работе с важными данными занимаются различные ведомства. К примеру, сертификацией средств защиты информации занимается ФСТЭК России. Однако свои системы сертификации средств защиты также имеют ФСБ и Минобороны. К слову, Astra Linux Special Edition — единственная ОС, обладающая всеми сертификатами в нашей стране.

75a352898901e239ad3c1c6f08513f45.jpg

ea6182b02907070773ad9040843efb22.png

dd460141c1b73bc33233af51a013fcd6.png

Степени секретности


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

Низшие классы — с шестого по четвертый — это требования для защиты персональных данных, а также коммерческой и служебной тайны. На российском рынке продукты, соответствующие этим классам, уже не редкость. Мы же поговорим о сертификации по высшим классам — с третьего по первый — с грифами «секретно», «совершенно секретно» и «особой важности» (живые примеры — чертежи нового истребителя Сухого или общие данные о состоянии критической инфраструктуры в стране, не так давно приравненные к государственной тайне). И здесь самое сложное — даже не функциональные требования (в конце концов, разработать что-то — не проблема), а подтверждения доверия к ОС. Для этого необходима корректная математическая модель управления доступом к данным и обоснование соответствия реального программного продукта этой математической модели. Т.е. процедура разработки системы, ориентированной на работу с секретными данными, многократно усложняется.

Вот пример реакции системы на включение политики MLS (multi level security) в SELinux в дистрибутиве Fedora:

e127db1a1bded19abb9467212ef00330.png

Как мы видим, ни графическая оболочка, ни консольные приложения не умеют по умолчанию корректно обрабатывать ситуацию, когда в системе включена политика работы с несколькими уровнями секретности. Соответственно, всё это необходимо или перерабатывать или делать своё, что и сделано в Astra Linux.

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

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


a6fba075750cc267b37599c4da230e8f.jpg

Подготовка к сертификации


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

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

Самое главное, что произошло за эти полгода — Astra Linux Special Edition прошла многоуровневую процедуру проверки и анализа программного кода. При этом разные части продукта проверялись по-разному.

Наиболее серьезной проверке подвергалась система безопасности. В ней, кроме стандартной дискреционной используется мандатно-ролевая модель управления доступом и контроля целостности, поддерживающая существующие в России степени секретности информации — «секретно», «совершенно секретно» и т.п. Согласно этой модели, каждой учетной записи пользователя, процессу, файлу или каталогу присваивается метка конфиденциальности, по которой и определяются права доступа. Например, файлы, созданные отделом производства танков уровня «совершенно секретно», недоступны другим отделам с уровнем доступа «секретно» или ниже. Кроме того, всем учетным записям пользователей, процессам, файлам или каталогам присваивается метка целостности, в результате, например, пользовательские низкоцелостные процессы не смогут модифицировать системные высокоцелостные файлы. Для обоснования безопасности такого предоставления доступа строилась математическая модель, которая проверялась на логическую целостность, замкнутость и корректность.

Далее исходные коды системы безопасности проверялись на соответствие заявленной математической модели. И это довольно сложная и трудоемкая процедура, которая выполнялась совместно с сотрудниками Института системного программирования РАН.

Стоит отметить, что сейчас в России мы можем решать подобные задачи о проверке кода на соответствие математической модели для компонент объемом общей сложностью до 10 тыс. строк. И в эти лимиты система безопасности Astra Linux вполне укладывается. Но ядро Linux — это десятки миллионов строк кода, и инструментов по строгой математической верификации проекта такого объема на данный момент нет не только в компании, но и в стране в целом. Так что для них используются иные механизмы контроля — с помощью инструментов статического и динамического анализа кода от того же Института системного программирования РАН или собственной разработки. Задача данного этапа — проверить код на ошибки, закладки или бекдоры. Прохождение этой проверки обеспечивает высокий уровень доверия к коду и, соответственно, возможность его сертификации на первый класс защиты информации.

addcfb2b946ad4b92dad8126e759cd60.jpg

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

Что с конкурентами?


На данный момент сертификацией на такой высокий класс защиты не может похвастаться больше никто.

Но даже если предположить, что завтра появится конкурент с версией ОС, которая гипотетически могла бы соответствовать условиям сертификации, в ближайшее время он не сможет потеснить Astra Linux. Барьером выступит та самая процедура сертификации, а точнее ее часть, касающаяся верификации программного кода. Ресурсы и научные знания для этой процедуры, по нашим оценкам, в России есть только у Института системного программирования РАН и Astra Linux.

Если оценивать научно-технический потенциал компаний, то теоретически сертификацию в России могли бы пройти продукты Microsoft. Компания обладает нужными ресурсами и компетенциями, они даже рассказывают о важности задачи верификации кода на YouTube. Однако открыть исходники они вряд решаться. И тем более не будут дорабатывать свою модель безопасности под российские требования (напомню, в США иной список требований к государственной сертификации).

Возможно, тем же путем мог бы пойти Google и Лаборатория Касперского с их проектом защищенной Kaspersky OS.Однако у нас информации на их счет нет. Выйти на сертификацию по второму классу пыталась компания «Базальт». Но нам пока не ясно, есть ли у них технический и научный потенциал.

Кто использует Astra?


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

Серийный продукт — в данном случае Astra Linux Special Edition — дешевле, логичнее, современнее, хоть и требует от администраторов прохождения этапа обучения. Иначе будет сложно настраивать систему безопасности, которой нет аналогов в ПО для широкого круга пользователей.

Astra Linux подходит для внедрения даже на высших уровнях управления. К примеру, на этот продукт планирует перейти Администрация Президента. В планы переход на Astra Linux был включен довольно давно, но на тот момент система не могла быть внедрена, т.к. не имела интеграции с необходимыми компонентами. ОС ведь не существует сама по себе, а встраивается в некую экосистему программных продуктов — антивирусов, систем защиты каналов связи и т.п. С тех пор была выпущена новая версия Astra Linux, под которую уже началась сертификация необходимых решений, например, Антивируса Касперского 10-й версии. И работа с производителями других программных продуктов и систем защиты продолжается.

© Habrahabr.ru