сохранять файлы выборки, часто используемые при редукции данных.
Когда нужно будет выполнить редукцию данных, можно использовать
уже построенные файлы.
Для сопровождения файлов выборки используются опции List,
View, Create, Modify и Delete. Процедура выборки подробнее об-
.
- 5-35 -
суждается в следующем разделе. Экран с опциями, приведенными вы-
ше, используется для вызова экрана следующего уровня, чтобы вы-
полнить нужную функцию над файлом выборки. Как ясно из названий
опций, файлы выборки могут быть созданы, обновлены, модифициро-
ваны или удалены.
Для редукции контрольных записей можно выбрать следующие
критерии:
Event types Типы событий
Каждый тип события, который следует отби-
рать, помечается буквой "Y". Типы событий,
которые нужно исключить из выборки, остают-
ся с пробелами или помечаются буквой "N".
Если событие не выбрано, то соответствующие
ему записи будут удалены из вывода.
Start and Stop times Начальное и конечное время
Если есть подозрение, что в некоторый пери-
од времени могло произойти событие, связан-
ное с секретностью, то с помощью данной
возможности можно выбрать только записи,
сгенерированные в этот период. Это поможет
сосредоточиться на анализе записей, которые
вероятнее всего прояснят происшедшее.
Users/Groups Пользователи/Группы
Для контроля можно выделить пользователей
или группы пользователей. Если целью про-
никновения в систему был определенный поль-
зовательский бюджет, то можно выбрать толь-
ко те записи, которые были сгенерированы с
идентификатором пользователя или группы,
соответствующим данному пользователю. Это
позволит при просмотре записей сконцентри-
роваться на подозреваемых бюджетах.
Files Файлы
Для выбора контрольных записей из вывода
можно также использовать файлы (имена объ-
ектов). Если запись содержит несколько имен
объектов и заданное имя совпадает с каким-
нибудь именем объекта в записи, то эта за-
пись выбирается. Имена объектов должны быть
заданы в виде абсолютных имен путей, так
как все относительные имена объектов прог-
рамма редукции преобразует в абсолютные.
Можно использовать любую комбинацию этих критериев. Напри-
мер, для одной сессии можно задать выборку по временному интер-
валу, по идентификатору пользователя и по имени объекта. Если
запись попадает в заданный интервал времени, сгенерирована за-
данным пользователем и содержит один из заданных объектов, то
она выбирается для вывода.
При выборке записей действует система приоритетов, управля-
ющая применением критериев выборки. Если тип событий контроля не
задан, то запись не выбирается, независимо от остальных критери-
.
- 5-36 -
ев. Аналогично, если определена выборка по времени и запись не
удовлетворяет критерию, она не выбирается. Если запись удовлет-
воряет критерию выбора по типу события и по времени, то она вы-
бирается в том случае, если в ней содержится идентификатор поль-
зователя (регистрационный, эффективный или реальный), идентифи-
катор группы (эффективный или реальный) или объект, заданный в
файле выборки. Если никакие пользователи, группы и объекты не
заданы, то выполняется выборка только по типу события и по вре-
мени.
Понятие редукции данных
Опция reduce меню Audit Report имеет важное значение, как и
все компоненты, ответственные за генерацию контрольных записей.
Эта утилита преобразует уплотненные данные контрольного журнала
в организованную и читабельную совокупность записей, позволяющую
выявить проблемы в системе. Средства редукции дают возможность
сократить время, требуемое для анализа интересующих записей. Вы
можете сконцентрироваться на конкретном пользователе, на группе
пользователей, имени объекта, типах событий и записях, сгенери-
рованных за определенный интервал времени. Все это можно исполь-
зовать совместно, что дает мощный механизм для выбора.
Чтобы расшифровать контрольный журнал, нужно понять значе-
ние записей, выдаваемых программой. Помните, что контрольные
записи исходят из трех источников: системные вызовы, надежные
прикладные программы и защищенные подсистемы. Форматы записей
для разных источников очень сильно отличаются друг от друга. Бо-
лее того, разные системные вызовы сильно отличаются и друг от
друга по содержанию, так как выполняют специфические функции.
Например, при создании процесса fork(S) нужно указать только
идентификатор создаваемого процесса и идентификатор породившего
его процесса. А для системного вызова open(S) должны быть запи-
саны объект, для которого выполняется операция, и его имя. Для
таких системных вызовов, как mount(S) и link(S), должна быть за-
писана и другая информация; каждый из них требует записи двух
имен объектов. Утилита редукции сортирует представленные ей за-
писи и выводит информацию в упорядоченном виде.
Выходные записи можно классифицировать на две категории:
записи системных вызовов, выданные механизмом контроля ядра, и
контрольные записи прикладных программ. Некоторые элементы счи-
таются общими для всех выходных записей. Например, дата и время
записи, а также связанный с ней идентификатор процесса выводятся
в записи любого типа. В остальном содержимое записи зависит от
того, что было под контролем.
Форматы записей системных вызовов
Записи системных вызовов составляют большинство записей в
контрольном журнале. В операционной системе имеется более 60
системных вызовов. Не все они подлежат контролю, так как только
некоторые системные вызовы считаются связанными с секретностью.
Чуть больше половины системных вызовов имеют возможность создать
контрольную запись. Некоторые системные вызовы поддерживают по
.
- 5-37 -
несколько функций (такие, как fcntl(S), msgsys(S), shmsys(S),
semsys(S)), а контрольные записи могут генерироваться только для
отдельных функций. Например, системный вызов fcntl(S) позволяет
открывать файлы, дублируя дескрипторы открытых файлов, а также
получать специальные флаги файлов, обеспечиваемые ядром. Первый
случай представляет контролируемое событие (сделать объект дос-
тупным для субъекта), а второй реально не связан с секретностью.
Наконец, системные вызовы могут выполнять функции, которые расс-
матриваются как контролируемые события, но в данный момент не
разрешены системной маской событий.
Вывод записей системных вызовов большей частью одинаков для
всех вызовов. Варианты возникают вследствие того, что некоторые
системные вызовы действуют над объектами (например, open(S)), и
имя объекта содержится в записи. Каждая запись содержит по край-
ней мере время, дату, идентификатор процесса, имя системного вы-
зова, тип события, регистрационный идентификатор пользователя,
реальные идентификаторы пользователя и группы, а также индикатор
успешности или неуспешности вызова.
Каждая выходная запись содержит, наряду с этими основными
информационными полями, и другие, в зависимости от системного
вызова. Базовая запись показана на Рисунке 5-1. Он содержит при-
мер общего заголовка, а также поля типа события, системного вы-
зова и результата.
Process ID: 68 Date/Time: Sat Mar 5 13:25:09 1988
Luid: root Euid: root Ruid: root Egid: root Rgid: root
Event type:
System call:
Result:
Рисунок 5-1. Общий заголовок выходной записи
Каждый системный вызов классифицируется по типу системного
события, исходя из выполняемых им действий. Это используется для
описания типа события системного вызова. Предоставляется акту-
альное имя системного вызова. В большинстве случаев это одноз-
начно идентифицирует действие. К сожалению, некоторые системные
вызовы UNIX перегружены: точка входа системного вызова использу-
ется для выполнения множества действий. Например, msgsys() слу-
жит входом системного вызова для операций IPC с очередями сооб-
щений. Эта точка входа используется для вызова msgget(S),
msgop(S) и msgctl(S), выполняющих определенные функции IPC.
Подобные системные вызовы не являются самоочевидными. Под-
система контроля осведомлена об этих перегруженных вызовах и
предоставляет дополнительную информацию для идентифицирования
конкретной функции. Для успешных системных вызовов результат оп-
ределяется как successful (успешный). Для вызовов, возвращающих
ошибку, эта ошибка используется для дополнительной классификации
записи. Например, вызов open(S), не выполнившийся из-за отсутс-
твия разрешения, классифицируется как access denial (отказ дос-
тупа). Неудачный системный вызов, генерирующий контрольную за-
пись, указывает ошибку в поле результата.
.
- 5-38 -
Выходные записи системных вызовов можно разделить на две
группы. К первой группе относятся записи, в которых не нужно
указывать имена путей. Например, системный вызов fork(S) контро-
лируется для отслеживания новых процессов, порождаемых в систе-
ме, но контрольная запись не требует имени пути. С другой сторо-
ны, open(S) возвращает дескриптор файла для заданного имени пу-
ти. Последующие операции, такие как close(S), используют этот
дескриптор файла. Чтобы контрольные записи были значимы, этот
второй тип записей должен содержать имя пути. С помощью програм-
мы редукции это имя пути сопоставляется со всеми последующими
действиями, выполняемыми для данного файла, даже если эти дейс-
твия выполнялись с дескриптором файла.
В следующей таблице приведены контролируемые системные вы-
зовы, не содержащие информации об имени пути.
pipe fork kill
setuid setgid exit
read setpgrp msg
sem shm write
Рисунок 5-2. Системные вызовы без имен путей
Для системного вызова из этого списка выходная запись ис-
пользует общую маску записи, изображенную на Рисунке 5-3. Данный
пример иллюстрирует выходную запись для успешного системного вы-
зова setuid(S).
Process ID: 6381 Date/Time: Tue Mar 15 11:25:19 1988
Luid: blf Euid: blf Ruid: root Egid: root Rgid: root
Event type: Modify process (Тип события: Модифицировать процесс)
System call: Setuid
Result: Successful
Рисунок 5-3. Запись системного вызова setuid(S)
Аналогичным образом на следующем рисунке показана выходная
запись системного вызова setuid(S), не выполнившегося из-за от-
сутствия разрешения для файла. Заметьте, что классификация типа
события здесь другая, и что ошибка отражается в поле результата.
Process ID: 6381 Date/Time: Tue Mar 15 11:25:19 1988
Luid: blf Euid: blf Ruid: blf Egid: guru Rgid: guru
Event type: Modify process
System call: Setuid
Result: Failed (EPERM) -Not owner (Неудача: Не владелец)
Рисунок 5-4. Выходная запись при отказе доступа
Многие системные вызовы этой группы генерируют в выходной
записи дополнительную информацию, уточняющую данные контрольного
журнала. Системные вызовы семафора, разделяемой памяти, очереди
.
- 5-39 -