Страница:
контроля и файла выборки
Как говорилось выше, критерий сбора данных контроля предс-
тавляет первый уровень выбора для контроля. После того, как дан-
ные собраны, их можно сократить (выполнить редукцию), т.е. обра-
ботать для получения нужной коллекции данных о конкретном аспек-
те работы системы. Меню редукции данных позволяют выбрать выпол-
нение редукции и определить, какие нужны записи. Опция Generate
обеспечивает широкий диапазон критериев пост-выборки, с помощью
которых можно указать конкретные события, пользователей или объ-
екты.
Последняя опция выводит на экран сокращенный вывод сессии
контроля. Для этого требуется номер сессии и файл выборки, кото-
рым может быть любой из файлов выборки, построенный с помощью
опций создания или обновления файлов выборки.
Файлы выборки
Программа редукции использует для пост-выборки контрольных
записей файл под названием файл выборки. Этот файл строится
программой интерфейса Администратора контроля на основе вашего
ввода. Вы можете строить и сохранять множество файлов, каждый со
своим набором критериев выбора. Затем можно выполнить редукцию
несколько раз для одних и тех же данных сессии, но каждый раз с
различными файлами выборки. Таким образом, вы можете строить и
сохранять файлы выборки, часто используемые при редукции данных.
Когда нужно будет выполнить редукцию данных, можно использовать
уже построенные файлы.
Для сопровождения файлов выборки используются опции 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
Запись системного вызова 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-39 -
сообщений и 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
Запись системного вызова 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
Event type: Authorized subsystem activity
(Работа авторизованной подсистемы)
Subsystem: System Administrator Subsystem
(Подсистема: Администратор системы)
Security action: Update /etc/rc
(Действие, связанное с секретностью: Обновление...)
Result: Cannot open for update
(Результат: Файл нельзя открыть для обновления)
Рисунок 5-14. Выходная запись авторизованной подсистемы
.
- 5-44 -
Запись терминала/пользовательского бюджета
Пользовательские бюджеты или терминалы могут оказаться заб-
локированными, если число неудачных попыток регистрации в систе-
ме превысит значение, хранящееся в базе данных авторизации. Нап-
ример, если терминал используется для входа в систему, результа-
том чего является серия неудачных попыток регистрации, то прог-
рамма регистрации может заблокировать терминал после определен-
ного числа попыток. Аналогичным образом, если пользователь пыта-
ется зарегистрироваться в бюджете, и ему это несколько раз не
удается, то пользовательский бюджет может быть заблокирован.
Блокировка бюджетов и терминалов не позволит осуществлять доступ
к ним до тех пор, пока Администратор системы не снимет блокиров-
ку. Терминал или пользовательский бюджет могут быть заблокирова-
ны при попытке проникновения в систему. Соответствующие конт-
рольные записи содержат обычную информацию заголовка, а также
идентификатор пользовательского бюджета или терминала.
Process ID: 517 Date/Time: Wed Mar 2 8:30:04 1988
Event type: System administrator activity
(Работа администратора системы)
Action: User account locked by system administrator
(Пользовательский бюджет заблокирован администратором системы)
Username: root (Имя пользователя: ...)
Рисунок 5-15. Выходная запись блокировки
пользовательского бюджета
Проблемные области подсистемы контроля
Ниже приведены описания ситуаций, в которых возникают проб-
лемы, связанные с контролем.
Пространство на диске
Подсистема контроля может сгенерировать большое число конт-
рольных записей. Хотя они и достаточно маленькие, но памяти мо-
гут потребовать очень много. Поэтому при административном управ-
лении системой следует соблюдать осторожность. Контрольная ин-
формация должна направляться на диски, где имеется достаточно
доступного пространства. В подсистеме имеются встроенные меха-
низмы защиты, которые выдают предупреждения, когда в устройстве
контроля остается мало места. Если ситуация не выправляется и
объем оставшегося пространства на диске становится меньше неко-