MFen 1.14 -> 1.28

With fixes from:	maxim
Obtained from:		The FreeBSD Russian Documentation Project
This commit is contained in:
Denis Peplin 2004-08-31 08:55:56 +00:00
parent 014520247e
commit 6445095f67
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=22183

View file

@ -2,9 +2,9 @@
The FreeBSD Russian Documentation Project
$FreeBSD$
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/mac/chapter.sgml,v 1.13 2004/08/26 11:16:13 den Exp $
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/mac/chapter.sgml,v 1.15 2004/08/31 05:42:48 den Exp $
Original revision: 1.14
Original revision: 1.28
-->
<chapter id="mac">
@ -36,22 +36,25 @@
<para>&os;&nbsp;5.X представляет новые расширения системы безопасности
от проекта TrustedBSD, основанные на документах &posix;.1e.
Наиболее важные нововведения в механизмах безопасности это
Два из наиболее важных нововведений в механизмах безопасности это
списки контроля доступа файловой системы (Access Control Lists,
<acronym>ACLs</acronym>) и принудительный контроль доступа
Mandatory Access Control, <acronym>MAC</acronym>). Принудительный
контроль доступа позволяет администратору применять дополнительные
средств безопасности для всех субъектов (например, процессов или
сокетов) и объектов (например, сокетов, объектов файловой системы,
узлов sysctl) системы. Контроль называется принудительным,
Mandatory Access Control, <acronym>MAC</acronym>). Инфраструктура
позволяет загружать новые модули контроля доступа,
реализуя новые политики безопасности. Некоторые из них предоставляют
защиту ключевых подсистем, защищая определенный сервис, в то время
как другие предоставляют исчерпывающую систему безопасности с метками
на всех субъектах и объектах. Контроль называется принудительным,
поскольку применение контроля производится администраторами и
системой, и не зависит от решения пользователей, как это происходит
при обычном контроле доступа (Discretionary Access Control,
<acronym>DAC</acronym>).</para>
<acronym>DAC</acronym>, стандартные файловые и System V IPC
права в &os;).</para>
<para>Вся эта глава фокусируется на инфраструктуре
принудительного контроля доступа, здесь обозначаемой просто как
<acronym>MAC</acronym>.</para>
принудительного контроля доступа и настройке
подключаемых модулей, реализующих различные политики
безопасности.</para>
<para>После прочтения этой главы вы узнаете:</para>
@ -78,13 +81,13 @@
</listitem>
<listitem>
<para>Как реализовать защищенную среду используя инфраструктуру
<para>Как реализовать более защищенную среду, используя инфраструктуру
<acronym>MAC</acronym> и приведенные примеры.</para>
</listitem>
<listitem>
<para>Как протестировать настройку <acronym>MAC</acronym>,
чтобы убедиться, что система правильно воспринимает ее.</para>
чтобы убедиться, что инфраструктура была реализована правильно.</para>
</listitem>
</itemizedlist>
@ -145,22 +148,30 @@
</sect2>
</sect1>
<sect1 id="mac-glossary">
<sect1 id="mac-inline-glossary">
<title>Ключевые термины этой главы</title>
<para>Перед чтением этой главы необходимо ознакомиться с некоторыми
ключевыми терминами. Это возможно разрешит возникающие вопросы
и предотвратит перегрузку материала новыми терминами и информацией.
В этой главе будут использоваться следующие термины:</para>
и предотвратит перегрузку материала новыми терминами и
информацией.</para>
<itemizedlist>
<listitem>
<para><emphasis>отдел</emphasis> (compartment): Отдел это набор
программ и данных, которые необходимо отделить, и где
пользователи получают определенный доступ к отдельным
пользователи получают явный доступ к отдельным
компонентам системы. Отдел представляет группирование, например
рабочую группу, департамент, проект или тему. Доступ к
отделам предоставляется явно.</para>
рабочую группу, департамент, проект или тему. С использованием
отделов возможна реализация политики с явно определенным
доступом.</para>
</listitem>
<listitem>
<para><emphasis>целостность</emphasis> (integrity): Целостность, как
ключевая концепция, это уровень доверия, который может быть
присвоен данным. Поскольку целостность данных повышается,
это дает возможность доверять данным.</para>
</listitem>
<listitem>
@ -177,15 +188,16 @@
<listitem>
<para><emphasis>multilabel</emphasis> (множественные метки):
<option>multilabel</option>
свойство <option>multilabel</option>
это параметр файловой системы, который может быть установлен
в однопользовательском режиме с помощью утилиты
&man.tunefs.8;, во время загрузки через файл &man.fstab.5;,
или при создании новой файловой системы. Этот параметр
позволяет администратору помещать различные метки
<acronym>MAC</acronym> на различные объекты.
разрешает помещение множественных <acronym>MAC</acronym> меток
на файлы и каталоги файловой системы. Этот параметр
применим только к политикам, использующим операции с метками
для повышения уровня безопасности.</para>
применим только к политикам с метками.</para>
</listitem>
<listitem>
@ -204,7 +216,18 @@
определяющих как достичь объекта. <emphasis>Политика</emphasis>
обычно документирует обращение с определенными элементами.
В этой главе <emphasis>политика</emphasis> будет означать
<emphasis>политику безопасности</emphasis>.</para>
<emphasis>политику безопасности</emphasis>; т.е.
коллекцию правил, которые будут контролировать поток данных
и определять кто будет иметь доступ к этим данным.</para>
<!-- translation: data and information -> данные -->
</listitem>
<listitem>
<para><emphasis>чувствительность</emphasis> (sensitivity):
Обычно используется при обсуждении <acronym>MLS</acronym>.
Уровень чувствительности это термин, используемый для описания
того, насколько важны или секретны данные. Увеличение
уровня чувствительности означает важность данных.</para>
</listitem>
<listitem>
@ -213,14 +236,16 @@
определения доступа всего потока данных. Когда файловая система
использует эту установку, что происходит всегда, если не
установлен параметр <option>multilabel</option>, ко всем
файлам применяется одна и та же установка метки.</para>
файлам будет применяться одна и та же установка метки.</para>
</listitem>
<listitem>
<para><emphasis>субъект</emphasis> (subject): субъект это
любая активная сущность, вызывающая перемещение информации
между <emphasis>объектами</emphasis>; т.е. пользователь,
пользовательский обработчик, системный процесс и т.д.</para>
пользовательский обработчик, системный процесс и т.д.
В &os; это почти всегда поток, работающий в процессе или
представляющий пользователя.</para>
</listitem>
</itemizedlist>
</sect1>
@ -234,17 +259,24 @@
могут быть использованы для защиты сети и файловых систем,
блокирования доступа пользователей к определенным портам и
сокетам, и так далее. Возможно, наилучшее использование
политик это сочетание их вместе для создания многослойной
защищенной среды. Единственным недостатком является
политик это сочетание их вместе путем загрузки нескольких модулей
одновременно, для создания многослойной защищенной среды. В
многослойной среде безопасности несколько политик обеспечивают
контролируемость защиты. Это отличается от усиления защиты,
когда обычно усиливаются элементы системы, используемой в
определенных целях. Единственным недостатком является
дополнительная административная нагрузка в случае множественных
меток файловой системы, установки сетевого доступа по пользователям,
и т.д.</para>
<para>Эти недостатки минимальны по сравнению с длительным эффектом
функционирования инфраструктуры. Хорошая реализация сделает систему
полностью подконтрольной системному администратору, который сможет
управлять различными аспектами этих политик, используя утилиту
&man.sysctl.8;.</para>
функционирования инфраструктуры; например, возможность выбора
политик, необходимых для определенных конфигураций, уменьшает
потерю производительности. Возможность удаления поддержки не
используемых политик может увеличить общую производительность
системы, а также дает гибкость выбора. Хорошая реализация
удовлетворит общие требования безопасности и будет эффективно
использовать различные политики, предоставляемые инфраструктурой.</para>
<para>Система, использующая возможности <acronym>MAC</acronym>,
должна как минимум гарантировать, что пользователю не разрешается
@ -283,101 +315,107 @@
могут быть разделены на эти три группы и затем получить доступ
к соответствующим областям без опасности утечки информации.</para>
<para>Таким образом, каждая политика имеет уникальный способ работы с
потоком информации. Выбор политики должен быть основан на
<para>Таким образом, каждая политика имеет уникальный способ
взаимодействия с общей безопасностью системы.
Выбор политики должен быть основан на
хорошо продуманной политике безопасности. Во многих случаях политика
должна быть полностью пересмотрена и реализована заново для всей
сети. Понимание различных политик, предоставляемых инфраструктурой
системы. Понимание различных политик, предоставляемых инфраструктурой
<acronym>MAC</acronym>, поможет администраторам выбрать лучшую политику
в своей ситуации.</para>
<para>Стандартное ядро &os; не включает параметр <acronym>MAC</acronym>;
необходимо добавить следующий параметр ядра перед тем, как
пробовать какие-либо из примеров или применять информацию этой главы
в любой системе &os;:</para>
пробовать какие-либо из примеров или применять информацию этой
главы:</para>
<programlisting>options MAC</programlisting>
<para>Затем необходимо пересобрать и переустановить ядро.</para>
<note>
<caution>
<para>Хотя различные страницы справочника для модулей
<acronym>MAC</acronym> сообщают, что они могут быть встроены в ядро,
возможна блокировка доступа системы к сети и другие побочные эффекты.
Следовательно, это не рекомендуется для новых пользователей
инфраструктуры.</para>
</note>
Включение <acronym>MAC</acronym> очень похоже на включение
брандмауэра, но необходимо быть внимательным, чтобы полностью
не заблокировать систему. Необходимо предусмотреть возможность
возврата к предыдущей конфигурации, а реализация
<acronym>MAC</acronym> удаленно должна производиться с особой
осторожностью.</para>
</caution>
</sect1>
<sect1 id="mac-understandlabel">
<title>Метки MAC</title>
<para>Метка <acronym>MAC</acronym> это виртуальный штамп
конфиденциальности, который может быть применен к субъектам
<para>Метка <acronym>MAC</acronym> это атрибут безопасности,
который может быть применен к субъектам
и объектам всей системы.</para>
<para>При установке метки пользователь должен в точности понимать,
что именно она делает. Установка метки слишком высокой или
слишком низкой может подвергнуть угрозе всю структуру безопасности
каталога пользователя или файловой системы.</para>
что именно она делает. Атрибуты, доступные для объекта,
зависят от загруженной политики, а политики интерпретируют
свои атрибуты совершенно различным образом. Результатом
недостаточного понимания настроек может стать их неправильная
реализация, что может привести к неожиданному, и возможно
нежелательному поведению системы.</para>
<para>Метка явно указывает тип контроля доступа, который должен быть
применен к объекту или субъекту. Формирование метки просто,
в нее входят имя политики, и квалификатор или установка для данного
объекта или субъекта.</para>
<para>Метка безопасности на объекте используется политикой
для определения правил доступа. Для некоторых политик метка
сама по себе содержит всю необходимую для этого информацию,
в других моделях метки могут обрабатываться как часть
большого набора правил, и т.д.</para>
<para>Например, установка метки в <literal>biba/low</literal>
на файле присвоит этому файлу базовую политику доступа с низким
контролем.</para>
на файле присвоит этому файлу метку, обрабатываемую политикой
Biba со значением <quote>low</quote>.</para>
<para>Эти метки помогают отделить друг от друга, или развести по
группам несколько объектов на основе их профиля безопасности.</para>
<para>С каждой политикой, которая поддерживает метки в &os;,
поставляются три специфические предустановленные метки.
<para>Несколько политик, поддерживающих метки в &os;,
предоставляют три определенные предустановленные метки.
Это низкая, высокая и равная метки. Хотя они устанавливают контроль
различными способами для каждой политики, вы можете быть уверены,
что низкая метка задаст минимальные установки, равная метка
означает отмену или недействительность, а высокая метка установит
максимально возможные настройки.</para>
максимально возможные настройки в политиках Biba и
<acronym>MLS</acronym>.</para>
<para>При применении одиночной метки, только одна метка может быть
использована для объектов и субъектов. Это вызовет установку
<para>При применении в файловой системе одиночной метки, только одна
метка может быть использована для объектов. Это вызовет установку
одних и тех же прав доступа для всей системы, и во многих случаях
это все, что необходимо. Тем не менее, существует несколько ситуаций,
в которых на объекты и субъекты системы могут быть установлены
в которых на объекты и субъекты файловой системы могут быть установлены
множественные метки. В этих ситуациях необходимо с помощью
&man.tunefs.8; установить параметр <option>multilabel</option>.</para>
<para>В других ситуациях может быть установлена числовая метка
для указания точного уровня иерархического контроля. Это числовое
сравнение используется для разделения или сортировки информации
<para>В случае Biba и <acronym>MLS</acronym> может быть установлена
числовая метка
для указания точного уровня иерархического контроля. Этот числовой
уровень используется для разделения или сортировки информации
по различным группам классификации, разрешающей доступ только к
этой группе или группе с более высоким уровнем.</para>
<!-- discussed above:
<para>In most cases the administrator will only be setting up a
single label to use throughout the file system; indeed this
limits the need for the soon to be discussed
<option>multilabel</option> option. That option should only
be enabled if the situation requires it.</para>
-->
<para>В большинстве случаев системный администратор использует только
одну метку на всю файловую систему.</para>
<para><emphasis>Постойте, но это же похоже на <acronym>DAC</acronym>!
Я думал, что <acronym>MAC</acronym> дает контроль только
администратору.</emphasis> Это утверждение все еще верно,
только <username>root</username> контролирует и настраивает
политики, так что пользователи помещаются в соответствующие
категории/уровни доступа. Базовый контроль над объектами затем
категории/уровни доступа. Многие политики могут ограничить также
и пользователя <username>root</username>.
Базовый контроль над объектами затем
передается группе, но пользователь <username>root</username>
может отменить или изменить эти настройки в любое время.
Данная иерархическая <!-- /clearance --> модель обсуждалась
ранее в этой главе.</para>
Данная иерархическая <!-- /clearance --> модель соответствует
таким политикам как Biba и <acronym>MLS</acronym>.</para>
<sect2>
<title>Настройка меток</title>
<para>Практически все действия по настройке политики с метками
могут быть выполнены с использованием набора четырех команд.
могут быть выполнены с использованием утилит базовой системы.
Эти команды обеспечивают простой интерфейс для настройки
объектов или субъектов, или для изменения и проверки
настроек.</para>
@ -392,9 +430,20 @@
<screen>&prompt.root; <userinput>setfmac biba/high test</userinput></screen>
<para>Если не произойдет ошибок, будет возвращено приглашение командной
строки. В некоторых случаях может появиться ошибка
строки, как и после команд &man.chmod.1; и &man.chown.8;.
В некоторых случаях может появиться ошибка
<errorname>Permission denied</errorname>, и она обычно появляется при
установке или изменении метки на объект с ограничениями.
<footnote><para>Есть и другие ситуации, в которых могут возникать
различные ошибки. Например, файл может не находиться во владении
пользователя, пытающегося изменить метку на объекте, объект может
не существовать или существовать только для чтения. Политика может
не позволить процессу изменить метку на файл, возможно в связи со
свойствами файла, процесса, или нового значения метки. Например:
пользователь с низким уровнем доверия пытается изменить метку на
файле с высоким уровнем доверия. Или пользователь с низким уровнем
доверия пытается изменить метку файла с низким уровнем доверия на
метку высокого уровня.</para></footnote>
Системный администратор для обхода этой проблемы может использовать
следующие команды:</para>
@ -410,11 +459,10 @@ test: biba/high</screen>
иной метки вызывающему процессу. Утилита <command>getpmac</command>
обычно используется с существующим на данный момент процессом,
таким как <application>sendmail</application>, хотя она принимает
PID вместо команды, ее действие аналогично. Необходимо отметить,
что пользователи могут перезаписывать метки политик только если
они являются владельцами объекта или субъекта. Если пользователь
попытается манипулировать файлом, не находящемся на его уровне
доступа, функцией <function>mac_set_link</function> будет
PID вместо команды, ее действие аналогично. Если пользователи
попытаются манипулировать файлами, к которым у них нет доступа
в соответствии с правилами загруженных политик,
функцией <function>mac_set_link</function> будет
выдано сообщение об ошибке <errorname>Operation not
permitted</errorname>.</para>
@ -422,9 +470,10 @@ test: biba/high</screen>
<title>Пользователи и установки меток</title>
<para>Пользователям необходимо иметь метки, чтобы их файлы и
процессы могли правильно взаимодействовать. Это настраивается
процессы могли правильно взаимодействовать с определенной
в системе политикой безопасности. Это настраивается
через файл <filename>login.conf</filename> путем использования
классов. Каждая политика, использующая метки, требует установки
классов. Каждая политика, использующая метки, реализует установку
класса пользователя.</para>
<para>Пример записи, содержащей все политики, приведенные
@ -452,7 +501,7 @@ test: biba/high</screen>
:passwordtime=91d:\
:umask=022:\
:ignoretime@:\
:label=partition/13,mls/5,biba/low,lomac10[2]:</programlisting>
:label=partition/13,mls/5,biba/10(5-15),lomac10[2]:</programlisting>
<para>Параметр <literal>label</literal> используется для установки
метки <acronym>MAC</acronym> по умолчанию для класса пользователя.
@ -462,6 +511,17 @@ test: biba/high</screen>
Рекомендуется прочесть главу полностью перед реализацией любой
из этих настроек.</para>
<note>
<para>Пользователи могут изменить свою метку после входа;
однако политика накладывает ограничение на это изменение.
В примере выше политике Biba указано, что минимальная
целостность процесса 5, максимальная 15, а эффективная
целостность по умолчанию 10. Процесс будет работать на
уровне 10, пока метка не будет изменена, например если
пользователь использует команду setpmac, которую Biba
ограничит диапазоном, установленным при входе.</para>
</note>
<para>Во всех случаях после изменения
<filename>login.conf</filename>, база данных
<quote>login class capability</quote> должна быть пересобрана
@ -472,6 +532,10 @@ test: biba/high</screen>
требуются различные классы, во многих сетях может быть велико.
Необходимо тщательное планирование, поскольку управление такой
сетью может серьезно усложниться.</para>
<para>В будущих версиях &os; появится новый способ связывания
пользователей с метками; однако, он будет доступен только через
некоторое время после выхода &os;&nbsp;5.3.</para>
</sect3>
<sect3>
@ -808,6 +872,11 @@ test: biba/high</screen>
<screen>&prompt.root; <userinput>ugidfw add subject not uid root new object not uid root mode n</userinput></screen>
<note>
<para>В релизах &os; до 5.3, параметр <parameter>add</parameter>
не существует. Вместо него необходимо использовать
<parameter>set</parameter>. Пример дан ниже.</para></note>
<para>Это очень плохая идея, поскольку такое правило запретит
пользователям использовать даже самые простые команды, такие
как <command>ls</command>. Более патриотический список правил
@ -1759,7 +1828,7 @@ LABEL PID TT STAT TIME COMMAND
maclabel biba/low(low-low),mls/low(low-low)
&prompt.user; <userinput>ping -c 1 192.0.34.166</userinput>
PING 192.0.34.166 (192.0.34.166): 56 data bytes
ping: sendto: Permission denied</screen>
ping: sendto: Permission denied</screen>
<para>Пользователи не могут выполнить ping на
<hostid role="domainname">example.com</hostid>, или на любой
@ -1777,10 +1846,10 @@ PING 192.0.34.166 (192.0.34.166): 56 data bytes
<screen>&prompt.root; <userinput>ifconfig bge0 maclabel biba/equal\(low-high\),mls/equal\(low-high\)</userinput>
&prompt.user; <userinput>ping -c 1 192.0.34.166</userinput>
PING 192.0.34.166 (192.0.34.166): 56 data bytes
64 bytes from 192.0.34.166: icmp_seq=0 ttl=50 time=204.455 ms
--- 192.0.34.166 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max/stddev = 204.455/204.455/204.455/0.000 ms</screen>
64 bytes from 192.0.34.166: icmp_seq=0 ttl=50 time=204.455 ms
--- 192.0.34.166 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max/stddev = 204.455/204.455/204.455/0.000 ms</screen>
<para>Установив более корректную метку, мы можем использовать
<command>ping</command>.</para>
@ -1795,10 +1864,10 @@ test1: biba/equal,mls/equal
setfmac mls/low test1 test3; setfmac mls/high test2 test4</userinput>
&prompt.root; <userinput>setfmac mls/equal,biba/equal test3 && getfmac test?</userinput>
test1: biba/low,mls/low
test2: biba/low,mls/high
test3: biba/equal,mls/equal
test4: biba/high,mls/high
test5: biba/high,mls/equal
test2: biba/low,mls/high
test3: biba/equal,mls/equal
test4: biba/high,mls/high
test5: biba/high,mls/equal
&prompt.root; <userinput>chown testuser:testuser test?</userinput></screen>
<para>Все эти файлы должны принадлежать пользователю
@ -1910,7 +1979,7 @@ exit;</programlisting>
<note>
<para>Во многих случаях в веб файлы <command>cvs</command>
необходимо поместить тег <acronym>ID</acronym>.</para>
необходимо поместить теги Id.</para>
</note>
<para>Этот скрипт теперь может быть помещен в домашний каталог
@ -2071,6 +2140,44 @@ XXX
</step>
</procedure>
</sect2>
<sect2>
<title>Error: &man..secure.path.3; cannot stat <filename>.login_conf</filename></title>
<para>При попытке переключения от <username>root</username> на другого
пользователя системы, появляется сообщение об ошибке
<errorname>_secure_path: unable to state .login_conf</errorname>.</para>
<para>Это сообщение обычно показывается, когда у пользователя более
высокая метка, чем у пользователя, которым он пытается стать.
Например, у пользователя системы <username>joe</username> метка по
умолчанию <option>biba/low</option>. Пользователь
<username>root</username>, метка которого <option>biba/high</option>,
не может просматривать домашний каталог пользователя
<username>joe</username>. Это не зависит от того, использует ли
пользователь <username>root</username> команду <command>su</command>
<username>joe</username> или нет. В этом сценарии модель
целостности Biba не позволит <username>root</username> просматривать
объекты с низким уровнем целостности.</para>
</sect2>
<sect2>
<title>Пользователя <username>root</username> нет!</title>
<para>В нормальном или даже однопользовательском режиме
<username>root</username> не обнаруживается. Команда
<command>whoami</command> возвращает 0 (нуль) и
<command>su</command> возвращает <errorname>who are you?</errorname>.
Что можно сделать?</para>
<para>Это может произойти, если политика с метками была отключена,
или через &man.sysctl.8;, или путем выгрузки модуля политики.
Если политика была постоянно или временно отключена, базу данных
login необходимо перенастроить. Дважды проверьте
<filename>login.conf</filename>, чтобы убедиться, что
все параметры <option>label</option> были удалены и пересоберите
базу данных командой <command>cap_mkdb</command>.</para>
</sect2>
</sect1>
</chapter>