mirror of
https://github.com/Security-Onion-Solutions/securityonion.git
synced 2026-05-11 05:40:32 +02:00
Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into 2.4/dev
This commit is contained in:
@@ -22,6 +22,7 @@ body:
|
|||||||
- 2.4.90
|
- 2.4.90
|
||||||
- 2.4.100
|
- 2.4.100
|
||||||
- 2.4.110
|
- 2.4.110
|
||||||
|
- 2.4.120
|
||||||
- Other (please provide detail below)
|
- Other (please provide detail below)
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|||||||
+11
-11
@@ -1,17 +1,17 @@
|
|||||||
### 2.4.100-20240903 ISO image released on 2024/09/03
|
### 2.4.110-20241010 ISO image released on 2024/10/10
|
||||||
|
|
||||||
|
|
||||||
### Download and Verify
|
### Download and Verify
|
||||||
|
|
||||||
2.4.100-20240903 ISO image:
|
2.4.110-20241010 ISO image:
|
||||||
https://download.securityonion.net/file/securityonion/securityonion-2.4.100-20240903.iso
|
https://download.securityonion.net/file/securityonion/securityonion-2.4.110-20241010.iso
|
||||||
|
|
||||||
MD5: 856BBB4F0764C0A479D8949725FC096B
|
MD5: A8003DEBC4510D538F06238D9DBB86C0
|
||||||
SHA1: B3FCFB8F1031EB8AA833A90C6C5BB61328A73842
|
SHA1: 441DE90A192C8FE8BEBAB9ACE1A3CC18F71A2B1F
|
||||||
SHA256: 0103EB9D78970396BB47CBD18DA1FFE64524F5C1C559487A1B2D293E1882B265
|
SHA256: B087A0D12FC2CA3CCD02BD52E52421F4F60DC09BF826337A057E05A04D114CCE
|
||||||
|
|
||||||
Signature for ISO image:
|
Signature for ISO image:
|
||||||
https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.100-20240903.iso.sig
|
https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.110-20241010.iso.sig
|
||||||
|
|
||||||
Signing key:
|
Signing key:
|
||||||
https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/2.4/main/KEYS
|
https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/2.4/main/KEYS
|
||||||
@@ -25,22 +25,22 @@ wget https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/2.
|
|||||||
|
|
||||||
Download the signature file for the ISO:
|
Download the signature file for the ISO:
|
||||||
```
|
```
|
||||||
wget https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.100-20240903.iso.sig
|
wget https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.110-20241010.iso.sig
|
||||||
```
|
```
|
||||||
|
|
||||||
Download the ISO image:
|
Download the ISO image:
|
||||||
```
|
```
|
||||||
wget https://download.securityonion.net/file/securityonion/securityonion-2.4.100-20240903.iso
|
wget https://download.securityonion.net/file/securityonion/securityonion-2.4.110-20241010.iso
|
||||||
```
|
```
|
||||||
|
|
||||||
Verify the downloaded ISO image using the signature file:
|
Verify the downloaded ISO image using the signature file:
|
||||||
```
|
```
|
||||||
gpg --verify securityonion-2.4.100-20240903.iso.sig securityonion-2.4.100-20240903.iso
|
gpg --verify securityonion-2.4.110-20241010.iso.sig securityonion-2.4.110-20241010.iso
|
||||||
```
|
```
|
||||||
|
|
||||||
The output should show "Good signature" and the Primary key fingerprint should match what's shown below:
|
The output should show "Good signature" and the Primary key fingerprint should match what's shown below:
|
||||||
```
|
```
|
||||||
gpg: Signature made Sat 31 Aug 2024 05:05:05 PM EDT using RSA key ID FE507013
|
gpg: Signature made Thu 10 Oct 2024 07:05:30 AM EDT using RSA key ID FE507013
|
||||||
gpg: Good signature from "Security Onion Solutions, LLC <info@securityonionsolutions.com>"
|
gpg: Good signature from "Security Onion Solutions, LLC <info@securityonionsolutions.com>"
|
||||||
gpg: WARNING: This key is not certified with a trusted signature!
|
gpg: WARNING: This key is not certified with a trusted signature!
|
||||||
gpg: There is no indication that the signature belongs to the owner.
|
gpg: There is no indication that the signature belongs to the owner.
|
||||||
|
|||||||
+14
-4
@@ -16,6 +16,8 @@ base:
|
|||||||
- sensoroni.adv_sensoroni
|
- sensoroni.adv_sensoroni
|
||||||
- telegraf.soc_telegraf
|
- telegraf.soc_telegraf
|
||||||
- telegraf.adv_telegraf
|
- telegraf.adv_telegraf
|
||||||
|
- versionlock.soc_versionlock
|
||||||
|
- versionlock.adv_versionlock
|
||||||
|
|
||||||
'* and not *_desktop':
|
'* and not *_desktop':
|
||||||
- firewall.soc_firewall
|
- firewall.soc_firewall
|
||||||
@@ -47,6 +49,8 @@ base:
|
|||||||
- kibana.adv_kibana
|
- kibana.adv_kibana
|
||||||
- kratos.soc_kratos
|
- kratos.soc_kratos
|
||||||
- kratos.adv_kratos
|
- kratos.adv_kratos
|
||||||
|
- hydra.soc_hydra
|
||||||
|
- hydra.adv_hydra
|
||||||
- redis.nodes
|
- redis.nodes
|
||||||
- redis.soc_redis
|
- redis.soc_redis
|
||||||
- redis.adv_redis
|
- redis.adv_redis
|
||||||
@@ -96,6 +100,7 @@ base:
|
|||||||
- kibana.secrets
|
- kibana.secrets
|
||||||
{% endif %}
|
{% endif %}
|
||||||
- kratos.soc_kratos
|
- kratos.soc_kratos
|
||||||
|
- kratos.adv_kratos
|
||||||
- elasticsearch.soc_elasticsearch
|
- elasticsearch.soc_elasticsearch
|
||||||
- elasticsearch.adv_elasticsearch
|
- elasticsearch.adv_elasticsearch
|
||||||
- elasticfleet.soc_elasticfleet
|
- elasticfleet.soc_elasticfleet
|
||||||
@@ -113,8 +118,8 @@ base:
|
|||||||
- kibana.adv_kibana
|
- kibana.adv_kibana
|
||||||
- strelka.soc_strelka
|
- strelka.soc_strelka
|
||||||
- strelka.adv_strelka
|
- strelka.adv_strelka
|
||||||
- kratos.soc_kratos
|
- hydra.soc_hydra
|
||||||
- kratos.adv_kratos
|
- hydra.adv_hydra
|
||||||
- redis.soc_redis
|
- redis.soc_redis
|
||||||
- redis.adv_redis
|
- redis.adv_redis
|
||||||
- influxdb.soc_influxdb
|
- influxdb.soc_influxdb
|
||||||
@@ -149,6 +154,8 @@ base:
|
|||||||
- idstools.adv_idstools
|
- idstools.adv_idstools
|
||||||
- kratos.soc_kratos
|
- kratos.soc_kratos
|
||||||
- kratos.adv_kratos
|
- kratos.adv_kratos
|
||||||
|
- hydra.soc_hydra
|
||||||
|
- hydra.adv_hydra
|
||||||
- redis.nodes
|
- redis.nodes
|
||||||
- redis.soc_redis
|
- redis.soc_redis
|
||||||
- redis.adv_redis
|
- redis.adv_redis
|
||||||
@@ -262,6 +269,7 @@ base:
|
|||||||
- kibana.secrets
|
- kibana.secrets
|
||||||
{% endif %}
|
{% endif %}
|
||||||
- kratos.soc_kratos
|
- kratos.soc_kratos
|
||||||
|
- kratos.adv_kratos
|
||||||
- elasticsearch.soc_elasticsearch
|
- elasticsearch.soc_elasticsearch
|
||||||
- elasticsearch.adv_elasticsearch
|
- elasticsearch.adv_elasticsearch
|
||||||
- elasticfleet.soc_elasticfleet
|
- elasticfleet.soc_elasticfleet
|
||||||
@@ -277,8 +285,8 @@ base:
|
|||||||
- kibana.adv_kibana
|
- kibana.adv_kibana
|
||||||
- backup.soc_backup
|
- backup.soc_backup
|
||||||
- backup.adv_backup
|
- backup.adv_backup
|
||||||
- kratos.soc_kratos
|
- hydra.soc_hydra
|
||||||
- kratos.adv_kratos
|
- hydra.adv_hydra
|
||||||
- redis.soc_redis
|
- redis.soc_redis
|
||||||
- redis.adv_redis
|
- redis.adv_redis
|
||||||
- influxdb.soc_influxdb
|
- influxdb.soc_influxdb
|
||||||
@@ -310,3 +318,5 @@ base:
|
|||||||
'*_desktop':
|
'*_desktop':
|
||||||
- minions.{{ grains.id }}
|
- minions.{{ grains.id }}
|
||||||
- minions.adv_{{ grains.id }}
|
- minions.adv_{{ grains.id }}
|
||||||
|
- stig.soc_stig
|
||||||
|
- soc.license
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
'influxdb',
|
'influxdb',
|
||||||
'soc',
|
'soc',
|
||||||
'kratos',
|
'kratos',
|
||||||
|
'hydra',
|
||||||
'elasticfleet',
|
'elasticfleet',
|
||||||
'elastic-fleet-package-registry',
|
'elastic-fleet-package-registry',
|
||||||
'firewall',
|
'firewall',
|
||||||
@@ -68,6 +69,7 @@
|
|||||||
'strelka.manager',
|
'strelka.manager',
|
||||||
'soc',
|
'soc',
|
||||||
'kratos',
|
'kratos',
|
||||||
|
'hydra',
|
||||||
'influxdb',
|
'influxdb',
|
||||||
'telegraf',
|
'telegraf',
|
||||||
'firewall',
|
'firewall',
|
||||||
@@ -95,6 +97,7 @@
|
|||||||
'strelka.manager',
|
'strelka.manager',
|
||||||
'soc',
|
'soc',
|
||||||
'kratos',
|
'kratos',
|
||||||
|
'hydra',
|
||||||
'elasticfleet',
|
'elasticfleet',
|
||||||
'elastic-fleet-package-registry',
|
'elastic-fleet-package-registry',
|
||||||
'firewall',
|
'firewall',
|
||||||
@@ -117,6 +120,7 @@
|
|||||||
'strelka.manager',
|
'strelka.manager',
|
||||||
'soc',
|
'soc',
|
||||||
'kratos',
|
'kratos',
|
||||||
|
'hydra',
|
||||||
'elastic-fleet-package-registry',
|
'elastic-fleet-package-registry',
|
||||||
'elasticfleet',
|
'elasticfleet',
|
||||||
'firewall',
|
'firewall',
|
||||||
@@ -151,6 +155,7 @@
|
|||||||
'influxdb',
|
'influxdb',
|
||||||
'soc',
|
'soc',
|
||||||
'kratos',
|
'kratos',
|
||||||
|
'hydra',
|
||||||
'elastic-fleet-package-registry',
|
'elastic-fleet-package-registry',
|
||||||
'elasticfleet',
|
'elasticfleet',
|
||||||
'firewall',
|
'firewall',
|
||||||
@@ -202,7 +207,8 @@
|
|||||||
'so-desktop': [
|
'so-desktop': [
|
||||||
'ssl',
|
'ssl',
|
||||||
'docker_clean',
|
'docker_clean',
|
||||||
'telegraf'
|
'telegraf',
|
||||||
|
'stig'
|
||||||
],
|
],
|
||||||
}, grain='role') %}
|
}, grain='role') %}
|
||||||
|
|
||||||
|
|||||||
@@ -4,4 +4,5 @@ backup:
|
|||||||
- /etc/pki
|
- /etc/pki
|
||||||
- /etc/salt
|
- /etc/salt
|
||||||
- /nsm/kratos
|
- /nsm/kratos
|
||||||
|
- /nsm/hydra
|
||||||
destination: "/nsm/backup"
|
destination: "/nsm/backup"
|
||||||
@@ -182,6 +182,7 @@ sostatus_log:
|
|||||||
file.managed:
|
file.managed:
|
||||||
- name: /opt/so/log/sostatus/status.log
|
- name: /opt/so/log/sostatus/status.log
|
||||||
- mode: 644
|
- mode: 644
|
||||||
|
- replace: False
|
||||||
|
|
||||||
# Install sostatus check cron. This is used to populate Grid.
|
# Install sostatus check cron. This is used to populate Grid.
|
||||||
so-status_check_cron:
|
so-status_check_cron:
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
{% else %}
|
{% else %}
|
||||||
{% set UPDATE_DIR='/tmp/sogh/securityonion' %}
|
{% set UPDATE_DIR='/tmp/sogh/securityonion' %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% set SOVERSION = salt['file.read']('/etc/soversion').strip() %}
|
||||||
|
|
||||||
remove_common_soup:
|
remove_common_soup:
|
||||||
file.absent:
|
file.absent:
|
||||||
@@ -107,6 +108,17 @@ copy_so-repo-sync_sbin:
|
|||||||
- force: True
|
- force: True
|
||||||
- preserve: True
|
- preserve: True
|
||||||
|
|
||||||
|
{# this is added in 2.4.120 to remove salt repo files pointing to saltproject.io to accomodate the move to broadcom and new bootstrap-salt script #}
|
||||||
|
{% if salt['pkg.version_cmp'](SOVERSION, '2.4.120') == -1 %}
|
||||||
|
{% set saltrepofile = '/etc/yum.repos.d/salt.repo' %}
|
||||||
|
{% if grains.os_family == 'Debian' %}
|
||||||
|
{% set saltrepofile = '/etc/apt/sources.list.d/salt.list' %}
|
||||||
|
{% endif %}
|
||||||
|
remove_saltproject_io_repo_manager:
|
||||||
|
file.absent:
|
||||||
|
- name: {{ saltrepofile }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% else %}
|
{% else %}
|
||||||
fix_23_soup_sbin:
|
fix_23_soup_sbin:
|
||||||
cmd.run:
|
cmd.run:
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ container_list() {
|
|||||||
"so-influxdb"
|
"so-influxdb"
|
||||||
"so-kibana"
|
"so-kibana"
|
||||||
"so-kratos"
|
"so-kratos"
|
||||||
|
"so-hydra"
|
||||||
"so-nginx"
|
"so-nginx"
|
||||||
"so-pcaptools"
|
"so-pcaptools"
|
||||||
"so-soc"
|
"so-soc"
|
||||||
@@ -53,6 +54,7 @@ container_list() {
|
|||||||
"so-kafka"
|
"so-kafka"
|
||||||
"so-kibana"
|
"so-kibana"
|
||||||
"so-kratos"
|
"so-kratos"
|
||||||
|
"so-hydra"
|
||||||
"so-logstash"
|
"so-logstash"
|
||||||
"so-nginx"
|
"so-nginx"
|
||||||
"so-pcaptools"
|
"so-pcaptools"
|
||||||
@@ -159,9 +161,11 @@ update_docker_containers() {
|
|||||||
fi
|
fi
|
||||||
local highest_es_version=$(compare_es_versions "$v1" "$v2")
|
local highest_es_version=$(compare_es_versions "$v1" "$v2")
|
||||||
local image=$i:$highest_es_version$IMAGE_TAG_SUFFIX
|
local image=$i:$highest_es_version$IMAGE_TAG_SUFFIX
|
||||||
|
local sig_url=https://sigs.securityonion.net/es-$highest_es_version/$image.sig
|
||||||
else
|
else
|
||||||
# this is not an es container so use the so version for the version
|
# this is not an es container so use the so version for the version
|
||||||
local image=$i:$VERSION$IMAGE_TAG_SUFFIX
|
local image=$i:$VERSION$IMAGE_TAG_SUFFIX
|
||||||
|
local sig_url=https://sigs.securityonion.net/$VERSION/$image.sig
|
||||||
fi
|
fi
|
||||||
# Pull down the trusted docker image
|
# Pull down the trusted docker image
|
||||||
run_check_net_err \
|
run_check_net_err \
|
||||||
@@ -170,7 +174,7 @@ update_docker_containers() {
|
|||||||
|
|
||||||
# Get signature
|
# Get signature
|
||||||
run_check_net_err \
|
run_check_net_err \
|
||||||
"curl --retry 5 --retry-delay 60 -A '$CURLTYPE/$CURRENTVERSION/$OS/$(uname -r)' https://sigs.securityonion.net/$VERSION/$image.sig --output $SIGNPATH/$image.sig" \
|
"curl --retry 5 --retry-delay 60 -A '$CURLTYPE/$CURRENTVERSION/$OS/$(uname -r)' $sig_url --output $SIGNPATH/$image.sig" \
|
||||||
"Could not pull signature file for $image, please ensure connectivity to https://sigs.securityonion.net " \
|
"Could not pull signature file for $image, please ensure connectivity to https://sigs.securityonion.net " \
|
||||||
noretry >> "$LOG_FILE" 2>&1
|
noretry >> "$LOG_FILE" 2>&1
|
||||||
# Dump our hash values
|
# Dump our hash values
|
||||||
|
|||||||
@@ -51,6 +51,14 @@ docker:
|
|||||||
custom_bind_mounts: []
|
custom_bind_mounts: []
|
||||||
extra_hosts: []
|
extra_hosts: []
|
||||||
extra_env: []
|
extra_env: []
|
||||||
|
'so-hydra':
|
||||||
|
final_octet: 30
|
||||||
|
port_bindings:
|
||||||
|
- 0.0.0.0:4444:4444
|
||||||
|
- 0.0.0.0:4445:4445
|
||||||
|
custom_bind_mounts: []
|
||||||
|
extra_hosts: []
|
||||||
|
extra_env: []
|
||||||
'so-logstash':
|
'so-logstash':
|
||||||
final_octet: 29
|
final_octet: 29
|
||||||
port_bindings:
|
port_bindings:
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ docker:
|
|||||||
so-influxdb: *dockerOptions
|
so-influxdb: *dockerOptions
|
||||||
so-kibana: *dockerOptions
|
so-kibana: *dockerOptions
|
||||||
so-kratos: *dockerOptions
|
so-kratos: *dockerOptions
|
||||||
|
so-hydra: *dockerOptions
|
||||||
so-logstash: *dockerOptions
|
so-logstash: *dockerOptions
|
||||||
so-nginx: *dockerOptions
|
so-nginx: *dockerOptions
|
||||||
so-nginx-fleet-node: *dockerOptions
|
so-nginx-fleet-node: *dockerOptions
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
elastalert:
|
elastalert:
|
||||||
enabled:
|
enabled:
|
||||||
description: You can enable or disable Elastalert.
|
description: Enables or disables the ElastAlert 2 process. This process is critical for ensuring alerts arrive in SOC, and for outbound notification delivery.
|
||||||
helpLink: elastalert.html
|
helpLink: elastalert.html
|
||||||
alerter_parameters:
|
alerter_parameters:
|
||||||
title: Custom Configuration Parameters
|
title: Custom Configuration Parameters
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
elastic_fleet_package_registry:
|
elastic_fleet_package_registry:
|
||||||
enabled:
|
enabled:
|
||||||
description: You can enable or disable Elastic Fleet Package Registry.
|
description: Enables or disables the Fleet package registry process. This process must remain enabled to allow Elastic Agent packages to be updated.
|
||||||
advanced: True
|
advanced: True
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
elasticagent:
|
||||||
|
enabled:
|
||||||
|
description: Enables or disables the Elastic Agent process. This process must remain enabled to allow collection of node events.
|
||||||
|
advanced: True
|
||||||
@@ -63,6 +63,14 @@ eastatedir:
|
|||||||
- group: 939
|
- group: 939
|
||||||
- makedirs: True
|
- makedirs: True
|
||||||
|
|
||||||
|
custommappingsdir:
|
||||||
|
file.directory:
|
||||||
|
- name: /nsm/custom-mappings
|
||||||
|
- user: 947
|
||||||
|
- group: 939
|
||||||
|
- makedirs: True
|
||||||
|
|
||||||
|
|
||||||
eapackageupgrade:
|
eapackageupgrade:
|
||||||
file.managed:
|
file.managed:
|
||||||
- name: /usr/sbin/so-elastic-fleet-package-upgrade
|
- name: /usr/sbin/so-elastic-fleet-package-upgrade
|
||||||
@@ -73,6 +81,56 @@ eapackageupgrade:
|
|||||||
- template: jinja
|
- template: jinja
|
||||||
|
|
||||||
{% if GLOBALS.role != "so-fleet" %}
|
{% if GLOBALS.role != "so-fleet" %}
|
||||||
|
|
||||||
|
{% if not GLOBALS.airgap %}
|
||||||
|
soresourcesrepoclone:
|
||||||
|
git.latest:
|
||||||
|
- name: https://github.com/Security-Onion-Solutions/securityonion-resources.git
|
||||||
|
- target: /nsm/securityonion-resources
|
||||||
|
- rev: 'main'
|
||||||
|
- depth: 1
|
||||||
|
- force_reset: True
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
elasticdefendconfdir:
|
||||||
|
file.directory:
|
||||||
|
- name: /opt/so/conf/elastic-fleet/defend-exclusions/rulesets
|
||||||
|
- user: 947
|
||||||
|
- group: 939
|
||||||
|
- makedirs: True
|
||||||
|
|
||||||
|
elasticdefenddisabled:
|
||||||
|
file.managed:
|
||||||
|
- name: /opt/so/conf/elastic-fleet/defend-exclusions/disabled-filters.yaml
|
||||||
|
- source: salt://elasticfleet/files/soc/elastic-defend-disabled-filters.yaml
|
||||||
|
- user: 947
|
||||||
|
- group: 939
|
||||||
|
- mode: 600
|
||||||
|
|
||||||
|
elasticdefendcustom:
|
||||||
|
file.managed:
|
||||||
|
- name: /opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters-raw
|
||||||
|
- source: salt://elasticfleet/files/soc/elastic-defend-custom-filters.yaml
|
||||||
|
- user: 947
|
||||||
|
- group: 939
|
||||||
|
- mode: 600
|
||||||
|
|
||||||
|
{% if ELASTICFLEETMERGED.config.defend_filters.enable_auto_configuration %}
|
||||||
|
{% set ap = "present" %}
|
||||||
|
{% else %}
|
||||||
|
{% set ap = "absent" %}
|
||||||
|
{% endif %}
|
||||||
|
cron-elastic-defend-filters:
|
||||||
|
cron.{{ap}}:
|
||||||
|
- name: python3 /sbin/so-elastic-defend-manage-filters.py -c /opt/so/conf/elasticsearch/curl.config -d /opt/so/conf/elastic-fleet/defend-exclusions/disabled-filters.yaml -i /nsm/securityonion-resources/event_filters/ -i /opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters/ &>> /opt/so/log/elasticfleet/elastic-defend-manage-filters.log
|
||||||
|
- identifier: elastic-defend-filters
|
||||||
|
- user: root
|
||||||
|
- minute: '0'
|
||||||
|
- hour: '3'
|
||||||
|
- daymonth: '*'
|
||||||
|
- month: '*'
|
||||||
|
- dayweek: '*'
|
||||||
|
|
||||||
eaintegrationsdir:
|
eaintegrationsdir:
|
||||||
file.directory:
|
file.directory:
|
||||||
- name: /opt/so/conf/elastic-fleet/integrations
|
- name: /opt/so/conf/elastic-fleet/integrations
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ elasticfleet:
|
|||||||
endpoints_enrollment: ''
|
endpoints_enrollment: ''
|
||||||
es_token: ''
|
es_token: ''
|
||||||
grid_enrollment: ''
|
grid_enrollment: ''
|
||||||
|
defend_filters:
|
||||||
|
enable_auto_configuration: False
|
||||||
logging:
|
logging:
|
||||||
zeek:
|
zeek:
|
||||||
excluded:
|
excluded:
|
||||||
@@ -36,6 +38,7 @@ elasticfleet:
|
|||||||
- aws
|
- aws
|
||||||
- azure
|
- azure
|
||||||
- barracuda
|
- barracuda
|
||||||
|
- barracuda_cloudgen_firewall
|
||||||
- carbonblack_edr
|
- carbonblack_edr
|
||||||
- cef
|
- cef
|
||||||
- checkpoint
|
- checkpoint
|
||||||
@@ -45,6 +48,7 @@ elasticfleet:
|
|||||||
- cisco_ios
|
- cisco_ios
|
||||||
- cisco_ise
|
- cisco_ise
|
||||||
- cisco_meraki
|
- cisco_meraki
|
||||||
|
- cisco_secure_email_gateway
|
||||||
- cisco_umbrella
|
- cisco_umbrella
|
||||||
- citrix_adc
|
- citrix_adc
|
||||||
- citrix_waf
|
- citrix_waf
|
||||||
@@ -66,6 +70,7 @@ elasticfleet:
|
|||||||
- http_endpoint
|
- http_endpoint
|
||||||
- httpjson
|
- httpjson
|
||||||
- iis
|
- iis
|
||||||
|
- imperva_cloud_waf
|
||||||
- journald
|
- journald
|
||||||
- juniper
|
- juniper
|
||||||
- juniper_srx
|
- juniper_srx
|
||||||
@@ -104,8 +109,11 @@ elasticfleet:
|
|||||||
- ti_cybersixgill
|
- ti_cybersixgill
|
||||||
- ti_misp
|
- ti_misp
|
||||||
- ti_otx
|
- ti_otx
|
||||||
|
- ti_rapid7_threat_command
|
||||||
- ti_recordedfuture
|
- ti_recordedfuture
|
||||||
- ti_threatq
|
- ti_threatq
|
||||||
|
- trendmicro
|
||||||
|
- trend_micro_vision_one
|
||||||
- udp
|
- udp
|
||||||
- vsphere
|
- vsphere
|
||||||
- windows
|
- windows
|
||||||
|
|||||||
@@ -17,10 +17,12 @@ include:
|
|||||||
- elasticfleet.sostatus
|
- elasticfleet.sostatus
|
||||||
- ssl
|
- ssl
|
||||||
|
|
||||||
|
{% if grains.role not in ['so-fleet'] %}
|
||||||
# Wait for Elasticsearch to be ready - no reason to try running Elastic Fleet server if ES is not ready
|
# Wait for Elasticsearch to be ready - no reason to try running Elastic Fleet server if ES is not ready
|
||||||
wait_for_elasticsearch_elasticfleet:
|
wait_for_elasticsearch_elasticfleet:
|
||||||
cmd.run:
|
cmd.run:
|
||||||
- name: so-elasticsearch-wait
|
- name: so-elasticsearch-wait
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
# If enabled, automatically update Fleet Logstash Outputs
|
# If enabled, automatically update Fleet Logstash Outputs
|
||||||
{% if ELASTICFLEETMERGED.config.server.enable_auto_configuration and grains.role not in ['so-import', 'so-eval', 'so-fleet'] %}
|
{% if ELASTICFLEETMERGED.config.server.enable_auto_configuration and grains.role not in ['so-import', 'so-eval', 'so-fleet'] %}
|
||||||
@@ -141,7 +143,22 @@ so-elastic-fleet-integrations:
|
|||||||
so-elastic-agent-grid-upgrade:
|
so-elastic-agent-grid-upgrade:
|
||||||
cmd.run:
|
cmd.run:
|
||||||
- name: /usr/sbin/so-elastic-agent-grid-upgrade
|
- name: /usr/sbin/so-elastic-agent-grid-upgrade
|
||||||
- retry: True
|
- retry:
|
||||||
|
attempts: 12
|
||||||
|
interval: 5
|
||||||
|
|
||||||
|
so-elastic-fleet-integration-upgrade:
|
||||||
|
cmd.run:
|
||||||
|
- name: /usr/sbin/so-elastic-fleet-integration-upgrade
|
||||||
|
|
||||||
|
{% if ELASTICFLEETMERGED.config.defend_filters.enable_auto_configuration %}
|
||||||
|
so-elastic-defend-manage-filters-file-watch:
|
||||||
|
cmd.run:
|
||||||
|
- name: python3 /sbin/so-elastic-defend-manage-filters.py -c /opt/so/conf/elasticsearch/curl.config -d /opt/so/conf/elastic-fleet/defend-exclusions/disabled-filters.yaml -i /nsm/securityonion-resources/event_filters/ -i /opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters/ &>> /opt/so/log/elasticfleet/elastic-defend-manage-filters.log
|
||||||
|
- onchanges:
|
||||||
|
- file: elasticdefendcustom
|
||||||
|
- file: elasticdefenddisabled
|
||||||
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
delete_so-elastic-fleet_so-status.disabled:
|
delete_so-elastic-fleet_so-status.disabled:
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"package": {
|
||||||
|
"name": "log",
|
||||||
|
"version": ""
|
||||||
|
},
|
||||||
|
"name": "hydra-logs",
|
||||||
|
"namespace": "so",
|
||||||
|
"description": "Hydra logs",
|
||||||
|
"policy_id": "so-grid-nodes_general",
|
||||||
|
"inputs": {
|
||||||
|
"logs-logfile": {
|
||||||
|
"enabled": true,
|
||||||
|
"streams": {
|
||||||
|
"log.logs": {
|
||||||
|
"enabled": true,
|
||||||
|
"vars": {
|
||||||
|
"paths": [
|
||||||
|
"/opt/so/log/hydra/hydra.log"
|
||||||
|
],
|
||||||
|
"data_stream.dataset": "hydra",
|
||||||
|
"tags": ["so-hydra"],
|
||||||
|
"processors": "- decode_json_fields:\n fields: [\"message\"]\n target: \"\"\n add_error_key: true \n- add_fields:\n target: event\n fields:\n category: iam\n module: hydra",
|
||||||
|
"custom": "pipeline: hydra"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"force": true
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"package": {
|
||||||
|
"name": "log",
|
||||||
|
"version": ""
|
||||||
|
},
|
||||||
|
"name": "so-ip-mappings",
|
||||||
|
"namespace": "so",
|
||||||
|
"description": "IP Description mappings",
|
||||||
|
"policy_id": "so-grid-nodes_general",
|
||||||
|
"vars": {},
|
||||||
|
"inputs": {
|
||||||
|
"logs-logfile": {
|
||||||
|
"enabled": true,
|
||||||
|
"streams": {
|
||||||
|
"log.logs": {
|
||||||
|
"enabled": true,
|
||||||
|
"vars": {
|
||||||
|
"paths": [
|
||||||
|
"/nsm/custom-mappings/ip-descriptions.csv"
|
||||||
|
],
|
||||||
|
"data_stream.dataset": "hostnamemappings",
|
||||||
|
"tags": [
|
||||||
|
"so-ip-mappings"
|
||||||
|
],
|
||||||
|
"processors": "- decode_csv_fields:\n fields:\n message: decoded.csv\n separator: \",\"\n ignore_missing: false\n overwrite_keys: true\n trim_leading_space: true\n fail_on_error: true\n\n- extract_array:\n field: decoded.csv\n mappings:\n so.ip_address: '0'\n so.description: '1'\n\n- script:\n lang: javascript\n source: >\n function process(event) {\n var ip = event.Get('so.ip_address');\n var validIpRegex = /^((25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)\\.){3}(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)$/\n if (!validIpRegex.test(ip)) {\n event.Cancel();\n }\n }\n- fingerprint:\n fields: [\"so.ip_address\"]\n target_field: \"@metadata._id\"\n",
|
||||||
|
"custom": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"force": true
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
title: 'Template 1'
|
||||||
|
id: 'This needs to be a UUIDv4 id - https://www.uuidgenerator.net/version4'
|
||||||
|
description: 'Short description detailing what this rule is filtering and why.'
|
||||||
|
references: 'Relevant urls, etc'
|
||||||
|
author: '@SecurityOnion'
|
||||||
|
date: 'MM/DD/YY'
|
||||||
|
event_type: 'dns_query'
|
||||||
|
filter_type: 'exclude'
|
||||||
|
filter:
|
||||||
|
selection_1:
|
||||||
|
TargetField: 'QueryName'
|
||||||
|
Condition: 'end with'
|
||||||
|
Pattern: '.thawte.com'
|
||||||
|
---
|
||||||
|
title: 'Template 2'
|
||||||
|
id: 'This needs to be a UUIDv4 id - https://www.uuidgenerator.net/version4'
|
||||||
|
description: 'Short description detailing what this rule is filtering and why.'
|
||||||
|
references: 'Relevant urls, etc'
|
||||||
|
author: '@SecurityOnion'
|
||||||
|
date: 'MM/DD/YY'
|
||||||
|
event_type: 'process_creation'
|
||||||
|
filter_type: 'exclude'
|
||||||
|
filter:
|
||||||
|
selection_1:
|
||||||
|
TargetField: 'ParentImage'
|
||||||
|
Condition: 'is'
|
||||||
|
Pattern: 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngentask.exe'
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
'9EDAA51C-BB12-49D9-8748-2B61371F2E7D':
|
||||||
|
Date: '10/10/2024'
|
||||||
|
Notes: 'Example Disabled Filter - Leave this entry here, just copy and paste as needed.'
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
elasticfleet:
|
elasticfleet:
|
||||||
enabled:
|
enabled:
|
||||||
description: You can enable or disable Elastic Fleet.
|
description: Enables or disables the Elastic Fleet process. This process is critical for managing Elastic Agents.
|
||||||
advanced: True
|
advanced: True
|
||||||
helpLink: elastic-fleet.html
|
helpLink: elastic-fleet.html
|
||||||
enable_manager_output:
|
enable_manager_output:
|
||||||
@@ -9,6 +9,24 @@ elasticfleet:
|
|||||||
global: True
|
global: True
|
||||||
forcedType: bool
|
forcedType: bool
|
||||||
helpLink: elastic-fleet.html
|
helpLink: elastic-fleet.html
|
||||||
|
files:
|
||||||
|
soc:
|
||||||
|
elastic-defend-disabled-filters__yaml:
|
||||||
|
title: Disabled Elastic Defend filters
|
||||||
|
description: Enter the ID of the filter that should be disabled.
|
||||||
|
syntax: yaml
|
||||||
|
file: True
|
||||||
|
global: True
|
||||||
|
helpLink: elastic-fleet.html
|
||||||
|
advanced: True
|
||||||
|
elastic-defend-custom-filters__yaml:
|
||||||
|
title: Custom Elastic Defend filters
|
||||||
|
description: Enter custom filters seperated by ---
|
||||||
|
syntax: yaml
|
||||||
|
file: True
|
||||||
|
global: True
|
||||||
|
helpLink: elastic-fleet.html
|
||||||
|
advanced: True
|
||||||
logging:
|
logging:
|
||||||
zeek:
|
zeek:
|
||||||
excluded:
|
excluded:
|
||||||
@@ -16,6 +34,12 @@ elasticfleet:
|
|||||||
forcedType: "[]string"
|
forcedType: "[]string"
|
||||||
helpLink: zeek.html
|
helpLink: zeek.html
|
||||||
config:
|
config:
|
||||||
|
defend_filters:
|
||||||
|
enable_auto_configuration:
|
||||||
|
description: Enable auto-configuration and management of the Elastic Defend Exclusion filters.
|
||||||
|
global: True
|
||||||
|
helpLink: elastic-fleet.html
|
||||||
|
advanced: True
|
||||||
server:
|
server:
|
||||||
custom_fqdn:
|
custom_fqdn:
|
||||||
description: Custom FQDN for Agents to connect to. One per line.
|
description: Custom FQDN for Agents to connect to. One per line.
|
||||||
|
|||||||
@@ -0,0 +1,251 @@
|
|||||||
|
from datetime import datetime
|
||||||
|
import sys
|
||||||
|
import getopt
|
||||||
|
from so_elastic_defend_filters_helper import *
|
||||||
|
import logging
|
||||||
|
|
||||||
|
logging.basicConfig(level=logging.INFO, format='%(message)s')
|
||||||
|
|
||||||
|
# Define mappings for Target Field, Event Type, Conditions
|
||||||
|
TARGET_FIELD_MAPPINGS = {
|
||||||
|
"Image": "process.executable",
|
||||||
|
"ParentImage": "process.parent.executable",
|
||||||
|
"CommandLine": "process.command_line",
|
||||||
|
"ParentCommandLine": "process.parent.command_line",
|
||||||
|
"DestinationHostname": "destination.domain",
|
||||||
|
"QueryName": "dns.question.name",
|
||||||
|
"DestinationIp": "destination.ip",
|
||||||
|
"TargetObject": "registry.path",
|
||||||
|
"TargetFilename": "file.path"
|
||||||
|
}
|
||||||
|
|
||||||
|
DATASET_MAPPINGS = {
|
||||||
|
"process_create": "endpoint.events.process",
|
||||||
|
"network_connection": "endpoint.events.network",
|
||||||
|
"file_create": "endpoint.events.file",
|
||||||
|
"file_delete": "endpoint.events.file",
|
||||||
|
"registry_event": "endpoint.events.registry",
|
||||||
|
"dns_query": "endpoint.events.network"
|
||||||
|
}
|
||||||
|
|
||||||
|
CONDITION_MAPPINGS = {
|
||||||
|
"is": ("included", "match"),
|
||||||
|
"end with": ("included", "wildcard"),
|
||||||
|
"begin with": ("included", "wildcard"),
|
||||||
|
"contains": ("included", "wildcard")
|
||||||
|
}
|
||||||
|
|
||||||
|
# Extract entries for a rule
|
||||||
|
def extract_entries(data, event_type):
|
||||||
|
entries = []
|
||||||
|
filter_data = data.get('filter', {})
|
||||||
|
for value in filter_data.values():
|
||||||
|
target_field = TARGET_FIELD_MAPPINGS.get(value.get('TargetField', ''))
|
||||||
|
condition = value.get('Condition', '')
|
||||||
|
pattern = value.get('Pattern', '')
|
||||||
|
|
||||||
|
if condition not in CONDITION_MAPPINGS:
|
||||||
|
logging.error(f"Invalid condition: {condition}")
|
||||||
|
|
||||||
|
# Modify the pattern based on the condition
|
||||||
|
pattern = modify_pattern(condition, pattern)
|
||||||
|
|
||||||
|
operator, match_type = CONDITION_MAPPINGS[condition]
|
||||||
|
|
||||||
|
entries.append({
|
||||||
|
"field": target_field,
|
||||||
|
"operator": operator,
|
||||||
|
"type": match_type,
|
||||||
|
"value": pattern
|
||||||
|
})
|
||||||
|
|
||||||
|
# Add the event.dataset entry from DATASET_MAPPINGS
|
||||||
|
dataset_value = DATASET_MAPPINGS.get(event_type, '')
|
||||||
|
if dataset_value:
|
||||||
|
entries.append({
|
||||||
|
"field": "event.dataset",
|
||||||
|
"operator": "included",
|
||||||
|
"type": "match",
|
||||||
|
"value": dataset_value
|
||||||
|
})
|
||||||
|
else:
|
||||||
|
logging.error(f"No dataset mapping found for event_type: {event_type}")
|
||||||
|
|
||||||
|
return entries
|
||||||
|
|
||||||
|
# Build the JSON
|
||||||
|
def build_json_entry(entries, guid, event_type, context):
|
||||||
|
return {
|
||||||
|
"comments": [],
|
||||||
|
"entries": entries,
|
||||||
|
"item_id": guid,
|
||||||
|
"name": f"SO - {event_type} - {guid}",
|
||||||
|
"description": f"{context}\n\n <<- Note: This filter is managed by Security Onion. ->>",
|
||||||
|
"namespace_type": "agnostic",
|
||||||
|
"tags": ["policy:all"],
|
||||||
|
"type": "simple",
|
||||||
|
"os_types": ["windows"],
|
||||||
|
"entries": entries
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check to see if the rule is disabled
|
||||||
|
# If it is, make sure it is not active
|
||||||
|
def disable_check(guid, disabled_rules, username, password):
|
||||||
|
if guid in disabled_rules:
|
||||||
|
logging.info(f"Rule {guid} is in the disabled rules list, confirming that is is actually disabled...")
|
||||||
|
existing_rule = api_request("GET", guid, username, password)
|
||||||
|
|
||||||
|
if existing_rule:
|
||||||
|
if api_request("DELETE", guid, username, password):
|
||||||
|
logging.info(f"Successfully deleted rule {guid}")
|
||||||
|
return True, "deleted"
|
||||||
|
else:
|
||||||
|
logging.error(f"Error deleting rule {guid}.")
|
||||||
|
return True, "Error deleting"
|
||||||
|
return True, "NOP"
|
||||||
|
return False, None
|
||||||
|
|
||||||
|
def modify_pattern(condition, pattern):
|
||||||
|
"""
|
||||||
|
Modify the pattern based on the condition.
|
||||||
|
- 'end with': Add '*' to the beginning of the pattern.
|
||||||
|
- 'begin with': Add '*' to the end of the pattern.
|
||||||
|
- 'contains': Add '*' to both the beginning and end of the pattern.
|
||||||
|
"""
|
||||||
|
if isinstance(pattern, list):
|
||||||
|
# Apply modification to each pattern in the list if it's a list of patterns
|
||||||
|
return [modify_pattern(condition, p) for p in pattern]
|
||||||
|
|
||||||
|
if condition == "end with":
|
||||||
|
return f"*{pattern}"
|
||||||
|
elif condition == "begin with":
|
||||||
|
return f"{pattern}*"
|
||||||
|
elif condition == "contains":
|
||||||
|
return f"*{pattern}*"
|
||||||
|
return pattern
|
||||||
|
|
||||||
|
|
||||||
|
def process_rule_update_or_create(guid, json_entry, username, password):
|
||||||
|
existing_rule = api_request("GET", guid, username, password)
|
||||||
|
|
||||||
|
if existing_rule:
|
||||||
|
existing_rule_data = extract_relevant_fields(existing_rule)
|
||||||
|
new_rule_data = extract_relevant_fields(json_entry)
|
||||||
|
if generate_hash(existing_rule_data) != generate_hash(new_rule_data):
|
||||||
|
logging.info(f"Updating rule {guid}")
|
||||||
|
json_entry.pop("list_id", None)
|
||||||
|
api_request("PUT", guid, username, password, json_data=json_entry)
|
||||||
|
return "updated"
|
||||||
|
logging.info(f"Rule {guid} is up to date.")
|
||||||
|
return "no_change"
|
||||||
|
else:
|
||||||
|
logging.info(f"Creating new rule {guid}")
|
||||||
|
json_entry["list_id"] = "endpoint_event_filters"
|
||||||
|
api_request("POST", guid, username, password, json_data=json_entry)
|
||||||
|
return "new"
|
||||||
|
|
||||||
|
# Main function for processing rules
|
||||||
|
def process_rules(yaml_files, disabled_rules, username, password):
|
||||||
|
stats = {"rule_count": 0, "new": 0, "updated": 0, "no_change": 0, "disabled": 0, "deleted": 0}
|
||||||
|
for data in yaml_files:
|
||||||
|
logging.info(f"Processing rule: {data.get('id', '')}")
|
||||||
|
event_type = data.get('event_type', '')
|
||||||
|
guid = data.get('id', '')
|
||||||
|
dataset = DATASET_MAPPINGS.get(event_type, '')
|
||||||
|
context = data.get('description', '')
|
||||||
|
|
||||||
|
rule_deleted, state = disable_check(guid, disabled_rules, username, password)
|
||||||
|
if rule_deleted:
|
||||||
|
stats["disabled"] += 1
|
||||||
|
if state == "deleted":
|
||||||
|
stats["deleted"] += 1
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Extract entries and build JSON
|
||||||
|
entries = extract_entries(data, event_type)
|
||||||
|
json_entry = build_json_entry(entries, guid, event_type, context)
|
||||||
|
|
||||||
|
# Process rule creation or update
|
||||||
|
status = process_rule_update_or_create(guid, json_entry, username, password)
|
||||||
|
|
||||||
|
stats[status] += 1
|
||||||
|
stats["rule_count"] += 1
|
||||||
|
return stats
|
||||||
|
|
||||||
|
def parse_args(argv):
|
||||||
|
try:
|
||||||
|
opts, args = getopt.getopt(argv, "i:d:c:f:", ["input=", "disabled=", "credentials=", "flags_file="])
|
||||||
|
except getopt.GetoptError:
|
||||||
|
print("Usage: python so-elastic-defend-manage-filters.py -c <credentials_file> -d <disabled_file> -i <folder_of_yaml_files> [-f <flags_file>]")
|
||||||
|
sys.exit(2)
|
||||||
|
return opts
|
||||||
|
|
||||||
|
def load_flags(file_path):
|
||||||
|
with open(file_path, 'r') as flags_file:
|
||||||
|
return flags_file.read().splitlines()
|
||||||
|
|
||||||
|
def validate_inputs(credentials_file, disabled_file, yaml_directories):
|
||||||
|
if not credentials_file or not disabled_file or not yaml_directories:
|
||||||
|
print("Usage: python so-elastic-defend-manage-filters.py -c <credentials_file> -d <disabled_file> -i <folder_of_yaml_files> [-f <flags_file>]")
|
||||||
|
sys.exit(2)
|
||||||
|
|
||||||
|
def main(argv):
|
||||||
|
credentials_file = ""
|
||||||
|
disabled_file = ""
|
||||||
|
yaml_directories = []
|
||||||
|
|
||||||
|
opts = parse_args(argv)
|
||||||
|
|
||||||
|
for opt, arg in opts:
|
||||||
|
if opt in ("-c", "--credentials"):
|
||||||
|
credentials_file = arg
|
||||||
|
elif opt in ("-d", "--disabled"):
|
||||||
|
disabled_file = arg
|
||||||
|
elif opt in ("-i", "--input"):
|
||||||
|
yaml_directories.append(arg)
|
||||||
|
elif opt in ("-f", "--flags_file"):
|
||||||
|
flags = load_flags(arg)
|
||||||
|
return main(argv + flags)
|
||||||
|
|
||||||
|
timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
||||||
|
logging.info(f"\n{timestamp}")
|
||||||
|
|
||||||
|
validate_inputs(credentials_file, disabled_file, yaml_directories)
|
||||||
|
|
||||||
|
credentials = load_credentials(credentials_file)
|
||||||
|
if not credentials:
|
||||||
|
raise Exception("Failed to load credentials")
|
||||||
|
|
||||||
|
username, password = extract_auth_details(credentials)
|
||||||
|
if not username or not password:
|
||||||
|
raise Exception("Invalid credentials format")
|
||||||
|
|
||||||
|
custom_rules_input = '/opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters-raw'
|
||||||
|
custom_rules_output = '/opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters'
|
||||||
|
prepare_custom_rules(custom_rules_input, custom_rules_output)
|
||||||
|
disabled_rules = load_disabled(disabled_file)
|
||||||
|
|
||||||
|
total_stats = {"rule_count": 0, "new": 0, "updated": 0, "no_change": 0, "disabled": 0, "deleted": 0}
|
||||||
|
|
||||||
|
for yaml_dir in yaml_directories:
|
||||||
|
yaml_files = load_yaml_files(yaml_dir)
|
||||||
|
stats = process_rules(yaml_files, disabled_rules, username, password)
|
||||||
|
|
||||||
|
for key in total_stats:
|
||||||
|
total_stats[key] += stats[key]
|
||||||
|
|
||||||
|
logging.info(f"\nProcessing Summary")
|
||||||
|
logging.info(f" - Total processed rules: {total_stats['rule_count']}")
|
||||||
|
logging.info(f" - New rules: {total_stats['new']}")
|
||||||
|
logging.info(f" - Updated rules: {total_stats['updated']}")
|
||||||
|
logging.info(f" - Disabled rules: {total_stats['deleted']}")
|
||||||
|
logging.info(f" - Rules with no changes: {total_stats['no_change']}")
|
||||||
|
logging.info(f"Rule status Summary")
|
||||||
|
logging.info(f" - Active rules: {total_stats['rule_count'] - total_stats['disabled']}")
|
||||||
|
logging.info(f" - Disabled rules: {total_stats['disabled']}")
|
||||||
|
timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
||||||
|
logging.info(f"Execution completed at: {timestamp}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main(sys.argv[1:])
|
||||||
@@ -102,6 +102,70 @@ elastic_fleet_package_is_installed() {
|
|||||||
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET -H 'kbn-xsrf: true' "localhost:5601/api/fleet/epm/packages/$PACKAGE" | jq -r '.item.status'
|
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET -H 'kbn-xsrf: true' "localhost:5601/api/fleet/epm/packages/$PACKAGE" | jq -r '.item.status'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
elastic_fleet_agent_policy_ids() {
|
||||||
|
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies" | jq -r .items[].id
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Error: Failed to retrieve agent policies."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
elastic_fleet_agent_policy_names() {
|
||||||
|
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies" | jq -r .items[].name
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Error: Failed to retrieve agent policies."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
elastic_fleet_integration_policy_names() {
|
||||||
|
AGENT_POLICY=$1
|
||||||
|
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies/$AGENT_POLICY" | jq -r .item.package_policies[].name
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Error: Failed to retrieve integrations for '$AGENT_POLICY'."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
elastic_fleet_integration_policy_package_name() {
|
||||||
|
AGENT_POLICY=$1
|
||||||
|
INTEGRATION=$2
|
||||||
|
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies/$AGENT_POLICY" | jq -r --arg INTEGRATION "$INTEGRATION" '.item.package_policies[] | select(.name==$INTEGRATION)| .package.name'
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Error: Failed to retrieve package name for '$INTEGRATION' in '$AGENT_POLICY'."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
elastic_fleet_integration_policy_package_version() {
|
||||||
|
AGENT_POLICY=$1
|
||||||
|
INTEGRATION=$2
|
||||||
|
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies/$AGENT_POLICY" | jq -r --arg INTEGRATION "$INTEGRATION" '.item.package_policies[] | select(.name==$INTEGRATION)| .package.version'
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Error: Failed to retrieve package version for '$INTEGRATION' in '$AGENT_POLICY'."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
elastic_fleet_integration_id() {
|
||||||
|
AGENT_POLICY=$1
|
||||||
|
INTEGRATION=$2
|
||||||
|
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies/$AGENT_POLICY" | jq -r --arg INTEGRATION "$INTEGRATION" '.item.package_policies[] | select(.name==$INTEGRATION)| .id'
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Error: Failed to retrieve integration ID for '$INTEGRATION' in '$AGENT_POLICY'."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
elastic_fleet_integration_policy_dryrun_upgrade() {
|
||||||
|
INTEGRATION_ID=$1
|
||||||
|
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -H "Content-Type: application/json" -H 'kbn-xsrf: true' -L -X POST "localhost:5601/api/fleet/package_policies/upgrade/dryrun" -d "{\"packagePolicyIds\":[\"$INTEGRATION_ID\"]}"
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Error: Failed to complete dry run for '$INTEGRATION_ID'."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
elastic_fleet_policy_create() {
|
elastic_fleet_policy_create() {
|
||||||
|
|
||||||
NAME=$1
|
NAME=$1
|
||||||
|
|||||||
@@ -0,0 +1,62 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one
|
||||||
|
# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at
|
||||||
|
# https://securityonion.net/license; you may not use this file except in compliance with the
|
||||||
|
# Elastic License 2.0.
|
||||||
|
|
||||||
|
. /usr/sbin/so-elastic-fleet-common
|
||||||
|
|
||||||
|
curl_output=$(curl -s -K /opt/so/conf/elasticsearch/curl.config -c - -X GET http://localhost:5601/)
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Error: Failed to connect to Kibana."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
IFS=$'\n'
|
||||||
|
agent_policies=$(elastic_fleet_agent_policy_ids)
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Error: Failed to retrieve agent policies."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
for AGENT_POLICY in $agent_policies; do
|
||||||
|
integrations=$(elastic_fleet_integration_policy_names "$AGENT_POLICY")
|
||||||
|
for INTEGRATION in $integrations; do
|
||||||
|
if ! [[ "$INTEGRATION" == "elastic-defend-endpoints" ]] && ! [[ "$INTEGRATION" == "fleet_server-"* ]]; then
|
||||||
|
# Get package name so we know what package to look for when checking the current and latest available version
|
||||||
|
PACKAGE_NAME=$(elastic_fleet_integration_policy_package_name "$AGENT_POLICY" "$INTEGRATION")
|
||||||
|
|
||||||
|
# Get currently installed version of package
|
||||||
|
PACKAGE_VERSION=$(elastic_fleet_integration_policy_package_version "$AGENT_POLICY" "$INTEGRATION")
|
||||||
|
|
||||||
|
# Get latest available version of package
|
||||||
|
AVAILABLE_VERSION=$(elastic_fleet_package_latest_version_check "$PACKAGE_NAME")
|
||||||
|
|
||||||
|
# Get integration ID
|
||||||
|
INTEGRATION_ID=$(elastic_fleet_integration_id "$AGENT_POLICY" "$INTEGRATION")
|
||||||
|
|
||||||
|
if [[ "$PACKAGE_VERSION" != "$AVAILABLE_VERSION" ]]; then
|
||||||
|
# Dry run of the upgrade
|
||||||
|
echo "Current $PACKAGE_NAME package version ($PACKAGE_VERSION) is not the same as the latest available package ($AVAILABLE_VERSION)..."
|
||||||
|
echo "Upgrading $INTEGRATION..."
|
||||||
|
echo "Starting dry run..."
|
||||||
|
DRYRUN_OUTPUT=$(elastic_fleet_integration_policy_dryrun_upgrade "$INTEGRATION_ID")
|
||||||
|
DRYRUN_ERRORS=$(echo "$DRYRUN_OUTPUT" | jq .[].hasErrors)
|
||||||
|
|
||||||
|
# If no errors with dry run, proceed with actual upgrade
|
||||||
|
if [[ "$DRYRUN_ERRORS" == "false" ]]; then
|
||||||
|
echo "No errors detected. Proceeding with upgrade..."
|
||||||
|
elastic_fleet_integration_policy_upgrade "$INTEGRATION_ID"
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Error: Upgrade failed for integration ID '$INTEGRATION_ID'."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Errors detected during dry run. Stopping upgrade..."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
echo
|
||||||
@@ -0,0 +1,128 @@
|
|||||||
|
|
||||||
|
import hashlib
|
||||||
|
import os
|
||||||
|
import json
|
||||||
|
import yaml
|
||||||
|
import requests
|
||||||
|
from requests.auth import HTTPBasicAuth
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
# Extract 'entries', 'description' and 'os_types' fields
|
||||||
|
def extract_relevant_fields(filter):
|
||||||
|
return {
|
||||||
|
'entries': filter.get('entries', []),
|
||||||
|
'description': filter.get('description', '')
|
||||||
|
}
|
||||||
|
|
||||||
|
# Sort for consistency, so that a hash can be generated
|
||||||
|
def sorted_data(value):
|
||||||
|
if isinstance(value, dict):
|
||||||
|
# Recursively sort the dictionary by key
|
||||||
|
return {k: sorted_data(v) for k, v in sorted(value.items())}
|
||||||
|
elif isinstance(value, list):
|
||||||
|
# Sort lists; for dictionaries, sort by a specific key
|
||||||
|
return sorted(value, key=lambda x: tuple(sorted(x.items())) if isinstance(x, dict) else x)
|
||||||
|
return value
|
||||||
|
|
||||||
|
# Generate a hash based on sorted relevant fields
|
||||||
|
def generate_hash(data):
|
||||||
|
sorted_data_string = json.dumps(sorted_data(data), sort_keys=True)
|
||||||
|
return hashlib.sha256(sorted_data_string.encode('utf-8')).hexdigest()
|
||||||
|
|
||||||
|
# Load Elasticsearch credentials from the config file
|
||||||
|
def load_credentials(config_path):
|
||||||
|
with open(config_path, 'r') as file:
|
||||||
|
for line in file:
|
||||||
|
if line.startswith("user"):
|
||||||
|
credentials = line.split('=', 1)[1].strip().strip('"')
|
||||||
|
return credentials
|
||||||
|
return None
|
||||||
|
|
||||||
|
# Extract username and password from credentials
|
||||||
|
def extract_auth_details(credentials):
|
||||||
|
if ':' in credentials:
|
||||||
|
return credentials.split(':', 1)
|
||||||
|
return None, None
|
||||||
|
|
||||||
|
# Generalized API request function
|
||||||
|
def api_request(method, guid, username, password, json_data=None):
|
||||||
|
headers = {
|
||||||
|
'kbn-xsrf': 'true',
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
auth = HTTPBasicAuth(username, password)
|
||||||
|
|
||||||
|
if method == "POST":
|
||||||
|
url = "http://localhost:5601/api/exception_lists/items?namespace_type=agnostic"
|
||||||
|
else:
|
||||||
|
url = f"http://localhost:5601/api/exception_lists/items?item_id={guid}&namespace_type=agnostic"
|
||||||
|
|
||||||
|
response = requests.request(method, url, headers=headers, auth=auth, json=json_data)
|
||||||
|
|
||||||
|
if response.status_code in [200, 201]:
|
||||||
|
return response.json() if response.content else True
|
||||||
|
elif response.status_code == 404 and method == "GET":
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
print(f"Error with {method} request: {response.status_code} - {response.text}")
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
# Load YAML data for GUIDs to skip
|
||||||
|
def load_disabled(disabled_file_path):
|
||||||
|
if os.path.exists(disabled_file_path):
|
||||||
|
with open(disabled_file_path, 'r') as file:
|
||||||
|
return yaml.safe_load(file) or {}
|
||||||
|
return {}
|
||||||
|
|
||||||
|
def load_yaml_files(*dirs):
|
||||||
|
yaml_files = []
|
||||||
|
|
||||||
|
for dir_path in dirs:
|
||||||
|
if os.path.isdir(dir_path):
|
||||||
|
# Recurse through the directory and subdirectories
|
||||||
|
for root, dirs, files in os.walk(dir_path):
|
||||||
|
for file_name in files:
|
||||||
|
if file_name.endswith(".yaml"):
|
||||||
|
full_path = os.path.join(root, file_name)
|
||||||
|
with open(full_path, 'r') as f:
|
||||||
|
try:
|
||||||
|
yaml_content = yaml.safe_load(f)
|
||||||
|
yaml_files.append(yaml_content)
|
||||||
|
except yaml.YAMLError as e:
|
||||||
|
print(f"Error loading {full_path}: {e}")
|
||||||
|
else:
|
||||||
|
print(f"Invalid directory: {dir_path}")
|
||||||
|
|
||||||
|
return yaml_files
|
||||||
|
|
||||||
|
def prepare_custom_rules(input_file, output_dir):
|
||||||
|
# Clear the output directory first
|
||||||
|
if os.path.exists(output_dir):
|
||||||
|
shutil.rmtree(output_dir)
|
||||||
|
os.makedirs(output_dir, exist_ok=True)
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Load the YAML file
|
||||||
|
with open(input_file, 'r') as f:
|
||||||
|
docs = yaml.safe_load_all(f)
|
||||||
|
|
||||||
|
for doc in docs:
|
||||||
|
if 'id' not in doc:
|
||||||
|
print(f"Skipping rule, no 'id' found: {doc}")
|
||||||
|
continue
|
||||||
|
if doc.get('title') in ["Template 1", "Template 2"]:
|
||||||
|
print(f"Skipping template rule with title: {doc['title']}")
|
||||||
|
continue
|
||||||
|
# Create a filename using the 'id' field
|
||||||
|
file_name = os.path.join(output_dir, f"{doc['id']}.yaml")
|
||||||
|
|
||||||
|
# Write the individual YAML file
|
||||||
|
with open(file_name, 'w') as output_file:
|
||||||
|
yaml.dump(doc, output_file, default_flow_style=False)
|
||||||
|
print(f"Created file: {file_name}")
|
||||||
|
|
||||||
|
except yaml.YAMLError as e:
|
||||||
|
print(f"Error parsing YAML: {e}")
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error processing file: {e}")
|
||||||
@@ -111,15 +111,23 @@ elasticsearch:
|
|||||||
match_mapping_type: string
|
match_mapping_type: string
|
||||||
settings:
|
settings:
|
||||||
index:
|
index:
|
||||||
|
lifecycle:
|
||||||
|
name: so-case-logs
|
||||||
mapping:
|
mapping:
|
||||||
total_fields:
|
total_fields:
|
||||||
limit: 1500
|
limit: 1500
|
||||||
number_of_replicas: 0
|
number_of_replicas: 0
|
||||||
|
auto_expand_replicas: 0-2
|
||||||
number_of_shards: 1
|
number_of_shards: 1
|
||||||
refresh_interval: 30s
|
refresh_interval: 30s
|
||||||
sort:
|
sort:
|
||||||
field: '@timestamp'
|
field: '@timestamp'
|
||||||
order: desc
|
order: desc
|
||||||
|
policy:
|
||||||
|
phases:
|
||||||
|
hot:
|
||||||
|
actions: {}
|
||||||
|
min_age: 0ms
|
||||||
so-common:
|
so-common:
|
||||||
close: 30
|
close: 30
|
||||||
delete: 365
|
delete: 365
|
||||||
@@ -258,15 +266,23 @@ elasticsearch:
|
|||||||
match_mapping_type: string
|
match_mapping_type: string
|
||||||
settings:
|
settings:
|
||||||
index:
|
index:
|
||||||
|
lifecycle:
|
||||||
|
name: so-detection-logs
|
||||||
mapping:
|
mapping:
|
||||||
total_fields:
|
total_fields:
|
||||||
limit: 1500
|
limit: 1500
|
||||||
number_of_replicas: 0
|
number_of_replicas: 0
|
||||||
|
auto_expand_replicas: 0-2
|
||||||
number_of_shards: 1
|
number_of_shards: 1
|
||||||
refresh_interval: 30s
|
refresh_interval: 30s
|
||||||
sort:
|
sort:
|
||||||
field: '@timestamp'
|
field: '@timestamp'
|
||||||
order: desc
|
order: desc
|
||||||
|
policy:
|
||||||
|
phases:
|
||||||
|
hot:
|
||||||
|
actions: {}
|
||||||
|
min_age: 0ms
|
||||||
so-endgame:
|
so-endgame:
|
||||||
index_sorting: false
|
index_sorting: false
|
||||||
index_template:
|
index_template:
|
||||||
@@ -599,6 +615,35 @@ elasticsearch:
|
|||||||
set_priority:
|
set_priority:
|
||||||
priority: 50
|
priority: 50
|
||||||
min_age: 30d
|
min_age: 30d
|
||||||
|
so-ip-mappings:
|
||||||
|
index_sorting: false
|
||||||
|
index_template:
|
||||||
|
composed_of:
|
||||||
|
- so-ip-mappings
|
||||||
|
ignore_missing_component_templates: []
|
||||||
|
index_patterns:
|
||||||
|
- so-ip*
|
||||||
|
priority: 500
|
||||||
|
template:
|
||||||
|
mappings:
|
||||||
|
date_detection: false
|
||||||
|
dynamic_templates:
|
||||||
|
- strings_as_keyword:
|
||||||
|
mapping:
|
||||||
|
ignore_above: 1024
|
||||||
|
type: keyword
|
||||||
|
match_mapping_type: string
|
||||||
|
settings:
|
||||||
|
index:
|
||||||
|
mapping:
|
||||||
|
total_fields:
|
||||||
|
limit: 1500
|
||||||
|
number_of_replicas: 0
|
||||||
|
number_of_shards: 1
|
||||||
|
refresh_interval: 30s
|
||||||
|
sort:
|
||||||
|
field: '@timestamp'
|
||||||
|
order: desc
|
||||||
so-items:
|
so-items:
|
||||||
index_sorting: false
|
index_sorting: false
|
||||||
index_template:
|
index_template:
|
||||||
@@ -794,6 +839,116 @@ elasticsearch:
|
|||||||
priority: 50
|
priority: 50
|
||||||
min_age: 30d
|
min_age: 30d
|
||||||
warm: 7
|
warm: 7
|
||||||
|
so-hydra:
|
||||||
|
close: 30
|
||||||
|
delete: 365
|
||||||
|
index_sorting: false
|
||||||
|
index_template:
|
||||||
|
composed_of:
|
||||||
|
- agent-mappings
|
||||||
|
- dtc-agent-mappings
|
||||||
|
- base-mappings
|
||||||
|
- dtc-base-mappings
|
||||||
|
- client-mappings
|
||||||
|
- dtc-client-mappings
|
||||||
|
- container-mappings
|
||||||
|
- destination-mappings
|
||||||
|
- dtc-destination-mappings
|
||||||
|
- pb-override-destination-mappings
|
||||||
|
- dll-mappings
|
||||||
|
- dns-mappings
|
||||||
|
- dtc-dns-mappings
|
||||||
|
- ecs-mappings
|
||||||
|
- dtc-ecs-mappings
|
||||||
|
- error-mappings
|
||||||
|
- event-mappings
|
||||||
|
- dtc-event-mappings
|
||||||
|
- file-mappings
|
||||||
|
- dtc-file-mappings
|
||||||
|
- group-mappings
|
||||||
|
- host-mappings
|
||||||
|
- dtc-host-mappings
|
||||||
|
- http-mappings
|
||||||
|
- dtc-http-mappings
|
||||||
|
- log-mappings
|
||||||
|
- network-mappings
|
||||||
|
- dtc-network-mappings
|
||||||
|
- observer-mappings
|
||||||
|
- dtc-observer-mappings
|
||||||
|
- organization-mappings
|
||||||
|
- package-mappings
|
||||||
|
- process-mappings
|
||||||
|
- dtc-process-mappings
|
||||||
|
- related-mappings
|
||||||
|
- rule-mappings
|
||||||
|
- dtc-rule-mappings
|
||||||
|
- server-mappings
|
||||||
|
- service-mappings
|
||||||
|
- dtc-service-mappings
|
||||||
|
- source-mappings
|
||||||
|
- dtc-source-mappings
|
||||||
|
- pb-override-source-mappings
|
||||||
|
- threat-mappings
|
||||||
|
- tls-mappings
|
||||||
|
- url-mappings
|
||||||
|
- user_agent-mappings
|
||||||
|
- dtc-user_agent-mappings
|
||||||
|
- common-settings
|
||||||
|
- common-dynamic-mappings
|
||||||
|
data_stream:
|
||||||
|
allow_custom_routing: false
|
||||||
|
hidden: false
|
||||||
|
ignore_missing_component_templates: []
|
||||||
|
index_patterns:
|
||||||
|
- logs-hydra-so*
|
||||||
|
priority: 500
|
||||||
|
template:
|
||||||
|
mappings:
|
||||||
|
date_detection: false
|
||||||
|
dynamic_templates:
|
||||||
|
- strings_as_keyword:
|
||||||
|
mapping:
|
||||||
|
ignore_above: 1024
|
||||||
|
type: keyword
|
||||||
|
match_mapping_type: string
|
||||||
|
settings:
|
||||||
|
index:
|
||||||
|
lifecycle:
|
||||||
|
name: so-hydra-logs
|
||||||
|
mapping:
|
||||||
|
total_fields:
|
||||||
|
limit: 5000
|
||||||
|
number_of_replicas: 0
|
||||||
|
number_of_shards: 1
|
||||||
|
refresh_interval: 30s
|
||||||
|
sort:
|
||||||
|
field: '@timestamp'
|
||||||
|
order: desc
|
||||||
|
policy:
|
||||||
|
phases:
|
||||||
|
cold:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 0
|
||||||
|
min_age: 60d
|
||||||
|
delete:
|
||||||
|
actions:
|
||||||
|
delete: {}
|
||||||
|
min_age: 365d
|
||||||
|
hot:
|
||||||
|
actions:
|
||||||
|
rollover:
|
||||||
|
max_age: 30d
|
||||||
|
max_primary_shard_size: 50gb
|
||||||
|
set_priority:
|
||||||
|
priority: 100
|
||||||
|
min_age: 0ms
|
||||||
|
warm:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 50
|
||||||
|
min_age: 30d
|
||||||
|
warm: 7
|
||||||
so-lists:
|
so-lists:
|
||||||
index_sorting: false
|
index_sorting: false
|
||||||
index_template:
|
index_template:
|
||||||
@@ -2366,6 +2521,52 @@ elasticsearch:
|
|||||||
set_priority:
|
set_priority:
|
||||||
priority: 50
|
priority: 50
|
||||||
min_age: 30d
|
min_age: 30d
|
||||||
|
so-logs-barracuda_cloudgen_firewall_x_log:
|
||||||
|
index_sorting: False
|
||||||
|
index_template:
|
||||||
|
ignore_missing_component_templates:
|
||||||
|
- logs-barracuda_cloudgen_firewall.log@custom
|
||||||
|
index_patterns:
|
||||||
|
- "logs-barracuda_cloudgen_firewall.log-*"
|
||||||
|
template:
|
||||||
|
settings:
|
||||||
|
index:
|
||||||
|
lifecycle:
|
||||||
|
name: so-logs-barracuda_cloudgen_firewall.log-logs
|
||||||
|
number_of_replicas: 0
|
||||||
|
composed_of:
|
||||||
|
- "logs-barracuda_cloudgen_firewall.log@package"
|
||||||
|
- "logs-barracuda_cloudgen_firewall.log@custom"
|
||||||
|
- "so-fleet_globals-1"
|
||||||
|
- "so-fleet_agent_id_verification-1"
|
||||||
|
priority: 501
|
||||||
|
data_stream:
|
||||||
|
hidden: false
|
||||||
|
allow_custom_routing: false
|
||||||
|
policy:
|
||||||
|
phases:
|
||||||
|
cold:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 0
|
||||||
|
min_age: 30d
|
||||||
|
delete:
|
||||||
|
actions:
|
||||||
|
delete: {}
|
||||||
|
min_age: 365d
|
||||||
|
hot:
|
||||||
|
actions:
|
||||||
|
rollover:
|
||||||
|
max_age: 30d
|
||||||
|
max_primary_shard_size: 50gb
|
||||||
|
set_priority:
|
||||||
|
priority: 100
|
||||||
|
min_age: 0ms
|
||||||
|
warm:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 50
|
||||||
|
min_age: 30d
|
||||||
so-logs-carbonblack_edr_x_log:
|
so-logs-carbonblack_edr_x_log:
|
||||||
index_sorting: false
|
index_sorting: false
|
||||||
index_template:
|
index_template:
|
||||||
@@ -3010,6 +3211,50 @@ elasticsearch:
|
|||||||
set_priority:
|
set_priority:
|
||||||
priority: 50
|
priority: 50
|
||||||
min_age: 30d
|
min_age: 30d
|
||||||
|
so-logs-cisco_secure_email_gateway_x_log:
|
||||||
|
index_sorting: false
|
||||||
|
index_template:
|
||||||
|
composed_of:
|
||||||
|
- logs-cisco_secure_email_gateway.log@package
|
||||||
|
- logs-cisco_secure_email_gateway.log@custom
|
||||||
|
- so-fleet_globals-1
|
||||||
|
- so-fleet_agent_id_verification-1
|
||||||
|
data_stream:
|
||||||
|
hidden: false
|
||||||
|
allow_custom_routing: false
|
||||||
|
ignore_missing_component_templates:
|
||||||
|
- logs-cisco_secure_email_gateway.log@custom
|
||||||
|
index_patterns:
|
||||||
|
- logs-cisco_secure_email_gateway.log-*
|
||||||
|
priority: 501
|
||||||
|
template:
|
||||||
|
settings:
|
||||||
|
index:
|
||||||
|
number_of_replicas: 0
|
||||||
|
policy:
|
||||||
|
phases:
|
||||||
|
cold:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 0
|
||||||
|
min_age: 60d
|
||||||
|
delete:
|
||||||
|
actions:
|
||||||
|
delete: {}
|
||||||
|
min_age: 365d
|
||||||
|
hot:
|
||||||
|
actions:
|
||||||
|
rollover:
|
||||||
|
max_age: 30d
|
||||||
|
max_primary_shard_size: 50gb
|
||||||
|
set_priority:
|
||||||
|
priority: 100
|
||||||
|
min_age: 0ms
|
||||||
|
warm:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 50
|
||||||
|
min_age: 30d
|
||||||
so-logs-cisco_umbrella_x_log:
|
so-logs-cisco_umbrella_x_log:
|
||||||
index_sorting: false
|
index_sorting: false
|
||||||
index_template:
|
index_template:
|
||||||
@@ -3424,28 +3669,70 @@ elasticsearch:
|
|||||||
set_priority:
|
set_priority:
|
||||||
priority: 50
|
priority: 50
|
||||||
min_age: 30d
|
min_age: 30d
|
||||||
so-logs-crowdstrike_x_falcon:
|
so-logs-crowdstrike_x_alert:
|
||||||
index_sorting: false
|
index_sorting: False
|
||||||
index_template:
|
index_template:
|
||||||
|
index_patterns:
|
||||||
|
- logs-crowdstrike.alert-*
|
||||||
|
template:
|
||||||
|
settings:
|
||||||
|
index:
|
||||||
|
number_of_replicas: 0
|
||||||
|
composed_of:
|
||||||
|
- logs-crowdstrike.alert@package
|
||||||
|
- logs-crowdstrike.alert@custom
|
||||||
|
- so-fleet_globals-1
|
||||||
|
- so-fleet_agent_id_verification-1
|
||||||
|
priority: 501
|
||||||
|
data_stream:
|
||||||
|
hidden: false
|
||||||
|
allow_custom_routing: false
|
||||||
|
ignore_missing_component_templates:
|
||||||
|
- logs-crowdstrike.alert@custom
|
||||||
|
policy:
|
||||||
|
phases:
|
||||||
|
cold:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 0
|
||||||
|
min_age: 60d
|
||||||
|
delete:
|
||||||
|
actions:
|
||||||
|
delete: {}
|
||||||
|
min_age: 365d
|
||||||
|
hot:
|
||||||
|
actions:
|
||||||
|
rollover:
|
||||||
|
max_age: 30d
|
||||||
|
max_primary_shard_size: 50gb
|
||||||
|
set_priority:
|
||||||
|
priority: 100
|
||||||
|
min_age: 0ms
|
||||||
|
warm:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 50
|
||||||
|
min_age: 30d
|
||||||
|
so-logs-crowdstrike_x_falcon:
|
||||||
|
index_sorting: False
|
||||||
|
index_template:
|
||||||
|
index_patterns:
|
||||||
|
- logs-crowdstrike.falcon-*
|
||||||
|
template:
|
||||||
|
settings:
|
||||||
|
index:
|
||||||
|
number_of_replicas: 0
|
||||||
composed_of:
|
composed_of:
|
||||||
- logs-crowdstrike.falcon@package
|
- logs-crowdstrike.falcon@package
|
||||||
- logs-crowdstrike.falcon@custom
|
- logs-crowdstrike.falcon@custom
|
||||||
- so-fleet_globals-1
|
- so-fleet_globals-1
|
||||||
- so-fleet_agent_id_verification-1
|
- so-fleet_agent_id_verification-1
|
||||||
|
priority: 501
|
||||||
data_stream:
|
data_stream:
|
||||||
allow_custom_routing: false
|
|
||||||
hidden: false
|
hidden: false
|
||||||
|
allow_custom_routing: false
|
||||||
ignore_missing_component_templates:
|
ignore_missing_component_templates:
|
||||||
- logs-crowdstrike.falcon@custom
|
- logs-crowdstrike.falcon@custom
|
||||||
index_patterns:
|
|
||||||
- logs-crowdstrike.falcon-*
|
|
||||||
priority: 501
|
|
||||||
template:
|
|
||||||
settings:
|
|
||||||
index:
|
|
||||||
lifecycle:
|
|
||||||
name: so-logs-crowdstrike.falcon-logs
|
|
||||||
number_of_replicas: 0
|
|
||||||
policy:
|
policy:
|
||||||
phases:
|
phases:
|
||||||
cold:
|
cold:
|
||||||
@@ -3471,27 +3758,69 @@ elasticsearch:
|
|||||||
priority: 50
|
priority: 50
|
||||||
min_age: 30d
|
min_age: 30d
|
||||||
so-logs-crowdstrike_x_fdr:
|
so-logs-crowdstrike_x_fdr:
|
||||||
index_sorting: false
|
index_sorting: False
|
||||||
index_template:
|
index_template:
|
||||||
|
index_patterns:
|
||||||
|
- logs-crowdstrike.fdr-*
|
||||||
|
template:
|
||||||
|
settings:
|
||||||
|
index:
|
||||||
|
number_of_replicas: 0
|
||||||
composed_of:
|
composed_of:
|
||||||
- logs-crowdstrike.fdr@package
|
- logs-crowdstrike.fdr@package
|
||||||
- logs-crowdstrike.fdr@custom
|
- logs-crowdstrike.fdr@custom
|
||||||
- so-fleet_globals-1
|
- so-fleet_globals-1
|
||||||
- so-fleet_agent_id_verification-1
|
- so-fleet_agent_id_verification-1
|
||||||
|
priority: 501
|
||||||
data_stream:
|
data_stream:
|
||||||
allow_custom_routing: false
|
|
||||||
hidden: false
|
hidden: false
|
||||||
|
allow_custom_routing: false
|
||||||
ignore_missing_component_templates:
|
ignore_missing_component_templates:
|
||||||
- logs-crowdstrike.fdr@custom
|
- logs-crowdstrike.fdr@custom
|
||||||
|
policy:
|
||||||
|
phases:
|
||||||
|
cold:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 0
|
||||||
|
min_age: 60d
|
||||||
|
delete:
|
||||||
|
actions:
|
||||||
|
delete: {}
|
||||||
|
min_age: 365d
|
||||||
|
hot:
|
||||||
|
actions:
|
||||||
|
rollover:
|
||||||
|
max_age: 30d
|
||||||
|
max_primary_shard_size: 50gb
|
||||||
|
set_priority:
|
||||||
|
priority: 100
|
||||||
|
min_age: 0ms
|
||||||
|
warm:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 50
|
||||||
|
min_age: 30d
|
||||||
|
so-logs-crowdstrike_x_host:
|
||||||
|
index_sorting: False
|
||||||
|
index_template:
|
||||||
index_patterns:
|
index_patterns:
|
||||||
- logs-crowdstrike.fdr-*
|
- logs-crowdstrike.host-*
|
||||||
priority: 501
|
|
||||||
template:
|
template:
|
||||||
settings:
|
settings:
|
||||||
index:
|
index:
|
||||||
lifecycle:
|
|
||||||
name: so-logs-crowdstrike.fdr-logs
|
|
||||||
number_of_replicas: 0
|
number_of_replicas: 0
|
||||||
|
composed_of:
|
||||||
|
- logs-crowdstrike.host@package
|
||||||
|
- logs-crowdstrike.host@custom
|
||||||
|
- so-fleet_globals-1
|
||||||
|
- so-fleet_agent_id_verification-1
|
||||||
|
priority: 501
|
||||||
|
data_stream:
|
||||||
|
hidden: false
|
||||||
|
allow_custom_routing: false
|
||||||
|
ignore_missing_component_templates:
|
||||||
|
- logs-crowdstrike.host@custom
|
||||||
policy:
|
policy:
|
||||||
phases:
|
phases:
|
||||||
cold:
|
cold:
|
||||||
@@ -6556,6 +6885,52 @@ elasticsearch:
|
|||||||
set_priority:
|
set_priority:
|
||||||
priority: 50
|
priority: 50
|
||||||
min_age: 30d
|
min_age: 30d
|
||||||
|
so-logs-imperva_cloud_waf_x_event:
|
||||||
|
index_sorting: False
|
||||||
|
index_template:
|
||||||
|
ignore_missing_component_templates:
|
||||||
|
- logs-imperva_cloud_waf.event@custom
|
||||||
|
index_patterns:
|
||||||
|
- "logs-imperva_cloud_waf.event-*"
|
||||||
|
template:
|
||||||
|
settings:
|
||||||
|
index:
|
||||||
|
lifecycle:
|
||||||
|
name: so-logs-imperva_cloud_waf.event-logs
|
||||||
|
number_of_replicas: 0
|
||||||
|
composed_of:
|
||||||
|
- "logs-imperva_cloud_waf.event@package"
|
||||||
|
- "logs-imperva_cloud_waf.event@custom"
|
||||||
|
- "so-fleet_globals-1"
|
||||||
|
- "so-fleet_agent_id_verification-1"
|
||||||
|
priority: 501
|
||||||
|
data_stream:
|
||||||
|
hidden: false
|
||||||
|
allow_custom_routing: false
|
||||||
|
policy:
|
||||||
|
phases:
|
||||||
|
cold:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 0
|
||||||
|
min_age: 30d
|
||||||
|
delete:
|
||||||
|
actions:
|
||||||
|
delete: {}
|
||||||
|
min_age: 365d
|
||||||
|
hot:
|
||||||
|
actions:
|
||||||
|
rollover:
|
||||||
|
max_age: 30d
|
||||||
|
max_primary_shard_size: 50gb
|
||||||
|
set_priority:
|
||||||
|
priority: 100
|
||||||
|
min_age: 0ms
|
||||||
|
warm:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 50
|
||||||
|
min_age: 30d
|
||||||
so-logs-juniper_srx_x_log:
|
so-logs-juniper_srx_x_log:
|
||||||
index_sorting: false
|
index_sorting: false
|
||||||
index_template:
|
index_template:
|
||||||
@@ -10068,6 +10443,138 @@ elasticsearch:
|
|||||||
set_priority:
|
set_priority:
|
||||||
priority: 50
|
priority: 50
|
||||||
min_age: 30d
|
min_age: 30d
|
||||||
|
so-logs-ti_rapid7_threat_command_x_alert:
|
||||||
|
index_sorting: false
|
||||||
|
index_template:
|
||||||
|
composed_of:
|
||||||
|
- logs-ti_rapid7_threat_command.alert@package
|
||||||
|
- logs-ti_rapid7_threat_command.alert@custom
|
||||||
|
- so-fleet_globals-1
|
||||||
|
- so-fleet_agent_id_verification-1
|
||||||
|
data_stream:
|
||||||
|
hidden: false
|
||||||
|
allow_custom_routing: false
|
||||||
|
ignore_missing_component_templates:
|
||||||
|
- logs-ti_rapid7_threat_command.alert@custom
|
||||||
|
index_patterns:
|
||||||
|
- logs-ti_rapid7_threat_command.alert-*
|
||||||
|
priority: 501
|
||||||
|
template:
|
||||||
|
settings:
|
||||||
|
index:
|
||||||
|
number_of_replicas: 0
|
||||||
|
policy:
|
||||||
|
phases:
|
||||||
|
cold:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 0
|
||||||
|
min_age: 60d
|
||||||
|
delete:
|
||||||
|
actions:
|
||||||
|
delete: {}
|
||||||
|
min_age: 365d
|
||||||
|
hot:
|
||||||
|
actions:
|
||||||
|
rollover:
|
||||||
|
max_age: 30d
|
||||||
|
max_primary_shard_size: 50gb
|
||||||
|
set_priority:
|
||||||
|
priority: 100
|
||||||
|
min_age: 0ms
|
||||||
|
warm:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 50
|
||||||
|
min_age: 30d
|
||||||
|
so-logs-ti_rapid7_threat_command_x_ioc:
|
||||||
|
index_sorting: false
|
||||||
|
index_template:
|
||||||
|
composed_of:
|
||||||
|
- logs-ti_rapid7_threat_command.ioc@package
|
||||||
|
- logs-ti_rapid7_threat_command.ioc@custom
|
||||||
|
- so-fleet_globals-1
|
||||||
|
- so-fleet_agent_id_verification-1
|
||||||
|
data_stream:
|
||||||
|
hidden: false
|
||||||
|
allow_custom_routing: false
|
||||||
|
ignore_missing_component_templates:
|
||||||
|
- logs-ti_rapid7_threat_command.ioc@custom
|
||||||
|
index_patterns:
|
||||||
|
- logs-ti_rapid7_threat_command.ioc-*
|
||||||
|
priority: 501
|
||||||
|
template:
|
||||||
|
settings:
|
||||||
|
index:
|
||||||
|
number_of_replicas: 0
|
||||||
|
policy:
|
||||||
|
phases:
|
||||||
|
cold:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 0
|
||||||
|
min_age: 60d
|
||||||
|
delete:
|
||||||
|
actions:
|
||||||
|
delete: {}
|
||||||
|
min_age: 365d
|
||||||
|
hot:
|
||||||
|
actions:
|
||||||
|
rollover:
|
||||||
|
max_age: 30d
|
||||||
|
max_primary_shard_size: 50gb
|
||||||
|
set_priority:
|
||||||
|
priority: 100
|
||||||
|
min_age: 0ms
|
||||||
|
warm:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 50
|
||||||
|
min_age: 30d
|
||||||
|
so-logs-ti_rapid7_threat_command_x_vulnerability:
|
||||||
|
index_sorting: false
|
||||||
|
index_template:
|
||||||
|
composed_of:
|
||||||
|
- logs-ti_rapid7_threat_command.vulnerability@package
|
||||||
|
- logs-ti_rapid7_threat_command.vulnerability@custom
|
||||||
|
- so-fleet_globals-1
|
||||||
|
- so-fleet_agent_id_verification-1
|
||||||
|
data_stream:
|
||||||
|
hidden: false
|
||||||
|
allow_custom_routing: false
|
||||||
|
ignore_missing_component_templates:
|
||||||
|
- logs-ti_rapid7_threat_command.vulnerability@custom
|
||||||
|
index_patterns:
|
||||||
|
- logs-ti_rapid7_threat_command.vulnerability-*
|
||||||
|
priority: 501
|
||||||
|
template:
|
||||||
|
settings:
|
||||||
|
index:
|
||||||
|
number_of_replicas: 0
|
||||||
|
policy:
|
||||||
|
phases:
|
||||||
|
cold:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 0
|
||||||
|
min_age: 60d
|
||||||
|
delete:
|
||||||
|
actions:
|
||||||
|
delete: {}
|
||||||
|
min_age: 365d
|
||||||
|
hot:
|
||||||
|
actions:
|
||||||
|
rollover:
|
||||||
|
max_age: 30d
|
||||||
|
max_primary_shard_size: 50gb
|
||||||
|
set_priority:
|
||||||
|
priority: 100
|
||||||
|
min_age: 0ms
|
||||||
|
warm:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 50
|
||||||
|
min_age: 30d
|
||||||
so-logs-ti_recordedfuture_x_latest_ioc-template:
|
so-logs-ti_recordedfuture_x_latest_ioc-template:
|
||||||
index_sorting: false
|
index_sorting: false
|
||||||
index_template:
|
index_template:
|
||||||
@@ -10206,6 +10713,182 @@ elasticsearch:
|
|||||||
set_priority:
|
set_priority:
|
||||||
priority: 50
|
priority: 50
|
||||||
min_age: 30d
|
min_age: 30d
|
||||||
|
so-logs-trend_micro_vision_one_x_alert:
|
||||||
|
index_sorting: False
|
||||||
|
index_template:
|
||||||
|
index_patterns:
|
||||||
|
- "logs-trend_micro_vision_one.alert-*"
|
||||||
|
template:
|
||||||
|
settings:
|
||||||
|
index:
|
||||||
|
number_of_replicas: 0
|
||||||
|
composed_of:
|
||||||
|
- "logs-trend_micro_vision_one.alert@package"
|
||||||
|
- "logs-trend_micro_vision_one.alert@custom"
|
||||||
|
- "so-fleet_globals-1"
|
||||||
|
- "so-fleet_agent_id_verification-1"
|
||||||
|
ignore_missing_component_templates:
|
||||||
|
- "logs-trend_micro_vision_one.alert@custom"
|
||||||
|
priority: 501
|
||||||
|
data_stream:
|
||||||
|
hidden: false
|
||||||
|
allow_custom_routing: false
|
||||||
|
policy:
|
||||||
|
phases:
|
||||||
|
cold:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 0
|
||||||
|
min_age: 60d
|
||||||
|
delete:
|
||||||
|
actions:
|
||||||
|
delete: {}
|
||||||
|
min_age: 365d
|
||||||
|
hot:
|
||||||
|
actions:
|
||||||
|
rollover:
|
||||||
|
max_age: 30d
|
||||||
|
max_primary_shard_size: 50gb
|
||||||
|
set_priority:
|
||||||
|
priority: 100
|
||||||
|
min_age: 0ms
|
||||||
|
warm:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 50
|
||||||
|
min_age: 30d
|
||||||
|
so-logs-trend_micro_vision_one_x_audit:
|
||||||
|
index_sorting: False
|
||||||
|
index_template:
|
||||||
|
index_patterns:
|
||||||
|
- "logs-trend_micro_vision_one.audit-*"
|
||||||
|
template:
|
||||||
|
settings:
|
||||||
|
index:
|
||||||
|
number_of_replicas: 0
|
||||||
|
ignore_missing_component_templates:
|
||||||
|
- "logs-trend_micro_vision_one.audit@custom"
|
||||||
|
composed_of:
|
||||||
|
- "logs-trend_micro_vision_one.audit@package"
|
||||||
|
- "logs-trend_micro_vision_one.audit@custom"
|
||||||
|
- "so-fleet_globals-1"
|
||||||
|
- "so-fleet_agent_id_verification-1"
|
||||||
|
priority: 501
|
||||||
|
data_stream:
|
||||||
|
hidden: false
|
||||||
|
allow_custom_routing: false
|
||||||
|
policy:
|
||||||
|
phases:
|
||||||
|
cold:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 0
|
||||||
|
min_age: 60d
|
||||||
|
delete:
|
||||||
|
actions:
|
||||||
|
delete: {}
|
||||||
|
min_age: 365d
|
||||||
|
hot:
|
||||||
|
actions:
|
||||||
|
rollover:
|
||||||
|
max_age: 30d
|
||||||
|
max_primary_shard_size: 50gb
|
||||||
|
set_priority:
|
||||||
|
priority: 100
|
||||||
|
min_age: 0ms
|
||||||
|
warm:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 50
|
||||||
|
min_age: 30d
|
||||||
|
so-logs-trend_micro_vision_one_x_detection:
|
||||||
|
index_sorting: False
|
||||||
|
index_template:
|
||||||
|
index_patterns:
|
||||||
|
- "logs-trend_micro_vision_one.detection-*"
|
||||||
|
template:
|
||||||
|
settings:
|
||||||
|
index:
|
||||||
|
number_of_replicas: 0
|
||||||
|
ignore_missing_component_templates:
|
||||||
|
- "logs-trend_micro_vision_one.detection@custom"
|
||||||
|
composed_of:
|
||||||
|
- "logs-trend_micro_vision_one.detection@package"
|
||||||
|
- "logs-trend_micro_vision_one.detection@custom"
|
||||||
|
- "so-fleet_globals-1"
|
||||||
|
- "so-fleet_agent_id_verification-1"
|
||||||
|
priority: 501
|
||||||
|
data_stream:
|
||||||
|
hidden: false
|
||||||
|
allow_custom_routing: false
|
||||||
|
policy:
|
||||||
|
phases:
|
||||||
|
cold:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 0
|
||||||
|
min_age: 60d
|
||||||
|
delete:
|
||||||
|
actions:
|
||||||
|
delete: {}
|
||||||
|
min_age: 365d
|
||||||
|
hot:
|
||||||
|
actions:
|
||||||
|
rollover:
|
||||||
|
max_age: 30d
|
||||||
|
max_primary_shard_size: 50gb
|
||||||
|
set_priority:
|
||||||
|
priority: 100
|
||||||
|
min_age: 0ms
|
||||||
|
warm:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 50
|
||||||
|
min_age: 30d
|
||||||
|
so-logs-trendmicro_x_deep_security:
|
||||||
|
index_sorting: False
|
||||||
|
index_template:
|
||||||
|
index_patterns:
|
||||||
|
- "logs-trendmicro.deep_security-*"
|
||||||
|
template:
|
||||||
|
settings:
|
||||||
|
index:
|
||||||
|
number_of_replicas: 0
|
||||||
|
ignore_missing_component_templates:
|
||||||
|
- "logs-trendmicro.deep_security@custom"
|
||||||
|
composed_of:
|
||||||
|
- "logs-trendmicro.deep_security@package"
|
||||||
|
- "logs-trendmicro.deep_security@custom"
|
||||||
|
- "so-fleet_globals-1"
|
||||||
|
- "so-fleet_agent_id_verification-1"
|
||||||
|
priority: 501
|
||||||
|
data_stream:
|
||||||
|
hidden: false
|
||||||
|
allow_custom_routing: false
|
||||||
|
policy:
|
||||||
|
phases:
|
||||||
|
cold:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 0
|
||||||
|
min_age: 60d
|
||||||
|
delete:
|
||||||
|
actions:
|
||||||
|
delete: {}
|
||||||
|
min_age: 365d
|
||||||
|
hot:
|
||||||
|
actions:
|
||||||
|
rollover:
|
||||||
|
max_age: 30d
|
||||||
|
max_primary_shard_size: 50gb
|
||||||
|
set_priority:
|
||||||
|
priority: 100
|
||||||
|
min_age: 0ms
|
||||||
|
warm:
|
||||||
|
actions:
|
||||||
|
set_priority:
|
||||||
|
priority: 50
|
||||||
|
min_age: 30d
|
||||||
so-logs-vsphere_x_log:
|
so-logs-vsphere_x_log:
|
||||||
index_sorting: false
|
index_sorting: false
|
||||||
index_template:
|
index_template:
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"description" : "hydra",
|
||||||
|
"processors" : [
|
||||||
|
{"set":{"field":"audience","value":"access","override":false,"ignore_failure":true}},
|
||||||
|
{"set":{"field":"event.dataset","ignore_empty_value":true,"ignore_failure":true,"value":"hydra.{{{audience}}}","media_type":"text/plain"}},
|
||||||
|
{"set":{"field":"event.action","ignore_failure":true,"copy_from":"msg" }},
|
||||||
|
{ "pipeline": { "name": "common" } }
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"description": "Pipeline for pfSense",
|
"description": "Pipeline for PFsense",
|
||||||
"processors": [
|
"processors": [
|
||||||
{
|
{
|
||||||
"set": {
|
"set": {
|
||||||
|
|||||||
@@ -1,9 +1,14 @@
|
|||||||
{
|
{
|
||||||
"description": "Pipeline for parsing pfSense Suricata logs.",
|
"description": "Pipeline for parsing pfSense Suricata logs.",
|
||||||
"processors": [
|
"processors": [
|
||||||
|
{ "set": {
|
||||||
|
"field": "event.module",
|
||||||
|
"value": "suricata"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"pipeline": {
|
"pipeline": {
|
||||||
"name": "suricata.common"
|
"name": "suricata.common_pfsense"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -0,0 +1,414 @@
|
|||||||
|
{
|
||||||
|
"description": "Pipeline for PFsense",
|
||||||
|
"processors": [
|
||||||
|
{
|
||||||
|
"set": {
|
||||||
|
"field": "ecs.version",
|
||||||
|
"value": "8.11.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"set": {
|
||||||
|
"field": "observer.vendor",
|
||||||
|
"value": "netgate"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"set": {
|
||||||
|
"field": "observer.type",
|
||||||
|
"value": "firewall"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rename": {
|
||||||
|
"field": "message",
|
||||||
|
"target_field": "event.original",
|
||||||
|
"ignore_missing": true,
|
||||||
|
"if": "ctx.event?.original == null"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"set": {
|
||||||
|
"field": "event.kind",
|
||||||
|
"value": "event"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"set": {
|
||||||
|
"field": "event.timezone",
|
||||||
|
"value": "{{_tmp.tz_offset}}",
|
||||||
|
"if": "ctx._tmp?.tz_offset != null && ctx._tmp?.tz_offset != 'local'"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"grok": {
|
||||||
|
"description": "Parse syslog header",
|
||||||
|
"field": "event.original",
|
||||||
|
"patterns": [
|
||||||
|
"^(%{ECS_SYSLOG_PRI})?%{TIMESTAMP} %{GREEDYDATA:message}"
|
||||||
|
],
|
||||||
|
"pattern_definitions": {
|
||||||
|
"ECS_SYSLOG_PRI": "<%{NONNEGINT:log.syslog.priority:long}>(\\d )?",
|
||||||
|
"TIMESTAMP": "(?:%{BSD_TIMESTAMP_FORMAT}|%{SYSLOG_TIMESTAMP_FORMAT})",
|
||||||
|
"BSD_TIMESTAMP_FORMAT": "%{SYSLOGTIMESTAMP:_tmp.timestamp}(%{SPACE}%{BSD_PROCNAME}|%{SPACE}%{OBSERVER}%{SPACE}%{BSD_PROCNAME})(\\[%{POSINT:process.pid:long}\\])?:",
|
||||||
|
"BSD_PROCNAME": "(?:\\b%{NAME:process.name}|\\(%{NAME:process.name}\\))",
|
||||||
|
"NAME": "[[[:alnum:]]_-]+",
|
||||||
|
"SYSLOG_TIMESTAMP_FORMAT": "%{TIMESTAMP_ISO8601:_tmp.timestamp8601}%{SPACE}%{OBSERVER}%{SPACE}%{PROCESS}%{SPACE}(%{POSINT:process.pid:long}|-) - (-|%{META})",
|
||||||
|
"TIMESTAMP_ISO8601": "%{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE:event.timezone}?",
|
||||||
|
"OBSERVER": "(?:%{IP:observer.ip}|%{HOSTNAME:observer.name})",
|
||||||
|
"UNIXPATH": "(/([\\w_%!$@:.,+~-]+|\\\\.)*)*",
|
||||||
|
"PROCESS": "(\\(%{DATA:process.name}\\)|(?:%{UNIXPATH})%{BASEPATH:process.name})",
|
||||||
|
"BASEPATH": "[[[:alnum:]]_%!$@:.,+~-]+",
|
||||||
|
"META": "\\[[^\\]]*\\]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"date": {
|
||||||
|
"if": "ctx._tmp.timestamp8601 != null",
|
||||||
|
"field": "_tmp.timestamp8601",
|
||||||
|
"target_field": "@timestamp",
|
||||||
|
"formats": [
|
||||||
|
"ISO8601"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"date": {
|
||||||
|
"if": "ctx.event?.timezone != null && ctx._tmp?.timestamp != null",
|
||||||
|
"field": "_tmp.timestamp",
|
||||||
|
"target_field": "@timestamp",
|
||||||
|
"formats": [
|
||||||
|
"MMM d HH:mm:ss",
|
||||||
|
"MMM d HH:mm:ss",
|
||||||
|
"MMM dd HH:mm:ss"
|
||||||
|
],
|
||||||
|
"timezone": "{{ event.timezone }}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"grok": {
|
||||||
|
"description": "Set Event Provider",
|
||||||
|
"field": "process.name",
|
||||||
|
"patterns": [
|
||||||
|
"^%{HYPHENATED_WORDS:event.provider}"
|
||||||
|
],
|
||||||
|
"pattern_definitions": {
|
||||||
|
"HYPHENATED_WORDS": "\\b[A-Za-z0-9_]+(-[A-Za-z_]+)*\\b"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pipeline": {
|
||||||
|
"name": "logs-pfsense.log-1.19.1-firewall",
|
||||||
|
"if": "ctx.event.provider == 'filterlog'"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pipeline": {
|
||||||
|
"name": "logs-pfsense.log-1.19.1-openvpn",
|
||||||
|
"if": "ctx.event.provider == 'openvpn'"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pipeline": {
|
||||||
|
"name": "logs-pfsense.log-1.19.1-ipsec",
|
||||||
|
"if": "ctx.event.provider == 'charon'"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pipeline": {
|
||||||
|
"name": "logs-pfsense.log-1.19.1-dhcp",
|
||||||
|
"if": "[\"dhcpd\", \"dhclient\", \"dhcp6c\"].contains(ctx.event.provider)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pipeline": {
|
||||||
|
"name": "logs-pfsense.log-1.19.1-unbound",
|
||||||
|
"if": "ctx.event.provider == 'unbound'"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pipeline": {
|
||||||
|
"name": "logs-pfsense.log-1.19.1-haproxy",
|
||||||
|
"if": "ctx.event.provider == 'haproxy'"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pipeline": {
|
||||||
|
"name": "logs-pfsense.log-1.19.1-php-fpm",
|
||||||
|
"if": "ctx.event.provider == 'php-fpm'"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pipeline": {
|
||||||
|
"name": "logs-pfsense.log-1.19.1-squid",
|
||||||
|
"if": "ctx.event.provider == 'squid'"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pipeline": {
|
||||||
|
"name": "logs-pfsense.log-1.16.0-suricata",
|
||||||
|
"if": "ctx.event.provider == 'suricata'"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"drop": {
|
||||||
|
"if": "![\"filterlog\", \"openvpn\", \"charon\", \"dhcpd\", \"dhclient\", \"dhcp6c\", \"unbound\", \"haproxy\", \"php-fpm\", \"squid\", \"suricata\"].contains(ctx.event?.provider)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"append": {
|
||||||
|
"field": "event.category",
|
||||||
|
"value": "network",
|
||||||
|
"if": "ctx.network != null"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"convert": {
|
||||||
|
"field": "source.address",
|
||||||
|
"target_field": "source.ip",
|
||||||
|
"type": "ip",
|
||||||
|
"ignore_failure": true,
|
||||||
|
"ignore_missing": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"convert": {
|
||||||
|
"field": "destination.address",
|
||||||
|
"target_field": "destination.ip",
|
||||||
|
"type": "ip",
|
||||||
|
"ignore_failure": true,
|
||||||
|
"ignore_missing": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"set": {
|
||||||
|
"field": "network.type",
|
||||||
|
"value": "ipv6",
|
||||||
|
"if": "ctx.source?.ip != null && ctx.source.ip.contains(\":\")"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"set": {
|
||||||
|
"field": "network.type",
|
||||||
|
"value": "ipv4",
|
||||||
|
"if": "ctx.source?.ip != null && ctx.source.ip.contains(\".\")"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"geoip": {
|
||||||
|
"field": "source.ip",
|
||||||
|
"target_field": "source.geo",
|
||||||
|
"ignore_missing": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"geoip": {
|
||||||
|
"field": "destination.ip",
|
||||||
|
"target_field": "destination.geo",
|
||||||
|
"ignore_missing": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"geoip": {
|
||||||
|
"ignore_missing": true,
|
||||||
|
"database_file": "GeoLite2-ASN.mmdb",
|
||||||
|
"field": "source.ip",
|
||||||
|
"target_field": "source.as",
|
||||||
|
"properties": [
|
||||||
|
"asn",
|
||||||
|
"organization_name"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"geoip": {
|
||||||
|
"database_file": "GeoLite2-ASN.mmdb",
|
||||||
|
"field": "destination.ip",
|
||||||
|
"target_field": "destination.as",
|
||||||
|
"properties": [
|
||||||
|
"asn",
|
||||||
|
"organization_name"
|
||||||
|
],
|
||||||
|
"ignore_missing": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rename": {
|
||||||
|
"field": "source.as.asn",
|
||||||
|
"target_field": "source.as.number",
|
||||||
|
"ignore_missing": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rename": {
|
||||||
|
"field": "source.as.organization_name",
|
||||||
|
"target_field": "source.as.organization.name",
|
||||||
|
"ignore_missing": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rename": {
|
||||||
|
"field": "destination.as.asn",
|
||||||
|
"target_field": "destination.as.number",
|
||||||
|
"ignore_missing": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rename": {
|
||||||
|
"field": "destination.as.organization_name",
|
||||||
|
"target_field": "destination.as.organization.name",
|
||||||
|
"ignore_missing": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"community_id": {
|
||||||
|
"target_field": "network.community_id",
|
||||||
|
"ignore_failure": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"grok": {
|
||||||
|
"field": "observer.ingress.interface.name",
|
||||||
|
"patterns": [
|
||||||
|
"%{DATA}.%{NONNEGINT:observer.ingress.vlan.id}"
|
||||||
|
],
|
||||||
|
"ignore_missing": true,
|
||||||
|
"ignore_failure": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"set": {
|
||||||
|
"field": "network.vlan.id",
|
||||||
|
"copy_from": "observer.ingress.vlan.id",
|
||||||
|
"ignore_empty_value": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"append": {
|
||||||
|
"field": "related.ip",
|
||||||
|
"value": "{{destination.ip}}",
|
||||||
|
"allow_duplicates": false,
|
||||||
|
"if": "ctx.destination?.ip != null"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"append": {
|
||||||
|
"field": "related.ip",
|
||||||
|
"value": "{{source.ip}}",
|
||||||
|
"allow_duplicates": false,
|
||||||
|
"if": "ctx.source?.ip != null"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"append": {
|
||||||
|
"field": "related.ip",
|
||||||
|
"value": "{{source.nat.ip}}",
|
||||||
|
"allow_duplicates": false,
|
||||||
|
"if": "ctx.source?.nat?.ip != null"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"append": {
|
||||||
|
"field": "related.hosts",
|
||||||
|
"value": "{{destination.domain}}",
|
||||||
|
"if": "ctx.destination?.domain != null"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"append": {
|
||||||
|
"field": "related.user",
|
||||||
|
"value": "{{user.name}}",
|
||||||
|
"if": "ctx.user?.name != null"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"set": {
|
||||||
|
"field": "network.direction",
|
||||||
|
"value": "{{network.direction}}bound",
|
||||||
|
"if": "ctx.network?.direction != null && ctx.network?.direction =~ /^(in|out)$/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"remove": {
|
||||||
|
"field": [
|
||||||
|
"_tmp"
|
||||||
|
],
|
||||||
|
"ignore_failure": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"script": {
|
||||||
|
"lang": "painless",
|
||||||
|
"description": "This script processor iterates over the whole document to remove fields with null values.",
|
||||||
|
"source": "void handleMap(Map map) {\n for (def x : map.values()) {\n if (x instanceof Map) {\n handleMap(x);\n } else if (x instanceof List) {\n handleList(x);\n }\n }\n map.values().removeIf(v -> v == null || (v instanceof String && v == \"-\"));\n}\nvoid handleList(List list) {\n for (def x : list) {\n if (x instanceof Map) {\n handleMap(x);\n } else if (x instanceof List) {\n handleList(x);\n }\n }\n}\nhandleMap(ctx);\n"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"remove": {
|
||||||
|
"field": "event.original",
|
||||||
|
"if": "ctx.tags == null || !(ctx.tags.contains('preserve_original_event'))",
|
||||||
|
"ignore_failure": true,
|
||||||
|
"ignore_missing": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pipeline": {
|
||||||
|
"name": "global@custom",
|
||||||
|
"ignore_missing_pipeline": true,
|
||||||
|
"description": "[Fleet] Global pipeline for all data streams"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pipeline": {
|
||||||
|
"name": "logs@custom",
|
||||||
|
"ignore_missing_pipeline": true,
|
||||||
|
"description": "[Fleet] Pipeline for all data streams of type `logs`"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pipeline": {
|
||||||
|
"name": "logs-pfsense.integration@custom",
|
||||||
|
"ignore_missing_pipeline": true,
|
||||||
|
"description": "[Fleet] Pipeline for all data streams of type `logs` defined by the `pfsense` integration"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pipeline": {
|
||||||
|
"name": "logs-pfsense.log@custom",
|
||||||
|
"ignore_missing_pipeline": true,
|
||||||
|
"description": "[Fleet] Pipeline for the `pfsense.log` dataset"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"on_failure": [
|
||||||
|
{
|
||||||
|
"remove": {
|
||||||
|
"field": [
|
||||||
|
"_tmp"
|
||||||
|
],
|
||||||
|
"ignore_failure": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"set": {
|
||||||
|
"field": "event.kind",
|
||||||
|
"value": "pipeline_error"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"append": {
|
||||||
|
"field": "error.message",
|
||||||
|
"value": "{{{ _ingest.on_failure_message }}}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_meta": {
|
||||||
|
"managed_by": "fleet",
|
||||||
|
"managed": true,
|
||||||
|
"package": {
|
||||||
|
"name": "pfsense"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"description" : "suricata.alert",
|
||||||
|
"processors" : [
|
||||||
|
{ "set": { "field": "data_stream.dataset", "value": "suricata" } },
|
||||||
|
{ "set": { "field": "data_stream.namespace", "value": "so" } },
|
||||||
|
{ "set": { "field": "_index", "value": "logs-suricata.alerts-so" } },
|
||||||
|
{ "set": { "field": "tags","value": "alert" }},
|
||||||
|
{ "rename":{ "field": "message2.alert", "target_field": "rule", "ignore_failure": true } },
|
||||||
|
{ "rename":{ "field": "rule.signature", "target_field": "rule.name", "ignore_failure": true } },
|
||||||
|
{ "rename":{ "field": "rule.ref", "target_field": "rule.version", "ignore_failure": true } },
|
||||||
|
{ "rename":{ "field": "rule.signature_id", "target_field": "rule.uuid", "ignore_failure": true } },
|
||||||
|
{ "rename":{ "field": "rule.signature_id", "target_field": "rule.signature", "ignore_failure": true } },
|
||||||
|
{ "rename":{ "field": "message2.payload_printable", "target_field": "network.data.decoded", "ignore_failure": true } },
|
||||||
|
{ "pipeline": { "name": "common.nids" } }
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"description" : "suricata.common",
|
||||||
|
"processors" : [
|
||||||
|
{ "json": { "field": "message", "target_field": "message2", "ignore_failure": true } },
|
||||||
|
{ "rename": { "field": "message2.pkt_src", "target_field": "network.packet_source","ignore_failure": true } },
|
||||||
|
{ "rename": { "field": "message2.proto", "target_field": "network.transport", "ignore_failure": true } },
|
||||||
|
{ "rename": { "field": "message2.in_iface", "target_field": "observer.ingress.interface.name", "ignore_failure": true } },
|
||||||
|
{ "rename": { "field": "message2.flow_id", "target_field": "log.id.uid", "ignore_failure": true } },
|
||||||
|
{ "rename": { "field": "message2.src_ip", "target_field": "source.ip", "ignore_failure": true } },
|
||||||
|
{ "rename": { "field": "message2.src_port", "target_field": "source.port", "ignore_failure": true } },
|
||||||
|
{ "rename": { "field": "message2.dest_ip", "target_field": "destination.ip", "ignore_failure": true } },
|
||||||
|
{ "rename": { "field": "message2.dest_port", "target_field": "destination.port", "ignore_failure": true } },
|
||||||
|
{ "rename": { "field": "message2.vlan", "target_field": "network.vlan.id", "ignore_failure": true } },
|
||||||
|
{ "rename": { "field": "message2.community_id", "target_field": "network.community_id", "ignore_missing": true } },
|
||||||
|
{ "rename": { "field": "message2.xff", "target_field": "xff.ip", "ignore_missing": true } },
|
||||||
|
{ "set": { "field": "event.dataset", "value": "{{ message2.event_type }}" } },
|
||||||
|
{ "set": { "field": "observer.name", "value": "{{agent.name}}" } },
|
||||||
|
{ "set": { "field": "event.ingested", "value": "{{@timestamp}}" } },
|
||||||
|
{ "date": { "field": "message2.timestamp", "target_field": "@timestamp", "formats": ["ISO8601", "UNIX"], "timezone": "UTC", "ignore_failure": true } },
|
||||||
|
{ "remove":{ "field": "agent", "ignore_failure": true } },
|
||||||
|
{ "pipeline": { "if": "ctx?.event?.dataset != null", "name": "suricata.{{event.dataset}}_pfsense" } }
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
"description" : "zeek.http2",
|
||||||
|
"processors" : [
|
||||||
|
{ "set": { "field": "event.dataset", "value": "http2" } },
|
||||||
|
{ "set": { "field": "network.transport", "value": "tcp" } },
|
||||||
|
{ "json": { "field": "message", "target_field": "message2", "ignore_failure": true } },
|
||||||
|
{ "rename": { "field": "message2.trans_depth", "target_field": "http.trans_depth", "ignore_missing": true } },
|
||||||
|
{ "rename": { "field": "message2.method", "target_field": "http.method", "ignore_missing": true } },
|
||||||
|
{ "rename": { "field": "message2.host", "target_field": "http.virtual_host", "ignore_missing": true } },
|
||||||
|
{ "rename": { "field": "message2.uri", "target_field": "http.uri", "ignore_missing": true } },
|
||||||
|
{ "rename": { "field": "message2.referrer", "target_field": "http.referrer", "ignore_missing": true } },
|
||||||
|
{ "rename": { "field": "message2.version", "target_field": "http.version", "ignore_missing": true } },
|
||||||
|
{ "rename": { "field": "message2.user_agent", "target_field": "http.useragent", "ignore_missing": true } },
|
||||||
|
{ "rename": { "field": "message2.request_body_len", "target_field": "http.request.body.length", "ignore_missing": true } },
|
||||||
|
{ "rename": { "field": "message2.response_body_len", "target_field": "http.response.body.length", "ignore_missing": true } },
|
||||||
|
{ "rename": { "field": "message2.status_code", "target_field": "http.status_code", "ignore_missing": true } },
|
||||||
|
{ "rename": { "field": "message2.status_msg", "target_field": "http.status_message", "ignore_missing": true } },
|
||||||
|
{ "rename": { "field": "message2.info_code", "target_field": "http.info_code", "ignore_missing": true } },
|
||||||
|
{ "rename": { "field": "message2.info_msg", "target_field": "http.info_message", "ignore_missing": true } },
|
||||||
|
{ "rename": { "field": "message2.username", "target_field": "http.user", "ignore_missing": true } },
|
||||||
|
{ "rename": { "field": "message2.password", "target_field": "http.password", "ignore_missing": true } },
|
||||||
|
{ "rename": { "field": "message2.proxied", "target_field": "http.proxied", "ignore_missing": true } },
|
||||||
|
{ "rename": { "field": "message2.orig_fuids", "target_field": "log.id.orig_fuids", "ignore_missing": true } },
|
||||||
|
{ "rename": { "field": "message2.orig_filenames", "target_field": "file.orig_filenames", "ignore_missing": true } },
|
||||||
|
{ "rename": { "field": "message2.orig_mime_types", "target_field": "file.orig_mime_types", "ignore_missing": true } },
|
||||||
|
{ "rename": { "field": "message2.resp_fuids", "target_field": "log.id.resp_fuids", "ignore_missing": true } },
|
||||||
|
{ "rename": { "field": "message2.resp_filenames", "target_field": "file.resp_filenames", "ignore_missing": true } },
|
||||||
|
{ "rename": { "field": "message2.resp_mime_types", "target_field": "file.resp_mime_types", "ignore_missing": true } },
|
||||||
|
{ "rename": { "field": "message2.stream_id", "target_field": "http2.stream_id", "ignore_missing": true } },
|
||||||
|
{ "remove": { "field": "message2.tags", "ignore_failure": true } },
|
||||||
|
{ "remove": { "field": ["host"], "ignore_failure": true } },
|
||||||
|
{ "script": { "lang": "painless", "source": "ctx.uri_length = ctx.uri.length()", "ignore_failure": true } },
|
||||||
|
{ "script": { "lang": "painless", "source": "ctx.useragent_length = ctx.useragent.length()", "ignore_failure": true } },
|
||||||
|
{ "script": { "lang": "painless", "source": "ctx.virtual_host_length = ctx.virtual_host.length()", "ignore_failure": true } },
|
||||||
|
{ "pipeline": { "name": "zeek.common" } }
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
elasticsearch:
|
elasticsearch:
|
||||||
enabled:
|
enabled:
|
||||||
description: You can enable or disable Elasticsearch.
|
description: Enables or disables the Elasticsearch process. This process provides the log event storage system. WARNING - Disabling this process is unsupported.
|
||||||
|
advanced: True
|
||||||
helpLink: elasticsearch.html
|
helpLink: elasticsearch.html
|
||||||
version:
|
version:
|
||||||
description: "This specifies the version of the following containers: so-elastic-fleet-package-registry, so-elastic-agent, so-elastic-fleet, so-kibana, so-logstash and so-elasticsearch. Modifying this value in the Elasticsearch defaults.yaml will result in catastrophic grid failure."
|
description: "This specifies the version of the following containers: so-elastic-fleet-package-registry, so-elastic-agent, so-elastic-fleet, so-kibana, so-logstash and so-elasticsearch. Modifying this value in the Elasticsearch defaults.yaml will result in catastrophic grid failure."
|
||||||
@@ -381,6 +382,7 @@ elasticsearch:
|
|||||||
so-logs-azure_x_signinlogs: *indexSettings
|
so-logs-azure_x_signinlogs: *indexSettings
|
||||||
so-logs-azure_x_springcloudlogs: *indexSettings
|
so-logs-azure_x_springcloudlogs: *indexSettings
|
||||||
so-logs-barracuda_x_waf: *indexSettings
|
so-logs-barracuda_x_waf: *indexSettings
|
||||||
|
so-logs-barracuda_cloudgen_firewall_x_log: *indexSettings
|
||||||
so-logs-cef_x_log: *indexSettings
|
so-logs-cef_x_log: *indexSettings
|
||||||
so-logs-cisco_asa_x_log: *indexSettings
|
so-logs-cisco_asa_x_log: *indexSettings
|
||||||
so-logs-cisco_ftd_x_log: *indexSettings
|
so-logs-cisco_ftd_x_log: *indexSettings
|
||||||
@@ -394,8 +396,10 @@ elasticsearch:
|
|||||||
so-logs-citrix_waf_x_log: *indexSettings
|
so-logs-citrix_waf_x_log: *indexSettings
|
||||||
so-logs-cloudflare_x_audit: *indexSettings
|
so-logs-cloudflare_x_audit: *indexSettings
|
||||||
so-logs-cloudflare_x_logpull: *indexSettings
|
so-logs-cloudflare_x_logpull: *indexSettings
|
||||||
|
so-logs-crowdstrike_x_alert: *indexSettings
|
||||||
so-logs-crowdstrike_x_falcon: *indexSettings
|
so-logs-crowdstrike_x_falcon: *indexSettings
|
||||||
so-logs-crowdstrike_x_fdr: *indexSettings
|
so-logs-crowdstrike_x_fdr: *indexSettings
|
||||||
|
so-logs-crowdstrike_x_host: *indexSettings
|
||||||
so-logs-darktrace_x_ai_analyst_alert: *indexSettings
|
so-logs-darktrace_x_ai_analyst_alert: *indexSettings
|
||||||
so-logs-darktrace_x_model_breach_alert: *indexSettings
|
so-logs-darktrace_x_model_breach_alert: *indexSettings
|
||||||
so-logs-darktrace_x_system_status_alert: *indexSettings
|
so-logs-darktrace_x_system_status_alert: *indexSettings
|
||||||
@@ -435,6 +439,7 @@ elasticsearch:
|
|||||||
so-logs-httpjson_x_generic: *indexSettings
|
so-logs-httpjson_x_generic: *indexSettings
|
||||||
so-logs-iis_x_access: *indexSettings
|
so-logs-iis_x_access: *indexSettings
|
||||||
so-logs-iis_x_error: *indexSettings
|
so-logs-iis_x_error: *indexSettings
|
||||||
|
so-logs-imperva_cloud_waf_x_event: *indexSettings
|
||||||
so-logs-juniper_x_junos: *indexSettings
|
so-logs-juniper_x_junos: *indexSettings
|
||||||
so-logs-juniper_x_netscreen: *indexSettings
|
so-logs-juniper_x_netscreen: *indexSettings
|
||||||
so-logs-juniper_x_srx: *indexSettings
|
so-logs-juniper_x_srx: *indexSettings
|
||||||
@@ -491,6 +496,10 @@ elasticsearch:
|
|||||||
so-logs-ti_recordedfuture_x_latest_ioc-template: *indexSettings
|
so-logs-ti_recordedfuture_x_latest_ioc-template: *indexSettings
|
||||||
so-logs-ti_recordedfuture_x_threat: *indexSettings
|
so-logs-ti_recordedfuture_x_threat: *indexSettings
|
||||||
so-logs-ti_threatq_x_threat: *indexSettings
|
so-logs-ti_threatq_x_threat: *indexSettings
|
||||||
|
so-logs-trend_micro_vision_one_x_alert: *indexSettings
|
||||||
|
so-logs-trend_micro_vision_one_x_audit: *indexSettings
|
||||||
|
so-logs-trend_micro_vision_one_x_detection: *indexSettings
|
||||||
|
so-logs-trendmicro_x_deep_security: *indexSettings
|
||||||
so-logs-zscaler_zia_x_alerts: *indexSettings
|
so-logs-zscaler_zia_x_alerts: *indexSettings
|
||||||
so-logs-zscaler_zia_x_dns: *indexSettings
|
so-logs-zscaler_zia_x_dns: *indexSettings
|
||||||
so-logs-zscaler_zia_x_firewall: *indexSettings
|
so-logs-zscaler_zia_x_firewall: *indexSettings
|
||||||
@@ -536,6 +545,7 @@ elasticsearch:
|
|||||||
so-suricata_x_alerts: *indexSettings
|
so-suricata_x_alerts: *indexSettings
|
||||||
so-import: *indexSettings
|
so-import: *indexSettings
|
||||||
so-kratos: *indexSettings
|
so-kratos: *indexSettings
|
||||||
|
so-hydra: *indexSettings
|
||||||
so-kismet: *indexSettings
|
so-kismet: *indexSettings
|
||||||
so-logstash: *indexSettings
|
so-logstash: *indexSettings
|
||||||
so-redis: *indexSettings
|
so-redis: *indexSettings
|
||||||
|
|||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"template": {
|
||||||
|
"mappings": {
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"properties":{
|
||||||
|
"ip": {
|
||||||
|
"type": "ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user