Linux Audit Daemon отлично подходит для мониторинга различных событий системы, в том числе:
доступа к файлам;
изменения прав на файлы;
выявления несанкционированных корректировок;
контроля системных вызовов и функций;
выявления аномалий, сбоев;
контроля набора команд.
Установка и настройка
Воспользуйтесь пакетным менеджером, например для Debian/Ubuntu:
apt-get install auditd audispd-plugins
На серверах CentOS демон auditd как правило предустановлен (пакеты audit and audit-libs).
Настройка реализуется двумя файлами: auditd.conf – для демона, audit.rules – для правил, управляемых auditctl.
Внимание: auditctl - клиентский инструмент для конфигурации auditd.
Файл auditd.conf предназначен для конфигурации демона аудита Linux (auditd) с упором на то, как и где он будет регистрировать текущие действия. Он определяет варианты работы с дисками, журналом повторов и количеством хранимых логов. Стандартная конфигурация, как правило, оптимальна для большинства систем.
Для настройки конкретных типов событий для проверки в структуре аудита применяется файл правил с именем audit.rules.
Действующие правила просматриваются с помощью опции -l:
auditctl -l
Сразу после установки этот набор правил будет пуст.
Удалить текущие правила позволяет опция -D:
auditctl -D
Для проведения мониторинга файлов следует выявить его полное имя и разрешения для поиска:
auditctl -a exit,always -F path=<имя_файла> -F perm=<разрешения>
Например:
auditctl -a exit,always -F path=/etc/passwd -F perm=wa
Опция-F настраивает фильтры. После определения переменной path можно задать каталог или файл для отслеживания. Переменная path предназначена для определения вида доступа, вызывающего событие. Есть 4 вида доступа, и они похожи на разрешения файлов, но учтите, что имеет место серьезная разница:
r = читать
w = писать
x = выполнить
a = изменить атрибут
Опция -a указывает список и действие. Допустимые списки: task, exit, user, exclude. Допустимые действия: never, always.
Вы можете быстро контролировать поиск связанного события или доступ к файлу инструментом ausearch:
ausearch -f <имя_файла>
Например:
ausearch -f /etc/passwd
Вот пример вывода с подробным указанием: кто, когда и какими командами использовал файл:
----
time->Tue Jul 17 12:12:18 2019 type=PROCTITLE msg=audit(1531840928.084:4647): proctitle=7669002F6574632F706173737764
type=PATH msg=audit(1531840928.084:4647): item=3 name="/etc/passwd~" inode=8470805 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:passwd_file_t:s0 obj
type=CREATE type=PATH msg=audit(1531840928.084:4647): item=2 name="/etc/passwd" inode=8470805 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:passwd_file_t:s0 obj
type=DELETE type=PATH msg=audit(1531840928.084:4647): item=1 name="/etc/" inode=8388737 dev=fd:00 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:etc_t:s0 obj
type=PARENT type=PATH msg=audit(1531840928.084:4647): item=0 name="/etc/" inode=8388737 dev=fd:00 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:etc_t:s0 obj
type=PARENT type=CWD msg=audit(1531840928.084:4647): cwd="/root"
type=SYSCALL msg=audit(1531840928.084:4647): arch=c000003e syscall=82 success=yes exit=0 a0=f9d720 a1=facda0 a2=fffffffffffffe90 a3=7ffd396260e0 items=4 ppid=9580 pid=9620 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=33 comm="vi" exe="/usr/bin/vi" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null)
----
name - имя объекта
cwd - актуальный рабочий путь, по которому осуществлялся доступ к файлу
syscall - связанный системный вызов
auid - идентификатор пользователя аудита
exe - двоичный файл, выполняющий действие над файлом
При этом auid определяет исходного пользователя, который вошел в систему. В других полях могут быть указаны другие пользователи – зависимо от того, какой конкретно пользователь был задействован,
Регистрация системных вызовов реализуется с помощью числового значения. Так для на разных архитектурах актуален разный набор системных вызовов, в первуб очередь следует определить ее:
uname -m
С помощью команды ausyscall можно выявить, что представляет собой числовой вызов:
ausyscall <архитектура> <номер>
Так, вызов 82 на архитектуре x86_64:
ausyscall x86_64 82
Аудит пользователей
Вы можете применять Auditd для контроля системных вызовов, в том числе доступа к файлам. Узнать, к каким файлам обратился конкретный пользователь, можно при условии, что вы знаете его идентификатор.
auditctl -a exit,always -F arch=<архитектура> -S open -F auid=<идентификатор>
Например:
auditctl -a exit,always -F arch=x86_64 -S open -F auid=80
-S open - обращение к системному вызову open
-F auid=80 - идентификатор пользователя
Эти данные незаменимы при выявлении вторжений, а также при проведении расследований киберинцедентов.
Аудит журнальных файлов
Аудит журнальных файлов производится при помощи утилиты aureport, позволяющей создавать сводные отчеты о событиях, записанных в файлах журнала Audit. Все файлы audit.log по умолчанию расположены в каталоге /var/log/audit/ и запрашиваются для создания отчета. Но вы можете указать другой файл для запуска отчета – используйте опцию -if:
aureport <опции> -if <имя_файла>
Для создания отчета для зарегистрированных событий за конкретный период времени подойдет эта команда:
aureport --start <месяц>/<день>/<год> <часы>:<минуты>:<секунды> --end <месяц>/<день>/<год> <часы>:<минуты>:<секунды>
Например:
aureport --start 07/15/2018 00:00:00 --end 07/10/2018 00:00:00
Для создания отчета обо всех событиях контролируемых файлов используется такая команда:
aureport -x
Для генерации сводки событий следует применять ключ --summary:
aureport -x --summary
Для создания сводного отчета о неудачных событиях для всех пользователей существует такая команда:
aureport -u --failed --summary -i
Создание сводного отчета обо всех неудачных попытках входа в систему для каждого пользователя осуществляется этой командой:
aureport --login --summary -i
techsupport@cloudlite.ru - служба техподдержки
sales@cloudlite.ru - вопросы по услугам, оплате, документам и партнерству
partner@cloudlite.ru - партнерская программа