mirror of
https://github.com/Security-Onion-Solutions/securityonion.git
synced 2025-12-06 09:12:45 +01:00
Merge pull request #13547 from Security-Onion-Solutions/2.4/soupchanges
Elastic Fleet refactoring
This commit is contained in:
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"package": {
|
||||||
|
"name": "fleet_server",
|
||||||
|
"version": ""
|
||||||
|
},
|
||||||
|
"name": "fleet_server-1",
|
||||||
|
"namespace": "default",
|
||||||
|
"policy_id": "FleetServer_hostname",
|
||||||
|
"vars": {},
|
||||||
|
"inputs": {
|
||||||
|
"fleet_server-fleet-server": {
|
||||||
|
"enabled": true,
|
||||||
|
"vars": {
|
||||||
|
"custom": "server.ssl.supported_protocols: [\"TLSv1.2\", \"TLSv1.3\"]\nserver.ssl.cipher_suites: [ \"ECDHE-RSA-AES-128-GCM-SHA256\", \"ECDHE-RSA-AES-256-GCM-SHA384\", \"ECDHE-RSA-AES-128-CBC-SHA\", \"ECDHE-RSA-AES-256-CBC-SHA\", \"RSA-AES-128-GCM-SHA256\", \"RSA-AES-256-GCM-SHA384\"]"
|
||||||
|
},
|
||||||
|
"streams": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
#!/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
|
||||||
|
|
||||||
|
# Get all the fleet policies
|
||||||
|
json_output=$(curl -s -K /opt/so/conf/elasticsearch/curl.config -L -X GET "localhost:5601/api/fleet/agent_policies" -H 'kbn-xsrf: true')
|
||||||
|
|
||||||
|
# Extract the IDs that start with "FleetServer_"
|
||||||
|
POLICY=$(echo "$json_output" | jq -r '.items[] | select(.id | startswith("FleetServer_")) | .id')
|
||||||
|
|
||||||
|
# Iterate over each ID in the POLICY variable
|
||||||
|
for POLICYNAME in $POLICY; do
|
||||||
|
printf "\nUpdating Policy: $POLICYNAME\n"
|
||||||
|
|
||||||
|
# First get the Integration ID
|
||||||
|
elastic_fleet_integration_check "$POLICYNAME" "/opt/so/conf/elastic-fleet/integrations/fleet-server/fleet-server.json"
|
||||||
|
|
||||||
|
# Modify the default integration policy to update the policy_id and an with the correct naming
|
||||||
|
UPDATED_INTEGRATION_POLICY=$(jq --arg policy_id "$POLICYNAME" --arg name "fleet_server-$POLICYNAME" '
|
||||||
|
.policy_id = $policy_id |
|
||||||
|
.name = $name' /opt/so/conf/elastic-fleet/integrations/fleet-server/fleet-server.json)
|
||||||
|
|
||||||
|
# Now update the integration policy using the modified JSON
|
||||||
|
elastic_fleet_integration_update "$INTEGRATION_ID" "$UPDATED_INTEGRATION_POLICY"
|
||||||
|
done
|
||||||
@@ -12,7 +12,10 @@ if [ ! -f /opt/so/state/eaintegrations.txt ]; then
|
|||||||
# First, check for any package upgrades
|
# First, check for any package upgrades
|
||||||
/usr/sbin/so-elastic-fleet-package-upgrade
|
/usr/sbin/so-elastic-fleet-package-upgrade
|
||||||
|
|
||||||
# Second, configure Elastic Defend Integration seperately
|
# Second, update Fleet Server policies
|
||||||
|
/sbin/so-elastic-fleet-integration-policy-elastic-fleet-server
|
||||||
|
|
||||||
|
# Third, configure Elastic Defend Integration seperately
|
||||||
/usr/sbin/so-elastic-fleet-integration-policy-elastic-defend
|
/usr/sbin/so-elastic-fleet-integration-policy-elastic-defend
|
||||||
|
|
||||||
# Initial Endpoints
|
# Initial Endpoints
|
||||||
|
|||||||
@@ -66,7 +66,15 @@ printf "\n\n"
|
|||||||
# Create the Manager Fleet Server Host Agent Policy
|
# Create the Manager Fleet Server Host Agent Policy
|
||||||
# This has to be done while the Elasticsearch Output is set to the default Output
|
# This has to be done while the Elasticsearch Output is set to the default Output
|
||||||
printf "Create Manager Fleet Server Policy...\n"
|
printf "Create Manager Fleet Server Policy...\n"
|
||||||
elastic_fleet_policy_create "FleetServer_{{ GLOBALS.hostname }}" "Fleet Server - {{ GLOBALS.hostname }}" "true" "120"
|
elastic_fleet_policy_create "FleetServer_{{ GLOBALS.hostname }}" "Fleet Server - {{ GLOBALS.hostname }}" "false" "120"
|
||||||
|
|
||||||
|
# Modify the default integration policy to update the policy_id with the correct naming
|
||||||
|
UPDATED_INTEGRATION_POLICY=$(jq --arg policy_id "FleetServer_{{ GLOBALS.hostname }}" --arg name "fleet_server-{{ GLOBALS.hostname }}" '
|
||||||
|
.policy_id = $policy_id |
|
||||||
|
.name = $name' /opt/so/conf/elastic-fleet/integrations/fleet-server/fleet-server.json)
|
||||||
|
|
||||||
|
# Add the Fleet Server Integration to the new Fleet Policy
|
||||||
|
elastic_fleet_integration_create "$UPDATED_INTEGRATION_POLICY"
|
||||||
|
|
||||||
# Now we can create the Logstash Output and set it to to be the default Output
|
# Now we can create the Logstash Output and set it to to be the default Output
|
||||||
printf "\n\nCreate Logstash Output Config if node is not an Import or Eval install\n"
|
printf "\n\nCreate Logstash Output Config if node is not an Import or Eval install\n"
|
||||||
|
|||||||
@@ -9,6 +9,10 @@ if [ -f /usr/sbin/so-common ]; then
|
|||||||
. /usr/sbin/so-common
|
. /usr/sbin/so-common
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -f /usr/sbin/so-elastic-fleet-common ]; then
|
||||||
|
. /usr/sbin/so-elastic-fleet-common
|
||||||
|
fi
|
||||||
|
|
||||||
function usage() {
|
function usage() {
|
||||||
echo "Usage: $0 -o=<operation> -m=[id]"
|
echo "Usage: $0 -o=<operation> -m=[id]"
|
||||||
echo ""
|
echo ""
|
||||||
@@ -380,23 +384,31 @@ function add_elastic_fleet_package_registry_to_minion() {
|
|||||||
|
|
||||||
function create_fleet_policy() {
|
function create_fleet_policy() {
|
||||||
|
|
||||||
|
# First, set the default output to Elasticsearch
|
||||||
|
# This is required because of the license output bug
|
||||||
JSON_STRING=$(jq -n \
|
JSON_STRING=$(jq -n \
|
||||||
--arg NAME "FleetServer_$LSHOSTNAME" \
|
'{
|
||||||
--arg DESC "Fleet Server - $LSHOSTNAME" \
|
"name": "so-manager_elasticsearch",
|
||||||
'{"name": $NAME,"id":$NAME,"description":$DESC,"namespace":"default","monitoring_enabled":["logs"],"inactivity_timeout":1209600,"has_fleet_server":true}'
|
"type": "elasticsearch",
|
||||||
)
|
"is_default": true,
|
||||||
|
"is_default_monitoring": false
|
||||||
|
}')
|
||||||
|
|
||||||
# Create Fleet Sever Policy
|
curl -K /opt/so/conf/elasticsearch/curl.config -L -X PUT "localhost:5601/api/fleet/outputs/so-manager_elasticsearch" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"
|
||||||
curl -K /opt/so/conf/elasticsearch/curl.config -L -X POST "localhost:5601/api/fleet/agent_policies" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"
|
|
||||||
|
|
||||||
JSON_STRING_UPDATE=$( jq -n \
|
# Create the Fleet Server Policy
|
||||||
--arg NAME "FleetServer_$LSHOSTNAME" \
|
elastic_fleet_policy_create "FleetServer_$LSHOSTNAME" "Fleet Server - $LSHOSTNAME" "false" "120"
|
||||||
--arg DESC "Fleet Server - $LSHOSTNAME" \
|
|
||||||
'{"name":$NAME,"description":$DESC,"namespace":"default","monitoring_enabled":["logs"],"inactivity_timeout":120,"data_output_id":"so-manager_elasticsearch"}'
|
|
||||||
)
|
|
||||||
|
|
||||||
# Update Fleet Policy - ES Output
|
# Modify the default integration policy to update the policy_id with the correct naming
|
||||||
curl -K /opt/so/conf/elasticsearch/curl.config -L -X PUT "localhost:5601/api/fleet/agent_policies/FleetServer_$LSHOSTNAME" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING_UPDATE"
|
UPDATED_INTEGRATION_POLICY=$(jq --arg policy_id "FleetServer_$LSHOSTNAME" --arg name "fleet_server-$LSHOSTNAME" '
|
||||||
|
.policy_id = $policy_id |
|
||||||
|
.name = $name' /opt/so/conf/elastic-fleet/integrations/fleet-server/fleet-server.json)
|
||||||
|
|
||||||
|
# Add the Fleet Server Integration to the new Fleet Policy
|
||||||
|
elastic_fleet_integration_create "$UPDATED_INTEGRATION_POLICY"
|
||||||
|
|
||||||
|
# Set the default output back to the default
|
||||||
|
/sbin/so-elastic-fleet-outputs-update
|
||||||
}
|
}
|
||||||
|
|
||||||
function update_fleet_host_urls() {
|
function update_fleet_host_urls() {
|
||||||
|
|||||||
@@ -453,8 +453,6 @@ post_to_2.4.20() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
post_to_2.4.30() {
|
post_to_2.4.30() {
|
||||||
echo "Regenerating Elastic Agent Installers"
|
|
||||||
/sbin/so-elastic-agent-gen-installers
|
|
||||||
# there is an occasional error with this state: pki_public_ca_crt: TypeError: list indices must be integers or slices, not str
|
# there is an occasional error with this state: pki_public_ca_crt: TypeError: list indices must be integers or slices, not str
|
||||||
set +e
|
set +e
|
||||||
salt-call state.apply ca queue=True
|
salt-call state.apply ca queue=True
|
||||||
@@ -479,8 +477,7 @@ post_to_2.4.50() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
post_to_2.4.60() {
|
post_to_2.4.60() {
|
||||||
echo "Regenerating Elastic Agent Installers..."
|
echo "Nothing to apply"
|
||||||
so-elastic-agent-gen-installers
|
|
||||||
POSTVERSION=2.4.60
|
POSTVERSION=2.4.60
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -507,7 +504,8 @@ post_to_2.4.90() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
post_to_2.4.100() {
|
post_to_2.4.100() {
|
||||||
echo "Nothing to apply"
|
echo "Regenerating Elastic Agent Installers"
|
||||||
|
/sbin/so-elastic-agent-gen-installers
|
||||||
POSTVERSION=2.4.100
|
POSTVERSION=2.4.100
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -587,18 +585,7 @@ up_to_2.4.20() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
up_to_2.4.30() {
|
up_to_2.4.30() {
|
||||||
|
echo "Nothing to do for 2.4.30"
|
||||||
# Remove older defend integration json & installed integration
|
|
||||||
rm -f /opt/so/conf/elastic-fleet/integrations/endpoints-initial/elastic-defend-endpoints.json
|
|
||||||
|
|
||||||
. $UPDATE_DIR/salt/elasticfleet/tools/sbin/so-elastic-fleet-common
|
|
||||||
elastic_fleet_integration_remove endpoints-initial elastic-defend-endpoints
|
|
||||||
|
|
||||||
rm -f /opt/so/state/eaintegrations.txt
|
|
||||||
|
|
||||||
# Elastic Update for this release, so download Elastic Agent files
|
|
||||||
determine_elastic_agent_upgrade
|
|
||||||
rm -f /opt/so/state/estemplates*.txt
|
|
||||||
|
|
||||||
INSTALLEDVERSION=2.4.30
|
INSTALLEDVERSION=2.4.30
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user