SIEM connector (syslog intermediary)

How to configure a syslog intermediary server to poll the RUX API and then send data via syslog to a downstream collector.

Introduction

As per the article summary, when using the Respond UX (RUX) to access the Vectra AI Platform, syslog is not natively supported and event retrieval is supported via API. If syslog output of Vectra events is required, the SIEM Connector installed in the customer environment can provide syslog output. It provides organizations with a turnkey solution to connect any log management solution or SIEM that supports syslog to the Vectra AI Platform (RUX).

This connector allows:

  • Pulling data from the Vectra Respond UX API at regular intervals.

  • Storing and sending events to any syslog-aware solution.

  • Support of TCP, UDP or TLS for syslog transport.

The events that are being pulled by the SIEM Connector are:

  • Entity scoring events

  • Detections events

  • Audit events

All events are in JSON format. Only syslog headers are being added to the payload before being sent out.

Native SIEM/SOAR Integrations

It is highly recommended to use a native integration that works with the RUX API when possible. Only use the SIEM connector when a API-based integration is not possible. Several integrations using the API have already been published such as:

Solution Overview

Pre-requisites

Below are the prerequisites for setting up the Vectra SIEM connector.

  • Users must have a Linux based server to provide as a host for the Docker container.

  • Users must have access to a Vectra Respond UX tenant with client_id and client_secret for API authentication using the role Auditor.

  • Users must configure a syslog destination server to receive data over UDP, TCP or TLS.

  • Docker (version 24.0.5 minimum)

  • Docker compose (version 2.20.2 minimum)

Minimum System Requirements

To run the connector, the following are the minimum requirements where you will run the connector:

  • 4 GB of RAM

  • 20 GB of free storage

Compatibility Matrix

Compatibility Point
Version Supported

Vectra AI Platform (SaaS) API

v3.3 and higher

Operating System

Windows, Linux (Ubuntu)

Download and Initial Setup

The connector is available in the "vectranetworks" GitHub: Click herearrow-up-right Clone the repo to get started:

Configuration

Vectra API Configuration

The information relative to the API are being passed to the container through the docker-compose filearrow-up-right. Below is the relevant part for this configuration:

Optional Configuration - No Triage

The default image retrieves all detection details including those that have been triaged. To prevent triaged detections from being ingested, modify line 19 of docker-compose.yml as follows and save before launching.

Target Configuration

Then, provide destination server details and cron schedules for each APIs in the config.json file:

Description of each field:

Field

Description

Possible Values

Server Details

name

Destination server name

alphabets, number, _ , -(Minimum 1 character)

server_protocol

Protocol supported by destination server

TCP, UDP, TLS, tcp, udp, tls

server_host

Destination server host or IP address

Valid IP or hostname

server_port

Destination server port which is able to receive data on configured protocol

Min: 1Max: 65535

Scheduler Details

audit, detections, entity_scoring

API will fetch events on provided respective cron intervals

Valid cron expression

retry_count

Number of times the connector will retry before exiting in case the server is not reachable (If a negative value is given, the connector will continue retrying until server is reachable). It is not recommended to use a negative value.

Positive or negative integer

The recommended configuration for cron is to pull every minute and set a retry_count to 2:

If desired, some guidance around setting cron expressions is available here: https://crontab.guru/arrow-up-right

In case of TLS servers, provide a TLS configured server certificate.pem file in the cert folder.

circle-info

Please Note:

Certificate file name should be the same as the server name provided in config.json.

Connector Management

Start the Connector

The docker-compose configuration defines the two containers that are required for this solution:

  • rabbitmq RabbitMQ as a queue mechanism which handles tasks and data preservation.

  • vectra-saas Contains a Vectra Syslog Connector (python application) which will fetch data from Vectra API and push data to the configured syslog server.

Both images are being pulled from Docker Hub. There is no need to build the image for vectra-saas locally. To start the connector, run:

Stop the Connector

In case you need to stop the connector, run:

This would be required for example if the config file is modified.

Terminate the Connector

In case you need to terminate the connector (this removes containers):

Restart Policy

In case of any failure or restart of the server, the containers would be automatically restarted. This is controlled by docker-compose with the restart policy.arrow-up-right

Output's log format

It follows RFC 5234arrow-up-right specifications. The Syslog message that is sent out has the following format:

Description:

  • PRI: Facility and Severity. It is set to <14> (Facility=user-level and Severity=info)

  • TIMESTAMP: Formalized timestamp

  • HOSTNAME: The HOSTNAME is static and set to VECTRA-SYSLOG-CONNECTOR.

  • MSG: JSON payload pulled from Vectra's AI Platform API

Example of a detection event:

Logs and Common Error Messages

When using docker compose, it automatically maps a volume to access logs from the host (in same directory). They will be located in the logs folder and a new file will be created every day. This contains all the application logs and will be required to troubleshoot any issues that occurr. Some common errors are described below:

Connection Refused Error

Summary: When syslog server is not reachable then connector will give the error of connector refused.

Vectra API Down Error Message

Summary: If the credentials are incorrect or the vectra APIs are offline, the connector will display the Vectra API server is down error.

Validation Errors

Case 1: If the provided IP of the syslog server is invalid then it will give the IP validation error. Case 2: If provided cron expressions are invalid then it will give the cron expression validation error.

Too Many Requests Error

Summary: The connection will display the Too Many Requests warning if the Vectra API is too busy to authenticate. After 30 seconds, the connector will retry three times in the Too many Requests scenario.

No Such File or Directory

Summary: The connector will fail with the No such file or directory error if the server name and certificate name are different in TLS protocol.

Alternate Setup

Depending on your preferences and architecture, you could setup this connector without using docker compose. Vectra provides the source code to allow anyone to fork it and customize it the way they need. In addition to that, we provide the Dockerfile in the vectra-connector folder to either:

  • Create the image locally without relying on Docker Hub

  • Customize the image for your need.

Resources

Last updated

Was this helpful?