mirror of
https://github.com/Security-Onion-Solutions/securityonion.git
synced 2025-12-06 17:22:49 +01:00
Merge remote-tracking branch 'origin/2.4/dev' into 2.4/ubuntu
This commit is contained in:
@@ -21,16 +21,34 @@ Security Onion Elastic Clear
|
|||||||
-y Skip interactive mode
|
-y Skip interactive mode
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
while getopts "h:y" OPTION
|
while getopts "h:cdely" OPTION
|
||||||
do
|
do
|
||||||
case $OPTION in
|
case $OPTION in
|
||||||
h)
|
h)
|
||||||
usage
|
usage
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
|
c)
|
||||||
y)
|
DELETE_CASES_DATA=1
|
||||||
|
SKIP=1
|
||||||
|
;;
|
||||||
|
d)
|
||||||
|
DONT_STOP_SERVICES=1
|
||||||
SKIP=1
|
SKIP=1
|
||||||
|
;;
|
||||||
|
e)
|
||||||
|
DELETE_ELASTALERT_DATA=1
|
||||||
|
SKIP=1
|
||||||
|
;;
|
||||||
|
l)
|
||||||
|
DELETE_LOG_DATA=1
|
||||||
|
SKIP=1
|
||||||
|
;;
|
||||||
|
y)
|
||||||
|
DELETE_CASES_DATA=1
|
||||||
|
DELETE_ELASTALERT_DATA=1
|
||||||
|
DELETE_LOG_DATA=1
|
||||||
|
SKIP=1
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage
|
usage
|
||||||
@@ -54,41 +72,83 @@ if [ $SKIP -ne 1 ]; then
|
|||||||
if [ "$INPUT" != "AGREE" ] ; then exit 0; fi
|
if [ "$INPUT" != "AGREE" ] ; then exit 0; fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check to see if Logstash are running
|
|
||||||
LS_ENABLED=$(so-status | grep logstash)
|
|
||||||
EA_ENABLED=$(so-status | grep elastalert)
|
|
||||||
|
|
||||||
if [ ! -z "$LS_ENABLED" ]; then
|
if [ -z "$DONT_STOP_SERVICES" ]; then
|
||||||
|
# Stop Elastic Agent
|
||||||
|
for i in $(pgrep elastic-agent | grep -v grep); do
|
||||||
|
kill -9 $i;
|
||||||
|
done
|
||||||
|
|
||||||
/usr/sbin/so-logstash-stop
|
# Check to see if Elastic Fleet, Logstash, Elastalert are running
|
||||||
|
#EF_ENABLED=$(so-status | grep elastic-fleet)
|
||||||
|
LS_ENABLED=$(so-status | grep logstash)
|
||||||
|
EA_ENABLED=$(so-status | grep elastalert)
|
||||||
|
|
||||||
|
#if [ ! -z "$EF_ENABLED" ]; then
|
||||||
|
# /usr/sbin/so-elastic-fleet-stop
|
||||||
|
#fi
|
||||||
|
|
||||||
|
if [ ! -z "$LS_ENABLED" ]; then
|
||||||
|
/usr/sbin/so-logstash-stop
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -z "$EA_ENABLED" ]; then
|
||||||
|
/usr/sbin/so-elastalert-stop
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -z "$EA_ENABLED" ]; then
|
if [ ! -z "$DELETE_CASES_DATA" ]; then
|
||||||
|
# Delete Cases data
|
||||||
/usr/sbin/so-elastalert-stop
|
echo "Deleting Cases data..."
|
||||||
|
INDXS=$(/usr/sbin/so-elasticsearch-query _cat/indices?h=index | grep "so-case")
|
||||||
|
for INDX in ${INDXS}
|
||||||
|
do
|
||||||
|
echo "Deleting $INDX"
|
||||||
|
/usr/sbin/so-elasticsearch-query ${INDX} -XDELETE > /dev/null 2>&1
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Delete data
|
# Delete Elastalert data
|
||||||
echo "Deleting data..."
|
if [ ! -z "$DELETE_ELASTALERT_DATA" ]; then
|
||||||
|
# Delete Elastalert data
|
||||||
INDXS=$(curl -K /opt/so/conf/elasticsearch/curl.config -s -XGET -k -L https://{{ NODEIP }}:9200/_cat/indices?v | egrep 'logstash|elastalert|so-' | awk '{ print $3 }')
|
echo "Deleting Elastalert data..."
|
||||||
for INDX in ${INDXS}
|
INDXS=$(/usr/sbin/so-elasticsearch-query _cat/indices?h=index | grep "elastalert")
|
||||||
do
|
for INDX in ${INDXS}
|
||||||
curl -K /opt/so/conf/elasticsearch/curl.config-XDELETE -k -L https://"{{ NODEIP }}:9200/${INDX}" > /dev/null 2>&1
|
do
|
||||||
done
|
echo "Deleting $INDX"
|
||||||
|
/usr/sbin/so-elasticsearch-query ${INDX} -XDELETE > /dev/null 2>&1
|
||||||
#Start Logstash
|
done
|
||||||
if [ ! -z "$LS_ENABLED" ]; then
|
|
||||||
|
|
||||||
/usr/sbin/so-logstash-start
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -z "$EA_ENABLED" ]; then
|
# Delete log data
|
||||||
|
if [ ! -z "$DELETE_LOG_DATA" ]; then
|
||||||
/usr/sbin/so-elastalert-start
|
echo "Deleting log data ..."
|
||||||
|
DATASTREAMS=$(/usr/sbin/so-elasticsearch-query _data_stream | jq -r '.[] |.[].name')
|
||||||
|
for DATASTREAM in ${DATASTREAMS}
|
||||||
|
do
|
||||||
|
# Delete the data stream
|
||||||
|
echo "Deleting $DATASTREAM..."
|
||||||
|
/usr/sbin/so-elasticsearch-query _data_stream/${DATASTREAM} -XDELETE > /dev/null 2>&1
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -z "$DONT_STOP_SERVICES" ]; then
|
||||||
|
#Start Logstash
|
||||||
|
if [ ! -z "$LS_ENABLED" ]; then
|
||||||
|
/usr/sbin/so-logstash-start
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
#Start Elastic Fleet
|
||||||
|
#if [ ! -z "$EF_ENABLED" ]; then
|
||||||
|
# /usr/sbin/so-elastic-fleet-start
|
||||||
|
#fi
|
||||||
|
|
||||||
|
#Start Elastalert
|
||||||
|
if [ ! -z "$EA_ENABLED" ]; then
|
||||||
|
/usr/sbin/so-elastalert-start
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Start Elastic Agent
|
||||||
|
/usr/bin/elastic-agent restart
|
||||||
|
fi
|
||||||
|
|||||||
@@ -9,4 +9,4 @@
|
|||||||
|
|
||||||
. /usr/sbin/so-common
|
. /usr/sbin/so-common
|
||||||
|
|
||||||
/usr/sbin/so-restart elastic-fleet $1
|
/usr/sbin/so-restart elasticfleet $1
|
||||||
|
|||||||
@@ -9,4 +9,4 @@
|
|||||||
|
|
||||||
. /usr/sbin/so-common
|
. /usr/sbin/so-common
|
||||||
|
|
||||||
/usr/sbin/so-start elastic-fleet $1
|
/usr/sbin/so-start elasticfleet $1
|
||||||
|
|||||||
@@ -9,4 +9,4 @@
|
|||||||
|
|
||||||
. /usr/sbin/so-common
|
. /usr/sbin/so-common
|
||||||
|
|
||||||
/usr/sbin/so-stop elastic-fleet $1
|
/usr/sbin/so-stop elasticfleet $1
|
||||||
|
|||||||
@@ -177,6 +177,7 @@ esyml:
|
|||||||
ESCONFIG: {{ ESCONFIG }}
|
ESCONFIG: {{ ESCONFIG }}
|
||||||
- template: jinja
|
- template: jinja
|
||||||
|
|
||||||
|
{% if GLOBALS.role != "so-searchnode" %}
|
||||||
escomponenttemplates:
|
escomponenttemplates:
|
||||||
file.recurse:
|
file.recurse:
|
||||||
- name: /opt/so/conf/elasticsearch/templates/component
|
- name: /opt/so/conf/elasticsearch/templates/component
|
||||||
@@ -219,6 +220,7 @@ es_template_{{TEMPLATE.split('.')[0] | replace("/","_") }}:
|
|||||||
- cmd: so-elasticsearch-templates
|
- cmd: so-elasticsearch-templates
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
esroles:
|
esroles:
|
||||||
file.recurse:
|
file.recurse:
|
||||||
@@ -363,6 +365,8 @@ append_so-elasticsearch_so-status.conf:
|
|||||||
- name: /opt/so/conf/so-status/so-status.conf
|
- name: /opt/so/conf/so-status/so-status.conf
|
||||||
- text: so-elasticsearch
|
- text: so-elasticsearch
|
||||||
|
|
||||||
|
{% if GLOBALS.role != "so-searchnode" %}
|
||||||
|
|
||||||
so-es-cluster-settings:
|
so-es-cluster-settings:
|
||||||
cmd.run:
|
cmd.run:
|
||||||
- name: /usr/sbin/so-elasticsearch-cluster-settings
|
- name: /usr/sbin/so-elasticsearch-cluster-settings
|
||||||
@@ -406,7 +410,7 @@ so-elasticsearch-roles-load:
|
|||||||
- require:
|
- require:
|
||||||
- docker_container: so-elasticsearch
|
- docker_container: so-elasticsearch
|
||||||
- file: es_sync_scripts
|
- file: es_sync_scripts
|
||||||
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|
||||||
{{sls}}_state_not_allowed:
|
{{sls}}_state_not_allowed:
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -6,7 +6,8 @@
|
|||||||
|
|
||||||
PIPE_OWNER=${PIPE_OWNER:-socore}
|
PIPE_OWNER=${PIPE_OWNER:-socore}
|
||||||
PIPE_GROUP=${PIPE_GROUP:-socore}
|
PIPE_GROUP=${PIPE_GROUP:-socore}
|
||||||
SOC_PIPE=${SOC_PIPE_REQUEST:-/opt/so/conf/soc/salt/pipe}
|
SOC_PIPE=${SOC_PIPE:-/opt/so/conf/soc/salt/pipe}
|
||||||
|
CMD_PREFIX=${CMD_PREFIX:-""}
|
||||||
PATH=${PATH}:/usr/sbin
|
PATH=${PATH}:/usr/sbin
|
||||||
|
|
||||||
function log() {
|
function log() {
|
||||||
@@ -26,7 +27,7 @@ function make_pipe() {
|
|||||||
make_pipe "${SOC_PIPE}"
|
make_pipe "${SOC_PIPE}"
|
||||||
|
|
||||||
function list_minions() {
|
function list_minions() {
|
||||||
response=$(so-minion -o=list)
|
response=$($CMD_PREFIX so-minion -o=list)
|
||||||
exit_code=$?
|
exit_code=$?
|
||||||
if [[ $exit_code -eq 0 ]]; then
|
if [[ $exit_code -eq 0 ]]; then
|
||||||
log "Successful command execution"
|
log "Successful command execution"
|
||||||
@@ -42,7 +43,7 @@ function manage_minion() {
|
|||||||
op=$(echo "$request" | jq -r .operation)
|
op=$(echo "$request" | jq -r .operation)
|
||||||
id=$(echo "$request" | jq -r .id)
|
id=$(echo "$request" | jq -r .id)
|
||||||
|
|
||||||
response=$(so-minion "-o=$op" "-m=$id")
|
response=$($CMD_PREFIX so-minion "-o=$op" "-m=$id")
|
||||||
exit_code=$?
|
exit_code=$?
|
||||||
if [[ exit_code -eq 0 ]]; then
|
if [[ exit_code -eq 0 ]]; then
|
||||||
log "Successful command execution"
|
log "Successful command execution"
|
||||||
@@ -75,14 +76,14 @@ function manage_user() {
|
|||||||
add|enable|disable|delete)
|
add|enable|disable|delete)
|
||||||
email=$(echo "$request" | jq -r .email)
|
email=$(echo "$request" | jq -r .email)
|
||||||
log "Performing user '$op' for user '$email'"
|
log "Performing user '$op' for user '$email'"
|
||||||
response=$(so-user "$op" --email "$email" --skip-sync)
|
response=$($CMD_PREFIX so-user "$op" --email "$email" --skip-sync)
|
||||||
exit_code=$?
|
exit_code=$?
|
||||||
;;
|
;;
|
||||||
addrole|delrole)
|
addrole|delrole)
|
||||||
email=$(echo "$request" | jq -r .email)
|
email=$(echo "$request" | jq -r .email)
|
||||||
role=$(echo "$request" | jq -r .role)
|
role=$(echo "$request" | jq -r .role)
|
||||||
log "Performing '$op' for user '$email' with role '$role'"
|
log "Performing '$op' for user '$email' with role '$role'"
|
||||||
response=$(so-user "$op" --email "$email" --role "$role" --skip-sync)
|
response=$($CMD_PREFIX so-user "$op" --email "$email" --role "$role" --skip-sync)
|
||||||
exit_code=$?
|
exit_code=$?
|
||||||
;;
|
;;
|
||||||
password)
|
password)
|
||||||
@@ -98,12 +99,12 @@ function manage_user() {
|
|||||||
lastName=$(echo "$request" | jq -r .lastName)
|
lastName=$(echo "$request" | jq -r .lastName)
|
||||||
note=$(echo "$request" | jq -r .note)
|
note=$(echo "$request" | jq -r .note)
|
||||||
log "Performing '$op' update for user '$email' with firstname '$firstName', lastname '$lastName', and note '$note'"
|
log "Performing '$op' update for user '$email' with firstname '$firstName', lastname '$lastName', and note '$note'"
|
||||||
response=$(so-user "$op" --email "$email" --firstName "$firstName" --lastName "$lastName" --note "$note")
|
response=$($CMD_PREFIX so-user "$op" --email "$email" --firstName "$firstName" --lastName "$lastName" --note "$note")
|
||||||
exit_code=$?
|
exit_code=$?
|
||||||
;;
|
;;
|
||||||
sync)
|
sync)
|
||||||
log "Performing '$op'"
|
log "Performing '$op'"
|
||||||
response=$(so-user "$op")
|
response=$($CMD_PREFIX so-user "$op")
|
||||||
exit_code=$?
|
exit_code=$?
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@@ -142,17 +143,17 @@ function manage_salt() {
|
|||||||
state)
|
state)
|
||||||
log "Performing '$op' for '$state' on minion '$minion'"
|
log "Performing '$op' for '$state' on minion '$minion'"
|
||||||
state=$(echo "$request" | jq -r .state)
|
state=$(echo "$request" | jq -r .state)
|
||||||
response=$(salt --async "$minion" state.apply "$state" queue=True)
|
response=$($CMD_PREFIX salt --async "$minion" state.apply "$state" queue=True)
|
||||||
exit_code=$?
|
exit_code=$?
|
||||||
;;
|
;;
|
||||||
highstate)
|
highstate)
|
||||||
log "Performing '$op' on minion $minion"
|
log "Performing '$op' on minion $minion"
|
||||||
response=$(salt --async "$minion" state.highstate queue=True)
|
response=$($CMD_PREFIX salt --async "$minion" state.highstate queue=True)
|
||||||
exit_code=$?
|
exit_code=$?
|
||||||
;;
|
;;
|
||||||
activejobs)
|
activejobs)
|
||||||
|
response=$($CMD_PREFIX salt-run jobs.active -out json -l quiet)
|
||||||
log "Querying active salt jobs"
|
log "Querying active salt jobs"
|
||||||
response=$(salt-run jobs.active -out json -l quiet)
|
|
||||||
$(echo "$response" > "${SOC_PIPE}")
|
$(echo "$response" > "${SOC_PIPE}")
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ zeek:
|
|||||||
SpoolDir: /nsm/zeek/spool
|
SpoolDir: /nsm/zeek/spool
|
||||||
CfgDir: /opt/zeek/etc
|
CfgDir: /opt/zeek/etc
|
||||||
CompressLogs: 1
|
CompressLogs: 1
|
||||||
|
ZeekPort: 27760
|
||||||
local:
|
local:
|
||||||
'@load':
|
'@load':
|
||||||
- misc/loaded-scripts
|
- misc/loaded-scripts
|
||||||
|
|||||||
@@ -775,11 +775,12 @@ check_requirements() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
check_sos_appliance() {
|
check_sos_appliance() {
|
||||||
title "Is this is an SOS Appliance?"
|
|
||||||
if [ -f "/etc/SOSMODEL" ]; then
|
if [ -f "/etc/SOSMODEL" ]; then
|
||||||
local MODEL=$(cat /etc/SOSMODEL)
|
local MODEL=$(cat /etc/SOSMODEL)
|
||||||
info "Found SOS Model $MODEL"
|
info "Found SOS Model $MODEL"
|
||||||
echo "sosmodel: $MODEL" >> /etc/salt/grains
|
echo "sosmodel: $MODEL" >> /etc/salt/grains
|
||||||
|
else
|
||||||
|
info "Not an appliance"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -599,6 +599,7 @@ if ! [[ -f $install_opt_file ]]; then
|
|||||||
# Start the master service
|
# Start the master service
|
||||||
copy_salt_master_config
|
copy_salt_master_config
|
||||||
configure_minion "$minion_type"
|
configure_minion "$minion_type"
|
||||||
|
check_sos_appliance
|
||||||
|
|
||||||
logCmd "salt-key -yd $MINION_ID"
|
logCmd "salt-key -yd $MINION_ID"
|
||||||
logCmd "salt-call state.show_top"
|
logCmd "salt-call state.show_top"
|
||||||
@@ -661,6 +662,7 @@ if ! [[ -f $install_opt_file ]]; then
|
|||||||
update_packages
|
update_packages
|
||||||
saltify
|
saltify
|
||||||
configure_minion "$minion_type"
|
configure_minion "$minion_type"
|
||||||
|
check_sos_appliance
|
||||||
drop_install_options
|
drop_install_options
|
||||||
checkin_at_boot
|
checkin_at_boot
|
||||||
logCmd "salt-call state.apply setup.highstate_cron --local --file-root=../salt/"
|
logCmd "salt-call state.apply setup.highstate_cron --local --file-root=../salt/"
|
||||||
|
|||||||
Reference in New Issue
Block a user