ОС Solaris разрабатывается в соответствии с общепринятыми стандартами в области информационной безопасности. Она полностью удовлетворяет критериям защищенности, устанавливаемым Оранжевой книгой (TCSEC, DoD CSC-STD-001-83) для систем класса С2. Solaris 2.4SE имеет сертификат соответствия классу защищенности E2/F-C2, согласно европейскому стандарту ITSEC. Сертификация версии Solaris 2.6 на соответствие классам защищенности E3/F-C2 ITSEC и C2 TCSEC еще не завершена.
Оглавление
Введение
Наиболее полный набор требований безопасности, соответствующий современному уровню развития критериев оценивания безопасности, содержится в Профиле защиты CS2, разработанном в соответствии с Едиными критериями оценивания безопасности ИТ. Профиль защиты CS2 устанавливает критерии защищенности для коммерческих систем, примерно соответствующих классу C2 TCSEC, а также пятому классу защищенности согласно РД ГТК “СВТ. Защита от НСД к информации. Показатели защищенности от НСД к информации”.
Согласно РД ГТК СВТ, соответствующее пятому классу защищенности, должно содержать следующие группы средств обеспечения безопасности:
- разграничения доступа
- средства очистки памяти
- идентификация и аутентификация
- регистрация и учет
- контроль целостности
- администрирование безопасности
Материал последующих разделов конструкторской документации структурирован в соответствии с перечисленными группами средств защиты. Описание средств защиты каждой группы дается в соответствии с требованиями Профиля защиты CS2, содержащего наиболее полный из имеющихся в настоящее время критериев оценивания защищенности.
Описание принципов работы КСЗ
Данный раздел содержит описание уровней защиты, а также отдельных подсистем (модулей) КСЗ, выполняемых ими функций и взаимосвязей между ними.
КСЗ ОС Solaris 7 включает в себя следующие подсистемы:
- средства идентификации и аутентификации
- средства разграничения доступа
- средства регистрации системных событий
- средства контроля и восстановления целостности системного ПО
- средства выделения внешних устройств
Средства защиты ОС Solaris 7 можно разделить на черыре уровня:
- Контроль входа в систему. Этот уровень содержит средства и механизмы, позволяющие системному администратору определять и контролировать кто имеет право входа в систему.
- Контроль доступа к системным ресурсам. Этот уровень содержит средства и механизмы, позволяющие системному администратору определять правила разграничения доступа и осуществлять контроль их выполнения.
- Защита распределенных сетевых сервисов средствами аутентификации и шифрования данных.
- Контроль доступа на сетевом уровне. Этот уровень включает в себя межсетевые экраны, осуществляющие контроль и фильтрацию трафика между внутренними и внешними сетями, а также между различными сегментами локальной сети.
Рисунок 1 Уровни защиты ОС Solaris
Контроль входа в систему
Первый уровень защиты ОС Solaris включает средства, позволяющие системному администратору контролировать вход пользователей в систему, путем добавления в систему новых пользователей, удаления пользователей из системы, изменения их регистрационных данных и управления паролями пользователей. Ключевым вопросом является защита паролей пользователей. Для назначения, изменения и защиты паролей используются средства управления паролями, позволяющие администратору определять политику управления паролями, с целью повышения надежности паролей. Политика управления паролями определяет сроки действия паролей, сложность паролей, порядок их назначения и хранения и т. п. Средства управления паролями ОС Solaris включают базовые средства и средства контроля удаленного входа в систему.
1. Базовые средства управления паролями ОС Solaris включают в себя:
Проверка паролей при входе пользователя в систему
Осуществляется проверка введенного пользователем пароля с паролем этого пользователя, хранящимся в специальном файле паролей в зашифрованном виде. Пользователю разрешается вход в систему только, если проверка проверка пароля завершается удачно.
Поддержка старения паролей
Средства поддержки старения паролей позволяют администратору установить дату истечения действия пароля. При приближении этой даты пользователю будет сообщено об истечении срока действия его пароля и будет предложено установить новый пароль. В случае если срок действия пароля истек, а новый пароль не был установлен, пользовательский бюджет будет заблокирован.
Запрет на повторное использование паролей
Это средство не позволяет пользователю установить пароль, который он уже использовал ранее. Это повышает надежность паролей, т. к. чем дольше используется один и тот же пароль, тем выше вероятность его раскрытия.
Проверка сложности паролей
Средство проверки сложности паролей позволяет гарантировать, что устанавливаемые пользователями пароли будет трудно подобрать. С этой целью осуществляется проверка количества букв и цифр в пароле.
Все пароли храняться в файле /etc/shadow, недоступном для чтения и модификации всеми пользователями системы, за исключением пользователя root
Блокирование неактивных пользовательских бюджетов
Средство блокирования неактивных пользовательский бюджетов позволяет администратору установить дату истечения срока действия пользовательского бюджета. По истечению этого срока пользовательский бюджет будет заблокирован.
2. Контроль удаленного входа в систему по коммутируемым каналам связи
Базовые средства контроля удаленного доступа ОС Solaris обеспечивают парольную защиту доступа к портам ввода-вывода, используемым для подключения модемов. Если для модемного порта был установлен пароль, то при удаленном входе в систему пользователь должен сначала ввести этот пароль и, в случае успеха, осуществляется формальная процедура входа в систему, включающая аутентификацию пользователя.
Линия программных продуктов Sun Security Manager дополнительно содержит следующие средства контроля входа в систему:
- ограничение времени, в течении которого разрешается вход в систему;
- автоматическое блокирование входа в систему после определенного количества неудачных попыток аутентификации;
- автоматическое блокирование или завершение интерактивного сеанса работы пользователя после заданного периода неактивности;
- дополнительный контроль получения полномочий суперпользователя, дополнительно требующий введения специального пароля.
Контроль доступа к системным ресурсам
На этом уровне осуществляет контроль доступа к системным ресурсам со стороны пользователей, успешно зарегистрировавшихся в системе, и запущенных ими процессов.
В состав базовых средств защиты этого уровня входят следующие программые пакеты:
Подсистема контроля и восстановления целостности системного ПО ASET
Подсистема ASET позволяет администратору оценить общую защищенность системы и установить параметры системы в соответствии в выбранным уровнем безопасности. Имеется три предопределенных уровня безопасности: низкий, средний и высокий.
Проверки состояния системы осуществляются периодически, при этом администратор системы извещается о потенциальных брешах в защите. Проверки, производимые ASET, включают в себя:
- Существование пароля для программы EEPROM, предотвращающего загрузку системы в однопользовательском режиме неуполномоченным на это лицом.
- Неправильное использование переменной UMASK, определяющей права доступа к файлам, устанавливаемые по-умолчанию при их создании.
- Неправильное использование переменной PATH, определяющей порядок просмотра каталогов для запуска программы.
- Права доступа к системным файлам.
- Наличие новых программ с установленным битом смены владельца при запуске.
- Права доступа к домашним каталогам пользователей.
- Содержимое файлов .rhosts, /etc/passwd, /etc/group.
- Размеры файлов в каталогах /usr/bin и /bin.
Сообщения о выявленных брешах в защите могут посылаться администратору по электронной почте.
На низком уровне безопасности проверяется установка прав доступа к файлам в свое начальное состояние, в котором они находились после установки системы. На этом уровне осуществляется ряд проверок и администратору сообщается об обнаруженных уязвимостях.
В большинстве случаев адекватную защиту обеспечивает средний уровень безопасности. На этом уровне ASET изменяет права доступа к некоторым системным файлам (таким как ttytab, host.equiv и т. п.) и определенные параметры системы, связанные с безопасностью. Кроме того, на этом уровне выполняются дополнительные проверки защищенности системы.
При выборе высокого уровня безопасности достигается наибольшая защищенность. Многие системные файлы и параметры устанавливаются таким образом, чтобы обеспечить минимальный уровень доступа. На этом уровне безопасности отключается маршрутизация IP-пакетов и проверяются параметры межсетевого экрана (МЭ).
Средства разграничения доступа к файлам
ОС Solaris поддерживает два механизма разграничения доступа к файлам:
- страндартные средства ОС UNIX устрановки прав доступа к файлам, совместимые со спецификацией SVID
- списки контроля доступа (ACL), совместимые со спецификацией POSIX 1003.6, поддерживаются для UFS и NFS версий 2 и 3.
Стандартные средства разграничения доступа к файлам позволяют устанавливать права на чтение, запись и выполнение для следующих категорий пользователей: владельца файла, группы владельца и всех остальных. Существенным ограничением этого механизма является то, что он не позволяет определять права доступа к файлу для конкретного пользователя или группы.
Механизм разграничения доступа, основанный на списках контроля доступа (ACL), расширяет стандартный средства, позволяя определять права доступа к файлу для любого конкретного пользователя и группы. Список контроля доступа содержит записи контроля доступа к файлу, определяющие полномочия отдельных пользователей и групп.
Рисунок 2 Списки контроля доступа к файлам
Подсистема регистации и учета
Подсистема регистрации и учета ОС Solaris содержит две группы средств, позволяющих осуществлять регистрацию системных событий и осуществлять анализ полученных данных:
- стандартные средства регистрации системных событий
- подсистема аудита безопасности
Стандартные средства регистрации системных событий позволяют регистрировать события, связанные с входом в систему, использованием системных ресурсов, пользовательских квот и т. п. в системных журналах (syslogs). Многие модули ОС используют системные журналы для регистрации событий, связанных с их функционированием и извещения администратора о наступлении этих событий. Этот механизм может быть расширен путем написание специальных сценариев Shell (wrappers) с целью отслеживания конкретных ситуаций.
Подсистема аудита безопасности ОС Solaris является более мощным средством регистрации и анализа системных событий по сравнению с системными журналами, позволяющее производить более детальный анализ событий происходящих в системе. Аудит безопасности позволяет осуществлять регистрацию отдельных типов и классов событий для конкретных пользователей в соответствии с политикой аудита. Политика аудита устанавливается администратором безопасности. Регистрация событий может осуществляться на уровне системных вызовов.
Общая схема КСЗ
Рисунок 3 Общая схема КСЗ ОС Solaris
Модель защиты ОС Solaris
Данный раздел содержит описание модели защиты ОС Solaris 7 в терминах субъектов и объектов доступа, полномочий и прав доступа, атрибутов безопасности, используемых правил разграничения доступа (ПРД), а также механизмов установки и изменения ПРД.
Модель разграничения доступа
В ОС Solaris 7 используется дискреционная (полномочная) модель разграничения доступа. В соответствии с этой моделью, система защиты представляется в виде декартова произведения множеств составными частями которого являются субъекты и объекты доступа, полномочия, а также операции производимые субъектами над объектами.
Субъекты доступа
В качестве субъектров доступа в модели защиты ОС Solaris 7 выступают локальные и удаленные пользователи, а также локальные и удаленные процессы.
Профили пользователей
Профиль пользователя — это структура данных, содержащая информацию о статусе пользвателя, которая характеризует его с точки зрения безопасности. Информация о статусе пользователей системы находится в файле /etc/passwd и базах данных системы NIS или NIS+. Для просмотра информации о статусе пользователей системы используется команда logins.
Процессы
Каждый процесс представлен в системе двумя основными структурами данных – proc и user, описанными соответственно в файлах <sys/proc.h> и <sys/user.h>. Эти структуры данных используются ядром для управления процессами и, в том числе, для осуществления контроля доступа процессов к системным ресурсам. Контроль доступа осуществляется на основании значения эффективного идентификатора пользователя и группы владельцев процесса (eUID, eGID), которые не всегда соответствуют реальным идентификаторам (rUID, rGID). Реальный пользовательский идентификатор позволяет установить пользователя, запустившего процесс. Все идентификаторы, связанные с процессом, содержаться в структуре данных proc.
Объеты доступа
В качестве объектов доступа в модели защиты ОС Solaris 7 выступают файлы, области виртуальной памяти, а также объекты межпроцессорного взаимодействия и синхронизации (очереди сообщений и наборы семафоров).
Атрибуты безопасности файлов
В качестве атрибутов безопасности файлов выступают идентификаторы владельца и группы владельца, позволяющие установить принадлежность файла, а также набор флагов доступа, определяющих права доступа к файлу для различных категорий пользователей (см. раздел «Средства разграничения доступа ОС Solaris).
Атрибуты безопасности областей виртуальной памяти
Механизмы защиты сегментов и страниц виртуальной памяти описаны в соотвествующей части раздела «Средства разграничения доступа ОС Solaris». Они в большой степени определяются архитектурой ЦП и, соответственно, будут существенно различаться для платформ Intel и SPARC.
Атрибуты безопасности объектов межпроцессорного взаимодействия и синхронизации
К объектам межпроцессорного взаимодействия и синхронизации System V IPC относятся сообщения, семафоры и области разделяемой памяти. Атрибуты безопасности этих объектов содержаться в структуре данных ipc_perm, описанной в файле <sys/ipc.h>. Они включают в себя идентификаторы пользователя и группы создателя объекта (CUID, CGID), идентификаторы пользователя и группы владельца объекта (UID, GIU) и флаги доступа (поле mode). (см. раздел «Средства разграничения доступа ОС Solaris»).
Модель принадлежности объектов
На процессы и файлы в ОС UNIX распространяется единая система принадлежности объектов. Преимущественное право контроля над файлом или процессом принадлежит владельцу. Права владельца могут отменяться только суперпользователем.
Принадлежность файлов
У каждого файла есть владелец и группа. Владелец имеет только одну привилению, которая другим пользователям системы недоступна: он может изменять права доступа к файлу. Владелец файла определяет какие права доступа к файлу имеют члены группы владельца и все остальные пользователи. Владелец файла также может определять списки контроля доступа к файлу, содержащие права доступа для конкретных пользователей и групп.
Для осуществления контроля доступа ОС использует не символьные имена владельцев и групп, а их идентификаторы. Идентификаторы пользователей (UID) и соответствующие им имена пользователей, вместе с другими данными профиля пользвателя, храняться в файле /etc/passwd, а идентификаторы групп (GID) и соответствующие им имена групп, — в файле /etc/group.
Принадлежность процессов
Ядро назначает каждому пользователю четыре идентификатора:
- реальный UID
- эффективный UID
- реальный GID
- эффективный GID
Реальные идентификаторы используются для учета использования системных ресурсов, а эффективные — для определения прав доступа. Как правило, реальные и эффективные идентификаторы совпадают. Владелец процесса может посылать процессу сигналы, а также понижать приоритет процесса. Повышать приоритет процесса может только суперпользователь.
Описание интерфейсов КСЗ ОС Solaris 7
Для взаимодействия с окружающей средой ОС Solaris содержит широкий набор интерфейсов, включающий в себя программные интерфейсы, различные элементы пользовательского интерфейса, сетевые протоколы и правила именования и хранения объектов в файловой системе.
Программные интерфейсы
Программные интерфейсы по своему назначению делятся на две части: интерфейсы прикладного программирования и интерфейсы системного программирования. Интерфейсы прикладного программирования предназначены для взаимодействия прикладных программ с ядром ОС и используются разработчиками прикладного ПО. Интерфейсы системного программирования предназначены для взаимодействия между отдельными модулями ОС (например, ядра системы и драйверами устройств) и используются для расширения функциональности ОС (например, написание новых драйверов).
Интерфейсы прикладного программирования
Интерфейс ядра ОС с приложениями реализован в библиотеке системных функций.
Прикладные процессы осуществляют взаимодействие с ядром ОС от лица пользователей, используя следующие группы интерфейсов прикладного программирования (API):
- API управления процессами
- API управления виртуальной памятью
- API управления вводом-выводом
- API межпроцессорного взаимодействия
Интерфейсы пользователя
Интерфейсы КСЗ с пользователем включают в себя команды, которые могут использоваться пользователем для смены пароля (passwd), получения полномочий другого пользователя (su, sudo), и изменения атрибутов безопасности файлов, владельцем которых он является. Все остальные средства управления безопасностью пользовательского уровня доступны только системному администратору (пользователю с именем root). Описание этих команд приводится в соответствующих разделах конструкторской документации.
Команды для просмотра и изменения атрибутов безопасности файлов:
Команда | Описание |
ls | Просмотр списка файлов каталога и их атрибутов |
chown | Смена владельца файла |
chgrp | Смена группы владельца файла |
chmod | Смена прав доступа к файлу |
umask | Установка стандартной маски доступа |
Средства администрирования безопасности ОС Solaris 7
Требования к средствам администрирования безопасности
Согласно Профилю защиты CS2 к средствам администрирования безопасности предъявляются следующие группы требований:
Базовые требования к средствам администрирования безопасности
- Функции управления безопасностью должны быть отделены от остальных функций системного администрирования.
- Набор функций администрирования безопасности должен включать в себя все функции, необходимые для установки, настройки и управления КСЗ. Задачи администрирования безопасности перечислены в соответствующем параграфе данного раздела.
- Возможность выполнения функций управления безопасностью должна быть предоставлена, только авторизованным пользователям.
- Пользователей, наделенных административными полномочиями, необходимо отличать от других пользователей.
Функции управления безопасностью
Требования безопасности этой группы определяют список параметров защиты и функций безопасности ОС Solaris.
- Администратору должна быть предоставлена возможность устанавливать и изменять параметры защиты перечисленные ниже.
- Администратору должны быть предоставлены функции администрирования безопасности, перечисленные ниже.
Тестирование КСЗ
Администратору должна быть предоставлена возможность проверки правильности функционирования КСЗ.
Документированность средств администрирования безопасности
Руководство системного администратора должно содержать подробное описание всех функций администрирования безопасности и их параметров.
Параметры защиты ОС Solaris 7
Защищенность ОС Solaris 7 определяется следующими основными группами параметров:
- уровень безопасности
- параметры, определяющие настройку средств регистрации системных событий в системных журналах
- параметры, определяющие политику аудита безопасности
- параметры, определяющие политику управления паролями
- набор подключаемых модулей аутентификации
- параметры контроля доступа к системе
- параметры настройки средств выделения и очистки внешних устройств
Задачи администрирования безопасности ОС Solaris 7
Администрирование безопасности ОС выполняется системным администратором (пользователем с именем root) и включает в себя выполнение следующих задач:
- определение правил разграничения доступа к файлам
- управление паролями
- управление пользовательскими бюджетами (администрирование пользователей и групп)
- настройка средств аутентификации пользователей
- настройка средств контроля целостности и тестирования безопасности системы подсистемы ASET
- настройка средств регистрации системных событий в системных журналах (syslogs)
- настройка подсистемы аудита безопасности и управление политикой аудита
Управление пользователями и группами
Таблица 2 Управление пользователями и группами
Задача | Используемая служба имен | Команды администрирования |
Добавление пользовательского бюджета | NIS+ | nistbladmnisclient |
NIS | useraddmake | |
None | useradd | |
Изменение пользовательского бюджета | NIS+ | nistbladm |
NIS | usermodmake | |
None | usermod | |
Удаление пользовательского бюджета | NIS+ | nistbladmnisclient |
NIS | userdelmake | |
None | userdel | |
Установка стандартных заначений параметров пользовательского бюджета | NIS+ | not available |
NIS | useradd -Dmake | |
None | useradd -D | |
Блокирование пользовательского бюджета | NIS+ | nistbladm |
NIS | passwd -r nis -lmake | |
None | passwd -r files -l | |
Смена пароля пользователя | NIS+ | passwd -r nisplus |
NIS | passwd -r nis | |
None | passwd -r files | |
Сортировка пользовательских бюджетов | NIS+ | niscatsort |
NIS | ypcatsort | |
None | awksort | |
Поиск пользовательских бюджетов | NIS+ | nismatch |
NIS | ypmatch | |
None | grep | |
Добавление группы | NIS+ | nistbladm |
NIS | groupaddmake | |
None | groupadd | |
Изменение состава членов группы | NIS+ | nistbladm |
NIS | groupmodmake | |
None | groupmod | |
Удаление группы | NIS+ | nistbladm |
NIS | groupdelmake | |
None | groupdel |
Средства разграничения доступа ОС Solaris 7
Этот раздел содержит описание средств и механизмов разграничения доступа ОС Solaris 7. Правила разграничения доступа установливают порядок получения доступа субъектов, в качестве которых выступают пользовательские процессы, к объектам доступа, в качестве которых выступают файлы и области виртуальной памяти.
Требования, предъявляемые к средствам разграничения доступа
Согласно Профилю защиты CS2 к средствам разграничения доступа ОС Solaris предъявляются следующие группы требований:
Требования к средствам разграничения доступа на уровне файлов
Контроль доступа субъектов к объектам
1. КСЗ должен содержать функции разграничения доступа, поддерживающие списки контроля достура, которые определяют правила разграничения доступа для:
- субъектов доступа, действующих от лица пользователей;
- объектов доступа;
- операций чтения, записи и выполнения между субъектами и объектами доступа.
Контроль доступа, основанный на значениях атрибутов безопасности
1. КСЗ должен осуществлять контроль доступа к объектам на основе значений следующих атрибутов субъектов доступа:
- идентификатор пользователя;
- идентификаторы групп, членом которых является пользователь.
Уточнение:
пользователь может одновременно являться членом нескольких групп.
2. К правилам разграничения доступа предъявляются следующие требования:
- Должна присутствовать возможность разрешения или запрещения отдельных видов доступа для отдельных пользователей и групп.
- Должны быть определены по крайней мере два вида доступа, эквивалентные чтению и записи.
- Должна присутствовать возможность разрешения или запрещения доступа для всех пользователей, для которых они явным образом не определены.
- Правила разграничения доступа должны применяться в соответствии с их приоритетами, согласно следующему списку правил, расположенных в порядке убывания приоритетов.
- Запрещение данного вида доступа для данного пользователя;
- Разрешение данного вида доступа для данного пользователя;
- Запрещение данного вида доступа для данной группы доступа;
- Разрешение данного вида доступа для данной группы доступа;
- Запрещение данного вида доступа для всех остальных пользователей;
- Разрешение данного вида доступа для всех остальных пользователей;
- Запрещение данного вида доступа в противном случае.
3. КСЗ должен предоставлять функции безопасности, позволяющие предоставлять доступ на основе значений атрибутов безопасности субъектов и объектов доступа.
4. КСЗ должен предоставлять функции безопасности, позволяющие запрещать доступ на основе значений атрибутов безопансности субъектов и объектов доступа.
Инициализация атрибутов безопаности
1. Атрибутам безопасности должны по-умолчанию назначаться значения, ограничивающие доступ субъектов к объектам.
2. Должна существовать возможность изменения атрибутов доступа, назначаемых объекту при его создании.
3. Право изменения значений этих атрибутов доступа должно предоставляться только администратору безопасности.
4. Авторизованным пользователям, также должна предоставляться возможность изменения своих атрибутов безопасности.
Уточнение:
Пользователи должны иметь возможность изменять атрибуты доступа принадлежащих им объектов.
Изменение основных прав доступа
1. Авторизованные пользователи должны иметь возможность изменять права доступа к объектам.
Уточнение:
Владельцы объектов должны иметь возможность изменять права доступа к объектам, которыми они владеют.
Просмотр атрибутов безопасности пользователей
1. Авторизованные пользователи должны иметь возможность просматривать следующие атрибуты безопасности:
- идентификатор пользователя;
- идентификатор группы;
- принадлежность пользователя группе;
- отдельные элементы списка контроля доступа (идентификатор пользователя и группы, вид доступа, право доступа).
Требования к средствам разграничения доступа системного уровня
Блокирование сеанса работы пользователя, инициируемое КСЗ
1. КСЗ должен блокировать сеанс работы пользователя после заданного периода неактивности пользователя путем:
- очистки или перезаписи информации на устройстве отображения, делающей его содержимое недоступным;
- прекращение функционирования пользовательских устройст доступа/отображения информации, за исключением механизма разблокирования сеанса работы.
2. Только администратору должно быть предоставлено право установки значения периода неактивности пользователя.
3. Для разблокирования сеанса работы пользователя требуется проведение его аутентификации.
Блокирование сеанса работы, инициируемое пользователем
1. Должна быть предоставлена возможность блокирования сеанса работы пользователя им самим путем:
- очистки или перезаписи информации на устройстве отображения, делающей его содержимое недоступным;
- прекращение функционирования пользовательских устройст доступа/отображения информации, за исключением механизма разблокирования сеанса работы.
2. Для разблокирования сеанса работы пользователя требуется проведение его аутентификации.
Завершение сеанса работы пользователя по инициативе КСЗ
1. Интерактивный сеанс работы пользователя должен завершаться по истечении заданного периода неактивности по инициативе КСЗ.
2. Только администратору должна быть предоставлена возможность установки значения периода неактивности.
Настраиваемые извещения при получении доступа к ОС
1. При входе пользователя в систему на экран должно выводиться предупреждающее сообщение о недопустимости и последствиях несанкционированного доступа к системным ресурсам.
2. Право изменения текста предупреждающего сообщения должно быть предоставлено только администратору.
История входа в систему
1. После успешного входа пользователя в систему КСЗ должен выводить на экран дату и время последней удачной попытки входа этого пользователя в систему, способ входа (локальная или удаленная регистрация) и имя терминала, с которого осуществлялся вход.
2. После успешного входа пользователя в систему КСЗ должен выводить на экран дату и время последней неудачной попытки входа этого пользователя в систему, способ входа (локальная или удаленная регистрация), имя терминала, с которого осуществлялся вход и количество неудачных попыток входа, начиная с последней удачной попытки.
3. Определенные в предыдущих требованиях данные не могут быть удалены без вмешательства пользователя.
Ограничение входа в систему
1. Должна существовать возможность ограничения входа в систему в зависимости от дня недели и времени суток.
Уточнение:
1. Администратор должен иметь возможность определять порядок доступа к системе в зависимости от времени суток, дня недели и любой календарной даты.
2. Должна существовать возможность ограничения входа в систему в зависимости от точки входа.
3. Должна существовать возможность ограничения входа в систему в зависимости от способа входа (локальная или удаленная регистрация, интерактивный или неинтерактивный сеанс работы).
4. Условия, ограничивающие вход в систему, должны задаваться только администратором.
Временные ограничения при авторизации
1. Администратор может устанавливать время истечения действия пользовательских паролей.
2. По истечении срока действия пользовательских паролей бюджеты пользователей должны блокироваться.
Уточнение:
1. Должно поддерживаться старение паролей для пользователей, групп или ролей (пользователь должен будет сменить пароль по истечении установленного интервала времени).
2. По окончании срока действия пароля, он становиться недействительным.
3. Должен существовать защищенный механизм для предупреждения пользователей о скором истечении срока действия их паролей. Это может быть сделано следующими способами:
- Предупреждение пользователя в течении установленного промежутка времени перед истечением срока действия пароля;
- Извещение пользователя об истечении срока действия его пароля, но разрешение ему регистрации в системе еще несколько раз со старым паролем.
Уровни разграничения доступа
КСЗ ОС Solaris включает в себя средства разграничения доступа трех уровней:
- стандартные средства разграничения доступа на уровне файловой системы;
- средства разграничения доступа на уровне системы;
- средства разграничения доступа на уровне сети.
Стандартные средства разграничения доступа на уровне файлов включают команды ОС, выполняющие следующие функции:
- просмотр атрибутов доступа файла (каталога, внешнего устройства);
- смена владельца и группы владельца файла (каталога, внешнего устройства);
- изменение атрибутов доступа файла (каталога, внешнего устройства);
- определение, изменение, просмотр и удаление списков контроля доступа (СКД) файлов (каталогов, внешних устройств).
Средства разграничения доступа системного уровня, включают команды ОС, выполняющие следующие функции:
- получение информации о статусе пользователя;
- временное блокирование пользовательских бюджетов;
- средства регистрации неудачных попыток входа в систему;
- задание паролей для установки удаленных соединений по коммутируемым каналам связи;
- временное блокирование удаленных пользовательских бюджетов;
- блокирование удаленного входа в систему в качестве суперпользователя;
- выявление пользователей использующих команду su;
- регистрация попыток входа суперпользователя в систему с консоли.
Средства разграничения доступа на уровне файлов
Модель разграничения доступа к файлам
Классы пользователей
Права доступа к файлу определяются для трех классов пользователей:
- владелец файла или каталога – обычно, это пользователь создавший файл. Владелец файла может устанавливать права доступа к файлу: право на чтение, право на запись и право на выполнение.
- члены группы владельца.
- все остальные пользователи, невошедшие в первые два класса.
Права доступа к файлам
Права доступа к файлу могут установливаться только владельцем этого файла или суперпользователем. В следующей таблице показаны права доступа к файлам, предоставляемые каждому классу пользователей.
Таблица 3 Права доступа к файлам
Обозначение | Название | Содержание |
r | чтение | Позволяет открывать файл и читать его содержимое |
w | запись | Позволяет осуществлять запись в файл (изменять его содержимое), добавлять записи в файл и удалять его. |
x | выполнение | Позволяет запускать файл на выполнение в случае, если он содержит программу или сценарий на языке Shell, или выполнять его при помощи системного вызова exec. |
— | отсутствует | Отсутствуют права на чтение, запись и выполнение для данного файла. |
Эти права доступа применяются для специальных файлов устройств, именованных программных каналов (FIFO-файлов) и сокетов точно также как и для обычных файлов.
Права доступа к каталогам
Перечисленные выше права доступа для каталогов имеют другое значение. В следующей таблице показаны права доступа к каталогам, предоставляемые каждому классу пользователей.
Таблица 4 Права доступа к каталогам
Обозначение | Название | Содержание |
r | Чтение | Просмотр содержимого каталога |
w | Запись | Создание и удаление файлов или ссылок в каталоге |
x | Выполнение | Отрытие и выполнение файлов, содержащихся в каталоге. Также разрешается создание вложенных каталогов в текущем каталоге. |
Защита файлов находящихся внутри каталога может осуществляться путем запрещения доступа к этому каталогу (и его подкаталогам). Однако суперпользователь имеет доступ ко всем файлам и каталогам имеющимся в системе независимо от установленных прав доступа к ним.
Специальные полномочия для файлов
Для исполняемых файлов и для каталогов существуют три вида специальных полномочий. Когда эти полномочия установлены, файл запускается на выполнение от имени владельца этого файла (или группы владельца), в независимости от того, каким пользователем он был запущен.
Полномочие setuid
Когда для исполняемого файла установлено полномочие setuid, процесс, осуществляющий выполнение этого файла получает полномочия его владельца (обычно это пользователь root), а не того пользователя, который запустил файл на выполнение. При этом эффективный идентификатор пользователя для данного процесса (EUID) изменяется на идентификатор владельца файла. Это позволяет пользователям осуществлять доступ к файлам и каталогам, к которым разрешен доступ только их владельцам.
Например, установка полномочия setuid для программы passwd позволяет пользователям изменять свои пароли, получая для этого полномочия суперпользователя:
-r-sr-sr-x 1 root sys 10332 May 3 08:23 /usr/bin/passwd
Полномочие setgid
Когда для исполнимого файла установлено полномочие setgid, эффективный идентификатор группы (EGID) для процесса, осуществляющего выполнение этого файла, изменяется на идентификатор группы владельца файла, и пользователь неявно получает полномочия этой группы.
Когда полномочие setgid устанавливается для каталога, создаваемые в этом каталоге файлы будут принадлежать той же группе, что и сам каталог, а не той группе, к которой принадлежит создавший эти файлы процесс. Любой пользователь, имеющий права по записи и выполнению для данного каталога может создавать в нем файлы, однако эти файлы будут принадлежать не группе этого пользователя, а группе-владельцу каталога.
Пример установки полномочия setgid для программы /usr/bin/mail:
-r-x—s—x 1 bin mail 62504 May 3 07:58 /usr/bin/mail
Стики бит (sticky bit)
Стики бит используется для защиты файлов внутри каталога. Если для каталога установлен стики бит, то файлы в этом каталоге могут быть удалены только их владельцем, владельцем каталога или суперпользователем. Это предотвращает удаление пользователями файлов других пользователей из совместно используемых каталогов, таких как /tmp:
drwxrwxrwt 7 sys sys 517 Mar 6 02:01 tmp
Стандартная маска доступа umask
При создании файла или каталога он получает стандартный набор полномочий. Стандартные полномочия определяются значением переменной umask в системном файле /etc/profile или в пользовательских файлах инициализации .cshrc и .login. По умолчанию, для текстовых файлов устанавливаются права доступа 666, предоставляющие права чтения и записи владельцу файла, группе владельца и всем остальным пользователям, а для каталогов и исполнимых файлов устанавливаются права доступа 777.
Значение переменной umask вычитается из значения, используемого по умолчанию. Команда umask отбирает полномочия в противоположность команде chmod, предоставляющей их. Например, в то время как команда chmod 022 предоставляет право записи для группы владельца и всех остальных пользователей, команда umask 022 отбирает у этих категорий пользователей право на запись в этот файл.
В следующей таблице показаны значения переменной umask для различных уровней безопасности и то, как они влияют на права доступа к исполнимым файлам.
Таблица 5 Значения переменной umask
Уровень безопасности | Значение umask | Отменяемые полномочия |
Низкий (744) | 022 | w для группы и остальных |
Средний (740) | 027 | w для группы и rwx для остальных |
Средний (741) | 026 | w для группы и rw для остальных |
Высокий (700) | 077 | rwx для группы и остальных |
Средства просмотра и редактирования прав доступа к файлам
Просмотр атрибутов файла
Просмотр информации по всем файлам в директории производится командой ls
$ ls –la
Ключи команды:
-l Длинный формат вывода
-a Вывод всех файлов и каталогов в подкаталоге, включая скрытые файл
Каждая строка вывода несет следующую информацио о файле:
• Тип файла
Возможные варианты
— : Текст или программа
d : Каталог
b : Блок-ориентированый файл устройства
c : Байт-ориентированный файл устройства
p : Именованный канал (FIFO)
l : Символическая ссылка
• Права доступа
• Количество ссылок
• Имя владельца файла
• Группу владельца файла
• Размер файла в байтах
• Дату создания (последнего изменения) файла
• Имя файла
Порядок смены владельца файла (каталога)
Для смены владельца файла необходимо получить права администратора системы. По умолчанию владелец файла (каталога) не может пользоваться командой chown. Для того, чтобы разрешить это, в системный файл /etc/system необходимо добавить строку:
set rstchown = 0
и произвести перезагрузку системы.
Смена владельца файла (каталога) производится при помощи команды chown.
# chown newowner filename
newowner : Определение имени пользователя или UID (идентификатора) нового владельца файла (каталога)
filename : Имя файла (каталога)
Порядок смены группы владельца файла (каталога)
Для смены группы владельца файла необходимо получить права администратора системы. По умолчанию владелец файла (каталога) может использовать команду chgrp для смены группы владельца файла. Если данный пользователь принадлежит к группам staff и sysadm, то группа владельцев файла может принимать только эти значения.
Однако существует возможность разрешить пользователю изменять группу владельцев файла на произвольную. Это можно обеспечить, если добавить в системный файл /etc/system строку:
set rstchown = 0
и произвести перезагрузку системы.
Смена группы владельца файла (каталога) производится при помощи команды chgrp.
# chgrp group filename
group : Определение имени группы или UID (идентификатора) новой группы владельца файла (каталога)
filename : Имя файла (каталога)
Режимы редактирования прав доступа
Команда chmod позволяет пользователю (или администратору системы) задавать и изменять права доступа к файлам (каталогам). сhmod допускает два режима использования:
Абсолютный метод : Права доступа к файлу описываются при помощи трех восьмеричных цифр — по одной на каждую категорию пользователей (владелец, группа владельца, все остальные). Значение восьмеричных цифр приведены в таблице 6.
Символьный метод : Для редактирования прав доступа используется комбинация букв и символов.
Таблица 6 Задание прав доступа при помощи абсолютного метода
Восьмеричное значение | Права доступа | Краткое описание |
0 | — | Отсутствие прав доступа |
1 | —x | Право только на выполнение |
2 | -w- | Право только на запись |
3 | -wх | Право на запись и выполнение |
4 | r— | Право только на чтение |
5 | r-x | Право на чтение и выполнение |
6 | Rw- | Право на чтение и запись |
7 | Rwx | Право на чтение, запись и выполнение |
Специальные права доступа определяются также при помощи этих двух методов. При использовании абсолютного метода необходимо добавить новое восьмеричное число слева от трех чисел, описывающих права доступа. Допустимые значения приведены в таблице 7.
Таблица 7 Задание специальных прав доступа при помощи абсолютного метода
Восьмеричное число | Тип специальных прав доступа |
1 | Маркирующий бит |
2 | setguid |
4 | setuid |
При использовании символьного метода вся управляющая информация представляется специальными наборами символов. Указатели who, operator, permissions определяют соответственно: субъекта, чьи права доступа изменяются, выполняемую операцию и набор прав доступа.
Таблица 8 Задание прав доступа при помощи символьного метода
Символ | Категория | Описание |
U | Who | Пользователь (владелец) |
G | Who | Группа владельца |
O | Who | Все остальные |
A | Who | Все |
= | Operation | Присвоение |
+ | Operation | Добавление |
— | Operation | Удаление |
R | Permission | Право на чтение |
W | Permission | Право на запись |
X | Permission | Право на выполнение |
L | Permission | Принудительное закрытие, бит setgid выставлен, бит группового выполнения отключен. |
S | Permission | Выставлены биты setuid или setgid |
S | Permission | Бит suid выставлен, бит выполнения пользователем отключен |
T | Permission | Маркирующий бит выставлен. Бит выполнения для всех остальных пользователей выставлен. |
T | Permission | Маркирующий бит выставлен. Бит выполнения для всех остальных пользователей отключен. |
Редактирование прав доступа при помощи абсолютного метода
Изменение прав доступа к файла (каталогам) может производится только их владельцем или администратором системы. Для этого используется команда chmod
$ chmod nnn filename
nnn : Три восьмеричных цифры, определяющие права доступа для владельца файла, группы владельца и всех остальных.
filename : Определение имени файла (категории)
Редактирование специальных прав доступа при помощи абсолютного метода
Установка специальных прав доступа к файлам (каталогам) может производится только их владельцем или администратором системы. Для этого используется команда chmod
$ chmod nnnn filename
nnnn : Первая (самая левая) цифра определяет специальные права доступа к файлу. Три остаьные восьмеричных цифры, определяющие права доступа для владельца файла, группы владельца и всех остальных.
filename : Определение имени файла (категории)
Использование команды chmod для изменения групповых прав доступа к файлу, имеющему AСL, требует внесения изменений как в описание прав доступа так и в маску ACL. Следует соблюдать осторожность, поскольку маски прав доступа ACL могут изменить действующие права доступа для тех дополнительных пользователей и групп, которые имеют разделы ACL, касающиеся данного файла.
Редактирование прав доступа при помощи символьного метода
Изменеие прав доступа к файлу (каталогу) разрешено только владельцу и администратору системы. Изменение производится при помощи команды chmod:
$ chmod who operator permission filename
who : Определение субъекта, чьи права доступа редактируются
operator : Выполняемые действия
permission : Изменяемые права доступа
filename : Имя файла или директории
Допустимые в данном случае символы приведены в таблице 10.
Списки контроля доступа
Стандартный механизм защиты файлов ОС UNIX позволяет определить три вида прав доступа к файлу (чтение, запись и выполнение) для трех категорий пользователей (владелец, группа владельца и все остальные пользователи). Списки контроля доступа расширяют стандартные возможности разграничения доступа к файлам, позволяя определять полномочия для владельца файла, группы владельца, все остальных пользователей, а также для отдельных пользователей и групп, и полномочия используемые по умолчанию для каждой из перечисленных категорий пользователей.
Списки контроля доступа состоят из записей контроля доступа, которые определяются при помощи команды setfacl. Записи контроля доступа состоят из нескольких полей, разделяемых двоеточием:
entry_type:[uid|gid]:perms
Таблица 9 Структура записи контроля доступа
entry_type | Тип записи контроля доступа (например, user – владелец файла или mask – маска доступа) |
uid | Имя пользователя или его идентификатор |
gid | Имя группы или ее идентификатор |
perms | Полномочия, установленные для данного типа записи. Полномочия могут записываться как в цифровом, так и в символьном виде. |
В следующем примере для пользователя nathan устанавливаются полномочия по чтению и записи:
user:nathan:rw-
Списки контроля доступа поддерживаются только для файловой системы UFS. Это означает, что в случае копирования файлов, для которых определены списки контроля доступа, в каталог /tmp, к которому обычно монтируется файловая система TMPFS, списки контроля доступа будут потеряны.
Записи контроля доступа для файлов
В следующей таблице определены записи контроля доступа для файлов. Первые три записи соответствуют стандартным правам доступа к файлам.
Таблица 10 Записи контроля доступа для файлов
Запись контроля доступа | Описание |
u[ser]::perms | Полномочия владельца файла |
g[roup]::perms | Полномочия группы владельца файла |
o[ther]:perms | Полномочия всех остальных категорий пользователей |
m[ask]:perms | Маска списка контроль доступа. Эта маска определяет максимальные полномочия для пользователей не являющихся владельцем файла или членом группы владельца. Маска упрощает задачу изменения полномочий одновременно для всех пользователей и групп. Например, запись mask:r—означает, что пользователи и группы не могут получать другие полномочия, кроме права чтения файла, даже если им были присвоены полномочия записи и выполнения. |
u[ser]:uid:perms | Полномочия для конкретного пользователя. В качестве uid может быть задано имя или идентификатор пользователя. |
g[roup]:gid:perms | Полномочия конкретной группы. В качестве gid может быть задано имя или идентификатор группы. |
Записи контроля доступа для каталогов
В дополнение к записям контроля доступа для файлов, можно также определять стандартные записи контроля доступа для каталогов. Файлы и каталоги, созданные в каталоге, имеющим стандартные записи контроля доступа, будут иметь такие же записи контроля доступа, что и у родительского каталога.
При определении стандартных записей контроля доступа каталога для конкретных пользователей и групп в первый раз, необходимо также определить стандартные записи контроля доступа для владельца, группы-владельца и всех остальных пользователей, а также маску контроля доступа. (Эти четыре записи обязательно должны быть определены и должны стоять на первом месте в стандартном списке контроля доступа для каталога).
Таблица 11 Записи контроля доступа для каталогов
Стандартная запись контроля доступа | Описание |
d[efault]:u[ser]::perms | Стандартные полномочия для владельца файла. |
d[efault]:g[roup]::perms | Стандартные полномочия для группы владельца файла. |
d[efault]:o[ther]:perms | Стандартные полномочия для всех остальных пользователей. |
d[efault]:m[ask]:perms | Стандартная маска контроля доступа. |
d[efault]:u[ser]:uid:perms | Стандартные полномочия для конкретного пользователя. В качестве uid может быть задано имя или идентификатор пользователя. |
d[efault]:g[roup]:gid:perms | Стандартные полномочия для конкретной группы. В качестве gid может быть задано имя или идентификатор группы. |
Средства редактирования списков контроля доступа
Определение списков контроля доступа к файлу производится при помощи команды setfacl
$ setfacl -s user::perms,group::perms,other:perms,
mask:perms,acl_entry_list filename …
здесь:
-s Определение списка контроля доступа для файла. Если список существовует, то после запуска команды он будет заменен. Использование этой опции требует, чтобы были заданы по меньшей мере описания прав доступа для владельца файла, группы владельца и всех остальных пользователей.
user::perms Определение прав доступа для владельца файла.
group::perms Определение прав доступа для группы владельца.
other:perms Определение прав доступа для всех остальных пользователей.
mask:perms Определение прав доступа для маски. Маска показывает, какие максимальные права доступа разрешены для всех пользователей (не являющихся владельцами файла) и для групп.
acl_entry_list Список из одной (или нескольких) строк, определяющих пользователей или группы пользователей для данного файла (каталога).
filename Файл или каталог, для которого определяется список контроля доступа.
Проверка того, существует ли для данного файла список контроля доступа производится при помощи команды ls.
$ ls — l filemane
Знак + справа от типа поля типа показывает, что для файла определен список контроля доступа.
Просмотр разделов списка контроля доступа для данного файла производится при помощи команды getfacl
$ getfacl [-a | -d] filename1 …
-a Отображение имени файла, владельца файла, группу владельца файла и текущих разделов списка контроля доступа, относящихся к указанному файлу (каталогу)
-d Отображение имени файла, владельца файла, группу владельца файла и текущих разделов списка контроля доступа, относящихся к указанному каталогу
filename… Определяет имя файла или каталога
Распространение списка контроля доступа одного файла на другой файл производится через перенаправление вывода команды getfacl
$ getfacl filename1 | setfacl —f — filename2
Здесь file1 — это имя файла, чей список контроля доступа копируется, file2 — имя файла, для которого определяется список контроля доступа.
Внесение изменений в разделы списка контроля доступа, относящиеся к заданному файлу производится при помощи команды setfacl
$ setfacl -m acl_entry_list filename1 [filename2 …]
здесь:
-m Внесение изменений в существующие разделы списка контроля доступа
acl_entry_list Перечень из одного или нескольких редактируемых разделов списка, относящихся к данному файлу (каталогу). Возможно внесение изменений в разделы списка описывающие по умолчанию права доступа к каталогу.
filename… Определяет имя файла или каталога
Удаление из списка контроля доступа разделов, описывающих права доступа к заданному файлу производится при помощи команды setfacl.
$ setfacl -d acl_entry filename1 …
здесь:
-d Стирание указанных разделов списка контроля доступа
acl_entry_list Перечень разделов в списке контроля доступа, которые будут стерты. Права доступа не указываются. Стирание разделов производится только для указанных пользователей или групп.
filename… Определяет имя файла или каталога
Другим способом является использование команды setfacl -s. При этом все разделы списка, относящиеся к файлу стираются и заменяется на указанные.
Полномочия процессов по доступу к системным объектам синхронизации и межпроцессорного взаимодействия
Права доступа к объектам синхронизации и межроцессорного взаимодействия, таким как семафоры, сообщения, области разделяемой памяти, могут быть предоставлены не только их владельцам, но и другим пользователям. Владельцем объекта по умолчанию является пользователь, от лица которого выполнялся создавший его процесс. Однако, в отличии от назначения прав доступа к файлам, создатель объекта может, при его создании, передавать право владения объектом другому пользователю. Он также может отменять право владения объектом. В то же время, процесс, являющийся владельцем объекта, может устанавливать права чтения и записи к объекту для других пользователей.
Структура ipc_perm, содержащая права доступа к объектам синхронизации и межроцессорного взаимодействия, определяется в заголовочном файле <sys/ipc.h>:
struct ipc_perm
{
uid_t uid; /* ID владельца объекта */
gid_t gid; /* ID группы владельца объекта */
uid_t cuid; /* ID создателя объекта */
gid_t cgid; /* ID группы создателя объекта */
mode_t mode; /* ID режим доступа */
ulong seq; /* порядковый номер */
key_t key; /* ключ */
long pad[4]; /* зарезервированная область */
};
Эта структура является общей для семафоров, сообщений и областей разделяемой памяти. Права доступа к объектам первоначально устанавливаются процессом, создавшим этот объект, и могут изменяться любым процессом, имеющим соответствующие полномочия.
Права доступа к объекту задаются восьмеричными значениями в качестве аргументов соответствующих системных функций, используемых для создания и управления объектами:
Таблица 12 Задание прав доступа к объекту
Права доступа | Восьмеричное значение |
Запись для владельца | 0200 |
Чтение для владельца | 0400 |
Запись/Чтение для владельца | 0600 |
Запись для группы | 0020 |
Чтение для группы | 0040 |
Запись/Чтение для группы | 0060 |
Запись для всех остальных | 0002 |
Чтение для всех остальных | 0004 |
Чтение/запись для всех остальных | 0006 |
Правила разграничения доступа к областям виртуальной памяти
Механизмы управления виртуальной памятью обеспечивают трансляцию виртуальных адресов в физические и создание собственного виртуального адресного пространства для каждого процесса, которое полностью изолировано от всех остальных процессов. Процесс отображения виртуальных адресов в физические осуществляется на аппаратном уровне, что обеспечивает высокую скорость трансляции адресов. Ядро операционной системы осуществляет управление этим процессом.
Механизм отображения виртуальных адресов в физические существенным образом зависит от типа процессора (Intel или SPARC). Однако обе аппаратные реализации поддерживают сегментно-страничную организацию виртуальной памяти.
Механизмы защиты областей виртуальной памяти
Процессор поддерживает косвенную адресацию сегментов через дескрипторы сегментов, которые располагаются в специальных таблицах – областях памяти, на которые указывают предназначенные для этого регистры процессора. Ядро операционной системы отвечает за заполнение этих таблиц и установку значений регистров. Другими словами, ядро задает отображение и процессор выполняет отображение на аппаратном уровне. Благодаря такой косвенной адресации логические сегменты защищены друг от друга, что обеспечивает целостность адресного пространства процессов и ядра.
Процесс адресует области виртуальной памяти (сегменты) посредством селекторов, которые указывают на соответствующие записи таблицы дескрипторов сегментов. Селектор содержит уровень привилегий сегмента (RPL), обеспечивающий защиту сегмента. Если процесс, находясь в режиме задачи, попытается обратиться к сегменту, принадлежащему ядру или другому процессу, процессор сгенерирует особую ситуацию, а в ответ на это ядро отправит процессу сигнал SIGSEGV.
Дескрипторы сегментов (кода, стека и данных) содержат поля типа сегмента, прав доступа и привилегий.
Процессор проверяет тип сегмента на соответствие исполняемой команде. Это, в частности, не позволяет интерпретировать информацию сегмента данных как инструкции процессора.
Поле привилегий определяет уровень привилегий сегмента (DPL), к которому процессу разрешен доступ. Оно используется совместно с соответствующим полем селектора для разграничения доступа к сегменту. Для получения доступа к сегменту процесс должен иметь по крайней мере такой же уровень привилегий как и сегмент (RPL >= DPL).
Поле прав доступа, ограничивает множество операций, которые процесс может производить над сегментом. Например, сегмент кода обычно отмечается как исполняемый и читаемый. Сегменты данных могут иметь право доступа только для чтения или для чтения и для записи.
Механизмы защиты станиц виртуальной памяти
При использовании страничного механизма организации виртуальной памяти линейный адрес, полученный в результате сложения базового адреса сегмента и смещения также является логическим адресом, который дополнительно обрабатывается блоком страничной трансляции процессора. В этом случае линейный адрес включает в себя номер записи в каталоге таблиц страниц (PDE), номер записи в соответствующей таблице страниц (PTE) и смещение внутри страницы.
Каждый элемент таблицы страниц содержит поле прав доступа (R/W) и поле привилегий (U/S). Поле прав доступа определяет право на чтение страницы (R/W = 0) и право на чтение и запись (R/W = 1). Поле привилегий может принимать зничения 0 или 1. Если U/S = 0, то только привилегированные задачи (ядро) имеют доступ к станице. В противном случае доступ к странице имеют все задачи.
Средства контроля доступа ОС Solaris 7 на уровне системы
Защита входа в систему, специальные системные пользовательские бюджеты, получение информации о статусе пользователя.
Средства контроля доступа на уровне системы ОС Solaris выполняют следующие функции:
- просмотр информации о статусе пользователей
- просмотр пользователей не имеющих пароля
- временное блокирование пользовательских бюджетов
- регистрация неудачных попыток входа в систему
- создание паролей для удаленного входа в систему
- временное блокирование удаленного входа в систему
- ограничение устройств, с которых суперпользователь может осуществлять регистрацию в системе, системной консолью
- мониторинг событий связанных с использованием команды su
- вывод на системную консоль сообщений о попытках регистрации в системе в качестве суперпользователя
Защита входа в систему
При регистрации пользователя в системе, программа login осуществляет проверку регистрационных данных пользователя на основении информации, содержащейся в регистрационной записи пользователя. Местонахождения регистрационных записей пользователей определяется в файле /etc/nsswitch.conf. Записи этого файла могут содержать следующие ключевые слова:
- files (указывает на /etc файлы)
- nis (указывает на базу данных NIS)
- nisplus (указывает на базу данных NIS+)
Программа login проверяет введенные пользователем имя и пароль. Если введенное пользователем имя отсутствует в файле паролей или если введенный пароль не соответствует имени, то вход в систему запрещается. Если введенное пользователем имя присутствует в файле паролей и введенный пользователем пароль соответствует имени, то пользователю предоставляется доступ к системе.
Специальные системные пользовательские бюджеты
Существует два основных способы входа в систему: используя бюджет обычного пользователя и используя бюджет суперпользователя. Кроме того, существуют специальные системные пользовательские бюджеты, позволяющие выполнять различные задачи по сопровождению и администрированию системы, не используя бюджет суперпользователя. Пароли специальных системных бюджетов назначаются администратором. Следующая таблица содержит список специальных системных пользовательских бюджетов и их назначение. Системные бюджеты предназначены для выполнения специальных системных задач и каждому из них сопоставлен соответствующий идентификатор группы (GID). Каждому из этих бюджетов назначается свой собственный пароль, который может предоставляться пользователям по мере необходимости.
Таблица 13 Специальные системные пользовательские бюджеты
Систеный бюджет | GID | Назначение |
root | 0 | Суперпользователь обладает практически неограниченными полномочиями по доступу ко всем системным ресурсам и на него не распространяются установленные в системе правила разграничения доступа. Пароль суперпользователя должен быть защищен особенно тщательно. |
daemon | 1 | Управляет выполнением задач в фоновом режиме. Файлы, которые должны принадлежать ОС, а не конкретному пользователю, часто назначаются этому пользователю, чтобы уменьшить угрозу безопасности. |
bin | 2 | Является владельцем большинства системных команд, а также большинства выполняемых файлов. |
sys | 3 | Является владельцем многих системных файлов. |
adm | 4 | Является владельцем некоторых конфигурационных файлов, используемых при администрировании. |
lp | 71 | Является владельцем системных файлов, используемых для выполнения заданий печати. |
uucp | 5 | Является владельцем системных файлов, используемых программой UUCP. |
nuucp | 9 | Используется удаленными системами для установки соединения и передачи файлов. |
Получение информации о статусе пользователя
Для того, чтобы получить информацию о статусе пользователя необходимо выполнить следующие действия:
1. Получить права доступа администратора системы
2. Получить сведения о статусе пользователя при помощи команды logins.
# logins -x -l username
здесь:
-x : Отображение расширенного набора сведений о статусе пользователя.
-l username : Отображение сведений о данном пользователе. username представляет собой идентификатор пользователя. Если используется несколько идентификаторов, то они должны быть разделены запятыми.
Отображаемую информацию команда logins считывает из файла /etc/passwd и баз данных паролей NIS или NIS+.
Далее приведен пример, отображающий информацию о статусе пользователя rimmer.
# logins -x -l rimmer
rimmer 500 staff 10 Arnold J. Rimmer
/export/home/rimmer
/bin/sh
PS 010170 10 7 –1
Параметры команды logins приведены в таблице 14
Таблица 14 Описание используемых параметров команды logins
Rimmer | Имя пользователя |
500 | Идентификатор пользователя |
Staff | Основная группа пользователя |
10 | Идентификатор группы пользователя |
Arnold J. Rimmer | Комментарии |
/export/home/rimmer | Home — каталог пользователя |
/bin/sh | Определение login shell |
PS 010170 10 7 -1 | Временные пределы использования пароля:• Дата последнего изменения пароля• Требуемый промежуток времени между изменениями пароля (в днях)• Максимально допустимый промежуток времени между изменениями пароля (в днях)• Период, предшествующий обязательной смене пароля, в течение которого будет выдаваться предупреждение. |
В обязанности администратора системы входит осуществление контроля за тем, чтобы все пользователи имели надежный пароль. Для определения пользователей, не имеющих пароля служит команда logins -p. Правом на ее использование обладает только администратор системы.
Управление паролями в ОС Solaris 7
Файл паролей системы NIS+
В случае использования для централизованного управления паролями в сети системы NIS+, профили пользователей храняться в базе данных NIS+. Права доступа пользователей к этой базе данных определяются сетевым администратором. Для изменения паролей пользователей в базе данных NIS+ можно использовать команду passwd или программу Solstice Security Manager.
Файл паролей системы NIS
В случае использования для централизованного управления паролями в сети системы NIS, пароли пользователей храняться в таблице паролей NIS. Права доступа пользователей к этой таблице определяются сетевым администратором. В отличие от системы NIS+, система NIS не поддерживает старение паролей. Для изменения паролей пользователей в базе данных NIS можно использовать команду passwd или программу Solstice Security Manager.
Файлы паролей каталога /etc
Если для управления паролями в локальной системе используются файлы из каталога /etc, то парольная информация находится в файлах /etc/passwd и /etc/shadow. При этом профили пользователей, включая их имена, идентификаторы, домашние каталоги и т. п., храняться в файле /etc/passwd, а пользовательские пароли храняться отдельно в зашифрованном виде в файле /etc/shadow, закрытом по чтению для всех пользователей, кроме пользователя root. Благодаря этому, обычные пользователи не имеют доступа к зашифрованным паролям, что повышает защищенность системы. Для изменения пользовательских паролей в локальной системе можно использовать программы Solstice AdminSuite’s User Manager, Admintool, или команду passwd.
Структура файла /etc/passwd
Файл /etc/passwd содержит регистрационные записи пользователей. Каждая запись соответствует одному пользователю и состоит из следующих полей, разделенных символом ‘;’:
username:password:uid:gid:comment:home-directory:login-shell |
Пример регистрационной записи пользователя kryten:
kryten:x:101:100:Kryten Series 4000:/export/home/kryten:/bin/csh |
Значение полей регистрационной записи приводится в следующей таблице.
Таблица 15 Значения полей регистрационной записи пользователя
Имя поля | Описание |
username | Содержит системное имя пользователя. Имена пользователей должны быть уникальными и состоять из 1-8 букв (A-Z, a-z) и цифр (0-9). Имя должно начинаться с буквы, и содержать по крайней мере одну незаглавную букву. Имена пользователей не могут содержать пробелов или знаков подчеркивания. |
password | Содержит букву x, вместо зашифрованного пароля. Сам зашифрованный пароль находится в файле shadow. |
uid | Содержит идектификатор пользователя (UID) в системе. Пользовательские идентификаторы должны лежать в интервале от 100 до 60000. Все идентификаторы должны быть уникальными. |
gid | Содержит идентификатор первичной группы пользователя (GID). GID – это целое число в интервале от 0 до 60002 (номера 60001 и 60002 по-умолчанию назначаются группам nobody и noaccess, соответственно). |
comment | Обычно содержит полное имя пользователя. (Это поле является чисто информационным). Это поле иногда называют GECOS-полем. |
home-directory | Содержит путь к домашнему каталогу пользователя. |
login-shell | Содержит имя командного интерпретатора пользователя. Это может быть /bin/sh, /bin/csh или /bin/ksh. |
Структура файла /etc/shadow
Регистационные записи файла /etc/shadow состоят из следующих полей:
username:password:lastchg:min:max:warn:inactive:expire |
Пример регистрационной записи пользователя rimmer:
rimmer:86Kg/MNT/dGu.:8882:0::5:20:8978 |
Значения полей регистрационной записи файла shadow приводяться в следующей таблице.
Таблица 16 Значения полей регистрационной записи файла shadow
Имя поля | Описание |
username | Содержит системное имя пользователя. |
password | Может содержать следующие записи: 13-символьный зашифрованный пользовательский пароль; строку *LK*, обозначающую заблокированный бюджет; или строку NP, обозначающую отсутствие пароля пользователя. |
lastchg | Содержит число дней между 1 января 1970 года и датой последнего изменения пароля. |
min | Содержит минимально допустимое количество дней между сменой пароля. |
max | Содержит максимальное количество дней до выдачи предупреждения пользователю о необходимости смены пароля. |
inactive | Содержит количество дней неактивности пользователя, прежде чем его бюджет будет заблокирован. |
expire | Содержит дату истечения действия пользовательского бюджета. После наступления этой даты, пользователь не сможет войти в систему. |
Стуктура файла /etc/group
Записи файла group состоят из следующих полей, разделенных символом двоеточия:
group-name:group-password:gid:user-list |
Пример записи для группы bin:
bin::2:root,bin,daemon |
В следующей таблице приводяться значения полей записи файла group.
Таблица 17 Значения полей записи файла group
Имя поля | Описание |
Group-name | Содержит имя группы. Имя группы может состоять максимум из девяти символов. |
Group-password | Обычно содержит символ ‘*’ или оставляется пустым. Это поле осталось от старых версий UNIX. Если для группы определен пароль, то команда newgrp выводит приглашение для ввода пароля. Однако, не существует утилиты, позволяющей установить пароль для группы. |
gid | Содержит идентификатор группы (GID). Этот номер должен быть уникальным в локальной системе и во всей организации. Каждый GID – это целое число в диапазоне от 0 до 60002. Номера меньше 100 зарезервированы для стандартных системных групп. Идентификаторы групп, определяемых пользователем должны лежать в диапазоне от 100 до 60000. (номера 60001 и 60002 зарезервированы для групп nobody и noaccess, соответственно.) |
user-list | Содержит список пользователей, входящих в состав группы, определяющий вторичное членство пользователей в группе. В качестве разделителя в списке используется символ ‘:’. Каждый пользователь может принадлежать максимум к 16 вторичным группам. |
Поддержка механизмов старения паролей и срока истечения действия паролей
В случае использования для управления пользователями и группа службы имен NIS+ или файлов каталога /etc, системный администратор может воспользоваться механизмом старения паролей для того, чтобы ограничить срок их действия, вынудить польователей осуществлять периодическую смену своих паролей, а также запретить пользователям изменять свои пароли чаще установленного интервала времени. Имеется возможность также установить дату истечения срока действия паролей, при наступлении которой соответствующий пользовательский бюджет будет заблокирован.
Средства контроля доступа ОС Solaris 7 системного уровня
Защита входа в систему, специальные системные пользовательские бюджеты, получение информации о статусе пользователя, управление паролями, стандартные группы пользователей, интерпретатор команд с ограниченными возможностями, средства блокирования пользовательских бюджетов, средства регистрации неудачных попыток входа в систему, парольная защита соединений по коммутируемым линиям, блокирование удаленного входа в систему по коммутируемым линиям, мониторинг использования полномочий суперпользователя, ограничение числа устройств, используемых для регистрации в системе суперпользователя, системной консолью.
Стандартные группы пользователей
По умолчанию, в ОС Solaris 7 имеются следующие группы пользователей:
root::0:rootother::1:bin::2:root,bin,daemonsys::3:root,bin,sys,admadm::4:root,adm,daemonuucp::5:root,uucpmail::6:roottty::7:root,tty,admlp::8:root,lp,admnuucp::9:root,nuucpstaff::10:daemon::12:root,daemonsysadmin::14:nobody::60001:noaccess::60002:nogroup::65534: |
Интерпретатор команд с ограниченными возможностями
Для ограничения, в целях безопасности, возможностей, которыми располагают пользователи системы, таких как смена каталога или выполнение определенных системных команд, может использоваться специальная версия командного интерпретатора с ограниченными возможностями. Ограниченный командный интерпретатор (rsh) находится в каталоге /usr/lib. Он отличается от обычного командного интерпретатора следующими свойствами:
- пользователь ограничен только своим домашним каталогом (не может использовать команду cd для смены текущего каталога);
- пользователь может использовать только те команды, путь к которым содержиться в переменной окружения PATH, устанавливаемой системным администратором (пользователь сам не может изменять значение этой переменной);
- пользователь имеет доступ только к файлам, находящимся в домашнем каталоге пользователя и его подкаталогах (пользователь не может использовать для доступа к файлам их полные имена);
- пользователь не может перенаправлять стандартный вывод программ, используя команды > и >>.
Средства блокирования пользовательских бюджетов
Средства блокирования пользовательских бюджетов позволяют осуществлять как временное, так и постоянное блокирование. Блокирование осуществляется путем назначения пользователю пароля *LK*, содержащего недопустимые символы ‘*’. Это делает невозможеным регистрацию пользователя в системе.
Простейшим способом блокирования пользовательского бюджета является использование программы Admintool. Программа Admintool позволяет заблокировать пароль пользователя и установить дату истечения периода, в течении которого пользовательский бюджет будет оставаться заблокированным (Expiration Date).
Другими способами блокирования пользовательских бюджетов является использование механизма старения паролей, а также изменение пользовательского пароля таким образом, чтобы он содержал недопустимые символы ‘*’.
Временное блокирование доступа пользователей
Администратор системы может временно заблокировать пользовательские пароли. Для этого необходимо выполнить следующие действия:
- Создать файл /etc/nologin
- Перевести систему в однопользовательский режим (Уровень 0).
Создание файла /etc/nologin позволяет заблокировать пользовательские пароли и сообщить пользователям о том, что в течение определенного промежутка времени система будет недоступна из-за отключений или профилактических процедур. Если такой файл существует, то пользователю при входе в систему показывается его содержание, а дальнейшие действия блокируются. На вход в систему администратора наличие файла никакого воздействия не оказывает.
Средства регистрации неудачных попыток входа в систему
Администратор системы может обеспечить регистрацию неудачных попыток входа в систему. Для этого необходимо создать файл /var/adm/loginlog с правами на чтение и запись только для администратора системы. После его создания туда будут заносится все неудачные попытки входа в систему, если пользователь потерпел неудачу более пяти раз.
Одной неудачной попытке входа соответствует одна запись в файле loginlog. В каждой записи указывается: имя пользователя, идентификатор устройства, с которого производился ввод, дата и время неудачной попытки. Если какой-либо пользователь пытался войти в систему менее пяти раз, то его действия не регистрируются.
Файл loginlog растет достаточно быстро. Поэтому его необходимо периодически проверять и стирать ненужные записи. Большое количество неудачных попыток входа в систему может свидетельствовать об осуществлении попыток НСД.
Примерное содержание файла loginlog:
# more /var/adm/loginlog
pmorph:/dev/pts/4:Mon Jun 8 11:08:27 1998
pmorph:/dev/pts/4:Mon Jun 8 11:08:49 1998
pmorph:/dev/pts/4:Mon Jun 8 11:09:03 1998
pmorph:/dev/pts/4:Mon Jun 8 11:09:22 1998
pmorph:/dev/pts/4:Mon Jun 8 11:09:36 1998
Парольная защита соединений по коммутируемым линиям
Безопасность системы может быть повышена за счет установки дополнительной парольной защиты для тех пользователей, которые осуществляют удаленный вход в систему по коммутируемым каналам связи. Такой пароль является дополнительным. Он необходим только для получения доступа к последовательному порту. Создавать или изменять пароль данного типа может только администратор системы. Рекомендуется менять этот пароль по меньшей мере раз в месяц. Наилучший результат дает использование пароля для тех коммутируемых линий, через которые осуществляется обращение к системам, выполняющим функции шлюза.
Для задания паролей используются два файла: /etc/dialups и /etc/d_passwd. В первом из них находится список портов, для которых требуются пароли, а во втором — список пользовательских командных интерпретаторов, для которых необходим зашифрованный пароль, использующийся в качестве пароля соединений по коммурируемым линиям.
В качестве примера списка терминальных устройств можно привести:
/dev/term/a
/dev/term/d
Файл d_passwd содержит два поля. В первом поле указывается имя регистрационного командного интерпретатора shell, для которого требуется пароль, а во втором — зашифрованный пароль.
/usr/lib/uucp/uucico:encrypted_password:
/usr/bin/csh:encrypted_password:
/usr/bin/ksh:encrypted_password:
/usr/bin/sh:encrypted_password:
Когда пользователь производит попытку удаленного входа в систему через один из портов, указанных в списке /etc/dialups, то программа login находит в файле /etc/passwd запись, соответствующую данному пользователю и сопоставляет регистрационный командный интерпретатор пользователя, с тем, который указан в файле /etc/d_passwd. По результатам сравнения определяется, будет ли у пользователя запрашиваться дополнительный пароль на вход по коммутируемой линии. На рис 2 приведена последовательность действий системы при обработке запроса пользователя на вход в систему.
Большинство пользователей после входа в систему используют командные интерпретаторы shell. Поэтому все командные интерпретаторы должны быть описаны в файле /etc/d_passwd. Обычно это uucico, sh, ksh, csh и т. п.. Если кто-либо использует другие программы, то их тоже необходимо внести в файл d_passwd. Если программа login (указанная в файле /etc/passwd) не описана в файле /etc/d_passwd или поле login shell в файле etc/passwd пусто, то используется парольная запись из /usr/bin/sh
Рисунок 4 Последовательность обработки запроса пользователя на вход в систему по коммутируемой линии
В целом, при аутентификации пользователей, осуществляющих удаленный вход в систему по коммутируемым линиям, используются следующие правила:
- Если login shell пользователя из файла /etc/passwd совпадает с записью в файле /etc/d_passwd, то пользователь должен указать пароль для входа в систему по коммутируемой линии.
- Если login shell пользователя из файла /etc/passwd не обнаружен в файле /etc/d_passwd, то пользователь должен ввести текущий пароль. Текущим паролем считается тот, который указан для записи /usr/bin/sh.
- Если поле login shell в файле /etc/passwd пусто, то пользователь должен указать текущий пароль.
- Возможны случаи, когда в файле /etc/d_passwd нет записей, относящихся к /usr/bin/sh. Тогда тем пользователям, чьи поля login shell в файле /etc/passwd пусты, или если среди записей в файле /etc/d_passwd нет таких, которые бы совпадали с указанными для данных пользователей, не придется вводить пароль для входа в систему по коммутируемой линии.
- Вход в систему по коммутируемой линии блокируется, если файл /etc/d_passwd содерджит только одну запись: /usr/bin/sh:*:
Блокирование удаленного входа в систему по коммутируемым линиям
До тех пор, пока файл /etc/d_passwd содержит единственную запись /usr/bin/sh:*, вход пользователей в систему по коммутируемым линиям будет заблокирован.
Мониторинг использования полномочий суперпользователя
В конфигурации системы, устанавливаемой по умолчанию, запрещено использование бюджета суперпользователя для удаленной регистрации в системе. Для того, чтобы воспользоваться привилениями суперпользователя при удаленной регистрации, пользователь должен войти в систему, используя свой личный бюджет, а затем получить права суперпользователя при помощи команды su. Это позволяет отслеживать факты использования бюджета суперпользователя.
Регистрация событий, связанных с использованием команды su
Для регистрации событий, связанных с использованием команды su, используется системный файл журнала /var/adm/sulog, при этом в файле /etc/default/su должен быть установлен следующий параметр:
SULOG=/var/adm/sulog
В журнале sulog регистрируется дата и время использования команды su, результат использования команды, номер терминала, имя пользователя, использующего команду su и имя пользователя, чьи полномочия необходимо персонифицировать.
# more /var/adm/sulog
SU 12/20 16:26 + pts/0 nathan-root
SU 12/21 10:59 + pts/0 nathan-root
SU 01/12 11:11 + pts/0 root-joebob
SU 01/12 14:56 + pts/0 pmorph-root
SU 01/12 14:57 + pts/0 pmorph-root
Вывод на системную консоль сообщений о попытках регистрации в системе в качестве суперпользователя
Для активизации этой функции безопасности в файле /etc/default/su должен быть установлен следующий параметр:
CONSOLE=/dev/console
Ограничение числа устройств, используемых для регистрации в системе суперпользователя, системной консолью
В качестве дополнительной меры защиты бюджета суперпользователя может использоваться возможность ограничения входа в систему в качестве суперпользователя с определенных устройств. Для активизации этого средства защиты используется файл /etc/default/login. Если список устройств входа для суперпользователя ограничивается системной консолью, то он сможет войти в систему только с консоли. Для выполнения функций системного администрирования, требующих полномочий суперпользователя, из удаленной системы, необходимо сначала войти в систему, используя бюджет обычного пользователя, а затем для получения полномочий суперпользователя использовать команду su.
Для активизации этой функции безопасности в файле /etc/default/login должен быть установлен следующий параметр:
CONSOLE=/dev/console