Невозможно отучить людей изучать самые ненужные предметы.
Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3
Надо знать обо всем понемножку, но все о немногом.
Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы
Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)
Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода
Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5
Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости
Справочник от А до Я
HTML, CSS, JavaScript
Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы
Помогли мы вам |
В этой статье я расскажу, как устроена подсистема аудита, как ей управлять, а также как получить журнал аудита всех интересующих тебя событий.
Подсистема аудита в Linux состоит из двух групп компонентов: в пространстве ядра это kauditd, а в пользовательском — auditd.
В общем виде схема работы подсистемы аудита выглядит следующим образом.
Ядро, принимая системные вызовы из user space, пропускает их через фильтры user
, task
, filesystem
, exclude
и exit
.
user
используется для фильтрации (исключения) событий, происходящих в пользовательском пространстве до отправки в auditd. Практически никогда не используется.task
применяется для системных вызовов fork()
и clone()
.filesystem
используется для исключения событий для конкретной файловой системы.exclude
задает исключения для событий.exit
проходят все системные вызовы. Обычно настраивают именно этот фильтр.Через netlink(
сообщения отправляются из kauditd в auditd. При получении событий, демон auditd записывает их в лог (по умолчанию /
).
Настраивая фильтры с помощью утилиты auditctl, мы можем управлять потоком событий, который хотим получать. С помощью утилит ausearch, aureport, aulast удобно просматривать журнал аудита.
Давай теперь установим и настроим все подсистемы аудита. Установка крайне проста и не вызывает никаких сложностей:
$ sudo systemctl enable --nowauditd
Статус работы подсистемы аудита можно получить так:
$ sudo auditctl -s
enabled 1
failure 1
pid 885
rate_limit 0
backlog_limit 8192
lost 0
backlog 0
backlog_wait_time 60000
loginuid_immutable 0 unlocked
Для теста есть возможность отправить текстовое сообщение в подсистему аудита и убедиться, что соответствующее событие попало в журнал аудита.
$ sudo auditctl -m helloaudit
$ sudo ausearch -m USER
----
type=USER msg=audit(08/31/2021 19:20:11.160:330699) : pid=305708 uid=root auid=andrey ses=5 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='text=helloaudit exe=/usr/sbin/auditctl hostname=rhel.ipa.localdomain addr=? terminal=pts/0 res=success'
Настройки демона auditd представлены в файле /
. Конфиг по умолчанию рабочий и не требует изменений, оставляем его как есть.
Разберемся теперь, как управлять фильтрами kauditd. Все настройки фильтров группируются в файлы правил. Формат правил аналогичен синтаксису консольной программы auditctl. Демон auditd загружает эти правила последовательно при старте системы либо вручную по команде пользователя.
Важный момент: чтобы наши правила применялись после перезагрузки, необходимо записать их в файл, в каталог /
.
Примеры правил ты можешь найти в каталоге /
. Правила аудита бывают следующих типов:
auditctl(8)
.Правила файловой системы необходимы для наблюдения за файлом или каталогом, доступ к которым мы хотим контролировать. Формат правила следующий:
-wpath-to-file -ppermissions -kkeyname
Ключ -w
указывает на то, что это правило файловой системы. Далее следует путь к файлу или каталогу.
Ключ -p
может содержать любые комбинации прав доступа r
(чтение), w
(запись), x
(выполнение) и a
(изменение атрибута).
Ключ -k
задает имя правила, по которому впоследствии можно фильтровать логи.
Правила системных вызовов используются для мониторинга системных вызовов, выполняемых любым процессом или конкретным пользователем. Правило имеет следующий формат:
-aaction,list -Ssyscall -F field=value -kkeyname
Ключ -a
означает append (добавление) правила в фильтр.
Действие action
может быть always
(всегда создавать события) или never
(никогда не создавать события).
Фильтр list
содержит один из возможных вариантов: task
, exit
, user
, filesystem
или exclude
.
-S
указывает конкретный syscall (имя или номер); можно в одном правиле указывать сразу несколько syscall, каждый после своего ключа -S
.
-F
задает фильтр по полям. Рекомендуется всегда указывать разрядность, добавляя в правила фильтр -F
.
Ключ -k
— имя правила. Как и в правиле файловой системы, используется для маркировки событий для последующей фильтрации лога.
Важно отметить, что правила системных вызовов значительно влияют на производительность системы в целом. Старайся сократить их количество и объединяй правила, где это возможно.
В качестве тренировки создадим правило аудита для регистрации изменения файла /
.
|
|