Observability
Analytical events
Notifications
You can configure users to receive notifications on various events relating to threats, rule matches, changes to the IP allow, deny, and block lists. Notifications are typically sent by email, but you can configure a webhook notification to another app, such as Slack.
You create notifications in the ThreatX user interface by navigating to
. You can add a notification or edit an existing notification.ThreatX maintenance and system status
You can view and subscribe to notifications for scheduled maintenance windows and any issues that might impact your ThreatX services at ThreatX Status.
Receiving event logs
The ThreatX Log Emitter exports event logs from the ThreatX platform to your log receiver and SIEM.You can use the logs in your investigations and to trigger events in your chosen log management solution.
Features
The Log Emitter forwards full details for all block, match, and audit events.
The logs are pushed are in JSON lines format over a TCP connection that is encrypted, and optionally authenticated, over TLS.If the Log Emitter subscription becomes suspended, the Log Emitter service queues your logs for delivery upon successful re-connection, and periodically attempts to re-establish a connection.
In case a Log Emitter subscription becomes suspended, the Log Emitter service queues your logs for delivery upon successful re-connection, and periodically (every half hour) attempts to re-establish a connection.
Once the Log Emitter re-establishes a connection for a previously suspended subscription, all queued log events are sent to the configured receiver. If the Log Emitter subscription cannot be resumed after several retries, this might indicate a configuration error or log receiver error.
Configuring a Log Emitter
To receive logs, you create an instance of the Log Emitter and then encrypt the connection between the Log Emitter and your receiver.
A certificate is needed to encrypt the connection between the ThreatX Log Emitter service and your log receiver. You must generate a self-signed or CA signed certificate for the hostname where the log receiver receives logs in one of two ways:
|
Simple configuration
$ openssl req \
-x509 \
-days 365 \
-nodes \
-newkey rsa:4096 \
-keyout logreceiver.key \
-out logreceiver.crt
Use the logreceiver.key
and logreceiver.crt
files on your log receiver.
Be sure to configure your on-premises log receiver to accept TCP connections with TLS encryption. |
Advanced configuration
You can further secure the TCP encrypted connection between the ThreatX Log Emitter and your log receiver by adding mutual server and client certificate authentication:
-
Use the Certificate Authority of your choice to create an SSL/TLS certificate and private key for the ThreatX Log Emitter.
-
Create a valid server certificate and key in PEM format to install on the on-premises log receiver. The the
CN
of the server certificate must match the public domain name of the log receiver. -
Configure your on-premises log receiver to accept TCP connections with TLS encryption and client certificate authentication.
Adding a Log Emitter
Configure the settings as described in the following table. Click Save when done.
Setting | Value | Description |
---|---|---|
Name |
Text input |
Unique name to identify the Log Emitter. |
Hostname |
Text input |
Host name of your log receiver. |
Port |
Text input |
Port number that your log receiver listens on |
Send Client SSL/TLS Credentials to Log Receiver |
Check box |
Check to upload your SSL/TLS certificate and key |
Verify Log Receiver SSL/TLS Certificate |
Check box |
When checked, the Log Emitter verifies the SSL/TLS certificate provided by the log receiver before sending log data. |
Enabled |
Check box |
Start sending logs to your log receiver. |
Description of logs
BlockEvent Log Type
The BlockEvent log type provides full details on requests that were blocked by the ThreatX sensor.
{
"message": "www.examplesite.net/example_uri",
"msg_type": "BlockEvent",
"timestamp": "2020-12-18T14:05:52Z",
"user_agent": "Mozilla/5.0 (X11; Linux x86_64;rv: 82.0)",
"dst_host": "www.examplesite.net",
"uri": "/example_uri",
"args": "oneequals1--",
"request_id": "d3f02fff5db4824d83d145fad1258959",
"random_id": null,
"tls_fingerprint": null,
"cookie": null,
"js_fingerprint": null
}
Name | Details |
---|---|
|
Complete target path of the request, including hostname and URI. |
|
Request was blocked at the individual request level or due to the entity being blocked at the Risk level. |
|
UTC timestamp of the request |
|
UserAgent presented by the entity making the request |
|
IP address presented by the entity making the request |
|
Target hostname of the request |
|
Target path of the request |
|
Arguments (if any) provided in the request in |
|
Unique identifier assigned to each request by the ThreatX platform |
|
Additional unique identifier assigned to an entity by the ThreatX platform. See the note. |
|
TLS fingerprint (if any) associated with the entity making the request |
|
Additional Unique identifier assigned to an entity by the ThreatX platform. See the note. |
MatchEvent Log Type
The MatchEvent log type provides full details on requests that matched custom or common rule definitions when examined by the sensor.
{
"message": "www.examplesite.net/example_uri",
"msg_type": "MatchEvent",
"timestamp": "2020-12-18T14: 05: 52Z",
"request_id": "d3f02fff5db4824d83d145fad1258959",
"user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:82.0)",
"matches": [
{
"id": 202202,
"description": "SqlAnalyzer: SQLi detected in form/args, sql_ids: 1",
"classification": "SqlInjection",
"state": "Exploitation",
"contrib_score": 100,
"risk": 70,
"blocking": true,
"beta": false
}
],
"ip": "222.222.222.222",
"dst_host": "www.examplesite.net",
"uri": "/",
"args": "oneequals1--",
"status_code": 0,
"ssl": false,
"risk": 70,
"request_method": "GET",
"content_type": null,
"content_length": 0,
"response_length": null,
"upstream_response_time": null,
"postblock_event": false,
"random_id": 0,
"tls_fingerprint": null,
"cookie": null,
"js_fingerprint": 0,
"created": "2020-12-18T14: 05: 52.174+00: 00"
}
Field | Details |
---|---|
|
Complete target path of the request, including hostname and URI. |
|
|
|
UTC timestamp of the request |
|
Unique identifier assigned to each request by the ThreatX platform. |
|
UserAgent header value presented by the Entity making the request. |
|
Values following this field provide specific information about why the rule that the request’s behavior matched:
|
|
IP address presented by the entity making the request. |
|
Target hostname of the request. |
|
Target path of the request. |
|
Arguments (if any) provided in the request in |
|
Status code that the request received from the upstream server. |
|
Request was transmitted over an HTTPS connection |
|
Request method type |
|
MIME content type/subtype (if any) presented in the request. |
|
Length in bytes (if any) that the request received from the upstream server. |
|
Length of time in milliseconds (if any) that it took the upstream server to respond to the request. |
|
Request was submitted after a risk-based block was applied to the entity |
|
Additional Unique identifier assigned to an entity by the ThreatX platform. See the note. |
|
TLS fingerprint (if any) associated with the entity making the request. |
|
Additional Unique identifier assigned to an entity by the ThreatX platform. See the note. |
|
Additional Unique identifier assigned to an entity by the ThreatX platform. |
|
Timestamp of the request |
Returns a null value except when logging an interrogation event. For information on interrogation, contact the ThreatX SOC. |
Troubleshooting the Log Emitter
The following procedures describe basic checks that you can perform while troubleshooting your Log Emitter configuration.
Send test logs
Send a test log to verify that the server and client certificates are correctly generated and installed by running the following openssl
command.
If you do not see DONE at the end, there is an issue with network connectivity or with the server or client certificates. |
$ echo '{"message":"test1"}' | openssl s_client \
-servername <logreceiver.yourdomain.com> \
-connect <logreceiver.yourdomain.com:12345>
$ echo '{"message":"test1"}' | openssl s_client \
-servername <logreceiver.yourdomain.com> \
-connect <logreceiver.yourdomain.com:12345> \
-cert logemitterclient.crt \
-key logemitterclient.key
Your log receiver must be able to receive TCP data at the hostname provided to the Log Emitter. This requires a publicly resolvable hostname. |
Verify incoming TCP data
Use tcpdump
to verify that the log receiver is receiving TCP traffic on the correct port.
$ `tcpdump` port 12345
Even if you see traffic via tcpdump , you still need to ensure that any host-based firewall, such as iptables , is configured to allow the incoming traffic.
|
Dump incoming logs to a file (Logstash)
In Logstash, you can create a file output so you can quickly see if it is receiving the logs from the Log Emitter. Add the following fragment to your Logstash configuration file and restart Logstash.
output { file { path => "/tmp/threatx-raw.log" } }
Handshake failed error
If you use a self-signed certificate and you receive this error message:
the handshake failed: error 1416F086: SSL/TLS Routines:
tls_process_server_certificate:certificate verify
failed:../ssl/statem/statem...cint.c:1915:: self signed certificate
The Log Emitter Send Client SSL/TLS Credentials to Log Receiver option might be enabled. When this option is enabled, the Log Emitter uses the provided SSL/TLS credentials to authenticate itself to the log receiver, which will of course fail when using a self-signed certificate.
Resolve the issue by deselecting the Send Client SSL/TLS Credentials to Log Receiver. Then, click Restart Log Emitter.