2.4.2 Аудит в РЕД ОС
Скачать документЖурналирование
Аудит системных вызовов
Файлы и утилиты аудита РЕД ОС
Описание auditd.conf
Служба аудита — auditd
Утилита auditctl
Примеры базовых правил и конструкций утилиты auditctl
Утилита aureport
Утилита ausearch
Утилита autrace
Основными целями при разработке системных вызовов для подсистемы аудита были:
- максимально низкая нагрузка на производительность;
- отсутствие подобной функциональности в 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/rules.d/audit.rules. |
dispatcher | Диспетчер - программа, которой (на стандартный ввод) будут передаваться копии сообщений о событиях аудита. Она запускается (с правами администратора) службой аудита при загрузке последней. |
disp_qos | Разрешить ли блокирование при взаимодействии с диспетчером. Для передачи информации диспетчеру используется буфер размером 128 Kб. Это значение является оптимальным для большинства случаев. Если блокирование запрещено (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 в зависимости от соглашения относительно обращения со сбойным аппаратным обеспечением.
Служба аудита - auditd
Служба auditd - это прикладной компонент системы аудита Linux. Он ведёт протокол аудита на диске. Для просмотра протоколов предназначены команды ausearch и aureport. Команда auditctl позволяет настраивать правила аудита. Кроме того, при загрузке загружаются правила из файла /etc/audit/rules.d/audit.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 <список, действие> | Добавить правило с указанным действием к концу списка. Заметьте, что запятая разделяет эти два значения. Отсутствие запятой вызовет ошибку. Ниже описаны имена доступных списков:
|
Ниже описаны доступные действия для правил:
Действие | Описание действия |
never | Аудит не будет генерировать никаких записей. Это может быть использовано для подавления генерации событий. Обычно необходимо подавлять генерацию вверху списка, а не внизу, т.к. событие инициируется на первом совпавшем правиле. |
always | Установить контекст аудита. Всегда заполнять его во время входа в системный вызов и всегда генерировать запись во время выхода из системного вызова. |
-A <список, действие> | Добавить правило с указанным действием в начало списка. |
-d <список, действие> | Удалить правило с указанным действием из списка. Правило удаляется только в том случае, если полностью совпали и имя системного вызова, и поля сравнения. |
-D | Удалить все правила и точки наблюдения. |
-S <имя или номер системного вызова>/[all] | Любой номер или имя системного вызова может быть использован. Также возможно использование ключевого слова 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». Поля, оперирующие с идентификатором пользователя, могут также работать с именем пользователя - программа автоматически получит идентификатор пользователя из его имени. То же самое можно сказать и про имя группы. Поля сравнения могут быть заданы для следующих объектов:
|
-w <путь> | Добавить точку наблюдения за файловым объектом, находящемуся по указанному пути. Вы не можете добавлять точку наблюдения к каталогу верхнего уровня - это запрещено ядром. Групповые символы (wildcards) также не могут быть использованы, попытки их использования будут генерировать предупреждающее сообщение. Внутренне точки наблюдения реализованы как слежение за inode. Таким образом, если вы установите точку наблюдения за каталогом, вы увидите файловые события, которые в действительности будут означать обновления метаданных этой inode, и вы можете не увидеть событий, непосредственно связанных с файлами. Если вам необходимо следить за всеми файлами в каталоге, рекомендуется создавать индивидуальную точку наблюдения для каждого файла. В противоположность к правилам аудита системных вызовов, точки наблюдения не оказывают влияния на производительность, связанную с количеством правил посылаемых в ядро. |
-W <путь> | Удалить точку наблюдения за файловым объектом, находящемуся по указанному пути. |
Примеры базовых правил и конструкций
Приведенные ниже команды будут выполняться только в ходе работы одного сеанса ОС, если вы хотите сделать это правило постоянным, добавьте его в конец файла /etc/audit/rules.d/audit.rules следующим образом:
-w /var/log/audit/ -p wra -k auditlog
Самоаудит
Отображение успешных и неудачных попыток чтения информации из записей аудита:
auditctl -w /var/log/audit/ -p wra -k auditlog
Отображение изменения конфигурации аудита, происходящей во время работы функций журналирования:
auditctl -w /etc/audit/ -p wra -k auditconfig auditctl -w /etc/libaudit.conf -p wra -k auditconfig
Отслеживание использования инструментов управления аудитом:
auditctl -w /sbin/auditctl -p x -k audittools auditctl -w /sbin/auditd -p x -k audittools auditctl -w /usr/sbin/auditd -p x -k audittools auditctl -w /usr/sbin/augenrules -p x -k audittoolss
Отслеживание доступа к прочим утилитам службы аудирования:
auditctl -a always,exit -F path=/usr/sbin/ausearch -F perm=x -k auditreport auditctl -a always,exit -F path=/usr/sbin/aureport -F perm=x -k auditreport auditctl -a always,exit -F path=/usr/sbin/aulast -F perm=x -k auditreport auditctl -a always,exit -F path=/usr/sbin/aulastlogin -F perm=x -k auditreport auditctl -a always,exit -F path=/usr/sbin/auvirt -F perm=x -k auditreport
Фильтры
Игнорирование событий SELinux:
auditctl -a always,exclude -F msgtype=AVC
Игнорирование событий с меткой рабочей директории:
auditctl -a always,exclude -F msgtype=CWD
Игнорирование событий с меткой идентификатора криптографического ключа, используемого в криптографических целях:
auditctl -a always,exclude -F msgtype=CRYPTO_KEY_USER
Игнорирование событий сron:
auditctl -a never,user -F subj_type=crond_t auditctl -a exit,never -F subj_type=crond_t
Игнорирование событий chrony:
auditctl -a never,exit -F arch=b32 -S adjtimex -F auid=unset -F uid=chrony -F subj_type=chronyd_t auditctl -a never,exit -F arch=b64 -S adjtimex -F auid=unset -F uid=chrony -F subj_type=chronyd_t
Игнорирование сообщений, связанных с инструментами виртуальной машины:
###Игнорирование ошибок VMware tools auditctl -a never,exit -F arch=b32 -S fork -F success=0 -F path=/usr/lib/vmware-tools -F subj_type=initrc_t -F exit=-2 auditctl -a never,exit -F arch=b64 -S fork -F success=0 -F path=/usr/lib/vmware-tools -F subj_type=initrc_t -F exit=-2 auditctl -a exit,never -F arch=b32 -S all -F exe=/usr/bin/vmtoolsd auditctl -a exit,never -F arch=b64 -S all -F exe=/usr/bin/vmtoolsd
Фильтр событий большого объема:
### Игнорирование событий, связанных с работой shm и lvm auditctl -a never,exit -F arch=b32 -F dir=/dev/shm -k sharedmemaccess auditctl -a never,exit -F arch=b64 -F dir=/dev/shm -k sharedmemaccess auditctl -a never,exit -F arch=b32 -F dir=/var/lock/lvm -k locklvm auditctl -a never,exit -F arch=b64 -F dir=/var/lock/lvm -k locklvm
Игнорирование событий с меткой объекта FileBeat:
auditctl -a never,exit -F arch=b32 -F path=/opt/filebeat -k filebeat auditctl -a never,exit -F arch=b64 -F path=/opt/filebeat -k filebeat
Базовые правила
Отслеживание изменений параметров Kernel:
auditctl -w /etc/sysctl.conf -p wa -k sysctl auditctl -w /etc/sysctl.d -p wa -k sysctl
Отслеживание удачной и неудачной загрузки Kernel module:
auditctl -a always,exit -F perm=x -F auid!=-1 -F path=/sbin/insmod -k modules auditctl -a always,exit -F perm=x -F auid!=-1 -F path=/sbin/modprobe -k modules auditctl -a always,exit -F perm=x -F auid!=-1 -F path=/sbin/rmmod -k modules auditctl -a always,exit -F arch=b64 -S finit_module -S init_module -S delete_module -F auid!=-1 -k modules auditctl -a always,exit -F arch=b32 -S finit_module -S init_module -S delete_module -F auid!=-1 -k modules
Отслеживание изменений конфигурации Modprobe:
auditctl -w /etc/modprobe.conf -p wa -k modprobe auditctl -w /etc/modprobe.d -p wa -k modprobe
Отслеживание использования KExec:
auditctl -a always,exit -F arch=b64 -S kexec_load -k KEXEC auditctl -a always,exit -F arch=b32 -S sys_kexec_load -k KEXEC
Отслеживание использования специальных файлов (утилита mknod):
auditctl -a always,exit -F arch=b32 -S mknod -S mknodat -k specialfiles auditctl -a always,exit -F arch=b64 -S mknod -S mknodat -k specialfiles
Отслеживание использования утилиты mount:
auditctl -a always,exit -F arch=b64 -S mount -S umount2 -F auid!=-1 -k mount auditctl -a always,exit -F arch=b32 -S mount -S umount -S umount2 -F auid!=-1 -k mount
Отслеживание использования утилиты swap:
auditctl -a always,exit -F arch=b64 -S swapon -S swapoff -F auid!=-1 -k swap auditctl -a always,exit -F arch=b32 -S swapon -S swapoff -F auid!=-1 -k swap
Отслеживание изменения времени:
auditctl -a always,exit -F arch=b32 -F uid!=ntp -S adjtimex -S settimeofday -S clock_settime -k time auditctl -a always,exit -F arch=b64 -F uid!=ntp -S adjtimex -S settimeofday -S clock_settime -k time
Отслеживание изменения локального времени:
auditctl -w /etc/localtime -p wa -k localtime
Отслеживание использования утилиты stunnel:
auditctl -w /usr/sbin/stunnel -p x -k stunnel auditctl -w /usr/bin/stunnel -p x -k stunnel
Отслеживание изменения файлов конфигурации cron и запланированных заданий:
auditctl -w /etc/cron.allow -p wa -k cron auditctl -w /etc/cron.deny -p wa -k cron auditctl -w /etc/cron.d/ -p wa -k cron auditctl -w /etc/cron.daily/ -p wa -k cron auditctl -w /etc/cron.hourly/ -p wa -k cron auditctl -w /etc/cron.monthly/ -p wa -k cron auditctl -w /etc/cron.weekly/ -p wa -k cron auditctl -w /etc/crontab -p wa -k cron auditctl -w /var/spool/cron/ -k cron
Отслеживание изменения баз пользователей, групп, паролей:
auditctl -w /etc/group -p wa -k etcgroup auditctl -w /etc/passwd -p wa -k etcpasswd auditctl -w /etc/gshadow -k etcgroup auditctl -w /etc/shadow -k etcpasswd auditctl -w /etc/security/opasswd -k opasswd
Отслеживание изменения файлов sudo:
auditctl -w /etc/sudoers -p wa -k actions auditctl -w /etc/sudoers.d/ -p wa -k actions
Отслеживание использования passwd:
auditctl -w /usr/bin/passwd -p x -k passwd_modification
Отслеживание использования инструментов изменения идентификаторов группы:
auditctl -w /usr/sbin/groupadd -p x -k group_modification auditctl -w /usr/sbin/groupmod -p x -k group_modification auditctl -w /usr/sbin/addgroup -p x -k group_modification auditctl -w /usr/sbin/useradd -p x -k user_modification auditctl -w /usr/sbin/userdel -p x -k user_modification auditctl -w /usr/sbin/usermod -p x -k user_modification auditctl -w /usr/sbin/adduser -p x -k user_modification
Отслеживание изменения информации и конфигурации login:
auditctl -w /etc/login.defs -p wa -k login auditctl -w /etc/securetty -p wa -k login auditctl -w /var/log/faillog -p wa -k login auditctl -w /var/log/lastlog -p wa -k login auditctl -w /var/log/tallylog -p wa -k login
Правила сетевого окружения
Отслеживание изменения hostname:
auditctl -a always,exit -F arch=b32 -S sethostname -S setdomainname -k network_modifications auditctl -a always,exit -F arch=b64 -S sethostname -S setdomainname -k network_modifications
Отслеживание удачных попыток подключения IPv4:
auditctl -a always,exit -F arch=b64 -S connect -F a2=16 -F success=1 -F key=network_connect_4 auditctl -a always,exit -F arch=b32 -S connect -F a2=16 -F success=1 -F key=network_connect_4
Отслеживание удачных попыток подключения IPv6:
auditctl -a always,exit -F arch=b64 -S connect -F a2=28 -F success=1 -F key=network_connect_6 auditctl -a always,exit -F arch=b32 -S connect -F a2=28 -F success=1 -F key=network_connect_6
Отслеживание изменения файлов конфигурации сетевых настроек:
auditctl -w /etc/hosts -p wa -k network_modifications auditctl -w /etc/sysconfig/network -p wa -k network_modifications auditctl -w /etc/sysconfig/network-scripts -p w -k network_modifications auditctl -w /etc/network/ -p wa -k network auditctl -a always,exit -F dir=/etc/NetworkManager/ -F perm=wa -k network_modifications
Отслеживание изменения файлов issue:
auditctl -w /etc/issue -p wa -k etcissue auditctl -w /etc/issue.net -p wa -k etcissue
Отслеживание изменения скриптов при запуске ОС:
auditctl -w /etc/inittab -p wa -k init auditctl -w /etc/init.d/ -p wa -k init auditctl -w /etc/init/ -p wa -k init
Отслеживание изменения файлов libpath:
auditctl -w /etc/ld.so.conf -p wa -k libpath auditctl -w /etc/ld.so.conf.d -p wa -k libpath
Отслеживание изменения предварительной загрузки общесистемной библиотеки (LD_PRELOAD):
auditctl -w /etc/ld.so.preload -p wa -k systemwide_preloads
Отслеживание изменения конфигурации PAM и связанных с ним файлов:
auditctl -w /etc/pam.d/ -p wa -k pam auditctl -w /etc/security/limits.conf -p wa -k pam auditctl -w /etc/security/limits.d -p wa -k pam auditctl -w /etc/security/pam_env.conf -p wa -k pam auditctl -w /etc/security/namespace.conf -p wa -k pam auditctl -w /etc/security/namespace.d -p wa -k pam auditctl -w /etc/security/namespace.init -p wa -k pam
Отслеживание изменения конфигурации mail:
auditctl -w /etc/aliases -p wa -k mail auditctl -w /etc/postfix/ -p wa -k mail auditctl -w /etc/exim4/ -p wa -k mail
Отслеживание изменения конфигурации ssh:
auditctl -w /etc/ssh/sshd_config -k sshd auditctl -w /etc/ssh/sshd_config.d -k sshd
Отслеживание изменения подделки ключа ssh:
auditctl -w /root/.ssh -p wa -k rootkey
Правила служб
Отслеживание изменения и использования файлов systemd:
auditctl -w /bin/systemctl -p x -k systemd auditctl -w /etc/systemd/ -p wa -k systemd auditctl -w /usr/lib/systemd -p wa -k systemd
Отслеживание событий SELinux, которые изменяют систему мандатного управления доступом:
auditctl -w /etc/selinux/ -p wa -k mac_policy
Отслеживание событий сбоя доступа к критическим элементам:
auditctl -a always,exit -F arch=b64 -S open -F dir=/etc -F success=0 -k unauthedfileaccess auditctl -a always,exit -F arch=b64 -S open -F dir=/bin -F success=0 -k unauthedfileaccess auditctl -a always,exit -F arch=b64 -S open -F dir=/sbin -F success=0 -k unauthedfileaccess auditctl -a always,exit -F arch=b64 -S open -F dir=/usr/bin -F success=0 -k unauthedfileaccess auditctl -a always,exit -F arch=b64 -S open -F dir=/usr/sbin -F success=0 -k unauthedfileaccess auditctl -a always,exit -F arch=b64 -S open -F dir=/var -F success=0 -k unauthedfileaccess auditctl -a always,exit -F arch=b64 -S open -F dir=/home -F success=0 -k unauthedfileaccess auditctl -a always,exit -F arch=b64 -S open -F dir=/srv -F success=0 -k unauthedfileaccess
Отслеживание использования приложений для изменения идентификатора процесса (переключение учетных записей):
auditctl -w /bin/su -p x -k priv_esc auditctl -w /usr/bin/sudo -p x -k priv_esc auditctl -w /etc/sudoers -p rw -k priv_esc auditctl -w /etc/sudoers.d -p rw -k priv_esc
Отслеживание использования приложений, изменяющих состояние питания:
auditctl -w /sbin/shutdown -p x -k power auditctl -w /sbin/poweroff -p x -k power auditctl -w /sbin/reboot -p x -k power auditctl -w /sbin/halt -p x -k power
Отслеживание изменения информации об инициации сеанса:
auditctl -w /var/run/utmp -p wa -k session auditctl -w /var/log/btmp -p wa -k session auditctl -w /var/log/wtmp -p wa -k session
Отслеживание модификации дискреционного контроля доступа:
auditctl -a always,exit -F arch=b32 -S chmod -F auid>=1000 -F auid!=-1 -k perm_mod auditctl -a always,exit -F arch=b32 -S chown -F auid>=1000 -F auid!=-1 -k perm_mod auditctl -a always,exit -F arch=b32 -S fchmod -F auid>=1000 -F auid!=-1 -k perm_mod auditctl -a always,exit -F arch=b32 -S fchmodat -F auid>=1000 -F auid!=-1 -k perm_mod auditctl -a always,exit -F arch=b32 -S fchown -F auid>=1000 -F auid!=-1 -k perm_mod auditctl -a always,exit -F arch=b32 -S fchownat -F auid>=1000 -F auid!=-1 -k perm_mod auditctl -a always,exit -F arch=b32 -S fremovexattr -F auid>=1000 -F auid!=-1 -k perm_mod auditctl -a always,exit -F arch=b32 -S fsetxattr -F auid>=1000 -F auid!=-1 -k perm_mod auditctl -a always,exit -F arch=b32 -S lchown -F auid>=1000 -F auid!=-1 -k perm_mod auditctl -a always,exit -F arch=b32 -S lremovexattr -F auid>=1000 -F auid!=-1 -k perm_mod auditctl -a always,exit -F arch=b32 -S lsetxattr -F auid>=1000 -F auid!=-1 -k perm_mod auditctl -a always,exit -F arch=b32 -S removexattr -F auid>=1000 -F auid!=-1 -k perm_mod auditctl -a always,exit -F arch=b32 -S setxattr -F auid>=1000 -F auid!=-1 -k perm_mod auditctl -a always,exit -F arch=b64 -S chmod -F auid>=1000 -F auid!=-1 -k perm_mod auditctl -a always,exit -F arch=b64 -S chown -F auid>=1000 -F auid!=-1 -k perm_mod auditctl -a always,exit -F arch=b64 -S fchmod -F auid>=1000 -F auid!=-1 -k perm_mod auditctl -a always,exit -F arch=b64 -S fchmodat -F auid>=1000 -F auid!=-1 -k perm_mod auditctl -a always,exit -F arch=b64 -S fchown -F auid>=1000 -F auid!=-1 -k perm_mod auditctl -a always,exit -F arch=b64 -S fchownat -F auid>=1000 -F auid!=-1 -k perm_mod auditctl -a always,exit -F arch=b64 -S fremovexattr -F auid>=1000 -F auid!=-1 -k perm_mod auditctl -a always,exit -F arch=b64 -S fsetxattr -F auid>=1000 -F auid!=-1 -k perm_mod auditctl -a always,exit -F arch=b64 -S lchown -F auid>=1000 -F auid!=-1 -k perm_mod auditctl -a always,exit -F arch=b64 -S lremovexattr -F auid>=1000 -F auid!=-1 -k perm_mod auditctl -a always,exit -F arch=b64 -S lsetxattr -F auid>=1000 -F auid!=-1 -k perm_mod auditctl -a always,exit -F arch=b64 -S removexattr -F auid>=1000 -F auid!=-1 -k perm_mod auditctl -a always,exit -F arch=b64 -S setxattr -F auid>=1000 -F auid!=-1 -k perm_mod
Специальные правила
Отслеживание запросов на получение информации о пользователе:
auditctl -w /usr/bin/whoami -p x -k recon auditctl -w /usr/bin/id -p x -k recon auditctl -w /bin/hostname -p x -k recon auditctl -w /bin/uname -p x -k recon auditctl -w /etc/issue -p r -k recon auditctl -w /etc/hostname -p r -k recon
Отслеживание подозрительной деятельности:
### Подразумевается, что использование специализированных утилит, связанных с работой с/в ### внутренней/внешней сетью, может быть отслежено и зажурналировано. auditctl -w /usr/bin/wget -p x -k susp_activity auditctl -w /usr/bin/curl -p x -k susp_activity auditctl -w /usr/bin/base64 -p x -k susp_activity auditctl -w /bin/nc -p x -k susp_activity auditctl -w /bin/netcat -p x -k susp_activity auditctl -w /usr/bin/ncat -p x -k susp_activity auditctl -w /usr/bin/ss -p x -k susp_activity auditctl -w /usr/bin/netstat -p x -k susp_activity auditctl -w /usr/bin/ssh -p x -k susp_activity auditctl -w /usr/bin/scp -p x -k susp_activity auditctl -w /usr/bin/sftp -p x -k susp_activity auditctl -w /usr/bin/ftp -p x -k susp_activity auditctl -w /usr/bin/socat -p x -k susp_activity auditctl -w /usr/bin/wireshark -p x -k susp_activity auditctl -w /usr/bin/tshark -p x -k susp_activity auditctl -w /usr/bin/rawshark -p x -k susp_activity auditctl -w /usr/bin/rdesktop -p x -k Remote_Access_Tools auditctl -w /usr/local/bin/rdesktop -p x -k Remote_Access_Tools auditctl -w /usr/bin/wlfreerdp -p x -k susp_activity auditctl -w /usr/bin/xfreerdp -p x -k Remote_Access_Tools auditctl -w /usr/local/bin/xfreerdp -p x -k Remote_Access_Tools auditctl -w /usr/bin/nmap -p x -k susp_activity
Отслеживание использования утилит архивации и сжатия данных:
auditctl -w /usr/bin/zip -p x -k Data_Compressed auditctl -w /usr/bin/gzip -p x -k Data_Compressed auditctl -w /usr/bin/tar -p x -k Data_Compressed auditctl -w /usr/bin/bzip2 -p x -k Data_Compressed auditctl -w /usr/bin/lzip -p x -k Data_Compressed auditctl -w /usr/local/bin/lzip -p x -k Data_Compressed auditctl -w /usr/bin/lz4 -p x -k Data_Compressed auditctl -w /usr/local/bin/lz4 -p x -k Data_Compressed auditctl -w /usr/bin/lzop -p x -k Data_Compressed auditctl -w /usr/local/bin/lzop -p x -k Data_Compressed auditctl -w /usr/bin/plzip -p x -k Data_Compressed auditctl -w /usr/local/bin/plzip -p x -k Data_Compressed auditctl -w /usr/bin/pbzip2 -p x -k Data_Compressed auditctl -w /usr/local/bin/pbzip2 -p x -k Data_Compressed auditctl -w /usr/bin/lbzip2 -p x -k Data_Compressed auditctl -w /usr/local/bin/lbzip2 -p x -k Data_Compressed auditctl -w /usr/bin/pixz -p x -k Data_Compressed auditctl -w /usr/local/bin/pixz -p x -k Data_Compressed auditctl -w /usr/bin/pigz -p x -k Data_Compressed auditctl -w /usr/local/bin/pigz -p x -k Data_Compressed auditctl -w /usr/bin/unpigz -p x -k Data_Compressed auditctl -w /usr/local/bin/unpigz -p x -k Data_Compressed auditctl -w /usr/bin/zstd -p x -k Data_Compressed auditctl -w /usr/local/bin/zstd -p x -k Data_Compressed
Отслеживание подозрительной активности в sbin:
### Подразумевается, что использование специализированных утилит может быть отслежено и ### зажурналировано. auditctl -w /sbin/iptables -p x -k sbin_susp auditctl -w /sbin/ip6tables -p x -k sbin_susp auditctl -w /sbin/ifconfig -p x -k sbin_susp auditctl -w /usr/sbin/arptables -p x -k sbin_susp auditctl -w /usr/sbin/ebtables -p x -k sbin_susp auditctl -w /sbin/xtables-nft-multi -p x -k sbin_susp auditctl -w /usr/sbin/nft -p x -k sbin_susp auditctl -w /usr/sbin/tcpdump -p x -k sbin_susp auditctl -w /usr/sbin/traceroute -p x -k sbin_susp auditctl -w /usr/sbin/ufw -p x -k sbin_susp
Отслеживание отправки вызовов dbus:
### Может указывать на повышение привилегий CVE-2021-3560 auditctl -w /usr/bin/dbus-send -p x -k dbus_send auditctl -w /usr/bin/gdbus -p x -k gdubs_call
Отслеживание вызовов pkexec:
### Может указывать на повышение привилегий CVE-2021-4034 auditctl -w /usr/bin/pkexec -p x -k pkexec
Отслеживание подозрительной активности, связанной с shell:
auditctl -w /bin/ash -p x -k susp_shell auditctl -w /bin/bash -p x -k susp_shell auditctl -w /bin/csh -p x -k susp_shell auditctl -w /bin/dash -p x -k susp_shell auditctl -w /bin/busybox -p x -k susp_shell auditctl -w /bin/ksh -p x -k susp_shell auditctl -w /bin/fish -p x -k susp_shell auditctl -w /bin/tcsh -p x -k susp_shell auditctl -w /bin/tclsh -p x -k susp_shell auditctl -w /bin/zsh -p x -k susp_shell auditctl -w /bin/xonsh -p x -k susp_shell auditctl -w /usr/local/bin/xonsh -p x -k susp_shell auditctl -w /bin/open -p x -k susp_shell auditctl -w /bin/sh -p x -k susp_shell auditctl -w /bin/rbash -p x -k susp_shell
Отслеживание изменения конфигурации Shell/profile configurations:
auditctl -w /etc/profile.d/ -p wa -k shell_profiles auditctl -w /etc/profile -p wa -k shell_profiles auditctl -w /etc/shells -p wa -k shell_profiles auditctl -w /etc/bashrc -p wa -k shell_profiles auditctl -w /etc/csh.cshrc -p wa -k shell_profiles auditctl -w /etc/csh.login -p wa -k shell_profiles auditctl -w /etc/fish/ -p wa -k shell_profiles auditctl -w /etc/zsh/ -p wa -k shell_profiles
Отслеживание злоупотребления привилегиями:
### Целью этого правила является обнаружение случаев, когда администратор злоупотребляет полномочиями, ### путем просмотра домашнего каталога пользователя. auditctl -a always,exit -F dir=/home -F uid=0 -F auid>=1000 -F auid!=-1 -C auid!=obj_uid -k power_abuse
Отслеживание создания сокетов:
### Отслеживает как IPv4, так и IPv6 auditctl -a always,exit -F arch=b32 -S socket -F a0=2 -k Exfiltration_Over_Other_Network_Medium auditctl -a always,exit -F arch=b64 -S socket -F a0=2 -k Exfiltration_Over_Other_Network_Medium auditctl -a always,exit -F arch=b32 -S socket -F a0=10 -k Exfiltration_Over_Other_Network_Medium auditctl -a always,exit -F arch=b64 -S socket -F a0=10 -k Exfiltration_Over_Other_Network_Medium
Отслеживание создания анонимного файла:
### Эти правила следят за использованием memfd_create, "memfd_create" создает анонимный файл и возвращает ### дескриптор файла для доступа к нему auditctl -a always,exit -F arch=b64 -S memfd_create -F key=anon_file_create auditctl -a always,exit -F arch=b32 -S memfd_create -F key=anon_file_create
Правила управления ПО
Отслеживание использования rpm/yum:
auditctl -w /usr/bin/rpm -p x -k software_mgmt auditctl -w /usr/bin/yum -p x -k software_mgmt
Отслеживание использования dnf:
auditctl -w /usr/bin/dnf -p x -k software_mgmt
Отслеживание использования pip:
auditctl -w /usr/bin/pip -p x -k third_party_software auditctl -w /usr/local/bin/pip -p x -k third_party_software auditctl -w /usr/bin/pip3 -p x -k third_party_software auditctl -w /usr/local/bin/pip3 -p x -k third_party_software
Отслеживание использования npm:
auditctl -w /usr/bin/npm -p x -k third_party_software
Отслеживание использования CPAN (Comprehensive Perl Archive Network):
auditctl -w /usr/bin/cpan -p x -k third_party_software
Отслеживание использования ruby (RubyGems):
auditctl -w /usr/bin/gem -p x -k third_party_software
Отслеживание использования Lua:
auditctl -w /usr/bin/luarocks -p x -k third_party_software
Правила управления специальным ПО
Отслеживание изменений файлов puppet:
auditctl -w /etc/puppet/ssl -p wa -k puppet_ssl
Отслеживание изменений файлов chef:
auditctl -w /etc/chef -p wa -k soft_chef
Отслеживание изменений файлов otter:
auditctl -w /etc/otter -p wa -k soft_otter
Отслеживание использования утилиты grep:
auditctl -w /usr/bin/grep -p x -k T1081_Credentials_In_Files auditctl -w /usr/bin/egrep -p x -k T1081_Credentials_In_Files auditctl -w /usr/bin/ugrep -p x -k T1081_Credentials_In_Files
Отслеживание использования и изменения файлов конфигурации docker:
auditctl -w /usr/bin/dockerd -k docker auditctl -w /usr/bin/docker -k docker auditctl -w /usr/bin/docker-containerd -k docker auditctl -w /usr/bin/docker-runc -k docker auditctl -w /var/lib/docker -k docker auditctl -w /etc/docker -k docker auditctl -w /etc/sysconfig/docker -k docker auditctl -w /etc/sysconfig/docker-storage -k docker auditctl -w /usr/lib/systemd/system/docker.service -k docker auditctl -w /usr/lib/systemd/system/docker.socket -k docker
Отслеживание использования систем виртуализации:
auditctl -w /usr/bin/qemu-system-x86_64 -p x -k qemu-system-x86_64 auditctl -w /usr/bin/qemu-img -p x -k qemu-img auditctl -w /usr/bin/qemu-kvm -p x -k qemu-kvm auditctl -w /usr/bin/qemu -p x -k qemu auditctl -w /usr/bin/virtualbox -p x -k virtualbox auditctl -w /usr/bin/virt-manager -p x -k virt-manager auditctl -w /usr/bin/VBoxManage -p x -k VBoxManage
Отслеживание использования утилиты kubelet (Kubernetes):
auditctl -w /usr/bin/kubelet -k kubelet
«Тяжелые» события
Правила, представленные ниже, требуют большого объема свободного пространства в среде.
Отслеживание применения команд с правами пользователя root:
auditctl -a always,exit -F arch=b64 -F euid=0 -F auid>=1000 -F auid!=4294967295 -S execve -k rootcmd auditctl -a always,exit -F arch=b32 -F euid=0 -F auid>=1000 -F auid!=4294967295 -S execve -k rootcmd
Отслеживание события удаления файлов пользователем:
auditctl -a always,exit -F arch=b32 -S rmdir -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=-1 -k delete auditctl -a always,exit -F arch=b64 -S rmdir -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=-1 -k delete
Отслеживание события неудачного доступа к файлу:
auditctl -a always,exit -F arch=b32 -S creat -S open -S openat -S open_by_handle_at -S truncate -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=-1 -k file_access auditctl -a always,exit -F arch=b32 -S creat -S open -S openat -S open_by_handle_at -S truncate -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=-1 -k file_access auditctl -a always,exit -F arch=b64 -S creat -S open -S openat -S open_by_handle_at -S truncate -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=-1 -k file_access auditctl -a always,exit -F arch=b64 -S creat -S open -S openat -S open_by_handle_at -S truncate -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=-1 -k file_access
Отслеживание события неудачного создания:
auditctl -a always,exit -F arch=b32 -S creat,link,mknod,mkdir,symlink,mknodat,linkat,symlinkat -F exit=-EACCES -k file_creation auditctl -a always,exit -F arch=b64 -S mkdir,creat,link,symlink,mknod,mknodat,linkat,symlinkat -F exit=-EACCES -k file_creation auditctl -a always,exit -F arch=b32 -S link,mkdir,symlink,mkdirat -F exit=-EPERM -k file_creation auditctl -a always,exit -F arch=b64 -S mkdir,link,symlink,mkdirat -F exit=-EPERM -k file_creation
Отслеживание события неудачной модификации:
auditctl -a always,exit -F arch=b32 -S rename -S renameat -S truncate -S chmod -S setxattr -S lsetxattr -S removexattr -S lremovexattr -F exit=-EACCES -k file_modification auditctl -a always,exit -F arch=b64 -S rename -S renameat -S truncate -S chmod -S setxattr -S lsetxattr -S removexattr -S lremovexattr -F exit=-EACCES -k file_modification auditctl -a always,exit -F arch=b32 -S rename -S renameat -S truncate -S chmod -S setxattr -S lsetxattr -S removexattr -S lremovexattr -F exit=-EPERM -k file_modification auditctl -a always,exit -F arch=b64 -S rename -S renameat -S truncate -S chmod -S setxattr -S lsetxattr -S removexattr -S lremovexattr -F exit=-EPERM -k file_modification
Отслеживание события использования 32-битного API для 64-битной системы:
### Это правило обнаружит любое использование 32-битных системных вызовов, потому как это может быть ### признаком использования уязвимости 32-битного API. auditctl -a always,exit -F arch=b32 -S all -k 32bit_api
Утилита 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
Дата последнего изменения: 18.11.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.