сообщений и security(S) перегружены. Они отображаются во мно-
жество функций. Эти контрольные записи идентифицируют конкретную
выполняемую функцию и затрагиваемый объект (например, разделяе-
мую память). Вызовы close(S), dup(S) и fcntl(S) работают с деск-
рипторами файлов, полученными из имен путей. Выходная запись,
указывающая dup(S) для дескриптора файла, не будет очень нужна,
так как она не идентифицирует файл однозначно. Таким образом,
reduce соотносит дескриптор файла с именем пути и проставляет
это имя в записи.
Хотя системные вызовы read(S) и write(S) включены в список
на Рисунке 5-3, они контролируются только в определенных обстоя-
тельствах, и для них не выделяется специальная выходная запись.
Оба этих вызова контролируются только при первом выполнении для
файла. Последующие операции чтения и записи не контролируются,
так как они не добавляют никакой информации. Контрольные записи
используются в reduce для отслеживания состояния файла. Когда
файл закрывается вызовом exec(S), exece(S), close(S) или
exit(S), в запись системного вызова для действия, вызвавшего
закрытие файла, включается имя объекта и индикатор чтения или
записи. Это иллюстрируется Рисунком 5-5.
Process ID: 421 Date/Time: Sat Mar 5 17:15:09 1988
Luid: blf Euid: blf Ruid: blf Egid: guru Rgid: guru
Event type: Make object unavailable (Сделать объект недоступным)
System call: Close
File Access-Read: Yes Written: No
(Доступ к файлу по чтению: Да Записан: Нет)
Object: /tmp/datafile
Result: Successful
Рисунок 5-5. Запись системного вызова close(S)
Вторая группа системных вызовов, показанная на Рисунке 5-6,
включает в состав выходной записи имена путей. Имя пути предс-
тавляет назначение системного вызова. Записи для двух системных
вызовов (link(S) и mount(S)) на самом деле содержат по два имени
пути.
open unlink creat
exec chdir mknod
chown chmod stat
umount exece chroot
link mount
Рисунок 5-6. Системные вызовы с именами путей
Каждый из этих системных вызовов использует одно или нес-
колько имен путей в качестве аргументов вызова. Имена путей
контролируются и играют важную роль в процессе редукции. Выход-
ные записи для этих вызовов указывают имя объекта, с которым вы-
полнялись действия. Это имя также сохраняется программой редук-
ции и там, где это нужно, сопоставляется дескриптору файла,
.
- 5-40 -
возвращаемому данным системным вызовом. Это соответствие исполь-
зуется другими системными вызовами, такими как dup(S), которые
работают с файлом, но не содержат имя пути. На Рисунке 5-7 при-
ведена выходная запись, сгенерированная в результате системного
вызова creat(S). Формат записи представляет собой базовый фор-
мат, дополненный именем пути.
Process ID: 64 Date/Time: Sat Mar 5 23:25:09 1988
Luid: root Euid: root Ruid: root Egid: root Rgid: root
Event type: Object creation (Создание объекта)
System call: Creat
Object: /tmp/daemon.out
Result: Successful
Рисунок 5-7. Выходная запись с именем пути
Все вызовы этой группы пользуются одним и тем же форматом
имени пути. Два вызова (link(S) и mount(S)) используют два имени
пути: источник и назначение. Типичная запись, выдаваемая систем-
ным вызовом link(S), показана на Рисунке 5-8.
Process ID: 14231 Date/Time: Thu Mar 16 03:25:39 1988
Luid: lp Euid: lp Ruid: lp Egid: lp Rgid: lp
Event type: Object creation
System call: Link
Source: /tmp/printfile
Target: /usr/spool/lp/lp3014
Result: Successful
Рисунок 5-8. Выходная запись с двумя именами путей
Два других системных вызова этой группы генерируют специ-
альные выходные записи. Это вызовы chown(S) и chmod(S), которые
используются для изменения разрешений дискреционного доступа и
смены владельца объекта. Так как эти действия имеют отношение к
секретности, в записи выводятся старые и новые значения владель-
ца объекта, имени группы и режима. На Рисунке 5-9 показана вы-
ходная запись от системного вызова chmod(S).
Process ID: 6841 Date/Time: Sat Mar 5 13:25:09 1988
Luid: blf Euid: blf Ruid: blf Egid: guru Rgid: guru
Event type: Discretionary Access Change
(Изменение дискреционного доступа)
System call: Chmod
Object: /tmp/demo/newfile
Old values: Owner-blf Group-guru Mode-100600
(Старые значения: Владелец... Группа... Режим...)
New values: Owner-blf Group-guru Mode-100666 (Новые знач.)
Result: Successful
Рисунок 5-9. Запись системного вызова chmod(S)
.
- 5-41 -
Контрольные записи прикладных программ
Имеется шесть различных типов контрольных записей, генери-
руемых прикладными программами. Форматы этих записей аналогичны.
В отличие от системных вызовов, любая запись одной из этих кате-
горий всегда имеет идентичный формат, хотя информация варьирует-
ся. Категории записей следующие:
* События входа в систему и выхода из нее
* События подсистемы контроля
* События пользовательского пароля
* События авторизованной подсистемы
* События защищенной базы данных
* События блокировки терминала и пользовательского бюджета
Каждая запись содержит определенную информацию, общую для
всех выходных контрольных записей. Сюда входят идентификатор
процесса, время и дата, а также тип события контроля. Содержание
остальной части выходной записи зависит от ее типа. Поля, зави-
сящие от записи, описываются в последующих разделах.
Запись входа в систему и запись выхода из системы
Все попытки зарегистрироваться в системе контролируются
программой регистрации. Это касается как успешных, так и неудач-
ных попыток. Тем самым собирается важная информация о доступах
пользователей в систему и о попытках доступа. Вы можете исполь-
зовать контрольные записи входа и выхода из системы, чтобы опре-
делить, кто на самом деле работает в системе. Они также полезны
в случае повторных попыток проникновения в систему. В операцион-
ной системе поддерживается возможность блокировки терминала пос-
ле определенного числа попыток, и это событие также можно поста-
вить на контроль. Итак, у вас есть все средства, необходимые для
отслеживания (и предотвращения) доступа в систему.
Каждая запись регистрации содержит индикатор, обозначающий
конкретное действие, которое контролировалось. Существует три
возможности: успешная регистрация, неудачная регистрация, выход
из системы. Все успешные входы и выходы приводят к формированию
выходной контрольной записи, указывающей пользовательский бюджет
и терминал регистрационной сессии. Если попытка неудачна, имя
пользователя не имеет значения - ведь попытка не удалась. В этом
случае выводится только терминал, на котором была предпринята
попытка, а также поля базовой записи. На Рисунке 5-10 показан
вывод в случае успешной регистрации.
.
- 5-42 -
Process ID: 2812 Date/Time: Fri Mar 4 10:31:14 1988
Event type: Login/Logoff Activity
(Тип события: Вход в систему или выход из системы)
Action: Successful Login (Действие: Успешный вход)
Username: blf (Имя пользователя:...)
Terminal: /dev/tty2 (Терминал:...)
Рисунок 5-10. Выходная запись успешного входа в систему
Запись пользовательского пароля
Все попытки модифицировать пароль пользовательского бюджета
(и успешные, и неудачные) тщательно контролируются подсистемой
авторизации. По соображениям секретности контрольные записи для
этих событий не содержат текста пароля, но только указывают бюд-
жет и контролируемое действие. Все действия подразделяются на:
успешное изменение пароля, неудачное изменение, отсутствие раз-
решения на изменение пароля. На Рисунке 5-11 показана контроль-
ная запись для случая неудачной попытки изменения пароля.
Process ID: 7314 Date/Time: Tue Mar 1 18:30:44 1988
Event type: Authentication database activity
(Работа с базой данных аутентификации)
Action: Unsuccessful password change
(Неудачное изменение пароля)
Username: blf
Рисунок 5-11. Контрольная запись для неудачного изменения пароля
Запись защищенной базы данных
Программы, сопровождающие и модифицирующие защищенные базы
данных системы, контролируют все попытки доступа и нетривиальные
ситуации, связанные с базами данных. Здесь может идти речь о
множестве проблем, начиная с проблем целостности и кончая отка-
зов, связанных с секретностью. Помимо заголовка записи и назва-
ния контролируемого действия, в выводе содержится имя программы,
обнаружившей данную проблему, название объекта, с которым проб-
лема связана, ожидаемые и фактические значения, а также действие
и результат события.
Process ID: 7314 Date/Time: Tue Mar 1 18:30:44 1988
Event type: Authentication database activity
Command: authck
Object: Protected password database
(Объект: защищенная база данных паролей)
Value: Expected-0 Actual-0
(Значение: ожидаемое - 0, фактическое - 0)
Security action: /tcb/files/auth/code
(Действие, связанное с секретностью:...)
Result: extraneous file in protected password hierarchy
(Результат: посторонний файл в защищенной иерархии паролей)
Рисунок 5-12. Выходная запись для защищенной базы данных
.
- 5-43 -
Запись подсистемы контроля
События, затрагивающие работу подсистемы контроля, сами
очень тщательно контролируются. Выборы audit в sysadmsh и демон
контроля auditd генерируют контрольные записи для функций, кото-
рые они поддерживают. Помимо этого, драйвер устройства контроля
также создает контрольные записи для запросов определенных функ-
ций. Контролируются следующие функции:
инициализация подсистемы;
прекращение подсистемы;
модификация параметров подсистемы;
демон контроля включен;
демон контроля выключен;
останов подсистемы;
ошибка подсистемы.
Каждая выходная запись включает информацию общего заголов-
ка, а также индикатор контролируемой функции. Тем самым обеспе-
чивается точный учет всех попыток повлиять на работу подсистемы
контроля. На Рисунке 5-13 показана актуальная контрольная за-
пись, индицирующая запуск и инициализацию подсистемы.
Process ID: 517 Date/Time: Wed Mar 2 8:30:04 1988
Event type: Audit subsystem activity (Работа подсистемы контроля)
Action: Audit enabled (Контроль включен)
Рисунок 5-13. Выходная запись подсистемы контроля
Запись защищенной подсистемы
Каждая защищенная подсистема может генерировать контрольные
записи через демон контроля. Эти записи указывают на необычные
условия, обнаруженные подсистемой. Например, если подсистема
сталкивается с проблемами разрешений для файла или ей отказано в
обслуживании из-за нехватки памяти или других ресурсов, подсис-
тема генерирует сообщение о соответствующей ошибке. Эти записи
можно использовать, чтобы поддерживать безопасность системы.
Помимо обычного вывода заголовка записи, в записях подсис-
темы содержится имя команды, действие и результат. Имя команды
относится к команде, обнаружившей несовместимость и сформировав-
шей контрольную запись. Действие и результат описывают действия,
предпринятые подсистемой, и обнаруженную проблему. На Рисунке 5-
14 показана контрольная запись, сгенерированная подсистемой.
Process ID: 2812 Date/Time: Fri Mar 4 10:31:14 1988