Skip to main content

Настройка Syslog-ng на Unix системах

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

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

Для началасоздания необходимоколлектора провритьв установленавеб-интерфейсе нужная служба Syslog-ng, посмотрим статус службы:KUMA:

systemctl
    status
  • Перейдите syslog-ng
в раздел Ресурсы и нажмите на кнопку Подключить источник.
  • В появившемся окне мастера настройки Создание коллектора на первом шаге (Подключение источников) выберите Имя коллектора и Тенант, к которому будет принадлежать создаваемый коллектор.
  • image165.png

    • На втором шаге мастера (Транспорт) укажите параметры коннектора для взаимодействия с подключаемым источником:
      • Тип – tcp/udp. В данном примере tcp
      • URL – FQDN:порт (порт, на котором коллектор будет ожидать входящие подключения. Выбирается любой из незанятых, выше 1024). В данном примере 5152.
      • Auditd – включено

    В случаеполе отсутствияURL службыможно необходимоуказать установитьтолько следующиепорт пакеты:при инсталляции All-in-one.

     

    apt-get install syslog-ng

    image166.png

     

    • На третьем шаге мастера укажите нормализатор. В данном случае рекомендуется использовать «коробочный» нормализатор для событий auditd Linux [OOTB] Linux auditd syslog for KUMA 3.2.

    image167.png

    • Шаги мастера настройки с четвертого по шестой являются опциональными, их можно пропустить и вернуться к настройке позднее.
    • На седьмом шаге мастера задайте точки назначения. Для хранения событий добавьте точку назначения типа Хранилище. В случае если службапредполагается нетакже запущена:анализ потока событий правилами корреляции добавьте точку назначения типа Коррелятор.

    image74.png

    image75.png

    image76.png

    image77.png

    • На завершающем шаге мастера нажмите на кнопку Создать и сохранить сервис. После чего появится строка установки сервиса, которую необходимо скопировать для дальнейшей установки.

    image168.png

    • Нажмите Сохранить.
    • После выполнения вышеуказанных действий в разделе Ресурсы → Активные сервисы появится созданный сервис коллектора.

    image169.png

     

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

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

    • Выполните подключение к CLI сервера, на котором планируется развертывание коллектора KUMA.
    • Для установки сервиса коллектора в командной строке выполните команду под учетной записью root, скопированную на прошлом шаге.

    image.png

    • При необходимости добавьте используемый порт сервиса коллектора в исключения МЭ ОС и обновите параметры службы.
      • Пример для firewalld
    sudofirewall-cmd systemctl--add-port=<порт, startвыбранный syslog-ngдля sudoколлектора>/tcp|udp systemctl enable syslog-ng–permanent
    firewall-cmd –reload
      • Пример для ufw
    ufw allow <порт, выбранный для коллектора>/tcp|udp
    ufw reload
    • После успешной установки сервиса его статус в веб-консоли KUMA изменится на ВКЛ с зеленой индикацией.

    image171.png

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

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

    • На рабочей станции/сервере Linux убедитесь, что сервис syslog-ng уже установлен в ОС:
    systemctl status rsyslog.service

    image.png

    • Если сервис syslog-ng не установлен на сервере, установите его, выполнив следующие команды (пример для Astra Linux и Ubuntu):
    apt install syslog-ng
    systemctl enable syslog-ng.service
    systemctl start syslog-ng.service
    • Далее в папке /etc/syslog-ng/conf.d/ создайте файл конфигурации (например, 30-kuma-tcp.conf или 30-kuma-udp.conf) со следующим содержанием в зависимости от используемого протокола:

      • Для отправки событий по протоколу 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:

    syslog-ng -s

    • Если ошибки при проверке конфигурации отсутствуют перезапустите сервис syslog-ng, выполнив следующую команду:

    systemctl restart syslog-ng

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

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

    • Для проверкипроверки, получениячто сбор событий с устройств Linux успешно настроен перейдите в Ресурсы Активные сервисы → выберите ранее созданный коллектор для Linux и отправкинажмите сообщенияПерейти можнок воспользоватьсясобытиям.
    • командой

    image173.png

    • В открывшемся окне События убедитесь, что присутствуют события с тестовымустройств сообщением:

      Linux. 
      logger
    • "testTest"

      Это сообщение должно появиться в системном журнале, например /var/log/messages:

    image.pngimage174.png


    Дополнительная информация

    Обычно в конфиграции /etc/syslog-ng/syslog-ng.conf в s_src содержится 2 типа журналов 

    source s_src {
           system(); # системный журнал
           internal(); # внутренние сообщения журнала syslog-ng
    };

    Для задания шаблона сообщения можно использовать следующее:

    template LogglyFormat { template("<${PRI}>1 ${ISODATE} ${HOST} ${PROGRAM} ${PID} ${MSGID} [TOKEN@41058 tag=\"TAG\" ] $MSG\n");  
      template_escape(no);
    };
    destination d_loggly {
      tcp("logs-01.loggly.com" port(514) template(LogglyFormat));
    };