4.7 Аудит в РЕД ОС

Основные целями при разработке системных вызовов для подсистемы аудита были:

  • максимально низкая нагрузка на производительность;
  • отсутствие подобной функциональности в SELinux (и/или в любой другой подсистеме безопасности).

Инструментарий аудита будет работать без внедренных компонент безопасности, но он не может быть использован вместо них, т.е., например, он не будет предоставлять функциональные возможности без действующих подсистем безопасности.

Есть две основные части: одна работает всегда (базовое журналирование в audit.c), а другой можно управлять во время загрузки или работы сервера (аудит системных вызовов в auditsc.c). Патч включает в себя изменения в security/selinux/avc.c в качестве примера, как системные вызовы аудита могут быть использованы совместно с другим кодом, определяющим события для аудита.

Журналирование

Использует сетевой сокет для связи с пользовательским пространством. Если служба запущена – все сообщения журналируются через этот сетевой сокет. Иначе, сообщения журналируются через printk посредством службы syslog (по умолчанию).

Сообщения могут не журналироваться (настраивается отдельно) в зависимости от настроек аудита, скорости генерации сообщений или загруженности памяти.

Когда какая-то часть ядра генерирует часть сообщения аудита, эта часть будет немедленно послана в пользовательское пространство, и автоматически выставится флаг, указывающий, что этот системный вызов находится под аудитом. Таким образом, при выходе из системного вызова будет сформирована дополнительная информация (если включен аудит системных вызовов).

Аудит системных вызовов

Во время создания процесса, формируется контекст аудита и привязывается к структуре, описывающей процесс.

Во время входа в системный вызов, заполняется следующая информация в контексте аудита, если он есть: номер системного вызова, дата и время, но не аргументы.

В ходе работы системного вызова перехватываются обращения к getname() и path_lookup(). Эти процедуры вызываются, когда ядро действительно собирается искать информацию, для принятия решения, будет ли системный вызов успешно выполнен или нет. Перехватывать вызовы нужно для того, чтобы не допустить копирование информации, которую генерирует getname, поскольку getname уже сделал приватную (для ядра) копию этой информации.

Следует заметить, что сохранение копий всех аргументов системного вызова усложняет реализацию и требует увеличения расхода ресурсов, что, наиболее вероятно, не нужно. С этим патчем, к примеру, если  непривилегированный пользователь, то chroot(“foo”) будет завершен с ошибкой – “foo” не будет отражено в записи аудита, потому что ядро определяет еще перед поиском “foo”, что работа системного вызова не может быть продолжена. Этот подход предотвращает сохранение пользовательской информации, которая может быть ложной или ненадежной (например, из-за атаки на совместно используемую память) в отличие от истинной информации, фактически используемой ядром.

Во время выхода их системного вызова генерируется та часть сообщения аудита, которая ответственна за информацию о системном вызове, включая имена файлов и номера inode (если доступны). Сообщение о системном вызове генерируется, только если выставлен флаг, указывающий, что системный вызов находится под аудитом (он выставляется, например, когда SELinux генерирует avc сообщение или когда другая часть ядра определяет, что должно формироваться сообщение для аудита). Следует заметить, что полное сообщение аудита приходит в пользовательское пространство по частям, это позволяет не хранить сообщения неопределенный срок внутри ядра.

Во время завершения процесса контекст аудита уничтожается.

Во время генерации сообщения аудита может быть выполнена простая фильтрация (например, для увеличения производительности – отключение аудита системных вызовов выполняемых от имени пользователя, работающего с базой данных). Фильтрация может быть, как простой, так и сложной. В основном, инструментарий аудита использует компоненты ядра (например, SELinux), чтобы принимать решение о том, что необходимо подвергать аудиту, а что нет.

Файлы и утилиты аудита РЕД ОС

Описание auditd.conf

В файле /etc/audit/auditd.conf определяются параметры службы аудита. На одной строке может быть не больше одной директивы. Директива состоит из ключевого слова (названия параметра), знака равенства и соответствующих ему данных (значения параметра). Допустимые ключевые слова:

log_file, log_format, flush, freq, num_logs, max_log_file, max_log_file_action, space_left, action_mail_acct, space_left_action, admin_space_left, admin_space_left_action, disk_full_action и disk_error_action.

Далее даётся описание каждого из них.

Ключ Значение ключа
log_file Полное имя файла, в который следует записывать протокол.
log_format Оформление данных в протоколе. Допустимы два значения: raw и nolog. При указании RAW, данные будут записываться в том виде, в котором они получаются от ядра. Значение NOLOG отключает запись данных об аудите. Этот параметр не влияет на обработку данных диспетчером событий системы аудита.
priority_boost Неотрицательное число, определяющее повышение приоритета выполнения службы аудита. Значение по умолчанию: 3. Для того чтобы не изменять приоритет, укажите 0.
Flush Стратегия работы с дисковым буфером. Допустимые значения: none, incremental, data и sync. Вариант none, отключает какие-либо дополнительные действия со стороны службы по синхронизации буфера с диском. При значении incremental, запросы на перенос данных из буфера на диск выполняются с частотой задаваемой параметром freq. При значении data данные файла синхронизируются немедленно. Значение sync указывает на необходимость немедленной синхронизации как данных, так и метаданных файла при записи на диск.
Freq Максимальное число записей протокола, которые могут храниться в буфере. При достижении этого числа производится запись буфериованных данных на диск. Данный параметр допустим, только если flush имеет значение incremental.
num_logs Максимальное число файлов с протоколами. Используется, если параметр max_log_file_action имеет значение rotate. Если указано число меньше 2, при достижении ограничения на размер файла он обнуляется. Значение параметра не должно превышать 99. Значение по умолчанию: 0. При указании большого числа может потребоваться увеличить ограничение на количество ожидающих запросов. Это можно сделать в файле / etc/audit/audit.rules.
Dispatcher Диспетчер – программа, которой (на стандартный ввод) будут передаваться копии сообщений о событиях аудита. Она запускается (с правами администратора) службой аудита при загрузке последней.
disp_qos Разрешить ли блокирование при взаимодействии с диспетчером. Для передачи информации диспетчеру используется буфер размером 128 кб. Это значение является оптимальным для большинства случаев. Если блокирование запрещено (lossy), то все сообщения, поступающие при полном буфере, не будут доходить до диспетчера (записи о них по-прежнему будут вноситься в файл на диске, если только log_format не равно nolog). В случае, если блокирование разрешено (lossless), служба аудита будет ожидать появления свободного места в очереди, передавать сообщение диспетчеру и только потом записывать его на диск. Допустимые значения: lossy и lossless. Значение по умолчанию – lossy.
max_log_file Ограничение на размер файла протокола в мегабайтах. Действие, выполняемое при достижении размера файла указанного значения, можно настроить с помощью следующего параметра.
max_log_file_action Действие предпринимаемое при достижении размером файла протокола максимального значения. Допустимые значения: ignore, syslog, suspend, rotate и keep_logs. Вариант ignore, отключает контроль над размером файла. При значении syslog в системный протокол будет внесено соответствующее сообщение. При значении suspend дальнейшее ведение протокола будет прекращено. Служба по-прежнему будет работать. При значении rotate текущий файл будет переименован и для протокола будет создан новый файл. Имя предыдущего протокола будет дополнено числом 1, а номера других протоколов (если они имеются) будут увеличены на единицу. Таким образом, чем больше номер у протокола, тем он старше. Максимальное число файлов определяется параметром num_logs (естественно, соответствие ему достигается за счёт удаления самых старых протоколов). Такое поведение аналогично поведению утилиты logrotate. Вариант keep_logs аналогичен предыдущему, но число файлов не ограничено.
action_mail_acct Адрес электронной почты. Значение по умолчанию: root. Если адрес не локальный по отношению к данной системе, необходимо чтобы в ней был настроен механизм отправки почты. В частности, требуется наличие программы /usr/lib/sendmail.
space_left Минимум свободного пространства в мегабайтах, при достижении которого должно выполняться действие определяемое следующим параметром.
space_left_action Действие, предпринимаемое при достижении объёмом свободного пространства на диске указанного минимума. Допустимые значения – ignore, syslog, email, exec, suspend, single и halt. При значении ignore, никаких действий не производится. При значении syslog в системный протокол добавляется соответствующая запись. При значении email по адресу указанному в action_mail_acct отправляется уведомление. При значении exec <путь к программе> запускается программа по указанному пути. Передача параметров не поддерживается. При значении suspend служба аудита прекратит вести протокол событий на диске, но будет продолжать работать. Указание single приведёт к переводу компьютера в одно пользовательский режим. Указание halt приведёт к выключению компьютера.
admin_space_left Критический минимум свободного пространства в мегабайтах, при достижении которого должно выполняться действие определяемое следующим параметром. Данное действие следует рассматривать как последнюю меру, предпринимаемую перед тем, как закончится место на диске. Значение настоящего параметра должно быть меньше значения space_left.
admin_space_left_action Действие, предпринимаемое при достижении объёмом свободного пространства на диске указанного критического минимума. Допустимые значения – ignore, syslog, email, exec, suspend, single и halt. При значении ignore, никаких действий не производится. При значении syslog в системный протокол добавляется соответствующая запись. При значении email по адресу указанному в action_mail_acct отправляется уведомление. При значении exec <путь к программе> запускается программа по указанному пути. Передача параметров не поддерживается. При значении suspend служба аудита прекратит вести протокол событий на диске, но будет продолжать работать. Указание single приведёт к переводу компьютера в однопользовательский режим. Указание halt приведёт к выключению компьютера.
disk_full_action Действие, предпринимаемое при обнаружении отсутствия свободного пространства на диске. Допустимые значения – ignore, syslog, email, exec, suspend, single и halt. При значении ignore, никаких действий не производится. При значении syslog в системный протокол добавляется соответствующая запись. При значении email по адресу указанному в action_mail_acct отправляется уведомление. При значении exec /некоторый-путь запускается сценарий по указанному пути. Передача параметров сценарию не поддерживается. При значении suspend служба аудита прекратит вести протокол событий на диске, но будет продолжать работать. Указание single приведёт к переводу компьютера в однопользовательский режим. Указание halt приведёт к выключению компьютера.
disk_error_action Действие, предпринимаемое при возникновении ошибки в работе с диском. Допустимые значения – ignore, syslog, email, exec, suspend, single и halt. При значении ignore, никаких действий не производится. При значении syslog в системный протокол добавляется соответствующая запись. При значении email по адресу указанному в action_mail_acct отправляется уведомление. При значении exec /<некоторый путь> запускается сценарий по указанному пути. Передача параметров сценарию не поддерживается. При значении suspend служба аудита прекратит вести протокол событий на диске, но будет продолжать работать. Указание single приведёт к переводу компьютера в однопользовательский режим. Указание halt приведёт к выключению компьютера.
Важно
В среде CAPP (Controlled Access Protection Profile – контролируемый профиль защиты доступа) ведение протоколов настолько важно, что невозможность его продолжения может служить основанием отказа в доступе к ресурсам. Поэтому рекомендуется выделять для файла /var/log/audit специальный раздел. Кроме того, параметру flush следует присвоить значение sync или data.

Для обеспечения полного использования раздела параметрам max_log_file и num_logs следует присвоить соответствующие значения. Учитывайте, что чем больше файлов создаётся на диске (и соответственно переименовывается), тем больше времени будет уходить на обработку событий при достижении размером очередного файла максимума. Параметру max_log_file_action рекомендуется присвоить значение keep_logs.

Значение space_left должно быть таким, которое позволит администратору вовремя среагировать на предупреждение. Обычно в число действий выполняемых администратором входит запуск aureport -t и архивирование самых старых протоколов. Значение space_left зависит от системы, в частности от частоты поступления сообщений о событиях. Значение space_left_action рекомендуется установить в email. Если требуется отправка сообщения snmp trap, укажите вариант exec.

Установите значение admin_space_left таким образом, чтобы хватило свободного места для сохранения записей о последующих действиях администратора. Значение параметра admin_space_left_action следует установить в single, ограничив, таким образом, способы взаимодействия с системой консолью.

Действие, указанное в disk_full_action, выполняется, когда в разделе уже не осталось свободного места. Доступ к ресурсам машины должен быть полностью прекращён, т.к. нет возможности контролировать работу системы. Это можно сделать, указав значение single или halt.

Значение disk_error_action следует установить в syslog, single, либо halt в зависимости от соглашения относительно обращения со сбойным аппаратным обеспечением.

Служба аудита Linux – auditd

Служба auditd – это прикладной компонент системы аудита Linux. Он ведёт протокол аудита на диске. Для просмотра протоколов предназначены команды ausearch и aureport. Команда auditctl позволяет настраивать правила аудита. Кроме того, при загрузке загружаются правила из файла /etc/audit/auditd.rules. Некоторые параметры самой службы можно изменить в файле auditd.conf.

Синтаксис:

auditd [-f] [-l] [-n]

Опции:

 

Опция Значение опции
-f не переходить в фоновый режим (для отладки). Сообщения программы будут направляться в стандартный вывод для ошибок (stderr), а не в файл.
-l включить следование по символическим ссылкам при поиске конфигурационных файлов.
-n не создавать дочерний процесс. Для запуска из inittab.

Сигналы:

Сигнал Значение сигнала
SIGHUP Перезагрузить конфигурацию – загрузить файл конфигурации с диска. Если в файле не окажется синтаксических ошибок, внесенные в него изменения вступят в силу. При этом в протокол будет добавлена запись о событии DAEMON_CONFIG. В противном случае действия службы будут зависеть от параметров space_left_action, admin_space_left_action, disk_full_action, disk_error_action файла auditd.conf.
SIGTERM прекратить обработку событий аудита и завершить работу, о чём предварительно занести запись в протокол.
SIGUSR1 создать новый файл для протокола, перенумеровав старые файлы или удалив часть из них, в зависимости от параметра max_log_size_action.
Важно
Для того чтобы сделать возможным аудит всех процессов, запущенных до службы аудита, добавьте в строку параметров ядра (в конфигурации загрузчика) audit=1. В противном случае аудит некоторых процессов будет невозможен.

Утилита auditctl

Утилита auditctl используется для контроля поведения, получения состояния и добавления/удаления правил аудита, предоставляемого Linux ядром.

Опции:

Опция Значение опции
-b backlog Установить максимальное количество доступных для аудита буферов, ожидающих обработки (значение в ядре по умолчанию – 64). Если все буфера заняты, то флаг сбоя будет выставлен ядром для его дальнейшей обработки.
-e [0..2] Установить флаг блокировки. 0 позволит на время отключить аудит, включить его обратно можно, передав 1 как параметр. Если установлено значение опции 2, то защитить конфигурацию аудита от изменений. Каждый, кто захочет воспользоваться этой возможностью, может поставить эту команду последней в audit.rules. После этой команды все попытки изменить конфигурацию будут отвергнуты с уведомлением в журналах аудита. В этом случае, чтобы задействовать новую конфигурацию аудита, необходимо перезагрузить систему аудита.
-f [0..2] Установить способ обработки для флага сбоя. 0=silent 1=printk 2=panic. Эта опция позволяет определить, каким образом ядро будет обрабатывать критические ошибки. Например, флаг сбоя выставляется при следующих условиях: ошибки передачи в пространство службы аудита, превышение лимита буферов, ожидающих обработки, выход за пределы памяти ядра, превышение лимита скорости выдачи сообщений. Значение по умолчанию: 1. Для систем с повышенными требованиями к безопасности, значение 2 может быть более предпочтительно.
-h Краткая помощь по аргументам командной строки.
-i Игнорировать ошибки при чтении правил из файла.
-l Вывести список всех правил по одному правилу в строке.
-k ключ Установить на правило ключ фильтрации. Ключ фильтрации – это произвольная текстовая строка длиной не больше 31 символа. Ключ помогает уникально идентифицировать записи, генерируемые в хода аудита за точкой наблюдения.
-m текст Послать в систему аудита пользовательское сообщение. Это может быть сделано только из-под учетной записи root.
-p [r|w|x|a] Установить фильтр прав доступа для точки наблюдения. r=чтение, w=запись, х=исполнение, a=изменение атрибута. Не путайте эти права доступа с обычными правами доступа к файлу – они определяют типы системных вызовов, которые выполняют данные действия. Заметьте, системные вызовы read и write не включены в этот набор, поскольку логи аудита были бы перегружены информацией о работе этих вызовов.
-r частота Установить ограничение скорости выдачи сообщений в секунду (0 – нет ограничения). Если эта частота не нулевая и она превышается в ходе аудита, флаг сбоя выставляется ядром для выполнения соответствующего действия. Значение по умолчанию: 0.
-R файл Читать правила из файла. Правила должны быть расположены по одному в строке и в том порядке, в каком они должны исполняться. Следующие ограничения накладываются на файл: владельцем должен быть root и доступ на чтение должен быть только у него. Файл может содержать комментарии, начинающиеся с символа ‘#’. Правила, расположенные в файле, идентичны тем, что набираются в командной строке, без указания ‘auditctl’.
-s Получить статус аудита.
-a список, действие Добавить правило с указанным действием к концу списка. Заметьте, что запятая разделяет эти два значения. Отсутствие запятой вызовет ошибку. Ниже описаны имена доступных списков:
task Добавить правило к списку, отвечающему за процессы. Этот список правил используется только во время создания процесса – когда родительский процесс вызывает fork() или clone(). При использовании этого списка вы можете использовать только те поля, которые известны во время создания процесса: uid, gid и т.д.
entry Добавить правило к списку, отвечающему за точки входа системных вызовов. Этот список применяется, когда необходимо создать событие для аудита, привязанное к точкам входа системных вызовов.
exit Добавить правило к списку, отвечающему за точки выхода из системных вызовов. Этот список применяется, когда необходимо создать событие для аудита, привязанное к точкам выхода из системных вызовов.
user Добавить правило, отвечающее за список фильтрации пользовательских сообщений. Этот список используется ядром, чтобы отфильтровать события приходящие из пользовательского пространства, перед тем как они будут переданы службе аудита. Необходимо отметить, что только следующие поля могут быть использованы: uid, auid, gid и pid. Все остальные поля будут обработаны, как если бы они не совпали.
exclude Добавить правило к списку, отвечающего за фильтрацию событий определенного типа. Этот список используется, чтобы отфильтровывать ненужные события. Например, если вы не хотите видеть avc сообщения, вы должны использовать этот список. Тип сообщения задается в поле msgtype.

Ниже описаны доступные действия для правил:

Действие Описание действия
never Аудит не будет генерировать никаких записей. Это может быть использовано для подавления генерации событий. Обычно необходимо подавлять генерацию вверху списка, а не внизу, т.к. событие инициируется на первом совпавшем правиле.
always Установить контекст аудита. Всегда заполнять его во время входа в системный вызов, и всегда генерировать запись во время выхода из системного вызова.
-A список,действие Добавить правило с указанным действием в начало списка.
-d список,действие Удалить правило с указанным действием из списка. Правило удаляется только в том случае, если полностью совпали и имя системного вызова и поля сравнения.
-D Удалить все правила и точки наблюдения.
-S [Имя или номер системного вызова] Любой номер или имя системного вызова может быть использован. Также возможно использование ключевого слова all. Если какой-либо процесс выполняет указанный системный вызов, то аудит генерирует соответствующую запись. Если значения полей сравнения заданы, а системный вызов не указан, правило будет применяться ко всем системным вызовам. В одном правиле может быть задано несколько системных вызовов – это положительно сказывается на производительности, поскольку заменяет обработку нескольких правил.
-F [n=v | n!=v | n<v | n>v | n<=v | n>=v | n&v | n&=v] Задать поле сравнения для правила. Атрибуты поля следующие: объект, операция, значение. Вы можете задать до 64 полей сравнения в одной команде. Каждое новое поле должно начинаться с -F. Аудит будет генерировать запись, если произошло совпадение по всем полями сравнения. Допустимо использование одного из следующих 8 операторов: равно, не равно, меньше, больше, меньше либо равно, больше либо равно, битовая маска (n&v) и битовая проверка (n&=v). Битовая проверка выполняет операцию ‘and’ над значениями и проверяет, равны ли они. Битовая маска просто выполняет операцию ‘and’. Поля, оперирующие с идентификатором пользователя, могут также работать с именем пользователя – программа автоматически получит идентификатор пользователя из его имени. То же самое можно сказать и про имя группы.

Поля сравнения могут быть заданы для следующих объектов: Четыре первых аргумента, переданных системному вызову. Строковые аргументы не поддерживаются. Это связано с тем, что ядро должно получать указатель на строку, а проверка поля по значению адреса указателя не желательна. Таким образом, необходимо использовать только цифровые значения.

Поле сравнения Описание
arch Архитектура процессора, на котором выполняется системный вызов. Используйте ‘uname -m’, чтобы определить архитектуру. Если вы не знаете архитектуру вашей машины, но хотите использовать таблицу 32-х битных системных вызовов, и ваша машина поддерживает 32 бита, вы можете использовать x32. Подобно этому x64 может быть использовано для использования таблицы 64-х битных системных вызовов.
auid Это аббревиатура: audit uid – идентификатор пользователя, использованный для входа в систему.
devmajor Главный номер устройства (Device Major Number)
devminor Вспомогательный номер устройства (Device Minor Number)
egid Действительный идентификатор группы.
euid Действительный идентификатор пользователя.
exit Значение, возвращаемое системным вызовом при выходе.
fsgid Идентификатор группы, применяемый к файловой системе.
fsuid Идентификатор пользователя, применяемый к файловой системе.
gid Идентификатор группы
inode Номер
inode key Альтернативный способ установить ключ фильтрации. Смотри выше описание опции -k.
msgtype Используется для проверки совпадения с числом, описывающим тип сообщения. Может быть использован только в списке exclude.
obj_user Имя пользователя-владельца ресурса (в контексте SELinux).
obj_role Роль ресурса (в контексте SELinux)
obj_type Тип ресурса (в контексте SELinux)
obj_lev_low Нижний уровень ресурса (в контексте SELinux)
obj_lev_high Верхний уровень ресурса (в контексте SELinux)
path Полный путь к файлу для точки наблюдения. Смотри ниже описание опции “-w”. Может быть использован только в списке exit.
perm Фильтр прав доступа для файловых операций. Смотри выше описание опции “-p”. Может быть использован только в списке exit.
pers Персональный номер операционной системы.
pid Идентификатор процесса.
ppid Идентификатор родительского процесса.
subj_user Имя пользователя-владельца процесса (в контексте SELinux).
subj_role Роль процесса (в контексте SELinux).
subj_type Тип процесса (в контексте SELinux).
subj_sen Чувствительность процесса (в контексте SELinux).
subj_clr Допуск процесса (в контексте SELinux).
sgid Установленный идентификатор группы.
success Если значение, возвращаемое системным вызовом, больше либо равно 0, данный объект будет равен “true/yes”, иначе “false/no”. При создании правила используйте 1 вместо “true/yes” и 0 вместо”false/no”.
suid Установленный идентификатор пользователя.
uid Идентификатор пользователя.
-w путь Добавить точку наблюдения за файловым объектом, находящимся по указанному пути. Вы не можете добавлять точку наблюдения к каталогу верхнего уровня – это запрещено ядром. Групповые символы (wildcards) также не могут быть использованы, попытки их использования будут генерировать предупреждающее сообщение. Внутренне точки наблюдения реализованы как слежение за inode. Таким образом, если вы установите точку наблюдения за каталогом, вы увидите файловые события, которые в действительности будут означать обновления метаданных этой inode, и вы можете не увидеть событий, непосредственно связанных с файлами. Если вам необходимо следить за всеми файлами в каталоге, рекомендуется создавать индивидуальную точку наблюдения для каждого файла. В противоположность к правилам аудита системных вызовов, точки наблюдения не оказывают влияния на производительность, связанную с количеством правил посылаемых в ядро.
-W путь Удалить точку наблюдения за файловым объектом, находящимся по указанному пути.

Примеры:

Чтобы увидеть все системные вызовы, используемые определенным процессом:

auditctl -a entry,always -S all -F pid=1005

Чтобы увидеть все файлы, открытые определенным пользователем:

auditctl -a exit,always -S open -F auid=510

Чтобы увидеть неудачные попытки вызова системной функции ‘open’:

auditctl -a exit,always -S open -F success!=0

Утилита aureport

Утилита aureport – это инструмент, который генерирует итоговые отчеты на основе логов службы аудита. aureport может также принимать данные со стандартного ввода (stdin) до тех пор, пока на входе будут необработанные данные логов. В шапке каждого отчета для каждого столбца есть заголовок – это облегчает понимание данных. Все отчеты, кроме основного итогового отчета, содержат номера событий аудита. Используя их, вы можете найти полные данные о событии с помощью ausearch -a номер события. Если в отчете слишком много данных, можно задать время начала и время окончания для уточнения временного промежутка. Отчеты, генерируемые aureport, могут быть использованы как исходный материал для получения более развернутых отчетов.

Опции:

 

Опция Значение опции
-au, –auth Отчет о всех попытках аутентификации.
-a, –avc Отчет о всех avc сообщениях.
-c, –config Отчет о изменениях конфигурации.
-cr, –crypto Отчет о событиях, связанных с шифрованием.
-e, –event Отчет о событиях.
-f, –file Отчет о файлах.
–failed Для обработки в отчетах выбирать только неудачные события. По умолчанию показываются и удачные и неудачные события.
-h, –host Отчет о хостах.
-i, –interpret Транслировать числовые значения в текстовые. Например, идентификатор пользователя будет оттранслирован в имя пользователя. Трансляция выполняется c использованием данных с той машины, где запущен aureport. Т.е. если вы переименовали учетные записи пользователей или не имеете таких же учетных записей на вашей машине, то вы можете получить результаты, вводящие в заблуждение.
-if, –input файл Использовать указанный файл вместо логов аудита. Это может быть полезно при анализе логов с другой машины или при анализе частично сохраненных логов.
-l, –login Отчет о попытках входа в систему
-m, –mods Отчет об изменениях пользовательских учетных записей.
-ma, –mac Отчет о событиях в системе обеспечивающей мандатное управление доступом – Mandatory Access Control (MAC).
-p, –pid Отчет о процессах
-r, –response Отчет о реакциях на аномальные события
-s, –syscall Отчеты о системных вызовах
–success Для обработки в отчетах выбирать только удачные события. По умолчанию показываются и удачные и неудачные события.
–summary Генерировать итоговый отчет, который дает информацию только о количестве элементов в том или ином отчете. Такой режим есть не у всех отчетов.
-t, –log Этот параметр генерирует отчет о временных рамках каждого отчета.
-te, –end [дата] [время] Искать события, которые произошли раньше (или во время) указанной временной точки. Формат даты и времени зависит от ваших региональных настроек. Если дата не указана, то подразумевается текущий день (today). Если не указано время, то подразумевается текущий момент (now). Используйте 24-часовую нотацию времени, а не AM/PM. Например, дата может быть задана как 10/24/2005, а время – как 18:00:00.

Вы можете также использовать ключевые слова: now, recent, today, yesterday, this-week, this-month, this-year. today означает первую секунду после полуночи текущего дня. recent – 10 минут назад. yesterday – первую секунду после полуночи предыдущего дня. this-week означает первую секунду после полуночи первого дня текущей недели, первый день недели определяется из ваших региональных настроек. this-month означает первую секунду после полуночи первого числа текущего месяца. this-year означает первую секунду после полуночи первого числа первого месяца текущего года.

-tm, –terminal Отчет о терминалах.
-ts, –start [дата] [время] Искать события, которые произошли после (или во время) указанной временной точки. Формат даты и времени зависит от ваших региональных настроек. Если дата не указана, то подразумевается текущий день (today). Если не указано время, то подразумевается полночь (midnight). Используйте 24-часовую нотацию времени, а не AM/PM. Например, дата может быть задана как 10/24/2005, а время – как 18:00:00.

Вы можете также использовать ключевые слова: now, recent, today, yesterday, this-week, this-month, this-year. today означает первую секунду после полуночи текущего дня. recent – 10 минут назад. yesterday – первую секунду после полуночи предыдущего дня. this-week означает первую секунду после полуночи первого дня текущей недели, первый день недели определяется из ваших региональных настроек. this-month означает первую секунду после полуночи первого числа текущего месяца. this-year означает первую секунду после полуночи первого числа первого месяца текущего года.

-u, –user Отчет о пользователях.
-v, –version Вывести версию программы и выйти.

Утилита ausearch

Программа ausearch является инструментом поиска по журналу аудита. Утилита ausearch может также принимать данные со стандартного ввода (stdin) до тех пор, пока на входе будут необработанные данные логов. Все условия, указанные в параметрах, объединяются логическим И. К примеру, при указании – m и -ui в качестве параметров будут показаны события, соответствующие заданному типу и идентификатору пользователя.

Стоит отметить, что каждый системный вызов ядра из пользовательского пространства и возвращение данных в пользовательское пространство имеет один уникальный (для каждого системного вызова) идентификатор события.

Различные части ядра могут добавлять дополнительные записи. Например, в событие аудита для системного вызова “open” добавляется запись PATH с именем файла. ausearch показывает все записи события вместе. Это означает, что при запросе определенных записей результат может содержать записи SYSCALL.

Также помните, что не все типы записей содержат указанную информацию. Например, запись PATH не содержит имя узла или loginuid.

Опции:

Опция Значение опции
-a, –event audit-event-id Искать события с заданным идентификатором события. Сообщения обычно начинаются примерно так: msg=audit(1116360555.329:2401771). Идентификатор события – это число после ‘:’. Все события аудита, связанные с одним системным вызовом имеют одинаковый идентификатор.
-c, –comm comm-name Искать события с заданным comm name. comm name – имя исполняемого файла задачи.
-f, –file file-name Искать события с заданным именем файла.
-ga, –gid-all all-group-id Искать события с заданным эффективным или обычным идентификатором группы.
-ge, –gid-effective effective-group-id Искать события с заданным эффективным идентификатором группы или именем группы.
-gi, –gidgroup-id Искать события с заданным идентификатором группы или именем группы.
-h, –help Справка.
-hn, –host host-name Транслировать числовые значения в текстовые. Например, идентификатор пользователя будет оттранслирован в имя пользователя. Трансляция выполняется c использованием данных с той машины, где запущен ausearch. Т.е. если вы переименовали учетные записи пользователей или не имеете таких же учетных записей на вашей машине, то вы можете получить результаты, вводящие в заблуждение.
-if, –input file-name Использовать указанный файл вместо логов аудита. Это может быть полезно при анализе логов с другой машины или при анализе частично сохраненных логов.
-k, –key key-string Искать события с заданным ключевым словом.
-m, –message message-type | comma-sep-message-type-list Искать события с заданным типом. Вы можете указать список значений, разделенных запятыми. Можно указать несуществующий в событиях тип ALL, который позволяет получить все сообщения системы аудита. Список допустимых типов большой и будет показан, если указать эту опцию без значения. Тип сообщения может быть строкой или числом. В списке значений этого параметра в качестве разделителя используются запятые и пробелы недопустимы.
-o, –object SE-Linux-context-string Искать события с заданным контекстом (объектом).
-p, –pid process-id Искать события с заданным идентификатором процесса.
-pp, –ppid parent-process-id Искать события с заданным идентификатором родительского процесса.
-r, –raw Необработанный вывод. Используется для извлечения записей для дальнейшего анализа.
-sc, –success syscall-name-or-value Искать события с заданным системным вызовом. Вы можете указать его номер или имя. Если вы указали имя, оно будет проверено на машине, где запущен ausearch.
-se, –context SE-Linux-context-string Искать события с заданным контекстом SELinux (stcontext/subject или tcontext/object).
-su, –subject SE-Linux-context-string Искать события с заданным контекстом SELinux – scontext (subject).
-sv, –success success-value Искать события с заданным флагом успешного выполнения. Допустимые значения: yes (успешно) и no(неудачно).
-te, –end [end-date] [end-time] Искать события, которые произошли раньше (или во время) указанной временной точки. Формат даты и времени зависит от ваших региональных настроек. Если дата не указана, то подразумевается текущий день (today). Если не указано время, то подразумевается текущий момент (now). Используйте 24-часовую нотацию времени, а не AM/PM. Например, дата может быть задана как 10/24/2005, а время – как 18:00:00.

Вы можете также использовать ключевые слова: now, recent, today, yesterday, this-week, this-month, this-year. today означает первую секунду после полуночи текущего дня. recent – 10 минут назад. yesterday – первую секунду после полуночи предыдущего дня. this-week означает первую секунду после полуночи первого дня текущей недели, первый день недели определяется из ваших региональных настроек (см. localtime). this-month означает первую секунду после полуночи первого числа текущего месяца. this-year означает первую секунду после полуночи первого числа первого месяца текущего года.

-ts, –start [start-date] [start-time] Искать события, которые произошли после (или во время) указанной временной точки. Формат даты и времени зависит от ваших региональных настроек. Если дата не указана, то подразумевается текущий день (today). Если не указано время, то подразумевается полночь (midnight). Используйте 24-часовую нотацию времени, а не AM/PM. Например, дата может быть задана как 10/24/2005, а время – как 18:00:00.

Вы можете также использовать ключевые слова: now, recent, today, yesterday, this-week, this-month, this-year. today означает первую секунду после полуночи текущего дня. recent – 10 минут назад. yesterday – первую секунду после полуночи предыдущего дня. this-week означает первую секунду после полуночи первого дня текущей недели, первый день недели определяется из ваших региональных настроек. this-month означает первую секунду после полуночи первого числа текущего месяца. this-year означает первую секунду после полуночи первого числа первого месяца текущего года.

-tm, –terminal terminal Искать события с заданным терминалом. Некоторые службы (такие как cron и atd) используют имя службы как имя терминала.
-ua, –uid-all all-user-id Искать события, у которых любой из идентификатора пользователя, эффективного идентификатора пользователя или loginuid (auid) совпадают с заданным идентификатором пользователя.
-ue, –uid-effective effective-user-id Искать события с заданным эффективным идентификатором пользователя.
-ui, –uid user-id Искать события с заданным идентификатором пользователя.
-ul, –loginuid login-id Искать события с заданным идентификатором пользователя. Все программы, которые его используют, должны использовать pam_loginuid.
-v, –verbose Показать версию и выйти
-w, –word Совпадение с полным словом. Поддерживается для имени файла, имени узла, терминала и контекста SELinux.
-x, –executable executable Искать события с заданным именем исполняемой программы.

Утилита autrace

Утилита autrace – это программа, которая добавляет правила аудита для того, чтобы следить за использованием системных вызовов в указанном процессе подобно тому, как это делает strace. После добавления правил она запускает процесс с указанными аргументами. Результаты аудита будут либо в логах аудита (если служба аудита запущена), либо в системных логах. Внутри autrace устроена так, что удаляет все предыдущие правила аудита, перед тем как запустить указанный процесс и после его завершения. Поэтому, в качестве дополнительной меры предосторожности, программа не запустится, если перед ее использованием правила не будут удалены с помощью audtictl – предупреждающее сообщение известит об этом.

Опции:

Опция Значение опции
-r Ограничить сбор информации о системных вызовах только теми, которые необходимы для анализа использования ресурсов. Это может быть полезно при моделировании внештатных ситуаций, к тому же позволяет уменьшить нагрузку на логи.

Примеры:

Ниже представлен пример обычного использования программы:

autrace /bin/ls /tmp
ausearch --start recent -p 2442 -i

Еще один пример для режима ограниченного сбора информации:

autrace -r /bin/ls
ausearch --start recent -p 2450 --raw | aureport --file –summary
ausearch --start recent -p 2450 --raw | aureport --host –summary

Если вы нашли ошибку, выделите текст и нажмите Ctrl+Enter.