mirror of
https://github.com/Security-Onion-Solutions/securityonion.git
synced 2025-12-06 09:12:45 +01:00
Merge branch 'experimental' of https://github.com/Security-Onion-Solutions/securityonion into experimental
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'ca' in top_states %}
|
||||||
|
|
||||||
{% set manager = salt['grains.get']('master') %}
|
{% set manager = salt['grains.get']('master') %}
|
||||||
/etc/salt/minion.d/signing_policies.conf:
|
/etc/salt/minion.d/signing_policies.conf:
|
||||||
file.managed:
|
file.managed:
|
||||||
@@ -51,4 +56,12 @@ cakeyperms:
|
|||||||
- replace: False
|
- replace: False
|
||||||
- name: /etc/pki/ca.key
|
- name: /etc/pki/ca.key
|
||||||
- mode: 640
|
- mode: 640
|
||||||
- group: 939
|
- group: 939
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
ca_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: ca_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -1,3 +1,8 @@
|
|||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'common' in top_states %}
|
||||||
|
|
||||||
{% set role = grains.id.split('_') | last %}
|
{% set role = grains.id.split('_') | last %}
|
||||||
|
|
||||||
# Remove variables.txt from /tmp - This is temp
|
# Remove variables.txt from /tmp - This is temp
|
||||||
@@ -190,4 +195,12 @@ sensorrotateconf:
|
|||||||
# Make sure Docker is always running
|
# Make sure Docker is always running
|
||||||
docker:
|
docker:
|
||||||
service.running:
|
service.running:
|
||||||
- enable: True
|
- enable: True
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
common_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: common_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -5,6 +5,9 @@
|
|||||||
# to the list predefined by the role / minion id affix
|
# to the list predefined by the role / minion id affix
|
||||||
{% macro append_containers(pillar_name, k, compare )%}
|
{% macro append_containers(pillar_name, k, compare )%}
|
||||||
{% if salt['pillar.get'](pillar_name~':'~k, {}) != compare %}
|
{% if salt['pillar.get'](pillar_name~':'~k, {}) != compare %}
|
||||||
|
{% if k == 'enabled' %}
|
||||||
|
{% set k = pillar_name %}
|
||||||
|
{% endif %}
|
||||||
{% from 'common/maps/'~k~'.map.jinja' import docker as d with context %}
|
{% from 'common/maps/'~k~'.map.jinja' import docker as d with context %}
|
||||||
{% for li in d['containers'] %}
|
{% for li in d['containers'] %}
|
||||||
{{ docker['containers'].append(li) }}
|
{{ docker['containers'].append(li) }}
|
||||||
@@ -21,7 +24,7 @@
|
|||||||
{% if role in ['eval', 'managersearch', 'manager', 'standalone'] %}
|
{% if role in ['eval', 'managersearch', 'manager', 'standalone'] %}
|
||||||
{{ append_containers('manager', 'grafana', 0) }}
|
{{ append_containers('manager', 'grafana', 0) }}
|
||||||
{{ append_containers('global', 'fleet_manager', 0) }}
|
{{ append_containers('global', 'fleet_manager', 0) }}
|
||||||
{{ append_containers('manager', 'wazuh', 0) }}
|
{{ append_containers('global', 'wazuh', 0) }}
|
||||||
{{ append_containers('manager', 'thehive', 0) }}
|
{{ append_containers('manager', 'thehive', 0) }}
|
||||||
{{ append_containers('manager', 'playbook', 0) }}
|
{{ append_containers('manager', 'playbook', 0) }}
|
||||||
{{ append_containers('manager', 'freq', 0) }}
|
{{ append_containers('manager', 'freq', 0) }}
|
||||||
@@ -29,7 +32,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if role in ['eval', 'heavynode', 'sensor', 'standalone'] %}
|
{% if role in ['eval', 'heavynode', 'sensor', 'standalone'] %}
|
||||||
{{ append_containers('global', 'strelka', 0) }}
|
{{ append_containers('strelka', 'enabled', 0) }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if role in ['heavynode', 'standalone'] %}
|
{% if role in ['heavynode', 'standalone'] %}
|
||||||
|
|||||||
@@ -17,6 +17,28 @@
|
|||||||
. /usr/sbin/so-common
|
. /usr/sbin/so-common
|
||||||
local_salt_dir=/opt/so/saltstack/local
|
local_salt_dir=/opt/so/saltstack/local
|
||||||
|
|
||||||
|
cat << EOF
|
||||||
|
This program will switch from the open source version of the Elastic Stack to the Features version licensed under the Elastic license.
|
||||||
|
If you proceed, then we will download new Docker images and restart services.
|
||||||
|
|
||||||
|
Please review the Elastic license:
|
||||||
|
https://raw.githubusercontent.com/elastic/elasticsearch/master/licenses/ELASTIC-LICENSE.txt
|
||||||
|
|
||||||
|
Please also note that, if you have a distributed deployment and continue with this change, Elastic traffic between nodes will change from encrypted to cleartext!
|
||||||
|
(We expect to support Elastic Features Security at some point in the future.)
|
||||||
|
|
||||||
|
Do you agree to the terms of the Elastic license and understand the note about encryption?
|
||||||
|
|
||||||
|
If so, type AGREE to accept the Elastic license and continue. Otherwise, just press Enter to exit this program without making any changes.
|
||||||
|
EOF
|
||||||
|
|
||||||
|
read INPUT
|
||||||
|
if [ "$INPUT" != "AGREE" ]; then
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Please wait while switching to Elastic Features."
|
||||||
|
|
||||||
manager_check() {
|
manager_check() {
|
||||||
# Check to see if this is a manager
|
# Check to see if this is a manager
|
||||||
MANAGERCHECK=$(cat /etc/salt/grains | grep role | awk '{print $2}')
|
MANAGERCHECK=$(cat /etc/salt/grains | grep role | awk '{print $2}')
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
{%- from 'common/maps/so-status.map.jinja' import docker with context %}
|
{%- from 'common/maps/so-status.map.jinja' import docker with context %}
|
||||||
{%- set container_list = docker['containers'] | sort %}
|
{%- set container_list = docker['containers'] | sort | unique %}
|
||||||
|
|
||||||
if ! [ "$(id -u)" = 0 ]; then
|
if ! [ "$(id -u)" = 0 ]; then
|
||||||
echo "This command must be run as root"
|
echo "This command must be run as root"
|
||||||
@@ -71,9 +71,9 @@ compare_lists() {
|
|||||||
# {% endraw %}
|
# {% endraw %}
|
||||||
|
|
||||||
create_expected_container_list() {
|
create_expected_container_list() {
|
||||||
{% for item in container_list%}
|
{% for item in container_list -%}
|
||||||
expected_container_list+=("{{ item }}")
|
expected_container_list+=("{{ item }}")
|
||||||
{% endfor %}
|
{% endfor -%}
|
||||||
}
|
}
|
||||||
|
|
||||||
populate_container_lists() {
|
populate_container_lists() {
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'curator' in top_states %}
|
||||||
|
|
||||||
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
||||||
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
||||||
{% set MANAGER = salt['grains.get']('master') %}
|
{% set MANAGER = salt['grains.get']('master') %}
|
||||||
@@ -131,3 +136,11 @@ so-curator:
|
|||||||
|
|
||||||
# End Curator Cron Jobs
|
# End Curator Cron Jobs
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
curator_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: curator_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -1,3 +1,8 @@
|
|||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'docker' in top_states %}
|
||||||
|
|
||||||
installdocker:
|
installdocker:
|
||||||
pkg.installed:
|
pkg.installed:
|
||||||
- name: docker-ce
|
- name: docker-ce
|
||||||
@@ -5,4 +10,12 @@ installdocker:
|
|||||||
# Make sure Docker is running!
|
# Make sure Docker is running!
|
||||||
docker:
|
docker:
|
||||||
service.running:
|
service.running:
|
||||||
- enable: True
|
- enable: True
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
docker_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: docker_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -12,6 +12,10 @@
|
|||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'domainstats' in top_states %}
|
||||||
|
|
||||||
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
||||||
|
|
||||||
@@ -51,3 +55,11 @@ so-domainstats:
|
|||||||
- user: domainstats
|
- user: domainstats
|
||||||
- binds:
|
- binds:
|
||||||
- /opt/so/log/domainstats:/var/log/domain_stats
|
- /opt/so/log/domainstats:/var/log/domain_stats
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
domainstats_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: domainstats_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -12,6 +12,11 @@
|
|||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'elastalert' in top_states %}
|
||||||
|
|
||||||
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
||||||
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
||||||
{% set MANAGER = salt['grains.get']('master') %}
|
{% set MANAGER = salt['grains.get']('master') %}
|
||||||
@@ -125,3 +130,11 @@ so-elastalert:
|
|||||||
- require:
|
- require:
|
||||||
- module: wait_for_elasticsearch
|
- module: wait_for_elasticsearch
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
elastalert_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: elastalert_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"description" : "import.wel",
|
"description" : "import.wel",
|
||||||
"processors" : [
|
"processors" : [
|
||||||
{ "remove": { "field": ["event.created","timestamp", "winlog.event_data.UtcTime"], "ignore_failure": true } },
|
{ "remove": { "field": ["event.created","timestamp", "winlog.event_data.UtcTime", "event_record_id"], "ignore_failure": true } },
|
||||||
{ "pipeline": { "if": "ctx.winlog?.channel == 'Microsoft-Windows-Sysmon/Operational'", "name": "sysmon" } },
|
{ "pipeline": { "if": "ctx.winlog?.channel == 'Microsoft-Windows-Sysmon/Operational'", "name": "sysmon" } },
|
||||||
{ "pipeline": { "if": "ctx.winlog?.channel != 'Microsoft-Windows-Sysmon/Operational'", "name":"win.eventlogs" } },
|
{ "pipeline": { "if": "ctx.winlog?.channel != 'Microsoft-Windows-Sysmon/Operational'", "name":"win.eventlogs" } },
|
||||||
{ "pipeline": { "name": "common" } }
|
{ "pipeline": { "name": "common" } }
|
||||||
|
|||||||
@@ -4,7 +4,8 @@
|
|||||||
{ "set": { "if": "ctx.winlog?.channel != null", "field": "event.module", "value": "windows_eventlog", "override": false, "ignore_failure": true } },
|
{ "set": { "if": "ctx.winlog?.channel != null", "field": "event.module", "value": "windows_eventlog", "override": false, "ignore_failure": true } },
|
||||||
{ "set": { "if": "ctx.winlog?.channel != null", "field": "event.dataset", "value": "{{winlog.channel}}", "override": true } },
|
{ "set": { "if": "ctx.winlog?.channel != null", "field": "event.dataset", "value": "{{winlog.channel}}", "override": true } },
|
||||||
{ "set": { "if": "ctx.winlog?.computer_name != null", "field": "observer.name", "value": "{{winlog.computer_name}}", "override": true } },
|
{ "set": { "if": "ctx.winlog?.computer_name != null", "field": "observer.name", "value": "{{winlog.computer_name}}", "override": true } },
|
||||||
{ "set": { "field": "event.code", "value": "{{winlog.event_id}}", "override": true } },
|
{ "set": { "field": "event.code", "value": "{{winlog.event_id}}", "override": true } },
|
||||||
|
{ "set": { "field": "event.category", "value": "host", "override": true } },
|
||||||
{ "rename": { "field": "winlog.event_data.SubjectUserName", "target_field": "user.name", "ignore_missing": true } },
|
{ "rename": { "field": "winlog.event_data.SubjectUserName", "target_field": "user.name", "ignore_missing": true } },
|
||||||
{ "rename": { "field": "winlog.event_data.User", "target_field": "user.name", "ignore_missing": true } }
|
{ "rename": { "field": "winlog.event_data.User", "target_field": "user.name", "ignore_missing": true } }
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
"processors" : [
|
"processors" : [
|
||||||
{ "remove": { "field": ["host"], "ignore_failure": true } },
|
{ "remove": { "field": ["host"], "ignore_failure": true } },
|
||||||
{ "json": { "field": "message", "target_field": "message2", "ignore_failure": true } },
|
{ "json": { "field": "message", "target_field": "message2", "ignore_failure": true } },
|
||||||
|
{ "dot_expander": { "field": "seen.indicator", "path": "message2", "ignore_failure": true } },
|
||||||
{ "rename": { "field": "message2.seen.indicator", "target_field": "intel.indicator", "ignore_missing": true } },
|
{ "rename": { "field": "message2.seen.indicator", "target_field": "intel.indicator", "ignore_missing": true } },
|
||||||
{ "dot_expander": { "field": "seen.indicator_type", "path": "message2", "ignore_failure": true } },
|
{ "dot_expander": { "field": "seen.indicator_type", "path": "message2", "ignore_failure": true } },
|
||||||
{ "rename": { "field": "message2.seen.indicator_type", "target_field": "intel.indicator_type", "ignore_missing": true } },
|
{ "rename": { "field": "message2.seen.indicator_type", "target_field": "intel.indicator_type", "ignore_missing": true } },
|
||||||
|
|||||||
@@ -12,6 +12,11 @@
|
|||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'elasticsearch' in top_states %}
|
||||||
|
|
||||||
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
||||||
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
||||||
{% set MANAGER = salt['grains.get']('master') %}
|
{% set MANAGER = salt['grains.get']('master') %}
|
||||||
@@ -237,4 +242,12 @@ so-elasticsearch-templates:
|
|||||||
cmd.run:
|
cmd.run:
|
||||||
- name: /usr/sbin/so-elasticsearch-templates
|
- name: /usr/sbin/so-elasticsearch-templates
|
||||||
- cwd: /opt/so
|
- cwd: /opt/so
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
elasticsearch_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: elasticsearch_state_not_allowed
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -11,6 +11,11 @@
|
|||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'filebeat' in top_states %}
|
||||||
|
|
||||||
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
||||||
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
||||||
{% set MANAGER = salt['grains.get']('master') %}
|
{% set MANAGER = salt['grains.get']('master') %}
|
||||||
@@ -69,3 +74,11 @@ so-filebeat:
|
|||||||
- 0.0.0.0:514:514/udp
|
- 0.0.0.0:514:514/udp
|
||||||
- watch:
|
- watch:
|
||||||
- file: /opt/so/conf/filebeat/etc/filebeat.yml
|
- file: /opt/so/conf/filebeat/etc/filebeat.yml
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
filebeat_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: filebeat_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -1,3 +1,8 @@
|
|||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'firewall' in top_states %}
|
||||||
|
|
||||||
# Firewall Magic for the grid
|
# Firewall Magic for the grid
|
||||||
{% from 'firewall/map.jinja' import hostgroups with context %}
|
{% from 'firewall/map.jinja' import hostgroups with context %}
|
||||||
{% from 'firewall/map.jinja' import assigned_hostgroups with context %}
|
{% from 'firewall/map.jinja' import assigned_hostgroups with context %}
|
||||||
@@ -128,3 +133,11 @@ iptables_drop_all_the_things:
|
|||||||
- chain: LOGGING
|
- chain: LOGGING
|
||||||
- jump: DROP
|
- jump: DROP
|
||||||
- save: True
|
- save: True
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
firewall_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: firewall_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -132,4 +132,4 @@ so-fleet:
|
|||||||
- watch:
|
- watch:
|
||||||
- /opt/so/conf/fleet/etc
|
- /opt/so/conf/fleet/etc
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -12,6 +12,10 @@
|
|||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'freqserver' in top_states %}
|
||||||
|
|
||||||
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
||||||
|
|
||||||
@@ -52,3 +56,11 @@ so-freq:
|
|||||||
- binds:
|
- binds:
|
||||||
- /opt/so/log/freq_server:/var/log/freq_server:rw
|
- /opt/so/log/freq_server:/var/log/freq_server:rw
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
freqserver_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: freqserver_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'grafana' in top_states %}
|
||||||
|
|
||||||
{% set GRAFANA = salt['pillar.get']('manager:grafana', '0') %}
|
{% set GRAFANA = salt['pillar.get']('manager:grafana', '0') %}
|
||||||
{% set MANAGER = salt['grains.get']('master') %}
|
{% set MANAGER = salt['grains.get']('master') %}
|
||||||
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
||||||
@@ -230,4 +235,12 @@ so-grafana:
|
|||||||
- watch:
|
- watch:
|
||||||
- file: /opt/so/conf/grafana/*
|
- file: /opt/so/conf/grafana/*
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
grafana_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: grafana_state_not_allowed
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -1,3 +1,8 @@
|
|||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'healthcheck' in top_states %}
|
||||||
|
|
||||||
{% set CHECKS = salt['pillar.get']('healthcheck:checks', {}) %}
|
{% set CHECKS = salt['pillar.get']('healthcheck:checks', {}) %}
|
||||||
{% set ENABLED = salt['pillar.get']('healthcheck:enabled', False) %}
|
{% set ENABLED = salt['pillar.get']('healthcheck:enabled', False) %}
|
||||||
{% set SCHEDULE = salt['pillar.get']('healthcheck:schedule', 300) %}
|
{% set SCHEDULE = salt['pillar.get']('healthcheck:schedule', 300) %}
|
||||||
@@ -23,3 +28,11 @@ healthcheck_schedule_{{ STATUS[0] }}:
|
|||||||
healthcheck_schedule_{{ STATUS[1] }}:
|
healthcheck_schedule_{{ STATUS[1] }}:
|
||||||
schedule.{{ STATUS[1] }}:
|
schedule.{{ STATUS[1] }}:
|
||||||
- name: healthcheck
|
- name: healthcheck
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
healthcheck_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: healthcheck_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -12,6 +12,11 @@
|
|||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'idstools' in top_states %}
|
||||||
|
|
||||||
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
||||||
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
||||||
{% set MANAGER = salt['grains.get']('master') %}
|
{% set MANAGER = salt['grains.get']('master') %}
|
||||||
@@ -69,3 +74,11 @@ so-idstools:
|
|||||||
- /opt/so/rules/nids:/opt/so/rules/nids:rw
|
- /opt/so/rules/nids:/opt/so/rules/nids:rw
|
||||||
- watch:
|
- watch:
|
||||||
- file: idstoolsetcsync
|
- file: idstoolsetcsync
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
idstools_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: idstools_state_not_allowed
|
||||||
|
|
||||||
|
{% endif%}
|
||||||
@@ -1,3 +1,8 @@
|
|||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'influxdb' in top_states %}
|
||||||
|
|
||||||
{% set GRAFANA = salt['pillar.get']('manager:grafana', '0') %}
|
{% set GRAFANA = salt['pillar.get']('manager:grafana', '0') %}
|
||||||
{% set MANAGER = salt['grains.get']('master') %}
|
{% set MANAGER = salt['grains.get']('master') %}
|
||||||
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
||||||
@@ -40,4 +45,12 @@ so-influxdb:
|
|||||||
- watch:
|
- watch:
|
||||||
- file: influxdbconf
|
- file: influxdbconf
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
influxdb_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: influxdb_state_not_allowed
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -1,3 +1,8 @@
|
|||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'kibana' in top_states %}
|
||||||
|
|
||||||
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
||||||
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
||||||
{% set MANAGER = salt['grains.get']('master') %}
|
{% set MANAGER = salt['grains.get']('master') %}
|
||||||
@@ -114,4 +119,12 @@ so-kibana-config-load:
|
|||||||
# - shell: /bin/bash
|
# - shell: /bin/bash
|
||||||
# - runas: socore
|
# - runas: socore
|
||||||
# - source: salt://kibana/bin/keepkibanahappy.sh
|
# - source: salt://kibana/bin/keepkibanahappy.sh
|
||||||
# - template: jinja
|
# - template: jinja
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
kibana_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: kibana_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -12,6 +12,11 @@
|
|||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'logstash' in top_states %}
|
||||||
|
|
||||||
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
||||||
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
||||||
{% set MANAGER = salt['grains.get']('master') %}
|
{% set MANAGER = salt['grains.get']('master') %}
|
||||||
@@ -195,3 +200,11 @@ so-logstash:
|
|||||||
{% for TEMPLATE in TEMPLATES %}
|
{% for TEMPLATE in TEMPLATES %}
|
||||||
- file: es_template_{{TEMPLATE.split('.')[0] | replace("/","_") }}
|
- file: es_template_{{TEMPLATE.split('.')[0] | replace("/","_") }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
logstash_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: logstash_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -12,6 +12,11 @@
|
|||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'manager' in top_states %}
|
||||||
|
|
||||||
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
||||||
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
||||||
{% set MANAGER = salt['grains.get']('master') %}
|
{% set MANAGER = salt['grains.get']('master') %}
|
||||||
@@ -84,3 +89,10 @@ strelka_yara_update:
|
|||||||
- name: '/usr/sbin/so-yara-update > /dev/null 2>&1'
|
- name: '/usr/sbin/so-yara-update > /dev/null 2>&1'
|
||||||
- hour: '7'
|
- hour: '7'
|
||||||
- minute: '1'
|
- minute: '1'
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
manager_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: manager_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'minio' in top_states %}
|
||||||
|
|
||||||
{% set access_key = salt['pillar.get']('minio:access_key', '') %}
|
{% set access_key = salt['pillar.get']('minio:access_key', '') %}
|
||||||
{% set access_secret = salt['pillar.get']('minio:access_secret', '') %}
|
{% set access_secret = salt['pillar.get']('minio:access_secret', '') %}
|
||||||
@@ -56,4 +60,12 @@ so-minio:
|
|||||||
- /opt/so/conf/minio/etc:/.minio:rw
|
- /opt/so/conf/minio/etc:/.minio:rw
|
||||||
- /etc/pki/minio.key:/.minio/certs/private.key:ro
|
- /etc/pki/minio.key:/.minio/certs/private.key:ro
|
||||||
- /etc/pki/minio.crt:/.minio/certs/public.crt:ro
|
- /etc/pki/minio.crt:/.minio/certs/public.crt:ro
|
||||||
- entrypoint: "/usr/bin/docker-entrypoint.sh server --certs-dir /.minio/certs --address :9595 /data"
|
- entrypoint: "/usr/bin/docker-entrypoint.sh server --certs-dir /.minio/certs --address :9595 /data"
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
minio_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: minio_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -1,5 +1,18 @@
|
|||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'motd' in top_states %}
|
||||||
|
|
||||||
so_motd:
|
so_motd:
|
||||||
file.managed:
|
file.managed:
|
||||||
- name: /etc/motd
|
- name: /etc/motd
|
||||||
- source: salt://motd/files/so_motd.jinja
|
- source: salt://motd/files/so_motd.jinja
|
||||||
- template: jinja
|
- template: jinja
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
motd_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: motd_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -1,3 +1,8 @@
|
|||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'mysql' in top_states %}
|
||||||
|
|
||||||
{%- set MYSQLPASS = salt['pillar.get']('secrets:mysql', None) %}
|
{%- set MYSQLPASS = salt['pillar.get']('secrets:mysql', None) %}
|
||||||
{%- set MANAGERIP = salt['pillar.get']('global:managerip', '') %}
|
{%- set MANAGERIP = salt['pillar.get']('global:managerip', '') %}
|
||||||
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
||||||
@@ -93,3 +98,11 @@ so-mysql:
|
|||||||
- onchanges:
|
- onchanges:
|
||||||
- docker_container: so-mysql
|
- docker_container: so-mysql
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
mysql_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: mysql_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -1,3 +1,8 @@
|
|||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'nginx' in top_states %}
|
||||||
|
|
||||||
{% set FLEETMANAGER = salt['pillar.get']('global:fleet_manager', False) %}
|
{% set FLEETMANAGER = salt['pillar.get']('global:fleet_manager', False) %}
|
||||||
{% set FLEETNODE = salt['pillar.get']('global:fleet_node', False) %}
|
{% set FLEETNODE = salt['pillar.get']('global:fleet_node', False) %}
|
||||||
{% set MANAGER = salt['grains.get']('master') %}
|
{% set MANAGER = salt['grains.get']('master') %}
|
||||||
@@ -92,3 +97,11 @@ so-nginx:
|
|||||||
- watch:
|
- watch:
|
||||||
- file: nginxconf
|
- file: nginxconf
|
||||||
- file: nginxconfdir
|
- file: nginxconfdir
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
nginx_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: nginx_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -12,6 +12,10 @@
|
|||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'nodered' in top_states %}
|
||||||
|
|
||||||
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
||||||
|
|
||||||
@@ -75,3 +79,10 @@ so-nodered-flows:
|
|||||||
- name: /usr/sbin/so-nodered-load-flows
|
- name: /usr/sbin/so-nodered-load-flows
|
||||||
- cwd: /
|
- cwd: /
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
nodered_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: nodered_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -12,6 +12,11 @@
|
|||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'pcap' in top_states %}
|
||||||
|
|
||||||
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
||||||
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
||||||
{% set MANAGER = salt['grains.get']('master') %}
|
{% set MANAGER = salt['grains.get']('master') %}
|
||||||
@@ -160,3 +165,11 @@ so-sensoroni:
|
|||||||
- /opt/so/log/sensoroni:/opt/sensoroni/logs:rw
|
- /opt/so/log/sensoroni:/opt/sensoroni/logs:rw
|
||||||
- watch:
|
- watch:
|
||||||
- file: /opt/so/conf/sensoroni/sensoroni.json
|
- file: /opt/so/conf/sensoroni/sensoroni.json
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
pcap_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: pcap_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -1,3 +1,8 @@
|
|||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'playbook' in top_states %}
|
||||||
|
|
||||||
{% set MANAGERIP = salt['pillar.get']('manager:mainip', '') %}
|
{% set MANAGERIP = salt['pillar.get']('manager:mainip', '') %}
|
||||||
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
||||||
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
||||||
@@ -96,4 +101,12 @@ so-playbookruleupdatecron:
|
|||||||
- name: /usr/sbin/so-playbook-ruleupdate > /opt/so/log/playbook/update.log 2>&1
|
- name: /usr/sbin/so-playbook-ruleupdate > /opt/so/log/playbook/update.log 2>&1
|
||||||
- user: root
|
- user: root
|
||||||
- minute: '1'
|
- minute: '1'
|
||||||
- hour: '6'
|
- hour: '6'
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
playbook_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: playbook_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -12,6 +12,11 @@
|
|||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'redis' in top_states %}
|
||||||
|
|
||||||
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
||||||
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
||||||
{% set MANAGER = salt['grains.get']('master') %}
|
{% set MANAGER = salt['grains.get']('master') %}
|
||||||
@@ -64,3 +69,11 @@ so-redis:
|
|||||||
- entrypoint: "redis-server /usr/local/etc/redis/redis.conf"
|
- entrypoint: "redis-server /usr/local/etc/redis/redis.conf"
|
||||||
- watch:
|
- watch:
|
||||||
- file: /opt/so/conf/redis/etc
|
- file: /opt/so/conf/redis/etc
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
redis_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: redis_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -1,3 +1,8 @@
|
|||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'registry' in top_states %}
|
||||||
|
|
||||||
# Create the config directory for the docker registry
|
# Create the config directory for the docker registry
|
||||||
dockerregistryconfdir:
|
dockerregistryconfdir:
|
||||||
file.directory:
|
file.directory:
|
||||||
@@ -51,3 +56,11 @@ so-dockerregistry:
|
|||||||
- /nsm/docker-registry/docker:/var/lib/registry/docker:rw
|
- /nsm/docker-registry/docker:/var/lib/registry/docker:rw
|
||||||
- /etc/pki/registry.crt:/etc/pki/registry.crt:ro
|
- /etc/pki/registry.crt:/etc/pki/registry.crt:ro
|
||||||
- /etc/pki/registry.key:/etc/pki/registry.key:ro
|
- /etc/pki/registry.key:/etc/pki/registry.key:ro
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
registry_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: registry_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -1,3 +1,8 @@
|
|||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'salt.master' in top_states %}
|
||||||
|
|
||||||
include:
|
include:
|
||||||
- salt.minion
|
- salt.minion
|
||||||
|
|
||||||
@@ -26,4 +31,12 @@ engines_config:
|
|||||||
- name: /etc/salt/minion.d/engines.conf
|
- name: /etc/salt/minion.d/engines.conf
|
||||||
- source: salt://salt/files/engines.conf
|
- source: salt://salt/files/engines.conf
|
||||||
- watch_in:
|
- watch_in:
|
||||||
- service: salt_minion_service
|
- service: salt_minion_service
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
salt_master_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: salt_master_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -70,7 +70,7 @@
|
|||||||
"::x509": ["soc_timestamp", "x509.certificate.subject", "x509.certificate.key.type", "x509.certificate.key.length", "x509.certificate.issuer", "log.id.id" ],
|
"::x509": ["soc_timestamp", "x509.certificate.subject", "x509.certificate.key.type", "x509.certificate.key.length", "x509.certificate.issuer", "log.id.id" ],
|
||||||
":firewall:": ["soc_timestamp", "source.ip", "source.port", "destination.ip", "destination.port", "network.transport", "direction", "interface", "action", "reason" ],
|
":firewall:": ["soc_timestamp", "source.ip", "source.port", "destination.ip", "destination.port", "network.transport", "direction", "interface", "action", "reason" ],
|
||||||
":osquery:": ["soc_timestamp", "source.ip", "source.port", "destination.ip", "destination.port", "source.hostname", "event.dataset", "process.executable", "user.name" ],
|
":osquery:": ["soc_timestamp", "source.ip", "source.port", "destination.ip", "destination.port", "source.hostname", "event.dataset", "process.executable", "user.name" ],
|
||||||
":ossec:": ["soc_timestamp", "source.ip", "source.port", "destination.ip", "destination.port", "rule.name", "rule.level", "rule.category", "process.name", "user.name", "user.escalated", "location", "process.name" ],
|
":ossec:": ["soc_timestamp", "source.ip", "source.port", "destination.ip", "destination.port", "rule.name", "rule.level", "rule.category", "process.name", "user.name", "user.escalated", "location" ],
|
||||||
":strelka:file": ["soc_timestamp", "scan.exiftool.OriginalFileName", "file.size", "hash.md5", "scan.exiftool.CompanyName", "scan.exiftool.Description", "scan.exiftool.Directory", "scan.exiftool.FileType", "scan.exiftool.FileOS", "log.id.fuid" ],
|
":strelka:file": ["soc_timestamp", "scan.exiftool.OriginalFileName", "file.size", "hash.md5", "scan.exiftool.CompanyName", "scan.exiftool.Description", "scan.exiftool.Directory", "scan.exiftool.FileType", "scan.exiftool.FileOS", "log.id.fuid" ],
|
||||||
":suricata:": ["soc_timestamp", "source.ip", "source.port", "destination.ip", "destination.port", "rule.gid", "rule.name", "rule.category", "rule.rev", "event.severity", "event.severity_label" ],
|
":suricata:": ["soc_timestamp", "source.ip", "source.port", "destination.ip", "destination.port", "rule.gid", "rule.name", "rule.category", "rule.rev", "event.severity", "event.severity_label" ],
|
||||||
":sysmon:": ["soc_timestamp", "source.ip", "source.port", "destination.ip", "destination.port", "source.hostname", "event.dataset", "process.executable", "user.name" ],
|
":sysmon:": ["soc_timestamp", "source.ip", "source.port", "destination.ip", "destination.port", "source.hostname", "event.dataset", "process.executable", "user.name" ],
|
||||||
@@ -84,8 +84,8 @@
|
|||||||
{ "name": "NIDS Alerts", "description": "Show all NIDS alerts grouped by alert name", "query": "event.category: network AND event.dataset: alert | groupby rule.name"},
|
{ "name": "NIDS Alerts", "description": "Show all NIDS alerts grouped by alert name", "query": "event.category: network AND event.dataset: alert | groupby rule.name"},
|
||||||
{ "name": "Wazuh/OSSEC Alerts", "description": "Show all Wazuh alerts grouped by category", "query": "event.module:ossec AND event.dataset:alert | groupby rule.category"},
|
{ "name": "Wazuh/OSSEC Alerts", "description": "Show all Wazuh alerts grouped by category", "query": "event.module:ossec AND event.dataset:alert | groupby rule.category"},
|
||||||
{ "name": "Wazuh/OSSEC Commands", "description": "Show all Wazuh alerts grouped by command line", "query": "event.module:ossec AND event.dataset:alert | groupby process.command_line"},
|
{ "name": "Wazuh/OSSEC Commands", "description": "Show all Wazuh alerts grouped by command line", "query": "event.module:ossec AND event.dataset:alert | groupby process.command_line"},
|
||||||
{ "name": "Wazuh/OSSEC Processes", "description": "Show all Wazuh alerts grouped by process name", "query": "event.module:ossec AND event.dataset:alert | groupby process.name"},
|
{ "name": "Wazuh/OSSEC Processes", "description": "Show all Wazuh alerts grouped by process name", "query": "event.module:ossec AND event.dataset:alert | groupby process.name.keyword"},
|
||||||
{ "name": "Wazuh/OSSEC Users", "description": "Show all Wazuh alerts grouped by username", "query": "event.module:ossec AND event.dataset:alert | groupby user.name"},
|
{ "name": "Wazuh/OSSEC Users", "description": "Show all Wazuh alerts grouped by username", "query": "event.module:ossec AND event.dataset:alert | groupby user.escalated.keyword"},
|
||||||
{ "name": "Sysmon Events", "description": "Show all Sysmon logs grouped by event type", "query": "event.module:sysmon | groupby event.dataset"},
|
{ "name": "Sysmon Events", "description": "Show all Sysmon logs grouped by event type", "query": "event.module:sysmon | groupby event.dataset"},
|
||||||
{ "name": "Sysmon Usernames", "description": "Show all Sysmon logs grouped by username", "query": "event.module:sysmon | groupby event.dataset, user.name.keyword"},
|
{ "name": "Sysmon Usernames", "description": "Show all Sysmon logs grouped by username", "query": "event.module:sysmon | groupby event.dataset, user.name.keyword"},
|
||||||
{ "name": "Zeek Notice", "description": "Show notices from Zeek", "query": "event.dataset:notice | groupby notice.note notice.message"},
|
{ "name": "Zeek Notice", "description": "Show notices from Zeek", "query": "event.dataset:notice | groupby notice.note notice.message"},
|
||||||
@@ -114,7 +114,7 @@
|
|||||||
{ "name": "HTTP", "description": "HTTP grouped by user agent", "query": "event.dataset:http | groupby http.useragent"},
|
{ "name": "HTTP", "description": "HTTP grouped by user agent", "query": "event.dataset:http | groupby http.useragent"},
|
||||||
{ "name": "HTTP", "description": "HTTP grouped by virtual host", "query": "event.dataset:http | groupby http.virtual_host"},
|
{ "name": "HTTP", "description": "HTTP grouped by virtual host", "query": "event.dataset:http | groupby http.virtual_host"},
|
||||||
{ "name": "HTTP", "description": "HTTP with exe downloads", "query": "event.dataset:http AND file.resp_mime_types:dosexec | groupby http.virtual_host"},
|
{ "name": "HTTP", "description": "HTTP with exe downloads", "query": "event.dataset:http AND file.resp_mime_types:dosexec | groupby http.virtual_host"},
|
||||||
{ "name": "Intel", "description": "Intel framework hits grouped by indicator", "query": "event.dataset:intel | groupby intel.indicator"},
|
{ "name": "Intel", "description": "Intel framework hits grouped by indicator", "query": "event.dataset:intel | groupby intel.indicator.keyword"},
|
||||||
{ "name": "IRC", "description": "IRC grouped by command", "query": "event.dataset:irc | groupby irc.command.type"},
|
{ "name": "IRC", "description": "IRC grouped by command", "query": "event.dataset:irc | groupby irc.command.type"},
|
||||||
{ "name": "KERBEROS", "description": "KERBEROS grouped by service", "query": "event.dataset:kerberos | groupby kerberos.service"},
|
{ "name": "KERBEROS", "description": "KERBEROS grouped by service", "query": "event.dataset:kerberos | groupby kerberos.service"},
|
||||||
{ "name": "MODBUS", "description": "MODBUS grouped by function", "query": "event.dataset:modbus | groupby modbus.function"},
|
{ "name": "MODBUS", "description": "MODBUS grouped by function", "query": "event.dataset:modbus | groupby modbus.function"},
|
||||||
@@ -124,7 +124,7 @@
|
|||||||
{ "name": "PE", "description": "PE files list", "query": "event.dataset:pe | groupby file.machine file.os file.subsystem"},
|
{ "name": "PE", "description": "PE files list", "query": "event.dataset:pe | groupby file.machine file.os file.subsystem"},
|
||||||
{ "name": "RADIUS", "description": "RADIUS grouped by username", "query": "event.dataset:radius | groupby user.name.keyword"},
|
{ "name": "RADIUS", "description": "RADIUS grouped by username", "query": "event.dataset:radius | groupby user.name.keyword"},
|
||||||
{ "name": "RDP", "description": "RDP grouped by client name", "query": "event.dataset:rdp | groupby client.name"},
|
{ "name": "RDP", "description": "RDP grouped by client name", "query": "event.dataset:rdp | groupby client.name"},
|
||||||
{ "name": "RFB", "description": "RFB grouped by desktop name", "query": "event.dataset:rfb | groupby rfb.desktop.name"},
|
{ "name": "RFB", "description": "RFB grouped by desktop name", "query": "event.dataset:rfb | groupby rfb.desktop.name.keyword"},
|
||||||
{ "name": "Signatures", "description": "Zeek signatures grouped by signature id", "query": "event.dataset:signatures | groupby signature_id"},
|
{ "name": "Signatures", "description": "Zeek signatures grouped by signature id", "query": "event.dataset:signatures | groupby signature_id"},
|
||||||
{ "name": "SIP", "description": "SIP grouped by user agent", "query": "event.dataset:sip | groupby client.user_agent"},
|
{ "name": "SIP", "description": "SIP grouped by user agent", "query": "event.dataset:sip | groupby client.user_agent"},
|
||||||
{ "name": "SMB_Files", "description": "SMB files grouped by action", "query": "event.dataset:smb_files | groupby file.action"},
|
{ "name": "SMB_Files", "description": "SMB files grouped by action", "query": "event.dataset:smb_files | groupby file.action"},
|
||||||
@@ -135,7 +135,7 @@
|
|||||||
{ "name": "SSH", "description": "SSH grouped by version", "query": "event.dataset:ssh | groupby ssh.version"},
|
{ "name": "SSH", "description": "SSH grouped by version", "query": "event.dataset:ssh | groupby ssh.version"},
|
||||||
{ "name": "SSL", "description": "SSL grouped by version and server name", "query": "event.dataset:ssl | groupby ssl.version ssl.server_name"},
|
{ "name": "SSL", "description": "SSL grouped by version and server name", "query": "event.dataset:ssl | groupby ssl.version ssl.server_name"},
|
||||||
{ "name": "SYSLOG", "description": "SYSLOG grouped by severity and facility ", "query": "event.dataset:syslog | groupby syslog.severity syslog.facility"},
|
{ "name": "SYSLOG", "description": "SYSLOG grouped by severity and facility ", "query": "event.dataset:syslog | groupby syslog.severity syslog.facility"},
|
||||||
{ "name": "Tunnels", "description": "Tunnels grouped by action", "query": "event.dataset:tunnels | groupby event.action"},
|
{ "name": "Tunnel", "description": "Tunnels grouped by action", "query": "event.dataset:tunnel | groupby event.action"},
|
||||||
{ "name": "Weird", "description": "Zeek weird log grouped by name", "query": "event.dataset:weird | groupby weird.name"},
|
{ "name": "Weird", "description": "Zeek weird log grouped by name", "query": "event.dataset:weird | groupby weird.name"},
|
||||||
{ "name": "x509", "description": "x.509 grouped by key length", "query": "event.dataset:x509 | groupby x509.certificate.key.length"},
|
{ "name": "x509", "description": "x.509 grouped by key length", "query": "event.dataset:x509 | groupby x509.certificate.key.length"},
|
||||||
{ "name": "x509", "description": "x.509 grouped by issuer", "query": "event.dataset:x509 | groupby x509.certificate.issuer"},
|
{ "name": "x509", "description": "x.509 grouped by issuer", "query": "event.dataset:x509 | groupby x509.certificate.issuer"},
|
||||||
@@ -143,10 +143,10 @@
|
|||||||
{ "name": "Firewall", "description": "Firewall events grouped by action", "query": "event_type:firewall | groupby action"}
|
{ "name": "Firewall", "description": "Firewall events grouped by action", "query": "event_type:firewall | groupby action"}
|
||||||
],
|
],
|
||||||
"actions": [
|
"actions": [
|
||||||
{ "name": "", "description": "actionPcapHelp", "icon": "fa-stream", "link": "/joblookup?esid={eventId}" },
|
{ "name": "", "description": "actionPcapHelp", "icon": "fa-stream", "link": "/joblookup?esid={eventId}", "target": "_blank" },
|
||||||
{ "name": "", "description": "actionAlertHelp", "icon": "fa-bell", "link": "/soctopus/thehive/alert/{eventId}" },
|
{ "name": "", "description": "actionAlertHelp", "icon": "fa-bell", "link": "/soctopus/thehive/alert/{eventId}", "target": "_blank" },
|
||||||
{ "name": "", "description": "actionGoogleHelp", "icon": "fab fa-google", "link": "https://www.google.com/search?q={value}" },
|
{ "name": "", "description": "actionGoogleHelp", "icon": "fab fa-google", "link": "https://www.google.com/search?q={value}", "target": "_blank" },
|
||||||
{ "name": "actionVirusTotal", "description": "actionVirusTotalHelp", "icon": "", "link": "https://www.virustotal.com/gui/search/{value}" }
|
{ "name": "actionVirusTotal", "description": "actionVirusTotalHelp", "icon": "", "link": "https://www.virustotal.com/gui/search/{value}", "target": "_blank" }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'soc' in top_states %}
|
||||||
|
|
||||||
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
||||||
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
||||||
{% set MANAGER = salt['grains.get']('master') %}
|
{% set MANAGER = salt['grains.get']('master') %}
|
||||||
@@ -98,3 +103,11 @@ so-kratos:
|
|||||||
- 0.0.0.0:4434:4434
|
- 0.0.0.0:4434:4434
|
||||||
- watch:
|
- watch:
|
||||||
- file: /opt/so/conf/kratos
|
- file: /opt/so/conf/kratos
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
soc_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: soc_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -1,3 +1,8 @@
|
|||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'soctopus' in top_states %}
|
||||||
|
|
||||||
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
||||||
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
||||||
{% set MANAGER = salt['grains.get']('master') %}
|
{% set MANAGER = salt['grains.get']('master') %}
|
||||||
@@ -67,3 +72,11 @@ so-soctopus:
|
|||||||
- 0.0.0.0:7000:7000
|
- 0.0.0.0:7000:7000
|
||||||
- extra_hosts:
|
- extra_hosts:
|
||||||
- {{MANAGER_URL}}:{{MANAGER_IP}}
|
- {{MANAGER_URL}}:{{MANAGER_IP}}
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
soctopus_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: soctopus_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -1,3 +1,8 @@
|
|||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'ssl' in top_states %}
|
||||||
|
|
||||||
{% set manager = salt['grains.get']('master') %}
|
{% set manager = salt['grains.get']('master') %}
|
||||||
{% set managerip = salt['pillar.get']('global:managerip', '') %}
|
{% set managerip = salt['pillar.get']('global:managerip', '') %}
|
||||||
{% set HOSTNAME = salt['grains.get']('host') %}
|
{% set HOSTNAME = salt['grains.get']('host') %}
|
||||||
@@ -570,3 +575,11 @@ elastickeyperms:
|
|||||||
- group: 930
|
- group: 930
|
||||||
|
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
ssl_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: ssl_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -12,8 +12,13 @@
|
|||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
{% set MANAGER = salt['grains.get']('master') %}
|
{% set show_top = salt['state.show_top']() %}
|
||||||
{% set MANAGERIP = salt['pillar.get']('global:managerip', '') %}
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'strelka' in top_states %}
|
||||||
|
|
||||||
|
{%- set MANAGER = salt['grains.get']('master') %}
|
||||||
|
{%- set MANAGERIP = salt['pillar.get']('global:managerip', '') %}
|
||||||
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
||||||
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
||||||
{% set STRELKA_RULES = salt['pillar.get']('strelka:rules', '1') %}
|
{% set STRELKA_RULES = salt['pillar.get']('strelka:rules', '1') %}
|
||||||
@@ -134,3 +139,11 @@ strelka_zeek_extracted_sync:
|
|||||||
- user: root
|
- user: root
|
||||||
- name: '[ -d /nsm/zeek/extracted/complete/ ] && mv /nsm/zeek/extracted/complete/* /nsm/strelka/ > /dev/null 2>&1'
|
- name: '[ -d /nsm/zeek/extracted/complete/ ] && mv /nsm/zeek/extracted/complete/* /nsm/strelka/ > /dev/null 2>&1'
|
||||||
- minute: '*'
|
- minute: '*'
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
strelka_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: strelka_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -12,6 +12,10 @@
|
|||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'suricata' in top_states %}
|
||||||
|
|
||||||
{% set interface = salt['pillar.get']('sensor:interface', 'bond0') %}
|
{% set interface = salt['pillar.get']('sensor:interface', 'bond0') %}
|
||||||
{% set ZEEKVER = salt['pillar.get']('global:zeekversion', '') %}
|
{% set ZEEKVER = salt['pillar.get']('global:zeekversion', '') %}
|
||||||
@@ -173,3 +177,11 @@ surilogrotate:
|
|||||||
- daymonth: '*'
|
- daymonth: '*'
|
||||||
- month: '*'
|
- month: '*'
|
||||||
- dayweek: '*'
|
- dayweek: '*'
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
suricata_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: suricata_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -12,4 +12,10 @@ so-tcpreplay:
|
|||||||
- interactive: True
|
- interactive: True
|
||||||
- tty: True
|
- tty: True
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
tcpreplay_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: tcpreplay_state_not_allowed
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'telegraf' in top_states %}
|
||||||
|
|
||||||
{% set MANAGER = salt['grains.get']('master') %}
|
{% set MANAGER = salt['grains.get']('master') %}
|
||||||
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
||||||
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
||||||
@@ -66,4 +71,12 @@ so-telegraf:
|
|||||||
- /opt/so/log/suricata:/var/log/suricata:ro
|
- /opt/so/log/suricata:/var/log/suricata:ro
|
||||||
- watch:
|
- watch:
|
||||||
- file: tgrafconf
|
- file: tgrafconf
|
||||||
- file: tgrafsyncscripts
|
- file: tgrafsyncscripts
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
telegraf_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: telegraf_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -1,3 +1,8 @@
|
|||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'thehive' in top_states %}
|
||||||
|
|
||||||
{% set MANAGERIP = salt['pillar.get']('manager:mainip', '') %}
|
{% set MANAGERIP = salt['pillar.get']('manager:mainip', '') %}
|
||||||
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
||||||
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
||||||
@@ -137,3 +142,11 @@ thehivescript:
|
|||||||
- cwd: /opt/so
|
- cwd: /opt/so
|
||||||
- template: jinja
|
- template: jinja
|
||||||
- hide_output: True
|
- hide_output: True
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
thehive_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: thehive_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -62,6 +62,7 @@ base:
|
|||||||
- common
|
- common
|
||||||
- telegraf
|
- telegraf
|
||||||
- firewall
|
- firewall
|
||||||
|
- nginx
|
||||||
- pcap
|
- pcap
|
||||||
- suricata
|
- suricata
|
||||||
- healthcheck
|
- healthcheck
|
||||||
@@ -127,6 +128,7 @@ base:
|
|||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- if PLAYBOOK != 0 %}
|
{%- if PLAYBOOK != 0 %}
|
||||||
- playbook
|
- playbook
|
||||||
|
- redis
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- if FREQSERVER != 0 %}
|
{%- if FREQSERVER != 0 %}
|
||||||
- freqserver
|
- freqserver
|
||||||
@@ -158,6 +160,7 @@ base:
|
|||||||
{%- if WAZUH != 0 %}
|
{%- if WAZUH != 0 %}
|
||||||
- wazuh
|
- wazuh
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
- elasticsearch
|
||||||
- logstash
|
- logstash
|
||||||
- redis
|
- redis
|
||||||
- kibana
|
- kibana
|
||||||
@@ -285,6 +288,7 @@ base:
|
|||||||
{%- if WAZUH != 0 %}
|
{%- if WAZUH != 0 %}
|
||||||
- wazuh
|
- wazuh
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
- elasticsearch
|
||||||
- logstash
|
- logstash
|
||||||
- curator
|
- curator
|
||||||
- filebeat
|
- filebeat
|
||||||
@@ -330,6 +334,7 @@ base:
|
|||||||
{%- if WAZUH != 0 %}
|
{%- if WAZUH != 0 %}
|
||||||
- wazuh
|
- wazuh
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
- elasticsearch
|
||||||
- logstash
|
- logstash
|
||||||
- redis
|
- redis
|
||||||
- curator
|
- curator
|
||||||
@@ -367,6 +372,7 @@ base:
|
|||||||
{%- if WAZUH != 0 %}
|
{%- if WAZUH != 0 %}
|
||||||
- wazuh
|
- wazuh
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
- elasticsearch
|
||||||
- logstash
|
- logstash
|
||||||
- redis
|
- redis
|
||||||
- curator
|
- curator
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'utility' in top_states %}
|
||||||
|
|
||||||
# This state is for checking things
|
# This state is for checking things
|
||||||
{% if grains['role'] in ['so-manager', 'so-managersearch', 'so-standalone'] %}
|
{% if grains['role'] in ['so-manager', 'so-managersearch', 'so-standalone'] %}
|
||||||
# Make sure Cross Cluster is good. Will need some logic once we have hot/warm
|
# Make sure Cross Cluster is good. Will need some logic once we have hot/warm
|
||||||
@@ -19,3 +24,11 @@ fixsearch:
|
|||||||
- source: salt://utility/bin/eval
|
- source: salt://utility/bin/eval
|
||||||
- template: jinja
|
- template: jinja
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
utility_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: utility_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'wazuh' in top_states %}
|
||||||
|
|
||||||
{%- set HOSTNAME = salt['grains.get']('host', '') %}
|
{%- set HOSTNAME = salt['grains.get']('host', '') %}
|
||||||
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
||||||
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
|
||||||
@@ -141,3 +146,11 @@ hidsruledir:
|
|||||||
/opt/so/rules/hids/ruleset:
|
/opt/so/rules/hids/ruleset:
|
||||||
file.symlink:
|
file.symlink:
|
||||||
- target: /nsm/wazuh/ruleset
|
- target: /nsm/wazuh/ruleset
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
wazuh_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: wazuh_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -1,6 +1,19 @@
|
|||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'yum' in top_states %}
|
||||||
|
|
||||||
yumconf:
|
yumconf:
|
||||||
file.managed:
|
file.managed:
|
||||||
- name: /etc/yum.conf
|
- name: /etc/yum.conf
|
||||||
- source: salt://yum/etc/yum.conf.jinja
|
- source: salt://yum/etc/yum.conf.jinja
|
||||||
- mode: 644
|
- mode: 644
|
||||||
- template: jinja
|
- template: jinja
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
yum_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: yum_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -1,3 +1,8 @@
|
|||||||
|
{% set show_top = salt['state.show_top']() %}
|
||||||
|
{% set top_states = show_top.values() | join(', ') %}
|
||||||
|
|
||||||
|
{% if 'zeek' in top_states %}
|
||||||
|
|
||||||
{% from "zeek/map.jinja" import START with context %}
|
{% from "zeek/map.jinja" import START with context %}
|
||||||
|
|
||||||
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
|
||||||
@@ -190,4 +195,11 @@ so-zeek:
|
|||||||
- file: /opt/so/conf/zeek/zeekctl.cfg
|
- file: /opt/so/conf/zeek/zeekctl.cfg
|
||||||
- file: /opt/so/conf/zeek/policy
|
- file: /opt/so/conf/zeek/policy
|
||||||
- file: /opt/so/conf/zeek/bpf
|
- file: /opt/so/conf/zeek/bpf
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
zeek_state_not_allowed:
|
||||||
|
test.fail_without_changes:
|
||||||
|
- name: zeek_state_not_allowed
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -683,8 +683,13 @@ fi
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$STRELKA" = 1 ]]; then
|
if [[ "$STRELKA" = 1 ]]; then
|
||||||
set_progress_str 80 "$(print_salt_state_apply 'strelka')"
|
if [[ $is_sensor ]]; then
|
||||||
salt-call state.apply -l info strelka >> $setup_log 2>&1
|
set_progress_str 80 "$(print_salt_state_apply 'strelka')"
|
||||||
|
salt-call state.apply -l info strelka >> $setup_log 2>&1
|
||||||
|
fi
|
||||||
|
if [[ $STRELKARULES == 1 ]]; then
|
||||||
|
/usr/sbin/so-yara-update >> $setup_log 2>&1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $is_manager || $is_helix || $is_import ]]; then
|
if [[ $is_manager || $is_helix || $is_import ]]; then
|
||||||
|
|||||||
@@ -412,6 +412,13 @@ whiptail_enable_components() {
|
|||||||
|
|
||||||
[ -n "$TESTING" ] && return
|
[ -n "$TESTING" ] && return
|
||||||
|
|
||||||
|
GRAFANA=0
|
||||||
|
OSQUERY=0
|
||||||
|
WAZUH=0
|
||||||
|
THEHIVE=0
|
||||||
|
PLAYBOOK=0
|
||||||
|
STRELKA=0
|
||||||
|
|
||||||
COMPONENTS=$(whiptail --title "Security Onion Setup" --checklist \
|
COMPONENTS=$(whiptail --title "Security Onion Setup" --checklist \
|
||||||
"Select Components to install" 20 75 8 \
|
"Select Components to install" 20 75 8 \
|
||||||
GRAFANA "Enable Grafana for system monitoring" ON \
|
GRAFANA "Enable Grafana for system monitoring" ON \
|
||||||
|
|||||||
Reference in New Issue
Block a user