Сбор событий auditd с помощью Syslog-ng

Информация, приведенная на данной странице, является разработкой команды pre-sales и/или community KUMA и НЕ является официальной рекомендацией вендора.

Создание коллектора KUMA

Для создания коллектора в веб-интерфейсе KUMA:

image.png

В поле URL можно указать только порт при инсталляции All-in-one.

Начиная с версии 3.2, в KUMA появился переключатель Auditd, который позволяет группировать полученные от коннектора строки событий auditd в одно событие auditd.

image166.png

image167.png

image74.png

image75.png

image76.png

image77.png

image.png

image.png


Установка коллектора KUMA

Чтобы установить коллектор KUMA:

image.png

firewall-cmd --add-port=<порт, выбранный для коллектора>/tcp|udp –permanent
firewall-cmd –reload
ufw allow <порт, выбранный для коллектора>/tcp|udp
ufw reload

image.png


Настройка источника событий

Для передачи событий c рабочей станции/сервера в коллектор KUMA будет использоваться сервис syslog-ng.

При разработке статьи использовалась версия 3.19 syslog-ng.

systemctl status syslog-ng.service

image.png

apt install syslog-ng
systemctl enable syslog-ng.service
systemctl start syslog-ng.service
Для отправки событий по протоколу TCP
# syslog-ng audit forwarding to KUMA (TCP)
# Version: 1
# Date: 26.01.2026
# Purpose: Forward auditd logs without parsing, loss-minimized

source s_audit {
    file("/var/log/audit/audit.log"
	    flags(no-parse) # Читаем audit.log без парсинга (flags(no-parse)), чтобы "не ломать" формат auditd.
		follow-freq(1)
		tags("tag_audit_log")
		persist-name("kuma_audit_source")); # Необходим для сохранения состояния источника между рестартами syslog-ng.
};

template t_audit_format {
    template("<134>${ISODATE} ${HOST} auditd ${MSG}\n"); # <PRI> задан вручную, т.к. при flags(no-parse) ${PRI} не извлекается из события. Тег auditd задан руками, иначе будет дефолтное 0d.
    template_escape(no);
};

destination d_kuma {
    tcp("<IP-адрес/FQDN коллектора KUMA>" port(<Порт коллектора KUMA>)
	    template(t_audit_format)
	    disk-buffer(
		    mem-buf-size(10000) # Размер буфера в RAM, в количестве сообщений. Пока есть место — ничего не пишется на диск. Можно увеличить при большом потоке событий.
			disk-buf-size(1G) # Максимальный размер буфера на диске. Когда RAM-буфер будет заполнен, запись продолжится на диск. Можно увеличить при большом потоке событий.
			reliable(yes) # Для гарантированной доставки. События не теряются при рестаре syslog-ng, проблем с сетью, перезапуске коллектора.
		)
	);
};

filter f_audit_kuma { 
    tags("tag_audit_log");
};

log {
    source(s_audit);
    filter(f_audit_kuma);
    destination(d_kuma);
};
Для отправки событий по протоколу UDP
# syslog-ng audit forwarding to KUMA (UDP)
# Version: 1
# Date: 26.01.2026
# Purpose: Forward auditd logs without parsing, loss-minimized

source s_audit {
    file("/var/log/audit/audit.log" 
	    flags(no-parse) # Читаем audit.log без парсинга (flags(no-parse)), чтобы "не ломать" формат auditd.
		follow-freq(1)
		tags("tag_audit_log")
		persist-name("kuma_audit_source")); # Необходим для сохранения состояния источника между рестартами syslog-ng.
};

template t_audit_format {
    template("<134>${ISODATE} ${HOST} auditd ${MSG}\n"); # <PRI> задан вручную, т.к. при flags(no-parse) ${PRI} не извлекается из события. Тег auditd задан руками, иначе будет дефолтное 0d.
    template_escape(no);
};

destination d_kuma {
    udp("<IP-адрес/FQDN коллектора KUMA>" port(<Порт коллектора KUMA>)
	    template(t_audit_format)
	    disk-buffer(
		    mem-buf-length(10000) # Размер буфера в RAM, в количестве сообщений. Пока есть место — ничего не пишется на диск. Можно увеличить при большом потоке событий.
			disk-buf-size(1G) # Максимальный размер буфера на диске. Когда RAM-буфер будет заполнен, запись продолжится на диск. Можно увеличить при большом потоке событий.
		)
	);
};

filter f_audit_kuma { 
    tags("tag_audit_log");
};

log {
    source(s_audit);
    filter(f_audit_kuma);
    destination(d_kuma);
};
syslog-ng -s
systemctl restart syslog-ng

Рабочая станция/сервер Linux настроены. События передаются в коллектор KUMA.


Проверка поступления событий Linux в KUMA

image.png

image174.png


Приложение А. Отправка событий с использованием TLS (без валидации сертификата коллектора)

Предварительно рекомендуется протестировать отправку событий auditd без использования шифрования - см. раздел Настройка источника событий.

Для передачи событий auditd c рабочей станции/сервера в коллектор KUMA c использованием TLS без валидации сертификата:

image.png

image.png

# syslog-ng audit forwarding to KUMA (TCP with TLS without certificate validation)
# Version: 1
# Date: 26.01.2026
# Purpose: Forward auditd logs without parsing, loss-minimized

source s_audit {
    file("/var/log/audit/audit.log"
	    flags(no-parse) # Читаем audit.log без парсинга (flags(no-parse)), чтобы "не ломать" формат auditd.
		follow-freq(1)
		tags("tag_audit_log")
		persist-name("kuma_audit_source")); # Необходим для сохранения состояния источника между рестартами syslog-ng.
};

template t_audit_format {
    template("<134>${ISODATE} ${HOST} auditd ${MSG}\n"); # <PRI> задан вручную, т.к. при flags(no-parse) ${PRI} не извлекается из события. Тег auditd задан руками, иначе будет дефолтное 0d.
    template_escape(no);
};

destination d_kuma {
    tcp("<IP-адрес/FQDN коллектора KUMA>" port(<Порт коллектора KUMA>)
	    template(t_audit_format)
	    disk-buffer(
		    mem-buf-size(10000) # Размер буфера в RAM, в количестве сообщений. Пока есть место — ничего не пишется на диск. Можно увеличить при большом потоке событий.
			disk-buf-size(1G) # Максимальный размер буфера на диске. Когда RAM-буфер будет заполнен, запись продолжится на диск. Можно увеличить при большом потоке событий.
			reliable(yes) # Для гарантированной доставки. События не теряются при рестаре syslog-ng, проблем с сетью, перезапуске коллектора.
		)
		tls(peer-verify(required-untrusted))
	    );
};

filter f_audit_kuma { 
    tags("tag_audit_log");
};

log {
    source(s_audit);
    filter(f_audit_kuma);
    destination(d_kuma);
};
syslog-ng -s
systemctl restart syslog-ng

Рабочая станция/сервер Linux настроены. События передаются в коллектор KUMA с использованием TLS.


Приложение Б. Отправка событий с использованием TLS (c валидацией сертификата коллектора)

Предварительно рекомендуется протестировать отправку событий auditd без использования шифрования - см. раздел Настройка источника событий.

Перед выполнением шагов по настройке создайте PFX-файл, содержащий закрытый ключ и сертификат, для использования в коллекторе auditd. Важно, чтобы в поле CN или subject_alt_name сертификата были указаны FQDN сервера коллектора или его IP-адрес.

Для передачи событий auditd c рабочей станции/сервера в коллектор KUMA c использованием TLS с валидацией сертификата:

image.png

image.png

openssl x509 -noout -hash -in <Имя CA-сертификата>.pem
ln -s <Имя CA-сертификата>.pem <Хэш>.0

image.png

# syslog-ng audit forwarding to KUMA (TCP with TLS and certificate validation)
# Version: 1
# Date: 10.02.2026
# Purpose: Forward auditd logs without parsing, loss-minimized

source s_audit {
    file("/var/log/audit/audit.log"
            flags(no-parse) # Читаем audit.log без парсинга (flags(no-parse)), чтобы "не ломать" формат auditd.
                follow-freq(1)
                tags("tag_audit_log")
                persist-name("kuma_audit_source")); # Необходим для сохранения состояния источника между рестартами syslog-ng.
};

template t_audit_format {
    template("<134>${ISODATE} ${HOST} auditd ${MSG}\n"); # <PRI> задан вручную, т.к. при flags(no-parse) ${PRI} не извлекается из события. Тег auditd задан руками, иначе будет дефолтное 0d.
    template_escape(no);
};

destination d_kuma {
    network("<IP-адрес/FQDN коллектора KUMA>" port(<Порт коллектора KUMA>)
            template(t_audit_format)
            disk-buffer(
                    mem-buf-size(10000) # Размер буфера в RAM, в количестве сообщений. Пока есть место — ничего не пишется на диск. Можно увеличить при большом потоке событий.
                        disk-buf-size(1G) # Максимальный размер буфера на диске. Когда RAM-буфер будет заполнен, запись продолжится на диск. Можно увеличить при большом потоке событий.
                        reliable(yes) # Для гарантированной доставки. События не теряются при рестаре syslog-ng, проблем с сетью, перезапуске коллектора.
            )
                transport("tls")
                tls(
                    ca_dir("/etc/syslog-ng/cert/")
                    peer-verify(required-trusted)
                )
    );
};

filter f_audit_kuma {
    tags("tag_audit_log");
};

log {
    source(s_audit);
    filter(f_audit_kuma);
    destination(d_kuma);
};
syslog-ng -s
systemctl restart syslog-ng

Рабочая станция/сервер Linux настроены. События передаются в коллектор KUMA с использованием TLS и валидацией сертификата.


Справочные материалы

https://syslog-ng.github.io/admin-guide/README

https://syslog-ng.github.io/admin-guide/100_TLS-encrypted_message_transfer/001_Encrypting_log_messages_with_TLS/000_Configuring_TLS_client


Revision #16
Created 2023-10-04 07:15:23 UTC by Boris Rzr
Updated 2026-02-10 09:47:08 UTC by Dmitry Borisov