Skip to content

Splunk Enterprise via Logstash

Example overview

Webhooks can be used as system log sources. The number of log sources depends on the system complexity: the more components in the system, the greater number of log sources and logs. The most common logging scheme in complex systems consists of the following components:

  • Log collector: accepts logs from several sources and forwards logs to the SIEM system

  • SIEM system: used to analyze logs and monitor the system status

In the provided example, events are sent via webhooks to the Logstash log collector and forwarded to the Splunk SIEM system.

Webhook flow

Used resources

Splunk Enterprise configuration

Logstash logs are sent to Splunk HTTP Event Controller with the name Wallarm Logstash logs and other default settings:

HTTP Event Collector Configuration

To access the HTTP Event Controller, generated token 93eaeba4-97a9-46c7-abf3-4e0c545fa5cb will be used.

More detailed description of Splunk HTTP Event Controller setup is available in the official Splunk documentation.

Logstash configuration

Logstash is configured in the logstash-sample.conf file:

  • Incoming webhook processing is configured in the input section:

    • All HTTP and HTTPS traffic is sent to 5044 Logstash port
    • SSL certificate for HTTPS connection is located in the file /etc/pki/ca.pem
  • Forwarding logs to Splunk and log output are configured in the output section:

    • Logs are forwarded from Logstash to Splunk in the JSON format
    • All event logs are forwarded from Logstash to Splunk API endpoint https://109.111.35.11:8088/services/collector/raw via POST requests. To authorize requests, the HTTPS Event Collector token is used
    • Logstash logs are additionally printed on the command line (15 code line). The setting is used to verify that events are logged via Logstash
input {
  http { # input plugin for HTTP and HTTPS traffic
    port => 5044 # port for incoming requests
    ssl => true # HTTPS traffic processing
    ssl_certificate => "/etc/pki/ca.pem" # certificate for HTTPS connection
  }
}
output {
  http { # output plugin to forward logs from Logstash via HTTP/HTTPS protocol
    format => "json" # format of forwarded logs
    http_method => "post" # HTTP method used to forward logs
    url => "https://109.111.35.11:8088/services/collector/raw" # ednpoint to forward logs to
    headers => ["Authorization", "Splunk 93eaeba4-97a9-46c7-abf3-4e0c545fa5cb"] # HTTP headers to authorize requests
  }
  stdout {} # output plugin to print Logstash logs on the command line
}

More detailed description of configuration files is available in the official Logstash documentation.

Testing Logstash configuration

To check that Logstash logs are created and forwarded to Splunk, the POST request can be sent to Logstash.

Request example:

curl -X POST 'https://logstash.example.domain.com' -H "Content-Type: application/json" -H "Authorization: Splunk 93eaeba4-97a9-46c7-abf3-4e0c545fa5cb" -d '{"key1":"value1", "key2":"value2"}'

Logstash logs:

Logstash logs

Splunk event:

Splunk events

Configuration of webhook integration

  • Webhooks are sent to https://logstash.example.domain.com

  • Webhooks are sent via POST requests POST

  • Additional authentication parameter X-Auth-Token is passed in the request

  • Webhooks send to Webhook URL all available events: hits, system events, vulnerabilities, scope changes

Webhook integration with Logstash

Example testing

To test the configuration, a new user is added in Wallarm Console:

Adding user

Logstash will log the event as follows:

Log about new user in Splunk from Logstash

The following entry will be displayed in Splunk events:

New user card in Splunk from Logstash