Шаблон фильтра Logstash для журналов аудита?

Я собираю все уровни журналов, включая журналы AuditD, с моей виртуальной машины, используя Syslog и храня их в централизованном месте, которое является сервером Syslog. Затем я помещаю все журналы своей виртуальной машины в стек ELK, используя filebeat. При нажатии на logstash. Я хочу отделить следующие детали от моих журналов AuditD

1) User Name
2) What command he executed

Я использовал следующий шаблон для разделения одного и того же, но я не могу получить имя пользователя в виде строки, так как AUID принимает целое число.

Используемый шаблон

type=%{WORD:audit_type} msg=audit\(%{NUMBER:audit_epoch}:%{NUMBER:audit_counter}\): arch=%{NOTSPACE} syscall=%{NUMBER:syscall_number} success=(?<syscall_sucess>(yes|no)) exit=%{NUMBER:syscall_exit_code} %{GREEDYDATA:syscall_arguments} items=%{NUMBER:syscall_path_records} ppid=%{NUMBER:syscall_parent_pid} pid=%{NUMBER:syscall_pid} auid=%{NUMBER:uid_audit} uid=%{NUMBER:running_uid} gid=%{NUMBER:group_id} euid=%{NUMBER:uid_effective} suid=%{NUMBER:uid_set} fsuid=%{NUMBER:uid_fs} egid=%{NUMBER:gid_effective} sgid=%{NUMBER:gid_set} fsgid=%{NUMBER:gid_fs} tty=%{NOTSPACE:tty} ses=%{NUMBER:session_id} comm=\"%{GREEDYDATA:command}\" exe=\"%{GREEDYDATA:exec_file}\" key=\"%{GREEDYDATA:audit_rule}\" SYSCALL=\"%{GREEDYDATA:syscall}\" AUID=\"%{GREEDYDATA:user}\"

Мой пример ввода

type=SYSCALL msg=audit(1582540425.222:375): arch=c000003e syscall=59 success=yes exit=0 a0=55ea2c3d1f90 a1=55ea2c2e2c20 a2=55ea2c41f570 a3=0 items=2 ppid=16081 pid=16249 auid=1578986719 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="sudo" exe="/usr/bin/sudo" key="rootact"#035ARCH=x86_64 SYSCALL=execve AUID="giri" UID="root" GID="root" EUID="root" SUID="root" FSUID="root" EGID="root" SGID="root" FSGID="root"

из приведенного выше примера я могу получить auid как 1578986719, но не как giri, который является AUID.

Пожалуйста, помогите мне получить AUID в виде строки.


person Azhagiri    schedule 02.03.2020    source источник


Ответы (2)


Надеюсь, этот шаблон поможет получить AUID в виде строки

type=%{WORD:audit_type} msg=audit\(%{NUMBER:audit_epoch}:%{NUMBER:audit_counter}\): arch=%{NOTSPACE} syscall=%{NUMBER:syscall_number} success=(?<syscall_sucess>(yes|no)) exit=%{NUMBER:syscall_exit_code} %{GREEDYDATA:syscall_arguments} items=%{NUMBER:syscall_path_records} ppid=%{NUMBER:syscall_parent_pid} pid=%{NUMBER:syscall_pid} auid=%{NUMBER:uid_audit} uid=%{NUMBER:running_uid} gid=%{NUMBER:group_id} euid=%{NUMBER:uid_effective} suid=%{NUMBER:uid_set} fsuid=%{NUMBER:uid_fs} egid=%{NUMBER:gid_effective} sgid=%{NUMBER:gid_set} fsgid=%{NUMBER:gid_fs} tty=%{NOTSPACE:tty} ses=%{NUMBER:session_id} comm=\"%{GREEDYDATA:command}\" exe=\"%{GREEDYDATA:exec_file}\" key=\"%{GREEDYDATA:audit_rule}\"%{GREEDYDATA} SYSCALL=%{GREEDYDATA:syscall} AUID=\"%{GREEDYDATA:user}\" UID
person Bloomstar    schedule 05.03.2020

Или, если вас просто интересуют имя пользователя и AUID, вы можете использовать этот шаблон:

(?=.*auid=%{NUMBER:uid_audit})(?=.*AUID=\"%{DATA:user}\")

Который не полагается на то, что формат журнала останется прежним.

person baudsp    schedule 05.03.2020