From c835c523a922bfac316627a1ede797aaf6f3511d Mon Sep 17 00:00:00 2001 From: Wes Date: Tue, 30 May 2023 02:54:39 +0000 Subject: [PATCH] Elastic Fleet integration update improvements --- salt/elasticfleet/config.sls | 28 ++++++++++ salt/elasticfleet/enabled.sls | 4 ++ .../sbin/so-elastic-fleet-agent-policy-view | 6 +-- .../so-elastic-fleet-integration-policy-list | 6 +-- .../so-elastic-fleet-integration-policy-load | 52 ++++++++++++++----- 5 files changed, 76 insertions(+), 20 deletions(-) diff --git a/salt/elasticfleet/config.sls b/salt/elasticfleet/config.sls index 29aa7eb30..4becb6dab 100644 --- a/salt/elasticfleet/config.sls +++ b/salt/elasticfleet/config.sls @@ -51,6 +51,34 @@ eastatedir: - group: 939 - makedirs: True +eaintegrationsdir: + file.directory: + - name: /opt/so/conf/elastic-fleet/integrations + - user: 947 + - group: 939 + - makedirs: True + +eadynamicintegration: + file.recurse: + - name: /opt/so/conf/elastic-fleet/integrations + - source: salt://elasticfleet/files/integrations-dynamic + - user: 947 + - group: 939 + - template: jinja + +eaintegration: + file.recurse: + - name: /opt/so/conf/elastic-fleet/integrations + - source: salt://elasticfleet/files/integrations + - user: 947 + - group: 939 +ea-integrations-load: + file.absent: + - name: /opt/so/state/eaintegrations.txt + - onchanges: + - file: eaintegration + - file: eadynamicintegration + {% else %} {{sls}}_state_not_allowed: diff --git a/salt/elasticfleet/enabled.sls b/salt/elasticfleet/enabled.sls index a3982e760..1c36594e2 100644 --- a/salt/elasticfleet/enabled.sls +++ b/salt/elasticfleet/enabled.sls @@ -47,6 +47,10 @@ so-elastic-fleet: - FLEET_CA=/etc/pki/tls/certs/intca.crt {% endif %} +so-elastic-fleet-integrations: + cmd.run: + - name: /usr/sbin/so-elastic-fleet-integration-policy-load + delete_so-elastic-fleet_so-status.disabled: file.uncomment: - name: /opt/so/conf/so-status/so-status.conf diff --git a/salt/elasticfleet/tools/sbin/so-elastic-fleet-agent-policy-view b/salt/elasticfleet/tools/sbin/so-elastic-fleet-agent-policy-view index 5e5b62de0..f82ec1664 100755 --- a/salt/elasticfleet/tools/sbin/so-elastic-fleet-agent-policy-view +++ b/salt/elasticfleet/tools/sbin/so-elastic-fleet-agent-policy-view @@ -9,11 +9,9 @@ POLICY_ID=$1 # Let's snag a cookie from Kibana -SESSIONCOOKIE=$(curl -K /opt/so/conf/elasticsearch/curl.config -c - -X GET http://localhost:5601/ | grep sid | awk '{print $7}') - -echo "Viewing agent policy $POLICY_ID" +SESSIONCOOKIE=$(curl -s -K /opt/so/conf/elasticsearch/curl.config -c - -X GET http://localhost:5601/ | grep sid | awk '{print $7}') # View agent policy -curl -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies/$POLICY_ID/full" | jq +curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -H "kbn-xsrf: true" -L -X GET "localhost:5601/api/fleet/agent_policies/$POLICY_ID" | jq echo diff --git a/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-policy-list b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-policy-list index 9dffc613c..86338a312 100755 --- a/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-policy-list +++ b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-policy-list @@ -7,11 +7,9 @@ . /usr/sbin/so-common # Let's snag a cookie from Kibana -SESSIONCOOKIE=$(curl -K /opt/so/conf/elasticsearch/curl.config -c - -X GET http://localhost:5601/ | grep sid | awk '{print $7}') - -echo "Setting up default Security Onion package policies for Elastic Agent..." +SESSIONCOOKIE=$(curl -s -K /opt/so/conf/elasticsearch/curl.config -c - -X GET http://localhost:5601/ | grep sid | awk '{print $7}') # List configured package policies -curl -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/package_policies" | jq +curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/package_policies" -H 'kbn-xsrf: true' | jq echo diff --git a/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-policy-load b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-policy-load index a65e29244..719748fb8 100755 --- a/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-policy-load +++ b/salt/elasticfleet/tools/sbin/so-elastic-fleet-integration-policy-load @@ -6,16 +6,44 @@ . /usr/sbin/so-common -# Initial Endpoints -for INTEGRATION in /opt/so/saltstack/default/salt/elasticfleet/files/integrations/endpoints-initial/*.json -do - printf "\n\nInitial Endpoint Policy - Loading $INTEGRATION\n" - elastic_fleet_integration_create "@$INTEGRATION" -done +RETURN_CODE=0 + +if [ ! -f /opt/so/state/eaintegrations.txt ]; then + # Initial Endpoints + for INTEGRATION in /opt/so/conf/elastic-fleet/integrations/endpoints-initial/*.json + do + printf "\n\nInitial Endpoints Policy - Loading $INTEGRATION\n" + elastic_fleet_integration_check "endpoints-initial" "$INTEGRATION" + + + if [ -n "$INTEGRATION_ID" ]; then + if [ "$NAME" != "elastic-defend-endpoints" ]; then + printf "\n\nIntegration $NAME exists - Updating integration\n" + elastic_fleet_integration_update "$INTEGRATION_ID" "@$INTEGRATION" + fi + else + printf "\n\nIntegration does not exist - Creating integration\n" + elastic_fleet_integration_create "@$INTEGRATION" + fi + done + + # Grid Nodes + for INTEGRATION in /opt/so/conf/elastic-fleet/integrations/grid-nodes/*.json + do + printf "\n\nGrid Nodes Policy - Loading $INTEGRATION\n" + elastic_fleet_integration_check "so-grid-nodes" "$INTEGRATION" + if [ -n "$INTEGRATION_ID" ]; then + printf "\n\nIntegration $NAME exists - Updating integration\n" + elastic_fleet_integration_update "$INTEGRATION_ID" "@$INTEGRATION" + else + printf "\n\nIntegration does not exist - Creating integration\n" + elastic_fleet_integration_create "@$INTEGRATION" + fi + done + if [[ "$RETURN_CODE" != "1" ]]; then + touch /opt/so/state/eaintegrations.txt + fi +else + exit $RETURN_CODE +fi -# Grid Nodes -for INTEGRATION in /opt/so/saltstack/default/salt/elasticfleet/files/integrations/grid-nodes/*.json -do - printf "\n\nGrid Nodes Policy - Loading $INTEGRATION\n" - elastic_fleet_integration_create "@$INTEGRATION" -done \ No newline at end of file