Compare commits

..

1903 Commits

Author SHA1 Message Date
Jason Ertel 33ada95bbc Merge pull request #15167 from Security-Onion-Solutions/2.4/dev
2.4.190
2025-10-24 16:01:05 -04:00
Mike Reeves de9d3c9726 Merge pull request #15166 from Security-Onion-Solutions/2.4.190
2.4.190
2025-10-23 14:09:13 -04:00
Mike Reeves 39572f36f4 2.4.190 2025-10-23 14:07:05 -04:00
Jason Ertel 0994cd515a Merge pull request #15161 from Security-Onion-Solutions/jertel/wip
add exclusion toggle
2025-10-21 09:36:45 -04:00
Jason Ertel bdcd1e099d add exclusion toggle 2025-10-21 09:33:41 -04:00
Jorge Reyes c64760b5f4 Merge pull request #15153 from Security-Onion-Solutions/reyesj2-patch-1 2025-10-17 07:50:36 -05:00
Jorge Reyes d2aa60b961 log4j2 settings 2025-10-17 07:40:44 -05:00
Jorge Reyes 83d615d236 Merge pull request #15151 from Security-Onion-Solutions/reyesj2-patch-9
update log4j2 policy for ES json output
2025-10-16 16:25:47 -05:00
reyesj2 e910de0a06 update log4j2 policy for ES json output
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-10-16 16:19:55 -05:00
Josh Patterson 26b80aba38 Merge pull request #15148 from Security-Onion-Solutions/m0duspwnens-patch-1
do not log set_timezone in setup
2025-10-15 16:58:34 -04:00
Josh Patterson ee617eeff4 do not log set_timezone in setup
creates additional sosetup.log file
2025-10-15 16:44:24 -04:00
Josh Patterson 463766782c Merge pull request #15147 from Security-Onion-Solutions/amv
omit new hypervisor state name fp
2025-10-15 15:03:31 -04:00
Josh Patterson d9f70898dd omit new hypervisor state name fp 2025-10-15 14:59:37 -04:00
Mike Reeves 7e15c89510 Merge pull request #15145 from Security-Onion-Solutions/cogburn/add-multiline
Should be multiline
2025-10-15 13:20:26 -04:00
Corey Ogburn ed5bd19f0e Should be multiline 2025-10-15 09:00:27 -06:00
Josh Patterson feba97738f Merge pull request #15144 from Security-Onion-Solutions/amv
implement host os overhead based on role
2025-10-15 10:36:24 -04:00
Josh Patterson 348809bdbb implement host os overhead based on role 2025-10-15 10:30:14 -04:00
Jorge Reyes ca0edb1cab Merge pull request #15141 from Security-Onion-Solutions/reyesj2-logstash 2025-10-14 16:01:01 -05:00
reyesj2 0172f64f15 Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into reyesj2-logstash 2025-10-14 15:58:38 -05:00
Jorge Reyes 48f8944e3b Merge pull request #15139 from Security-Onion-Solutions/reyesj2-patch-4
event.module elasticsearch
2025-10-14 15:58:00 -05:00
reyesj2 3e22043ea6 es logging retention 2025-10-14 15:08:51 -05:00
coreyogburn e572b854b9 Merge pull request #15142 from Security-Onion-Solutions/cogburn/append-prompt
New Config Entries
2025-10-14 13:46:15 -06:00
Corey Ogburn c8aad2b03b New Config Entries 2025-10-14 13:24:43 -06:00
reyesj2 8773ebc3dc logstash wrappers for troubleshooting 2025-10-14 13:34:33 -05:00
reyesj2 2baf2478da add additional elasticsearch log output in json format for elasticsearch log integration to parse 2025-10-14 12:47:03 -05:00
reyesj2 378d37d74e add event.module to elasticsearch server logs 2025-10-14 12:44:51 -05:00
Josh Patterson f8c8e5d8e5 Merge pull request #15063 from Security-Onion-Solutions/impssu
Update so-saltstack-update
2025-10-14 11:27:29 -04:00
Josh Patterson dca38c286a Merge pull request #15137 from Security-Onion-Solutions/amv
allow user to create VMs that mount virtual disk for /nsm. new nsm_total grain
2025-10-14 11:25:57 -04:00
Josh Patterson 860710f5f9 remove .log extension 2025-10-14 11:03:00 -04:00
Josh Patterson d56af4acab remove .log extension 2025-10-14 10:58:57 -04:00
Josh Patterson 793e98f75c update annotation after failed vm removal from VMs file 2025-10-14 10:37:16 -04:00
Josh Patterson f9c5aa3fef remove PROCESS_STEPS from hypervisor annotation 2025-10-14 09:36:05 -04:00
Josh Patterson 254e782da6 add volume creation and configuration process steps 2025-10-10 22:15:20 -04:00
Josh Patterson fe3caf66a1 update failure description 2025-10-10 17:21:09 -04:00
Josh Patterson 09d699432a ui notification of nsm volume creation failure and cleanup of vm inventory in soc grid config for hypervisor 2025-10-10 17:07:02 -04:00
Jason Ertel 79b44586ce Merge pull request #15130 from Security-Onion-Solutions/jertel/wip
missed commit
2025-10-09 20:55:20 -04:00
Jason Ertel feddd90e41 missed commit 2025-10-09 20:50:09 -04:00
Jason Ertel ca935e4272 Merge pull request #15127 from Security-Onion-Solutions/jertel/wip
csv delimiter and query name
2025-10-09 15:48:37 -04:00
Jason Ertel 8f75bfb0a4 csv delimiter 2025-10-09 13:02:02 -04:00
Josh Patterson e551c6e037 owner and perms of volumes 2025-10-09 10:19:25 -04:00
Jorge Reyes 1c5a72ee85 Merge pull request #15124 from Security-Onion-Solutions/reyesj2/es-8188
ignore error for elastic-fleet agent
2025-10-08 14:13:46 -05:00
reyesj2 8a8ea04088 ignore error for elastic-fleet agent 2025-10-08 14:01:18 -05:00
Josh Patterson f730e23e30 Merge remote-tracking branch 'origin/2.4/dev' into amv 2025-10-08 14:06:48 -04:00
Josh Patterson a3e7649a3c minor hypervisor annotation 2025-10-08 13:52:34 -04:00
Josh Patterson af42c31740 update yaml for annotation 2025-10-08 13:24:54 -04:00
Jason Ertel a22c9f6bcf Merge pull request #15118 from Security-Onion-Solutions/jertel/wip
support non-async state apply
2025-10-08 13:15:05 -04:00
Jason Ertel bad9a16ebb support non-async state apply 2025-10-08 13:02:44 -04:00
Josh Patterson 7827e05c24 handle mounting vdb as nsm when nsm set in soc grid config 2025-10-08 12:18:34 -04:00
Josh Patterson e45b0bf871 var and comment update 2025-10-08 11:51:35 -04:00
Josh Patterson 659c039ba8 handle nsm volume size and non disk passthrough 2025-10-08 10:51:04 -04:00
Josh Patterson c7edaac42a nsm volume as vdb, os vda by ordering pci slots 2025-10-07 17:20:11 -04:00
Josh Patterson a1a8f75409 create and mount volume. being mounted as vda 2025-10-07 16:36:23 -04:00
Jorge Reyes 23e25fa2d7 Merge pull request #15111 from Security-Onion-Solutions/reyesj2/es-8188
UPGRADE: ES 8.18.8
2025-10-07 14:03:45 -05:00
Mike Reeves f077484121 Merge pull request #15114 from Security-Onion-Solutions/filters
Filters
2025-10-07 14:35:00 -04:00
Mike Reeves c16bf50493 Update files 2025-10-07 14:20:25 -04:00
reyesj2 564374a8fb generate new elastic agents in post soup 2025-10-07 12:21:26 -05:00
Josh Patterson 4ab4264f77 merge 2025-10-07 12:26:58 -04:00
Josh Patterson 60cccb21b4 create volume 2025-10-07 12:20:42 -04:00
reyesj2 39432198cc Elastic 8.18.8 elastic agent build 2025-10-06 16:25:52 -05:00
reyesj2 7af95317db es upgrade 8.18.8 pipeline updates 2025-10-06 16:23:22 -05:00
reyesj2 8675193d1f elasticsearch upgrade 8.18.8 2025-10-06 12:56:31 -05:00
Josh Patterson ac0d6c57e1 create common.grains state and nsm_total grain 2025-10-06 11:52:35 -04:00
Jorge Reyes 3db6542398 Merge pull request #15105 from Security-Onion-Solutions/reyesj2/logstashout
update logstash fleet output policy
2025-10-03 12:07:36 -05:00
reyesj2 9fd1b9aec1 make sure to pass in variables to json_string.. 2025-10-02 16:38:47 -05:00
reyesj2 e5563eb9b8 send full new ssl config 2025-10-02 15:29:55 -05:00
Josh Patterson e8de9e3c26 Merge pull request #15103 from Security-Onion-Solutions/byoh
byoh
2025-10-02 15:50:34 -04:00
reyesj2 c8a3603577 update logstash fleet output policy 2025-10-02 14:47:38 -05:00
Josh Patterson 05321cf1ed add --force-cleanup to nvme raid script 2025-10-02 15:03:11 -04:00
Josh Patterson 7deef44ff6 check defaults or pillar file 2025-10-02 11:55:50 -04:00
Mike Reeves 9752d61699 Add Filters 2025-10-01 19:59:28 -04:00
Mike Reeves 6b8e2e2643 Add Filters 2025-10-01 19:58:07 -04:00
Josh Patterson e3ac1dd1b4 Merge remote-tracking branch 'origin/2.4/dev' into byoh 2025-10-01 14:57:51 -04:00
Josh Patterson 86eca53d4b support for byodmodel 2025-10-01 14:57:25 -04:00
Jason Ertel bfd3d822b1 Merge pull request #15092 from Security-Onion-Solutions/jertel/wip
updates for wiretap lib
2025-10-01 12:20:06 -04:00
Jason Ertel 030e4961d7 updates for wiretap lib 2025-10-01 12:13:56 -04:00
Matthew Wright 14bd92067b Merge pull request #15091 from Security-Onion-Solutions/mwright/soc_soc-fix
Made lowBalanceColorAlert global
2025-10-01 11:03:50 -04:00
Matthew Wright 066e227325 made lowBalanceColorAlert global 2025-10-01 11:01:10 -04:00
coreyogburn f1cfb9cd91 Merge pull request #15087 from Security-Onion-Solutions/cogburn/health-timeout
New field for assistant health check
2025-09-30 15:49:52 -06:00
Corey Ogburn 5a2e704909 New field for assistant health check
The health check has a smaller, configurable timeout.
2025-09-30 15:33:20 -06:00
Jorge Reyes f04e54d1d5 Merge pull request #15086 from Security-Onion-Solutions/reyesj2/fltpatch
less strict exits for fleet configuration
2025-09-30 15:26:50 -05:00
reyesj2 e9af46a8cb less strict exits for fleet configuration 2025-09-30 14:28:42 -05:00
Josh Patterson b4b051908b Merge pull request #15082 from Security-Onion-Solutions/vlb2
fix hypervisor bridge setup
2025-09-29 17:19:22 -04:00
Jason Ertel 0148e5638c Merge pull request #15080 from Security-Onion-Solutions/jertel/wip
restart registry after upgrading images (in airgap mode)
2025-09-29 17:02:47 -04:00
Josh Patterson c8814d0632 removed commented code 2025-09-29 16:58:45 -04:00
Jason Ertel 6c892fed78 restart registry after upgrading images (in airgap mode) 2025-09-29 16:47:05 -04:00
Josh Patterson e775299480 so-user target minions with pillar elasticsearch:enabled:true 2025-09-26 15:43:49 -04:00
Josh Patterson c4ca9c62aa Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-09-26 12:52:37 -04:00
Jorge Reyes c37aeff364 Merge pull request #15075 from Security-Onion-Solutions/reyesj2/esfleetpatch
update so-elastic-fleet-setup
2025-09-26 11:36:35 -05:00
reyesj2 cdac49052f Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into reyesj2/esfleetpatch 2025-09-26 11:32:44 -05:00
reyesj2 8e5fa9576c create disabled so-manager_elasticsearch output policy first, update it then verify it is the only active output 2025-09-26 11:32:25 -05:00
Josh Patterson cd04d1e5a7 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-09-25 16:06:36 -04:00
Josh Patterson 1fb558cc77 managerhype br0 setup 2025-09-25 16:06:25 -04:00
Jason Ertel 7f1b76912c Merge pull request #15072 from Security-Onion-Solutions/jertel/wip
retry kratos pulls since this is the first image to install during setup
2025-09-25 15:45:02 -04:00
Jason Ertel 3a2ceb0b6f retry kratos pulls since this is the first image to install during setup 2025-09-25 15:40:00 -04:00
Matthew Wright 1345756fce Merge pull request #15071 from Security-Onion-Solutions/mwright/temp
Updated default investigation prompt
2025-09-25 15:18:20 -04:00
Matthew Wright d81d9a0722 small tweak to investigation prompt 2025-09-25 14:45:06 -04:00
Jorge Reyes 55074fda69 Merge pull request #15070 from Security-Onion-Solutions/reyesj2-patch-1
make sure fleet-default-output is not set as either default output p…
2025-09-25 09:55:54 -05:00
Jorge Reyes 23e12811a1 make sure fleet-default-output is not set as either default output policy 2025-09-25 09:51:32 -05:00
Josh Patterson 5d1edf6d86 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-09-24 17:32:08 -04:00
Josh Patterson c836dd2acd set interface for network.ip_addrs for hypervisors 2025-09-24 16:50:29 -04:00
Josh Patterson 3a87af805f update service file, use salt.minion state to update mine_functions 2025-09-24 15:19:46 -04:00
Jorge Reyes 328ac329ec Merge pull request #15064 from Security-Onion-Solutions/reyesj2-patch-1
typo
2025-09-24 09:04:14 -05:00
Jorge Reyes a3401aad11 typo 2025-09-24 08:56:40 -05:00
Josh Patterson 5a67b89a80 Update so-saltstack-update
add -v -vv and test / dry run mode
2025-09-24 09:49:02 -04:00
Jorge Reyes 431f71cc82 Merge pull request #15047 from Security-Onion-Solutions/reyesj2/es-fleet-patch
rework fleet scripts
2025-09-24 07:45:43 -05:00
Josh Patterson 4587301cca only update mine for managerhype during setup 2025-09-23 15:56:00 -04:00
Josh Patterson 14ddbd32ad salt-minion service file changes for hypervisor and managerhype 2025-09-22 16:38:40 -04:00
Josh Patterson 4599b95ae7 separate salt-minion service file 2025-09-22 16:37:16 -04:00
reyesj2 c92dc580a2 centralize MINION_ROLE lookup_role 2025-09-19 13:17:52 -05:00
reyesj2 4666aa9818 Merge branch 'reyesj2/es-fleet-patch' of github.com:Security-Onion-Solutions/securityonion into reyesj2/es-fleet-patch 2025-09-19 12:55:08 -05:00
reyesj2 f066baf6ba use only the characters up to the last seen '_' 2025-09-19 12:54:04 -05:00
Jorge Reyes ba710c9944 import or eval should get updated 2025-09-19 12:26:08 -05:00
reyesj2 198695af03 Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into reyesj2/es-fleet-patch 2025-09-19 11:56:53 -05:00
Jorge Reyes fec78f5fb5 Merge pull request #15051 from Security-Onion-Solutions/reyesj2/patch-lgchk
add oom check to so-log-check
2025-09-19 11:41:55 -05:00
reyesj2 d03dd7ac2d check for oom kill only in the last 24 hours
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-09-19 11:32:13 -05:00
reyesj2 d2dd52b42a Merge branch 'reyesj2/patch-lgchk' of github.com:Security-Onion-Solutions/securityonion into reyesj2/es-fleet-patch 2025-09-19 11:12:09 -05:00
reyesj2 c9db52433f add oom check to so-log-check
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-09-19 11:08:42 -05:00
reyesj2 138849d258 more typos 2025-09-18 17:33:42 -05:00
reyesj2 a9ec12e402 Merge branch 'reyesj2/es-fleet-patch' of github.com:Security-Onion-Solutions/securityonion into reyesj2/es-fleet-patch 2025-09-18 16:41:34 -05:00
reyesj2 87281efc24 typo 2025-09-18 16:41:33 -05:00
reyesj2 29ac4f23c6 typo 2025-09-18 16:26:37 -05:00
reyesj2 878a3f8962 flip logic to check there aren't two default policies and fleet-default-output is disabled 2025-09-18 16:05:34 -05:00
reyesj2 21e27bce87 Merge branch 'reyesj2/es-fleet-patch' of github.com:Security-Onion-Solutions/securityonion into reyesj2/es-fleet-patch 2025-09-18 15:42:28 -05:00
reyesj2 336ca0dbbd typos 2025-09-18 15:42:25 -05:00
reyesj2 d9eba3cd0e typo 2025-09-18 15:17:22 -05:00
reyesj2 81b7e2b420 Merge remote-tracking branch 'origin' into reyesj2/es-fleet-patch 2025-09-18 14:34:41 -05:00
reyesj2 cd5483623b update import/eval fleet output config -- try to prevent corrupt dual 'default' output polices from having a successful installation 2025-09-18 14:33:34 -05:00
reyesj2 faa112eddf update last so-elastic-fleet-common functions 2025-09-18 12:18:16 -05:00
reyesj2 f663f22628 elastic_fleet_integration_id 2025-09-18 10:27:54 -05:00
reyesj2 8b07ff453d elastic_fleet_integration_policy_package_version 2025-09-18 10:21:07 -05:00
reyesj2 24a0fa3f6d add fleet_api wrapper for curl retries 2025-09-18 10:15:57 -05:00
reyesj2 a5011b398d add err check and retries to elastic_fleet_integration_policy_package_name and associated scripts 2025-09-18 09:39:56 -05:00
reyesj2 5b70398c0a add error check & retries to elastic_fleet_integration_policy_names and associated scripts 2025-09-17 15:35:20 -05:00
reyesj2 f3aaee1e41 update elastic_fleet_agent_policy_ids scripts already check rc 2025-09-17 14:59:41 -05:00
reyesj2 d0e875928d add error checking and retries for elastic_fleet_installed_packages & associated script 2025-09-17 14:59:13 -05:00
reyesj2 3e16bc8335 Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into reyesj2/es-fleet-patch 2025-09-17 14:37:43 -05:00
Doug Burks c1d85493df Merge pull request #15045 from Security-Onion-Solutions/dougburks-patch-1
Update 2-4.yml
2025-09-17 14:23:23 -04:00
Doug Burks e01d0f81ea Update 2-4.yml 2025-09-17 14:22:40 -04:00
Jason Ertel 376d0f3295 Merge pull request #15044 from Security-Onion-Solutions/jertel/wip
bump version
2025-09-17 14:22:02 -04:00
Jason Ertel 4418623f73 bump version 2025-09-17 14:20:44 -04:00
Doug Burks d1f4e26e29 Merge pull request #15043 from Security-Onion-Solutions/2.4/dev
2.4.180
2025-09-17 14:15:32 -04:00
Doug Burks 5166db1caa Merge pull request #15042 from Security-Onion-Solutions/2.4/main
Merge pull request #14917 from Security-Onion-Solutions/2.4/dev
2025-09-17 13:13:46 -04:00
Doug Burks ff5ad586af Merge pull request #15040 from Security-Onion-Solutions/dougburks-patch-1
2.4.180
2025-09-17 13:00:26 -04:00
reyesj2 9e24d21282 remove unused functions from so-elastic-fleet-common 2025-09-17 11:41:27 -05:00
reyesj2 5806999f63 add error check & retries to elastic_fleet_bulk_package_install 2025-09-17 11:39:06 -05:00
Doug Burks 4dae1afe0b Add files via upload 2025-09-17 12:37:29 -04:00
Doug Burks 456cad1ada Update DOWNLOAD_AND_VERIFY_ISO.md for 2.4.180 2025-09-17 12:36:55 -04:00
reyesj2 063a2b3348 update elastic_fleet_package_version_check & elastic_fleet_package_install to add error checking + retries. Update related scripts 2025-09-16 21:56:53 -05:00
reyesj2 bcd2e95fbe add error checking and retries to elastic_fleet_integration_policy_upgrade 2025-09-16 21:22:03 -05:00
reyesj2 94e8cd84e6 because of more aggressive exits use salt to rerun script as needed 2025-09-16 21:07:33 -05:00
reyesj2 948d72c282 add error check and retry to elastic_fleet_integration_update 2025-09-16 21:07:02 -05:00
reyesj2 bdeb92ab05 add err check and retries for elastic_fleet_integration_create 2025-09-16 20:30:45 -05:00
reyesj2 fdb5ad810a add err check and retries around func elastic_fleet_policy_create 2025-09-16 20:10:48 -05:00
reyesj2 f588a80ec7 fix jq error when indices don't exist (seen on fresh installs when fleet hasn't ever been installed) 2025-09-16 10:37:26 -05:00
Jorge Reyes 562b7e54cb Merge pull request #15031 from Security-Onion-Solutions/reyesj2/kfoutput
fix case of broken kafka output policy when new receiver is added and…
2025-09-15 15:33:48 -05:00
Jorge Reyes 3c847bca8b Merge pull request #15034 from Security-Onion-Solutions/reyesj2/patch31
run so-elastic-agent-gen-installers
2025-09-15 15:28:42 -05:00
reyesj2 ce2cc26224 run so-elastic-agent-gen-installers 2025-09-15 15:25:38 -05:00
Jorge Reyes f3c574679c Merge pull request #15033 from Security-Onion-Solutions/reyesj2/patch31
8.18.6 agent
2025-09-15 15:21:46 -05:00
reyesj2 5da3fed1ce 8.18.6 agent 2025-09-15 15:19:43 -05:00
reyesj2 e6bcf5db6b fix case of broken kafka output policy when new receiver is added and secret storage was overwritten 2025-09-15 13:46:02 -05:00
Jorge Reyes 4d24c57903 Merge pull request #15028 from Security-Onion-Solutions/reyesj2/ea-alerter
agent monitor template & dataset name update
2025-09-12 14:45:20 -05:00
reyesj2 0606c0a454 agent monitor template & dataset name update 2025-09-12 14:26:22 -05:00
Josh Patterson bb984e05e3 Merge pull request #15026 from Security-Onion-Solutions/vlb2
fix role check
2025-09-12 14:34:18 -04:00
Jorge Reyes b35b0aaf2c Merge pull request #14941 from Security-Onion-Solutions/reyesj2/lgest
zeek dns.resolved_ip
2025-09-12 13:22:40 -05:00
Josh Patterson 62f04fa5dd fix role check 2025-09-12 14:09:30 -04:00
Josh Brower d89df5f0dd Merge pull request #15025 from Security-Onion-Solutions/2.4/fixes
Parsing fix
2025-09-12 13:44:03 -04:00
DefensiveDepth f0c1922600 Support endpoint logs with no host.ip field 2025-09-12 13:31:34 -04:00
DefensiveDepth ab2cdd18ed Support endpoint logs with no host.ip field 2025-09-12 13:29:43 -04:00
Jorge Reyes 889bb7ddf4 Merge pull request #15024 from Security-Onion-Solutions/reyesj2/pypy
fix analyzers and upgrade deps
2025-09-12 11:11:34 -05:00
reyesj2 a959f90d0b Merge remote-tracking branch 'origin/2.4/dev' into reyesj2/pypy 2025-09-12 11:05:54 -05:00
Jorge Reyes a54cd004d6 Merge pull request #15013 from Security-Onion-Solutions/reyesj2/kfoutput
update kafka output policy
2025-09-12 07:34:54 -05:00
Jorge Reyes 5100032fbd Merge pull request #15022 from Security-Onion-Solutions/reyesj2/cfqdn-recv
receiver custom fqdn
2025-09-11 16:33:41 -05:00
reyesj2 0f235baa7e receiver custom fqdn 2025-09-11 16:14:43 -05:00
Jorge Reyes e5660b8c8e Merge pull request #15020 from Security-Onion-Solutions/reyesj2/essuriroll
suricata metadata index rollover 1d -> 30d
2025-09-11 16:03:30 -05:00
reyesj2 588a1b86d1 suricata metadata index rollover 1d -> 30d 2025-09-11 15:46:45 -05:00
Jorge Reyes 46f0afa24b Merge pull request #15019 from Security-Onion-Solutions/reyesj2/ea-alerter
lower filestream fingerprint length
2025-09-11 14:34:46 -05:00
reyesj2 a7651b2734 lower filestream fingerprint length 2025-09-11 14:30:49 -05:00
reyesj2 890f76e45c avoid delay in log ingest after a forced kafka output policy update 2025-09-10 20:21:11 -05:00
Jorge Reyes e6eecc93c8 Merge pull request #15012 from Security-Onion-Solutions/reyesj2/ea-alerter
add configurable realert threshold per agent
2025-09-10 13:19:21 -05:00
reyesj2 8dc0f8d20e fix elastic agent ssl unpack error 2025-09-10 12:49:30 -05:00
reyesj2 fbdc0c4705 add configurable realert threshold per agent 2025-09-10 10:56:09 -05:00
Josh Patterson d1a2b57aa2 Merge pull request #15011 from Security-Onion-Solutions/hideroni
don't show sensoroni config changes
2025-09-10 09:15:55 -04:00
Josh Patterson f5ec1d4b7c don't show sensoroni config changes 2025-09-10 09:09:02 -04:00
Jorge Reyes 0aa556e375 Merge pull request #15009 from Security-Onion-Solutions/reyesj2/ea-alerter
so-elastic-agent-monitor
2025-09-09 17:00:39 -05:00
Josh Patterson d9e86c15bc Merge pull request #15010 from Security-Onion-Solutions/vlb2
fix repo files to remove
2025-09-09 17:15:52 -04:00
Josh Patterson 4107fa006f fix repo files to remove 2025-09-09 16:51:42 -04:00
reyesj2 29980ea958 offline threshold check 2025-09-09 15:39:55 -05:00
reyesj2 8f36d2ec00 update log file name 2025-09-09 15:38:50 -05:00
coreyogburn 10511b8431 Merge pull request #15008 from Security-Onion-Solutions/cogburn/fix-templates
Fix Index Patterns
2025-09-09 14:03:36 -06:00
Corey Ogburn 2535ae953d Fix Index Patterns
so-assistant-chat and so-assistant-session both had templates with a trailing dash that prevented the pattern from applying to the name of the indices.
2025-09-09 14:00:01 -06:00
coreyogburn 2f68cd7483 Merge pull request #14991 from Security-Onion-Solutions/cogburn/wip-module
Cogburn/wip module
2025-09-09 10:32:06 -06:00
reyesj2 6655276410 force update to kafka-fleet-output-policy 2025-09-08 21:13:29 -05:00
reyesj2 9f7bcb0f7d add --force flag to so-kafka-fleet-output-policy & default to using fleet secret storage for client key 2025-09-08 21:13:11 -05:00
Corey Ogburn aa43177d8c Fix Setting Name
enabledInSoc => enabled
2025-09-08 09:13:25 -06:00
Matthew Wright 12959d114c added threshold config fields for assistant 2025-09-08 09:13:25 -06:00
reyesj2 855b489c4b datastream 2025-09-08 09:13:24 -06:00
Corey Ogburn 673f9cb544 Responding to Feedback 2025-09-08 09:13:24 -06:00
Corey Ogburn 0a3ff47008 Cleanup Annotations
Removed fields no longer need annotations.
2025-09-08 09:13:24 -06:00
Corey Ogburn 834e34128d Non-dev URL 2025-09-08 09:13:23 -06:00
Corey Ogburn 73776f8d11 Cleaning up New ES Indexes 2025-09-08 09:13:23 -06:00
Corey Ogburn 120e61e45c ClientParams
Removed investigation prompt from module settings and moved to client settings, added enabledInSoc.
2025-09-08 09:13:23 -06:00
Corey Ogburn fc2d450de0 Update Settings
The apiKey will be built off of the license rather than a new setting. The model is hardcoded for now at the AI Gateway level. We're going to use the investigationPrompt as a trigger for the feature being visible in the UI but by default will be blank for now.
2025-09-08 09:13:22 -06:00
Corey Ogburn cea4eaf081 Updated Assistant Mapping 2025-09-08 09:13:22 -06:00
Corey Ogburn b1753f86f9 New Message Structure 2025-09-08 09:13:22 -06:00
Corey Ogburn 6323fbf46b Content Object 2025-09-08 09:13:21 -06:00
Corey Ogburn ba601c39b3 Rough Go at New Mappings/Settings 2025-09-08 09:13:21 -06:00
Corey Ogburn ec27517bdd New Config Values
New config values with annotations and defaults.

Updated Nginx config to allow streaming requests to not be buffered on the way to the client.
2025-09-08 09:13:08 -06:00
Josh Brower 624ec3c93e Merge pull request #15003 from Security-Onion-Solutions/fix/wording
Make it clear that Fleet Nodes will need to be reinstalled
2025-09-08 09:10:43 -04:00
Josh Brower f318a84c18 Update so-elastic-fleet-reset 2025-09-08 09:03:33 -04:00
Josh Patterson 8cca58dba9 Merge pull request #14998 from Security-Onion-Solutions/vlb2
manager do hypervisor things
2025-09-05 17:13:37 -04:00
Jason Ertel 6c196ea61a Merge branch '2.4/dev' into vlb2 2025-09-05 17:11:10 -04:00
Josh Patterson 207572f2f9 remove debug added to fail_setup 2025-09-05 14:16:03 -04:00
Josh Patterson 4afc986f48 firewall and logstash pipeline for managerhype 2025-09-05 13:14:47 -04:00
Jorge Reyes ba5d140d4b Merge pull request #14996 from Security-Onion-Solutions/reyesj2/ea-alerter
so-elastic-agent-monitor
2025-09-05 10:41:59 -05:00
reyesj2 348f9dcaec prevent multiple script instances using file lock 2025-09-05 10:01:24 -05:00
reyesj2 915b9e7bd7 use logrotate 2025-09-05 09:22:44 -05:00
reyesj2 dfec29d18e custom kquery 2025-09-04 15:37:28 -05:00
Josh Patterson 38ef4a6046 pass pillar properly 2025-09-04 11:02:27 -04:00
Josh Patterson a007fa6505 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-09-03 09:52:49 -04:00
reyesj2 1a32a0897c Merge remote-tracking branch 'origin/2.4/dev' into reyesj2/ea-alerter 2025-09-02 17:11:21 -05:00
reyesj2 e26310d172 elastic agent offline alerter
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-09-02 17:00:03 -05:00
coreyogburn c7cdb0b466 Merge pull request #14986 from Security-Onion-Solutions/cogburn/internal-reverse
Move EnableReverseLookup
2025-09-02 15:25:19 -06:00
Corey Ogburn df0b484b45 More Descriptive Description
Include instructions for how to add local lookups and a help link.
2025-09-02 15:07:13 -06:00
Corey Ogburn 2181cddf49 Move EnableReverseLookup
Move EnableReverseLookup and it's annotation from ClientParams to ServerConfig.
2025-09-02 14:09:55 -06:00
Jorge Reyes a2b6968cef Merge pull request #14975 from Security-Onion-Solutions/reyesj2/es8186
ES 8.18.6 upgrade
2025-09-02 10:14:33 -05:00
Josh Patterson 285fbc2783 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-09-02 09:23:24 -04:00
Josh Patterson 94c5a1fd98 Merge pull request #14980 from Security-Onion-Solutions/mikebond
Mikebond
2025-08-29 11:08:17 -04:00
Mike Reeves 19362fe5e5 Update so-combine-bond 2025-08-29 11:06:25 -04:00
Josh Patterson a7a81e9825 always manage script, only run it if bond0 exists 2025-08-29 11:05:42 -04:00
Mike Reeves 31484d1158 Merge pull request #14978 from Security-Onion-Solutions/mikebond
only manage bond script if bond0 exists
2025-08-29 10:07:24 -04:00
Josh Patterson f51cd008f2 only manage bond script if bond0 exists 2025-08-29 10:04:56 -04:00
reyesj2 a5675a79fe es 8.18.6 pipeline upd 2025-08-28 19:45:17 -05:00
reyesj2 1ea7b3c09f es 8.18.6 2025-08-28 18:27:56 -05:00
Jorge Reyes d9127a288f Merge pull request #14957 from Security-Onion-Solutions/reyesj2-patch-6
enable additional fleetnode state
2025-08-28 14:19:03 -05:00
Josh Patterson ebb78bc9bd Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-08-28 09:21:33 -04:00
Josh Patterson e5920b6465 add managerhype back to whiptail 2025-08-28 09:21:20 -04:00
Mike Reeves 153a99a002 Merge pull request #14971 from Security-Onion-Solutions/mikebond
and nic channel customization
2025-08-27 18:42:18 -04:00
Josh Patterson 69a5e1e2f5 remove md file 2025-08-27 15:14:15 -04:00
Josh Patterson 0858160be2 support for modifying nic channels 2025-08-27 14:51:57 -04:00
Mike Reeves ccd79c814d Add script for bond0 channels 2025-08-27 09:53:37 -04:00
Josh Patterson a8a01b8191 Merge branch 'bravo' into vlb2 2025-08-26 14:59:23 -04:00
Josh Patterson ac2c044a94 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-08-26 14:55:06 -04:00
Josh Patterson e10d00d114 support for managerhype 2025-08-26 14:54:37 -04:00
Josh Patterson cbdd369a18 ensure x509 in mine 2025-08-25 08:39:55 -04:00
reyesj2 b2e7f58b3d analyzer test updates 2025-08-22 17:36:48 -05:00
reyesj2 a6600b8762 elasticsearch dep upgrades 2025-08-22 17:11:06 -05:00
reyesj2 5479d49379 greynoise breakup long line for linter 2025-08-22 16:00:05 -05:00
Jason Ertel 304985b61e Merge pull request #14959 from Security-Onion-Solutions/jertel/wip
rpt
2025-08-22 16:55:45 -04:00
coreyogburn d6c725299b Merge pull request #14956 from Security-Onion-Solutions/cogburn/playbook-repo-name
Ruleset Name UiElement
2025-08-22 14:02:42 -06:00
Corey Ogburn d99857002d Improved Label
The underlying field is called "rulesetName" but for playbook repos we're not talking about rulesets. Improved the label for user experience.
2025-08-22 13:18:22 -06:00
Corey Ogburn 2a6c74917e Ruleset Name UiElement
Add a missing UiElement so all the repo fields are represented in the UI.
2025-08-22 13:00:17 -06:00
reyesj2 9f0bd4bad3 spamhaus enable multiline annotation on nameservers entries 2025-08-22 13:51:05 -05:00
reyesj2 924b06976c spamhaus config typos 2025-08-22 13:50:40 -05:00
Jason Ertel 1357f19e48 update wording 2025-08-22 13:25:25 -04:00
Jason Ertel c91e9ea4e0 return to normalcy 2025-08-22 13:23:19 -04:00
reyesj2 c2c96dad6e bump version 2025-08-22 08:43:48 -05:00
reyesj2 1a08833e77 typo 2025-08-22 08:41:03 -05:00
reyesj2 d16dfcf4e8 emailrep dep upgrades 2025-08-21 16:22:48 -05:00
reyesj2 b79c7b0540 sublime dep upgrades 2025-08-21 16:17:44 -05:00
reyesj2 9f45792217 pulsedive dep upgrades 2025-08-21 16:07:08 -05:00
reyesj2 d3108c3549 greynoise dep upgrade + use community version with no auth 2025-08-21 14:30:21 -05:00
reyesj2 7d883cb5e0 echotrail api no longer available 2025-08-21 12:38:00 -05:00
reyesj2 ebd81c1df9 otx dep upgrades 2025-08-21 12:22:47 -05:00
reyesj2 418dbee9fa virustotal dep upgrades 2025-08-21 12:15:13 -05:00
reyesj2 cccc3bf625 urlscan dep upgrades 2025-08-21 12:06:35 -05:00
reyesj2 a3e0072631 update readme threatfox uses auth for api now 2025-08-21 11:48:17 -05:00
reyesj2 220e485312 threatfox dep upgrade + use auth for api access 2025-08-21 11:47:54 -05:00
reyesj2 67f8fca043 spamhaus dep upgrades 2025-08-21 11:32:13 -05:00
reyesj2 0e0ab8384c localfile dep upgrade 2025-08-21 11:26:59 -05:00
reyesj2 58228f70ca malwarehashregistry dep upgrades 2025-08-21 11:16:28 -05:00
reyesj2 7968de06b4 enable access to global stig pillar 2025-08-21 11:06:29 -05:00
Mike Reeves 87fdd90f56 Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into 2.4/dev 2025-08-21 10:39:34 -04:00
Josh Patterson 65e7e56fbe Merge pull request #14950 from Security-Onion-Solutions/180soup
180 soup base
2025-08-21 09:50:53 -04:00
Josh Patterson 424fdff934 180 soup base 2025-08-21 09:43:30 -04:00
Jorge Reyes f72996d9d1 Merge pull request #14949 from Security-Onion-Solutions/reyesj2-patch-7
update pcap permissions when no stenographer user exists
2025-08-21 08:33:30 -05:00
reyesj2 d77556c672 pcap dir 2025-08-21 08:25:48 -05:00
reyesj2 c412e9bad2 malwarebazaar api uses auth 2025-08-20 21:04:05 -05:00
reyesj2 87a28e8ce7 malwarebazaar dep upgrades + use auth 2025-08-20 20:59:23 -05:00
reyesj2 9ca0c7d53a urlhaus dep upgrades + update to use authenticated abusech api 2025-08-20 17:20:10 -05:00
reyesj2 2e94e452ed whoislookup py 3.13 2025-08-20 16:39:13 -05:00
reyesj2 6a0d40ee0d leave requirements.txt as is 2025-08-20 16:20:26 -05:00
reyesj2 0cebcf4432 upgrade whoislookup deps 2025-08-20 16:09:08 -05:00
reyesj2 ed0e24fcaf Merge remote-tracking branch 'origin/2.4/dev' into reyesj2/ol9stg 2025-08-20 12:10:04 -05:00
reyesj2 24be2f869b enable stig on fleet nodes 2025-08-20 12:08:50 -05:00
reyesj2 f8058a4a3a disable showing large stig profile update in salt log 2025-08-20 12:06:54 -05:00
reyesj2 d0ba6df2fc remove any "" from dns.resolved_ip 2025-08-19 13:44:24 -05:00
reyesj2 95bee91b12 zeek dns.resolved_ip 2025-08-19 11:20:59 -05:00
Jason Ertel 751b5bd556 switch version for tests 2025-08-19 10:11:50 -04:00
Jason Ertel 77273449c9 fix typo 2025-08-18 16:58:52 -04:00
Jason Ertel 46e1f1bc5c fix typo 2025-08-18 16:12:34 -04:00
Jason Ertel 884bec7465 fix typo 2025-08-18 15:01:49 -04:00
Jason Ertel 8d3220f94b fix salt issue 2025-08-18 14:31:01 -04:00
Jason Ertel 9cb42911dc Merge branch '2.4/dev' into jertel/wip 2025-08-18 09:54:58 -04:00
Jason Ertel a3cc6f025e reports 2025-08-18 09:54:40 -04:00
Jorge Reyes 6fae4a9974 Merge pull request #14933 from Security-Onion-Solutions/reyesj2/ol9stg
profile update
2025-08-15 16:26:11 -05:00
reyesj2 f7a1a3a172 gui / nongui profile 2025-08-15 16:07:54 -05:00
reyesj2 292e1ad782 use chrony system default 2025-08-15 15:19:31 -05:00
reyesj2 af1fe86586 update chrony config 2025-08-15 15:16:36 -05:00
Josh Patterson 97100cdfdd Merge pull request #14930 from Security-Onion-Solutions/vlb2
Vlb2
2025-08-14 16:37:15 -04:00
Josh Patterson 5f60ef1541 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-08-14 16:36:37 -04:00
Josh Patterson c7e7a0a871 add more detail to fail_setup output 2025-08-14 16:36:09 -04:00
reyesj2 f09eff530e profile upd 2025-08-14 15:17:01 -05:00
reyesj2 50b34a116a disable rpm verify hash, salt packages are modified before install for salt bootstrap process 2025-08-14 15:02:59 -05:00
reyesj2 42874fb0d0 Merge remote-tracking branch 'origin/2.4/dev' into reyesj2/ol9stg 2025-08-13 12:50:24 -05:00
Josh Patterson 482847187c Merge pull request #14925 from Security-Onion-Solutions/vlb2
firewall allow hypervisor for managersearch and standalone
2025-08-12 16:45:27 -04:00
reyesj2 a19b99268d don't create unused zeek home directory 2025-08-12 15:44:50 -05:00
reyesj2 3c5a03d7b6 fix /nsm/pcap no group/user ownership 2025-08-12 15:35:30 -05:00
reyesj2 c1a5c2b2d1 set elasticfleet aritifact registry artifact file permissions 2025-08-12 14:39:35 -05:00
Josh Patterson baf0f7ba95 firewall allow hypervisor for managersearch and standalone 2025-08-12 14:08:15 -04:00
Mike Reeves ee27965314 Merge pull request #14922 from Security-Onion-Solutions/TOoSmOotH-patch-1
Update VERSION
2025-08-12 11:00:20 -04:00
Mike Reeves d02093295b Update 2-4.yml 2025-08-12 10:59:17 -04:00
Mike Reeves 6381444fdc Update VERSION 2025-08-12 10:58:11 -04:00
Mike Reeves 01b313868d Merge pull request #14917 from Security-Onion-Solutions/2.4/dev
2.4.170
2025-08-12 10:06:07 -04:00
Mike Reeves 3859ebd69c Merge pull request #14919 from Security-Onion-Solutions/2.4.170
2.4.170
2025-08-12 09:47:05 -04:00
Mike Reeves 9753e431e3 Merge remote-tracking branch 'origin/2.4/main' into 2.4.170 2025-08-12 09:45:06 -04:00
Mike Reeves b307667ae2 Merge remote-tracking branch 'origin/2.4/main' into 2.4/dev 2025-08-12 09:44:02 -04:00
Mike Reeves 5d7dcbbcee Merge pull request #14918 from Security-Onion-Solutions/2.4.170
2.4.170
2025-08-12 09:42:26 -04:00
Mike Reeves 281b395053 2.4.170 2025-08-12 09:40:18 -04:00
Mike Reeves 3518f39d39 Merge pull request #14916 from Security-Onion-Solutions/2.4.170
2.4.170
2025-08-12 09:37:46 -04:00
Mike Reeves ae0ffc4977 2.4.170 2025-08-12 09:32:42 -04:00
Josh Patterson bc2f716c99 Merge pull request #14910 from Security-Onion-Solutions/vlb2
remove managerhype from whiptail
2025-08-07 16:19:59 -04:00
Josh Patterson 9617da1791 remove managerhype from whiptail 2025-08-07 16:13:59 -04:00
Josh Patterson 2ba5d7d64b Merge pull request #14909 from Security-Onion-Solutions/vlb2
Vlb2
2025-08-07 15:26:25 -04:00
Josh Patterson 437b9016ca Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-08-07 15:02:57 -04:00
Josh Patterson c5db0a7195 more ed25519 to ecdsa 2025-08-07 15:02:45 -04:00
Josh Patterson 82894d88b6 ecdsa instead of ed25519 2025-08-07 14:40:58 -04:00
reyesj2 4a4146f515 ol9 profile update 2025-08-05 13:02:44 -05:00
Josh Patterson 59a4d0129f Merge pull request #14899 from Security-Onion-Solutions/vlb2
handle - in hypervisor hostname
2025-08-04 17:50:41 -04:00
Josh Patterson 5cf2149218 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-08-04 15:25:43 -04:00
Josh Patterson 453c32df0d handle - in hypervisor hostname 2025-08-04 15:25:26 -04:00
Josh Patterson 1df10b80b2 Merge pull request #14896 from Security-Onion-Solutions/vlb2
fix hyper bridge setup. simplify cpu/mem regex
2025-08-01 11:04:49 -04:00
Josh Patterson 9d96a11753 update usage 2025-08-01 08:55:38 -04:00
Josh Patterson e9e3252bb5 nvme script move nsm if mounted 2025-08-01 08:53:45 -04:00
Josh Patterson 930c8147e7 simplify cpu and memory regex 2025-08-01 08:52:21 -04:00
Josh Patterson 378ecad94c Merge pull request #14893 from Security-Onion-Solutions/vlb2
Vlb2
2025-07-30 16:38:47 -04:00
Josh Patterson 02299a6742 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-07-30 16:37:27 -04:00
Josh Patterson 15cbc626c4 resolve for already configured RAID 2025-07-30 16:37:19 -04:00
Josh Patterson 8720a4540a remove extra line 2025-07-30 16:36:40 -04:00
Josh Patterson 7b5980bfe5 setup bridge for hypervisor using $MNIC 2025-07-30 16:04:10 -04:00
Josh Patterson ebfb670f6a Merge pull request #14892 from Security-Onion-Solutions/vlb2
match user soqemussh, allow user additions to persist, for ssh config.
2025-07-30 09:55:56 -04:00
Josh Patterson c98042fa80 match user soqemussh for ssh config. allow for user edits to not be overwritten in ssh config. 2025-07-30 09:44:58 -04:00
Jorge Reyes 70181e3e08 Merge pull request #14890 from Security-Onion-Solutions/reyesj2-backup-script
exclude so_agent_installer dir from config backups
2025-07-29 15:43:12 -05:00
reyesj2 adb1e01c7a exclude so_agent_installer dir from config backups 2025-07-29 15:31:53 -05:00
Jorge Reyes cdb7f0602c Merge pull request #14889 from Security-Onion-Solutions/reyesj2-es-helper
only show data nodes in disk usage output
2025-07-29 14:45:30 -05:00
Jorge Reyes d52e817dd5 Merge pull request #14883 from Security-Onion-Solutions/reyesj2-patch-3
increase so-elasticsearch-roles-load timeout
2025-07-29 14:45:14 -05:00
reyesj2 07305d8799 only show data nodes in disk usage output 2025-07-29 14:15:43 -05:00
reyesj2 fbf5bafae7 set 2m timeout 2025-07-28 15:17:04 -05:00
reyesj2 d49cd3cb85 increased timeout for so-elasticsearch-roles-load from default of 30s 2025-07-28 15:14:12 -05:00
Jorge Reyes b60b9e7743 Merge pull request #14880 from Security-Onion-Solutions/reyesj2-patch-2
update ASN organization name field
2025-07-28 10:51:07 -05:00
reyesj2 26fd8562c5 Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into reyesj2-patch-2 2025-07-25 16:19:12 -05:00
reyesj2 84b38daf62 name destination_geo & source_geo to destination.as and source.as better aligning with ECS and linking other log sources already using .as for ASN geo data.
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-07-25 16:17:22 -05:00
Jorge Reyes a0f9d5dc61 Merge pull request #14871 from Security-Onion-Solutions/reyesj2-patch-2
FIX: opencanary startup logs cause ingest error
2025-07-23 16:05:29 -05:00
reyesj2 e8c25d157f drop empty ip fields when its a opencanary startup log (1001) to prevent elasticsearch doc ingest error 2025-07-23 15:52:50 -05:00
Jorge Reyes 214f4f0f0c Merge pull request #14870 from Security-Onion-Solutions/foxtrot
8.18.4
2025-07-23 10:03:14 -05:00
reyesj2 7ae0369a3b VERSION 2025-07-23 09:58:55 -05:00
reyesj2 2e5682f11c 8.18.4 import evtx pipelines 2025-07-23 09:53:04 -05:00
Josh Patterson 2e7cb0e362 Merge pull request #14869 from Security-Onion-Solutions/saltuproc
add pack only holding package if installed. remove redundant hold on salt-master package
2025-07-23 10:22:21 -04:00
Josh Patterson 56748ea6e7 add pack only holding package if installed. remove redundant hold on salt-master package 2025-07-23 10:16:12 -04:00
reyesj2 621f03994c Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into foxtrot 2025-07-23 08:46:42 -05:00
Jorge Reyes ab8ad72920 Merge pull request #14868 from Security-Onion-Solutions/reyesj2-patch-1
add some retry to so-elastic-fleet-integration-upgrade
2025-07-23 08:25:10 -05:00
reyesj2 3fc244ee85 8.18.4 2025-07-22 16:56:51 -05:00
reyesj2 4728b96c51 add a retry to so-elastic-fleet-integration-upgrade when response isn't what was expected that way the error message isn't throwin into sosetup / soup log 2025-07-22 16:16:28 -05:00
Doug Burks f303363a73 Merge pull request #14867 from Security-Onion-Solutions/dougburks-patch-1
UPGRADE: Zeek Ethercat plugin #14783
2025-07-22 16:14:55 -04:00
Doug Burks 2a166af524 UPGRADE: Zeek Ethercat plugin #14783 2025-07-22 16:10:44 -04:00
Josh Patterson ab4d055fd1 Merge pull request #14865 from Security-Onion-Solutions/saltuproc
don't allow bootstrap-salt to start daemons. splay non manager highstates 120 seconds
2025-07-22 13:37:28 -04:00
Josh Patterson af49a8e4ef add back comment 2025-07-22 13:22:50 -04:00
Josh Patterson 669d219fdc splay highstate schedule 2minutes for non managers 2025-07-22 11:52:50 -04:00
Josh Patterson 442aecb9f4 bootstrap dont start daemon, use state to start it 2025-07-22 10:30:59 -04:00
Josh Patterson beda0bc89c new state name. no longer need to close stdin, stderr stdout 2025-07-21 15:40:36 -04:00
Josh Patterson 64fd6bf979 Merge remote-tracking branch 'origin/2.4/dev' into saltuproc 2025-07-21 14:42:07 -04:00
Mike Reeves 1955434416 Merge pull request #14860 from Security-Onion-Solutions/ja4
Add JA4 support
2025-07-21 11:54:52 -04:00
Jorge Reyes ab6a083fa8 Merge pull request #14858 from Security-Onion-Solutions/reyesj2-patch-1
fix incorrect file ownership
2025-07-21 10:42:28 -05:00
Mike Reeves eabca5df18 Update defaults.yaml 2025-07-21 11:01:33 -04:00
Mike Reeves 5dac3ff2a6 Update enabled.sls 2025-07-21 10:58:25 -04:00
Mike Reeves 93024738d3 Update config.sls 2025-07-21 10:57:45 -04:00
Mike Reeves 05a368681a Create config.zeek.ja4 2025-07-21 10:53:54 -04:00
Josh Patterson 246161018c upgrade and start salt process change 2025-07-18 14:17:38 -04:00
reyesj2 f27714890a update file ownership to socore 2025-07-18 09:35:51 -05:00
Jorge Reyes 47831eb300 Merge pull request #14856 from Security-Onion-Solutions/reyesj2-es-ts
elasticsearch troubleshoot script
2025-07-17 15:56:40 -05:00
reyesj2 0b1f2252ee elasticsearch troubleshoot script 2025-07-17 13:27:54 -05:00
Jorge Reyes 3ce6b555f7 Merge pull request #14854 from Security-Onion-Solutions/reyesj2-zeek-ja4
ja4 ignore empty strings
2025-07-17 11:16:20 -05:00
reyesj2 c29f11863e ja4 ignore empty strings 2025-07-17 10:47:00 -05:00
Jorge Reyes 952403b696 Merge pull request #14850 from Security-Onion-Solutions/reyesj2-zeek-ja4
ja4
2025-07-16 16:08:05 -05:00
reyesj2 b3eb06f53e ja4
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-07-16 15:56:34 -05:00
Josh Patterson 5198d0cdf0 Merge pull request #14848 from Security-Onion-Solutions/vlb2
hosted image. sos hw support
2025-07-16 15:43:14 -04:00
Josh Patterson e61e2f04b3 handle hw not having sfp,disk or copper. show none for total if that is the case 2025-07-16 15:24:43 -04:00
Josh Patterson 1aa876f4eb add missing hardware key 2025-07-16 14:20:55 -04:00
Josh Patterson a3fb2f13be dont show state changes for user-data 2025-07-16 14:14:16 -04:00
Josh Patterson 9e77eae71e Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-07-16 12:16:27 -04:00
Josh Patterson cd5de5cd05 add sos hw models 2025-07-16 12:14:54 -04:00
Josh Patterson 98a67530f5 update qcow2 hosted location 2025-07-16 12:14:25 -04:00
Josh Patterson 58ffe576d7 add pci mappings for sos hw 2025-07-16 12:09:39 -04:00
Josh Patterson b0a515f2c3 update base cloud image location 2025-07-16 12:09:01 -04:00
Doug Burks a037421809 Merge pull request #14845 from Security-Onion-Solutions/dougburks-patch-1
Simplify UniFi dashboards #14838
2025-07-16 07:28:45 -04:00
Doug Burks 6bb6c24641 Simplify UniFi dashboards #14838 2025-07-16 07:20:39 -04:00
Doug Burks 617834a044 Merge pull request #14842 from Security-Onion-Solutions/dougburks-patch-1
Issues #14836 #14837 #14838
2025-07-15 08:22:37 -04:00
Jorge Reyes 2c5c0e7830 Merge pull request #14840 from Security-Onion-Solutions/reyesj2-es-ea
kibana listingLimit
2025-07-14 16:17:32 -05:00
reyesj2 81d2c52867 kibana listingLimit 2025-07-14 16:08:11 -05:00
Doug Burks 4f8bd16910 FEATURE: Add SOC Dashboards for CEF, iptables, and UniFi logs #14838 2025-07-14 15:37:10 -04:00
Doug Burks ab9d03bc2e FEATURE: Add SOC Dashboards for UniFi logs #14838 2025-07-14 12:21:08 -04:00
Doug Burks 10bf3e8fab FEATURE: Add SOC default fields for CEF logs #14837 2025-07-14 12:07:02 -04:00
Doug Burks f8108e93d5 FEATURE: Add SOC default fields for iptables logs #14836 2025-07-14 12:04:46 -04:00
Jorge Reyes 3108556495 Merge pull request #14833 from Security-Onion-Solutions/reyesj2-patch-11
templates with error in name
2025-07-12 11:08:12 -05:00
reyesj2 f97b2444e7 Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into reyesj2-patch-11 2025-07-12 08:30:17 -05:00
reyesj2 415f456661 ignore composable templates with error in the name 2025-07-12 08:30:04 -05:00
Jason Ertel e49b3fc260 Merge pull request #14832 from Security-Onion-Solutions/jertel/wip
fix typo
2025-07-11 11:32:18 -04:00
Jason Ertel 9b125fbe53 fix typo 2025-07-11 11:30:01 -04:00
Jason Ertel 10e3b32fed fix typo 2025-07-11 11:29:16 -04:00
Jorge Reyes 5386c07b66 Merge pull request #14830 from Security-Onion-Solutions/reyesj2-patch-10
split up bulk install of integrations
2025-07-10 19:09:08 -05:00
reyesj2 7149d20b42 Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into reyesj2-patch-10 2025-07-10 15:53:07 -05:00
reyesj2 8a57b79b77 make package installs go in groups of 25 or less 2025-07-10 15:52:59 -05:00
reyesj2 a4e8e7ea53 update syslog-tcp-514 policy 2025-07-10 13:12:26 -05:00
reyesj2 95ba327eb3 cribl metrics template rename 2025-07-10 11:08:46 -05:00
Jason Ertel 3056410fd1 Merge pull request #14828 from Security-Onion-Solutions/jertel/wip
exclude component updates indexes with error in the name
2025-07-10 07:51:34 -04:00
Jason Ertel bf8da60605 exclude component updates indexes with error in the name 2025-07-10 07:47:53 -04:00
Jorge Reyes 226f858866 Merge pull request #14827 from Security-Onion-Solutions/foxtrot
check required files exist before loading map file
2025-07-09 17:31:11 -05:00
reyesj2 317d7dea7d check required files exist before loading map file
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-07-09 17:25:36 -05:00
Jorge Reyes 4e548ceb6e Merge pull request #14825 from Security-Onion-Solutions/foxtrot
ES 8.18.3
2025-07-09 16:15:48 -05:00
reyesj2 d846fe55e1 typos 2025-07-09 15:40:36 -05:00
Jorge Reyes 3b2942651e Update salt/elasticfleet/files/integrations/elastic-defend/elastic-defend-endpoints.json 2025-07-09 15:14:24 -05:00
reyesj2 fa6f4100dd ensure elasticsearch is up 2025-07-09 14:48:15 -05:00
reyesj2 33e2d18aa7 endpoint policy update 2025-07-09 13:59:01 -05:00
reyesj2 a03764d956 additional weird integration 2025-07-09 12:34:53 -05:00
reyesj2 3fb703cd22 check if generic template exists in installed component templates before defaulting to logs-filestream.generic@package 2025-07-09 11:59:25 -05:00
reyesj2 f1cbe23f57 update default kibana space 2025-07-08 21:17:57 -05:00
reyesj2 07a22a0b4b version 2025-07-08 18:32:14 -05:00
reyesj2 b9d813cef2 typo 2025-07-08 18:26:46 -05:00
reyesj2 76ab0eac03 foxtrot
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-07-08 16:45:27 -05:00
Jorge Reyes 08a2ad2c40 Merge pull request #14824 from Security-Onion-Solutions/reyesj2/es8183
es 8.18.3
2025-07-08 16:44:54 -05:00
reyesj2 47bbc9987e elastic agent upgrade prereq 2025-07-08 16:39:48 -05:00
reyesj2 59628ec8b7 revert foxtrot change 2025-07-08 16:15:18 -05:00
reyesj2 bef2fa9e8d 8.18.3 pipeline updates 2025-07-08 16:09:16 -05:00
reyesj2 d4f0cbcb67 changes for 'generic' integrations with no compoent templates assigned. Default to using the logs-filestream.generic@package componet template 2025-07-08 15:23:46 -05:00
Josh Brower 9e96b12e94 Merge pull request #14816 from Security-Onion-Solutions/2.4/socusernames
Add user.name to kratos query
2025-07-08 10:11:40 -04:00
Josh Brower 42552810fb Add user.name to kratos query 2025-07-08 09:50:08 -04:00
reyesj2 4bf2c931e9 make sure required file exists to generate ADDON_INTEGRATION_DEFAULTS 2025-07-08 08:43:24 -05:00
Jorge Reyes beda6ac20d Merge pull request #14813 from Security-Onion-Solutions/reyesj2/es8183
es 8.18.3
2025-07-07 12:59:23 -05:00
reyesj2 d8be6e42e1 es 8.18.3 2025-07-07 12:58:00 -05:00
Josh Patterson 4fb7fe9e45 Merge pull request #14803 from Security-Onion-Solutions/vlb2
ensure hypervisor is remove from salt cloud profiles when key is deleted
2025-07-02 16:29:48 -04:00
Josh Patterson 6d7066c381 add license 2025-07-02 16:20:30 -04:00
Josh Patterson d003e1380f ensure hypervisor is remove from salt cloud profiles when key is deleted 2025-07-02 16:14:43 -04:00
Josh Patterson ef8badaef1 Merge pull request #14800 from Security-Onion-Solutions/vlb2
only run storage state if box has nvme
2025-07-01 16:36:31 -04:00
Josh Patterson dea9c149d7 only run storage state if box has nvme 2025-06-30 15:30:39 -04:00
coreyogburn 56c9fa3129 Merge pull request #14793 from Security-Onion-Solutions/cogburn/playbooks-import
Refactors playbook repo configuration
2025-06-30 13:02:39 -06:00
Corey Ogburn a86105294b Playbook Annotations 2025-06-30 12:50:56 -06:00
Corey Ogburn 33c23c30d3 Refactors playbook repo configuration
Replaces individual playbook repo fields with an array of repos to support multiple playbook sources. Refactor Jinja.
2025-06-30 11:43:02 -06:00
Josh Patterson fe76a79ebd Merge pull request #14792 from Security-Onion-Solutions/vlb2
allow libvirt states
2025-06-30 11:25:41 -04:00
Josh Patterson 5035ec2539 allow libvirt states 2025-06-30 11:21:45 -04:00
Josh Patterson 9f35b20664 Merge pull request #14791 from Security-Onion-Solutions/vlb2
allow standalone and managersearch to run salt.cloud state
2025-06-30 10:29:34 -04:00
Josh Patterson b93c6c0270 allow standalone and managersearch to run salt.cloud state 2025-06-30 09:51:40 -04:00
Josh Patterson e5dd403dd1 Merge pull request #14784 from Security-Onion-Solutions/vlb2
hardware virtualization
2025-06-27 12:09:23 -04:00
Josh Patterson 493359e5a2 cleanup 2025-06-27 11:00:35 -04:00
Josh Patterson b0f5218775 add quotes 2025-06-27 10:58:14 -04:00
Josh Patterson 8fdc7049f9 add missing , 2025-06-27 10:53:03 -04:00
Josh Patterson d79d7e2ba1 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-06-26 15:02:00 -04:00
Jorge Reyes 596b3e2614 Merge pull request #14776 from Security-Onion-Solutions/reyesj2/msiflags
soup 2.4.170
2025-06-26 10:01:33 -05:00
Josh Patterson 59f8544324 Merge pull request #14778 from Security-Onion-Solutions/vlb2
hardware virtualization
2025-06-25 17:22:53 -04:00
Josh Patterson daaad3699c allow wheel files 2025-06-25 17:20:17 -04:00
Josh Patterson 1e9f3a65a4 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-06-25 15:35:30 -04:00
Josh Patterson b2acf2f807 change logic for determining if vm was destroyed 2025-06-25 15:05:49 -04:00
reyesj2 34e561f358 soup 2.4.170 2025-06-25 13:47:44 -05:00
reyesj2 e5a07170b3 Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into reyesj2/msiflags 2025-06-25 13:44:09 -05:00
Mike Reeves 02dbbc5289 Merge pull request #14775 from Security-Onion-Solutions/TOoSmOotH-patch-1
Update VERSION
2025-06-25 13:59:36 -04:00
Mike Reeves 5e62d3ecb2 Update 2-4.yml 2025-06-25 13:58:57 -04:00
Mike Reeves 373ef9fe91 Update VERSION 2025-06-25 13:58:25 -04:00
Mike Reeves 2f1e6fd625 Merge pull request #14773 from Security-Onion-Solutions/2.4/dev
2.4.160
2025-06-25 13:49:06 -04:00
Mike Reeves 6b8ef43cc1 Merge pull request #14772 from Security-Onion-Solutions/2.4.160
2.4.160
2025-06-25 13:02:06 -04:00
Mike Reeves 7e746b87c5 2.4.160 2025-06-25 13:00:26 -04:00
Josh Patterson 2ad2a3110c Merge pull request #14771 from Security-Onion-Solutions/revert-14770-saltupgradechange
Revert "change salt upgrade process"
2025-06-25 12:21:00 -04:00
Josh Patterson bc24a6c574 Revert "change salt upgrade process" 2025-06-25 12:19:45 -04:00
Josh Patterson b25bb0faf0 Merge pull request #14770 from Security-Onion-Solutions/saltupgradechange
change salt upgrade process
2025-06-25 11:31:57 -04:00
Josh Patterson 38c74b46b6 change salt upgrade process 2025-06-25 11:05:28 -04:00
reyesj2 fbb6d8146a regen installers 2025-06-25 00:21:49 -05:00
Jason Ertel 83ecc02589 Merge pull request #14765 from Security-Onion-Solutions/jertel/wip
fix logging
2025-06-24 11:05:19 -04:00
Jason Ertel 21d9964827 fix logging 2025-06-24 11:03:08 -04:00
Jason Ertel f3b6d9febb Merge pull request #14764 from Security-Onion-Solutions/jertel/wip
refactor airgap playbook to eliminate dupe code and shrink ISO
2025-06-24 09:39:43 -04:00
Jason Ertel b052a75e64 refactor airgap playbook to eliminate dupe code and shrink ISO 2025-06-24 09:34:57 -04:00
Josh Patterson 0602601655 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-06-20 16:25:16 -04:00
Josh Patterson 480e248131 ensure bond and interfaces only added once 2025-06-20 16:24:54 -04:00
Josh Brower 6fc7c930a6 Merge pull request #14759 from Security-Onion-Solutions/2.4/fieldmappings
Add support for dns.resolved_ip
2025-06-20 15:08:05 -04:00
Josh Brower 31cd5b1365 Add support for dns.resolved_ip 2025-06-20 15:02:59 -04:00
Josh Patterson 19fb081fa0 additional log info 2025-06-13 15:21:38 -04:00
Josh Patterson d3b1a4f928 use state file to only send highstate initiated event once 2025-06-13 15:21:23 -04:00
Josh Patterson 4729e194a0 spell ensure 2025-06-12 17:01:23 -04:00
Josh Patterson ab6060c484 restore VM to VMs file so that it is still seen in soc if vm destroy fails 2025-06-12 16:50:38 -04:00
Josh Patterson 0b65021f75 exit 1 if vm is not destroyed 2025-06-12 16:49:56 -04:00
Josh Patterson bd4f2093db add vm delete warning for ui element 2025-06-11 09:39:15 -04:00
Josh Patterson 48dfcab9f0 ensure salt-minion is running, salt-master if manager before mine update 2025-06-10 13:44:24 -04:00
Josh Patterson 849f8f13bc create virt feature pillars 160 to 170 soup 2025-06-10 13:08:42 -04:00
Josh Patterson 07359ad6ec Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-06-09 14:48:26 -04:00
Josh Patterson 1e2453eddf debug loglevel 2025-06-09 14:47:53 -04:00
Josh Patterson 4c9773c68d reenable sslverify 2025-06-09 14:37:06 -04:00
Josh Patterson 4666670f4f remove logging prefixes 2025-06-09 13:53:23 -04:00
Josh Patterson 0f71b45e0f CPU model=host is deprecated 2025-06-09 09:55:16 -04:00
Josh Brower 92e9bd43ca Merge pull request #14723 from Security-Onion-Solutions/2.4/airgapfix
Create dir if needed
2025-06-09 07:47:59 -04:00
Josh Brower a600c64229 Create dir if needed 2025-06-09 07:33:02 -04:00
Josh Brower 121dec0180 Merge pull request #14722 from Security-Onion-Solutions/2.4/airgapfix
Add nsm bind
2025-06-08 12:30:58 -04:00
Josh Brower b451c4c034 Merge pull request #14721 from Security-Onion-Solutions/2.4/SupExtraction
Supress alerts
2025-06-08 12:25:35 -04:00
Josh Brower dbdbffa4b0 Add nsm bind 2025-06-08 08:23:09 -04:00
Josh Brower f360c6ecbc Supress alerts 2025-06-07 09:29:59 -04:00
Josh Brower b9ea151846 Merge pull request #14719 from Security-Onion-Solutions/2.4/playbookairgap
Airgap tweaks
2025-06-06 17:52:08 -04:00
Josh Brower b428573a0a Airgap tweaks 2025-06-06 17:48:49 -04:00
Josh Brower 350e1c9d91 Merge pull request #14718 from Security-Onion-Solutions/2.4/playbookairgap
Add support for Airgap for Playbooks
2025-06-06 16:55:32 -04:00
Josh Brower a3b5db5945 Add support for Airgap for Playbooks 2025-06-06 16:17:14 -04:00
Josh Patterson 3efe0eac13 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-06-06 08:54:23 -04:00
Jason Ertel aca54b4645 Merge pull request #14714 from Security-Onion-Solutions/jertel/wip
enable STS for browser redirects
2025-06-05 18:48:46 -04:00
Jason Ertel 643afeeae7 enable STS for browser redirects 2025-06-05 16:02:27 -04:00
Josh Patterson d9fb79403b seems new openldap / libldap.so.2 doesnt have EVP_md2 dependency so check for it before trying to remove it 2025-06-05 15:57:56 -04:00
Josh Patterson 2ef89be67d Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-06-05 09:40:44 -04:00
Jason Ertel 43e994f2c2 Merge pull request #14711 from Security-Onion-Solutions/jertel/wip
update to new config location
2025-06-04 17:22:13 -04:00
Jason Ertel ab89858d04 update to new config location 2025-06-04 17:19:53 -04:00
Josh Patterson 395c4e37ba fix issue with predicable names after kernel update 2025-06-04 16:57:59 -04:00
Jason Ertel 3da2c7cabc Merge pull request #14701 from Security-Onion-Solutions/jertel/wip
upgrade registry to 3.0.0
2025-06-04 09:22:03 -04:00
Jason Ertel 832d66052e upgrade registry to 3.0.0 2025-06-04 09:13:54 -04:00
coreyogburn add538f6dd Merge pull request #14700 from Security-Onion-Solutions/cogburn/new-playbooks-repo
Updated Playbook Repo Config
2025-06-03 14:21:23 -06:00
Corey Ogburn fc9107f129 Updated Playbook Repo Config
The repo and folder have changed. We're splitting out playbooks into their own repo: github.com/security-onion-solutions/securityonion-resources-playbooks.
2025-06-03 13:33:30 -06:00
Jorge Reyes d9790b04f6 Merge pull request #14676 from Security-Onion-Solutions/reyesj2/fixsystemtime
fix system integration time overwrite and delete unused ingest pipeline
2025-06-03 14:01:42 -05:00
Jorge Reyes 88fa04b0f6 Merge pull request #14698 from Security-Onion-Solutions/reyesj2/esidxinfo
add so-elasticsearch-index-growth
2025-06-03 09:37:54 -05:00
reyesj2 d240fca721 remove usage of temp file 2025-06-03 08:45:04 -05:00
reyesj2 4d6171bde6 rename script
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-06-03 07:32:12 -05:00
reyesj2 6238a5b3ed tighten up search timeframe 2025-06-02 16:31:26 -05:00
reyesj2 061600fa7a shebang line 2025-06-02 15:55:46 -05:00
reyesj2 1b89cc6818 so-elasticsearch-index-growth script 2025-06-02 15:41:03 -05:00
Josh Patterson 6e1e617124 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-06-02 14:06:00 -04:00
Josh Brower 7f8bf850a2 Merge pull request #14697 from Security-Onion-Solutions/2.4/playbook-updates
Use Stable branch
2025-06-02 13:13:43 -04:00
Josh Brower 0277891392 Use Stable branch 2025-06-02 13:10:13 -04:00
Josh Patterson 08d99a3890 remove unneeded files 2025-05-30 12:50:59 -04:00
Doug Burks 773606d876 Merge pull request #14691 from Security-Onion-Solutions/dougburks-patch-1
add echo to end of so-elasticsearch-ilm-start and so-elasticsearch-ilm-stop
2025-05-30 12:03:32 -04:00
Doug Burks bf38055a6c add echo to end of so-elasticsearch-ilm-stop 2025-05-30 11:41:50 -04:00
Doug Burks 90b8d6b2f7 add echo to end of so-elasticsearch-ilm-start 2025-05-30 11:41:11 -04:00
Doug Burks 2d78fa1a41 Merge pull request #14689 from Security-Onion-Solutions/dougburks-patch-1
FIX: so-elasticsearch-ilm-start needs shebang #14688
2025-05-30 09:58:18 -04:00
Doug Burks 45d541d4f2 FIX: so-elasticsearch-ilm-start needs shebang #14688 2025-05-30 09:55:53 -04:00
Josh Patterson b3c48674c5 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-05-30 09:52:14 -04:00
Doug Burks 8d42739030 Merge pull request #14687 from Security-Onion-Solutions/dougburks-patch-1
FIX: so-suricata-testrule should disable pcap logging #14685
2025-05-30 09:26:37 -04:00
Doug Burks 27358137f2 FIX: so-suricata-testrule should disable pcap logging #14685 2025-05-30 09:24:41 -04:00
Doug Burks a54b9ddbe4 Merge pull request #14683 from Security-Onion-Solutions/dougburks-patch-1
FIX: Improve annotation for Elasticsearch index deletion #14682
2025-05-29 15:26:35 -04:00
Doug Burks 58936b31d5 FIX: Improve annotation for Elasticsearch index deletion #14682 2025-05-29 15:19:21 -04:00
reyesj2 fcdacc3b0d fix system integration time overwrite and delete unused ingest pipeline 2025-05-29 12:21:28 -05:00
Josh Patterson 40531dd919 add LSHOSTNAME option to so-minion. use -L in sominion_setup reactor 2025-05-29 12:22:52 -04:00
Josh Patterson 05dfce62fb corrections to allowed_states 2025-05-28 13:34:17 -04:00
Jorge Reyes 9df9cc2247 Merge pull request #14668 from Security-Onion-Solutions/reyesj2-patch-1
use zeek network.community_id when available
2025-05-28 12:15:18 -05:00
Jorge Reyes d3ee5ed7b8 use zeek network.community_id when available 2025-05-28 09:20:41 -05:00
Josh Patterson 502e1e1f1b Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-05-23 15:55:21 -04:00
Josh Patterson e5b12ecdb9 need to allow for pw removal 2025-05-23 12:44:42 -04:00
Josh Patterson be5e41227f rename step 2025-05-23 11:41:45 -04:00
Josh Patterson 08f208cd38 ensure bootstrap-salt is updated for salt-cloud installs 2025-05-22 15:37:34 -04:00
Jason Ertel db08ac9022 Merge pull request #14651 from Security-Onion-Solutions/jertel/mhf
Backport Hotfix to dev
2025-05-22 13:44:36 -04:00
Jason Ertel ad5a27f991 clear out hf 2025-05-22 13:39:59 -04:00
Mike Reeves 07ec302267 Merge pull request #14650 from Security-Onion-Solutions/hotfix/2.4.150
Hotfix 2.4.150
2025-05-22 13:35:33 -04:00
Mike Reeves 112704e340 Merge pull request #14649 from Security-Onion-Solutions/hf24150
2.4.150 Hotfix
2025-05-22 13:25:50 -04:00
Mike Reeves e6753440f8 2.4.150 Hotfix 2025-05-22 13:18:13 -04:00
Josh Patterson 18d899a7f9 add so-docker-prune from hotfix/2.4.150 2025-05-22 09:29:51 -04:00
Josh Patterson b2650da057 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-05-22 09:10:20 -04:00
Josh Patterson 31df0b5d7d create vm pillar files 2025-05-22 09:10:09 -04:00
Josh Patterson a430a47a30 fix allowed_states check 2025-05-21 14:45:34 -04:00
Mike Reeves 00f811ce31 Merge pull request #14646 from Security-Onion-Solutions/hotfix4150
Update HOTFIX
2025-05-21 14:38:00 -04:00
Mike Reeves ddd023c69a Update so-docker-prune 2025-05-21 13:47:45 -04:00
Mike Reeves 2911025c0c Update HOTFIX 2025-05-21 13:45:32 -04:00
Josh Brower 2e8ab648fd Merge pull request #14643 from Security-Onion-Solutions/2.4/parsingfix
Tighten parsing
2025-05-21 12:08:10 -04:00
Josh Brower b753d40861 Tighten parsing 2025-05-20 17:06:11 -04:00
Josh Patterson a32aac7111 apply salt.cloud.config when hypervisor joins 2025-05-20 13:38:24 -04:00
Josh Brower 2fff6232c1 Merge pull request #14638 from Security-Onion-Solutions/2.4/playbooks-parsing
Add parsing for Playbook
2025-05-19 18:06:05 -04:00
coreyogburn f751c82e1c Merge pull request #14639 from Security-Onion-Solutions/cogburn/ruleset-name
Add RulesetName to Rule Repos
2025-05-19 15:40:02 -06:00
Corey Ogburn 39f74fe547 Use the new JSON object editor for RulesRepos config entries 2025-05-19 15:38:45 -06:00
Corey Ogburn 11fb33fdeb Add RulesetName to Rule Repos
Fill in `rulesetName` in the rules repos of the ElastAlert and Strelka engines. These will act as an example to anybody adding their repos to these lists. The field is not required, but helps avoid collisions when managing repos as the value is used for the folder name. When not present, the final folder of the repo url is used as the rulesetName and as the folder name on disk.

Note that rulesetNames including a `/` will create extra folders in the path but the rulesetName will contain the slash, i.e. `rulesetName="joesecurity/sigma-rules"` will create the nested structure of `reposFolder/joesecurity/sigma-rules" containing the contents of the repo. All rules imported from this repo will have the ruleset of `joesecurity/sigma-rules`.
2025-05-19 14:19:56 -06:00
Josh Brower 58f4db95ea Create playbooks dir 2025-05-19 15:31:50 -04:00
Josh Brower b55cb257b6 Add parsing for Playbook 2025-05-19 13:25:27 -04:00
Josh Patterson b0a8191f59 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-05-19 10:02:26 -04:00
Josh Patterson 28aedcf50b remove vm map example 2025-05-19 09:58:43 -04:00
Josh Patterson 6988f03ebc setup bridge and fix salt before first highstate for hypervisors 2025-05-16 14:24:07 -04:00
Jorge Reyes 2948577b0e Merge pull request #14629 from Security-Onion-Solutions/reyesj2-wt2
logstash isn't running on receivers or manager when kafka is the glob…
2025-05-16 10:27:18 -05:00
reyesj2 870a9ff80c dedup 2025-05-16 10:24:09 -05:00
reyesj2 689db57f5f logstash isn't running on receivers or manager when kafka is the global.pipeline 2025-05-16 10:05:38 -05:00
coreyogburn 2768722132 Merge pull request #14623 from Security-Onion-Solutions/cogburn/playbooks
Cogburn/playbooks
2025-05-15 13:27:02 -06:00
Josh Brower df103b3dca Spacing 2025-05-14 16:36:59 -04:00
Josh Brower 0542c77137 Remove wip config 2025-05-14 16:35:09 -04:00
Josh Brower 9022dc24fb Add Parsing for Playbooks 2025-05-14 13:19:50 -06:00
Corey Ogburn 78b7068638 Playbook Settings
Map a folder from the manager's soc config folder to soc's sensoroni folder for storing the playbook repo.

Added playbook module section with default values.
2025-05-14 13:19:49 -06:00
Mike Reeves 70339b9a94 Merge pull request #14621 from Security-Onion-Solutions/TOoSmOotH-patch-1
Update soup
2025-05-14 13:48:53 -04:00
Mike Reeves 5c8460fd26 Update soup 2025-05-14 13:47:26 -04:00
Mike Reeves 69e90e1e70 Update soup
Souper Duper!
2025-05-14 13:41:08 -04:00
Jason Ertel 8c5ea19d3c Merge pull request #14619 from Security-Onion-Solutions/jertel/wip
improve consistency
2025-05-14 09:31:56 -04:00
Jason Ertel 82562f89f6 improve consistency 2025-05-14 09:23:35 -04:00
Mike Reeves ede36b5ef8 Merge pull request #14614 from Security-Onion-Solutions/TOoSmOotH-patch-1
Get ready for .160
2025-05-12 10:49:46 -04:00
Mike Reeves fd00a4db85 Update VERSION 2025-05-12 10:48:52 -04:00
Mike Reeves 510c7a0c19 Update 2-4.yml 2025-05-12 10:48:12 -04:00
Mike Reeves 2a7365c7d7 Merge pull request #14612 from Security-Onion-Solutions/2.4/dev
2.4.150
2025-05-12 10:34:22 -04:00
Mike Reeves f7ca3e45ac Merge pull request #14611 from Security-Onion-Solutions/2.4.150
2.4.150
2025-05-12 10:24:27 -04:00
Mike Reeves 0172272e1b 2.4.150 2025-05-12 09:58:09 -04:00
Josh Brower 776f574427 Merge pull request #14609 from Security-Onion-Solutions/2.4/jbrower-patch-2
Cleanup
2025-05-09 10:42:05 -04:00
Josh Brower a0aafb7c51 Cleanup 2025-05-09 10:29:23 -04:00
Jason Ertel 09ec14acd8 Merge pull request #14608 from Security-Onion-Solutions/m0duspwnens-patch-1
fix file permissions for download
2025-05-09 09:29:33 -04:00
Josh Patterson 61f8b251f0 cp to mv 2025-05-09 09:25:46 -04:00
Josh Patterson 75dd04c398 fix file permissions for download 2025-05-09 09:21:30 -04:00
Josh Brower e2ef544bfc Merge pull request #14607 from Security-Onion-Solutions/2.4/jbpatch
Regen installers
2025-05-09 08:21:46 -04:00
Josh Brower daad99a0b6 Regen installers 2025-05-09 08:17:46 -04:00
Jason Ertel fdeee45d3f Merge pull request #14605 from Security-Onion-Solutions/jertel/wip
more analyzer dep updates
2025-05-08 15:57:08 -04:00
Jason Ertel 7fe9e2cbfd more analyzer dep updates 2025-05-08 15:53:16 -04:00
Jorge Reyes 74d557a5e0 Merge pull request #14603 from Security-Onion-Solutions/reyesj2/fix-14602
add null check
2025-05-08 08:34:53 -05:00
Doug Burks 82f9043a14 Merge pull request #14604 from Security-Onion-Solutions/dougburks-patch-1
Update defaults.yaml to replace remaining instances of identity_id with user.name
2025-05-08 09:14:03 -04:00
Doug Burks a8cb18bb2e Update defaults.yaml to replace remaining instances of identity_id with user.name 2025-05-08 09:09:26 -04:00
reyesj2 e1d31c895e add null check 2025-05-07 21:25:30 -05:00
Josh Brower e661c73583 Merge pull request #14601 from Security-Onion-Solutions/2.4/upgradeeafix
Only upgrade node agents for local stack version
2025-05-07 16:11:10 -04:00
Josh Brower 42ba778740 Only upgrade node agents for local stack version 2025-05-07 16:08:47 -04:00
Josh Brower 204d53e4a7 Merge pull request #14596 from Security-Onion-Solutions/2.4/kratosuser
Show user.name instead of id
2025-05-07 11:21:18 -04:00
Josh Brower d47a798645 Show user.name instead of id 2025-05-07 11:17:00 -04:00
Josh Patterson 9e0f13cce5 no longer need to create hypervisor pillar directory 2025-05-07 09:01:22 -04:00
Jason Ertel 68ea229a1c Merge pull request #14595 from Security-Onion-Solutions/jertel/wip
update default actions for subgrid support
2025-05-06 14:35:01 -04:00
Jason Ertel 1ecf2b29fc update default actions for subgrid support 2025-05-06 13:56:16 -04:00
Josh Patterson 8c37a4454c merge and fix conflicts 2025-05-06 11:55:42 -04:00
Josh Patterson ef436026d5 info to debug. remove old reactors 2025-05-06 11:51:59 -04:00
Josh Patterson a595bc4b31 info to debug log level 2025-05-06 10:13:02 -04:00
Jorge Reyes 8a321e3f15 Merge pull request #14593 from Security-Onion-Solutions/reyesj2/feat-254
missing globals.is_manager swap
2025-05-06 09:01:58 -05:00
reyesj2 b4214f73f4 typo 2025-05-06 09:01:22 -05:00
reyesj2 b9da7eb35b missing globals.is_manager swap 2025-05-06 08:58:47 -05:00
Jorge Reyes d6139d0f19 Merge pull request #14580 from Security-Onion-Solutions/reyesj2/feat-254
collect es index sizes
2025-05-06 08:39:16 -05:00
Josh Patterson d2fe8da082 Merge pull request #14592 from Security-Onion-Solutions/fleetlocal
copy so_agent-installers to nsm for nginx
2025-05-05 13:47:22 -04:00
Josh Patterson 1931de2e52 copy so_agent-installers to nsm for nginx 2025-05-05 12:40:56 -04:00
Josh Patterson d68a14d789 Merge pull request #14590 from Security-Onion-Solutions/checkmasterstatus
check master status after highstate incase master service restart
2025-05-02 17:04:03 -04:00
Josh Patterson f988af52f6 check master status after highstate incase master service restart 2025-05-02 15:41:21 -04:00
reyesj2 fd02950864 use globals.is_manager 2025-05-02 13:36:28 -05:00
Josh Patterson a167e5e520 fix whitespace for multiple hypervisors 2025-05-02 11:32:03 -04:00
Josh Patterson 26d7ceebb2 libvirt.images requires scripts from hypervisor state 2025-05-02 11:30:35 -04:00
Mike Reeves 382c3328df Merge pull request #14588 from Security-Onion-Solutions/TOoSmOotH-patch-6
enable the delete on heavynodes
2025-05-02 08:55:55 -04:00
Mike Reeves 92d8985f3c enable the delete on heavynodes 2025-05-02 08:52:57 -04:00
Jason Ertel c2d9523e09 Merge pull request #14587 from Security-Onion-Solutions/jertel/wip
update deps
2025-05-02 08:26:28 -04:00
Jason Ertel c34914c8de update deps 2025-05-02 08:19:54 -04:00
Jason Ertel d020bf5504 Merge pull request #14584 from Security-Onion-Solutions/jertel/wip
update analyser deps for py 3.13
2025-05-01 15:59:04 -04:00
Jason Ertel 95d8e0f318 stop double workflow runs 2025-05-01 15:46:04 -04:00
Jason Ertel be4df48742 deps update 2025-05-01 15:44:34 -04:00
Jason Ertel ba4df4c8b6 dep updates 2025-05-01 15:36:20 -04:00
Jason Ertel 86eab6fda2 dep updates 2025-05-01 15:31:26 -04:00
Jason Ertel 5d2bed950e update analyser deps for py 3.13 2025-05-01 11:16:58 -04:00
Josh Patterson e5c0f8a46c allow for dhcp4 2025-04-30 16:09:57 -04:00
reyesj2 044d230158 get 200 from es before collecting metrics 2025-04-30 13:05:36 -05:00
Josh Patterson 5965459423 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-04-30 13:11:12 -04:00
Josh Patterson 3a31d80a85 fix regex and label for hypervisor annotation 2025-04-30 13:10:49 -04:00
Josh Patterson 5a8e542f96 create macro for resource regex and fix regex logic for mem and cpu 2025-04-30 13:08:54 -04:00
Josh Patterson 7a60afdd5a remove duplicate logging 2025-04-30 09:11:55 -04:00
Josh Patterson c3b3e0ab21 manager hostname in pubkey 2025-04-30 08:12:35 -04:00
reyesj2 b918a5e256 old attempt 2025-04-29 16:05:55 -05:00
reyesj2 1ddc653a52 fix input error in agentstatus script 2025-04-29 13:40:39 -05:00
reyesj2 85f5f75c84 use salt location for es curl.config 2025-04-29 12:42:05 -05:00
reyesj2 3cb3281cd5 add metrics for es index sizes 2025-04-29 12:38:41 -05:00
Josh Patterson 6246e25fbe 640 for pubkey and empty pillar 2025-04-29 10:19:01 -04:00
Jason Ertel b858543a60 Merge pull request #14578 from Security-Onion-Solutions/jertel/wip
excluded harmless log error; suppress so-user grep output
2025-04-29 09:46:48 -04:00
Jason Ertel 5ecb483596 excluded harmless log error; suppress so-user grep output 2025-04-29 09:35:36 -04:00
Josh Patterson 102ddaf262 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-04-29 08:18:25 -04:00
Josh Patterson 151db2af30 ensure ownership and mode 2025-04-28 15:38:29 -04:00
Mike Reeves e9a4668c63 Merge pull request #14575 from Security-Onion-Solutions/TOoSmOotH-patch-5
Add url_base to the web certificate
2025-04-28 08:43:13 -04:00
Mike Reeves 5f45327372 Update enabled.sls 2025-04-28 08:39:26 -04:00
Mike Reeves ac8ac23522 Update enabled.sls 2025-04-28 08:36:43 -04:00
Josh Patterson b2bd8577b9 only update mine if hypervisor provided 2025-04-24 12:59:43 -04:00
Josh Patterson 4df3070a1d ensure file permissions of libvirt images 2025-04-24 12:59:06 -04:00
Josh Patterson 142609ea67 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-04-24 09:41:27 -04:00
Jorge Reyes 46779513de Merge pull request #14569 from Security-Onion-Solutions/reyesj2/fix-225
fix storage metrics on stig installs
2025-04-23 15:38:14 -05:00
reyesj2 e27a0d8f7a Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into reyesj2/fix-225 2025-04-23 15:04:08 -05:00
reyesj2 9e4c456eb9 fix nsm influxdb alert 2025-04-23 15:02:57 -05:00
reyesj2 400739736d add monitored mounts, ignores docker overlays 2025-04-23 15:02:23 -05:00
reyesj2 196e0c1486 change root bind so existing references to 'r[\"path\"] == \"/\")' work as expected 2025-04-23 15:01:48 -05:00
reyesj2 76d63bb2ad remove unused HOST_PROC env 2025-04-23 15:00:21 -05:00
Josh Patterson ed80c4e13b Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-04-23 15:42:04 -04:00
Jorge Reyes 69c904548c Merge pull request #14561 from Security-Onion-Solutions/reyesj2/fix-14516
Disable auto-upgrading non-default integrations
2025-04-23 13:59:46 -05:00
Josh Patterson 272410ecae Merge pull request #14568 from Security-Onion-Solutions/fixem
Fixem
2025-04-23 13:28:29 -04:00
Josh Patterson 19514a969b use file.directory 2025-04-23 08:41:53 -04:00
Josh Patterson 77f88371b8 manage default and local in separate states 2025-04-23 08:30:37 -04:00
reyesj2 559190aee3 upgrade integrations if they aren't in an agent policy 2025-04-22 09:38:22 -05:00
reyesj2 8c4cf0ba08 keep hard failure 2025-04-22 07:29:12 -05:00
reyesj2 e17fea849a continue loop after encountering error with first 2025-04-21 20:32:42 -05:00
Jorge Reyes b2c09d6fd9 Merge pull request #14560 from Security-Onion-Solutions/reyesj2-patch-2
make homedirs
2025-04-21 16:39:26 -05:00
reyesj2 30c4acb828 group 2025-04-21 16:38:16 -05:00
reyesj2 4ec185a9c7 make logstash and kratos homedirs 2025-04-21 16:26:20 -05:00
reyesj2 166e4e0ebc make bool 2025-04-21 15:51:36 -05:00
reyesj2 4b7478654f run optional integrations script so packages get installed. Hold updates unless auto_update_integrations is set 2025-04-21 14:29:37 -05:00
Jason Ertel 5bd84c4e30 Merge pull request #14558 from Security-Onion-Solutions/jertel/wip
researching install failures
2025-04-21 14:34:30 -04:00
Jason Ertel f5a8e917a4 researching install failures 2025-04-21 14:32:33 -04:00
reyesj2 4e6c707067 Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into reyesj2/fix-14516 2025-04-21 10:48:25 -05:00
reyesj2 c89adce3a1 default disable automatic upgrades for optional integration packages & policies 2025-04-21 10:48:18 -05:00
Mike Reeves af1bee4c68 Merge pull request #14556 from Security-Onion-Solutions/TOoSmOotH-patch-4
Disable Elasticsearch delete delete
2025-04-21 08:57:13 -04:00
Mike Reeves e3c8d22cac Update enabled.sls 2025-04-18 16:43:17 -04:00
Josh Patterson 285d73d526 enable/disable soqemussh. allow for pw to be set 2025-04-18 14:07:32 -04:00
Josh Patterson 0bcb6040c9 recreate sool9 if user-data or meta-data cloud-init changes 2025-04-18 14:02:17 -04:00
Josh Brower 3f13f8deae Merge pull request #14543 from Security-Onion-Solutions/2.4/kratos_identity
Support Kratos user.name lookup
2025-04-17 16:13:58 -04:00
Jason Ertel 13d96ae5af Merge pull request #14551 from Security-Onion-Solutions/jertel/wip
additional grid support
2025-04-17 12:54:28 -04:00
Jason Ertel 3b447b343f fix typo 2025-04-17 11:51:45 -04:00
Jason Ertel d0375d3c7e fix typo 2025-04-17 11:51:21 -04:00
Jason Ertel b607689993 improve regex 2025-04-17 11:47:52 -04:00
Jason Ertel 8f1e528f1c improve regex 2025-04-17 11:09:39 -04:00
Jason Ertel 2f8d8d2d96 Merge branch '2.4/dev' into jertel/wip 2025-04-16 15:55:34 -04:00
Jason Ertel 366e39950a subord annotations; ensure node reboots occur in background 2025-04-16 15:55:16 -04:00
Josh Brower 5fd7bf311d Add fallback 2025-04-15 13:57:55 -04:00
Josh Brower 152fdaa7bb Support Kratos user.name lookup 2025-04-15 11:40:43 -04:00
Josh Patterson 07ef3d632c Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-04-15 08:08:12 -04:00
Jorge Reyes 7f5cde9a1c Merge pull request #14540 from Security-Onion-Solutions/reyesj2/fix-14417
FIX: Add log.origin.file.line to base templates
2025-04-14 15:46:54 -05:00
reyesj2 58df566c79 add mapping for metadata.kafka.timestamp 2025-04-14 14:30:40 -05:00
reyesj2 395b81ffc6 FIX: Add log.origin.file.line to base templates #14417 2025-04-14 14:30:00 -05:00
Jorge Reyes e3d5829b89 Merge pull request #14539 from Security-Onion-Solutions/reyesj2-patch-1
fix kafka delayed initial connection with remote clients on multi-broker deployments
2025-04-14 13:06:20 -05:00
reyesj2 df31c349b0 update annotations 2025-04-14 12:32:31 -05:00
reyesj2 759d5f76cd fix kafka external access slow to establish initial connection 2025-04-14 12:32:22 -05:00
Josh Brower 240484deea Merge pull request #14537 from Security-Onion-Solutions/2.4/idstoolsfix
Run so-rule-update when it changes
2025-04-14 11:20:32 -04:00
Josh Brower ceabb673e0 Refactor for so-rule-update 2025-04-14 11:08:35 -04:00
Jorge Reyes f1070992a8 Merge pull request #14538 from Security-Onion-Solutions/reyesj2-patch-5 2025-04-14 08:41:35 -05:00
reyesj2 c0f9c344bb set logstash log rollover when log size exceeds 1G
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-04-14 08:13:27 -05:00
Josh Patterson 21bb325157 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-04-14 08:22:42 -04:00
Josh Brower 00029e6f83 Run so-rule-update when it changes 2025-04-14 08:04:46 -04:00
reyesj2 9459bf8a27 allow larger kafka log files before forcing rollover 2025-04-11 14:41:32 -05:00
Josh Patterson 96e99fc442 Merge pull request #14535 from Security-Onion-Solutions/mineimp
ensure the highstate retry runs only once
2025-04-11 14:43:17 -04:00
Josh Patterson 4b14bf90a3 ensure the highstate retry runs only once 2025-04-11 14:28:18 -04:00
reyesj2 2cb002668f restrict count of kafka log files 2025-04-11 12:32:49 -05:00
Jorge Reyes c11a10638b Merge pull request #14528 from Security-Onion-Solutions/reyesj2-patch-4
external access to kafka topics via user/pass auth
2025-04-11 10:52:40 -05:00
reyesj2 6fe240de45 remove whitespaces then check for empty string as password 2025-04-11 10:42:45 -05:00
reyesj2 ecd7da540a skip user entries that don't have password configured 2025-04-11 10:21:46 -05:00
Josh Brower 2a43a6f37e Merge pull request #14532 from Security-Onion-Solutions/2.4/saltlogs
Fix comma
2025-04-11 07:51:35 -04:00
Josh Brower 4cdfb6e3eb Fix comma 2025-04-11 07:49:35 -04:00
Josh Brower 1edd13523c Merge pull request #14530 from Security-Onion-Solutions/fix/detections
Change timeout to 1s
2025-04-11 07:47:38 -04:00
Josh Brower 4217e23272 Merge pull request #14531 from Security-Onion-Solutions/2.4/saltlogs
Extract log level and drop INFO level
2025-04-11 07:47:25 -04:00
Josh Brower f94c81a041 Extract log level and drop INFO level 2025-04-11 07:45:12 -04:00
Josh Brower 4c3518385b Change timeout to 1s 2025-04-11 07:37:09 -04:00
reyesj2 1429226667 nest default value for external_access under kafka:config 2025-04-10 15:55:17 -05:00
Josh Patterson 888ab162bd update mine_functions and mine after mainint switch to br0. ensure br0 has ip before updating mine 2025-04-10 15:04:08 -04:00
reyesj2 5498673fc3 group events in 10s and remove deprecated output configuration option 2025-04-10 09:46:37 -05:00
reyesj2 96c56297ce external access via user/pass 2025-04-09 22:08:13 -05:00
Josh Patterson 8ab38956d1 change from error to warning 2025-04-09 11:19:55 -04:00
Josh Patterson 0f120f7500 ensure manager is in /etc/hosts 2025-04-09 11:19:18 -04:00
Josh Patterson f6a0e62853 include managerhype in orch. run hypervisor state before libvirt states 2025-04-08 09:50:26 -04:00
Josh Patterson cc0e91aa96 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-04-07 08:52:50 -04:00
Josh Patterson bf9f92b04e remove soc_hypervisor.yaml 2025-04-04 13:47:54 -04:00
Jason Ertel 270958ddfc Merge pull request #14502 from Security-Onion-Solutions/jertel/wip
support background actions via config UI
2025-04-04 11:27:36 -04:00
Jason Ertel b99bb0b004 support options field on actions 2025-04-04 11:19:30 -04:00
Josh Patterson 8f3664f26c need to sync 2025-04-04 09:00:22 -04:00
Josh Patterson 445afca6ee use vrt 2025-04-03 13:44:13 -04:00
Josh Patterson 3083e3bc63 sync runners and create soqemussh user ssh keypair for manager and managerhype 2025-04-03 13:42:02 -04:00
Jason Ertel 9c455badb9 support background actions via config UI 2025-04-03 13:08:44 -04:00
Josh Patterson 9e16c03d25 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-04-03 08:47:54 -04:00
Josh Patterson 275489b8a3 Merge pull request #14499 from Security-Onion-Solutions/strelkaFix
Add missing scanners and fix forcedType for Strelka SOC UI annotations. Restart Strelka containers on config change.
2025-04-02 11:56:44 -04:00
Josh Patterson cd6deae0a7 add missing strelka backend scanners to SOC UI annotation file 2025-04-02 11:20:12 -04:00
Josh Patterson 0b8a7f5b67 fix strelka annotations. restart strelka containers on config change 2025-04-02 10:10:34 -04:00
Mike Reeves 3c342bb90d Merge pull request #14486 from Security-Onion-Solutions/TOoSmOotH-patch-3
Update soup
2025-04-01 09:53:32 -04:00
Jason Ertel ba10228fef Update soup 2025-04-01 09:42:10 -04:00
Mike Reeves 71f146d1d9 Update soup 2025-04-01 09:36:22 -04:00
Josh Patterson b22fe5bd3d set interface for hypervisor/managerhype 2025-04-01 09:27:50 -04:00
Josh Patterson a60e55e5cd remove whitespace control 2025-03-31 16:44:48 -04:00
Josh Patterson e7aa4428de managerhype udate mine when switch to br0 2025-03-31 16:03:19 -04:00
Josh Patterson 64f71143dc fix docker fw rules managerhype 2025-03-31 15:51:32 -04:00
Mike Reeves 72fd25dcaf Merge pull request #14482 from Security-Onion-Solutions/TOoSmOotH-patch-2
Update 2-4.yml
2025-03-31 12:03:49 -04:00
Mike Reeves eef4b82afb Update 2-4.yml 2025-03-31 11:46:03 -04:00
Mike Reeves 1d4d442554 Merge pull request #14481 from Security-Onion-Solutions/patchmerge
Patchmerge
2025-03-31 11:38:29 -04:00
Mike Reeves 02ad08035e Resolve Conflicts 2025-03-31 11:36:55 -04:00
Mike Reeves 335d8851e6 Resolve Conflicts 2025-03-31 11:32:35 -04:00
Mike Reeves e4d2513609 Merge pull request #14479 from Security-Onion-Solutions/patch/2.4.141
2.4.141
2025-03-31 11:21:30 -04:00
Josh Patterson 7aad298720 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-03-31 11:14:47 -04:00
Mike Reeves 22fae2e98d Merge pull request #14478 from Security-Onion-Solutions/2.4.141
2.4.141
2025-03-31 10:38:30 -04:00
Mike Reeves 3850558be3 2.4.141 2025-03-31 10:37:04 -04:00
Josh Patterson 5b785d3ef8 Merge pull request #14477 from Security-Onion-Solutions/issue/14431
heavy node exclude so-import-pcap and so-pcap-import
2025-03-31 09:49:09 -04:00
Josh Patterson 8b874e46d0 heavy node exclude so-import-pcap and so-pcap-import 2025-03-31 09:09:15 -04:00
Josh Patterson 4165b33995 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-03-27 15:34:39 -04:00
Josh Patterson 3e10c95b7b Merge pull request #14463 from Security-Onion-Solutions/mineimp
break out manager from non manager in top
2025-03-27 14:04:19 -04:00
Josh Patterson 1d058729e5 break out manager from non manager 2025-03-27 13:27:34 -04:00
Josh Patterson f9bf4e4130 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-03-27 11:26:32 -04:00
Josh Patterson 056a29ea89 Merge pull request #14457 from Security-Onion-Solutions/mineimp
prevent manager node type highstate failure from missing network.ip_addrs in mine
2025-03-26 15:12:23 -04:00
Josh Patterson 667e66bbef rename mine update and highstate state 2025-03-26 13:56:49 -04:00
Josh Patterson 595ff8dce2 Merge remote-tracking branch 'origin/2.4/dev' into mineimp 2025-03-26 13:09:36 -04:00
Jason Ertel 99aa383e01 soup and version updates 2025-03-26 12:11:53 -04:00
Josh Patterson 5f116b3e43 Merge pull request #14453 from Security-Onion-Solutions/x509v2_fix
patch x509_v2 state salt issue 66929
2025-03-26 11:41:50 -04:00
Josh Patterson bb8f0605e1 patch x509_v2 state salt issue 66929 2025-03-26 10:50:04 -04:00
Josh Patterson 5836bc5bd1 remove require since maybe some failure from mine.update 2025-03-25 21:58:42 -04:00
Josh Patterson 55c815cae8 simplify highstate rerun when node_data pillar empty 2025-03-25 19:44:38 -04:00
Josh Patterson 79388af645 only managers need node_ips 2025-03-25 10:17:43 -04:00
Josh Patterson d7e831fbeb add mine_update reactor config for master 2025-03-24 20:45:35 -04:00
Josh Patterson 8f40b66e3b update mine instead of failing highstate if no node_data 2025-03-24 19:49:24 -04:00
Josh Patterson 0fe3038802 Merge pull request #14444 from Security-Onion-Solutions/minionService
salt-minion service wait for ip on mainint
2025-03-24 16:27:32 -04:00
Josh Patterson cd9b04e1bb Merge pull request #14443 from Security-Onion-Solutions/soup150
soup for 2.4.150
2025-03-24 15:55:28 -04:00
Josh Patterson 0fbb6afee1 soup for 2.4.150 2025-03-24 15:51:22 -04:00
Josh Patterson 402e26fc19 Merge remote-tracking branch 'origin/2.4/dev' into minionService 2025-03-24 15:42:07 -04:00
Mike Reeves b6e10b1de7 Merge pull request #14440 from Security-Onion-Solutions/TOoSmOotH-patch-1
Update VERSION
2025-03-24 15:17:15 -04:00
Mike Reeves 54f3a8cb91 Update 2-4.yml 2025-03-24 15:16:43 -04:00
Mike Reeves 1f98cef816 Update VERSION 2025-03-24 15:15:57 -04:00
Mike Reeves 7a71a5369c Merge pull request #14439 from Security-Onion-Solutions/2.4/dev
2.4.140
2025-03-24 15:08:43 -04:00
Mike Reeves 964b631d58 Merge pull request #14438 from Security-Onion-Solutions/2.4.140
2.4.140
2025-03-24 13:43:49 -04:00
Mike Reeves dcb667b32d 2.4.140 2025-03-24 13:35:39 -04:00
Josh Patterson e61d37893a start salt-minion service when mainint has ip 2025-03-24 12:33:10 -04:00
Josh Patterson 60bd960251 Merge pull request #14434 from Security-Onion-Solutions/backto3006.9
roll back to 3006.9 but leave prep in place for future upgrades
2025-03-23 12:09:52 -04:00
Josh Patterson b974c6e8df roll back to 3006.9 but leave prep in place for future upgrades 2025-03-23 12:07:39 -04:00
Josh Patterson 7484495021 Merge pull request #14433 from Security-Onion-Solutions/soupupdatemine140
update mine
2025-03-22 12:59:22 -04:00
Josh Patterson 0952b7528f update mine
update mine after salt-master restart and before highstate
2025-03-22 12:57:13 -04:00
Josh Brower 14c95a5fe0 Merge pull request #14432 from Security-Onion-Solutions/jbfix
Remove pcapoutdir
2025-03-22 07:13:44 -04:00
Josh Brower d0bb86a24f Remove pcapoutdir 2025-03-22 07:12:19 -04:00
Jorge Reyes 749825af19 Merge pull request #14429 from Security-Onion-Solutions/reyesj2-patch-3
FIX: elastic fleet package list get more than 300 results per query
2025-03-21 15:07:15 -05:00
reyesj2 844283cc38 get more results 2025-03-21 14:55:52 -05:00
Jason Ertel ae0bf1ccdf Merge pull request #14428 from Security-Onion-Solutions/jertel/wip
ignore false positives
2025-03-21 14:56:56 -04:00
Jason Ertel a0637fa25d ignore false positives 2025-03-21 14:54:52 -04:00
Josh Patterson d2a21c1e4c Merge pull request #14427 from Security-Onion-Solutions/pcapperms
move pcapoutdir
2025-03-21 14:50:33 -04:00
Josh Patterson ed23340157 move pcapoutdir 2025-03-21 14:48:31 -04:00
Jason Ertel ef6dbf9e46 Merge pull request #14425 from Security-Onion-Solutions/jertel/wip
support pcap imports for sensors in distributed grids
2025-03-21 13:17:18 -04:00
Jason Ertel 1236c8c1f2 support pcap imports for sensors in distributed grids 2025-03-21 10:34:55 -04:00
Josh Patterson 51625e19ad Merge pull request #14423 from Security-Onion-Solutions/salt3006.10
work with quotes in version
2025-03-21 08:25:55 -04:00
Josh Patterson 760ff1e45b work with quotes in version 2025-03-21 08:20:04 -04:00
Josh Patterson 5b3fa17f81 Merge pull request #14422 from Security-Onion-Solutions/salt3006.10
fix SALTVERSION grep to work with or without quote
2025-03-20 17:01:17 -04:00
Josh Patterson 053eadbb39 fix SALTVERSION grep to work with or without quote 2025-03-20 16:58:16 -04:00
Josh Patterson 540b0de00c Merge pull request #14420 from Security-Onion-Solutions/salt3006.10
Salt3006.10
2025-03-20 15:50:10 -04:00
Josh Patterson c30cbf9af0 remove salt-cloud 2025-03-20 15:44:56 -04:00
Josh Patterson 41c0a91d77 ensure versions are strings 2025-03-20 15:42:16 -04:00
Josh Patterson 6e1e5a2ee6 Merge pull request #14419 from Security-Onion-Solutions/salt3006.10
make string to not drop 0
2025-03-20 15:31:05 -04:00
Josh Patterson aa8fd647b6 make string to not drop 0 2025-03-20 15:27:52 -04:00
Mike Reeves 8feae6ba11 Merge pull request #14416 from Security-Onion-Solutions/salt3006.10
add bootstrap-salt to preloaded soup_scripts
2025-03-20 13:48:46 -04:00
Josh Patterson 028297cef8 add bootstrap-salt to preloaded soup_scripts 2025-03-20 13:46:30 -04:00
Mike Reeves 19755d4077 Merge pull request #14413 from Security-Onion-Solutions/bootstrap-salt-2025.02.24
Update bootstrap-salt.sh
2025-03-20 13:38:34 -04:00
Mike Reeves cd655e6adb Merge pull request #14415 from Security-Onion-Solutions/salt3006.10
upgrade salt 3006.10
2025-03-20 13:37:26 -04:00
Josh Patterson 2be143d902 upgrade salt 3006.10 2025-03-20 13:22:28 -04:00
Josh Patterson 1b98f9f313 Update bootstrap-salt.sh 2025-03-20 10:03:26 -04:00
Jason Ertel 762ccdd222 Merge pull request #14403 from Security-Onion-Solutions/jertel/wip
add no-op soup functions for 2.4.140
2025-03-19 07:24:14 -04:00
Jason Ertel 277504fff6 Merge pull request #14402 from Security-Onion-Solutions/reyesj2-patch-3
ldap_search include observer.name
2025-03-18 10:27:16 -04:00
Jason Ertel 3f3e7ea1e8 add no-op soup functions for 2.4.140 2025-03-18 10:12:23 -04:00
reyesj2 4d7fdd390c ldap_search include observer.name 2025-03-18 08:52:43 -05:00
Josh Patterson 269919b980 run setup_hypervisor.setup_environment for mangerhype if needed 2025-03-18 09:39:49 -04:00
Jason Ertel 05c93e3796 Merge pull request #14394 from Security-Onion-Solutions/jertel/wip
use specified role on new user add
2025-03-17 17:10:45 -04:00
Jorge Reyes fe21a19c5c Merge pull request #14396 from Security-Onion-Solutions/reyesj2-patch-3
add zeek file_extraction forcedType for instances where a single line…
2025-03-17 14:40:40 -05:00
reyesj2 af6245f19d add zeek file_extraction forcedType for instances where a single line is speciifed 2025-03-17 14:30:17 -05:00
Jason Ertel ad8f3dfde7 use specified role on new user add 2025-03-17 14:55:40 -04:00
Josh Patterson 2dc977ddd8 managerhype 2025-03-13 14:33:48 -04:00
Josh Patterson 28c7362cfa Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-03-13 10:56:32 -04:00
Josh Patterson c93a5de460 additional changes for managerhype 2025-03-13 10:55:49 -04:00
Josh Patterson 44a5b3b1e5 MANAGERHYPE setup is now complete! 2025-03-12 21:05:04 -04:00
Jorge Reyes d23b6958c1 Merge pull request #14379 from Security-Onion-Solutions/reyesj2-patch-3
update event pipeline annotation
2025-03-12 13:22:40 -05:00
reyesj2 60b1535018 update event pipeline annotation
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-03-12 13:15:57 -05:00
Mike Reeves 758c6728f9 Merge pull request #14375 from Security-Onion-Solutions/TOoSmOotH-patch-1
Update VERSION
2025-03-11 13:27:21 -04:00
Mike Reeves 5234b21743 Update 2-4.yml 2025-03-11 13:25:43 -04:00
Mike Reeves 7d73f6cfd7 Update VERSION 2025-03-11 13:25:00 -04:00
Mike Reeves fb54c2f533 Merge pull request #14373 from Security-Onion-Solutions/2.4/dev
2.4.130
2025-03-11 13:14:26 -04:00
Mike Reeves e20364cdf5 Merge pull request #14372 from Security-Onion-Solutions/2.4.130
2.4.130
2025-03-11 12:10:39 -04:00
Mike Reeves a9484b4ca9 2.4.130 2025-03-11 12:01:01 -04:00
Josh Patterson ae94722eda Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-03-11 11:20:50 -04:00
Josh Patterson ae993c47c1 remove minion pillar files when a vm is destroyed 2025-03-11 11:12:45 -04:00
Josh Patterson c784a6e440 fix setting hypervisor for our custom event tag 2025-03-10 16:55:02 -04:00
Josh Patterson c66cd3b2f3 ensure image is readded if removed 2025-03-10 11:23:26 -04:00
Josh Brower 6081c46d7f Merge pull request #14362 from Security-Onion-Solutions/reyesj2-patch-2
fix osquery action_data mapping conflict
2025-03-08 10:18:12 -05:00
reyesj2 4dd72ad15c fix osquery action_data mapping conflict
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-03-07 17:05:13 -06:00
Jason Ertel 4893eda4fe Merge pull request #14359 from Security-Onion-Solutions/jertel/wip
Improve label
2025-03-07 08:44:12 -05:00
Jason Ertel 2af05b9a23 switch back to colon for better clarity 2025-03-07 08:24:19 -05:00
Jason Ertel 0bb76aecb3 Merge branch '2.4/dev' into jertel/wip 2025-03-07 08:23:18 -05:00
Mike Reeves 53ab7a223d Merge pull request #14358 from Security-Onion-Solutions/dougburks-patch-1 2025-03-07 07:21:14 -05:00
Doug Burks 3037dc7c38 Update soc_soc.yaml to fix previous change 2025-03-07 07:13:27 -05:00
Mike Reeves bde8a965f3 Merge pull request #14357 from Security-Onion-Solutions/TOoSmOotH-patch-3
Update soc_soc.yaml
2025-03-06 21:12:24 -05:00
Mike Reeves 14e95f4898 Update soc_soc.yaml 2025-03-06 21:01:45 -05:00
Mike Reeves bad0031829 Update soc_soc.yaml 2025-03-06 20:58:23 -05:00
Josh Patterson f30938ed59 hypervisor annotation show if base domain is initialized or not 2025-03-06 15:26:08 -05:00
Doug Burks 630140b979 Merge pull request #14354 from Security-Onion-Solutions/dougburks-patch-1
Update soc_elasticsearch.yaml to include note about ILM rollover
2025-03-06 12:11:58 -05:00
Doug Burks cce94d96d1 Update soc_elasticsearch.yaml to include note about ILM rollover 2025-03-06 11:14:48 -05:00
Mike Reeves bcea02b059 Merge pull request #14301 from Security-Onion-Solutions/truefalse
Update annotations for new features
2025-03-05 16:23:00 -05:00
Mike Reeves 03ebc2d86e Add Actions 2025-03-05 15:58:10 -05:00
Mike Reeves 3021ed5d36 Add Actions 2025-03-05 15:56:26 -05:00
Jorge Reyes e59ebc89f8 Merge pull request #14346 from Security-Onion-Solutions/reyesj2-patch-2
bump version
2025-03-05 14:40:36 -06:00
reyesj2 6a5377ceac bump version 2025-03-05 14:39:01 -06:00
Jorge Reyes 515cb3aea8 Merge pull request #14345 from Security-Onion-Solutions/reyesj2-patch-2
osquery templates
2025-03-05 14:28:08 -06:00
Mike Reeves b51aa56e86 Some things I thought were bools are not bools 2025-03-05 15:15:26 -05:00
reyesj2 d2884ef00b typo 2025-03-05 14:02:45 -06:00
reyesj2 0f16b00563 osquery templates 2025-03-05 13:57:47 -06:00
Mike Reeves b01fb733a9 Some things I thought were bools are not bools 2025-03-05 14:56:26 -05:00
Mike Reeves 945a467ec8 Some things I thought were bools are not bools 2025-03-05 14:54:17 -05:00
Mike Reeves 67f9cd39db Some things I thought were bools are not bools 2025-03-05 14:53:29 -05:00
Mike Reeves 72ffef9433 Some things I thought were bools are not bools 2025-03-05 14:52:54 -05:00
Mike Reeves cf536469e6 Some things I thought were bools are not bools 2025-03-05 14:51:56 -05:00
Mike Reeves c7c6d3e556 Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into truefalse 2025-03-05 13:21:21 -05:00
coreyogburn 3a465c2e69 Merge pull request #14343 from Security-Onion-Solutions/cogburn/detections-group-items
Add Client Parameter
2025-03-05 09:57:31 -07:00
Corey Ogburn 21a64b6c1d Add Client Parameter
Add groupItemsPerPage so detections groupby tables have proper default value for page size.
2025-03-05 09:43:21 -07:00
Josh Patterson 6c472dd383 Merge remote-tracking branch 'origin/2.4/dev' into vlb2 2025-03-05 08:58:03 -05:00
Josh Patterson 2c5861a0c2 ensure local hypervisor dir when new hypervisor key accepted. apply soc.dyanno.hypervisor when hypervisor key accepted 2025-03-05 08:51:10 -05:00
Doug Burks 2f6c7d2643 Merge pull request #14340 from Security-Onion-Solutions/dougburks-patch-1
FEATURE: Add sankey chart to Elastic Agent API dashboard to show relationship between process.name and process.Ext.api.name #14339
2025-03-05 08:02:39 -05:00
Doug Burks c6c67f4d06 FEATURE: Add sankey chart to Elastic Agent API dashboard to show relationship between process.name and process.Ext.api.name #14339 2025-03-05 06:31:16 -05:00
Jorge Reyes f35930317b Merge pull request #14336 from Security-Onion-Solutions/reyesj2-patch-2
ES 8.17.3
2025-03-04 15:36:59 -06:00
reyesj2 11dc004811 ES 8.17.3 2025-03-04 14:24:38 -06:00
Jorge Reyes 966503d875 Merge pull request #14331 from Security-Onion-Solutions/reyesj2-patch-2
osquery v1.15.0 index templates updates
2025-03-04 13:17:28 -06:00
reyesj2 124bf266b5 osquery v1.15.0 index templates updates
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-03-04 12:27:04 -06:00
Jason Ertel 75e3bba9f5 reduce stdout 2025-03-04 11:35:22 -05:00
Jason Ertel 0ff4fc101b Merge pull request #14329 from Security-Onion-Solutions/jertel/wip
reduce stdout verbosity
2025-03-04 11:23:14 -05:00
Jason Ertel 85450693a2 Merge branch '2.4/dev' into jertel/wip 2025-03-04 10:55:29 -05:00
Jason Ertel 0047246cf2 reduce stdout verbosity 2025-03-04 10:55:12 -05:00
Jorge Reyes 95d3a2d834 Merge pull request #14328 from Security-Onion-Solutions/reyesj2-patch-2
install bc package
2025-03-04 09:03:02 -06:00
reyesj2 e1c8bee71a install bc package 2025-03-04 08:58:41 -06:00
Doug Burks 1c96449ad9 Merge pull request #14327 from Security-Onion-Solutions/dougburks-patch-1
FIX: Elastic Agent Security Events dashboard should reference user.effective.name #14325
2025-03-04 07:10:41 -05:00
Doug Burks 44535cba8c FIX: Elastic Agent Security Events dashboard should reference user.effective.name #14325 2025-03-04 06:46:56 -05:00
Jorge Reyes 3f4a5a1b28 Merge pull request #14320 from Security-Onion-Solutions/reyesj2/zeekparslin
zeek traceroute & ntp
2025-03-03 10:56:15 -06:00
reyesj2 4bd83f8983 zeek traceroute & ntp
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-03-03 10:48:06 -06:00
Doug Burks 206acbe618 Merge pull request #14312 from Security-Onion-Solutions/dougburks-patch-1
FIX: SOC Actions for process.entity_id value must be quoted #14311
2025-03-03 07:09:45 -05:00
Doug Burks e53f4fd1f1 Update defaults.yaml to quote the process.entity_id value 2025-03-02 05:54:30 -05:00
Josh Patterson 8047e196fe fix pipeline workers, zeek/suricata lbprocs, CPUCORES and CORECOUNT 2025-02-28 17:21:06 -05:00
Josh Patterson c6c979dc19 properly set memory and CPUCORES for minion pillars during vm setup 2025-02-28 16:12:28 -05:00
Jorge Reyes 573a2a5595 Merge pull request #14307 from Security-Onion-Solutions/reyesj2/esmngdint 2025-02-27 17:13:26 -06:00
reyesj2 9bc64bf453 managed int multiline input 2025-02-27 16:48:07 -06:00
Josh Patterson c8a1c8377a vm power operations 2025-02-27 16:04:44 -05:00
Mike Reeves 2ffaf2f601 Add hunt queries 2025-02-27 12:42:03 -05:00
Mike Reeves 4696152f78 Add hunt queries 2025-02-27 12:31:51 -05:00
Mike Reeves a0944f8359 Add hunt queries 2025-02-27 12:17:57 -05:00
Mike Reeves 1fdbe987b8 Add hunt queries 2025-02-27 12:15:37 -05:00
Mike Reeves 40303c2d78 Add hunt queries 2025-02-27 12:10:59 -05:00
Mike Reeves 4b5048bd80 Add hunt queries 2025-02-27 11:57:57 -05:00
Mike Reeves 9d31050907 roll back SOC changes 2025-02-27 11:32:59 -05:00
Mike Reeves e930d1dec6 roll back SOC changes 2025-02-27 11:28:06 -05:00
Mike Reeves 1d3bae4a7a Add additional entries for actions 2025-02-27 11:15:51 -05:00
Mike Reeves d950e4ebb3 Add additional entries for actions 2025-02-27 11:11:56 -05:00
Mike Reeves 3ba82bd5a4 Fix actions 2025-02-27 11:04:47 -05:00
Jason Ertel bc969c1ca2 Merge pull request #14302 from Security-Onion-Solutions/jertel/wip
more false positives
2025-02-27 08:00:49 -05:00
Jason Ertel 772aa7379f more false positives 2025-02-27 07:55:22 -05:00
Josh Patterson 4e954c24f7 handle cpu, copper and sfp as options 2025-02-26 17:58:09 -05:00
Mike Reeves 6c00cdd726 Fix healthlink 2025-02-26 16:15:00 -05:00
Josh Patterson 52839e2a7d implement regex for cpu and mem 2025-02-26 15:22:36 -05:00
Josh Patterson 1a9d5f151f change description formatting. include full vm name in HYPERVISORS 2025-02-26 14:28:31 -05:00
Mike Reeves 8bc500e4da soc 2025-02-26 14:16:42 -05:00
Mike Reeves 25217c3262 soc 2025-02-26 14:14:25 -05:00
Mike Reeves 0c2797ecdc soc 2025-02-26 13:49:30 -05:00
Mike Reeves 101f6e744a sensoroni 2025-02-26 13:44:35 -05:00
Mike Reeves c5e0b8a42e sensoroni 2025-02-26 13:40:24 -05:00
Mike Reeves 6d7e0a7a72 sensoroni 2025-02-26 13:39:18 -05:00
Mike Reeves 2bc2e86b01 actions 2025-02-26 13:36:16 -05:00
Mike Reeves 6fec217068 actions 2025-02-26 13:34:32 -05:00
Mike Reeves ee1af39c55 elastalert 2025-02-26 13:17:08 -05:00
Mike Reeves a5ae481ea4 globals 2025-02-26 13:10:57 -05:00
Jorge Reyes f8d19301be Merge pull request #14300 from Security-Onion-Solutions/betrfix
default capinfos to use start/end time arg
2025-02-26 08:32:46 -06:00
Josh Patterson d6f527881a allow for destroyed vms to be displayed in ui. VNM cleanup destroyed status files after 48h 2025-02-26 09:06:45 -05:00
reyesj2 80fed1e045 default capinfos to use start/end time arg 2025-02-25 21:47:56 -06:00
Jason Ertel a94d657251 Merge pull request #14296 from Security-Onion-Solutions/jertel/wip
annotation/config updates
2025-02-25 17:04:13 -05:00
Jason Ertel 9dafa062f8 annotation/config updates 2025-02-25 17:00:41 -05:00
Josh Patterson 5811b184be enhance annotations. account for line separation instead of comma for hardware 2025-02-25 11:13:35 -05:00
Josh Patterson e0a3b51ca2 md in description 2025-02-25 08:54:04 -05:00
Josh Patterson b5276a6a1d add hypervisor to firewall annotation 2025-02-25 04:41:59 -05:00
Jorge Reyes c8a6aa42fb Merge pull request #14290 from Security-Onion-Solutions/reyesj2-patch-41
allow installing integrations that require an elastic license
2025-02-24 15:24:38 -06:00
reyesj2 17edc06987 allow installing integrations that require an elastic license 2025-02-24 14:45:43 -06:00
Josh Patterson cc1b030c00 q
xMerge remote-tracking branch 'origin/2.4/dev' into vlb2
2025-02-24 15:32:54 -05:00
Josh Patterson c896785480 fix vm deletion 2025-02-24 14:20:09 -05:00
Josh Patterson 0006948c29 get hypervisor from dir name 2025-02-24 12:26:28 -05:00
Josh Patterson 6ac14f832e only allow first process step to overwrite last 2025-02-24 12:22:52 -05:00
Jorge Reyes a60afdbaa5 Merge pull request #14288 from Security-Onion-Solutions/reyesj2-patch-41
missing metadata field
2025-02-24 10:31:42 -06:00
reyesj2 e2772e899e component template missing metadata field 2025-02-24 10:24:11 -06:00
Jorge Reyes 43f86e5e37 Merge pull request #14287 from Security-Onion-Solutions/reyesj2-patch-41
elasticsearch templates load
2025-02-24 09:11:58 -06:00
reyesj2 d7c06e5ff4 run elasticsearch state, right before completing soup to ensure templates for optional integrations are loaded 2025-02-24 09:02:56 -06:00
reyesj2 3f2b0973af manually create unused logs-soc@package for successful elasticsearch templates load 2025-02-24 08:59:59 -06:00
Josh Brower ac841077c2 Merge pull request #14281 from Security-Onion-Solutions/2.4/patch3
Remove old defend json
2025-02-23 15:03:05 -05:00
Josh Patterson fd9a4966ec move logic from reactor to orchestration 2025-02-23 14:07:51 -05:00
Josh Brower 6d0350793d Remove old defend json 2025-02-23 14:02:17 -05:00
Jason Ertel d74f9183a0 Merge pull request #14279 from Security-Onion-Solutions/jertel/wip
ensure override for nmcli exists in /etc
2025-02-21 17:13:56 -05:00
Jason Ertel 7155ccaf96 ensure override for nmcli exists in /etc 2025-02-21 17:10:39 -05:00
Jorge Reyes 64996db86b Merge pull request #14277 from Security-Onion-Solutions/reyesj2-patch-40
move removal of eaintegrations.txt to up_to_2.4.130
2025-02-21 14:07:31 -06:00
reyesj2 c1282e77a0 move removal of eaintegrations.txt to up_to_2.4.130 2025-02-21 14:02:22 -06:00
Josh Patterson 3246176c0a comments 2025-02-21 14:34:08 -05:00
Josh Patterson b68f561e6f progress and hw tracking for soc hypervisor dynamic annotations 2025-02-21 09:50:01 -05:00
Josh Brower 79574b31b0 Merge pull request #14275 from Security-Onion-Solutions/2.4/patch
Dont upgrade integrations during pre-phase
2025-02-21 09:37:34 -05:00
Josh Brower 22f3865602 Dont upgrade integrations during pre-phase 2025-02-21 09:32:36 -05:00
Jason Ertel f51d255c98 Merge pull request #14274 from Security-Onion-Solutions/jertel/wip
Ignore more acceptable test error logs
2025-02-21 08:40:56 -05:00
Jason Ertel 66a2ec7e21 ES upgrade errors to ignore 2025-02-21 08:38:40 -05:00
Jorge Reyes fc12b1f09b Merge pull request #14272 from Security-Onion-Solutions/reyesj2-patch-1
ES 8.17.2 pipeline version updates
2025-02-20 17:32:20 -06:00
reyesj2 69b559fb26 ES 8.17.2 pipeline version updates 2025-02-20 17:11:28 -06:00
Jorge Reyes 637ed59567 Merge pull request #14271 from Security-Onion-Solutions/reyesj2-patch-1
add back settings previously defined when overwritting logs-elastic_a…
2025-02-20 15:26:12 -06:00
reyesj2 df350b5a56 ES 8.17.2 2025-02-20 14:20:09 -06:00
reyesj2 3b6344e7f0 add back settings previously defined when overwritting logs-elastic_agent@package and logs-endpoint.diagnostics.collection@package 2025-02-20 12:42:30 -06:00
Doug Burks cee9f66689 Merge pull request #14269 from Security-Onion-Solutions/dougburks-patch-1
Configure issue template chooser
2025-02-20 13:29:32 -05:00
Doug Burks 5dc9200ee7 Add files via upload 2025-02-20 13:19:22 -05:00
Doug Burks 2be5384980 Create config.yml 2025-02-20 13:19:08 -05:00
Doug Burks 25dfc182a9 Delete .github/ISSUE_TEMPLATE 2025-02-20 13:18:02 -05:00
Jorge Reyes 145648431f Merge pull request #14267 from Security-Onion-Solutions/reyesj2-patch-1
set metrics indices to 0 replicas
2025-02-20 10:13:29 -06:00
Doug Burks 14e7e411c0 Merge pull request #14268 from Security-Onion-Solutions/dougburks-patch-1
Create LICENSE
2025-02-20 11:13:12 -05:00
reyesj2 c9b41e2eb1 formatting
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-02-20 10:11:34 -06:00
Doug Burks 7c2118f2f6 Create LICENSE 2025-02-20 11:07:50 -05:00
reyesj2 499d473b9d set metrics indices to 0 replicas 2025-02-20 10:06:59 -06:00
Josh Brower 41147ae7f3 Merge pull request #14265 from Security-Onion-Solutions/2.4/elasticfix
Update Elastic Defend JSON
2025-02-19 16:22:28 -05:00
Josh Brower c6d72d31cb Update Elastic Defend JSON 2025-02-19 16:16:38 -05:00
Jorge Reyes bb101ef95e Merge pull request #14259 from Security-Onion-Solutions/reyesj2-patch-1
make sure optional integrations components list is non-empty
2025-02-19 10:50:37 -06:00
reyesj2 64f6a2d81e re-enable security (siem) in default kibana space 2025-02-19 10:38:37 -06:00
reyesj2 45c66b93d7 make sure only a non-empty file is loaded
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-02-19 09:23:48 -06:00
Jorge Reyes a3dba9b566 Merge pull request #14255 from Security-Onion-Solutions/foxtrot
ES 8.17.1
2025-02-18 14:58:46 -06:00
Jorge Reyes f991d8a10a Update .gitleaks.toml 2025-02-18 14:37:20 -06:00
Jorge Reyes 2b7ebf08cb Update VERSION 2025-02-18 13:18:08 -06:00
Jason Ertel 23ab8983f7 Revert "Support CLI changing of a user's password without disabling existing auth settings for that user"
This reverts commit b25b6f7bf2.
2025-02-18 12:41:41 -05:00
Jason Ertel b25b6f7bf2 Support CLI changing of a user's password without disabling existing auth settings for that user 2025-02-18 12:37:25 -05:00
Jason Ertel b8b77693e1 Merge pull request #14254 from Security-Onion-Solutions/jertel/wip
use consistent ciphers across listeners
2025-02-18 12:19:24 -05:00
Jason Ertel 19593cd771 use consistent ciphers across listeners 2025-02-18 12:17:50 -05:00
reyesj2 1be8de7acb must use null check 2025-02-18 11:16:57 -06:00
Jason Ertel 564d8c2868 Merge branch '2.4/dev' into jertel/wip 2025-02-18 11:50:21 -05:00
Doug Burks 8033cdbc89 Merge pull request #14253 from Security-Onion-Solutions/dougburks-patch-1
FIX: Add TLSv1.3 to nginx config #14252
2025-02-18 11:49:22 -05:00
Jason Ertel 7dd64380cc Enable TLSv1.3 and use consistent ciphers across listeners 2025-02-18 11:48:00 -05:00
Doug Burks 5c3e28535a FIX: Add TLSv1.3 to nginx config #14252 2025-02-18 11:46:45 -05:00
reyesj2 21ed1439e2 update udp integration policy 2025-02-18 10:40:18 -06:00
reyesj2 c1c72ddd9b update global@custom pipeline ignore null/empty string values 2025-02-18 10:39:54 -06:00
reyesj2 235a8e3934 update index templates for endpoint integration 2025-02-17 18:30:51 -06:00
reyesj2 3530bff320 always update package components state file to ensure index templates are created with any available integration components 2025-02-17 12:29:27 -06:00
reyesj2 12f0195f29 pfsense integration - keep suricata events 2025-02-17 12:28:23 -06:00
reyesj2 85dcfbf368 update kibana default space 2025-02-17 12:27:36 -06:00
reyesj2 8568c372f6 disable fleet apm 2025-02-17 12:21:31 -06:00
Josh Patterson 8ffd4fc664 new examples 2025-02-16 02:31:52 -05:00
Josh Patterson f46548ed88 remove free hw from description 2025-02-16 02:25:18 -05:00
Josh Patterson 0d335e3056 free and totals in labels 2025-02-16 02:23:11 -05:00
Josh Patterson 6ff701bd5c soc ui improvements for hypervisor layout. show free hardware for a hypervisor in the description 2025-02-16 01:33:50 -05:00
Josh Patterson c34be5313d hardware logging. vm state file logging 2025-02-15 21:41:01 -05:00
Josh Patterson ec2fc0a5f2 change locking method 2025-02-15 18:56:04 -05:00
Josh Patterson ad54afe39a ensure socore:socore ownership 2025-02-15 12:11:23 -05:00
Josh Patterson eb4cd75218 virtual_node_manager lookup hardware from defaults. allocate hw in vm file 2025-02-15 11:29:47 -05:00
Josh Patterson a84f5a1e32 updated logging added returns 2025-02-15 11:14:39 -05:00
Josh Patterson e193347fb4 add hypervisor to host keys first connection. cleaner qcow2 logging. 2025-02-15 10:54:49 -05:00
Josh Patterson ad27c8674b no longer need add_* nodes 2025-02-15 10:50:09 -05:00
Jorge Reyes 810abba83e Merge pull request #14229 from Security-Onion-Solutions/reyesj2/rel
force es pipeline sync
2025-02-13 08:54:06 -06:00
reyesj2 03b76cbcf5 remove state files 2025-02-13 08:51:50 -06:00
reyesj2 c711ffe6c5 keep pipeline "managed" metadata 2025-02-13 08:44:56 -06:00
Jorge Reyes 8094bf9c7c Merge pull request #14225 from Security-Onion-Solutions/reyesj2/rel
update pfsense pipeline version. Remove unused component templates
2025-02-12 16:37:25 -06:00
reyesj2 09c7b31918 update pfsense pipeline version. Remove unused component templates 2025-02-12 16:33:56 -06:00
Jorge Reyes d1e98d0849 Merge pull request #14224 from Security-Onion-Solutions/reyesj2/rel
Revert ES 8.17.2 upgrade -> 8.17.1
2025-02-12 13:18:39 -06:00
reyesj2 40cb3a53ae Revert ES 8.17.2 upgrade -> 8.17.1
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-02-12 13:18:08 -06:00
Josh Patterson 5123a86062 start of dynamic annotations for hypervisor 2025-02-12 13:21:39 -05:00
Mike Reeves e9e7434c69 Merge pull request #14222 from Security-Onion-Solutions/TOoSmOotH-patch-2
Update 2-4.yml
2025-02-12 11:30:38 -05:00
Mike Reeves d2ac6ec10f Update 2-4.yml 2025-02-12 11:29:07 -05:00
Mike Reeves 4f19884c8d Merge pull request #14221 from Security-Onion-Solutions/TOoSmOotH-patch-1
Update VERSION
2025-02-12 11:28:11 -05:00
Mike Reeves 16c332ad2e Update VERSION 2025-02-12 11:27:43 -05:00
Mike Reeves d430dd2b73 Merge pull request #14219 from Security-Onion-Solutions/2.4/dev
2.4.120
2025-02-12 11:14:56 -05:00
Mike Reeves 43a0020a9e Merge pull request #14220 from Security-Onion-Solutions/fixeroni
Merge Conflict Fix
2025-02-12 09:37:04 -05:00
Mike Reeves b0e82cd59b Fix Conflict 2025-02-12 09:35:52 -05:00
Mike Reeves 237370f0c7 Merge pull request #14218 from Security-Onion-Solutions/2.4.120
2.4.120
2025-02-12 09:20:40 -05:00
Mike Reeves 69be367acf 2.4.120 2025-02-12 09:09:38 -05:00
Jorge Reyes cdf8943f24 Merge pull request #14214 from Security-Onion-Solutions/reyesj2/rel
ES 8.17.2
2025-02-11 11:24:18 -06:00
reyesj2 fb0cd436d3 ES 8.17.2 TODO: Check import-evtx-logs.json for updated pipeline versions
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-02-11 11:23:04 -06:00
reyesj2 33f145a40b ensure network packet capture integration data has event.module:network_traffic 2025-02-10 13:16:39 -06:00
reyesj2 3b69ff9fc9 integration policy update 2025-02-10 13:16:25 -06:00
Jorge Reyes 66bc0d487c Merge pull request #14206 from Security-Onion-Solutions/reyesj2-patch-00
zeek.software typo
2025-02-07 15:27:52 -06:00
reyesj2 9bde70a8e2 zeek.software typo
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-02-07 15:19:40 -06:00
m0duspwnens 010c205eec configure bond and monitor nics 2025-02-07 14:45:06 -05:00
Jorge Reyes 322941f29a Merge pull request #14203 from Security-Onion-Solutions/reyesj2-patch-00
fix defining custom logstash pipelines when kafka is enabled
2025-02-07 07:52:11 -06:00
reyesj2 dd17ee7665 fix defining custom logstash pipelines when kafka is enabled 2025-02-06 22:19:24 -06:00
Josh Patterson 160c84ec1a Merge pull request #14200 from Security-Onion-Solutions/2.4/dev
2.4/dev
2025-02-06 17:41:22 -05:00
m0duspwnens 924c0b63bd put vnm engine in place 2025-02-06 16:05:56 -05:00
m0duspwnens 9b8dce0c77 only wait and make predicable when virt-install runs 2025-02-06 15:44:28 -05:00
m0duspwnens 7159678385 create predicatble interfaces 2025-02-06 15:30:46 -05:00
Jason Ertel 4b51066327 Merge pull request #14191 from Security-Onion-Solutions/jertel/wip
ca download; ignore shard errors on startup; clarify oidc id
2025-02-05 15:09:57 -05:00
Jason Ertel bf19c6e730 ca download; ignore shard errors on startup; clarify oidc id 2025-02-05 15:04:04 -05:00
Josh Brower 12a2b491c3 Merge pull request #14190 from Security-Onion-Solutions/2.4/fixmsi
Refresh Agent installers
2025-02-05 10:22:17 -05:00
Joshua Brower 4636a8d9b1 Refresh Agent installers 2025-02-05 09:38:33 -05:00
Josh Brower abbb0db1ff Merge pull request #14189 from Security-Onion-Solutions/2.4/fixmsi
Rework for MSI
2025-02-05 09:35:37 -05:00
Joshua Brower 95fe212202 Rework for MSI 2025-02-05 09:29:45 -05:00
coreyogburn fbb9bf14e9 Merge pull request #14183 from Security-Onion-Solutions/cogburn/escalate-limit
New Limit on Bulk Creating Related Events
2025-02-04 15:24:53 -07:00
Corey Ogburn 23ebe966e0 Added Large Values Warning
maxBulkEscalateEvents now has a warning that large values may run into other limits.
2025-02-04 10:33:04 -07:00
Corey Ogburn d0fa6eaf83 New Limit on Bulk Creating Related Events
Used by the UI and API to hint at a user that not every event will be attached to a case. Supports values up to 10,000 (the default limit on the number of documents returned by a single ES search).
2025-02-03 14:20:33 -07:00
m0duspwnens c8e232c598 cloudinit network config out of user-data. default 220G disk 2025-02-03 12:20:34 -05:00
Josh Brower 7a0309cdf4 Merge pull request #14179 from Security-Onion-Solutions/2.4/fixilmpolicy
Fix ip-mappings ILM
2025-02-03 09:35:55 -05:00
Joshua Brower b874619f0d Fix ip-mappings ILM 2025-02-03 09:31:08 -05:00
m0duspwnens a3013ff85b simplify the LVM deactivation process by removing unnecessary VG removal attempts 2025-01-31 16:36:51 -05:00
m0duspwnens 65c5abfa88 add note regarding possible missing devices 2025-01-31 16:15:46 -05:00
m0duspwnens 0114e36cfa set lvm = system uuid and only sanitize new nvme if doesnt belong to current vm 2025-01-31 15:17:54 -05:00
m0duspwnens 5c56e0f498 already configured not failure state 2025-01-31 11:18:11 -05:00
m0duspwnens 61992ae787 verify script work with 1 or more nvme 2025-01-30 13:28:08 -05:00
m0duspwnens 08bbeedbd7 add automatic NVMe device mounting for VMs with LVM support 2025-01-30 09:55:26 -05:00
m0duspwnens a5f2db8c80 add preflight check to ensure repo connectivity prior to installing salt-minion with salt-cloud 2025-01-29 18:17:29 -05:00
m0duspwnens 8d1ce0460f remove possible race condition caused by vm init cron for setup.virt.init. setup.virt and mine updated during salt-cloud call with init_script 2025-01-29 14:23:10 -05:00
Jason Ertel 028c73fd3a Merge pull request #14162 from Security-Onion-Solutions/TOoSmOotH-patch-2
Update so-functions
2025-01-29 10:12:20 -05:00
Mike Reeves 27e9773782 Update so-functions 2025-01-29 10:07:52 -05:00
Josh Patterson 7ae128dec6 Merge pull request #14161 from Security-Onion-Solutions/esdtsn
env discovery.type single-node change
2025-01-29 09:29:04 -05:00
Josh Patterson fe4129c8e0 env discovery.type single-node change
only managers and heavynodes are eligible for discovery.type=single-node
2025-01-29 09:11:52 -05:00
m0duspwnens 3c85b48291 manage with contents to simplify salt cloud profile file_map 2025-01-29 08:12:50 -05:00
m0duspwnens ea2e026c56 only manager nodes or heavynodes should ever be single-node 2025-01-29 08:10:05 -05:00
m0duspwnens 8b3f310212 install python3-dnf-plugin-versionlock on vm before first highstate 2025-01-29 04:08:30 -05:00
m0duspwnens 87136e9e2b restart salt-minion to trigger highstate 2025-01-28 16:38:20 -05:00
m0duspwnens 5a6a9d6ec2 round ES_HEAP_SIZE 2025-01-28 16:01:49 -05:00
m0duspwnens d3b3a0eb8a wrap salt-cloud -yd. start implementing vm/minion cleanup with ip removal 2025-01-28 14:04:58 -05:00
m0duspwnens 91fc59cffc add removehost option to so-firewall. add logging to console and so-firewall.log 2025-01-28 14:04:02 -05:00
m0duspwnens e32dbad0d0 fix monitoring for add_ files 2025-01-28 11:22:26 -05:00
Jorge Reyes 8828a3049d Merge pull request #14155 from Security-Onion-Solutions/reyesj2/es-integ-tmp
add additional weird_integration
2025-01-27 16:36:17 -06:00
reyesj2 d74b69d84d add additional weird_integration 2025-01-27 16:34:33 -06:00
m0duspwnens b66aafd168 fix claiming for cpu/mem 2025-01-27 17:24:04 -05:00
m0duspwnens 2cd0f69069 watch and build 2025-01-27 16:40:10 -05:00
m0duspwnens 0177f641c8 watch for files and create a vm 2025-01-27 15:09:42 -05:00
Jorge Reyes abcfe638c9 Merge pull request #14153 from Security-Onion-Solutions/reyesj2/es-integ-tmp
Reyesj2/es integ tmp
2025-01-27 14:07:32 -06:00
Joshua Brower 49ab0751c0 Remove uneeded import 2025-01-27 15:01:21 -05:00
Joshua Brower e994f3a220 Fix commits 2025-01-27 14:48:50 -05:00
reyesj2 38b0276458 remove reference to deleted file 2025-01-27 13:45:18 -06:00
reyesj2 a373d96c3c run managed_soc_annotations.sls from manager state 2025-01-27 13:45:03 -06:00
m0duspwnens b3969a6ce0 fix hardware passthrough for pci devices 2025-01-24 17:19:41 -05:00
m0duspwnens ab97d3b8b7 ensure 64962 patch applies to manager for salt-cloud 2025-01-24 11:26:34 -05:00
Josh Brower 97a3f130c8 Update Elastic 2025-01-23 15:32:39 -05:00
reyesj2 5b8f8fb62f add/remove es annotations/defaults automagically
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-23 12:47:22 -06:00
m0duspwnens 213df68d04 merge with 120 dev and fix conflicts 2025-01-23 10:56:48 -05:00
Josh Brower 9738ef382c Upgrade Elastic to 8.17.1 2025-01-23 08:12:02 -05:00
Jason Ertel ca0c1170ab Merge pull request #14140 from Security-Onion-Solutions/jertel/wip
fix issue with first-time api client permission toggling
2025-01-22 17:43:54 -05:00
Jason Ertel db9387764d fix issue with first-time api client permission toggling 2025-01-22 17:41:04 -05:00
reyesj2 e0039a08ef fix forcedType typo 2025-01-22 13:57:26 -06:00
Jorge Reyes 09df4a5771 Merge pull request #14139 from Security-Onion-Solutions/reyesj2/es-integ-tmp
fixes merging local pillar /global overrides for generated index temp…
2025-01-22 13:12:53 -06:00
reyesj2 81ac1ebc08 fixes merging local pillar /global overrides for generated index templates 2025-01-22 13:12:09 -06:00
Jorge Reyes c2f5c2226f Merge pull request #14138 from Security-Onion-Solutions/reyesj2/es-integ-tmp
add back missing component for http_endpoint_x_generic & winlog_x_win…
2025-01-22 10:16:30 -06:00
reyesj2 d779f7ae7f add back missing component for http_endpoint_x_generic & winlog_x_winglog 2025-01-22 10:15:16 -06:00
Jorge Reyes d26c7e6f9b Merge pull request #14134 from Security-Onion-Solutions/reyesj2/es-integ-tmp
remove individual <integration>@custom mappings. Moved over to so-fle…
2025-01-21 11:00:18 -06:00
reyesj2 6331298eac remove individual <integration>@custom mappings. Moved over to so-fleet_integrations.ip_mappings-1 2025-01-21 10:49:54 -06:00
reyesj2 76abf37351 Merge remote-tracking branch 'origin/2.4/dev' into foxtrot 2025-01-21 09:03:04 -06:00
m0duspwnens 9db3cd901c update documentation of core functionality 2025-01-18 10:45:10 -05:00
m0duspwnens 64c9230423 prevent conflicts with network manager in base vm 2025-01-18 10:44:44 -05:00
m0duspwnens 17943ef0db add hypervisor state to hypervisor node 2025-01-18 08:24:50 -05:00
m0duspwnens 8ed3f0b1cc change base image path for so-salt-cloud 2025-01-18 07:30:36 -05:00
m0duspwnens 7c50a5e17b cloud-init needs to import repo gpg keys so packags can install 2025-01-17 23:16:18 -05:00
m0duspwnens c13c85bd2d manager needs ssh config. need -r to ignore bootstrap provided repos 2025-01-17 22:54:46 -05:00
m0duspwnens ae01dc9639 manager needs more packages for salt-cloud. change location of priv key for salt-cloud config 2025-01-17 22:26:39 -05:00
m0duspwnens a74ed0daf0 fix disabling cloud-init and system shutdown. increase ram/cpu of base vm. shrink disk_size to 6G for testing 2025-01-17 21:25:40 -05:00
m0duspwnens 60387651d2 recreate the base vm if any of the cloud init files change 2025-01-17 20:13:42 -05:00
m0duspwnens 3a78be68d6 ensure cloud-init is removed 2025-01-17 20:05:35 -05:00
m0duspwnens a896332db3 fix deprecation 2025-01-17 19:49:41 -05:00
m0duspwnens 54eeb0e327 handle refreshing base image and reinstalling the vm if the source qcow2 image changes 2025-01-17 19:27:04 -05:00
Jorge Reyes 704e30219a Merge pull request #14124 from Security-Onion-Solutions/reyesj2-patch-8
keep imported data in logs-import-so index
2025-01-17 13:33:26 -06:00
reyesj2 1396083b7d use so-elasticsearch-query where possible; simplify suricata.alerts index reroute
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-17 13:29:46 -06:00
Jason Ertel 7017024ba7 Merge pull request #14123 from Security-Onion-Solutions/jertel/wip
Additional web security measures
2025-01-17 12:31:42 -05:00
Jorge Reyes 942c1aa3a6 Merge pull request #14126 from Security-Onion-Solutions/reyesj2/es-integ-tmp
merge dev
2025-01-17 11:24:31 -06:00
reyesj2 d35ffef503 merge 2.4/dev
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-17 11:23:54 -06:00
Jason Ertel 7705f45d78 Revert "subgrid config annotations"
This reverts commit 3ab1b907e4.
2025-01-17 12:16:12 -05:00
Jason Ertel 964bbe6aa5 additional web server security measures 2025-01-17 12:14:30 -05:00
reyesj2 01a2e4cd4f check for index existence before attemping rollover
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-17 09:27:28 -06:00
m0duspwnens 1f13554bd9 move add virt install and pool creation to images/init. start moving to /nsm/libvirt/ 2025-01-17 09:43:39 -05:00
reyesj2 9032d7d7bc any suricata.alert with event.imported: true remains in logs-import-so
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-16 18:48:31 -06:00
reyesj2 d573c0922d add 2.4.111 -> postupgrade check
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-16 18:25:06 -06:00
reyesj2 45d3438d18 update ingest pipeline for imported logs
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-16 17:33:14 -06:00
m0duspwnens 4cc3691489 give all nodes access to soc license pillar file 2025-01-16 17:51:39 -05:00
m0duspwnens 24eadf2507 add libvirt state to highstate for hypervisor. update allowed_states for libvirt 2025-01-16 17:46:20 -05:00
m0duspwnens a274bfb744 license note 2025-01-16 17:45:07 -05:00
m0duspwnens 2277c792b9 update feature error logging in so-minion 2025-01-16 17:13:36 -05:00
m0duspwnens 61f5614ac9 added logging and error handling so-minion 2025-01-16 16:57:36 -05:00
m0duspwnens 6367aed62a reactor needs to match runner function parameter structure 2025-01-16 14:59:11 -05:00
m0duspwnens 739f592061 remove old line of code 2025-01-16 14:06:01 -05:00
m0duspwnens 116c2b73c1 update gitignore 2025-01-16 11:16:34 -05:00
m0duspwnens 58be7ae5db rename from coreol9 or coreol9Small to sool9 2025-01-16 11:16:20 -05:00
m0duspwnens 0e0fb885d2 hypervisor highstate after image creation, not when key accepted 2025-01-16 11:13:36 -05:00
m0duspwnens e8546b82f8 default image: sool9. cloud-init add local repo 2025-01-16 08:43:46 -05:00
m0duspwnens 837fbab96d minimize packages installed on manager for hyper 2025-01-15 17:00:06 -05:00
m0duspwnens cbd2d88000 sync the runners 2025-01-15 16:59:39 -05:00
Jorge Reyes 6c80fd0e18 Merge pull request #14116 from Security-Onion-Solutions/reyesj2-patch-8
update global@custom
2025-01-15 14:23:40 -06:00
m0duspwnens 01ac1cdcca check features and allowed/states 2025-01-15 14:13:12 -05:00
reyesj2 b3b7fb8f29 add null check and move tag lookup to .contains() in global@custom
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-15 12:16:11 -06:00
Jason Ertel d101fda423 Merge branch '2.4/dev' into jertel/wip 2025-01-15 11:06:05 -05:00
Jorge Reyes b1d523a4e6 Merge pull request #14113 from Security-Onion-Solutions/reyesj2/es-integ-tmp
update fleet-optional-integrations-load
2025-01-14 15:26:33 -06:00
reyesj2 dab56f0882 update fleet-optional-integrations-load
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-14 15:24:59 -06:00
m0duspwnens 161e8a6c21 ssh config for manager. dont need to create soqemussh user on manager 2025-01-14 16:21:17 -05:00
m0duspwnens 2e3c1adc63 runner to setup manager for first hypervisor 2025-01-14 16:20:21 -05:00
Jorge Reyes 846f2485db Merge pull request #14111 from Security-Onion-Solutions/reyesj2-patch-1
update http query
2025-01-14 08:26:43 -06:00
Jorge Reyes 107ca38268 fix http query for "includes" function 2025-01-14 08:24:07 -06:00
Jorge Reyes 35547b476f update http query 2025-01-14 08:13:27 -06:00
Jorge Reyes ad765200c3 Merge pull request #14105 from Security-Onion-Solutions/reyesj2/moarzeekparse
Additional Zeek parsing & cloudflare_logpush integration
2025-01-13 11:37:21 -06:00
reyesj2 4618256442 include okta-mappings in so-logs-okta.system index template 2025-01-13 11:32:27 -06:00
reyesj2 323ef1d5d6 add missing lifecycle name to trend_micro_vision_one indices 2025-01-13 09:29:22 -06:00
reyesj2 a5b1648b68 add missing lifecycle name to crowdstrike indices 2025-01-13 09:26:16 -06:00
reyesj2 14c920a258 fix hidden ldap menu subtitle 2025-01-13 09:23:32 -06:00
reyesj2 4f92b7ced1 add support for cloudflare_logpush integration 2025-01-13 09:23:05 -06:00
Josh Brower 5ec2006c9e Merge pull request #14102 from Security-Onion-Solutions/2.4/nav-airgap
Fix folder perm
2025-01-10 16:20:18 -05:00
Joshua Brower dcdf31eee8 Fix folder perm 2025-01-10 16:15:17 -05:00
Jason Ertel 3ab1b907e4 subgrid config annotations 2025-01-10 13:45:42 -05:00
reyesj2 e60a1e4357 zeek ldap & ldap_search parsing
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-09 16:06:10 -06:00
m0duspwnens 776afa4a36 setup items on manager when hypervisor joins the grid 2025-01-09 16:32:41 -05:00
m0duspwnens 3cac19d498 createvm script without setting network in base domain 2025-01-09 16:31:51 -05:00
m0duspwnens 2ba8a87c9d add directory where qcow2 images will be distributed from 2025-01-09 16:20:56 -05:00
m0duspwnens d677dc51de add comment about reactors required by salt-master 2025-01-09 16:19:23 -05:00
m0duspwnens ebbfcd169c add pkg required for so-qcow2-modify-network 2025-01-09 16:17:50 -05:00
m0duspwnens 574d2994d1 use cmd.run instead of cmd.script to resolve issue 64962 2025-01-09 16:16:59 -05:00
m0duspwnens ecc5d64584 move logge def to global 2025-01-09 16:14:57 -05:00
m0duspwnens 6888682f92 add comments for raid scripts 2025-01-09 16:14:01 -05:00
m0duspwnens 0197cdb33d fix bridge forwarding on hypervisors bridge 2025-01-09 16:12:33 -05:00
Josh Brower 2de1f0464f Merge pull request #14091 from Security-Onion-Solutions/2.4/nav-airgap
Refactor Navigator Airgap
2025-01-09 11:59:50 -05:00
Joshua Brower bcb92b63e3 Move json files to container image 2025-01-09 10:58:40 -05:00
Jorge Reyes 412397fa7b Merge pull request #14089 from Security-Onion-Solutions/reyesj2/moarzeekparse 2025-01-08 17:45:14 -06:00
reyesj2 0e87351a9c add zeek.quic mappings
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-08 16:18:53 -06:00
Josh Brower 71f4150c27 Merge pull request #14013 from Security-Onion-Solutions/2.4/navigator
Refactor Navigator for Detections
2025-01-07 13:34:19 -05:00
Joshua Brower a2caf7425d Add config options 2025-01-07 13:22:14 -05:00
Joshua Brower 6fa11a38ef Update defaults 2025-01-07 13:14:50 -05:00
Joshua Brower e3f75215b6 Merge remote-tracking branch 'origin/2.4/dev' into 2.4/navigator 2025-01-07 13:06:49 -05:00
Jorge Reyes 06983948b0 Merge pull request #14078 from Security-Onion-Solutions/reyesj2/es-integ-tmp
run elasticsearch state to sync templates
2025-01-06 21:34:07 -06:00
reyesj2 a21535b0a2 run elasticsearch state to sync templates
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-06 21:33:07 -06:00
Jason Ertel d14b6e6d7d Merge pull request #14077 from Security-Onion-Solutions/jertel/wip
invalidate user sessions when an admin changes the user's password
2025-01-06 17:26:56 -05:00
Jason Ertel bd96b5d722 invalidate user sessions when an admin changes the user's password 2025-01-06 17:23:10 -05:00
Jorge Reyes b431fb1e49 Merge pull request #14075 from Security-Onion-Solutions/reyesj2/es-integ-tmp
merge dev
2025-01-06 15:18:05 -06:00
reyesj2 b97619b8f9 Merge remote-tracking branch 'origin/2.4/dev' into reyesj2/es-integ-tmp 2025-01-06 14:44:35 -06:00
reyesj2 3d3f0460fa move addon integration script run to elasticfleet state
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-06 14:42:16 -06:00
Jorge Reyes 37d67ee9d0 Merge pull request #14073 from Security-Onion-Solutions/reyesj2/es-integ-tmp
update version to foxtrot
2025-01-06 11:23:27 -06:00
reyesj2 0d49dee46e update version to foxtrot
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-06 11:22:51 -06:00
reyesj2 9fe3f6042f Remove individual integrations ip mappings component template. Replaced with global mappings
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-06 10:44:22 -06:00
reyesj2 cdd4a1ff1f fixes addon integration map file
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-03 16:06:22 -06:00
Josh Brower 8408a53b82 Merge remote-tracking branch 'origin/2.4/dev' into 2.4/navigator 2025-01-02 16:13:34 -05:00
Jorge Reyes 5969e9accc Merge pull request #14060 from Security-Onion-Solutions/reyesj2/zeekquic
zeek quic support
2025-01-02 08:13:33 -06:00
Doug Burks 927b618ec9 Update Zeek QUIC dashboard, add Hunt query, add quic.server.name as column in Events table 2025-01-02 06:57:56 -05:00
reyesj2 9f83853922 Zeek QUIC support
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-12-31 13:44:20 -06:00
reyesj2 ecf094f684 WIP: support all es fleet integrations
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-12-26 16:18:04 -06:00
Josh Brower 8f5634d958 Merge pull request #14048 from Security-Onion-Solutions/2.4/sigmaHashes
Refactor pipeline for hash changes
2024-12-23 15:49:35 -05:00
defensivedepth 7237b8971e Refactor pipeline for hash changes 2024-12-23 15:41:13 -05:00
Mike Reeves 33239219cb Merge pull request #14046 from Security-Onion-Solutions/TOoSmOotH-patch-1 2024-12-23 08:34:01 -05:00
Mike Reeves 09ef096620 Update soup 2024-12-23 08:27:45 -05:00
m0duspwnens 3c59858f70 improvements to createvm 2024-12-20 11:42:53 -05:00
m0duspwnens 6f0161e9da script to create base domain 2024-12-19 17:36:48 -05:00
Jason Ertel 6c19a4c68a Merge pull request #14043 from Security-Onion-Solutions/jertel/wip
cloud installs should use the local docker registry data
2024-12-19 15:01:25 -05:00
Jason Ertel b8afef1ee4 cloud installs should use the local docker registry data 2024-12-19 14:56:40 -05:00
m0duspwnens f2bd735f51 another script to create raid 2024-12-19 10:13:05 -05:00
m0duspwnens 7a8fd8c3e5 handle salt-cloud package 2024-12-19 10:12:29 -05:00
m0duspwnens b24aa2f797 fix destroying virbr0 2024-12-19 10:11:54 -05:00
reyesj2 b3436415dc merge 2.4/dev
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-12-18 14:13:25 -06:00
Jorge Reyes 16a819ff4f Merge pull request #14041 from Security-Onion-Solutions/reyesj2/opencti
add ti_opencti integration support
2024-12-18 12:12:03 -06:00
reyesj2 157185c370 add ti_opencti integration support 2024-12-18 11:33:49 -06:00
Mike Reeves ace6c5c9e4 Merge pull request #14039 from Security-Onion-Solutions/docsfix
Fix Discussions Dropdown
2024-12-18 11:42:42 -05:00
Mike Reeves 4a4c8eace2 Update 2-4.yml 2024-12-18 10:49:34 -05:00
Jason Ertel 8183dcf363 Merge pull request #14038 from Security-Onion-Solutions/TOoSmOotH-patch-1
Update 2-4.yml
2024-12-18 10:38:42 -05:00
Mike Reeves d4f1772d2e Update 2-4.yml 2024-12-18 10:36:15 -05:00
Jason Ertel dc1c7d8bd2 Merge pull request #14036 from Security-Onion-Solutions/merger
Merge in 2.4.111
2024-12-18 10:25:42 -05:00
Mike Reeves 9c10094914 Fix conflict 2024-12-18 10:19:40 -05:00
Mike Reeves 72fed8d6a7 Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into 2.4/dev 2024-12-18 10:17:04 -05:00
Mike Reeves ec90adc6d9 Merge branch '2.4/main' of github.com:Security-Onion-Solutions/securityonion into 2.4/main 2024-12-18 10:16:50 -05:00
Mike Reeves 93f3171a63 Merge pull request #14031 from Security-Onion-Solutions/patch/2.4.111
2.4.111
2024-12-18 10:05:48 -05:00
Mike Reeves 7d4c6b1174 Merge branch 'patch/2.4.111' of https://github.com/Security-Onion-Solutions/securityonion into patch/2.4.111 2024-12-18 09:29:08 -05:00
Mike Reeves 3e04bfbd21 2.4.111 2024-12-18 09:27:55 -05:00
Josh Brower c6ebebc4d0 Merge pull request #14033 from Security-Onion-Solutions/patchfix
Delete uneeded files
2024-12-17 16:05:13 -05:00
defensivedepth 17405b849a Delete uneeded files 2024-12-17 16:01:31 -05:00
Mike Reeves 897e8f6883 2.4.111 2024-12-17 13:03:52 -05:00
m0duspwnens 5e4f1fc279 only run fix ldap when lief installed 2024-12-16 10:23:14 -05:00
m0duspwnens e779d180f9 work around libvirt issue. add raid scripts 2024-12-13 16:03:17 -05:00
Mike Reeves 7d06dd4b1d Update HOTFIX 2024-12-13 09:20:49 -05:00
Mike Reeves 5bc9fb19a8 Update VERSION 2024-12-13 09:18:58 -05:00
Mike Reeves 607aa1b992 Merge pull request #14016 from Security-Onion-Solutions/TOoSmOotH-patch-1
Fix port bind for managing external suricata ruleset
2024-12-10 17:40:35 -05:00
Mike Reeves e4db2f4819 Update defaults.yaml 2024-12-10 17:19:15 -05:00
m0duspwnens a84a32c075 increase whiptail by 1 2024-12-10 16:24:18 -05:00
defensivedepth 9475211417 Refactor Navigator for Detections 2024-12-09 16:31:51 -05:00
m0duspwnens 5649986834 Merge branch '2.4/dev' into vlb2 2024-12-09 15:35:57 -05:00
m0duspwnens 7eaa8d54dc git ignore dirs 2024-12-09 15:35:07 -05:00
m0duspwnens 61a1fbde6e create hypervisor pillars in setup 2024-12-09 15:30:48 -05:00
m0duspwnens a0a18973d8 add new salt bootstrap 2024-12-09 15:29:51 -05:00
reyesj2 9bc20c26bb Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into reyesj2/es-integ-tmp 2024-12-06 14:29:25 -06:00
Jorge Reyes 14cb41ea87 Merge pull request #14001 from Security-Onion-Solutions/reyesj2/zeekvpn
add openvpn & ipsec support to Zeek
2024-12-06 12:06:02 -06:00
Jorge Reyes edd90cbed4 Merge pull request #14004 from Security-Onion-Solutions/reyesj2/logcheck
file extract zeek v7
2024-12-06 10:28:15 -06:00
reyesj2 1de20e9d43 fix zeek file extract
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-12-06 09:55:56 -06:00
reyesj2 ad8b339a3b fix error due to null reference
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-12-06 09:07:16 -06:00
reyesj2 9532f21c7b check zeek reporter.log 2024-12-05 13:49:44 -06:00
reyesj2 754d28e95d add openvpn & ipsec support to Zeek 2024-12-05 09:52:55 -06:00
reyesj2 e3b7d82a8f remove all non-core integrations from elasticfleet:packages pillar 2024-12-03 08:56:56 -06:00
reyesj2 888145a2ed remove optional integrations from defaults.yaml & soc_elasticsearch.yaml 2024-12-03 08:55:43 -06:00
Josh Brower 726bdd8735 Merge pull request #13995 from Security-Onion-Solutions/feature/msi
fix path
2024-12-02 14:49:22 -05:00
defensivedepth 5b9f6b2d52 fix path 2024-12-02 14:42:56 -05:00
Josh Brower aabff98bea Merge pull request #13989 from Security-Onion-Solutions/feature/msi
Generate MSI
2024-12-02 09:17:45 -05:00
defensivedepth aade3db80d Generate MSI 2024-11-28 07:00:23 -05:00
Jorge Reyes 129c10dde5 Merge pull request #13981 from Security-Onion-Solutions/reyesj2/integ 2024-11-26 00:55:31 -06:00
reyesj2 993d56cb58 ti_rapid7*
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-25 15:51:49 -06:00
reyesj2 efa6a533c3 add missing ilm to index template
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-25 15:47:47 -06:00
Josh Brower 04ffdf9b15 Merge pull request #13958 from Security-Onion-Solutions/2.4/autoenablesigma
More flexibility for AutoEnable Sigma rules
2024-11-21 09:47:49 -05:00
defensivedepth f61bf1bd67 Remove adv 2024-11-21 09:15:29 -05:00
defensivedepth b1c4e32123 Remove duplicate option 2024-11-21 09:11:44 -05:00
defensivedepth 8958da83b3 Deprecate instead 2024-11-20 18:00:26 -05:00
defensivedepth 3fcf197bc1 Tweak structure 2024-11-19 11:54:15 -05:00
Jason Ertel 532dfd7f5a Merge pull request #13966 from Security-Onion-Solutions/jertel/wip
MFA issuer name shouldn't be an advanced setting
2024-11-19 09:35:26 -05:00
Jason Ertel 92ddf2ec6c MFA issuer name shouldn't be an advanced setting 2024-11-19 09:27:26 -05:00
coreyogburn a703f46a0a Merge pull request #13961 from Security-Onion-Solutions/cogburn/engine-update-config
Add Annotations to Existing Detections Options
2024-11-18 14:46:04 -07:00
Corey Ogburn d86c009f55 Add Annotations to Existing Detections Options
The autoUpdateEnabled setting has been present for awhile and now have annotations.
2024-11-18 14:35:55 -07:00
defensivedepth 56d6857cd6 Addl customization for autoenable sigma 2024-11-18 09:03:17 -05:00
Jason Ertel 52bc9be6b6 Merge pull request #13956 from Security-Onion-Solutions/jertel/wip
ignore fp from hydra
2024-11-17 18:23:54 -05:00
Jason Ertel 918f26962a ignore fp from hydra 2024-11-17 12:21:06 -05:00
Jason Ertel 3bf7870729 Merge pull request #13955 from Security-Onion-Solutions/jertel/wip
soup corrections
2024-11-16 21:31:08 -05:00
Jason Ertel 0eebe48492 soup corrections 2024-11-16 21:20:24 -05:00
Mike Reeves e02cb30f1b Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into 2.4/dev 2024-11-16 20:41:31 -05:00
Mike Reeves d005f0d7d6 Merge branch '2.4/main' of github.com:Security-Onion-Solutions/securityonion into 2.4/main 2024-11-16 20:41:20 -05:00
Jason Ertel cc44558f40 Merge pull request #13954 from Security-Onion-Solutions/jertel/wip
revert prev commit
2024-11-16 12:08:49 -05:00
Jason Ertel 73521dd7a7 revert prev commit 2024-11-16 11:09:44 -05:00
Jorge Reyes 3041d7d2b1 Merge pull request #13951 from Security-Onion-Solutions/reyesj2/integ
additional integrations
2024-11-15 15:02:04 -06:00
Jason Ertel b6ab5249f1 Merge pull request #13953 from Security-Onion-Solutions/jertel/wip
Connect API upgrades
2024-11-15 14:32:37 -05:00
Jason Ertel dc838e7148 connect 2024-11-15 14:25:52 -05:00
Jason Ertel f290e52fbd connect 2024-11-15 14:25:11 -05:00
Jason Ertel e4de376394 connect api 2024-11-15 13:42:02 -05:00
reyesj2 44ec237447 additional integration support - cisco secure email gateway - rapid7 threat command
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-15 11:39:01 -06:00
Jorge Reyes ec5a6aec41 Merge pull request #13946 from Security-Onion-Solutions/foxtrot
Zeek 7 w/ http2
2024-11-14 14:52:48 -06:00
Josh Patterson 7f96d20eb4 Merge pull request #13944 from Security-Onion-Solutions/saltbootstrap
update bootstrap-salt
2024-11-14 10:25:16 -05:00
Jorge Reyes dfd9108f39 Merge pull request #13945 from Security-Onion-Solutions/2.4/dev
2.4/dev
2024-11-14 09:13:00 -06:00
Jorge Reyes e07c1e6958 Merge pull request #13943 from Security-Onion-Solutions/zeek7
add http2
2024-11-14 09:11:08 -06:00
reyesj2 1113c3924f zeek http2
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-14 09:09:23 -06:00
m0duspwnens b1ddaa7211 support installing specified version for rhel variants. remove bootstrap -x python3 since not needed 2024-11-14 09:07:41 -05:00
Jorge Reyes ff00ddeb3c Merge pull request #13935 from Security-Onion-Solutions/ilm-detection 2024-11-13 15:07:29 -06:00
reyesj2 ba7a6dbbf0 Remove tuning/defaults "Remove in v7.1 The policy/tuning/defaults package is deprecated. The options set here are now the defaults for Zeek in general."
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-12 18:37:46 -06:00
reyesj2 f3a88de0c3 so-(case/detection)history uses same ilm policy as so-(case/detection)
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-12 16:28:01 -06:00
Jorge Reyes 4e0b5569dc Merge pull request #13933 from Security-Onion-Solutions/ilm-detection
add ilm and update managed index settings
2024-11-12 15:22:05 -06:00
reyesj2 a4d763c1e5 use curl vs es query to force PUT request
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-12 14:50:04 -06:00
m0duspwnens 33fdc23965 remove salt repo files created by saltbootstrap 2024-11-12 11:31:42 -05:00
reyesj2 aaf9f53695 update soup; check for index before applying new index setting
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-11 22:40:06 -06:00
Jason Ertel 59cf049a06 Merge pull request #13930 from Security-Onion-Solutions/jertel/wip
ensure roles file exists since no longer syncing clients to es
2024-11-11 18:53:46 -05:00
Jason Ertel 5b74a55c3c ensure roles file exists since no longer syncing clients to es 2024-11-11 17:21:42 -05:00
Josh Patterson f2ce070833 Merge pull request #13927 from Security-Onion-Solutions/saltbootstrap
upodate saltbootstrap
2024-11-11 16:17:23 -05:00
reyesj2 ce9bd18947 no error when versionlock dir exists after re-running soup
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-11 14:59:42 -06:00
m0duspwnens 9e5d0e88de fix soversion path 2024-11-11 15:56:01 -05:00
reyesj2 43f7989d73 ()
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-11 14:47:17 -06:00
m0duspwnens 69245e4fad have soup_scripts remove old salt repo file 2024-11-11 15:31:57 -05:00
Jason Ertel f8f496da73 Merge pull request #13923 from Security-Onion-Solutions/jertel/wip
Connect API
2024-11-11 15:04:34 -05:00
reyesj2 6dbe0645e5 use auto_expand_replica, configure ilm for so-case* & so-detection*
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-11 13:51:48 -06:00
Jason Ertel d4ed34d0ea connect 2024-11-11 11:56:19 -05:00
m0duspwnens 7875406da1 update bootstrap-salt for broadcom changes 2024-11-11 10:54:51 -05:00
Jason Ertel 57a9992a3d Merge branch '2.4/dev' into jertel/wip 2024-11-11 10:06:44 -05:00
Josh Patterson b3ce624fff Merge pull request #13921 from Security-Onion-Solutions/reposynccron
only enable repo sync cron if OEL
2024-11-08 16:16:48 -05:00
m0duspwnens ee4405e75e only enable repo sync cron if OEL 2024-11-08 16:13:44 -05:00
Josh Brower f7c3957a43 Merge pull request #13920 from Security-Onion-Solutions/2.4/templaterepos
Fix permissions
2024-11-08 15:34:56 -05:00
defensivedepth dcbb0e48d4 make sure its owned by socore 2024-11-08 14:34:29 -05:00
defensivedepth 74b95a0bcc Merge remote-tracking branch 'origin/2.4/dev' into 2.4/templaterepos 2024-11-08 09:20:11 -05:00
defensivedepth 8b70aa9f0e Fix socore permissions 2024-11-08 09:19:41 -05:00
coreyogburn 9095595db1 Merge pull request #13915 from Security-Onion-Solutions/cogburn/source-dates
Source Dates
2024-11-07 14:55:48 -07:00
Corey Ogburn 8334fd9c46 Source Dates 2024-11-07 14:44:45 -07:00
Jason Ertel 31cf6a2ebc connect 2024-11-07 16:17:30 -05:00
Jason Ertel 97f4cbdade connect 2024-11-07 16:16:37 -05:00
Jason Ertel ba0abb156a connect 2024-11-07 16:08:28 -05:00
Josh Brower 47f9b0021c Merge pull request #13879 from Security-Onion-Solutions/2.4/templaterepos
Add local custom template
2024-11-07 15:40:36 -05:00
defensivedepth f5bd8ab585 Rewrite docs 2024-11-07 15:33:47 -05:00
Jorge Reyes 356236ba4c Merge pull request #13912 from Security-Onion-Solutions/crowdstrike
fix crowdstrike integration
2024-11-07 08:53:36 -06:00
defensivedepth 28d468dd41 Merge remote-tracking branch 'origin/2.4/dev' into 2.4/templaterepos 2024-11-07 07:25:01 -05:00
reyesj2 80b82b0bd6 missing replica 0
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-06 15:24:13 -06:00
reyesj2 039d5c22ac fix: crowdstrike integration
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-06 14:35:41 -06:00
coreyogburn 07b867df76 Merge pull request #13904 from Security-Onion-Solutions/cogburn/ignored-sids
Cogburn/ignored sids
2024-11-05 12:30:08 -07:00
Corey Ogburn 52a144c052 Added Help Link to Annotation for IgnoredSidRanges 2024-11-05 12:11:17 -07:00
Corey Ogburn 25d55feeef More Detailed Description 2024-11-05 11:41:14 -07:00
Corey Ogburn 5e48ccafce Update Default Value 2024-11-05 11:11:34 -07:00
Corey Ogburn 69dd35c30a Add Option for Ignoring Ranges of SIDs in Suricata Integrity Check 2024-11-04 14:31:53 -07:00
Josh Patterson d37a8d51fa Merge pull request #13900 from Security-Onion-Solutions/saltrepo
setup use new salt repo
2024-11-04 13:05:58 -05:00
m0duspwnens 6e14f7b626 fix pub key name 2024-11-04 11:14:00 -05:00
Jason Ertel e8ab7bce0c connect 2024-11-04 10:49:30 -05:00
m0duspwnens 083c678400 new salt repo 2024-11-04 09:46:26 -05:00
m0duspwnens efbf62f56a adding beacon 2024-11-04 08:30:40 -05:00
Jason Ertel 7442ffc7d8 connect 2024-11-01 16:37:24 -04:00
Jason Ertel 25479ca71f connect 2024-11-01 16:29:04 -04:00
Jason Ertel c9f6b5206a connect 2024-11-01 16:18:40 -04:00
Jason Ertel 755cfb4e13 connect 2024-11-01 15:47:33 -04:00
Jason Ertel fb73517fc1 connect 2024-11-01 15:43:26 -04:00
Jason Ertel 825dbb36dd connect 2024-11-01 15:37:59 -04:00
Jason Ertel cd2e5bf2d0 rename role 2024-10-31 17:20:44 -04:00
Jason Ertel 520c9d8d51 rename role 2024-10-31 16:42:42 -04:00
Jason Ertel 370b117938 rename role 2024-10-31 16:39:45 -04:00
Josh Brower 6ab05e7c05 Merge pull request #13890 from Security-Onion-Solutions/2.4/templatefix
timestamp fix
2024-10-31 10:59:45 -04:00
defensivedepth 7896f951f3 timestamp fix 2024-10-31 10:24:58 -04:00
Josh Brower 01932d873f Merge pull request #13883 from Security-Onion-Solutions/2.4/lookuprev2
2.4/lookuprev2
2024-10-31 08:46:01 -04:00
Josh Brower 84a8477c5d Merge pull request #13887 from Security-Onion-Solutions/2.4/soupedite
rm eaintegration state file
2024-10-30 17:15:07 -04:00
defensivedepth 6b468eaed3 rm eaintegration state file 2024-10-30 16:52:44 -04:00
Jason Ertel a146153ee9 switch to json 2024-10-30 12:44:01 -04:00
defensivedepth c509dab5f1 Use socore user 2024-10-30 11:03:14 -04:00
Josh Brower 1940901386 Merge pull request #13882 from Security-Onion-Solutions/ipmappingses
add so-ip-mappings index
2024-10-30 10:28:40 -04:00
reyesj2 36fc3bbd6d add so-ip-mappings index
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-10-30 10:24:11 -04:00
defensivedepth 5406a263d5 Add local custom template 2024-10-29 19:42:06 -04:00
Jason Ertel 3f3ac21f50 connect 2024-10-29 12:28:24 -04:00
Jason Ertel 11820a16f0 connect 2024-10-29 12:04:38 -04:00
m0duspwnens 39391c8088 sync pillar top 2024-10-29 11:27:49 -04:00
Josh Brower ac359839e2 Merge pull request #13877 from Security-Onion-Solutions/2.4/lookuprev2
Initial support for local lookup
2024-10-29 11:22:39 -04:00
m0duspwnens 9ac5ef09ad update comment 2024-10-29 11:01:04 -04:00
m0duspwnens 3394588602 sync hypervisor state remote to local 2024-10-29 10:56:18 -04:00
defensivedepth 4c5099d429 Initial support for local lookup 2024-10-29 10:27:54 -04:00
m0duspwnens c64a05f2ff dynamic annotations 2024-10-29 10:20:31 -04:00
m0duspwnens 0c4426a55e Merge branch '2.4/dev' into vertlybimp 2024-10-29 08:32:39 -04:00
Jason Ertel 1243c7588b connect 2024-10-28 19:42:01 -04:00
Jason Ertel 624c4855c8 connect 2024-10-28 19:25:20 -04:00
Jason Ertel 12a76a9d35 connect 2024-10-28 19:11:26 -04:00
Josh Brower 6a3e5415cf Merge pull request #13832 from Security-Onion-Solutions/2.4/sigmapipelines
Add process and file creation mappings
2024-10-28 18:30:21 -04:00
coreyogburn 2c4f65009c Merge pull request #13873 from Security-Onion-Solutions/cogburn/tuning-notes
Tuning Notes
2024-10-28 15:37:06 -06:00
defensivedepth f3ca5b1c42 Remove OS-specific mappings 2024-10-28 09:19:51 -04:00
m0duspwnens feb700393e merge with 2.4.120, fix merge conflicts 2024-10-25 15:09:38 -04:00
Corey Ogburn 640f53d085 Cleanup
Fix indentation and trailing comma.
2024-10-24 17:05:36 -06:00
Corey Ogburn 1aa9d87c5d Corrected
Put the note on the right model this time.
2024-10-24 17:05:36 -06:00
Corey Ogburn e11c562022 Added Note to ES Mappings 2024-10-24 17:05:35 -06:00
coreyogburn a76a2d8e9f Merge pull request #13800 from Security-Onion-Solutions/cogburn/detection-status-hunt
Cogburn/detection status hunt
2024-10-24 16:31:59 -06:00
Jason Ertel d503c09ef2 connect 2024-10-24 15:45:18 -04:00
Corey Ogburn 6ce52bf9ab Specify Defaults for detectionEngineStatusQueries
Specify the defaults as an example to the user.
2024-10-24 13:11:49 -06:00
Corey Ogburn f67fcecc6e Clean up StatusQueries String 2024-10-24 11:18:48 -06:00
Corey Ogburn b7c392a244 Corrected a misspelling 2024-10-24 11:18:48 -06:00
Corey Ogburn ad0b0a5e95 Refactor to String
To accomodate the config screen, the annotation now specifies it as a multiline string with a yaml syntax. The user can edit the yaml to add or remove queries. The UI will parse the YAML before use.

Also updated the IntegrityFailure queries to specify table columns more relevant to a sync failure than the default ones.
2024-10-24 11:18:47 -06:00
Corey Ogburn c77b0afd8e Move to Client/Detections
Added a basic annotation.
2024-10-24 11:18:47 -06:00
Corey Ogburn 04ebe4efea Array to Dictionary 2024-10-24 11:18:46 -06:00
Corey Ogburn cbb4d6846f Detection Engine Status Queries
A few for testing
2024-10-24 11:18:45 -06:00
Josh Patterson ba699b8d06 Merge pull request #13863 from Security-Onion-Solutions/issue/13851
Issue/13851
2024-10-24 11:00:28 -04:00
m0duspwnens a0558ace16 replace: False to remove state warning 2024-10-24 10:33:16 -04:00
m0duspwnens ca793966a8 set retry and interval to remove state warning 2024-10-24 10:32:42 -04:00
Jason Ertel d9273ec369 exec bit 2024-10-24 09:40:47 -04:00
Jason Ertel cacd5b0643 connect 2024-10-24 09:36:09 -04:00
Jason Ertel 7c405ff9d7 connect 2024-10-24 08:47:52 -04:00
Jason Ertel 5e6dd2e8b3 connect 2024-10-23 16:49:02 -04:00
Josh Patterson dbc533e976 Merge pull request #13859 from Security-Onion-Solutions/stpndfls
call airgap_rules if airgap. log rsync and git commands
2024-10-23 16:44:41 -04:00
m0duspwnens 4d902da931 call airgap_rules if airgap. log rsync and git commands 2024-10-23 15:58:11 -04:00
Josh Patterson 578a18acbe Merge pull request #13853 from Security-Onion-Solutions/agcr
install createrepo for airgap
2024-10-23 14:21:26 -04:00
m0duspwnens 17ba048b50 use manager state to install createrepo_c for airgap 2024-10-23 10:40:26 -04:00
Josh Patterson 36a2bffdc7 Merge pull request #13855 from Security-Onion-Solutions/issue/204
fix HELD for debian families
2024-10-23 09:40:25 -04:00
m0duspwnens 8cc530dd4c fix HELD for debian families 2024-10-23 09:36:17 -04:00
m0duspwnens 1df104967e fix pkg name 2024-10-22 16:50:23 -04:00
m0duspwnens 7a0f6d5e93 fix pkg name 2024-10-22 16:42:01 -04:00
m0duspwnens 8d2ae23ae6 install createrepo on airgap and non airgap 2024-10-22 13:56:38 -04:00
m0duspwnens 21f359456c install createrepo for airgap 2024-10-22 11:35:08 -04:00
m0duspwnens 0476585370 dynamic annotations 2024-10-22 09:03:02 -04:00
Jorge Reyes 2b4dfbe2ca Merge pull request #13849 from Security-Onion-Solutions/revert-13841-reyesj2/eaintegration
Revert "Add support for cybereason integration"
2024-10-21 15:26:15 -04:00
Jorge Reyes cf95af66c6 Revert "Add support for cybereason integration" 2024-10-21 15:23:05 -04:00
Josh Patterson b95563bdf1 Merge pull request #13842 from Security-Onion-Solutions/issue/204
prevent state from failing if versionlock plugin not installed
2024-10-18 14:48:03 -04:00
m0duspwnens 4d093735ec prevent state from failing if versionlock plugin not installed 2024-10-18 14:41:23 -04:00
Jorge Reyes cd5d5b4bb0 Merge pull request #13841 from Security-Onion-Solutions/reyesj2/eaintegration
Add support for cybereason integration
2024-10-18 13:40:31 -04:00
reyesj2 8b11019712 Add support for cybereason integration
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-10-18 11:56:47 -04:00
Josh Patterson 1930740d10 Merge pull request #13836 from Security-Onion-Solutions/issue/204
Issue/204
2024-10-17 12:23:50 -04:00
m0duspwnens 39230159ae update description 2024-10-17 12:10:49 -04:00
Jason Ertel 4611ef3713 connect wip 2024-10-17 11:39:36 -04:00
Jason Ertel 1537b69457 connect wip 2024-10-17 11:25:40 -04:00
Jason Ertel 25fe83cd40 connect wip 2024-10-17 11:22:10 -04:00
Jason Ertel 435b9b14e3 connect wip 2024-10-17 10:49:39 -04:00
m0duspwnens 76ff0c56cd create versionlock pillar dir/files during soup to 120 2024-10-17 10:06:40 -04:00
m0duspwnens 17870bcab8 Merge remote-tracking branch 'origin/2.4/dev' into issue/204 2024-10-17 09:59:36 -04:00
m0duspwnens 5fb660bc9a remove kernel bool option, just use list 2024-10-17 09:29:03 -04:00
Jason Ertel f713dbacf8 connect 2024-10-16 17:53:57 -04:00
m0duspwnens 73ce526467 allow users to lock pkgs from upgrade 2024-10-16 17:06:03 -04:00
Jorge Reyes 0ba6df3b23 Merge pull request #13834 from Security-Onion-Solutions/reyesj2/eaintegration
FEATURE: add support for trend micro integrations
2024-10-16 17:03:49 -04:00
reyesj2 322199358d add support for trendmicro integration
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-10-16 16:45:46 -04:00
defensivedepth dcdfaf66f4 Add process and file creation mappings 2024-10-16 15:20:52 -04:00
Jason Ertel d8546bf747 connect upgrade 2024-10-16 14:59:15 -04:00
Jason Ertel 1e5bf3aa98 connect upgrade 2024-10-16 14:21:11 -04:00
Jason Ertel 647f057714 Merge branch '2.4/dev' into jertel/wip 2024-10-16 13:44:20 -04:00
Jason Ertel 523ff66389 connect work 2024-10-16 13:44:01 -04:00
Jason Ertel 15c32f9103 connect routes 2024-10-16 12:33:14 -04:00
Jason Ertel 12168531a1 avoid double SSO clicks on initial OIDC login 2024-10-16 12:33:03 -04:00
coreyogburn a3933bdc79 Merge pull request #13826 from Security-Onion-Solutions/cogburn/ai-switch-flip
Changes to allow reviews to start showing
2024-10-15 16:03:18 -06:00
Josh Patterson ebd21f3f53 Merge pull request #13825 from Security-Onion-Solutions/issue/13808
Issue/13808
2024-10-15 17:18:56 -04:00
m0duspwnens ce6c7c3b91 Merge remote-tracking branch 'origin/2.4/dev' into issue/13808 2024-10-15 13:14:18 -04:00
m0duspwnens c2e46932ee fix array def 2024-10-15 12:01:53 -04:00
m0duspwnens c46fb7e74c check if service is running before trying to start it 2024-10-15 11:46:09 -04:00
m0duspwnens ac6637c6ab set vars global 2024-10-15 09:56:50 -04:00
m0duspwnens cc19b60146 restore services/top at start of soup 2024-10-15 09:32:14 -04:00
m0duspwnens dcc1738978 dynamic annotations 2024-10-11 10:46:07 -04:00
Corey Ogburn d2bd9c0e26 Changes to allow reviews to start showing 2024-10-10 09:48:59 -06:00
Jason Ertel 7a1edb3833 Merge pull request #13798 from Security-Onion-Solutions/jertel/hfm2
main to dev
2024-10-10 11:33:39 -04:00
Jason Ertel ec7fa5e24a clear hotfix file 2024-10-10 11:24:10 -04:00
Jason Ertel 295353e804 Merge branch '2.4/main' into jertel/hfm2 2024-10-10 11:23:43 -04:00
Mike Reeves 1cef75d6d3 Merge pull request #13797 from Security-Onion-Solutions/hotfix/2.4.110
Hotfix 2.4.110
2024-10-10 11:12:25 -04:00
Mike Reeves 0c4cb863a3 Merge pull request #13796 from Security-Onion-Solutions/2.4.110hf
2.4.110 Hotfix
2024-10-10 10:40:42 -04:00
Mike Reeves 404f9a4eb3 2.4.110 Hotfix 2024-10-10 10:37:12 -04:00
Jason Ertel 04e33a6443 Merge pull request #13794 from Security-Onion-Solutions/jertel/hf20241010
2.4.110 hotfix
2024-10-10 06:40:51 -04:00
Jason Ertel 787336725c 2.4.110 hotfix 2024-10-10 06:25:59 -04:00
Mike Reeves b7255f72bb Merge pull request #13792 from Security-Onion-Solutions/TOoSmOotH-patch-2
Update soup
2024-10-09 14:23:36 -04:00
Mike Reeves e2da31c2b7 Update soup 2024-10-09 14:15:43 -04:00
weslambert 915c3f3c95 Merge pull request #13791 from Security-Onion-Solutions/fix/fleet_custom
Use ID instead of name for getting integrations from agent policies
2024-10-09 14:12:40 -04:00
weslambert c58ed45cf0 Use ID instead of name 2024-10-08 10:55:16 -04:00
weslambert 69857b6b5c Use ID instead of name 2024-10-08 10:54:54 -04:00
m0duspwnens 0b0ff62bc5 update comments 2024-10-08 09:40:44 -04:00
Doug Burks 2381260a55 Merge pull request #13783 from Security-Onion-Solutions/dougburks-patch-1
Add 2.4.120 for next release
2024-10-07 16:06:39 -04:00
Doug Burks ba4fbb9953 Update 2-4.yml 2024-10-07 16:05:45 -04:00
Mike Reeves 7b006fb721 Merge pull request #13780 from Security-Onion-Solutions/TOoSmOotH-patch-1
Update VERSION
2024-10-07 15:34:25 -04:00
Mike Reeves f42d82e8df Update VERSION 2024-10-07 15:30:49 -04:00
Mike Reeves d5df002f98 Merge pull request #13777 from Security-Onion-Solutions/2.4/dev
2.4.110
2024-10-07 15:18:03 -04:00
Mike Reeves a136bef668 Merge pull request #13776 from Security-Onion-Solutions/2.4.110
2.4.110
2024-10-07 10:04:54 -04:00
Mike Reeves bbc65c32b6 2.4.110 2024-10-07 09:55:54 -04:00
Josh Patterson 0ec136d227 Merge pull request #13764 from Security-Onion-Solutions/safedir
Safedir
2024-10-01 15:12:53 -04:00
m0duspwnens 20127e6b1d hard-reset to the remote revision 2024-10-01 15:09:53 -04:00
m0duspwnens 24817a3919 user socore 2024-10-01 09:21:56 -04:00
Jason Ertel f448cc9c7d Merge pull request #13757 from Security-Onion-Solutions/jertel/wip
adjustments for support of PKCE OIDC
2024-10-01 08:58:26 -04:00
Jason Ertel 4913df2297 adjustments for support of PKCE OIDC 2024-10-01 08:54:14 -04:00
m0duspwnens 9f76371449 add libs 2024-10-01 08:33:37 -04:00
Josh Brower 8521123d19 Merge pull request #13745 from Security-Onion-Solutions/2.4/agfix
Move Airgap later in setup
2024-09-26 15:51:31 -04:00
defensivedepth 3567dfc0dc Move Airgap later in setup 2024-09-26 15:48:50 -04:00
Josh Brower 500811d5ea Merge pull request #13743 from Security-Onion-Solutions/2.4/agfix
Fix path
2024-09-26 09:50:16 -04:00
defensivedepth d86694a01c Fix path 2024-09-26 09:48:28 -04:00
Josh Brower 421120024a Merge pull request #13740 from Security-Onion-Solutions/2.4/agfix
Fix location for airgap
2024-09-26 08:54:58 -04:00
defensivedepth fe860481c5 Fix location for airgap 2024-09-26 08:52:53 -04:00
Josh Brower 8af086c2a1 Merge pull request #13737 from Security-Onion-Solutions/2.4/summaries
Change summaries branch
2024-09-25 15:41:59 -04:00
defensivedepth 778d5be407 Change summaries branch 2024-09-25 15:35:08 -04:00
weslambert 8e8e584087 Merge pull request #13736 from Security-Onion-Solutions/fix/elastic_template_retry
Retry after 1 second
2024-09-25 13:08:36 -04:00
weslambert aacd715379 Retry after 1 second 2024-09-25 13:07:01 -04:00
Jason Ertel efb9778459 Merge pull request #13734 from Security-Onion-Solutions/jertel/wip
lowercase email when looking up ID; allow uppercase emails when modif…
2024-09-25 10:47:15 -04:00
Jason Ertel 073fb16e20 lowercase email when looking up ID; allow uppercase emails when modifying existing users but not when adding new users 2024-09-25 10:26:26 -04:00
Josh Brower 31d8593c8e Merge pull request #13733 from Security-Onion-Solutions/2.4/sigma-airgapfix
Add so repo back in
2024-09-25 10:23:11 -04:00
defensivedepth 445a9679bd Add so repo back in 2024-09-25 10:18:57 -04:00
weslambert 0bcf9e6be7 Merge pull request #13732 from Security-Onion-Solutions/fix/elastic_templates_latest
Check if running during soup
2024-09-25 09:37:02 -04:00
weslambert 50ae37c160 Check if running during soup 2024-09-25 08:25:20 -04:00
Josh Brower b24c7fbf93 Merge pull request #13729 from Security-Onion-Solutions/2.4/temp-summaries-branch
Use temp summaries branch
2024-09-24 17:17:00 -04:00
defensivedepth 48aff374a3 Use temp summaries branch 2024-09-24 15:37:43 -04:00
Josh Brower 0ff9153d1a Merge pull request #13727 from Security-Onion-Solutions/2.4/filter-tweaks
Disable by default & Airgap
2024-09-24 13:06:41 -04:00
defensivedepth d2397c3c1c Refactor cron logic 2024-09-24 13:03:51 -04:00
defensivedepth 0a74a53254 Remove cron if disabled 2024-09-24 12:38:49 -04:00
defensivedepth 01f87218de Airgap support 2024-09-24 12:04:24 -04:00
defensivedepth 5286739414 Disable by default 2024-09-24 10:51:52 -04:00
weslambert 9c7bedb715 Merge pull request #13724 from Security-Onion-Solutions/fix/integration_fields
Fix core integration field mappings
2024-09-23 17:44:46 -04:00
Wes 70c5a07913 Add back meta ad error.message 2024-09-23 21:36:40 +00:00
Josh Brower da3be8d8be Merge pull request #13709 from Security-Onion-Solutions/2.4/defend-filters
Initial Support for managing Elastic Defend Filters
2024-09-23 17:00:10 -04:00
defensivedepth 5cc8198302 Fix permissions 2024-09-23 16:32:42 -04:00
Wes 41112a59ec Add back meta 2024-09-23 20:12:14 +00:00
defensivedepth 2a890a35a0 Update format 2024-09-23 13:48:12 -04:00
defensivedepth 219cb5e044 Merge remote-tracking branch 'origin/2.4/dev' into 2.4/defend-filters 2024-09-23 13:03:32 -04:00
defensivedepth ef003ffbb5 Refactor 2024-09-23 12:55:07 -04:00
m0duspwnens 50bd8448cc add arg to start vm after modification 2024-09-23 10:13:22 -04:00
m0duspwnens 0b326370bd script for modifying hardware of a vm 2024-09-20 14:51:36 -04:00
m0duspwnens d0963baad4 update logging 2024-09-20 14:50:08 -04:00
defensivedepth 074cc8e6ff Initial commit 2024-09-20 11:58:21 -04:00
m0duspwnens 75e8c60fe2 add tools to set dhcp/static ip inside the qcow2 image 2024-09-20 11:03:16 -04:00
Jason Ertel 97569a1e9d Merge pull request #13694 from Security-Onion-Solutions/jertel/wip
add missing annotation file
2024-09-18 14:23:57 -04:00
Jorge Reyes b4bc0f4719 Merge pull request #13695 from Security-Onion-Solutions/reyesj2/gitsudp
enable stig for so desktop
2024-09-18 14:22:08 -04:00
reyesj2 385054b7b8 enable stig for so desktop
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-09-18 14:18:47 -04:00
Jason Ertel 442f7a914a add missing annotation file 2024-09-18 14:16:43 -04:00
Wes 764eb98bc2 Add custom component for ints 2024-09-17 19:43:13 +00:00
weslambert 4575b502a8 Merge pull request #13686 from Security-Onion-Solutions/fix/opnsense_pfsense_suri_alerts
Fix suricata alerts for opnsense and pfsense
2024-09-17 15:33:57 -04:00
Wes cf0d56eee7 Fix suricata alerts for opnsense and pfsense 2024-09-17 19:24:31 +00:00
Josh Patterson b7fd19dcfd Merge pull request #13675 from Security-Onion-Solutions/issue/13247
resolve 13247
2024-09-16 16:44:41 -04:00
Jason Ertel 60dfa0f87e Merge pull request #13676 from Security-Onion-Solutions/jertel/wip
remove colon to avoid yaml parsing problems
2024-09-16 15:33:35 -04:00
Jason Ertel cce9e162d4 remove colon to avoid yaml parsing problems 2024-09-16 15:30:14 -04:00
m0duspwnens 0ab2695ceb move set to soup 2024-09-16 13:11:08 -04:00
m0duspwnens 56666ad82c resolve 13247 2024-09-16 11:19:16 -04:00
Jason Ertel cb41be9e85 Merge pull request #13673 from Security-Onion-Solutions/jertel/wip
Clarify enabled settings
2024-09-16 10:53:55 -04:00
Jason Ertel 0566f46d5b Clarify enabled settings 2024-09-16 10:41:01 -04:00
Jason Ertel b4e8dd8a7b Clarify enabled settings 2024-09-16 10:14:52 -04:00
Jason Ertel 1f6735a14d Clarify enabled settings 2024-09-16 10:12:54 -04:00
Jason Ertel e0c499645d Clarify enabled settings 2024-09-16 10:12:09 -04:00
Jason Ertel 217bb388a0 Clarify enabled settings 2024-09-16 10:05:17 -04:00
weslambert 5c8772774f Merge pull request #13651 from Security-Onion-Solutions/feature/integration_upgrade
Upgrade Elastic integrations when new versions are available
2024-09-13 18:07:15 -04:00
m0duspwnens e7ea27a1b3 script to update ip address to static or dhcp inside qcow2 image 2024-09-13 15:26:59 -04:00
weslambert 57e06dced2 Change message 2024-09-13 13:52:01 -04:00
weslambert 973b93e332 Remove check for error 2024-09-13 13:49:53 -04:00
weslambert bc71af7a1f Check status 2024-09-13 13:27:26 -04:00
weslambert fa33348910 Change message 2024-09-13 13:26:17 -04:00
weslambert da47d247c9 Remove check for cookie 2024-09-13 13:24:55 -04:00
weslambert 9bd7909983 Merge pull request #13666 from Security-Onion-Solutions/m0duspwnens-patch-1
exit 1 if unable to connect to kibana
2024-09-13 10:58:31 -04:00
Josh Patterson 06c0d5b0f5 Update so-elastic-fleet-integration-upgrade 2024-09-13 10:13:11 -04:00
weslambert 662f906f9d Remove IFS 2024-09-13 09:16:53 -04:00
weslambert 2e85dcc36a Set IFS 2024-09-12 17:59:39 -04:00
weslambert 2ec3f52ea6 Don't use state; set IFS 2024-09-12 17:57:41 -04:00
weslambert a12e2e2022 Merge pull request #13661 from Security-Onion-Solutions/feature/idh_custom_skins
Allow custom IDH skins
2024-09-12 16:38:28 -04:00
Jason Ertel 11a60dbdbf Merge pull request #13663 from Security-Onion-Solutions/jertel/jinja
mark specific settings as allowed to include Jinja
2024-09-12 13:58:07 -04:00
Mike Reeves ff33cb62df Merge pull request #13647 from Security-Onion-Solutions/surirules2
External Support for Detections
2024-09-12 13:44:20 -04:00
Mike Reeves cac1539094 Add to firewall settings and annotations 2024-09-12 13:08:01 -04:00
Mike Reeves 3e768bccb8 Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into surirules2 2024-09-12 12:58:19 -04:00
Wes 1463b35e2e Change name 2024-09-12 15:31:12 +00:00
Wes 6518088de7 Allow custom IDH skins 2024-09-12 15:30:11 +00:00
weslambert 31d190cbf4 Merge pull request #13660 from Security-Onion-Solutions/fix/integration_annotations
Fix annotations typo
2024-09-12 10:56:43 -04:00
weslambert 24504dcc87 Fix annotations typo 2024-09-12 10:54:13 -04:00
weslambert 742fa4cbd6 Merge pull request #13658 from Security-Onion-Solutions/fix/annotation_barrcuda_imperva
Add annotations for barracuda and imperva
2024-09-11 15:59:25 -04:00
weslambert 7f65d122a8 Remove echo 2024-09-11 15:54:34 -04:00
weslambert 602158aa56 Add annotations for barracuda and imperva 2024-09-11 15:52:23 -04:00
weslambert 4c9bbeb5b7 Merge pull request #13657 from Security-Onion-Solutions/feature/integrations_barracuda_imperva
Add barracuda and imperva integrations
2024-09-11 15:47:21 -04:00
Wes f2bb54d993 Add barracuda and imperva integrations 2024-09-11 19:41:38 +00:00
Jason Ertel fbf0a9652a Merge pull request #13652 from Security-Onion-Solutions/jertel/esvs
es sig pulled from es dir
2024-09-11 11:24:19 -04:00
Jason Ertel f0e4e52364 es sig pulled from es dir 2024-09-11 11:12:20 -04:00
Wes e4fa47f27e Fix common source 2024-09-11 15:01:30 +00:00
Wes 061f42626c Add functions to common 2024-09-11 15:00:55 +00:00
Wes 5112f5c9ce Run upgrade during state apply 2024-09-11 14:58:01 +00:00
Wes 409612ff1f Add script to upgrade integrations 2024-09-11 14:56:57 +00:00
Jason Ertel 8b8737221d mark specific settings as allowed to include Jinja 2024-09-11 09:28:17 -04:00
Mike Reeves cabba5e70d Merge pull request #13648 from Security-Onion-Solutions/TOoSmOotH-patch-2
Make Standalone installs use Suricata for PCAP
2024-09-10 15:27:16 -04:00
Mike Reeves da5e91ee03 Update so-functions 2024-09-10 15:24:44 -04:00
Mike Reeves 6e2c319e7e Fix http2 declaration 2024-09-09 19:42:04 -04:00
Mike Reeves eab7828bfe Formatting and add setting 2024-09-09 18:39:19 -04:00
Mike Reeves 38619ae023 Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into 2.4/dev 2024-09-09 18:31:58 -04:00
Josh Patterson e7a7a8609a Merge pull request #13640 from Security-Onion-Solutions/esver
only elasticsearch image uses es version
2024-09-09 16:45:14 -04:00
m0duspwnens 8702d95434 only elasticsearch image uses es version 2024-09-09 16:38:38 -04:00
weslambert 3b5af6bdd4 Merge pull request #13639 from Security-Onion-Solutions/fix/system_destination_ip
Add destination IP for so-system
2024-09-09 16:18:21 -04:00
Wes 25a9fb9b5c Add destination IP for so-system 2024-09-09 20:16:23 +00:00
Josh Patterson 0984d1587a Merge pull request #13638 from Security-Onion-Solutions/surireload
add so-suricata container req for rule reload
2024-09-09 11:14:57 -04:00
m0duspwnens 7123c62876 add so-suricata container req for rule reload 2024-09-09 11:13:28 -04:00
Josh Patterson db1713dbde Merge pull request #13635 from Security-Onion-Solutions/upgrade/docker
Upgrade Docker to 27.2.0
2024-09-09 09:32:39 -04:00
m0duspwnens b150969986 Merge remote-tracking branch 'origin/2.4/dev' into upgrade/docker 2024-09-09 07:56:34 -04:00
Josh Patterson 56aa57dab2 Merge pull request #13625 from Security-Onion-Solutions/esver
remove -it
2024-09-06 12:28:08 -04:00
m0duspwnens ba24c5b219 remove -it 2024-09-06 12:26:55 -04:00
m0duspwnens 43c2436385 Merge remote-tracking branch 'origin/2.4/dev' into upgrade/docker 2024-09-06 11:38:33 -04:00
Josh Patterson ba0779ea1e Merge pull request #13624 from Security-Onion-Solutions/esver
fix es agent update for soup
2024-09-06 10:46:18 -04:00
m0duspwnens 2e379dd29c fix line delete causing issues sourcing so-common and es agent grid upgrade 2024-09-06 10:44:35 -04:00
m0duspwnens 331f63eadd pass path for airgap 2024-09-06 10:30:40 -04:00
m0duspwnens fc25bfe0df grab es version from defaults during soup 2024-09-06 09:04:43 -04:00
m0duspwnens 576d218cd9 dont restart suricata during setup. retry rule reload for 3 minutes 2024-09-06 08:10:59 -04:00
Jason Ertel b9d93118b9 Merge pull request #13620 from Security-Onion-Solutions/jertel/esvs
es version shift
2024-09-05 13:43:44 -04:00
Jason Ertel 5625771ffb es version shift 2024-09-05 13:16:28 -04:00
Jason Ertel c85e5643db es version shift 2024-09-05 13:14:45 -04:00
m0duspwnens 21473aba9e Merge remote-tracking branch 'origin/2.4/dev' into upgrade/docker 2024-09-05 10:23:50 -04:00
Josh Patterson ad39bc176d Merge pull request #13616 from Security-Onion-Solutions/esver
ref es version
2024-09-05 08:49:22 -04:00
m0duspwnens 5a1d61a042 ref es version 2024-09-05 08:45:44 -04:00
Josh Patterson 8adeb8a120 Merge pull request #13615 from Security-Onion-Solutions/esver
resolve issues with es version pinning
2024-09-05 08:41:59 -04:00
m0duspwnens 6581979506 retry suricata rule reload 2024-09-05 07:33:56 -04:00
m0duspwnens df14cbad44 fix calls to get_elastic_agent_vars 2024-09-04 17:43:49 -04:00
m0duspwnens 72f3eaa8f6 should not have changed this, so changing it back 2024-09-04 16:42:19 -04:00
m0duspwnens f106191e72 fix image for so-elasticsearch container 2024-09-04 16:01:24 -04:00
Josh Patterson 62b185fd32 Merge pull request #13610 from Security-Onion-Solutions/esver
use correct sig based on es image or not
2024-09-04 15:54:30 -04:00
m0duspwnens 7d9b3b1f28 use correct sig 2024-09-04 15:36:17 -04:00
Josh Patterson 71f6b44c0c Merge pull request #13607 from Security-Onion-Solutions/esver
use Elasticsearch version for some containers
2024-09-04 13:30:07 -04:00
Jason Ertel e14b7bc2fb Merge pull request #13608 from Security-Onion-Solutions/jertel/hf
remove hotfix from dev branch
2024-09-04 13:28:02 -04:00
Jason Ertel 94e9772cf6 remove hotfix from dev branch 2024-09-04 13:25:45 -04:00
m0duspwnens 2b807c2409 update comment 2024-09-04 10:33:14 -04:00
m0duspwnens 0af2e85f91 update annotation. 2024-09-04 10:32:11 -04:00
m0duspwnens 2394488c92 update docker 27.2.0-1 and containerd.io 1.7.21 2024-09-04 09:38:17 -04:00
m0duspwnens cfdc8ede90 fix es version logic 2024-09-03 16:49:39 -04:00
m0duspwnens 83aa4c9a53 fix awk 2024-09-03 15:22:25 -04:00
m0duspwnens c20ac6c2d8 fix if and awk 2024-09-03 15:20:49 -04:00
Josh Brower 7311773c20 Merge pull request #13598 from Security-Onion-Solutions/2.4/main
Hotfix-2.4.100.20240903
2024-09-03 13:13:16 -04:00
Josh Brower 5472d2586c Merge pull request #13596 from Security-Onion-Solutions/hotfix/2.4.100
Hotfix 2.4.100
2024-09-03 13:07:49 -04:00
m0duspwnens 6d7b76115f use the version that is longest for the loop 2024-09-03 13:00:37 -04:00
m0duspwnens a920adcf7f handle ver1 missing segment 2024-09-03 12:53:53 -04:00
m0duspwnens 529844eb36 update so-image-common to use es version for es containers 2024-09-03 12:38:21 -04:00
Mike Reeves fd187b11f9 Merge pull request #13595 from Security-Onion-Solutions/hf2.4.100
2.4.100 hotfix
2024-09-03 10:32:40 -04:00
Mike Reeves f6cfd2349b 2.4.100 hotfix 2024-09-03 10:29:14 -04:00
Mike Reeves 9e2e676cc2 Merge pull request #13590 from Security-Onion-Solutions/TOoSmOotH-patch-1 2024-09-01 22:27:30 -04:00
Mike Reeves 5811ee5897 Update so-suricata-reload-rules 2024-09-01 10:39:42 -04:00
weslambert a11e78176f Merge pull request #13587 from Security-Onion-Solutions/fix/hotfix_date
Update HOTFIX
2024-08-30 16:21:03 -04:00
weslambert db4c373c45 Merge pull request #13586 from Security-Onion-Solutions/fix/so-system-mappings
Add so-system-mappings
2024-08-30 16:20:28 -04:00
weslambert 5be17330d1 Update HOTFIX 2024-08-30 16:14:42 -04:00
weslambert a7de6993f9 Add so-system-mappings 2024-08-30 16:11:41 -04:00
Mike Reeves d7446c2a3f Merge pull request #13574 from Security-Onion-Solutions/sureload
Reload Suricata vs restart
2024-08-30 12:50:41 -04:00
Doug Burks f319f0803a Merge pull request #13583 from Security-Onion-Solutions/dougburks-patch-1
Update Github Discussion template
2024-08-30 11:31:52 -04:00
Doug Burks 9eb76a95ca Update 2-4.yml 2024-08-30 11:25:51 -04:00
Mike Reeves afcb30be03 Threhsolds require a restart 2024-08-30 09:43:35 -04:00
Mike Reeves b9f817201c Add thresholds to the reload list 2024-08-30 09:15:25 -04:00
Mike Reeves f17e3e91ec Merge pull request #13577 from Security-Onion-Solutions/TOoSmOotH-patch-1
Update VERSION
2024-08-29 16:32:58 -04:00
Mike Reeves 121a64ba57 Update VERSION 2024-08-29 16:31:43 -04:00
Mike Reeves a9f2dfc4b8 Merge pull request #13576 from Security-Onion-Solutions/2.4/dev
2.4.100
2024-08-29 16:18:20 -04:00
Mike Reeves b7e047d149 Merge pull request #13575 from Security-Onion-Solutions/2.4.100
2.4.100
2024-08-29 15:46:15 -04:00
Mike Reeves f69137b38d 2.4.100 2024-08-29 15:43:42 -04:00
m0duspwnens aaa48f6a1a support for fleet, heavynode, receiver, idh 2024-08-29 13:41:58 -04:00
Mike Reeves edce5186b9 Add support to relaod rules instead of restart 2024-08-29 12:55:06 -04:00
Mike Reeves 306bd8faaa Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into 2.4/dev 2024-08-29 12:39:41 -04:00
m0duspwnens 0766a5da91 change to LSHEAP. LSHOSTNAME from id grain 2024-08-28 16:59:24 -04:00
Josh Brower 9746f6e5e2 Merge pull request #13570 from Security-Onion-Solutions/2.4/ignore-logstash-err
Exclude logstash startup errors
2024-08-28 16:51:35 -04:00
DefensiveDepth 89a1e2500e Exclude logstash startup errors 2024-08-28 16:50:11 -04:00
m0duspwnens 267d1a27ac use cron instead of schedule for vm init. ensure vm shutdown 2024-08-28 15:52:14 -04:00
m0duspwnens f5e6e49075 set initial schedule for vm to deal with possible manager firewall state.apply delay 2024-08-28 14:12:23 -04:00
m0duspwnens d44ce0a070 add so-salt-cloud as salt-cloud wrapper 2024-08-28 12:41:38 -04:00
m0duspwnens 9ddccba780 LSHEAP and pipeline workers for virt 2024-08-28 10:09:42 -04:00
Jason Ertel 394ce29ea3 Merge pull request #13565 from Security-Onion-Solutions/jertel/an2
move custom alerters to subgroup; avoid false positives on log check
2024-08-28 09:39:44 -04:00
Jason Ertel f19a35ff06 move custom alerters to subgroup; avoid false positives on log check 2024-08-28 09:32:25 -04:00
weslambert 8943e88ca8 Merge pull request #13562 from Security-Onion-Solutions/fix/evtx_pipelines
Update pipeline version for EVTX
2024-08-27 13:12:10 -04:00
Jason Ertel 18774aa0a7 Merge pull request #13561 from Security-Onion-Solutions/jertel/an2
annotation updates
2024-08-27 13:09:20 -04:00
weslambert af80a78406 Update pipeline version 2024-08-27 13:08:35 -04:00
Jason Ertel 6043da4424 annotation updates 2024-08-27 13:04:43 -04:00
m0duspwnens 301894f6e8 script to fix libvirt in salt 3006.2+ 2024-08-27 09:42:11 -04:00
m0duspwnens a425a7fda2 update docker modules for 3006.9 2024-08-27 09:37:23 -04:00
m0duspwnens 21c3835322 salt3006.9, redo reactors, use virt.shutdown 2024-08-27 09:25:40 -04:00
Josh Brower 75086bac7f Merge pull request #13556 from Security-Onion-Solutions/2.4/fixpolicyload
Fix policy load
2024-08-26 16:49:54 -04:00
DefensiveDepth 726df310ee Add context 2024-08-26 16:15:56 -04:00
DefensiveDepth b952728b2c Fix policy load 2024-08-26 15:57:21 -04:00
weslambert 1cac2ff1d4 Merge pull request #13554 from Security-Onion-Solutions/fix/ilm_soc_logs
FIX: Add so-soc-logs
2024-08-26 12:54:03 -04:00
weslambert a93c77a1cc Merge pull request #13548 from Security-Onion-Solutions/fix/global_custom
Use global@custom from common pipeline
2024-08-26 10:42:12 -04:00
weslambert dd09f5b153 Add so-soc-logs 2024-08-26 10:32:27 -04:00
Josh Patterson 4c10282f40 add es version to annotation 2024-08-26 09:37:19 -04:00
Josh Brower 29f996de66 Merge pull request #13547 from Security-Onion-Solutions/2.4/soupchanges
Elastic Fleet refactoring
2024-08-23 13:56:05 -04:00
DefensiveDepth c575e02fbb Use correct name 2024-08-23 13:52:20 -04:00
weslambert e96a0108c3 Add global@custom 2024-08-23 13:05:34 -04:00
DefensiveDepth e86fce692c Merge remote-tracking branch 'origin/2.4/dev' into 2.4/soupchanges 2024-08-23 11:44:39 -04:00
DefensiveDepth 8d35c7c139 Merge branch '2.4/soupchanges' of https://github.com/Security-Onion-Solutions/securityonion into 2.4/soupchanges 2024-08-23 11:37:16 -04:00
DefensiveDepth 0a5725a62e Refactor for Elastic Upgrade 2024-08-23 11:36:47 -04:00
Jorge Reyes 1c6f5126db Merge pull request #13546 from Security-Onion-Solutions/reyesj2/kfano
set kafka.id in common ingest pipeline
2024-08-23 09:50:08 -04:00
reyesj2 1ec5e3bf2a add kafka.id to common ingest pipeline
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-08-23 09:47:21 -04:00
Jason Ertel d29727c869 Merge pull request #13540 from Security-Onion-Solutions/jertel/an2
exclude all logstash errors related to license manager init log line
2024-08-22 18:17:23 -04:00
Jason Ertel eabb894580 exclude all logstash errors related to license manager init log line 2024-08-22 17:52:37 -04:00
weslambert 96339f0de6 Merge pull request #13537 from Security-Onion-Solutions/fix/elastic_template_check
FIX: Check Elasticsearch for endpoint component template before loading templates
2024-08-22 10:46:49 -04:00
weslambert d7e3e134a5 Check Elasticsearch for template 2024-08-22 10:33:13 -04:00
Jason Ertel dfb0ff7a98 Merge pull request #13535 from Security-Onion-Solutions/jertel/an2
notification updates
2024-08-22 09:19:43 -04:00
Jason Ertel 48f1e24bf5 notification updates 2024-08-22 09:04:43 -04:00
Jason Ertel cf47508185 notification updates 2024-08-22 09:02:32 -04:00
weslambert 2a024039bf Merge pull request #13528 from Security-Onion-Solutions/fix/detections_alerts_ilm
Create detections.alerts ILM policy with corresponding name
2024-08-21 14:50:10 -04:00
weslambert 212cc478de Change back to so 2024-08-21 14:39:24 -04:00
weslambert 88ea60df2a Fix name 2024-08-21 14:38:57 -04:00
weslambert c1b7232a88 Fix for detections-alerts 2024-08-21 14:38:29 -04:00
Mike Reeves 04577a48be Merge pull request #13530 from Security-Onion-Solutions/raidtools 2024-08-21 14:33:40 -04:00
weslambert 18ef37a2d0 Merge pull request #13531 from Security-Onion-Solutions/fix/elastic_templates_fleet_package_check
Check for endpoint package
2024-08-21 14:28:12 -04:00
weslambert 4108e67178 Check for endpoint package 2024-08-21 14:22:28 -04:00
Mike Reeves ff479de7bd Add support for new appliance raid controllers 2024-08-21 14:10:24 -04:00
weslambert 4afac201b9 Change ILM policy name 2024-08-21 13:25:26 -04:00
weslambert c30537fe6a Ensure endpoint is installed 2024-08-21 13:00:04 -04:00
m0duspwnens 7fbf448b22 fail if no defaults file 2024-08-21 11:36:06 -04:00
m0duspwnens cd9c9a25d3 reference elastic versions from defaults 2024-08-21 11:25:56 -04:00
m0duspwnens da1671fdf1 add get_elastic_agent_vars function 2024-08-21 11:25:33 -04:00
weslambert 1ed73b6f8e Merge pull request #13526 from Security-Onion-Solutions/feature/tenable_io
Add Tenable IO
2024-08-21 09:03:33 -04:00
m0duspwnens 3d61897522 ref es version from defaults for kibana 2024-08-21 08:51:35 -04:00
DefensiveDepth f01825166d Update Fleet Server policy 2024-08-21 08:31:37 -04:00
m0duspwnens d110503639 example pilalr 2024-08-20 15:27:19 -04:00
m0duspwnens 64bf7eb363 hyper 2024-08-20 15:26:05 -04:00
DefensiveDepth 07f8bda27e Update agent 2024-08-20 15:23:31 -04:00
DefensiveDepth e3ecc9d4be Directly manage the Fleet Server integration config 2024-08-20 15:06:16 -04:00
DefensiveDepth ca209ed54c Disable auto-upgrade 2024-08-20 09:14:08 -04:00
m0duspwnens 205560cc95 updates 2024-08-20 08:31:46 -04:00
DefensiveDepth df6ff027b5 Remove unneeded elastic upgrade config 2024-08-19 16:05:27 -04:00
weslambert e772497e12 Merge pull request #13511 from Security-Onion-Solutions/fix/logcheck_unprovisioned
Ignore older SOC logs before licenseStatus field
2024-08-16 14:48:56 -04:00
weslambert 205bbd9c61 Use more specific match 2024-08-16 14:31:11 -04:00
weslambert 224bc6b429 Ignore old SOC logs before licenseStatus 2024-08-16 14:15:10 -04:00
m0duspwnens 7698243caf fix reactors 2024-08-16 13:37:44 -04:00
m0duspwnens 67f0934930 set new bridge 2024-08-16 12:21:41 -04:00
m0duspwnens 30e998edf7 bridge and pools 2024-08-16 11:58:49 -04:00
weslambert dc197f6a5c Add tenable settings 2024-08-15 23:06:53 -04:00
weslambert f182833a8d Add tenable_io 2024-08-15 23:03:32 -04:00
weslambert 61ab1f1ef2 Add tenable_io templates 2024-08-15 23:03:07 -04:00
Mike Reeves e664f2df28 Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into 2.4/dev 2024-08-15 15:35:20 -04:00
Josh Brower dea582f24a Merge pull request #13487 from Security-Onion-Solutions/2.4/logcheck
Add influxdb known error
2024-08-15 11:57:59 -04:00
DefensiveDepth b860bf753a Add influxdb known error 2024-08-15 11:50:34 -04:00
Mike Reeves b5690f6879 Merge pull request #13483 from Security-Onion-Solutions/TOoSmOotH-patch-2
Update registry version
2024-08-15 09:36:30 -04:00
Mike Reeves a39ad55578 Update registry version 2024-08-15 09:34:20 -04:00
weslambert 4c276d1211 Merge pull request #13482 from Security-Onion-Solutions/fix/cluster_space_total_field
Update column number because of changes to API
2024-08-15 08:29:39 -04:00
weslambert 5f74b1b730 Update column number because of changes to API 2024-08-15 08:26:56 -04:00
Doug Burks b9040eb0de Merge pull request #13481 from Security-Onion-Solutions/dougburks-patch-1
Update so-elasticsearch-cluster-space-used for changes in _cat/alloca…
2024-08-15 08:20:09 -04:00
Doug Burks ab63d5dbdb Update so-elasticsearch-cluster-space-used for changes in _cat/allocation API 2024-08-15 08:01:22 -04:00
Josh Patterson f233f13637 Merge pull request #13478 from Security-Onion-Solutions/fixsurivars
handle suricata network and port vars as string or list
2024-08-13 15:52:11 -04:00
m0duspwnens c8a8236401 handle suricata network and port vars as string or list 2024-08-13 15:44:08 -04:00
m0duspwnens 2a35e45920 hyper 2024-08-13 13:17:09 -04:00
m0duspwnens aa5de9f7bd cloud profiles and providers. libvirt net setup 2024-08-13 10:17:45 -04:00
Doug Burks f5603b1274 Merge pull request #13473 from Security-Onion-Solutions/dougburks-patch-1
Update SECURITY.md
2024-08-13 08:50:03 -04:00
Doug Burks 1d27fcc50e Update SECURITY.md 2024-08-13 08:48:49 -04:00
Jason Ertel dd2926201d Merge pull request #13470 from Security-Onion-Solutions/jertel/chgpw
fix issue with reset pw and mfa
2024-08-12 17:29:50 -04:00
m0duspwnens f9eeb76518 mine for hyper 2024-08-12 14:58:10 -04:00
Jason Ertel ebcef8adbd fix issue with reset pw and mfa 2024-08-12 13:35:06 -04:00
m0duspwnens 957235a656 fix dns-search 2024-08-12 13:31:51 -04:00
m0duspwnens 64a0c171f3 ssh user, build cloud profiles and providers 2024-08-12 12:47:04 -04:00
Doug Burks ff14217d38 Merge pull request #13467 from Security-Onion-Solutions/dougburks-patch-1
FEATURE: Add warning to soup about ssh #13466
2024-08-12 09:23:28 -04:00
Doug Burks 46596f01fa FEATURE: Add warning to soup about ssh #13466 2024-08-12 09:18:29 -04:00
Doug Burks c1388a68f0 FEATURE: Add warning to soup about ssh #13466 2024-08-12 09:12:49 -04:00
m0duspwnens a28ac3bee6 virt 2024-08-09 11:53:07 -04:00
Jason Ertel 374da11037 Merge pull request #13457 from Security-Onion-Solutions/jerte/fixrepos
fix repo path
2024-08-09 07:01:00 -04:00
Jason Ertel caa8d9ecb0 fix repo path 2024-08-09 06:58:40 -04:00
coreyogburn 02c7de6b1a Merge pull request #13453 from Security-Onion-Solutions/cogburn/ai-summaries
Cogburn/ai summaries
2024-08-08 14:55:11 -06:00
Corey Ogburn c71b9f6e8f Fix CopyPasta
Strelka annotations referenced ElastAlert. Fixed.
2024-08-08 13:31:08 -06:00
Corey Ogburn 8c1feccbe0 Tweak value 2024-08-08 12:53:51 -06:00
Corey Ogburn 5ee15c8b41 Tweak value 2024-08-08 12:00:07 -06:00
Corey Ogburn 5328f55322 Remove new config value 2024-08-08 11:43:15 -06:00
Corey Ogburn 712f904c43 Config for Repo Folder
The folder we checkout the AI Summary repo into should definitely exist.
2024-08-08 10:57:07 -06:00
Corey Ogburn ccd7d86302 More AI Summaries Config/Annotations
Added aiRepoBranch to all 3 detection engines.

Added showUnreviewedAiSummaries to client parameters.

Added annotations.
2024-08-08 10:46:41 -06:00
m0duspwnens 3643303a51 remove docker 7.1.0 wheels 2024-08-07 16:21:49 -04:00
m0duspwnens 81d407f0ff new wheels 2024-08-07 15:34:37 -04:00
m0duspwnens d29b0660f0 add docker module for salt 3006.1 2024-08-07 14:47:01 -04:00
m0duspwnens 59b94177d6 use salt3006.1 due to issue with virt state/module - salt issues 65694 2024-08-07 13:14:07 -04:00
m0duspwnens 9d2c5d54b0 hype changes 2024-08-07 10:43:53 -04:00
Corey Ogburn fc89604982 New Config Values/Annotations for Ai Summaries
Each engine pulls the same repo into the same location and shows the summaries.

Which repo and where to keep them is advanced, but turning AI summaries on or off is not.
2024-08-06 13:55:54 -06:00
Jorge Reyes 09f7329a21 Merge pull request #13443 from Security-Onion-Solutions/reyesj2/kfano
correct firewall annotation for kafka
2024-08-06 15:29:02 -04:00
reyesj2 cfd6676583 update kafka firewall annotations config
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-08-06 14:40:53 -04:00
m0duspwnens a6f1a0245a configure bridge during setup 2024-08-06 12:33:09 -04:00
Josh Patterson 3713ee9d93 Merge pull request #13441 from Security-Onion-Solutions/issue/13438
Issue/13438
2024-08-06 10:43:23 -04:00
m0duspwnens 009c8d55c3 unhold all verions for upgrade 2024-08-06 09:26:58 -04:00
m0duspwnens c0c01f0d17 lock and unlock salt in soup 2024-08-05 16:50:19 -04:00
m0duspwnens 2fe5dccbb4 fix hold/unhold 2024-08-05 15:25:28 -04:00
m0duspwnens c83a143eef apply holds to salt each state run 2024-08-05 15:13:07 -04:00
m0duspwnens fcf859ffed start adding bridge for hyper 2024-08-05 14:53:11 -04:00
Jason Ertel 56ef2a4e1c Merge pull request #13430 from Security-Onion-Solutions/jertel/retryreposync
retry up to 5 times if reposync fails
2024-08-02 14:59:27 -04:00
Jason Ertel c36e8abc19 retry up to 5 times if reposync fails 2024-08-02 14:52:08 -04:00
Jason Ertel e76293acdb Merge pull request #13429 from Security-Onion-Solutions/jertel/retryreposync
retry up to 5 times if reposync fails
2024-08-02 14:19:30 -04:00
Jason Ertel 5bdb4ed51b retry up to 5 times if reposync fails 2024-08-02 14:17:14 -04:00
m0duspwnens fe3f87e1fd use salt 3006.9 2024-08-02 13:45:46 -04:00
Josh Patterson aaf5d76071 Merge pull request #13425 from Security-Onion-Solutions/salt3006.9
Salt3006.9
2024-08-02 13:37:07 -04:00
m0duspwnens d9a696a411 run state from local 2024-08-01 14:02:21 -04:00
m0duspwnens 76ab4c92f0 use salt to install py modules during setup 2024-08-01 13:37:22 -04:00
m0duspwnens 60beaf51bc fail hard if docker py module upgrade failes 2024-08-01 12:32:24 -04:00
m0duspwnens 9ab17ff79c change dir name 2024-08-01 11:23:34 -04:00
m0duspwnens 1a363790a0 upgrade docker python module 2024-08-01 11:20:08 -04:00
m0duspwnens d488bb6393 upgrade to salt 3006.9 2024-08-01 08:49:03 -04:00
weslambert 114ad779b4 Merge pull request #13418 from Security-Onion-Solutions/fix/system_mapping
Change name for system component
2024-07-31 16:27:32 -04:00
weslambert 49d2ac2b13 Change name for system component 2024-07-31 16:17:57 -04:00
m0duspwnens 5a24a7775e salt 3006.1 - avoid some cloud/virt bug in later version 2024-07-31 15:57:43 -04:00
m0duspwnens 52e52f35f7 hyper setup init 2024-07-31 15:49:32 -04:00
m0duspwnens 810be2c9d2 virt start 2024-07-31 15:19:29 -04:00
m0duspwnens 8e4777a5ff libvirt start 2024-07-31 15:19:29 -04:00
weslambert 9a2252ed3f Merge pull request #13414 from Security-Onion-Solutions/fix/system_mapping
Fix system mapping
2024-07-31 14:26:50 -04:00
Wes 9264a03dbc Add custom system component 2024-07-31 17:03:26 +00:00
Wes fb2a42a9af Use custom system component 2024-07-31 17:02:45 +00:00
weslambert 63531cdbb6 Merge pull request #13410 from Security-Onion-Solutions/fix/elastic_agent_pipeline_version
Change agent pipeline version
2024-07-30 17:00:15 -04:00
weslambert bae348bef7 Change version 2024-07-30 16:44:44 -04:00
weslambert bd223d8643 Merge pull request #13409 from Security-Onion-Solutions/fix/elastic_fleet_defender
Fix defender winlog name change
2024-07-30 15:47:45 -04:00
weslambert 3fa6c72620 Fix name change 2024-07-30 15:45:55 -04:00
weslambert 2b90bdc86a Merge pull request #13408 from Security-Onion-Solutions/fix/fleet_setup
Fix fleet setup
2024-07-30 14:49:29 -04:00
weslambert 6831b72804 Fix fleet setup 2024-07-30 14:46:00 -04:00
weslambert 5e12b928d9 Merge pull request #13407 from Security-Onion-Solutions/fix/merge_revert
Add removed changes
2024-07-30 13:04:28 -04:00
weslambert 0453f51e64 Actually ignore missing templates 2024-07-30 12:54:07 -04:00
weslambert 9594e4115c Elastic 8.14.3 2024-07-30 12:47:56 -04:00
weslambert 201e14f287 Elastic 8.14.3 2024-07-30 12:46:42 -04:00
weslambert d833bd0d55 Elastic 8.14.3 2024-07-30 12:45:25 -04:00
weslambert 46eeb014af Add metrics settings 2024-07-30 12:39:50 -04:00
weslambert 8e7a2cf353 Ignore missing templates 2024-07-30 12:38:29 -04:00
Jason Ertel 2c528811cc Merge pull request #13406 from Security-Onion-Solutions/jertel/force
Provide new setting to require OTP
2024-07-30 10:42:11 -04:00
Jason Ertel 3130b56d58 Provide new setting to require OTP 2024-07-30 10:39:57 -04:00
weslambert b466d83625 Merge pull request #13402 from Security-Onion-Solutions/foxtrot
Elastic 8.14.3
2024-07-30 09:28:19 -04:00
weslambert 6d008546f1 Fix pre and add post for 2.4.100 2024-07-30 09:26:46 -04:00
weslambert c60b14e2e7 Merge branch '2.4/dev' into foxtrot 2024-07-30 08:52:48 -04:00
weslambert c753a7cffa Add function for 2.4.100 2024-07-29 13:18:07 -04:00
weslambert 5cba4d7d9b Update VERSION 2024-07-29 13:16:14 -04:00
Mike Reeves 685df9e5ea Merge pull request #13373 from Security-Onion-Solutions/suri7rules
Update so-rule-update
2024-07-29 13:06:51 -04:00
Mike Reeves ef5a42cf40 Merge pull request #13381 from Security-Onion-Solutions/consolemsg
Turn off console messages
2024-07-29 13:04:40 -04:00
Mike Reeves 45ab6c7309 Merge pull request #13401 from Security-Onion-Solutions/TOoSmOotH-patch-1
Update VERSION
2024-07-29 12:59:31 -04:00
Mike Reeves 1b54a109d5 Update VERSION 2024-07-29 12:59:00 -04:00
Mike Reeves 945d04a510 Merge pull request #13391 from Security-Onion-Solutions/2.4/dev
2.4.90
2024-07-29 12:49:11 -04:00
Mike Reeves 658db27a46 Merge pull request #13399 from Security-Onion-Solutions/2.4.90
2.4.90
2024-07-29 11:45:55 -04:00
Mike Reeves 3e248da14d 2.4.90 2024-07-29 11:37:42 -04:00
coreyogburn ed7f8dbf1d Merge pull request #13392 from Security-Onion-Solutions/cogburn/sodet-refresh-interval
so-detection refresh_interval => 1s
2024-07-25 14:10:39 -06:00
Corey Ogburn d6af3aab6d Use a wildcard instead of making 2 requests 2024-07-25 14:05:09 -06:00
Corey Ogburn 0cb067f6f2 Don't forget history
Also update so-detectionhistory to have a refresh_interval of 1s.
2024-07-25 14:01:10 -06:00
Corey Ogburn ccf88fa62b Add step to soup to set refresh_interval during upgrade
The so-detection index needs it's refresh_interval reset during an upgrade. If the index doesn't exist, the config change will set it correctly when it is created.
2024-07-25 13:44:22 -06:00
Corey Ogburn 20f915f649 so-detection refresh_interval => 1s
Speeds up the refresh_interval so bulk indexing a single rule does not wait 30s.
2024-07-25 12:53:04 -06:00
Mike Reeves f447b6b698 Merge pull request #13390 from Security-Onion-Solutions/2.4.90
2.4.90
2024-07-25 11:55:59 -04:00
Mike Reeves 66b087f12f 2.4.90 2024-07-25 11:49:57 -04:00
weslambert f2ad4c40e6 Fix update for 2.4.90 2024-07-24 10:38:05 -04:00
weslambert 8538f2eca2 Elastic Agent update 2024-07-24 09:40:30 -04:00
Wes c55fa6dc6a Fix pattern for pipelines 2024-07-23 17:48:32 +00:00
Wes 17f37750e5 Remove onchanges condition 2024-07-23 16:46:18 +00:00
Wes e789c17bc3 Add global@custom pipeline file 2024-07-23 16:37:37 +00:00
Wes 6f44d39b18 Remove Fleet final pipeline file 2024-07-23 16:37:03 +00:00
Wes dd85249781 Remove Fleet final pipeline 2024-07-23 16:36:41 +00:00
Wes bdba621442 Remove soup changes 2024-07-23 16:32:28 +00:00
Mike Reeves 034315ed85 Turn off console messages 2024-07-23 09:46:51 -04:00
Jason Ertel 224c668c31 Merge pull request #13374 from Security-Onion-Solutions/jertel/rmtestparm
remove unused test parameters from setup
2024-07-22 11:08:34 -04:00
Jason Ertel 2e17e93cfe remove unused test parameters from setup 2024-07-22 11:04:45 -04:00
Jason Ertel 7dfb75ba6b remove unused test parameters from setup 2024-07-22 11:02:56 -04:00
Mike Reeves af0425b8f1 Update rulecat.conf 2024-07-22 10:20:30 -04:00
Mike Reeves 6cf0a0bb42 Update so-rule-update 2024-07-22 10:19:34 -04:00
Jorge Reyes d97400e6f5 Merge pull request #13368 from Security-Onion-Solutions/reyesj2/kfps
fix kafka-logstash cert for searchnodes
2024-07-21 20:11:42 -04:00
reyesj2 cf1335dd84 searchnode logstash-kafka cert generation
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-20 11:31:33 -04:00
coreyogburn be74449fb9 Merge pull request #13365 from Security-Onion-Solutions/cogburn/suricata-regex-support
Cogburn/suricata regex support
2024-07-19 12:47:10 -06:00
Corey Ogburn 45b2413175 Removed Allow/Deny Regexes, Added Enable/Disable Regex
Update config and annotations for new regex support for suricata.
2024-07-19 12:45:24 -06:00
Corey Ogburn 022df966c7 Remove Allow/Deny Regex, Add Suricata Enable/Disable Regex 2024-07-19 12:28:04 -06:00
Jorge Reyes 92385d652e Merge pull request #13363 from Security-Onion-Solutions/reyesj2/ksoup
kafka soup pillar
2024-07-19 10:50:48 -04:00
reyesj2 4478d7b55a kafka soup pillar fix
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-19 09:32:47 -04:00
Wes 612716ee69 Apply ES to load pipelines 2024-07-17 17:35:41 +00:00
Wes f78a5d1a78 Remove pipeline file 2024-07-17 15:42:40 +00:00
Wes 2d0de87530 Add component templates for Fleet metrics 2024-07-17 15:19:46 +00:00
Josh Patterson 18df491f7e Merge pull request #13355 from Security-Onion-Solutions/silsll
Exclude policy phases if not defined in defaults
2024-07-17 11:09:18 -04:00
m0duspwnens cee6ee7a2a Merge remote-tracking branch 'origin/2.4/dev' into silsll 2024-07-17 10:16:36 -04:00
m0duspwnens 6d18177f98 only include global phases if defined in default for that index 2024-07-17 10:16:11 -04:00
weslambert c0bb395571 Remove pipeline file removal 2024-07-17 09:51:51 -04:00
weslambert f051ddc7f0 Remove pipelines 2024-07-17 09:50:26 -04:00
m0duspwnens 72ad49ed12 add policy for so-lists and so-items 2024-07-16 14:36:06 -04:00
Jorge Reyes d11f4ef9ba Merge pull request #13350 from Security-Onion-Solutions/reyesj2/kflux
Kafka influxdb metrics & pillar update
2024-07-16 14:26:09 -04:00
reyesj2 03ca7977a0 quote variables
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-16 14:14:55 -04:00
m0duspwnens 91b2e7d400 Merge remote-tracking branch 'origin/2.4/dev' into silsll 2024-07-16 14:06:56 -04:00
m0duspwnens 34c3a58efe add cold policy 2024-07-16 14:03:48 -04:00
Josh Patterson a867557f54 Merge pull request #13353 from Security-Onion-Solutions/fci
fix custom indices
2024-07-16 13:18:11 -04:00
m0duspwnens b814f32e0a fix custom indices 2024-07-16 12:39:30 -04:00
coreyogburn 2df44721d0 Merge pull request #13349 from Security-Onion-Solutions/cogburn/bulk-indexer
New Config Values for Detections Bulk Indexer
2024-07-15 15:34:01 -06:00
Corey Ogburn d0565baaa3 New Config Values for Detections Bulk Indexer
`maxScrollSize` defines the "page size" of each scroll request.

`bulkIndexerWorkerCount` defines how many worker threads a bulk indexer should use. 0 or fewer indicates that 1 thread per CPU core should be used.
2024-07-15 14:43:47 -06:00
weslambert 38e7da1334 Merge pull request #13347 from Security-Onion-Solutions/upgrade/elastic_8_14_3
Elastic 8.14.3
2024-07-15 16:29:24 -04:00
reyesj2 1b623c5c7a Show Kafka EPS for nodes with broker role only
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-15 16:27:48 -04:00
reyesj2 542a116b8c use so-yaml add for kafka pillar change
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-15 16:26:52 -04:00
Doug Burks e7b6496f98 Merge pull request #13348 from Security-Onion-Solutions/dougburks-patch-1
FEATURE: Add new action to SOC Actions list to allow users to more easily add their own actions #13346
2024-07-15 15:59:49 -04:00
Doug Burks 3991c7b5fe FEATURE: Add new action to SOC Actions list to allow users to more easily add their own actions #13346 2024-07-15 15:52:00 -04:00
weslambert 678b232c24 Elastic 8.14.3 2024-07-15 15:48:01 -04:00
weslambert fbd0dbd048 Elastic 8.14.3 2024-07-15 15:46:55 -04:00
weslambert 1df19faf5c Elastic 8.14.3 2024-07-15 15:44:50 -04:00
weslambert 8ec5794833 Update VERSION 2024-07-15 15:42:40 -04:00
weslambert bf07d56da6 Merge pull request #13341 from Security-Onion-Solutions/revert-13323-fix/agent_pipeline
Revert "Change pipeline version for agent"
2024-07-15 11:38:56 -04:00
weslambert cdbffa2323 Merge pull request #13342 from Security-Onion-Solutions/revert-13316-foxtrot
Revert "Elastic 8.14.2"
2024-07-15 11:38:48 -04:00
Josh Patterson 55469ebd24 Merge pull request #13340 from Security-Onion-Solutions/surianno
force var to be list of string
2024-07-15 11:34:00 -04:00
weslambert 4e81860a13 Revert "Change pipeline version for agent" 2024-07-15 11:33:52 -04:00
m0duspwnens a23789287e force var to be list of string 2024-07-15 11:29:47 -04:00
weslambert fe1824aedd Revert "Elastic 8.14.2" 2024-07-15 11:28:59 -04:00
Jorge Reyes e58b2c45dd Merge pull request #13335 from Security-Onion-Solutions/reyesj2/kgz
FIX: Kafka configuration updates
2024-07-12 15:55:43 -04:00
reyesj2 5d322ebc0b Allow searchnodes to run kafka.ssl state for kafka-logstash cert generation
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-12 14:45:11 -04:00
reyesj2 7ea8d5efd0 Remove redis input pipeline from searchnodes when global pipeline is Kafka
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-12 14:44:10 -04:00
reyesj2 4182ff66a0 rearrange kafka pillar, declutters SOC ui
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-11 16:37:16 -04:00
reyesj2 ff29d9ca51 Update log-check to ignore kafka data directories
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-11 10:23:51 -04:00
reyesj2 4a88dedcb8 Fixin kafka.ssl state and include name for kafka_user
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-10 16:18:46 -04:00
reyesj2 cfe5c1d76a remove elasticsearch.ca from receiver allowed_states. Replaced by generated kafka trust
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-10 13:24:02 -04:00
weslambert ebf5159c95 Merge pull request #13323 from Security-Onion-Solutions/fix/agent_pipeline
Change pipeline version for agent
2024-07-10 13:01:29 -04:00
weslambert d432019ad9 Change version from 1.13.1 to 1.20.0 2024-07-10 12:48:08 -04:00
reyesj2 0d8fd42be3 update pillarwatch engine
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-10 11:37:07 -04:00
reyesj2 d5faf535c3 Only interact with logstash configuration when Kafka pipeline is enabled otherwise leave it default
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-10 11:36:44 -04:00
reyesj2 8e1edd1d91 split Kafka ssl from ssl/init. Certs won't be generated until Kafka is enabled. Also runs some clean up for old Kafka certs
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-10 11:32:43 -04:00
reyesj2 d791b23838 Generate new Kafka truststore
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-10 11:29:09 -04:00
weslambert 0db0754ee5 Merge pull request #13316 from Security-Onion-Solutions/foxtrot
Elastic 8.14.2
2024-07-10 08:53:03 -04:00
Wes 1f5a990b1e Remove lines that aren't needed right now 2024-07-09 18:32:06 +00:00
weslambert 7a2f01be53 Update VERSION 2024-07-09 13:58:13 -04:00
Doug Burks dadb0db8f3 Merge pull request #13321 from Security-Onion-Solutions/dougburks-patch-1
FIX: Update SOC MOTD #13320
2024-07-09 12:58:22 -04:00
Doug Burks dfd8ac3626 FIX: Update SOC MOTD #13320 2024-07-09 12:55:58 -04:00
weslambert 9716e09b83 Temp change for testing 2024-07-09 12:51:34 -04:00
Wes 669f68ad88 Fleet metric annotations 2024-07-09 15:39:59 +00:00
Doug Burks 32af2d8436 Merge pull request #13318 from Security-Onion-Solutions/dougburks-patch-1
FIX: Update MOTD #13317
2024-07-09 10:07:47 -04:00
Doug Burks 24e945eee4 FIX: Update MOTD #13317 2024-07-09 10:06:16 -04:00
weslambert 8615e5d5ea Move enabled and index_clean back to the top 2024-07-08 16:50:06 -04:00
weslambert 2dd5ff4333 Update VERSION 2024-07-08 16:19:53 -04:00
weslambert 6a396ec1aa Fix accidental double quote removal 2024-07-08 11:44:27 -04:00
weslambert 34f558c023 Merge pull request #13314 from Security-Onion-Solutions/upgrade/elastic_8_14_2
Elastic 8.14.2
2024-07-08 10:02:02 -04:00
weslambert 9504f0885a Elastic 8.14.2 2024-07-08 09:49:07 -04:00
weslambert ef59678441 Elastic 8.14.2 2024-07-08 09:48:12 -04:00
weslambert c6f6811f47 Elastic 8.14.2 2024-07-08 09:47:34 -04:00
Mike Reeves ce8f9fe024 Merge pull request #13299 from Security-Onion-Solutions/TOoSmOotH-patch-2
Delete old user commands
2024-07-02 14:46:56 -04:00
Mike Reeves 40b7999786 Delete salt/manager/tools/sbin/so-user-list 2024-07-02 14:36:51 -04:00
Mike Reeves 69be03f86a Delete salt/manager/tools/sbin/so-user-enable 2024-07-02 14:36:36 -04:00
Mike Reeves 8dc8092241 Delete salt/manager/tools/sbin/so-user-disable 2024-07-02 14:36:02 -04:00
Mike Reeves 578c6c567f Delete old user commands 2024-07-02 14:34:45 -04:00
weslambert 662df1208d Merge pull request #13296 from Security-Onion-Solutions/fix/soc_ilm_policy
Change name for ILM
2024-07-02 09:06:11 -04:00
weslambert 745b6775f1 Change name for ILM 2024-07-02 09:05:35 -04:00
weslambert 176aaa8f3d Merge pull request #13295 from Security-Onion-Solutions/fix/custom_windows_integration
Change name to winlog.winlogs
2024-07-02 09:03:52 -04:00
weslambert 4d499be1a8 Change name 2024-07-02 08:47:29 -04:00
weslambert c27225d91f Merge pull request #13290 from Security-Onion-Solutions/fix/elastic_template_changes
Changes for Elastic 8.14.1
2024-07-01 11:19:02 -04:00
Wes 1b47d5c622 Changes for Elastic 8.14.1 2024-07-01 15:16:58 +00:00
Wes 32d7927a49 Template changes for Elastic 8.14.1 2024-07-01 15:16:06 +00:00
Jorge Reyes 861630681c Merge pull request #13282 from Security-Onion-Solutions/reyesj2/rupd
FIX: so-rule-update airgap check
2024-06-28 16:26:34 -04:00
reyesj2 9d725f2b0b fix rule update
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-06-28 13:45:50 -04:00
Josh Patterson 132263ac1a Merge pull request #13278 from Security-Onion-Solutions/issue/13073
Issue/13073 - disable Logstash on heavynodes
2024-06-27 14:50:18 -04:00
DefensiveDepth 92a847e3bd Fix Fleet setup 2024-06-27 11:48:54 -04:00
DefensiveDepth 75bbc41d38 Merge remote-tracking branch 'refs/remotes/origin/foxtrot' into foxtrot 2024-06-27 11:48:05 -04:00
weslambert 7716f4aff8 Elastic 8.14.1 2024-06-27 10:49:52 -04:00
weslambert 8eb6dcc5b7 Elastic 8.14.1 2024-06-27 10:49:06 -04:00
weslambert 847638442b Elastic 8.14.1 2024-06-27 10:48:28 -04:00
weslambert 5743189eef Elastic 8.14.1 2024-06-27 10:47:46 -04:00
weslambert 81d874c6ae Update VERSION 2024-06-27 10:42:58 -04:00
Mike Reeves 72146d9566 Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into 2.4/dev 2024-06-27 10:42:07 -04:00
m0duspwnens bfe8a3a01b Merge remote-tracking branch 'origin/2.4/dev' into issue/13073 2024-06-27 09:20:12 -04:00
weslambert 71ed9204ff Merge pull request #13275 from Security-Onion-Solutions/fix/elastic_8_10_4
Revert back to 8.10.4
2024-06-27 09:16:54 -04:00
weslambert 222ebbdec1 Revert back to 8.10.4 2024-06-27 09:05:29 -04:00
weslambert 260d4e44bc Revert back to 8.10.4 2024-06-27 09:04:07 -04:00
weslambert 0c5b3f7c1c Revert back to 8.10.4 2024-06-27 09:03:28 -04:00
weslambert feee80cad9 Revert back to 8.10.4 2024-06-27 09:01:55 -04:00
m0duspwnens 5f69456e22 Merge remote-tracking branch 'origin/2.4/dev' into issue/13073 2024-06-27 08:56:44 -04:00
weslambert e59d124c82 Merge pull request #13271 from Security-Onion-Solutions/upgrade/elastic
Elastic 8.14.1
2024-06-26 14:47:54 -04:00
Wes 13d4738e8f Elastic 8.14.1 2024-06-26 18:39:53 +00:00
weslambert abdfbba32a Elastic 8.14.1 2024-06-26 14:06:24 -04:00
weslambert 7d0a961482 Elastic 8.14.1 2024-06-26 14:00:54 -04:00
weslambert 0f226cc08e Elastic 8.14.1 2024-06-26 13:59:23 -04:00
m0duspwnens cfcfc6819f disable logstash in heavynode pillars 2024-06-26 12:53:32 -04:00
m0duspwnens fe4e2a9540 Merge remote-tracking branch 'origin/2.4/dev' into issue/13073 2024-06-26 12:46:01 -04:00
Josh Patterson 492554d951 Merge pull request #13270 from Security-Onion-Solutions/90soup
start soup 2.4.90
2024-06-26 12:40:44 -04:00
m0duspwnens dfd5e95c93 start soup 2.4.90 2024-06-26 12:37:28 -04:00
m0duspwnens 50f0c43212 merge dev 2024-06-26 12:33:32 -04:00
Mike Reeves 7fe8715bce Merge pull request #13260 from Security-Onion-Solutions/TOoSmOotH-patch-1
Update VERSION
2024-06-25 15:40:26 -04:00
Mike Reeves f837ea944a Update VERSION 2024-06-25 15:39:39 -04:00
Mike Reeves 9af3e364aa Merge branch '2.4/main' of github.com:Security-Onion-Solutions/securityonion into 2.4/dev 2024-06-25 08:23:10 -04:00
Mike Reeves 229cb1e9ef Merge branch '2.4/main' of github.com:Security-Onion-Solutions/securityonion into 2.4/main 2024-06-21 14:06:51 -04:00
m0duspwnens 469ca44016 fix maps 2024-06-20 16:53:12 -04:00
m0duspwnens 81fcd68e9b create and use redis:nodes and elasticsearch:nodes pillars 2024-06-20 16:42:11 -04:00
m0duspwnens 55f8303dc2 remove manager and search pipelines from heavynode 2024-06-17 10:06:43 -04:00
m0duspwnens 8f8698fd02 Merge remote-tracking branch 'origin/2.4/dev' into issue/13073 2024-06-12 10:50:18 -04:00
m0duspwnens 98837bc379 this method does not cause soup to fail 2024-06-12 09:11:02 -04:00
m0duspwnens 0f243bb6ec Merge remote-tracking branch 'origin/2.4/dev' into issue/13073 2024-06-11 16:33:23 -04:00
m0duspwnens 88fc1bbe32 quotes on vars 2024-06-11 16:32:57 -04:00
m0duspwnens 2ecac38f6d disable logstash on heavynodes 2024-06-11 13:50:29 -04:00
Mike Reeves 21f78a039a Merge branch '2.4/main' of github.com:Security-Onion-Solutions/securityonion into 2.4/main 2024-04-02 08:47:08 -04:00
Mike Reeves 6069c586d3 Merge branch '2.4/main' of github.com:Security-Onion-Solutions/securityonion into 2.4/main 2024-01-24 16:07:31 -05:00
weslambert 2168698595 Update VERSION 2024-01-22 20:27:19 -05:00
Mike Reeves 3bdc0340b8 Merge branch 'hotfix/2.4.30' into 2.4/main 2023-12-19 13:21:33 -05:00
865 changed files with 209175 additions and 706489 deletions
+3 -2
View File
@@ -536,10 +536,11 @@ secretGroup = 4
[allowlist]
description = "global allow lists"
regexes = ['''219-09-9999''', '''078-05-1120''', '''(9[0-9]{2}|666)-\d{2}-\d{4}''', '''RPM-GPG-KEY.*''', '''.*:.*StrelkaHexDump.*''', '''.*:.*PLACEHOLDER.*''', '''ssl_.*password''']
regexes = ['''219-09-9999''', '''078-05-1120''', '''(9[0-9]{2}|666)-\d{2}-\d{4}''', '''RPM-GPG-KEY.*''', '''.*:.*StrelkaHexDump.*''', '''.*:.*PLACEHOLDER.*''', '''ssl_.*password''', '''integration_key\s=\s"so-logs-"''']
paths = [
'''gitleaks.toml''',
'''(.*?)(jpg|gif|doc|pdf|bin|svg|socket)$''',
'''(go.mod|go.sum)$''',
'''salt/nginx/files/enterprise-attack.json'''
'''salt/nginx/files/enterprise-attack.json''',
'''(.*?)whl$'''
]
+15 -4
View File
@@ -11,7 +11,6 @@ body:
description: Which version of Security Onion 2.4.x are you asking about?
options:
-
- 2.4 Pre-release (Beta, Release Candidate)
- 2.4.10
- 2.4.20
- 2.4.30
@@ -22,6 +21,17 @@ body:
- 2.4.80
- 2.4.90
- 2.4.100
- 2.4.110
- 2.4.111
- 2.4.120
- 2.4.130
- 2.4.140
- 2.4.141
- 2.4.150
- 2.4.160
- 2.4.170
- 2.4.180
- 2.4.190
- Other (please provide detail below)
validations:
required: true
@@ -32,9 +42,10 @@ body:
options:
-
- Security Onion ISO image
- Network installation on Red Hat derivative like Oracle, Rocky, Alma, etc.
- Network installation on Ubuntu
- Network installation on Debian
- Cloud image (Amazon, Azure, Google)
- Network installation on Red Hat derivative like Oracle, Rocky, Alma, etc. (unsupported)
- Network installation on Ubuntu (unsupported)
- Network installation on Debian (unsupported)
- Other (please provide detail below)
validations:
required: true
-12
View File
@@ -1,12 +0,0 @@
PLEASE STOP AND READ THIS INFORMATION!
If you are creating an issue just to ask a question, you will likely get faster and better responses by posting to our discussions forum instead:
https://securityonion.net/discuss
If you think you have found a possible bug or are observing a behavior that you weren't expecting, use the discussion forum to start a conversation about it instead of creating an issue.
If you are very familiar with the latest version of the product and are confident you have found a bug in Security Onion, you can continue with creating an issue here, but please make sure you have done the following:
- duplicated the issue on a fresh installation of the latest version
- provide information about your system and how you installed Security Onion
- include relevant log files
- include reproduction steps
+38
View File
@@ -0,0 +1,38 @@
---
name: Bug report
about: This option is for experienced community members to report a confirmed, reproducible bug
title: ''
labels: ''
assignees: ''
---
PLEASE STOP AND READ THIS INFORMATION!
If you are creating an issue just to ask a question, you will likely get faster and better responses by posting to our discussions forum at https://securityonion.net/discuss.
If you think you have found a possible bug or are observing a behavior that you weren't expecting, use the discussion forum at https://securityonion.net/discuss to start a conversation about it instead of creating an issue.
If you are very familiar with the latest version of the product and are confident you have found a bug in Security Onion, you can continue with creating an issue here, but please make sure you have done the following:
- duplicated the issue on a fresh installation of the latest version
- provide information about your system and how you installed Security Onion
- include relevant log files
- include reproduction steps
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Additional context**
Add any other context about the problem here.
+5
View File
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Security Onion Discussions
url: https://securityonion.com/discussions
about: Please ask and answer questions here
+1 -1
View File
@@ -18,7 +18,7 @@ jobs:
with:
path-to-signatures: 'signatures_v1.json'
path-to-document: 'https://securityonionsolutions.com/cla'
allowlist: dependabot[bot],jertel,dougburks,TOoSmOotH,weslambert,defensivedepth,m0duspwnens
allowlist: dependabot[bot],jertel,dougburks,TOoSmOotH,defensivedepth,m0duspwnens
remote-organization-name: Security-Onion-Solutions
remote-repository-name: licensing
+2 -6
View File
@@ -1,10 +1,6 @@
name: python-test
on:
push:
paths:
- "salt/sensoroni/files/analyzers/**"
- "salt/manager/tools/sbin"
pull_request:
paths:
- "salt/sensoroni/files/analyzers/**"
@@ -17,7 +13,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ["3.10"]
python-version: ["3.13"]
python-code-path: ["salt/sensoroni/files/analyzers", "salt/manager/tools/sbin"]
steps:
@@ -36,4 +32,4 @@ jobs:
flake8 ${{ matrix.python-code-path }} --show-source --max-complexity=12 --doctests --max-line-length=200 --statistics
- name: Test with pytest
run: |
pytest ${{ matrix.python-code-path }} --cov=${{ matrix.python-code-path }} --doctest-modules --cov-report=term --cov-fail-under=100 --cov-config=pytest.ini
PYTHONPATH=${{ matrix.python-code-path }} pytest ${{ matrix.python-code-path }} --cov=${{ matrix.python-code-path }} --doctest-modules --cov-report=term --cov-fail-under=100 --cov-config=pytest.ini
+1 -2
View File
@@ -1,4 +1,3 @@
# Created by https://www.gitignore.io/api/macos,windows
# Edit at https://www.gitignore.io/?templates=macos,windows
@@ -67,4 +66,4 @@ __pycache__
# Analyzer dev/test config files
*_dev.yaml
site-packages
site-packages
+11 -11
View File
@@ -1,17 +1,17 @@
### 2.4.80-20240624 ISO image released on 2024/06/25
### 2.4.190-20251024 ISO image released on 2025/10/24
### Download and Verify
2.4.80-20240624 ISO image:
https://download.securityonion.net/file/securityonion/securityonion-2.4.80-20240624.iso
2.4.190-20251024 ISO image:
https://download.securityonion.net/file/securityonion/securityonion-2.4.190-20251024.iso
MD5: 139F9762E926F9CB3C4A9528A3752C31
SHA1: BC6CA2C5F4ABC1A04E83A5CF8FFA6A53B1583CC9
SHA256: 70E90845C84FFA30AD6CF21504634F57C273E7996CA72F7250428DDBAAC5B1BD
MD5: 25358481FB876226499C011FC0710358
SHA1: 0B26173C0CE136F2CA40A15046D1DFB78BCA1165
SHA256: 4FD9F62EDA672408828B3C0C446FE5EA9FF3C4EE8488A7AB1101544A3C487872
Signature for ISO image:
https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.80-20240624.iso.sig
https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.190-20251024.iso.sig
Signing key:
https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/2.4/main/KEYS
@@ -25,22 +25,22 @@ wget https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/2.
Download the signature file for the ISO:
```
wget https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.80-20240624.iso.sig
wget https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.190-20251024.iso.sig
```
Download the ISO image:
```
wget https://download.securityonion.net/file/securityonion/securityonion-2.4.80-20240624.iso
wget https://download.securityonion.net/file/securityonion/securityonion-2.4.190-20251024.iso
```
Verify the downloaded ISO image using the signature file:
```
gpg --verify securityonion-2.4.80-20240624.iso.sig securityonion-2.4.80-20240624.iso
gpg --verify securityonion-2.4.190-20251024.iso.sig securityonion-2.4.190-20251024.iso
```
The output should show "Good signature" and the Primary key fingerprint should match what's shown below:
```
gpg: Signature made Mon 24 Jun 2024 02:42:03 PM EDT using RSA key ID FE507013
gpg: Signature made Thu 23 Oct 2025 07:21:46 AM EDT using RSA key ID FE507013
gpg: Good signature from "Security Onion Solutions, LLC <info@securityonionsolutions.com>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
+53
View File
@@ -0,0 +1,53 @@
Elastic License 2.0 (ELv2)
Acceptance
By using the software, you agree to all of the terms and conditions below.
Copyright License
The licensor grants you a non-exclusive, royalty-free, worldwide, non-sublicensable, non-transferable license to use, copy, distribute, make available, and prepare derivative works of the software, in each case subject to the limitations and conditions below.
Limitations
You may not provide the software to third parties as a hosted or managed service, where the service provides users with access to any substantial set of the features or functionality of the software.
You may not move, change, disable, or circumvent the license key functionality in the software, and you may not remove or obscure any functionality in the software that is protected by the license key.
You may not alter, remove, or obscure any licensing, copyright, or other notices of the licensor in the software. Any use of the licensors trademarks is subject to applicable law.
Patents
The licensor grants you a license, under any patent claims the licensor can license, or becomes able to license, to make, have made, use, sell, offer for sale, import and have imported the software, in each case subject to the limitations and conditions in this license. This license does not cover any patent claims that you cause to be infringed by modifications or additions to the software. If you or your company make any written claim that the software infringes or contributes to infringement of any patent, your patent license for the software granted under these terms ends immediately. If your company makes such a claim, your patent license ends immediately for work on behalf of your company.
Notices
You must ensure that anyone who gets a copy of any part of the software from you also gets a copy of these terms.
If you modify the software, you must include in any modified copies of the software prominent notices stating that you have modified the software.
No Other Rights
These terms do not imply any licenses other than those expressly granted in these terms.
Termination
If you use the software in violation of these terms, such use is not licensed, and your licenses will automatically terminate. If the licensor provides you with a notice of your violation, and you cease all violation of this license no later than 30 days after you receive that notice, your licenses will be reinstated retroactively. However, if you violate these terms after such reinstatement, any additional violation of these terms will cause your licenses to terminate automatically and permanently.
No Liability
As far as the law allows, the software comes as is, without any warranty or condition, and the licensor will not be liable to you for any damages arising out of these terms or the use or nature of the software, under any kind of legal claim.
Definitions
The licensor is the entity offering these terms, and the software is the software the licensor makes available under these terms, including any portion of it.
you refers to the individual or entity agreeing to these terms.
your company is any legal entity, sole proprietorship, or other kind of organization that you work for, plus all organizations that have control over, are under the control of, or are under common control with that organization. control means ownership of substantially all the assets of an entity, or the power to direct its management and policies by vote, contract, or otherwise. Control can be direct or indirect.
your licenses are all the licenses granted to you for the software under these terms.
use means anything you do with the software requiring one of your licenses.
trademark means trademarks, service marks, and similar rights.
+3 -1
View File
@@ -5,9 +5,11 @@
| Version | Supported |
| ------- | ------------------ |
| 2.4.x | :white_check_mark: |
| 2.3.x | :white_check_mark: |
| 2.3.x | :x: |
| 16.04.x | :x: |
Security Onion 2.3 has reached End Of Life and is no longer supported.
Security Onion 16.04 has reached End Of Life and is no longer supported.
## Reporting a Vulnerability
+1 -1
View File
@@ -1 +1 @@
2.4.80
2.4.190
+34
View File
@@ -0,0 +1,34 @@
{% set node_types = {} %}
{% for minionid, ip in salt.saltutil.runner(
'mine.get',
tgt='elasticsearch:enabled:true',
fun='network.ip_addrs',
tgt_type='pillar') | dictsort()
%}
# only add a node to the pillar if it returned an ip from the mine
{% if ip | length > 0%}
{% set hostname = minionid.split('_') | first %}
{% set node_type = minionid.split('_') | last %}
{% if node_type not in node_types.keys() %}
{% do node_types.update({node_type: {hostname: ip[0]}}) %}
{% else %}
{% if hostname not in node_types[node_type] %}
{% do node_types[node_type].update({hostname: ip[0]}) %}
{% else %}
{% do node_types[node_type][hostname].update(ip[0]) %}
{% endif %}
{% endif %}
{% endif %}
{% endfor %}
elasticsearch:
nodes:
{% for node_type, values in node_types.items() %}
{{node_type}}:
{% for hostname, ip in values.items() %}
{{hostname}}:
ip: {{ip}}
{% endfor %}
{% endfor %}
+34
View File
@@ -0,0 +1,34 @@
{% set node_types = {} %}
{% for minionid, ip in salt.saltutil.runner(
'mine.get',
tgt='G@role:so-hypervisor or G@role:so-managerhype',
fun='network.ip_addrs',
tgt_type='compound') | dictsort()
%}
# only add a node to the pillar if it returned an ip from the mine
{% if ip | length > 0%}
{% set hostname = minionid.split('_') | first %}
{% set node_type = minionid.split('_') | last %}
{% if node_type not in node_types.keys() %}
{% do node_types.update({node_type: {hostname: ip[0]}}) %}
{% else %}
{% if hostname not in node_types[node_type] %}
{% do node_types[node_type].update({hostname: ip[0]}) %}
{% else %}
{% do node_types[node_type][hostname].update(ip[0]) %}
{% endif %}
{% endif %}
{% endif %}
{% endfor %}
hypervisor:
nodes:
{% for node_type, values in node_types.items() %}
{{node_type}}:
{% for hostname, ip in values.items() %}
{{hostname}}:
ip: {{ip}}
{% endfor %}
{% endfor %}
+4 -5
View File
@@ -1,16 +1,15 @@
{% set node_types = {} %}
{% set cached_grains = salt.saltutil.runner('cache.grains', tgt='*') %}
{% for minionid, ip in salt.saltutil.runner(
'mine.get',
tgt='G@role:so-manager or G@role:so-managersearch or G@role:so-standalone or G@role:so-searchnode or G@role:so-heavynode or G@role:so-receiver or G@role:so-fleet ',
tgt='logstash:enabled:true',
fun='network.ip_addrs',
tgt_type='compound') | dictsort()
tgt_type='pillar') | dictsort()
%}
# only add a node to the pillar if it returned an ip from the mine
{% if ip | length > 0%}
{% set hostname = cached_grains[minionid]['host'] %}
{% set node_type = minionid.split('_')[1] %}
{% set hostname = minionid.split('_') | first %}
{% set node_type = minionid.split('_') | last %}
{% if node_type not in node_types.keys() %}
{% do node_types.update({node_type: {hostname: ip[0]}}) %}
{% else %}
+4
View File
@@ -24,6 +24,7 @@
{% endif %}
{% endfor %}
{% if node_types %}
node_data:
{% for node_type, host_values in node_types.items() %}
{% for hostname, details in host_values.items() %}
@@ -33,3 +34,6 @@ node_data:
role: {{node_type}}
{% endfor %}
{% endfor %}
{% else %}
node_data: False
{% endif %}
+34
View File
@@ -0,0 +1,34 @@
{% set node_types = {} %}
{% for minionid, ip in salt.saltutil.runner(
'mine.get',
tgt='redis:enabled:true',
fun='network.ip_addrs',
tgt_type='pillar') | dictsort()
%}
# only add a node to the pillar if it returned an ip from the mine
{% if ip | length > 0%}
{% set hostname = minionid.split('_') | first %}
{% set node_type = minionid.split('_') | last %}
{% if node_type not in node_types.keys() %}
{% do node_types.update({node_type: {hostname: ip[0]}}) %}
{% else %}
{% if hostname not in node_types[node_type] %}
{% do node_types[node_type].update({hostname: ip[0]}) %}
{% else %}
{% do node_types[node_type][hostname].update(ip[0]) %}
{% endif %}
{% endif %}
{% endif %}
{% endfor %}
redis:
nodes:
{% for node_type, values in node_types.items() %}
{{node_type}}:
{% for hostname, ip in values.items() %}
{{hostname}}:
ip: {{ip}}
{% endfor %}
{% endfor %}
+46 -14
View File
@@ -16,16 +16,24 @@ base:
- sensoroni.adv_sensoroni
- telegraf.soc_telegraf
- telegraf.adv_telegraf
- versionlock.soc_versionlock
- versionlock.adv_versionlock
- soc.license
'* and not *_desktop':
- firewall.soc_firewall
- firewall.adv_firewall
- nginx.soc_nginx
- nginx.adv_nginx
- node_data.ips
'*_manager or *_managersearch':
'salt-cloud:driver:libvirt':
- match: grain
- vm.soc_vm
- vm.adv_vm
'*_manager or *_managersearch or *_managerhype':
- match: compound
- node_data.ips
{% if salt['file.file_exists']('/opt/so/saltstack/local/pillar/elasticsearch/auth.sls') %}
- elasticsearch.auth
{% endif %}
@@ -42,15 +50,18 @@ base:
- logstash.adv_logstash
- soc.soc_soc
- soc.adv_soc
- soc.license
- kibana.soc_kibana
- kibana.adv_kibana
- kratos.soc_kratos
- kratos.adv_kratos
- hydra.soc_hydra
- hydra.adv_hydra
- redis.nodes
- redis.soc_redis
- redis.adv_redis
- influxdb.soc_influxdb
- influxdb.adv_influxdb
- elasticsearch.nodes
- elasticsearch.soc_elasticsearch
- elasticsearch.adv_elasticsearch
- elasticfleet.soc_elasticfleet
@@ -64,6 +75,9 @@ base:
- kafka.nodes
- kafka.soc_kafka
- kafka.adv_kafka
- hypervisor.nodes
- hypervisor.soc_hypervisor
- hypervisor.adv_hypervisor
- stig.soc_stig
'*_sensor':
@@ -81,9 +95,9 @@ base:
- minions.{{ grains.id }}
- minions.adv_{{ grains.id }}
- stig.soc_stig
- soc.license
'*_eval':
- node_data.ips
- secrets
- healthcheck.eval
- elasticsearch.index_templates
@@ -94,6 +108,7 @@ base:
- kibana.secrets
{% endif %}
- kratos.soc_kratos
- kratos.adv_kratos
- elasticsearch.soc_elasticsearch
- elasticsearch.adv_elasticsearch
- elasticfleet.soc_elasticfleet
@@ -106,13 +121,12 @@ base:
- idstools.adv_idstools
- soc.soc_soc
- soc.adv_soc
- soc.license
- kibana.soc_kibana
- kibana.adv_kibana
- strelka.soc_strelka
- strelka.adv_strelka
- kratos.soc_kratos
- kratos.adv_kratos
- hydra.soc_hydra
- hydra.adv_hydra
- redis.soc_redis
- redis.adv_redis
- influxdb.soc_influxdb
@@ -131,6 +145,7 @@ base:
- minions.adv_{{ grains.id }}
'*_standalone':
- node_data.ips
- logstash.nodes
- logstash.soc_logstash
- logstash.adv_logstash
@@ -147,10 +162,14 @@ base:
- idstools.adv_idstools
- kratos.soc_kratos
- kratos.adv_kratos
- hydra.soc_hydra
- hydra.adv_hydra
- redis.nodes
- redis.soc_redis
- redis.adv_redis
- influxdb.soc_influxdb
- influxdb.adv_influxdb
- elasticsearch.nodes
- elasticsearch.soc_elasticsearch
- elasticsearch.adv_elasticsearch
- elasticfleet.soc_elasticfleet
@@ -161,7 +180,6 @@ base:
- manager.adv_manager
- soc.soc_soc
- soc.adv_soc
- soc.license
- kibana.soc_kibana
- kibana.adv_kibana
- strelka.soc_strelka
@@ -215,18 +233,21 @@ base:
- logstash.nodes
- logstash.soc_logstash
- logstash.adv_logstash
- elasticsearch.nodes
- elasticsearch.soc_elasticsearch
- elasticsearch.adv_elasticsearch
{% if salt['file.file_exists']('/opt/so/saltstack/local/pillar/elasticsearch/auth.sls') %}
- elasticsearch.auth
{% endif %}
- redis.nodes
- redis.soc_redis
- redis.adv_redis
- minions.{{ grains.id }}
- minions.adv_{{ grains.id }}
- stig.soc_stig
- soc.license
- kafka.nodes
- kafka.soc_kafka
- kafka.adv_kafka
'*_receiver':
- logstash.nodes
@@ -241,10 +262,12 @@ base:
- minions.adv_{{ grains.id }}
- kafka.nodes
- kafka.soc_kafka
- kafka.adv_kafka
- soc.license
- stig.soc_stig
- elasticfleet.soc_elasticfleet
- elasticfleet.adv_elasticfleet
'*_import':
- node_data.ips
- secrets
- elasticsearch.index_templates
{% if salt['file.file_exists']('/opt/so/saltstack/local/pillar/elasticsearch/auth.sls') %}
@@ -254,6 +277,7 @@ base:
- kibana.secrets
{% endif %}
- kratos.soc_kratos
- kratos.adv_kratos
- elasticsearch.soc_elasticsearch
- elasticsearch.adv_elasticsearch
- elasticfleet.soc_elasticfleet
@@ -264,13 +288,12 @@ base:
- manager.adv_manager
- soc.soc_soc
- soc.adv_soc
- soc.license
- kibana.soc_kibana
- kibana.adv_kibana
- backup.soc_backup
- backup.adv_backup
- kratos.soc_kratos
- kratos.adv_kratos
- hydra.soc_hydra
- hydra.adv_hydra
- redis.soc_redis
- redis.adv_redis
- influxdb.soc_influxdb
@@ -289,6 +312,7 @@ base:
- minions.adv_{{ grains.id }}
'*_fleet':
- node_data.ips
- backup.soc_backup
- backup.adv_backup
- logstash.nodes
@@ -298,7 +322,15 @@ base:
- elasticfleet.adv_elasticfleet
- minions.{{ grains.id }}
- minions.adv_{{ grains.id }}
- stig.soc_stig
'*_hypervisor':
- minions.{{ grains.id }}
- minions.adv_{{ grains.id }}
- stig.soc_stig
'*_desktop':
- minions.{{ grains.id }}
- minions.adv_{{ grains.id }}
- stig.soc_stig
+91
View File
@@ -0,0 +1,91 @@
#!/opt/saltstack/salt/bin/python3
# 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.
#
# Note: Per the Elastic License 2.0, the second limitation states:
#
# "You may not move, change, disable, or circumvent the license key functionality
# in the software, and you may not remove or obscure any functionality in the
# software that is protected by the license key."
"""
Salt execution module for hypervisor operations.
This module provides functions for managing hypervisor configurations,
including VM file management.
"""
import json
import logging
import os
log = logging.getLogger(__name__)
__virtualname__ = 'hypervisor'
def __virtual__():
"""
Only load this module if we're on a system that can manage hypervisors.
"""
return __virtualname__
def remove_vm_from_vms_file(vms_file_path, vm_hostname, vm_role):
"""
Remove a VM entry from the hypervisorVMs file.
Args:
vms_file_path (str): Path to the hypervisorVMs file
vm_hostname (str): Hostname of the VM to remove (without role suffix)
vm_role (str): Role of the VM
Returns:
dict: Result dictionary with success status and message
CLI Example:
salt '*' hypervisor.remove_vm_from_vms_file /opt/so/saltstack/local/salt/hypervisor/hosts/hypervisor1VMs node1 nsm
"""
try:
# Check if file exists
if not os.path.exists(vms_file_path):
msg = f"VMs file not found: {vms_file_path}"
log.error(msg)
return {'result': False, 'comment': msg}
# Read current VMs
with open(vms_file_path, 'r') as f:
content = f.read().strip()
vms = json.loads(content) if content else []
# Find and remove the VM entry
original_count = len(vms)
vms = [vm for vm in vms if not (vm.get('hostname') == vm_hostname and vm.get('role') == vm_role)]
if len(vms) < original_count:
# VM was found and removed, write back to file
with open(vms_file_path, 'w') as f:
json.dump(vms, f, indent=2)
# Set socore:socore ownership (939:939)
os.chown(vms_file_path, 939, 939)
msg = f"Removed VM {vm_hostname}_{vm_role} from {vms_file_path}"
log.info(msg)
return {'result': True, 'comment': msg}
else:
msg = f"VM {vm_hostname}_{vm_role} not found in {vms_file_path}"
log.warning(msg)
return {'result': False, 'comment': msg}
except json.JSONDecodeError as e:
msg = f"Failed to parse JSON in {vms_file_path}: {str(e)}"
log.error(msg)
return {'result': False, 'comment': msg}
except Exception as e:
msg = f"Failed to remove VM {vm_hostname}_{vm_role} from {vms_file_path}: {str(e)}"
log.error(msg)
return {'result': False, 'comment': msg}
+335
View File
@@ -0,0 +1,335 @@
#!py
# 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.
"""
Salt module for managing QCOW2 image configurations and VM hardware settings. This module provides functions
for modifying network configurations within QCOW2 images, adjusting virtual machine hardware settings, and
creating virtual storage volumes. It serves as a Salt interface to the so-qcow2-modify-network,
so-kvm-modify-hardware, and so-kvm-create-volume scripts.
The module offers three main capabilities:
1. Network Configuration: Modify network settings (DHCP/static IP) within QCOW2 images
2. Hardware Configuration: Adjust VM hardware settings (CPU, memory, PCI passthrough)
3. Volume Management: Create and attach virtual storage volumes for NSM data
This module is intended to work with Security Onion's virtualization infrastructure and is typically
used in conjunction with salt-cloud for VM provisioning and management.
"""
import logging
import subprocess
import shlex
log = logging.getLogger(__name__)
__virtualname__ = 'qcow2'
def __virtual__():
return __virtualname__
def modify_network_config(image, interface, mode, vm_name, ip4=None, gw4=None, dns4=None, search4=None):
'''
Usage:
salt '*' qcow2.modify_network_config image=<path> interface=<iface> mode=<mode> vm_name=<name> [ip4=<addr>] [gw4=<addr>] [dns4=<servers>] [search4=<domain>]
Options:
image
Path to the QCOW2 image file that will be modified
interface
Network interface name to configure (e.g., 'enp1s0')
mode
Network configuration mode, either 'dhcp4' or 'static4'
vm_name
Full name of the VM (hostname_role)
ip4
IPv4 address with CIDR notation (e.g., '192.168.1.10/24')
Required when mode='static4'
gw4
IPv4 gateway address (e.g., '192.168.1.1')
Required when mode='static4'
dns4
Comma-separated list of IPv4 DNS servers (e.g., '8.8.8.8,8.8.4.4')
Optional for both DHCP and static configurations
search4
DNS search domain for IPv4 (e.g., 'example.local')
Optional for both DHCP and static configurations
Examples:
1. **Configure DHCP:**
```bash
salt '*' qcow2.modify_network_config image='/nsm/libvirt/images/sool9/sool9.qcow2' interface='enp1s0' mode='dhcp4'
```
This configures enp1s0 to use DHCP for IP assignment
2. **Configure Static IP:**
```bash
salt '*' qcow2.modify_network_config image='/nsm/libvirt/images/sool9/sool9.qcow2' interface='enp1s0' mode='static4' ip4='192.168.1.10/24' gw4='192.168.1.1' dns4='192.168.1.1,8.8.8.8' search4='example.local'
```
This sets a static IP configuration with DNS servers and search domain
Notes:
- The QCOW2 image must be accessible and writable by the salt minion
- The image should not be in use by a running VM when modified
- Network changes take effect on next VM boot
- Requires so-qcow2-modify-network script to be installed
Description:
This function modifies network configuration within a QCOW2 image file by executing
the so-qcow2-modify-network script. It supports both DHCP and static IPv4 configuration.
The script mounts the image, modifies the network configuration files, and unmounts
safely. All operations are logged for troubleshooting purposes.
Exit Codes:
0: Success
1: Invalid parameters or configuration
2: Image access or mounting error
3: Network configuration error
4: System command error
255: Unexpected error
Logging:
- All operations are logged to the salt minion log
- Log entries are prefixed with 'qcow2 module:'
- Error conditions include detailed error messages and stack traces
- Success/failure status is logged for verification
'''
cmd = ['/usr/sbin/so-qcow2-modify-network', '-I', image, '-i', interface, '-n', vm_name]
if mode.lower() == 'dhcp4':
cmd.append('--dhcp4')
elif mode.lower() == 'static4':
cmd.append('--static4')
if not ip4 or not gw4:
raise ValueError('Both ip4 and gw4 are required for static configuration.')
cmd.extend(['--ip4', ip4, '--gw4', gw4])
if dns4:
cmd.extend(['--dns4', dns4])
if search4:
cmd.extend(['--search4', search4])
else:
raise ValueError("Invalid mode '{}'. Expected 'dhcp4' or 'static4'.".format(mode))
log.info('qcow2 module: Executing command: {}'.format(' '.join(shlex.quote(arg) for arg in cmd)))
try:
result = subprocess.run(cmd, capture_output=True, text=True, check=False)
ret = {
'retcode': result.returncode,
'stdout': result.stdout,
'stderr': result.stderr
}
if result.returncode != 0:
log.error('qcow2 module: Script execution failed with return code {}: {}'.format(result.returncode, result.stderr))
else:
log.info('qcow2 module: Script executed successfully.')
return ret
except Exception as e:
log.error('qcow2 module: An error occurred while executing the script: {}'.format(e))
raise
def modify_hardware_config(vm_name, cpu=None, memory=None, pci=None, start=False):
'''
Usage:
salt '*' qcow2.modify_hardware_config vm_name=<name> [cpu=<count>] [memory=<size>] [pci=<id>] [pci=<id>] [start=<bool>]
Options:
vm_name
Name of the virtual machine to modify
cpu
Number of virtual CPUs to assign (positive integer)
Optional - VM's current CPU count retained if not specified
memory
Amount of memory to assign in MiB (positive integer)
Optional - VM's current memory size retained if not specified
pci
PCI hardware ID(s) to passthrough to the VM (e.g., '0000:c7:00.0')
Can be specified multiple times for multiple devices
Optional - no PCI passthrough if not specified
start
Boolean flag to start the VM after modification
Optional - defaults to False
Examples:
1. **Modify CPU and Memory:**
```bash
salt '*' qcow2.modify_hardware_config vm_name='sensor1' cpu=4 memory=8192
```
This assigns 4 CPUs and 8GB memory to the VM
2. **Enable PCI Passthrough:**
```bash
salt '*' qcow2.modify_hardware_config vm_name='sensor1' pci='0000:c7:00.0' pci='0000:c4:00.0' start=True
```
This configures PCI passthrough and starts the VM
3. **Complete Hardware Configuration:**
```bash
salt '*' qcow2.modify_hardware_config vm_name='sensor1' cpu=8 memory=16384 pci='0000:c7:00.0' start=True
```
This sets CPU, memory, PCI passthrough, and starts the VM
Notes:
- VM must be stopped before modification unless only the start flag is set
- Memory is specified in MiB (1024 = 1GB)
- PCI devices must be available and not in use by the host
- CPU count should align with host capabilities
- Requires so-kvm-modify-hardware script to be installed
Description:
This function modifies the hardware configuration of a KVM virtual machine using
the so-kvm-modify-hardware script. It can adjust CPU count, memory allocation,
and PCI device passthrough. Changes are applied to the VM's libvirt configuration.
The VM can optionally be started after modifications are complete.
Exit Codes:
0: Success
1: Invalid parameters
2: VM state error (running when should be stopped)
3: Hardware configuration error
4: System command error
255: Unexpected error
Logging:
- All operations are logged to the salt minion log
- Log entries are prefixed with 'qcow2 module:'
- Hardware configuration changes are logged
- Errors include detailed messages and stack traces
- Final status of modification is logged
'''
cmd = ['/usr/sbin/so-kvm-modify-hardware', '-v', vm_name]
if cpu is not None:
if isinstance(cpu, int) and cpu > 0:
cmd.extend(['-c', str(cpu)])
else:
raise ValueError('cpu must be a positive integer.')
if memory is not None:
if isinstance(memory, int) and memory > 0:
cmd.extend(['-m', str(memory)])
else:
raise ValueError('memory must be a positive integer.')
if pci:
# Handle PCI IDs (can be a single device or comma-separated list)
if isinstance(pci, str):
devices = [dev.strip() for dev in pci.split(',') if dev.strip()]
elif isinstance(pci, list):
devices = pci
else:
devices = [pci]
# Add each device with its own -p flag
for device in devices:
cmd.extend(['-p', str(device)])
if start:
cmd.append('-s')
log.info('qcow2 module: Executing command: {}'.format(' '.join(shlex.quote(arg) for arg in cmd)))
try:
result = subprocess.run(cmd, capture_output=True, text=True, check=False)
ret = {
'retcode': result.returncode,
'stdout': result.stdout,
'stderr': result.stderr
}
if result.returncode != 0:
log.error('qcow2 module: Script execution failed with return code {}: {}'.format(result.returncode, result.stderr))
else:
log.info('qcow2 module: Script executed successfully.')
return ret
except Exception as e:
log.error('qcow2 module: An error occurred while executing the script: {}'.format(e))
raise
def create_volume_config(vm_name, size_gb, start=False):
'''
Usage:
salt '*' qcow2.create_volume_config vm_name=<name> size_gb=<size> [start=<bool>]
Options:
vm_name
Name of the virtual machine to attach the volume to
size_gb
Volume size in GB (positive integer)
This determines the capacity of the virtual storage volume
start
Boolean flag to start the VM after volume creation
Optional - defaults to False
Examples:
1. **Create 500GB Volume:**
```bash
salt '*' qcow2.create_volume_config vm_name='sensor1_sensor' size_gb=500
```
This creates a 500GB virtual volume for NSM storage
2. **Create 1TB Volume and Start VM:**
```bash
salt '*' qcow2.create_volume_config vm_name='sensor1_sensor' size_gb=1000 start=True
```
This creates a 1TB volume and starts the VM after attachment
Notes:
- VM must be stopped before volume creation
- Volume is created as a qcow2 image and attached to the VM
- This is an alternative to disk passthrough via modify_hardware_config
- Volume is automatically attached to the VM's libvirt configuration
- Requires so-kvm-create-volume script to be installed
- Volume files are stored in the hypervisor's VM storage directory
Description:
This function creates and attaches a virtual storage volume to a KVM virtual machine
using the so-kvm-create-volume script. It creates a qcow2 disk image of the specified
size and attaches it to the VM for NSM (Network Security Monitoring) storage purposes.
This provides an alternative to physical disk passthrough, allowing flexible storage
allocation without requiring dedicated hardware. The VM can optionally be started
after the volume is successfully created and attached.
Exit Codes:
0: Success
1: Invalid parameters
2: VM state error (running when should be stopped)
3: Volume creation error
4: System command error
255: Unexpected error
Logging:
- All operations are logged to the salt minion log
- Log entries are prefixed with 'qcow2 module:'
- Volume creation and attachment operations are logged
- Errors include detailed messages and stack traces
- Final status of volume creation is logged
'''
# Validate size_gb parameter
if not isinstance(size_gb, int) or size_gb <= 0:
raise ValueError('size_gb must be a positive integer.')
cmd = ['/usr/sbin/so-kvm-create-volume', '-v', vm_name, '-s', str(size_gb)]
if start:
cmd.append('-S')
log.info('qcow2 module: Executing command: {}'.format(' '.join(shlex.quote(arg) for arg in cmd)))
try:
result = subprocess.run(cmd, capture_output=True, text=True, check=False)
ret = {
'retcode': result.returncode,
'stdout': result.stdout,
'stderr': result.stderr
}
if result.returncode != 0:
log.error('qcow2 module: Script execution failed with return code {}: {}'.format(result.returncode, result.stderr))
else:
log.info('qcow2 module: Script executed successfully.')
return ret
except Exception as e:
log.error('qcow2 module: An error occurred while executing the script: {}'.format(e))
raise
File diff suppressed because it is too large Load Diff
+167 -244
View File
@@ -1,257 +1,180 @@
# 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.
{# 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. #}
{% set ISAIRGAP = salt['pillar.get']('global:airgap', False) %}
{% import_yaml 'salt/minion.defaults.yaml' as saltversion %}
{% set saltversion = saltversion.salt.minion.version %}
{# this is the list we are returning from this map file, it gets built below #}
{% set allowed_states= [] %}
{# Define common state groups to reduce redundancy #}
{% set base_states = [
'common',
'patch.os.schedule',
'motd',
'salt.minion-check',
'sensoroni',
'salt.lasthighstate',
'salt.minion'
] %}
{% set ssl_states = [
'ssl',
'telegraf',
'firewall',
'schedule',
'docker_clean'
] %}
{% set manager_states = [
'salt.master',
'ca',
'registry',
'manager',
'nginx',
'influxdb',
'soc',
'kratos',
'hydra',
'elasticfleet',
'elastic-fleet-package-registry',
'idstools',
'suricata.manager',
'utility'
] %}
{% set sensor_states = [
'pcap',
'suricata',
'healthcheck',
'tcpreplay',
'zeek',
'strelka'
] %}
{% set kafka_states = [
'kafka'
] %}
{% set stig_states = [
'stig'
] %}
{% set elastic_stack_states = [
'elasticsearch',
'elasticsearch.auth',
'kibana',
'kibana.secrets',
'elastalert',
'logstash',
'redis'
] %}
{# Initialize the allowed_states list #}
{% set allowed_states = [] %}
{% if grains.saltversion | string == saltversion | string %}
{# Map role-specific states #}
{% set role_states = {
'so-eval': (
ssl_states +
manager_states +
sensor_states +
elastic_stack_states | reject('equalto', 'logstash') | list
),
'so-heavynode': (
ssl_states +
sensor_states +
['elasticagent', 'elasticsearch', 'logstash', 'redis', 'nginx']
),
'so-idh': (
ssl_states +
['idh']
),
'so-import': (
ssl_states +
manager_states +
sensor_states | reject('equalto', 'strelka') | reject('equalto', 'healthcheck') | list +
['elasticsearch', 'elasticsearch.auth', 'kibana', 'kibana.secrets', 'strelka.manager']
),
'so-manager': (
ssl_states +
manager_states +
['salt.cloud', 'libvirt.packages', 'libvirt.ssh.users', 'strelka.manager'] +
stig_states +
kafka_states +
elastic_stack_states
),
'so-managerhype': (
ssl_states +
manager_states +
['salt.cloud', 'strelka.manager', 'hypervisor', 'libvirt'] +
stig_states +
kafka_states +
elastic_stack_states
),
'so-managersearch': (
ssl_states +
manager_states +
['salt.cloud', 'libvirt.packages', 'libvirt.ssh.users', 'strelka.manager'] +
stig_states +
kafka_states +
elastic_stack_states
),
'so-searchnode': (
ssl_states +
['kafka.ca', 'kafka.ssl', 'elasticsearch', 'logstash', 'nginx'] +
stig_states
),
'so-standalone': (
ssl_states +
manager_states +
['salt.cloud', 'libvirt.packages', 'libvirt.ssh.users'] +
sensor_states +
stig_states +
kafka_states +
elastic_stack_states
),
'so-sensor': (
ssl_states +
sensor_states +
['nginx'] +
stig_states
),
'so-fleet': (
ssl_states +
stig_states +
['logstash', 'nginx', 'healthcheck', 'elasticfleet']
),
'so-receiver': (
ssl_states +
kafka_states +
stig_states +
['logstash', 'redis']
),
'so-hypervisor': (
ssl_states +
stig_states +
['hypervisor', 'libvirt']
),
'so-desktop': (
['ssl', 'docker_clean', 'telegraf'] +
stig_states
)
} %}
{% set allowed_states= salt['grains.filter_by']({
'so-eval': [
'salt.master',
'ca',
'ssl',
'registry',
'manager',
'nginx',
'telegraf',
'influxdb',
'soc',
'kratos',
'elasticfleet',
'elastic-fleet-package-registry',
'firewall',
'idstools',
'suricata.manager',
'healthcheck',
'pcap',
'suricata',
'utility',
'schedule',
'tcpreplay',
'docker_clean'
],
'so-heavynode': [
'ssl',
'nginx',
'telegraf',
'firewall',
'pcap',
'suricata',
'healthcheck',
'elasticagent',
'schedule',
'tcpreplay',
'docker_clean'
],
'so-idh': [
'ssl',
'telegraf',
'firewall',
'idh',
'schedule',
'docker_clean'
],
'so-import': [
'salt.master',
'ca',
'ssl',
'registry',
'manager',
'nginx',
'strelka.manager',
'soc',
'kratos',
'influxdb',
'telegraf',
'firewall',
'idstools',
'suricata.manager',
'pcap',
'utility',
'suricata',
'zeek',
'schedule',
'tcpreplay',
'docker_clean',
'elasticfleet',
'elastic-fleet-package-registry'
],
'so-manager': [
'salt.master',
'ca',
'ssl',
'registry',
'manager',
'nginx',
'telegraf',
'influxdb',
'strelka.manager',
'soc',
'kratos',
'elasticfleet',
'elastic-fleet-package-registry',
'firewall',
'idstools',
'suricata.manager',
'utility',
'schedule',
'docker_clean',
'stig',
'kafka'
],
'so-managersearch': [
'salt.master',
'ca',
'ssl',
'registry',
'nginx',
'telegraf',
'influxdb',
'strelka.manager',
'soc',
'kratos',
'elastic-fleet-package-registry',
'elasticfleet',
'firewall',
'manager',
'idstools',
'suricata.manager',
'utility',
'schedule',
'docker_clean',
'stig',
'kafka'
],
'so-searchnode': [
'ssl',
'nginx',
'telegraf',
'firewall',
'schedule',
'docker_clean',
'stig'
],
'so-standalone': [
'salt.master',
'ca',
'ssl',
'registry',
'manager',
'nginx',
'telegraf',
'influxdb',
'soc',
'kratos',
'elastic-fleet-package-registry',
'elasticfleet',
'firewall',
'idstools',
'suricata.manager',
'pcap',
'suricata',
'healthcheck',
'utility',
'schedule',
'tcpreplay',
'docker_clean',
'stig',
'kafka'
],
'so-sensor': [
'ssl',
'telegraf',
'firewall',
'nginx',
'pcap',
'suricata',
'healthcheck',
'schedule',
'tcpreplay',
'docker_clean',
'stig'
],
'so-fleet': [
'ssl',
'telegraf',
'firewall',
'logstash',
'nginx',
'healthcheck',
'schedule',
'elasticfleet',
'docker_clean'
],
'so-receiver': [
'ssl',
'telegraf',
'firewall',
'schedule',
'docker_clean',
'kafka',
'elasticsearch.ca',
'stig'
],
'so-desktop': [
'ssl',
'docker_clean',
'telegraf'
],
}, grain='role') %}
{%- if grains.role in ['so-sensor', 'so-eval', 'so-standalone', 'so-heavynode'] %}
{% do allowed_states.append('zeek') %}
{%- endif %}
{% if grains.role in ['so-sensor', 'so-eval', 'so-standalone', 'so-heavynode'] %}
{% do allowed_states.append('strelka') %}
{% endif %}
{% if grains.role in ['so-eval', 'so-manager', 'so-standalone', 'so-searchnode', 'so-managersearch', 'so-heavynode', 'so-import'] %}
{% do allowed_states.append('elasticsearch') %}
{% endif %}
{% if grains.role in ['so-eval', 'so-manager', 'so-standalone', 'so-managersearch', 'so-import'] %}
{% do allowed_states.append('elasticsearch.auth') %}
{% endif %}
{% if grains.role in ['so-eval', 'so-manager', 'so-standalone', 'so-managersearch', 'so-import'] %}
{% do allowed_states.append('kibana') %}
{% do allowed_states.append('kibana.secrets') %}
{% endif %}
{% if grains.role in ['so-eval', 'so-manager', 'so-standalone', 'so-managersearch'] %}
{% do allowed_states.append('elastalert') %}
{% endif %}
{% if grains.role in ['so-manager', 'so-standalone', 'so-searchnode', 'so-managersearch', 'so-heavynode', 'so-receiver'] %}
{% do allowed_states.append('logstash') %}
{% endif %}
{% if grains.role in ['so-manager', 'so-standalone', 'so-managersearch', 'so-heavynode', 'so-receiver', 'so-eval'] %}
{% do allowed_states.append('redis') %}
{% endif %}
{# all nodes on the right salt version can run the following states #}
{% do allowed_states.append('common') %}
{% do allowed_states.append('patch.os.schedule') %}
{% do allowed_states.append('motd') %}
{% do allowed_states.append('salt.minion-check') %}
{% do allowed_states.append('sensoroni') %}
{% do allowed_states.append('salt.lasthighstate') %}
{# Get states for the current role #}
{% if grains.role in role_states %}
{% set allowed_states = role_states[grains.role] %}
{% endif %}
{# Add base states that apply to all roles #}
{% for state in base_states %}
{% do allowed_states.append(state) %}
{% endfor %}
{% endif %}
{# Add airgap state if needed #}
{% if ISAIRGAP %}
{% do allowed_states.append('airgap') %}
{% do allowed_states.append('airgap') %}
{% endif %}
{# all nodes can always run salt.minion state #}
{% do allowed_states.append('salt.minion') %}
+1
View File
@@ -4,4 +4,5 @@ backup:
- /etc/pki
- /etc/salt
- /nsm/kratos
- /nsm/hydra
destination: "/nsm/backup"
@@ -11,6 +11,10 @@ TODAY=$(date '+%Y_%m_%d')
BACKUPDIR={{ DESTINATION }}
BACKUPFILE="$BACKUPDIR/so-config-backup-$TODAY.tar"
MAXBACKUPS=7
EXCLUSIONS=(
"--exclude=/opt/so/saltstack/local/salt/elasticfleet/files/so_agent-installers"
)
# Create backup dir if it does not exist
mkdir -p /nsm/backup
@@ -23,7 +27,7 @@ if [ ! -f $BACKUPFILE ]; then
# Loop through all paths defined in global.sls, and append them to backup file
{%- for LOCATION in BACKUPLOCATIONS %}
tar -rf $BACKUPFILE {{ LOCATION }}
tar -rf $BACKUPFILE "${EXCLUSIONS[@]}" {{ LOCATION }}
{%- endfor %}
fi
+21
View File
@@ -0,0 +1,21 @@
# 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.
{% set nsm_exists = salt['file.directory_exists']('/nsm') %}
{% if nsm_exists %}
{% set nsm_total = salt['cmd.shell']('df -BG /nsm | tail -1 | awk \'{print $2}\'') %}
nsm_total:
grains.present:
- name: nsm_total
- value: {{ nsm_total }}
{% else %}
nsm_missing:
test.succeed_without_changes:
- name: /nsm does not exist, skipping grain assignment
{% endif %}
+28 -1
View File
@@ -4,6 +4,7 @@
{% from 'vars/globals.map.jinja' import GLOBALS %}
include:
- common.grains
- common.packages
{% if GLOBALS.role in GLOBALS.manager_roles %}
- manager.elasticsearch # needed for elastic_curl_config state
@@ -14,6 +15,11 @@ net.core.wmem_default:
sysctl.present:
- value: 26214400
# Users are not a fan of console messages
kernel.printk:
sysctl.present:
- value: "3 4 1 3"
# Remove variables.txt from /tmp - This is temp
rmvariablesfile:
file.absent:
@@ -101,7 +107,7 @@ Etc/UTC:
timezone.system
# Sync curl configuration for Elasticsearch authentication
{% if GLOBALS.role in ['so-eval', 'so-heavynode', 'so-import', 'so-manager', 'so-managersearch', 'so-searchnode', 'so-standalone'] %}
{% if GLOBALS.is_manager or GLOBALS.role in ['so-heavynode', 'so-searchnode'] %}
elastic_curl_config:
file.managed:
- name: /opt/so/conf/elasticsearch/curl.config
@@ -123,6 +129,11 @@ common_sbin:
- user: 939
- group: 939
- file_mode: 755
- show_changes: False
{% if GLOBALS.role == 'so-heavynode' %}
- exclude_pat:
- so-pcap-import
{% endif %}
common_sbin_jinja:
file.recurse:
@@ -132,6 +143,21 @@ common_sbin_jinja:
- group: 939
- file_mode: 755
- template: jinja
- show_changes: False
{% if GLOBALS.role == 'so-heavynode' %}
- exclude_pat:
- so-import-pcap
{% endif %}
{% if GLOBALS.role == 'so-heavynode' %}
remove_so-pcap-import_heavynode:
file.absent:
- name: /usr/sbin/so-pcap-import
remove_so-import-pcap_heavynode:
file.absent:
- name: /usr/sbin/so-import-pcap
{% endif %}
{% if not GLOBALS.is_manager%}
# prior to 2.4.50 these scripts were in common/tools/sbin on the manager because of soup and distributed to non managers
@@ -177,6 +203,7 @@ sostatus_log:
file.managed:
- name: /opt/so/log/sostatus/status.log
- mode: 644
- replace: False
# Install sostatus check cron. This is used to populate Grid.
so-status_check_cron:
+6 -4
View File
@@ -1,6 +1,6 @@
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% if GLOBALS.os_family == 'Debian' %}
# we cannot import GLOBALS from vars/globals.map.jinja in this state since it is called in setup.virt.init
# since it is early in setup of a new VM, the pillars imported in GLOBALS are not yet defined
{% if grains.os_family == 'Debian' %}
commonpkgs:
pkg.installed:
- skip_suggestions: True
@@ -27,6 +27,7 @@ commonpkgs:
- vim
- tar
- unzip
- bc
{% if grains.oscodename != 'focal' %}
- python3-rich
{% endif %}
@@ -45,7 +46,7 @@ python-rich:
{% endif %}
{% endif %}
{% if GLOBALS.os_family == 'RedHat' %}
{% if grains.os_family == 'RedHat' %}
remove_mariadb:
pkg.removed:
@@ -56,6 +57,7 @@ commonpkgs:
- skip_suggestions: True
- pkgs:
- python3-dnf-plugin-versionlock
- bc
- curl
- device-mapper-persistent-data
- fuse
+25
View File
@@ -11,6 +11,7 @@
{% else %}
{% set UPDATE_DIR='/tmp/sogh/securityonion' %}
{% endif %}
{% set SOVERSION = salt['file.read']('/etc/soversion').strip() %}
remove_common_soup:
file.absent:
@@ -63,6 +64,12 @@ copy_so-repo-sync_manager_tools_sbin:
- source: {{UPDATE_DIR}}/salt/manager/tools/sbin/so-repo-sync
- preserve: True
copy_bootstrap-salt_manager_tools_sbin:
file.copy:
- name: /opt/so/saltstack/default/salt/salt/scripts/bootstrap-salt.sh
- source: {{UPDATE_DIR}}/salt/salt/scripts/bootstrap-salt.sh
- preserve: True
# This section is used to put the new script in place so that it can be called during soup.
# It is faster than calling the states that normally manage them to put them in place.
copy_so-common_sbin:
@@ -107,6 +114,24 @@ copy_so-repo-sync_sbin:
- force: True
- preserve: True
copy_bootstrap-salt_sbin:
file.copy:
- name: /usr/sbin/bootstrap-salt.sh
- source: {{UPDATE_DIR}}/salt/salt/scripts/bootstrap-salt.sh
- force: True
- preserve: True
{# this is added in 2.4.120 to remove salt repo files pointing to saltproject.io to accomodate the move to broadcom and new bootstrap-salt script #}
{% if salt['pkg.version_cmp'](SOVERSION, '2.4.120') == -1 %}
{% set saltrepofile = '/etc/yum.repos.d/salt.repo' %}
{% if grains.os_family == 'Debian' %}
{% set saltrepofile = '/etc/apt/sources.list.d/salt.list' %}
{% endif %}
remove_saltproject_io_repo_manager:
file.absent:
- name: {{ saltrepofile }}
{% endif %}
{% else %}
fix_23_soup_sbin:
cmd.run:
+78 -15
View File
@@ -8,12 +8,6 @@
# Elastic agent is not managed by salt. Because of this we must store this base information in a
# script that accompanies the soup system. Since so-common is one of those special soup files,
# and since this same logic is required during installation, it's included in this file.
ELASTIC_AGENT_TARBALL_VERSION="8.10.4"
ELASTIC_AGENT_URL="https://repo.securityonion.net/file/so-repo/prod/2.4/elasticagent/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.tar.gz"
ELASTIC_AGENT_MD5_URL="https://repo.securityonion.net/file/so-repo/prod/2.4/elasticagent/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.md5"
ELASTIC_AGENT_FILE="/nsm/elastic-fleet/artifacts/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.tar.gz"
ELASTIC_AGENT_MD5="/nsm/elastic-fleet/artifacts/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.md5"
ELASTIC_AGENT_EXPANSION_DIR=/nsm/elastic-fleet/artifacts/beats/elastic-agent
DEFAULT_SALT_DIR=/opt/so/saltstack/default
DOC_BASE_URL="https://docs.securityonion.net/en/2.4"
@@ -105,6 +99,17 @@ add_interface_bond0() {
fi
}
airgap_playbooks() {
SRC_DIR=$1
# Copy playbooks if using airgap
mkdir -p /nsm/airgap-resources
# Purge old airgap playbooks to ensure SO only uses the latest released playbooks
rm -fr /nsm/airgap-resources/playbooks
tar xf $SRC_DIR/airgap-resources/playbooks.tgz -C /nsm/airgap-resources/
chown -R socore:socore /nsm/airgap-resources/playbooks
git config --global --add safe.directory /nsm/airgap-resources/playbooks
}
check_container() {
docker ps | grep "$1:" > /dev/null 2>&1
return $?
@@ -174,6 +179,46 @@ check_salt_minion_status() {
return $status
}
# Compare es versions and return the highest version
compare_es_versions() {
# Save the original IFS
local OLD_IFS="$IFS"
IFS=.
local i ver1=($1) ver2=($2)
# Restore the original IFS
IFS="$OLD_IFS"
# Determine the maximum length between the two version arrays
local max_len=${#ver1[@]}
if [[ ${#ver2[@]} -gt $max_len ]]; then
max_len=${#ver2[@]}
fi
# Compare each segment of the versions
for ((i=0; i<max_len; i++)); do
# If a segment in ver1 or ver2 is missing, set it to 0
if [[ -z ${ver1[i]} ]]; then
ver1[i]=0
fi
if [[ -z ${ver2[i]} ]]; then
ver2[i]=0
fi
if ((10#${ver1[i]} > 10#${ver2[i]})); then
echo "$1"
return 0
fi
if ((10#${ver1[i]} < 10#${ver2[i]})); then
echo "$2"
return 0
fi
done
echo "$1" # If versions are equal, return either
return 0
}
copy_new_files() {
# Copy new files over to the salt dir
cd $UPDATE_DIR
@@ -192,7 +237,7 @@ create_local_directories() {
for d in $(find $PILLARSALTDIR/$i -type d); do
suffixdir=${d//$PILLARSALTDIR/}
if [ ! -d "$local_salt_dir/$suffixdir" ]; then
mkdir -pv $local_salt_dir$suffixdir
mkdir -p $local_salt_dir$suffixdir
fi
done
chown -R socore:socore $local_salt_dir/$i
@@ -263,19 +308,36 @@ fail() {
exit 1
}
get_random_value() {
length=${1:-20}
head -c 5000 /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w $length | head -n 1
}
get_agent_count() {
if [ -f /opt/so/log/agents/agentstatus.log ]; then
AGENTCOUNT=$(cat /opt/so/log/agents/agentstatus.log | grep -wF active | awk '{print $2}')
AGENTCOUNT=$(cat /opt/so/log/agents/agentstatus.log | grep -wF active | awk '{print $2}' | sed 's/,//')
[[ -z "$AGENTCOUNT" ]] && AGENTCOUNT="0"
else
AGENTCOUNT=0
fi
}
get_elastic_agent_vars() {
local path="${1:-/opt/so/saltstack/default}"
local defaultsfile="${path}/salt/elasticsearch/defaults.yaml"
if [ -f "$defaultsfile" ]; then
ELASTIC_AGENT_TARBALL_VERSION=$(egrep " +version: " $defaultsfile | awk -F: '{print $2}' | tr -d '[:space:]')
ELASTIC_AGENT_URL="https://repo.securityonion.net/file/so-repo/prod/2.4/elasticagent/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.tar.gz"
ELASTIC_AGENT_MD5_URL="https://repo.securityonion.net/file/so-repo/prod/2.4/elasticagent/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.md5"
ELASTIC_AGENT_FILE="/nsm/elastic-fleet/artifacts/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.tar.gz"
ELASTIC_AGENT_MD5="/nsm/elastic-fleet/artifacts/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.md5"
ELASTIC_AGENT_EXPANSION_DIR=/nsm/elastic-fleet/artifacts/beats/elastic-agent
else
fail "Could not find salt/elasticsearch/defaults.yaml"
fi
}
get_random_value() {
length=${1:-20}
head -c 5000 /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w $length | head -n 1
}
gpg_rpm_import() {
if [[ $is_oracle ]]; then
if [[ "$WHATWOULDYOUSAYYAHDOHERE" == "setup" ]]; then
@@ -379,8 +441,7 @@ lookup_grain() {
lookup_role() {
id=$(lookup_grain id)
pieces=($(echo $id | tr '_' ' '))
echo ${pieces[1]}
echo "${id##*_}"
}
is_feature_enabled() {
@@ -627,6 +688,8 @@ has_uppercase() {
}
update_elastic_agent() {
local path="${1:-/opt/so/saltstack/default}"
get_elastic_agent_vars "$path"
echo "Checking if Elastic Agent update is necessary..."
download_and_verify "$ELASTIC_AGENT_URL" "$ELASTIC_AGENT_MD5_URL" "$ELASTIC_AGENT_FILE" "$ELASTIC_AGENT_MD5" "$ELASTIC_AGENT_EXPANSION_DIR"
}
@@ -45,7 +45,7 @@ def check_for_fps():
result = subprocess.run([feat_full + '-mode-setup', '--is-enabled'], stdout=subprocess.PIPE)
if result.returncode == 0:
fps = 1
except FileNotFoundError:
except:
fn = '/proc/sys/crypto/' + feat_full + '_enabled'
try:
with open(fn, 'r') as f:
+65 -52
View File
@@ -4,22 +4,16 @@
# 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.
import sys, argparse, re, docker
import sys, argparse, re, subprocess, json
from packaging.version import Version, InvalidVersion
from itertools import groupby, chain
def get_image_name(string) -> str:
return ':'.join(string.split(':')[:-1])
def get_so_image_basename(string) -> str:
return get_image_name(string).split('/so-')[-1]
def get_image_version(string) -> str:
ver = string.split(':')[-1]
if ver == 'latest':
@@ -35,56 +29,75 @@ def get_image_version(string) -> str:
return '999999.9.9'
return ver
def run_command(command):
process = subprocess.run(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
if process.returncode != 0:
print(f"Error executing command: {command}", file=sys.stderr)
print(f"Error message: {process.stderr}", file=sys.stderr)
exit(1)
return process.stdout
def main(quiet):
client = docker.from_env()
# Prune old/stopped containers
if not quiet: print('Pruning old containers')
client.containers.prune()
image_list = client.images.list(filters={ 'dangling': False })
# Map list of image objects to flattened list of tags (format: "name:version")
tag_list = list(chain.from_iterable(list(map(lambda x: x.attrs.get('RepoTags'), image_list))))
# Filter to only SO images (base name begins with "so-")
tag_list = list(filter(lambda x: re.match(r'^.*\/so-[^\/]*$', get_image_name(x)), tag_list))
# Group tags into lists by base name (sort by same projection first)
tag_list.sort(key=lambda x: get_so_image_basename(x))
grouped_tag_lists = [ list(it) for _, it in groupby(tag_list, lambda x: get_so_image_basename(x)) ]
no_prunable = True
for t_list in grouped_tag_lists:
try:
# Group tags by version, in case multiple images exist with the same version string
t_list.sort(key=lambda x: Version(get_image_version(x)), reverse=True)
grouped_t_list = [ list(it) for _,it in groupby(t_list, lambda x: get_image_version(x)) ]
# Keep the 2 most current version groups
if len(grouped_t_list) <= 2:
continue
else:
no_prunable = False
for group in grouped_t_list[2:]:
for tag in group:
if not quiet: print(f'Removing image {tag}')
# Prune old/stopped containers using docker CLI
if not quiet: print('Pruning old containers')
run_command('docker container prune -f')
# Get list of images using docker CLI
images_json = run_command('docker images --format "{{json .}}"')
# Parse the JSON output
image_list = []
for line in images_json.strip().split('\n'):
if line: # Skip empty lines
image_list.append(json.loads(line))
# Extract tags in the format "name:version"
tag_list = []
for img in image_list:
# Skip dangling images
if img.get('Repository') != "<none>" and img.get('Tag') != "<none>":
tag = f"{img.get('Repository')}:{img.get('Tag')}"
# Filter to only SO images (base name begins with "so-")
if re.match(r'^.*\/so-[^\/]*$', get_image_name(tag)):
tag_list.append(tag)
# Group tags into lists by base name (sort by same projection first)
tag_list.sort(key=lambda x: get_so_image_basename(x))
grouped_tag_lists = [list(it) for k, it in groupby(tag_list, lambda x: get_so_image_basename(x))]
no_prunable = True
for t_list in grouped_tag_lists:
try:
client.images.remove(tag, force=True)
except docker.errors.ClientError as e:
print(f'Could not remove image {tag}, continuing...')
except (docker.errors.APIError, InvalidVersion) as e:
print(f'so-{get_so_image_basename(t_list[0])}: {e}', file=sys.stderr)
exit(1)
# Group tags by version, in case multiple images exist with the same version string
t_list.sort(key=lambda x: Version(get_image_version(x)), reverse=True)
grouped_t_list = [list(it) for k, it in groupby(t_list, lambda x: get_image_version(x))]
# Keep the 2 most current version groups
if len(grouped_t_list) <= 2:
continue
else:
no_prunable = False
for group in grouped_t_list[2:]:
for tag in group:
if not quiet: print(f'Removing image {tag}')
try:
run_command(f'docker rmi -f {tag}')
except Exception as e:
print(f'Could not remove image {tag}, continuing...')
except (InvalidVersion) as e:
print(f'so-{get_so_image_basename(t_list[0])}: {e}', file=sys.stderr)
exit(1)
except Exception as e:
print('Unhandled exception occurred:')
print(f'so-{get_so_image_basename(t_list[0])}: {e}', file=sys.stderr)
exit(1)
if no_prunable and not quiet:
print('No Security Onion images to prune')
except Exception as e:
print('Unhandled exception occurred:')
print(f'so-{get_so_image_basename(t_list[0])}: {e}', file=sys.stderr)
exit(1)
if no_prunable and not quiet:
print('No Security Onion images to prune')
print(f"Error: {e}", file=sys.stderr)
exit(1)
if __name__ == "__main__":
main_parser = argparse.ArgumentParser(add_help=False)
+29 -2
View File
@@ -29,6 +29,7 @@ container_list() {
"so-influxdb"
"so-kibana"
"so-kratos"
"so-hydra"
"so-nginx"
"so-pcaptools"
"so-soc"
@@ -53,6 +54,7 @@ container_list() {
"so-kafka"
"so-kibana"
"so-kratos"
"so-hydra"
"so-logstash"
"so-nginx"
"so-pcaptools"
@@ -112,6 +114,10 @@ update_docker_containers() {
container_list
fi
# all the images using ELASTICSEARCHDEFAULTS.elasticsearch.version
# does not include so-elastic-fleet since that container uses so-elastic-agent image
local IMAGES_USING_ES_VERSION=("so-elasticsearch")
rm -rf $SIGNPATH >> "$LOG_FILE" 2>&1
mkdir -p $SIGNPATH >> "$LOG_FILE" 2>&1
@@ -139,15 +145,36 @@ update_docker_containers() {
$PROGRESS_CALLBACK $i
fi
if [[ " ${IMAGES_USING_ES_VERSION[*]} " =~ [[:space:]]${i}[[:space:]] ]]; then
# this is an es container so use version defined in elasticsearch defaults.yaml
local UPDATE_DIR='/tmp/sogh/securityonion'
if [ ! -d "$UPDATE_DIR" ]; then
UPDATE_DIR=/securityonion
fi
local v1=0
local v2=0
if [[ -f "$UPDATE_DIR/salt/elasticsearch/defaults.yaml" ]]; then
v1=$(egrep " +version: " "$UPDATE_DIR/salt/elasticsearch/defaults.yaml" | awk -F: '{print $2}' | tr -d '[:space:]')
fi
if [[ -f "$DEFAULT_SALT_DIR/salt/elasticsearch/defaults.yaml" ]]; then
v2=$(egrep " +version: " "$DEFAULT_SALT_DIR/salt/elasticsearch/defaults.yaml" | awk -F: '{print $2}' | tr -d '[:space:]')
fi
local highest_es_version=$(compare_es_versions "$v1" "$v2")
local image=$i:$highest_es_version$IMAGE_TAG_SUFFIX
local sig_url=https://sigs.securityonion.net/es-$highest_es_version/$image.sig
else
# this is not an es container so use the so version for the version
local image=$i:$VERSION$IMAGE_TAG_SUFFIX
local sig_url=https://sigs.securityonion.net/$VERSION/$image.sig
fi
# Pull down the trusted docker image
local image=$i:$VERSION$IMAGE_TAG_SUFFIX
run_check_net_err \
"docker pull $CONTAINER_REGISTRY/$IMAGEREPO/$image" \
"Could not pull $image, please ensure connectivity to $CONTAINER_REGISTRY" >> "$LOG_FILE" 2>&1
# Get signature
run_check_net_err \
"curl --retry 5 --retry-delay 60 -A '$CURLTYPE/$CURRENTVERSION/$OS/$(uname -r)' https://sigs.securityonion.net/$VERSION/$i:$VERSION$IMAGE_TAG_SUFFIX.sig --output $SIGNPATH/$image.sig" \
"curl --retry 5 --retry-delay 60 -A '$CURLTYPE/$CURRENTVERSION/$OS/$(uname -r)' $sig_url --output $SIGNPATH/$image.sig" \
"Could not pull signature file for $image, please ensure connectivity to https://sigs.securityonion.net " \
noretry >> "$LOG_FILE" 2>&1
# Dump our hash values
+29
View File
@@ -95,6 +95,8 @@ if [[ $EXCLUDE_STARTUP_ERRORS == 'Y' ]]; then
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|shutdown process" # server not yet ready (logstash waiting on elastic)
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|contain valid certificates" # server not yet ready (logstash waiting on elastic)
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|failedaction" # server not yet ready (logstash waiting on elastic)
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|block in start_workers" # server not yet ready (logstash waiting on elastic)
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|block in buffer_initialize" # server not yet ready (logstash waiting on elastic)
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|no route to host" # server not yet ready
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|not running" # server not yet ready
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|unavailable" # server not yet ready
@@ -123,6 +125,10 @@ if [[ $EXCLUDE_STARTUP_ERRORS == 'Y' ]]; then
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|tls handshake error" # Docker registry container when new node comes onlines
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|Unable to get license information" # Logstash trying to contact ES before it's ready
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|process already finished" # Telegraf script finished just as the auto kill timeout kicked in
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|No shard available" # Typical error when making a query before ES has finished loading all indices
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|responded with status-code 503" # telegraf getting 503 from ES during startup
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|process_cluster_event_timeout_exception" # logstash waiting for elasticsearch to start
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|not configured for GeoIP" # SO does not bundle the maxminddb with Zeek
fi
if [[ $EXCLUDE_FALSE_POSITIVE_ERRORS == 'Y' ]]; then
@@ -147,6 +153,13 @@ if [[ $EXCLUDE_FALSE_POSITIVE_ERRORS == 'Y' ]]; then
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|status 200" # false positive (request successful, contained error string in content)
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|app_layer.error" # false positive (suricata 7) in stats.log e.g. app_layer.error.imap.parser | Total | 0
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|is not an ip string literal" # false positive (Open Canary logging out blank IP addresses)
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|syncing rule" # false positive (rule sync log line includes rule name which can contain 'error')
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|request_unauthorized" # false positive (login failures to Hydra result in an 'error' log)
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|adding index lifecycle policy" # false positive (elasticsearch policy names contain 'error')
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|adding ingest pipeline" # false positive (elasticsearch ingest pipeline names contain 'error')
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|updating index template" # false positive (elasticsearch index or template names contain 'error')
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|updating component template" # false positive (elasticsearch index or template names contain 'error')
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|upgrading composable template" # false positive (elasticsearch composable template names contain 'error')
fi
if [[ $EXCLUDE_KNOWN_ERRORS == 'Y' ]]; then
@@ -170,6 +183,7 @@ if [[ $EXCLUDE_KNOWN_ERRORS == 'Y' ]]; then
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|cannot join on an empty table" # InfluxDB flux query, import nodes
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|exhausting result iterator" # InfluxDB flux query mismatched table results (temporary data issue)
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|failed to finish run" # InfluxDB rare error, self-recoverable
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|Unable to gather disk name" # InfluxDB known error, can't read disks because the container doesn't have them mounted
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|iteration"
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|communication packets"
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|use of closed"
@@ -205,6 +219,10 @@ if [[ $EXCLUDE_KNOWN_ERRORS == 'Y' ]]; then
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|detect-parse" # Suricata encountering a malformed rule
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|integrity check failed" # Detections: Exclude false positive due to automated testing
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|syncErrors" # Detections: Not an actual error
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|Initialized license manager" # SOC log: before fields.status was changed to fields.licenseStatus
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|from NIC checksum offloading" # zeek reporter.log
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|marked for removal" # docker container getting recycled
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|tcp 127.0.0.1:6791: bind: address already in use" # so-elastic-fleet agent restarting. Seen starting w/ 8.18.8 https://github.com/elastic/kibana/issues/201459
fi
RESULT=0
@@ -241,12 +259,23 @@ exclude_log "mysqld.log" # MySQL is removed as of 2.4.70, logs may still be on
exclude_log "soctopus.log" # Soctopus is removed as of 2.4.70, logs may still be on disk
exclude_log "agentstatus.log" # ignore this log since it tracks agents in error state
exclude_log "detections_runtime-status_yara.log" # temporarily ignore this log until Detections is more stable
exclude_log "/nsm/kafka/data/" # ignore Kafka data directory from log check.
# Include Zeek reporter.log to detect errors after running known good pcap(s) through sensor
echo "/nsm/zeek/spool/logger/reporter.log" >> /tmp/log_check_files
for log_file in $(cat /tmp/log_check_files); do
status "Checking log file $log_file"
tail -n $RECENT_LOG_LINES $log_file > /tmp/log_check
check_for_errors
done
# Look for OOM specific errors in /var/log/messages which can lead to odd behavior / test failures
if [[ -f /var/log/messages ]]; then
status "Checking log file /var/log/messages"
if journalctl --since "24 hours ago" | grep -iE 'out of memory|oom-kill'; then
RESULT=1
fi
fi
# Cleanup temp files
rm -f /tmp/log_check_files
@@ -0,0 +1,53 @@
#!/usr/bin/python3
# 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.
import logging
import os
import sys
def setup_logging(logger_name, log_file_path, log_level=logging.INFO, format_str='%(asctime)s - %(levelname)s - %(message)s'):
"""
Sets up logging for a script.
Parameters:
logger_name (str): The name of the logger.
log_file_path (str): The file path for the log file.
log_level (int): The logging level (e.g., logging.INFO, logging.DEBUG).
format_str (str): The format string for log messages.
Returns:
logging.Logger: Configured logger object.
"""
logger = logging.getLogger(logger_name)
logger.setLevel(log_level)
# Create directory for log file if it doesn't exist
log_file_dir = os.path.dirname(log_file_path)
if log_file_dir and not os.path.exists(log_file_dir):
try:
os.makedirs(log_file_dir)
except OSError as e:
print(f"Error creating directory {log_file_dir}: {e}")
sys.exit(1)
# Create handlers
c_handler = logging.StreamHandler()
f_handler = logging.FileHandler(log_file_path)
c_handler.setLevel(log_level)
f_handler.setLevel(log_level)
# Create formatter and add it to handlers
formatter = logging.Formatter(format_str)
c_handler.setFormatter(formatter)
f_handler.setFormatter(formatter)
# Add handlers to the logger if they are not already added
if not logger.hasHandlers():
logger.addHandler(c_handler)
logger.addHandler(f_handler)
return logger
+5 -5
View File
@@ -63,7 +63,7 @@ function status {
function pcapinfo() {
PCAP=$1
ARGS=$2
docker run --rm -v "$PCAP:/input.pcap" --entrypoint capinfos {{ MANAGER }}:5000/{{ IMAGEREPO }}/so-pcaptools:{{ VERSION }} /input.pcap $ARGS
docker run --rm -v "$PCAP:/input.pcap" --entrypoint capinfos {{ MANAGER }}:5000/{{ IMAGEREPO }}/so-pcaptools:{{ VERSION }} /input.pcap -ae $ARGS
}
function pcapfix() {
@@ -173,7 +173,7 @@ for PCAP in $INPUT_FILES; do
status "- assigning unique identifier to import: $HASH"
pcap_data=$(pcapinfo "${PCAP}")
if ! echo "$pcap_data" | grep -q "First packet time:" || echo "$pcap_data" |egrep -q "Last packet time: 1970-01-01|Last packet time: n/a"; then
if ! echo "$pcap_data" | grep -q "Earliest packet time:" || echo "$pcap_data" |egrep -q "Latest packet time: 1970-01-01|Latest packet time: n/a"; then
status "- this PCAP file is invalid; skipping"
INVALID_PCAPS_COUNT=$((INVALID_PCAPS_COUNT + 1))
else
@@ -205,8 +205,8 @@ for PCAP in $INPUT_FILES; do
HASHES="${HASHES} ${HASH}"
fi
START=$(pcapinfo "${PCAP}" -a |grep "First packet time:" | awk '{print $4}')
END=$(pcapinfo "${PCAP}" -e |grep "Last packet time:" | awk '{print $4}')
START=$(pcapinfo "${PCAP}" -a |grep "Earliest packet time:" | awk '{print $4}')
END=$(pcapinfo "${PCAP}" -e |grep "Latest packet time:" | awk '{print $4}')
status "- found PCAP data spanning dates $START through $END"
# compare $START to $START_OLDEST
@@ -248,7 +248,7 @@ fi
START_OLDEST_SLASH=$(echo $START_OLDEST | sed -e 's/-/%2F/g')
END_NEWEST_SLASH=$(echo $END_NEWEST | sed -e 's/-/%2F/g')
if [[ $VALID_PCAPS_COUNT -gt 0 ]] || [[ $SKIPPED_PCAPS_COUNT -gt 0 ]]; then
URL="https://{{ URLBASE }}/#/dashboards?q=$HASH_FILTERS%20%7C%20groupby%20event.module*%20%7C%20groupby%20-sankey%20event.module*%20event.dataset%20%7C%20groupby%20event.dataset%20%7C%20groupby%20source.ip%20%7C%20groupby%20destination.ip%20%7C%20groupby%20destination.port%20%7C%20groupby%20network.protocol%20%7C%20groupby%20rule.name%20rule.category%20event.severity_label%20%7C%20groupby%20dns.query.name%20%7C%20groupby%20file.mime_type%20%7C%20groupby%20http.virtual_host%20http.uri%20%7C%20groupby%20notice.note%20notice.message%20notice.sub_message%20%7C%20groupby%20ssl.server_name%20%7C%20groupby%20source_geo.organization_name%20source.geo.country_name%20%7C%20groupby%20destination_geo.organization_name%20destination.geo.country_name&t=${START_OLDEST_SLASH}%2000%3A00%3A00%20AM%20-%20${END_NEWEST_SLASH}%2000%3A00%3A00%20AM&z=UTC"
URL="https://{{ URLBASE }}/#/dashboards?q=$HASH_FILTERS%20%7C%20groupby%20event.module*%20%7C%20groupby%20-sankey%20event.module*%20event.dataset%20%7C%20groupby%20event.dataset%20%7C%20groupby%20source.ip%20%7C%20groupby%20destination.ip%20%7C%20groupby%20destination.port%20%7C%20groupby%20network.protocol%20%7C%20groupby%20rule.name%20rule.category%20event.severity_label%20%7C%20groupby%20dns.query.name%20%7C%20groupby%20file.mime_type%20%7C%20groupby%20http.virtual_host%20http.uri%20%7C%20groupby%20notice.note%20notice.message%20notice.sub_message%20%7C%20groupby%20ssl.server_name%20%7C%20groupby%20source.as.organization.name%20source.geo.country_name%20%7C%20groupby%20destination.as.organization.name%20destination.geo.country_name&t=${START_OLDEST_SLASH}%2000%3A00%3A00%20AM%20-%20${END_NEWEST_SLASH}%2000%3A00%3A00%20AM&z=UTC"
status "Import complete!"
status
+44 -23
View File
@@ -9,6 +9,9 @@
. /usr/sbin/so-common
software_raid=("SOSMN" "SOSMN-DE02" "SOSSNNV" "SOSSNNV-DE02" "SOS10k-DE02" "SOS10KNV" "SOS10KNV-DE02" "SOS10KNV-DE02" "SOS2000-DE02" "SOS-GOFAST-LT-DE02" "SOS-GOFAST-MD-DE02" "SOS-GOFAST-HV-DE02")
hardware_raid=("SOS1000" "SOS1000F" "SOSSN7200" "SOS5000" "SOS4000")
{%- if salt['grains.get']('sosmodel', '') %}
{%- set model = salt['grains.get']('sosmodel') %}
model={{ model }}
@@ -16,33 +19,42 @@ model={{ model }}
if [[ $model =~ ^(SO2AMI01|SO2AZI01|SO2GCI01)$ ]]; then
exit 0
fi
for i in "${software_raid[@]}"; do
if [[ "$model" == $i ]]; then
is_softwareraid=true
is_hwraid=false
break
fi
done
for i in "${hardware_raid[@]}"; do
if [[ "$model" == $i ]]; then
is_softwareraid=false
is_hwraid=true
break
fi
done
{%- else %}
echo "This is not an appliance"
exit 0
{%- endif %}
if [[ $model =~ ^(SOS10K|SOS500|SOS1000|SOS1000F|SOS4000|SOSSN7200|SOSSNNV|SOSMN)$ ]]; then
is_bossraid=true
fi
if [[ $model =~ ^(SOSSNNV|SOSMN)$ ]]; then
is_swraid=true
fi
if [[ $model =~ ^(SOS10K|SOS500|SOS1000|SOS1000F|SOS4000|SOSSN7200)$ ]]; then
is_hwraid=true
fi
check_nsm_raid() {
PERCCLI=$(/opt/raidtools/perccli/perccli64 /c0/v0 show|grep RAID|grep Optl)
MEGACTL=$(/opt/raidtools/megasasctl |grep optimal)
if [[ $APPLIANCE == '1' ]]; then
if [[ "$model" == "SOS500" || "$model" == "SOS500-DE02" ]]; then
#This doesn't have raid
HWRAID=0
else
if [[ -n $PERCCLI ]]; then
HWRAID=0
elif [[ -n $MEGACTL ]]; then
HWRAID=0
else
HWRAID=1
fi
fi
fi
}
@@ -50,17 +62,27 @@ check_nsm_raid() {
check_boss_raid() {
MVCLI=$(/usr/local/bin/mvcli info -o vd |grep status |grep functional)
MVTEST=$(/usr/local/bin/mvcli info -o vd | grep "No adapter")
BOSSNVMECLI=$(/usr/local/bin/mnv_cli info -o vd -i 0 | grep Functional)
# Check to see if this is a SM based system
if [[ -z $MVTEST ]]; then
if [[ -n $MVCLI ]]; then
# Is this NVMe Boss Raid?
if [[ "$model" =~ "-DE02" ]]; then
if [[ -n $BOSSNVMECLI ]]; then
BOSSRAID=0
else
BOSSRAID=1
fi
else
# This doesn't have boss raid so lets make it 0
BOSSRAID=0
# Check to see if this is a SM based system
if [[ -z $MVTEST ]]; then
if [[ -n $MVCLI ]]; then
BOSSRAID=0
else
BOSSRAID=1
fi
else
# This doesn't have boss raid so lets make it 0
BOSSRAID=0
fi
fi
}
@@ -79,14 +101,13 @@ SWRAID=0
BOSSRAID=0
HWRAID=0
if [[ $is_hwraid ]]; then
if [[ "$is_hwraid" == "true" ]]; then
check_nsm_raid
check_boss_raid
fi
if [[ $is_bossraid ]]; then
check_boss_raid
fi
if [[ $is_swraid ]]; then
if [[ "$is_softwareraid" == "true" ]]; then
check_software_raid
check_boss_raid
fi
sum=$(($SWRAID + $BOSSRAID + $HWRAID))
@@ -0,0 +1,132 @@
#!/opt/saltstack/salt/bin/python3
# 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.
#
# Note: Per the Elastic License 2.0, the second limitation states:
#
# "You may not move, change, disable, or circumvent the license key functionality
# in the software, and you may not remove or obscure any functionality in the
# software that is protected by the license key."
{% if 'vrt' in salt['pillar.get']('features', []) -%}
"""
Script for emitting VM deployment status events to the Salt event bus.
This script provides functionality to emit status events for VM deployment operations,
used by various Security Onion VM management tools.
Usage:
so-salt-emit-vm-deployment-status-event -v <vm_name> -H <hypervisor> -s <status>
Arguments:
-v, --vm-name Name of the VM (hostname_role)
-H, --hypervisor Name of the hypervisor
-s, --status Current deployment status of the VM
Example:
so-salt-emit-vm-deployment-status-event -v sensor1_sensor -H hypervisor1 -s "Creating"
"""
import sys
import argparse
import logging
import salt.client
from typing import Dict, Any
# Configure logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s'
)
log = logging.getLogger(__name__)
def emit_event(vm_name: str, hypervisor: str, status: str) -> bool:
"""
Emit a VM deployment status event to the salt event bus.
Args:
vm_name: Name of the VM (hostname_role)
hypervisor: Name of the hypervisor
status: Current deployment status of the VM
Returns:
bool: True if event was sent successfully, False otherwise
Raises:
ValueError: If status is not a valid deployment status
"""
log.info("Attempting to emit deployment event...")
try:
caller = salt.client.Caller()
event_data = {
'vm_name': vm_name,
'hypervisor': hypervisor,
'status': status
}
# Use consistent event tag structure
event_tag = f'soc/dyanno/hypervisor/{status.lower()}'
ret = caller.cmd(
'event.send',
event_tag,
event_data
)
if not ret:
log.error("Failed to emit VM deployment status event: %s", event_data)
return False
log.info("Successfully emitted VM deployment status event: %s", event_data)
return True
except Exception as e:
log.error("Error emitting VM deployment status event: %s", str(e))
return False
def parse_args():
"""Parse command line arguments."""
parser = argparse.ArgumentParser(
description='Emit VM deployment status events to the Salt event bus.'
)
parser.add_argument('-v', '--vm-name', required=True,
help='Name of the VM (hostname_role)')
parser.add_argument('-H', '--hypervisor', required=True,
help='Name of the hypervisor')
parser.add_argument('-s', '--status', required=True,
help='Current deployment status of the VM')
return parser.parse_args()
def main():
"""Main entry point for the script."""
try:
args = parse_args()
success = emit_event(
vm_name=args.vm_name,
hypervisor=args.hypervisor,
status=args.status
)
if not success:
sys.exit(1)
except Exception as e:
log.error("Failed to emit status event: %s", str(e))
sys.exit(1)
if __name__ == '__main__':
main()
{%- else -%}
echo "Hypervisor nodes are a feature supported only for customers with a valid license. \
Contact Security Onion Solutions, LLC via our website at https://securityonionsolutions.com \
for more information about purchasing a license to enable this feature."
{% endif -%}
+10
View File
@@ -51,6 +51,14 @@ docker:
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-hydra':
final_octet: 30
port_bindings:
- 0.0.0.0:4444:4444
- 0.0.0.0:4445:4445
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-logstash':
final_octet: 29
port_bindings:
@@ -74,6 +82,7 @@ docker:
- 443:443
- 8443:8443
- 7788:7788
- 7789:7789
custom_bind_mounts: []
extra_hosts: []
extra_env: []
@@ -191,6 +200,7 @@ docker:
final_octet: 88
port_bindings:
- 0.0.0.0:9092:9092
- 0.0.0.0:29092:29092
- 0.0.0.0:9093:9093
- 0.0.0.0:8778:8778
custom_bind_mounts: []
+17 -17
View File
@@ -20,41 +20,41 @@ dockergroup:
dockerheldpackages:
pkg.installed:
- pkgs:
- containerd.io: 1.6.33-1
- docker-ce: 5:26.1.4-1~debian.12~bookworm
- docker-ce-cli: 5:26.1.4-1~debian.12~bookworm
- docker-ce-rootless-extras: 5:26.1.4-1~debian.12~bookworm
- containerd.io: 1.7.21-1
- docker-ce: 5:27.2.0-1~debian.12~bookworm
- docker-ce-cli: 5:27.2.0-1~debian.12~bookworm
- docker-ce-rootless-extras: 5:27.2.0-1~debian.12~bookworm
- hold: True
- update_holds: True
{% elif grains.oscodename == 'jammy' %}
dockerheldpackages:
pkg.installed:
- pkgs:
- containerd.io: 1.6.33-1
- docker-ce: 5:26.1.4-1~ubuntu.22.04~jammy
- docker-ce-cli: 5:26.1.4-1~ubuntu.22.04~jammy
- docker-ce-rootless-extras: 5:26.1.4-1~ubuntu.22.04~jammy
- containerd.io: 1.7.21-1
- docker-ce: 5:27.2.0-1~ubuntu.22.04~jammy
- docker-ce-cli: 5:27.2.0-1~ubuntu.22.04~jammy
- docker-ce-rootless-extras: 5:27.2.0-1~ubuntu.22.04~jammy
- hold: True
- update_holds: True
{% else %}
dockerheldpackages:
pkg.installed:
- pkgs:
- containerd.io: 1.6.33-1
- docker-ce: 5:26.1.4-1~ubuntu.20.04~focal
- docker-ce-cli: 5:26.1.4-1~ubuntu.20.04~focal
- docker-ce-rootless-extras: 5:26.1.4-1~ubuntu.20.04~focal
- containerd.io: 1.7.21-1
- docker-ce: 5:27.2.0-1~ubuntu.20.04~focal
- docker-ce-cli: 5:27.2.0-1~ubuntu.20.04~focal
- docker-ce-rootless-extras: 5:27.2.0-1~ubuntu.20.04~focal
- hold: True
- update_holds: True
{% endif %}
{% endif %}
{% else %}
dockerheldpackages:
pkg.installed:
- pkgs:
- containerd.io: 1.6.33-3.1.el9
- docker-ce: 3:26.1.4-1.el9
- docker-ce-cli: 1:26.1.4-1.el9
- docker-ce-rootless-extras: 26.1.4-1.el9
- containerd.io: 1.7.21-3.1.el9
- docker-ce: 3:27.2.0-1.el9
- docker-ce-cli: 1:27.2.0-1.el9
- docker-ce-rootless-extras: 27.2.0-1.el9
- hold: True
- update_holds: True
{% endif %}
+1
View File
@@ -45,6 +45,7 @@ docker:
so-influxdb: *dockerOptions
so-kibana: *dockerOptions
so-kratos: *dockerOptions
so-hydra: *dockerOptions
so-logstash: *dockerOptions
so-nginx: *dockerOptions
so-nginx-fleet-node: *dockerOptions
+3 -3
View File
@@ -1,10 +1,10 @@
elastalert:
enabled:
description: You can enable or disable Elastalert.
description: Enables or disables the ElastAlert 2 process. This process is critical for ensuring alerts arrive in SOC, and for outbound notification delivery.
helpLink: elastalert.html
alerter_parameters:
title: Alerter Parameters
description: Optional configuration parameters for additional alerters that can be enabled for all Sigma rules. Filter for 'Alerter' in this Configuration screen to find the setting that allows these alerters to be enabled within the SOC ElastAlert module. Use YAML format for these parameters, and reference the ElastAlert 2 documentation, located at https://elastalert2.readthedocs.io, for available alerters and their required configuration parameters. A full update of the ElastAlert rule engine, via the Detections screen, is required in order to apply these changes. Requires a valid Security Onion license key.
title: Custom Configuration Parameters
description: Optional configuration parameters made available as defaults for all rules and alerters. Use YAML format for these parameters, and reference the ElastAlert 2 documentation, located at https://elastalert2.readthedocs.io, for available configuration parameters. Requires a valid Security Onion license key.
global: True
multiline: True
syntax: yaml
@@ -1,4 +1,4 @@
elastic_fleet_package_registry:
enabled:
description: You can enable or disable Elastic Fleet Package Registry.
description: Enables or disables the Fleet package registry process. This process must remain enabled to allow Elastic Agent packages to be updated.
advanced: True
-1
View File
@@ -8,7 +8,6 @@
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% from 'docker/docker.map.jinja' import DOCKER %}
include:
- elasticagent.config
- elasticagent.sostatus
+4
View File
@@ -0,0 +1,4 @@
elasticagent:
enabled:
description: Enables or disables the Elastic Agent process. This process must remain enabled to allow collection of node events.
advanced: True
+3
View File
@@ -9,3 +9,6 @@ fleetartifactdir:
- user: 947
- group: 939
- makedirs: True
- recurse:
- user
- group
+66 -1
View File
@@ -9,6 +9,9 @@
{% from 'elasticfleet/map.jinja' import ELASTICFLEETMERGED %}
{% set node_data = salt['pillar.get']('node_data') %}
include:
- elasticfleet.artifact_registry
# Add EA Group
elasticfleetgroup:
group.present:
@@ -30,6 +33,7 @@ elasticfleet_sbin:
- user: 947
- group: 939
- file_mode: 755
- show_changes: False
elasticfleet_sbin_jinja:
file.recurse:
@@ -41,6 +45,7 @@ elasticfleet_sbin_jinja:
- template: jinja
- exclude_pat:
- so-elastic-fleet-package-upgrade # exclude this because we need to watch it for changes
- show_changes: False
eaconfdir:
file.directory:
@@ -63,6 +68,14 @@ eastatedir:
- group: 939
- makedirs: True
custommappingsdir:
file.directory:
- name: /nsm/custom-mappings
- user: 947
- group: 939
- makedirs: True
eapackageupgrade:
file.managed:
- name: /usr/sbin/so-elastic-fleet-package-upgrade
@@ -73,6 +86,56 @@ eapackageupgrade:
- template: jinja
{% if GLOBALS.role != "so-fleet" %}
{% if not GLOBALS.airgap %}
soresourcesrepoclone:
git.latest:
- name: https://github.com/Security-Onion-Solutions/securityonion-resources.git
- target: /nsm/securityonion-resources
- rev: 'main'
- depth: 1
- force_reset: True
{% endif %}
elasticdefendconfdir:
file.directory:
- name: /opt/so/conf/elastic-fleet/defend-exclusions/rulesets
- user: 947
- group: 939
- makedirs: True
elasticdefenddisabled:
file.managed:
- name: /opt/so/conf/elastic-fleet/defend-exclusions/disabled-filters.yaml
- source: salt://elasticfleet/files/soc/elastic-defend-disabled-filters.yaml
- user: 947
- group: 939
- mode: 600
elasticdefendcustom:
file.managed:
- name: /opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters-raw
- source: salt://elasticfleet/files/soc/elastic-defend-custom-filters.yaml
- user: 947
- group: 939
- mode: 600
{% if ELASTICFLEETMERGED.config.defend_filters.enable_auto_configuration %}
{% set ap = "present" %}
{% else %}
{% set ap = "absent" %}
{% endif %}
cron-elastic-defend-filters:
cron.{{ap}}:
- name: python3 /sbin/so-elastic-defend-manage-filters.py -c /opt/so/conf/elasticsearch/curl.config -d /opt/so/conf/elastic-fleet/defend-exclusions/disabled-filters.yaml -i /nsm/securityonion-resources/event_filters/ -i /opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters/ &>> /opt/so/log/elasticfleet/elastic-defend-manage-filters.log
- identifier: elastic-defend-filters
- user: root
- minute: '0'
- hour: '3'
- daymonth: '*'
- month: '*'
- dayweek: '*'
eaintegrationsdir:
file.directory:
- name: /opt/so/conf/elastic-fleet/integrations
@@ -87,6 +150,7 @@ eadynamicintegration:
- user: 947
- group: 939
- template: jinja
- show_changes: False
eaintegration:
file.recurse:
@@ -94,6 +158,7 @@ eaintegration:
- source: salt://elasticfleet/files/integrations
- user: 947
- group: 939
- show_changes: False
eaoptionalintegrationsdir:
file.directory:
@@ -104,7 +169,7 @@ eaoptionalintegrationsdir:
{% for minion in node_data %}
{% set role = node_data[minion]["role"] %}
{% if role in [ "eval","fleet","heavynode","import","manager","managersearch","standalone" ] %}
{% if role in [ "eval","fleet","heavynode","import","manager", "managerhype", "managersearch","standalone" ] %}
{% set optional_integrations = ELASTICFLEETMERGED.optional_integrations %}
{% set integration_keys = optional_integrations.keys() %}
fleet_server_integrations_{{ minion }}:
+5 -68
View File
@@ -8,6 +8,10 @@ elasticfleet:
endpoints_enrollment: ''
es_token: ''
grid_enrollment: ''
defend_filters:
enable_auto_configuration: False
subscription_integrations: False
auto_upgrade_integrations: False
logging:
zeek:
excluded:
@@ -30,88 +34,21 @@ elasticfleet:
- stderr
- stdout
packages:
- apache
- auditd
- auth0
- aws
- azure
- barracuda
- carbonblack_edr
- cef
- checkpoint
- cisco_asa
- cisco_duo
- cisco_ftd
- cisco_ios
- cisco_ise
- cisco_meraki
- cisco_umbrella
- citrix_adc
- citrix_waf
- cloudflare
- crowdstrike
- darktrace
- elastic_agent
- elasticsearch
- endpoint
- f5_bigip
- fim
- fireeye
- fleet_server
- fortinet
- fortinet_fortigate
- gcp
- github
- google_workspace
- filestream
- http_endpoint
- httpjson
- iis
- journald
- juniper
- juniper_srx
- kafka_log
- lastpass
- log
- m365_defender
- microsoft_defender_endpoint
- microsoft_dhcp
- microsoft_sqlserver
- mimecast
- mysql
- netflow
- nginx
- o365
- okta
- osquery_manager
- panw
- pfsense
- proofpoint_tap
- pulse_connect_secure
- redis
- sentinel_one
- snort
- snyk
- sonicwall_firewall
- sophos
- sophos_central
- symantec_endpoint
- system
- tcp
- tenable_sc
- ti_abusech
- ti_anomali
- ti_cybersixgill
- ti_misp
- ti_otx
- ti_recordedfuture
- ti_threatq
- udp
- vsphere
- windows
- winlog
- zscaler_zia
- zscaler_zpa
- 1password
optional_integrations:
sublime_platform:
enabled_nodes: []
+34 -1
View File
@@ -17,10 +17,12 @@ include:
- elasticfleet.sostatus
- ssl
{% if grains.role not in ['so-fleet'] %}
# Wait for Elasticsearch to be ready - no reason to try running Elastic Fleet server if ES is not ready
wait_for_elasticsearch_elasticfleet:
cmd.run:
- name: so-elasticsearch-wait
{% endif %}
# If enabled, automatically update Fleet Logstash Outputs
{% if ELASTICFLEETMERGED.config.server.enable_auto_configuration and grains.role not in ['so-import', 'so-eval', 'so-fleet'] %}
@@ -65,6 +67,8 @@ so-elastic-fleet-auto-configure-artifact-urls:
elasticagent_syncartifacts:
file.recurse:
- name: /nsm/elastic-fleet/artifacts/beats
- user: 947
- group: 947
- source: salt://beats
{% endif %}
@@ -131,17 +135,46 @@ so-elastic-fleet-package-statefile:
so-elastic-fleet-package-upgrade:
cmd.run:
- name: /usr/sbin/so-elastic-fleet-package-upgrade
- retry:
attempts: 3
interval: 10
- onchanges:
- file: /opt/so/state/elastic_fleet_packages.txt
so-elastic-fleet-integrations:
cmd.run:
- name: /usr/sbin/so-elastic-fleet-integration-policy-load
- retry:
attempts: 3
interval: 10
so-elastic-agent-grid-upgrade:
cmd.run:
- name: /usr/sbin/so-elastic-agent-grid-upgrade
- retry: True
- retry:
attempts: 12
interval: 5
so-elastic-fleet-integration-upgrade:
cmd.run:
- name: /usr/sbin/so-elastic-fleet-integration-upgrade
- retry:
attempts: 3
interval: 10
{# Optional integrations script doesn't need the retries like so-elastic-fleet-integration-upgrade which loads the default integrations #}
so-elastic-fleet-addon-integrations:
cmd.run:
- name: /usr/sbin/so-elastic-fleet-optional-integrations-load
{% if ELASTICFLEETMERGED.config.defend_filters.enable_auto_configuration %}
so-elastic-defend-manage-filters-file-watch:
cmd.run:
- name: python3 /sbin/so-elastic-defend-manage-filters.py -c /opt/so/conf/elasticsearch/curl.config -d /opt/so/conf/elastic-fleet/defend-exclusions/disabled-filters.yaml -i /nsm/securityonion-resources/event_filters/ -i /opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters/ &>> /opt/so/log/elasticfleet/elastic-defend-manage-filters.log
- onchanges:
- file: elasticdefendcustom
- file: elasticdefenddisabled
{% endif %}
{% endif %}
delete_so-elastic-fleet_so-status.disabled:
@@ -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,46 @@
{%- set identities = salt['sqlite3.fetch']('/nsm/kratos/db/db.sqlite', 'SELECT id, json_extract(traits, "$.email") as email FROM identities;') -%}
{%- set valid_identities = false -%}
{%- if identities -%}
{%- set valid_identities = true -%}
{%- for id, email in identities -%}
{%- if not id or not email -%}
{%- set valid_identities = false -%}
{%- break -%}
{%- endif -%}
{%- endfor -%}
{%- endif -%}
{
"package": {
"name": "log",
"version": ""
},
"name": "kratos-logs",
"namespace": "so",
"description": "Kratos logs",
"policy_id": "so-grid-nodes_general",
"inputs": {
"logs-logfile": {
"enabled": true,
"streams": {
"log.logs": {
"enabled": true,
"vars": {
"paths": [
"/opt/so/log/kratos/kratos.log"
],
"data_stream.dataset": "kratos",
"tags": ["so-kratos"],
{%- if valid_identities -%}
"processors": "- decode_json_fields:\n fields: [\"message\"]\n target: \"\"\n add_error_key: true\n- add_fields:\n target: event\n fields:\n category: iam\n module: kratos\n- if:\n has_fields:\n - identity_id\n then:{% for id, email in identities %}\n - if:\n equals:\n identity_id: \"{{ id }}\"\n then:\n - add_fields:\n target: ''\n fields:\n user.name: \"{{ email }}\"{% endfor %}",
{%- else -%}
"processors": "- decode_json_fields:\n fields: [\"message\"]\n target: \"\"\n add_error_key: true\n- add_fields:\n target: event\n fields:\n category: iam\n module: kratos",
{%- endif -%}
"custom": "pipeline: kratos"
}
}
}
}
},
"force": true
}
@@ -1,27 +1,33 @@
{
"name": "elastic-defend-endpoints",
"namespace": "default",
"description": "",
"package": {
"name": "endpoint",
"title": "Elastic Defend",
"version": "8.10.2"
},
"enabled": true,
"policy_id": "endpoints-initial",
"inputs": [{
"type": "ENDPOINT_INTEGRATION_CONFIG",
"enabled": true,
"streams": [],
"config": {
"_config": {
"value": {
"type": "endpoint",
"endpointConfig": {
"preset": "DataCollection"
}
}
}
}
}]
}
"name": "elastic-defend-endpoints",
"namespace": "default",
"description": "",
"package": {
"name": "endpoint",
"title": "Elastic Defend",
"version": "8.18.1",
"requires_root": true
},
"enabled": true,
"policy_ids": [
"endpoints-initial"
],
"vars": {},
"inputs": [
{
"type": "ENDPOINT_INTEGRATION_CONFIG",
"enabled": true,
"config": {
"_config": {
"value": {
"type": "endpoint",
"endpointConfig": {
"preset": "DataCollection"
}
}
}
},
"streams": []
}
]
}
@@ -11,7 +11,7 @@
"winlogs-winlog": {
"enabled": true,
"streams": {
"winlog.winlog": {
"winlog.winlogs": {
"enabled": true,
"vars": {
"channel": "Microsoft-Windows-Windows Defender/Operational",
@@ -0,0 +1,48 @@
{
"package": {
"name": "filestream",
"version": ""
},
"name": "agent-monitor",
"namespace": "",
"description": "",
"policy_ids": [
"so-grid-nodes_general"
],
"output_id": null,
"vars": {},
"inputs": {
"filestream-filestream": {
"enabled": true,
"streams": {
"filestream.generic": {
"enabled": true,
"vars": {
"paths": [
"/opt/so/log/agents/agent-monitor.log"
],
"data_stream.dataset": "agentmonitor",
"pipeline": "elasticagent.monitor",
"parsers": "",
"exclude_files": [
"\\.gz$"
],
"include_files": [],
"processors": "- decode_json_fields:\n fields: [\"message\"]\n target: \"\"\n- add_fields:\n target: event\n fields:\n module: gridmetrics",
"tags": [],
"recursive_glob": true,
"ignore_older": "72h",
"clean_inactive": -1,
"harvester_limit": 0,
"fingerprint": true,
"fingerprint_offset": 0,
"fingerprint_length": 64,
"file_identity_native": false,
"exclude_lines": [],
"include_lines": []
}
}
}
}
}
}
@@ -40,7 +40,7 @@
"enabled": true,
"vars": {
"paths": [
"/opt/so/log/elasticsearch/*.log"
"/opt/so/log/elasticsearch/*.json"
]
}
},
@@ -3,9 +3,9 @@
"name": "log",
"version": ""
},
"name": "kratos-logs",
"name": "hydra-logs",
"namespace": "so",
"description": "Kratos logs",
"description": "Hydra logs",
"policy_id": "so-grid-nodes_general",
"inputs": {
"logs-logfile": {
@@ -15,12 +15,12 @@
"enabled": true,
"vars": {
"paths": [
"/opt/so/log/kratos/kratos.log"
"/opt/so/log/hydra/hydra.log"
],
"data_stream.dataset": "kratos",
"tags": ["so-kratos"],
"processors": "- decode_json_fields:\n fields: [\"message\"]\n target: \"\"\n add_error_key: true \n- add_fields:\n target: event\n fields:\n category: iam\n module: kratos",
"custom": "pipeline: kratos"
"data_stream.dataset": "hydra",
"tags": ["so-hydra"],
"processors": "- decode_json_fields:\n fields: [\"message\"]\n target: \"\"\n add_error_key: true \n- add_fields:\n target: event\n fields:\n category: iam\n module: hydra",
"custom": "pipeline: hydra"
}
}
}
@@ -19,7 +19,7 @@
],
"data_stream.dataset": "idh",
"tags": [],
"processors": "\n- decode_json_fields:\n fields: [\"message\"]\n target: \"\"\n add_error_key: true\n- drop_fields:\n when:\n equals:\n logtype: \"1001\"\n fields: [\"src_host\", \"src_port\", \"dst_host\", \"dst_port\" ]\n ignore_missing: true\n- rename:\n fields:\n - from: \"src_host\"\n to: \"source.ip\"\n - from: \"src_port\"\n to: \"source.port\"\n - from: \"dst_host\"\n to: \"destination.host\"\n - from: \"dst_port\"\n to: \"destination.port\"\n ignore_missing: true\n- convert:\n fields:\n - {from: \"logtype\", to: \"event.code\", type: \"string\"}\n ignore_missing: true\n- drop_fields:\n fields: '[\"prospector\", \"input\", \"offset\", \"beat\"]'\n- add_fields:\n target: event\n fields:\n category: host\n module: opencanary",
"processors": "\n- decode_json_fields:\n fields: [\"message\"]\n target: \"\"\n add_error_key: true\n- convert:\n fields:\n - {from: \"logtype\", to: \"event.code\", type: \"string\"}\n- drop_fields:\n when:\n equals:\n event.code: \"1001\"\n fields: [\"src_host\", \"src_port\", \"dst_host\", \"dst_port\" ]\n ignore_missing: true\n- rename:\n fields:\n - from: \"src_host\"\n to: \"source.ip\"\n - from: \"src_port\"\n to: \"source.port\"\n - from: \"dst_host\"\n to: \"destination.host\"\n - from: \"dst_port\"\n to: \"destination.port\"\n ignore_missing: true\n- drop_fields:\n fields: '[\"prospector\", \"input\", \"offset\", \"beat\"]'\n- add_fields:\n target: event\n fields:\n category: host\n module: opencanary",
"custom": "pipeline: common"
}
}
@@ -20,7 +20,7 @@
],
"data_stream.dataset": "import",
"custom": "",
"processors": "- dissect:\n tokenizer: \"/nsm/import/%{import.id}/evtx/%{import.file}\"\n field: \"log.file.path\"\n target_prefix: \"\"\n- decode_json_fields:\n fields: [\"message\"]\n target: \"\"\n- drop_fields:\n fields: [\"host\"]\n ignore_missing: true\n- add_fields:\n target: data_stream\n fields:\n type: logs\n dataset: system.security\n- add_fields:\n target: event\n fields:\n dataset: system.security\n module: system\n imported: true\n- add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-system.security-1.43.0\n- if:\n equals:\n winlog.channel: 'Microsoft-Windows-Sysmon/Operational'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: windows.sysmon_operational\n - add_fields:\n target: event\n fields:\n dataset: windows.sysmon_operational\n module: windows\n imported: true\n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-windows.sysmon_operational-1.38.0\n- if:\n equals:\n winlog.channel: 'Application'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: system.application\n - add_fields:\n target: event\n fields:\n dataset: system.application\n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-system.application-1.43.0\n- if:\n equals:\n winlog.channel: 'System'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: system.system\n - add_fields:\n target: event\n fields:\n dataset: system.system\n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-system.system-1.43.0\n \n- if:\n equals:\n winlog.channel: 'Microsoft-Windows-PowerShell/Operational'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: windows.powershell_operational\n - add_fields:\n target: event\n fields:\n dataset: windows.powershell_operational\n module: windows\n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-windows.powershell_operational-1.38.0\n- add_fields:\n target: data_stream\n fields:\n dataset: import",
"processors": "- dissect:\n tokenizer: \"/nsm/import/%{import.id}/evtx/%{import.file}\"\n field: \"log.file.path\"\n target_prefix: \"\"\n- decode_json_fields:\n fields: [\"message\"]\n target: \"\"\n- drop_fields:\n fields: [\"host\"]\n ignore_missing: true\n- add_fields:\n target: data_stream\n fields:\n type: logs\n dataset: system.security\n- add_fields:\n target: event\n fields:\n dataset: system.security\n module: system\n imported: true\n- add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-system.security-2.6.1\n- if:\n equals:\n winlog.channel: 'Microsoft-Windows-Sysmon/Operational'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: windows.sysmon_operational\n - add_fields:\n target: event\n fields:\n dataset: windows.sysmon_operational\n module: windows\n imported: true\n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-windows.sysmon_operational-3.1.2\n- if:\n equals:\n winlog.channel: 'Application'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: system.application\n - add_fields:\n target: event\n fields:\n dataset: system.application\n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-system.application-2.6.1\n- if:\n equals:\n winlog.channel: 'System'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: system.system\n - add_fields:\n target: event\n fields:\n dataset: system.system\n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-system.system-2.6.1\n \n- if:\n equals:\n winlog.channel: 'Microsoft-Windows-PowerShell/Operational'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: windows.powershell_operational\n - add_fields:\n target: event\n fields:\n dataset: windows.powershell_operational\n module: windows\n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-windows.powershell_operational-3.1.2\n- add_fields:\n target: data_stream\n fields:\n dataset: import",
"tags": [
"import"
]
@@ -0,0 +1,35 @@
{
"package": {
"name": "log",
"version": ""
},
"name": "so-ip-mappings",
"namespace": "so",
"description": "IP Description mappings",
"policy_id": "so-grid-nodes_general",
"vars": {},
"inputs": {
"logs-logfile": {
"enabled": true,
"streams": {
"log.logs": {
"enabled": true,
"vars": {
"paths": [
"/nsm/custom-mappings/ip-descriptions.csv"
],
"data_stream.dataset": "hostnamemappings",
"tags": [
"so-ip-mappings"
],
"processors": "- decode_csv_fields:\n fields:\n message: decoded.csv\n separator: \",\"\n ignore_missing: false\n overwrite_keys: true\n trim_leading_space: true\n fail_on_error: true\n\n- extract_array:\n field: decoded.csv\n mappings:\n so.ip_address: '0'\n so.description: '1'\n\n- script:\n lang: javascript\n source: >\n function process(event) {\n var ip = event.Get('so.ip_address');\n var validIpRegex = /^((25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)\\.){3}(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)$/\n if (!validIpRegex.test(ip)) {\n event.Cancel();\n }\n }\n- fingerprint:\n fields: [\"so.ip_address\"]\n target_field: \"@metadata._id\"\n",
"custom": ""
}
}
}
}
},
"force": true
}
@@ -11,7 +11,7 @@
"tcp-tcp": {
"enabled": true,
"streams": {
"tcp.generic": {
"tcp.tcp": {
"enabled": true,
"vars": {
"listen_address": "0.0.0.0",
@@ -23,7 +23,8 @@
"syslog"
],
"syslog_options": "field: message\n#format: auto\n#timezone: Local",
"ssl": ""
"ssl": "",
"custom": ""
}
}
}
@@ -11,7 +11,7 @@
"udp-udp": {
"enabled": true,
"streams": {
"udp.generic": {
"udp.udp": {
"enabled": true,
"vars": {
"listen_address": "0.0.0.0",
@@ -20,11 +20,13 @@
"pipeline": "syslog",
"max_message_size": "10KiB",
"keep_null": false,
"processors": "- add_fields:\n target: event\n fields: \n module: syslog\n",
"processors": "- add_fields:\n target: event\n fields: \n module: syslog",
"tags": [
"syslog"
],
"syslog_options": "field: message\n#format: auto\n#timezone: Local"
"syslog_options": "field: message\n#format: auto\n#timezone: Local\n",
"preserve_original_event": false,
"custom": ""
}
}
}
@@ -31,7 +31,8 @@
],
"tags": [
"so-grid-node"
]
],
"processors": "- if:\n contains:\n message: \"salt-minion\"\n then: \n - dissect:\n tokenizer: \"%{} %{} %{} %{} %{} %{}: [%{log.level}] %{*}\"\n field: \"message\"\n trim_values: \"all\"\n target_prefix: \"\"\n - drop_event:\n when:\n equals:\n log.level: \"INFO\""
}
}
}
@@ -0,0 +1,27 @@
title: 'Template 1'
id: 'This needs to be a UUIDv4 id - https://www.uuidgenerator.net/version4'
description: 'Short description detailing what this rule is filtering and why.'
references: 'Relevant urls, etc'
author: '@SecurityOnion'
date: 'MM/DD/YY'
event_type: 'dns_query'
filter_type: 'exclude'
filter:
selection_1:
TargetField: 'QueryName'
Condition: 'end with'
Pattern: '.thawte.com'
---
title: 'Template 2'
id: 'This needs to be a UUIDv4 id - https://www.uuidgenerator.net/version4'
description: 'Short description detailing what this rule is filtering and why.'
references: 'Relevant urls, etc'
author: '@SecurityOnion'
date: 'MM/DD/YY'
event_type: 'process_creation'
filter_type: 'exclude'
filter:
selection_1:
TargetField: 'ParentImage'
Condition: 'is'
Pattern: 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngentask.exe'
@@ -0,0 +1,3 @@
'9EDAA51C-BB12-49D9-8748-2B61371F2E7D':
Date: '10/10/2024'
Notes: 'Example Disabled Filter - Leave this entry here, just copy and paste as needed.'
@@ -0,0 +1,158 @@
{# 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; you may not use
this file except in compliance with the Elastic License 2.0. #}
{% import_json '/opt/so/state/esfleet_package_components.json' as ADDON_PACKAGE_COMPONENTS %}
{% import_json '/opt/so/state/esfleet_component_templates.json' as INSTALLED_COMPONENT_TEMPLATES %}
{% import_yaml 'elasticfleet/defaults.yaml' as ELASTICFLEETDEFAULTS %}
{% set CORE_ESFLEET_PACKAGES = ELASTICFLEETDEFAULTS.get('elasticfleet', {}).get('packages', {}) %}
{% set ADDON_INTEGRATION_DEFAULTS = {} %}
{# Some fleet integrations don't follow the standard naming convention #}
{% set WEIRD_INTEGRATIONS = {
'awsfirehose.logs': 'awsfirehose',
'awsfirehose.metrics': 'aws.cloudwatch',
'cribl.logs': 'cribl',
'cribl.metrics': 'cribl',
'sentinel_one_cloud_funnel.logins': 'sentinel_one_cloud_funnel.login',
'azure_application_insights.app_insights': 'azure.app_insights',
'azure_application_insights.app_state': 'azure.app_state',
'azure_billing.billing': 'azure.billing',
'azure_functions.metrics': 'azure.function',
'azure_metrics.compute_vm_scaleset': 'azure.compute_vm_scaleset',
'azure_metrics.compute_vm': 'azure.compute_vm',
'azure_metrics.container_instance': 'azure.container_instance',
'azure_metrics.container_registry': 'azure.container_registry',
'azure_metrics.container_service': 'azure.container_service',
'azure_metrics.database_account': 'azure.database_account',
'azure_metrics.monitor': 'azure.monitor',
'azure_metrics.storage_account': 'azure.storage_account',
'azure_openai.metrics': 'azure.open_ai',
'beat.state': 'beats.stack_monitoring.state',
'beat.stats': 'beats.stack_monitoring.stats',
'enterprisesearch.health': 'enterprisesearch.stack_monitoring.health',
'enterprisesearch.stats': 'enterprisesearch.stack_monitoring.stats',
'kibana.cluster_actions': 'kibana.stack_monitoring.cluster_actions',
'kibana.cluster_rules': 'kibana.stack_monitoring.cluster_rules',
'kibana.node_actions': 'kibana.stack_monitoring.node_actions',
'kibana.node_rules': 'kibana.stack_monitoring.node_rules',
'kibana.stats': 'kibana.stack_monitoring.stats',
'kibana.status': 'kibana.stack_monitoring.status',
'logstash.node_cel': 'logstash.stack_monitoring.node',
'logstash.node_stats': 'logstash.stack_monitoring.node_stats',
'synthetics.browser': 'synthetics-browser',
'synthetics.browser_network': 'synthetics-browser.network',
'synthetics.browser_screenshot': 'synthetics-browser.screenshot',
'synthetics.http': 'synthetics-http',
'synthetics.icmp': 'synthetics-icmp',
'synthetics.tcp': 'synthetics-tcp',
'swimlane.swimlane_api': 'swimlane.api',
'swimlane.tenant_api': 'swimlane.tenant',
'swimlane.turbine_api': 'turbine.api'
} %}
{% for pkg in ADDON_PACKAGE_COMPONENTS %}
{% if pkg.name in CORE_ESFLEET_PACKAGES %}
{# skip core integrations #}
{% elif pkg.name not in CORE_ESFLEET_PACKAGES %}
{# generate defaults for each integration #}
{% if pkg.es_index_patterns is defined and pkg.es_index_patterns is not none %}
{% for pattern in pkg.es_index_patterns %}
{% if "metrics-" in pattern.name %}
{% set integration_type = "metrics-" %}
{% elif "logs-" in pattern.name %}
{% set integration_type = "logs-" %}
{% else %}
{% set integration_type = "" %}
{% endif %}
{% set component_name = pkg.name ~ "." ~ pattern.title %}
{% set index_pattern = pattern.name %}
{# fix weirdly named components #}
{% if component_name in WEIRD_INTEGRATIONS %}
{% set component_name = WEIRD_INTEGRATIONS[component_name] %}
{% endif %}
{# create duplicate of component_name, so we can split generics from @custom component templates in the index template below and overwrite the default @package when needed
eg. having to replace unifiedlogs.generic@package with filestream.generic@package, but keep the ability to customize unifiedlogs.generic@custom and its ILM policy #}
{% set custom_component_name = component_name %}
{# duplicate integration_type to assist with sometimes needing to overwrite component templates with 'logs-filestream.generic@package' (there is no metrics-filestream.generic@package) #}
{% set generic_integration_type = integration_type %}
{# component_name_x maintains the functionality of merging local pillar changes with generated 'defaults' via SOC UI #}
{% set component_name_x = component_name.replace(".","_x_") %}
{# pillar overrides/merge expects the key names to follow the naming in elasticsearch/defaults.yaml eg. so-logs-1password_x_item_usages . The _x_ is replaced later on in elasticsearch/template.map.jinja #}
{% set integration_key = "so-" ~ integration_type ~ component_name_x %}
{# if its a .generic template make sure that a .generic@package for the integration exists. Else default to logs-filestream.generic@package #}
{% if ".generic" in component_name and integration_type ~ component_name ~ "@package" not in INSTALLED_COMPONENT_TEMPLATES %}
{# these generic templates by default are directed to index_pattern of 'logs-generic-*', overwrite that here to point to eg gcp_pubsub.generic-* #}
{% set index_pattern = integration_type ~ component_name ~ "-*" %}
{# includes use of .generic component template, but it doesn't exist in installed component templates. Redirect it to filestream.generic@package #}
{% set component_name = "filestream.generic" %}
{% set generic_integration_type = "logs-" %}
{% endif %}
{# Default integration settings #}
{% set integration_defaults = {
"index_sorting": false,
"index_template": {
"composed_of": [generic_integration_type ~ component_name ~ "@package", integration_type ~ custom_component_name ~ "@custom", "so-fleet_integrations.ip_mappings-1", "so-fleet_globals-1", "so-fleet_agent_id_verification-1"],
"data_stream": {
"allow_custom_routing": false,
"hidden": false
},
"ignore_missing_component_templates": [integration_type ~ custom_component_name ~ "@custom"],
"index_patterns": [index_pattern],
"priority": 501,
"template": {
"settings": {
"index": {
"lifecycle": {"name": "so-" ~ integration_type ~ custom_component_name ~ "-logs"},
"number_of_replicas": 0
}
}
}
},
"policy": {
"phases": {
"cold": {
"actions": {
"set_priority": {"priority": 0}
},
"min_age": "60d"
},
"delete": {
"actions": {
"delete": {}
},
"min_age": "365d"
},
"hot": {
"actions": {
"rollover": {
"max_age": "30d",
"max_primary_shard_size": "50gb"
},
"set_priority": {"priority": 100}
},
"min_age": "0ms"
},
"warm": {
"actions": {
"set_priority": {"priority": 50}
},
"min_age": "30d"
}
}
}
} %}
{% do ADDON_INTEGRATION_DEFAULTS.update({integration_key: integration_defaults}) %}
{% endfor %}
{% endif %}
{% endif %}
{% endfor %}
+35 -1
View File
@@ -1,6 +1,6 @@
elasticfleet:
enabled:
description: You can enable or disable Elastic Fleet.
description: Enables or disables the Elastic Fleet process. This process is critical for managing Elastic Agents.
advanced: True
helpLink: elastic-fleet.html
enable_manager_output:
@@ -9,6 +9,24 @@ elasticfleet:
global: True
forcedType: bool
helpLink: elastic-fleet.html
files:
soc:
elastic-defend-disabled-filters__yaml:
title: Disabled Elastic Defend filters
description: Enter the ID of the filter that should be disabled.
syntax: yaml
file: True
global: True
helpLink: elastic-fleet.html
advanced: True
elastic-defend-custom-filters__yaml:
title: Custom Elastic Defend filters
description: Enter custom filters seperated by ---
syntax: yaml
file: True
global: True
helpLink: elastic-fleet.html
advanced: True
logging:
zeek:
excluded:
@@ -16,6 +34,22 @@ elasticfleet:
forcedType: "[]string"
helpLink: zeek.html
config:
defend_filters:
enable_auto_configuration:
description: Enable auto-configuration and management of the Elastic Defend Exclusion filters.
global: True
helpLink: elastic-fleet.html
advanced: True
subscription_integrations:
description: Enable the installation of integrations that require an Elastic license.
global: True
forcedType: bool
helpLink: elastic-fleet.html
auto_upgrade_integrations:
description: Enables or disables automatically upgrading Elastic Agent integrations.
global: True
forcedType: bool
helpLink: elastic-fleet.html
server:
custom_fqdn:
description: Custom FQDN for Agents to connect to. One per line.
@@ -0,0 +1,251 @@
from datetime import datetime
import sys
import getopt
from so_elastic_defend_filters_helper import *
import logging
logging.basicConfig(level=logging.INFO, format='%(message)s')
# Define mappings for Target Field, Event Type, Conditions
TARGET_FIELD_MAPPINGS = {
"Image": "process.executable",
"ParentImage": "process.parent.executable",
"CommandLine": "process.command_line",
"ParentCommandLine": "process.parent.command_line",
"DestinationHostname": "destination.domain",
"QueryName": "dns.question.name",
"DestinationIp": "destination.ip",
"TargetObject": "registry.path",
"TargetFilename": "file.path"
}
DATASET_MAPPINGS = {
"process_create": "endpoint.events.process",
"network_connection": "endpoint.events.network",
"file_create": "endpoint.events.file",
"file_delete": "endpoint.events.file",
"registry_event": "endpoint.events.registry",
"dns_query": "endpoint.events.network"
}
CONDITION_MAPPINGS = {
"is": ("included", "match"),
"end with": ("included", "wildcard"),
"begin with": ("included", "wildcard"),
"contains": ("included", "wildcard")
}
# Extract entries for a rule
def extract_entries(data, event_type):
entries = []
filter_data = data.get('filter', {})
for value in filter_data.values():
target_field = TARGET_FIELD_MAPPINGS.get(value.get('TargetField', ''))
condition = value.get('Condition', '')
pattern = value.get('Pattern', '')
if condition not in CONDITION_MAPPINGS:
logging.error(f"Invalid condition: {condition}")
# Modify the pattern based on the condition
pattern = modify_pattern(condition, pattern)
operator, match_type = CONDITION_MAPPINGS[condition]
entries.append({
"field": target_field,
"operator": operator,
"type": match_type,
"value": pattern
})
# Add the event.dataset entry from DATASET_MAPPINGS
dataset_value = DATASET_MAPPINGS.get(event_type, '')
if dataset_value:
entries.append({
"field": "event.dataset",
"operator": "included",
"type": "match",
"value": dataset_value
})
else:
logging.error(f"No dataset mapping found for event_type: {event_type}")
return entries
# Build the JSON
def build_json_entry(entries, guid, event_type, context):
return {
"comments": [],
"entries": entries,
"item_id": guid,
"name": f"SO - {event_type} - {guid}",
"description": f"{context}\n\n <<- Note: This filter is managed by Security Onion. ->>",
"namespace_type": "agnostic",
"tags": ["policy:all"],
"type": "simple",
"os_types": ["windows"],
"entries": entries
}
# Check to see if the rule is disabled
# If it is, make sure it is not active
def disable_check(guid, disabled_rules, username, password):
if guid in disabled_rules:
logging.info(f"Rule {guid} is in the disabled rules list, confirming that is is actually disabled...")
existing_rule = api_request("GET", guid, username, password)
if existing_rule:
if api_request("DELETE", guid, username, password):
logging.info(f"Successfully deleted rule {guid}")
return True, "deleted"
else:
logging.error(f"Error deleting rule {guid}.")
return True, "Error deleting"
return True, "NOP"
return False, None
def modify_pattern(condition, pattern):
"""
Modify the pattern based on the condition.
- 'end with': Add '*' to the beginning of the pattern.
- 'begin with': Add '*' to the end of the pattern.
- 'contains': Add '*' to both the beginning and end of the pattern.
"""
if isinstance(pattern, list):
# Apply modification to each pattern in the list if it's a list of patterns
return [modify_pattern(condition, p) for p in pattern]
if condition == "end with":
return f"*{pattern}"
elif condition == "begin with":
return f"{pattern}*"
elif condition == "contains":
return f"*{pattern}*"
return pattern
def process_rule_update_or_create(guid, json_entry, username, password):
existing_rule = api_request("GET", guid, username, password)
if existing_rule:
existing_rule_data = extract_relevant_fields(existing_rule)
new_rule_data = extract_relevant_fields(json_entry)
if generate_hash(existing_rule_data) != generate_hash(new_rule_data):
logging.info(f"Updating rule {guid}")
json_entry.pop("list_id", None)
api_request("PUT", guid, username, password, json_data=json_entry)
return "updated"
logging.info(f"Rule {guid} is up to date.")
return "no_change"
else:
logging.info(f"Creating new rule {guid}")
json_entry["list_id"] = "endpoint_event_filters"
api_request("POST", guid, username, password, json_data=json_entry)
return "new"
# Main function for processing rules
def process_rules(yaml_files, disabled_rules, username, password):
stats = {"rule_count": 0, "new": 0, "updated": 0, "no_change": 0, "disabled": 0, "deleted": 0}
for data in yaml_files:
logging.info(f"Processing rule: {data.get('id', '')}")
event_type = data.get('event_type', '')
guid = data.get('id', '')
dataset = DATASET_MAPPINGS.get(event_type, '')
context = data.get('description', '')
rule_deleted, state = disable_check(guid, disabled_rules, username, password)
if rule_deleted:
stats["disabled"] += 1
if state == "deleted":
stats["deleted"] += 1
continue
# Extract entries and build JSON
entries = extract_entries(data, event_type)
json_entry = build_json_entry(entries, guid, event_type, context)
# Process rule creation or update
status = process_rule_update_or_create(guid, json_entry, username, password)
stats[status] += 1
stats["rule_count"] += 1
return stats
def parse_args(argv):
try:
opts, args = getopt.getopt(argv, "i:d:c:f:", ["input=", "disabled=", "credentials=", "flags_file="])
except getopt.GetoptError:
print("Usage: python so-elastic-defend-manage-filters.py -c <credentials_file> -d <disabled_file> -i <folder_of_yaml_files> [-f <flags_file>]")
sys.exit(2)
return opts
def load_flags(file_path):
with open(file_path, 'r') as flags_file:
return flags_file.read().splitlines()
def validate_inputs(credentials_file, disabled_file, yaml_directories):
if not credentials_file or not disabled_file or not yaml_directories:
print("Usage: python so-elastic-defend-manage-filters.py -c <credentials_file> -d <disabled_file> -i <folder_of_yaml_files> [-f <flags_file>]")
sys.exit(2)
def main(argv):
credentials_file = ""
disabled_file = ""
yaml_directories = []
opts = parse_args(argv)
for opt, arg in opts:
if opt in ("-c", "--credentials"):
credentials_file = arg
elif opt in ("-d", "--disabled"):
disabled_file = arg
elif opt in ("-i", "--input"):
yaml_directories.append(arg)
elif opt in ("-f", "--flags_file"):
flags = load_flags(arg)
return main(argv + flags)
timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
logging.info(f"\n{timestamp}")
validate_inputs(credentials_file, disabled_file, yaml_directories)
credentials = load_credentials(credentials_file)
if not credentials:
raise Exception("Failed to load credentials")
username, password = extract_auth_details(credentials)
if not username or not password:
raise Exception("Invalid credentials format")
custom_rules_input = '/opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters-raw'
custom_rules_output = '/opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters'
prepare_custom_rules(custom_rules_input, custom_rules_output)
disabled_rules = load_disabled(disabled_file)
total_stats = {"rule_count": 0, "new": 0, "updated": 0, "no_change": 0, "disabled": 0, "deleted": 0}
for yaml_dir in yaml_directories:
yaml_files = load_yaml_files(yaml_dir)
stats = process_rules(yaml_files, disabled_rules, username, password)
for key in total_stats:
total_stats[key] += stats[key]
logging.info(f"\nProcessing Summary")
logging.info(f" - Total processed rules: {total_stats['rule_count']}")
logging.info(f" - New rules: {total_stats['new']}")
logging.info(f" - Updated rules: {total_stats['updated']}")
logging.info(f" - Disabled rules: {total_stats['deleted']}")
logging.info(f" - Rules with no changes: {total_stats['no_change']}")
logging.info(f"Rule status Summary")
logging.info(f" - Active rules: {total_stats['rule_count'] - total_stats['disabled']}")
logging.info(f" - Disabled rules: {total_stats['disabled']}")
timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
logging.info(f"Execution completed at: {timestamp}")
if __name__ == "__main__":
main(sys.argv[1:])
@@ -23,6 +23,13 @@ fi
# Define a banner to separate sections
banner="========================================================================="
fleet_api() {
local QUERYPATH=$1
shift
curl -sK /opt/so/conf/elasticsearch/curl.config -L "localhost:5601/api/fleet/${QUERYPATH}" "$@" --retry 3 --retry-delay 10 --fail 2>/dev/null
}
elastic_fleet_integration_check() {
AGENT_POLICY=$1
@@ -39,7 +46,9 @@ elastic_fleet_integration_create() {
JSON_STRING=$1
curl -K /opt/so/conf/elasticsearch/curl.config -L -X POST "localhost:5601/api/fleet/package_policies" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"
if ! fleet_api "package_policies" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -XPOST -d "$JSON_STRING"; then
return 1
fi
}
@@ -56,7 +65,10 @@ elastic_fleet_integration_remove() {
'{"packagePolicyIds":[$INTEGRATIONID]}'
)
curl -K /opt/so/conf/elasticsearch/curl.config -L -X POST "localhost:5601/api/fleet/package_policies/delete" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"
if ! fleet_api "package_policies/delete" -XPOST -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"; then
echo "Error: Unable to delete '$NAME' from '$AGENT_POLICY'"
return 1
fi
}
elastic_fleet_integration_update() {
@@ -65,7 +77,9 @@ elastic_fleet_integration_update() {
JSON_STRING=$2
curl -K /opt/so/conf/elasticsearch/curl.config -L -X PUT "localhost:5601/api/fleet/package_policies/$UPDATE_ID" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"
if ! fleet_api "package_policies/$UPDATE_ID" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -XPUT -d "$JSON_STRING"; then
return 1
fi
}
elastic_fleet_integration_policy_upgrade() {
@@ -77,29 +91,117 @@ elastic_fleet_integration_policy_upgrade() {
'{"packagePolicyIds":[$INTEGRATIONID]}'
)
curl -K /opt/so/conf/elasticsearch/curl.config -L -X POST "localhost:5601/api/fleet/package_policies/upgrade" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"
if ! fleet_api "package_policies/upgrade" -XPOST -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"; then
return 1
fi
}
elastic_fleet_package_version_check() {
PACKAGE=$1
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/epm/packages/$PACKAGE" | jq -r '.item.version'
if output=$(fleet_api "epm/packages/$PACKAGE"); then
echo "$output" | jq -r '.item.version'
else
echo "Error: Failed to get current package version for '$PACKAGE'"
return 1
fi
}
elastic_fleet_package_latest_version_check() {
PACKAGE=$1
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/epm/packages/$PACKAGE" | jq -r '.item.latestVersion'
if output=$(fleet_api "epm/packages/$PACKAGE"); then
if version=$(jq -e -r '.item.latestVersion' <<< $output); then
echo "$version"
fi
else
echo "Error: Failed to get latest version for '$PACKAGE'"
return 1
fi
}
elastic_fleet_package_install() {
PKG=$1
VERSION=$2
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d '{"force":true}' "localhost:5601/api/fleet/epm/packages/$PKG/$VERSION"
if ! fleet_api "epm/packages/$PKG/$VERSION" -XPOST -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d '{"force":true}'; then
return 1
fi
}
elastic_fleet_package_is_installed() {
PACKAGE=$1
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET -H 'kbn-xsrf: true' "localhost:5601/api/fleet/epm/packages/$PACKAGE" | jq -r '.item.status'
elastic_fleet_bulk_package_install() {
BULK_PKG_LIST=$1
if ! fleet_api "epm/packages/_bulk" -XPOST -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d@$BULK_PKG_LIST; then
return 1
fi
}
elastic_fleet_installed_packages() {
if ! fleet_api "epm/packages/installed?perPage=500"; then
return 1
fi
}
elastic_fleet_agent_policy_ids() {
if output=$(fleet_api "agent_policies"); then
echo "$output" | jq -r .items[].id
else
echo "Error: Failed to retrieve agent policies."
return 1
fi
}
elastic_fleet_integration_policy_names() {
AGENT_POLICY=$1
if output=$(fleet_api "agent_policies/$AGENT_POLICY"); then
echo "$output" | jq -r .item.package_policies[].name
else
echo "Error: Failed to retrieve integrations for '$AGENT_POLICY'."
return 1
fi
}
elastic_fleet_integration_policy_package_name() {
AGENT_POLICY=$1
INTEGRATION=$2
if output=$(fleet_api "agent_policies/$AGENT_POLICY"); then
echo "$output" | jq -r --arg INTEGRATION "$INTEGRATION" '.item.package_policies[] | select(.name==$INTEGRATION)| .package.name'
else
echo "Error: Failed to retrieve package name for '$INTEGRATION' in '$AGENT_POLICY'."
return 1
fi
}
elastic_fleet_integration_policy_package_version() {
AGENT_POLICY=$1
INTEGRATION=$2
if output=$(fleet_api "agent_policies/$AGENT_POLICY"); then
if version=$(jq -e -r --arg INTEGRATION "$INTEGRATION" '.item.package_policies[] | select(.name==$INTEGRATION)| .package.version' <<< "$output"); then
echo "$version"
fi
else
echo "Error: Failed to retrieve integration version for '$INTEGRATION' in policy '$AGENT_POLICY'"
return 1
fi
}
elastic_fleet_integration_id() {
AGENT_POLICY=$1
INTEGRATION=$2
if output=$(fleet_api "agent_policies/$AGENT_POLICY"); then
echo "$output" | jq -r --arg INTEGRATION "$INTEGRATION" '.item.package_policies[] | select(.name==$INTEGRATION)| .id'
else
echo "Error: Failed to retrieve integration ID for '$INTEGRATION' in '$AGENT_POLICY'."
return 1
fi
}
elastic_fleet_integration_policy_dryrun_upgrade() {
INTEGRATION_ID=$1
if ! fleet_api "package_policies/upgrade/dryrun" -H "Content-Type: application/json" -H 'kbn-xsrf: true' -XPOST -d "{\"packagePolicyIds\":[\"$INTEGRATION_ID\"]}"; then
echo "Error: Failed to complete dry run for '$INTEGRATION_ID'."
return 1
fi
}
elastic_fleet_policy_create() {
@@ -107,25 +209,18 @@ elastic_fleet_policy_create() {
NAME=$1
DESC=$2
FLEETSERVER=$3
TIMEOUT=$4
TIMEOUT=$4
JSON_STRING=$( jq -n \
--arg NAME "$NAME" \
--arg DESC "$DESC" \
--arg TIMEOUT $TIMEOUT \
--arg FLEETSERVER "$FLEETSERVER" \
'{"name": $NAME,"id":$NAME,"description":$DESC,"namespace":"default","monitoring_enabled":["logs"],"inactivity_timeout":$TIMEOUT,"has_fleet_server":$FLEETSERVER}'
)
--arg NAME "$NAME" \
--arg DESC "$DESC" \
--arg TIMEOUT $TIMEOUT \
--arg FLEETSERVER "$FLEETSERVER" \
'{"name": $NAME,"id":$NAME,"description":$DESC,"namespace":"default","monitoring_enabled":["logs"],"inactivity_timeout":$TIMEOUT,"has_fleet_server":$FLEETSERVER}'
)
# Create Fleet Policy
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"
if ! fleet_api "agent_policies" -XPOST -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"; then
return 1
fi
}
elastic_fleet_policy_update() {
POLICYID=$1
JSON_STRING=$2
curl -K /opt/so/conf/elasticsearch/curl.config -L -X PUT "localhost:5601/api/fleet/agent_policies/$POLICYID" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"
}
@@ -8,6 +8,7 @@
. /usr/sbin/so-elastic-fleet-common
ERROR=false
# Manage Elastic Defend Integration for Initial Endpoints Policy
for INTEGRATION in /opt/so/conf/elastic-fleet/integrations/elastic-defend/*.json
do
@@ -15,9 +16,20 @@ do
elastic_fleet_integration_check "endpoints-initial" "$INTEGRATION"
if [ -n "$INTEGRATION_ID" ]; then
printf "\n\nIntegration $NAME exists - Upgrading integration policy\n"
elastic_fleet_integration_policy_upgrade "$INTEGRATION_ID"
if ! elastic_fleet_integration_policy_upgrade "$INTEGRATION_ID"; then
echo -e "\nFailed to upgrade integration policy for ${INTEGRATION##*/}"
ERROR=true
continue
fi
else
printf "\n\nIntegration does not exist - Creating integration\n"
elastic_fleet_integration_create "@$INTEGRATION"
if ! elastic_fleet_integration_create "@$INTEGRATION"; then
echo -e "\nFailed to create integration for ${INTEGRATION##*/}"
ERROR=true
continue
fi
fi
done
if [[ "$ERROR" == "true" ]]; then
exit 1
fi
@@ -0,0 +1,33 @@
#!/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
INTEGRATION_ID=$(/usr/sbin/so-elastic-fleet-agent-policy-view "$POLICYNAME" | jq -r '.item.package_policies[] | select(.package.name == "fleet_server") | .id')
# 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
if ! elastic_fleet_integration_update "$INTEGRATION_ID" "$UPDATED_INTEGRATION_POLICY"; then
# exit 1 on failure to update fleet integration policies, let salt handle retries
echo "Failed to update $POLICYNAME.."
exit 1
fi
done
@@ -12,9 +12,11 @@ if [ ! -f /opt/so/state/eaintegrations.txt ]; then
# First, check for any package upgrades
/usr/sbin/so-elastic-fleet-package-upgrade
# Second, configure Elastic Defend Integration seperately
/usr/sbin/so-elastic-fleet-integration-policy-elastic-defend
# Second, update Fleet Server policies
/usr/sbin/so-elastic-fleet-integration-policy-elastic-fleet-server
# Third, configure Elastic Defend Integration seperately
/usr/sbin/so-elastic-fleet-integration-policy-elastic-defend
# Initial Endpoints
for INTEGRATION in /opt/so/conf/elastic-fleet/integrations/endpoints-initial/*.json
do
@@ -22,10 +24,18 @@ if [ ! -f /opt/so/state/eaintegrations.txt ]; then
elastic_fleet_integration_check "endpoints-initial" "$INTEGRATION"
if [ -n "$INTEGRATION_ID" ]; then
printf "\n\nIntegration $NAME exists - Updating integration\n"
elastic_fleet_integration_update "$INTEGRATION_ID" "@$INTEGRATION"
if ! elastic_fleet_integration_update "$INTEGRATION_ID" "@$INTEGRATION"; then
echo -e "\nFailed to update integration for ${INTEGRATION##*/}"
RETURN_CODE=1
continue
fi
else
printf "\n\nIntegration does not exist - Creating integration\n"
elastic_fleet_integration_create "@$INTEGRATION"
if ! elastic_fleet_integration_create "@$INTEGRATION"; then
echo -e "\nFailed to create integration for ${INTEGRATION##*/}"
RETURN_CODE=1
continue
fi
fi
done
@@ -36,10 +46,18 @@ if [ ! -f /opt/so/state/eaintegrations.txt ]; then
elastic_fleet_integration_check "so-grid-nodes_general" "$INTEGRATION"
if [ -n "$INTEGRATION_ID" ]; then
printf "\n\nIntegration $NAME exists - Updating integration\n"
elastic_fleet_integration_update "$INTEGRATION_ID" "@$INTEGRATION"
if ! elastic_fleet_integration_update "$INTEGRATION_ID" "@$INTEGRATION"; then
echo -e "\nFailed to update integration for ${INTEGRATION##*/}"
RETURN_CODE=1
continue
fi
else
printf "\n\nIntegration does not exist - Creating integration\n"
elastic_fleet_integration_create "@$INTEGRATION"
if ! elastic_fleet_integration_create "@$INTEGRATION"; then
echo -e "\nFailed to create integration for ${INTEGRATION##*/}"
RETURN_CODE=1
continue
fi
fi
done
if [[ "$RETURN_CODE" != "1" ]]; then
@@ -53,11 +71,19 @@ if [ ! -f /opt/so/state/eaintegrations.txt ]; then
elastic_fleet_integration_check "so-grid-nodes_heavy" "$INTEGRATION"
if [ -n "$INTEGRATION_ID" ]; then
printf "\n\nIntegration $NAME exists - Updating integration\n"
elastic_fleet_integration_update "$INTEGRATION_ID" "@$INTEGRATION"
if ! elastic_fleet_integration_update "$INTEGRATION_ID" "@$INTEGRATION"; then
echo -e "\nFailed to update integration for ${INTEGRATION##*/}"
RETURN_CODE=1
continue
fi
else
printf "\n\nIntegration does not exist - Creating integration\n"
if [ "$NAME" != "elasticsearch-logs" ]; then
elastic_fleet_integration_create "@$INTEGRATION"
if ! elastic_fleet_integration_create "@$INTEGRATION"; then
echo -e "\nFailed to create integration for ${INTEGRATION##*/}"
RETURN_CODE=1
continue
fi
fi
fi
done
@@ -74,11 +100,19 @@ if [ ! -f /opt/so/state/eaintegrations.txt ]; then
elastic_fleet_integration_check "$FLEET_POLICY" "$INTEGRATION"
if [ -n "$INTEGRATION_ID" ]; then
printf "\n\nIntegration $NAME exists - Updating integration\n"
elastic_fleet_integration_update "$INTEGRATION_ID" "@$INTEGRATION"
if ! elastic_fleet_integration_update "$INTEGRATION_ID" "@$INTEGRATION"; then
echo -e "\nFailed to update integration for ${INTEGRATION##*/}"
RETURN_CODE=1
continue
fi
else
printf "\n\nIntegration does not exist - Creating integration\n"
if [ "$NAME" != "elasticsearch-logs" ]; then
elastic_fleet_integration_create "@$INTEGRATION"
if ! elastic_fleet_integration_create "@$INTEGRATION"; then
echo -e "\nFailed to create integration for ${INTEGRATION##*/}"
RETURN_CODE=1
continue
fi
fi
fi
fi
@@ -10,6 +10,6 @@
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 -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/epm/packages" -H 'kbn-xsrf: true' | jq
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/epm/packages?prerelease=true" -H 'kbn-xsrf: true' | jq
echo
@@ -0,0 +1,128 @@
import hashlib
import os
import json
import yaml
import requests
from requests.auth import HTTPBasicAuth
import shutil
# Extract 'entries', 'description' and 'os_types' fields
def extract_relevant_fields(filter):
return {
'entries': filter.get('entries', []),
'description': filter.get('description', '')
}
# Sort for consistency, so that a hash can be generated
def sorted_data(value):
if isinstance(value, dict):
# Recursively sort the dictionary by key
return {k: sorted_data(v) for k, v in sorted(value.items())}
elif isinstance(value, list):
# Sort lists; for dictionaries, sort by a specific key
return sorted(value, key=lambda x: tuple(sorted(x.items())) if isinstance(x, dict) else x)
return value
# Generate a hash based on sorted relevant fields
def generate_hash(data):
sorted_data_string = json.dumps(sorted_data(data), sort_keys=True)
return hashlib.sha256(sorted_data_string.encode('utf-8')).hexdigest()
# Load Elasticsearch credentials from the config file
def load_credentials(config_path):
with open(config_path, 'r') as file:
for line in file:
if line.startswith("user"):
credentials = line.split('=', 1)[1].strip().strip('"')
return credentials
return None
# Extract username and password from credentials
def extract_auth_details(credentials):
if ':' in credentials:
return credentials.split(':', 1)
return None, None
# Generalized API request function
def api_request(method, guid, username, password, json_data=None):
headers = {
'kbn-xsrf': 'true',
'Content-Type': 'application/json'
}
auth = HTTPBasicAuth(username, password)
if method == "POST":
url = "http://localhost:5601/api/exception_lists/items?namespace_type=agnostic"
else:
url = f"http://localhost:5601/api/exception_lists/items?item_id={guid}&namespace_type=agnostic"
response = requests.request(method, url, headers=headers, auth=auth, json=json_data)
if response.status_code in [200, 201]:
return response.json() if response.content else True
elif response.status_code == 404 and method == "GET":
return None
else:
print(f"Error with {method} request: {response.status_code} - {response.text}")
return False
# Load YAML data for GUIDs to skip
def load_disabled(disabled_file_path):
if os.path.exists(disabled_file_path):
with open(disabled_file_path, 'r') as file:
return yaml.safe_load(file) or {}
return {}
def load_yaml_files(*dirs):
yaml_files = []
for dir_path in dirs:
if os.path.isdir(dir_path):
# Recurse through the directory and subdirectories
for root, dirs, files in os.walk(dir_path):
for file_name in files:
if file_name.endswith(".yaml"):
full_path = os.path.join(root, file_name)
with open(full_path, 'r') as f:
try:
yaml_content = yaml.safe_load(f)
yaml_files.append(yaml_content)
except yaml.YAMLError as e:
print(f"Error loading {full_path}: {e}")
else:
print(f"Invalid directory: {dir_path}")
return yaml_files
def prepare_custom_rules(input_file, output_dir):
# Clear the output directory first
if os.path.exists(output_dir):
shutil.rmtree(output_dir)
os.makedirs(output_dir, exist_ok=True)
try:
# Load the YAML file
with open(input_file, 'r') as f:
docs = yaml.safe_load_all(f)
for doc in docs:
if 'id' not in doc:
print(f"Skipping rule, no 'id' found: {doc}")
continue
if doc.get('title') in ["Template 1", "Template 2"]:
print(f"Skipping template rule with title: {doc['title']}")
continue
# Create a filename using the 'id' field
file_name = os.path.join(output_dir, f"{doc['id']}.yaml")
# Write the individual YAML file
with open(file_name, 'w') as output_file:
yaml.dump(doc, output_file, default_flow_style=False)
print(f"Created file: {file_name}")
except yaml.YAMLError as e:
print(f"Error parsing YAML: {e}")
except Exception as e:
print(f"Error processing file: {e}")
@@ -13,6 +13,9 @@
LOG="/opt/so/log/elasticfleet/so-elastic-agent-gen-installers.log"
# get the variables needed such as ELASTIC_AGENT_TARBALL_VERSION
get_elastic_agent_vars
# Check to see if we are already running
NUM_RUNNING=$(pgrep -cf "/bin/bash /sbin/so-elastic-agent-gen-installers")
[ "$NUM_RUNNING" -gt 1 ] && echo "$(date) - $NUM_RUNNING gen installers script processes running...exiting." >>$LOG && exit 0
@@ -36,6 +39,7 @@ printf "\n### Creating a temp directory at /nsm/elastic-agent-workspace\n"
rm -rf /nsm/elastic-agent-workspace
mkdir -p /nsm/elastic-agent-workspace
printf "\n### Extracting outer tarball and then each individual tarball/zip\n"
tar -xf /nsm/elastic-fleet/artifacts/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.tar.gz -C /nsm/elastic-agent-workspace/
unzip -q /nsm/elastic-agent-workspace/elastic-agent-*.zip -d /nsm/elastic-agent-workspace/
@@ -72,5 +76,17 @@ do
printf "\n### $GOOS/$GOARCH Installer Generated...\n"
done
printf "\n### Cleaning up temp files in /nsm/elastic-agent-workspace\n"
printf "\n\n### Generating MSI...\n"
cp /opt/so/saltstack/local/salt/elasticfleet/files/so_agent-installers/so-elastic-agent_windows_amd64 /opt/so/saltstack/local/salt/elasticfleet/files/so_agent-installers/so-elastic-agent_windows_amd64.exe
docker run \
--mount type=bind,source=/opt/so/saltstack/local/salt/elasticfleet/files/so_agent-installers/,target=/output/ -w /output \
{{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elastic-agent-builder:{{ GLOBALS.so_version }} wixl -o so-elastic-agent_windows_amd64_msi --arch x64 /workspace/so-elastic-agent.wxs
printf "\n### MSI Generated...\n"
printf "\n### Cleaning up temp files \n"
rm -rf /nsm/elastic-agent-workspace
rm -rf /opt/so/saltstack/local/salt/elasticfleet/files/so_agent-installers/so-elastic-agent_windows_amd64.exe
printf "\n### Copying so_agent-installers to /nsm/elastic-fleet/ for nginx.\n"
\cp -vr /opt/so/saltstack/local/salt/elasticfleet/files/so_agent-installers/ /nsm/elastic-fleet/
chmod 644 /nsm/elastic-fleet/so_agent-installers/*
@@ -5,6 +5,7 @@
# this file except in compliance with the Elastic License 2.0.
. /usr/sbin/so-common
{%- import_yaml 'elasticsearch/defaults.yaml' as ELASTICSEARCHDEFAULTS %}
# Only run on Managers
if ! is_manager_node; then
@@ -13,7 +14,7 @@ if ! is_manager_node; then
fi
# Get current list of Grid Node Agents that need to be upgraded
RAW_JSON=$(curl -K /opt/so/conf/elasticsearch/curl.config -L "http://localhost:5601/api/fleet/agents?perPage=20&page=1&kuery=policy_id%20%3A%20so-grid-nodes_%2A&showInactive=false&showUpgradeable=true&getStatusSummary=true")
RAW_JSON=$(curl -K /opt/so/conf/elasticsearch/curl.config -L "http://localhost:5601/api/fleet/agents?perPage=20&page=1&kuery=NOT%20agent.version%20:%20%22{{ELASTICSEARCHDEFAULTS.elasticsearch.version}}%22%20and%20policy_id%20:%20%22so-grid-nodes_general%22&showInactive=false&getStatusSummary=true")
# Check to make sure that the server responded with good data - else, bail from script
CHECKSUM=$(jq -r '.page' <<< "$RAW_JSON")
@@ -27,14 +28,14 @@ OUTDATED_LIST=$(jq -r '.items | map(.id) | (tojson)' <<< "$RAW_JSON")
if [ "$OUTDATED_LIST" != '[]' ]; then
AGENTNUMBERS=$(jq -r '.total' <<< "$RAW_JSON")
printf "Initiating upgrades for $AGENTNUMBERS Agents to Elastic $ELASTIC_AGENT_TARBALL_VERSION...\n\n"
printf "Initiating upgrades for $AGENTNUMBERS Agents to Elastic {{ELASTICSEARCHDEFAULTS.elasticsearch.version}}...\n\n"
# Generate updated JSON payload
JSON_STRING=$(jq -n --arg ELASTICVERSION $ELASTIC_AGENT_TARBALL_VERSION --arg UPDATELIST $OUTDATED_LIST '{"version": $ELASTICVERSION,"agents": $UPDATELIST }')
JSON_STRING=$(jq -n --arg ELASTICVERSION {{ELASTICSEARCHDEFAULTS.elasticsearch.version}} --arg UPDATELIST $OUTDATED_LIST '{"version": $ELASTICVERSION,"agents": $UPDATELIST }')
# Update Node Agents
curl -K /opt/so/conf/elasticsearch/curl.config -L -X POST "http://localhost:5601/api/fleet/agents/bulk_upgrade" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"
else
printf "No Agents need updates... Exiting\n\n"
exit 0
fi
fi
@@ -0,0 +1,95 @@
#!/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.
{%- import_yaml 'elasticfleet/defaults.yaml' as ELASTICFLEETDEFAULTS %}
{%- set SUPPORTED_PACKAGES = salt['pillar.get']('elasticfleet:packages', default=ELASTICFLEETDEFAULTS.elasticfleet.packages, merge=True) %}
{%- set AUTO_UPGRADE_INTEGRATIONS = salt['pillar.get']('elasticfleet:config:auto_upgrade_integrations', default=false) %}
. /usr/sbin/so-elastic-fleet-common
curl_output=$(curl -s -K /opt/so/conf/elasticsearch/curl.config -c - -X GET http://localhost:5601/)
if [ $? -ne 0 ]; then
echo "Error: Failed to connect to Kibana."
exit 1
fi
IFS=$'\n'
agent_policies=$(elastic_fleet_agent_policy_ids)
if [ $? -ne 0 ]; then
echo "Error: Failed to retrieve agent policies."
exit 1
fi
default_packages=({% for pkg in SUPPORTED_PACKAGES %}"{{ pkg }}"{% if not loop.last %} {% endif %}{% endfor %})
ERROR=false
for AGENT_POLICY in $agent_policies; do
if ! integrations=$(elastic_fleet_integration_policy_names "$AGENT_POLICY"); then
# this script upgrades default integration packages, exit 1 and let salt handle retrying
exit 1
fi
for INTEGRATION in $integrations; do
if ! [[ "$INTEGRATION" == "elastic-defend-endpoints" ]] && ! [[ "$INTEGRATION" == "fleet_server-"* ]]; then
# Get package name so we know what package to look for when checking the current and latest available version
if ! PACKAGE_NAME=$(elastic_fleet_integration_policy_package_name "$AGENT_POLICY" "$INTEGRATION"); then
exit 1
fi
{%- if not AUTO_UPGRADE_INTEGRATIONS %}
if [[ " ${default_packages[@]} " =~ " $PACKAGE_NAME " ]]; then
{%- endif %}
# Get currently installed version of package
attempt=0
max_attempts=3
while [ $attempt -lt $max_attempts ]; do
if PACKAGE_VERSION=$(elastic_fleet_integration_policy_package_version "$AGENT_POLICY" "$INTEGRATION") && AVAILABLE_VERSION=$(elastic_fleet_package_latest_version_check "$PACKAGE_NAME"); then
break
fi
attempt=$((attempt + 1))
done
if [ $attempt -eq $max_attempts ]; then
echo "Error: Failed getting $PACKAGE_VERSION or $AVAILABLE_VERSION"
exit 1
fi
# Get integration ID
if ! INTEGRATION_ID=$(elastic_fleet_integration_id "$AGENT_POLICY" "$INTEGRATION"); then
exit 1
fi
if [[ "$PACKAGE_VERSION" != "$AVAILABLE_VERSION" ]]; then
# Dry run of the upgrade
echo ""
echo "Current $PACKAGE_NAME package version ($PACKAGE_VERSION) is not the same as the latest available package ($AVAILABLE_VERSION)..."
echo "Upgrading $INTEGRATION..."
echo "Starting dry run..."
if ! DRYRUN_OUTPUT=$(elastic_fleet_integration_policy_dryrun_upgrade "$INTEGRATION_ID"); then
exit 1
fi
DRYRUN_ERRORS=$(echo "$DRYRUN_OUTPUT" | jq .[].hasErrors)
# If no errors with dry run, proceed with actual upgrade
if [[ "$DRYRUN_ERRORS" == "false" ]]; then
echo "No errors detected. Proceeding with upgrade..."
if ! elastic_fleet_integration_policy_upgrade "$INTEGRATION_ID"; then
echo "Error: Upgrade failed for $PACKAGE_NAME with integration ID '$INTEGRATION_ID'."
ERROR=true
continue
fi
else
echo "Errors detected during dry run for $PACKAGE_NAME policy upgrade..."
ERROR=true
continue
fi
fi
{%- if not AUTO_UPGRADE_INTEGRATIONS %}
fi
{%- endif %}
fi
done
done
if [[ "$ERROR" == "true" ]]; then
exit 1
fi
echo
@@ -0,0 +1,202 @@
#!/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; you may not use
# this file except in compliance with the Elastic License 2.0.
{%- import_yaml 'elasticfleet/defaults.yaml' as ELASTICFLEETDEFAULTS %}
{% set SUB = salt['pillar.get']('elasticfleet:config:subscription_integrations', default=false) %}
{% set AUTO_UPGRADE_INTEGRATIONS = salt['pillar.get']('elasticfleet:config:auto_upgrade_integrations', default=false) %}
{%- set SUPPORTED_PACKAGES = salt['pillar.get']('elasticfleet:packages', default=ELASTICFLEETDEFAULTS.elasticfleet.packages, merge=True) %}
. /usr/sbin/so-common
. /usr/sbin/so-elastic-fleet-common
# Check that /opt/so/state/estemplates.txt exists to signal that Elasticsearch
# has completed its first run of core-only integrations/indices/components/ilm
STATE_FILE_SUCCESS=/opt/so/state/estemplates.txt
INSTALLED_PACKAGE_LIST=/tmp/esfleet_installed_packages.json
BULK_INSTALL_PACKAGE_LIST=/tmp/esfleet_bulk_install.json
BULK_INSTALL_PACKAGE_TMP=/tmp/esfleet_bulk_install_tmp.json
BULK_INSTALL_OUTPUT=/opt/so/state/esfleet_bulk_install_results.json
PACKAGE_COMPONENTS=/opt/so/state/esfleet_package_components.json
COMPONENT_TEMPLATES=/opt/so/state/esfleet_component_templates.json
PENDING_UPDATE=false
# Integrations which are included in the package registry, but excluded from automatic installation via this script.
# Requiring some level of manual Elastic Stack configuration before installation
EXCLUDED_INTEGRATIONS=('apm')
version_conversion(){
version=$1
echo "$version" | awk -F '.' '{ printf("%d%03d%03d\n", $1, $2, $3); }'
}
compare_versions() {
version1=$1
version2=$2
# Convert versions to numbers
num1=$(version_conversion "$version1")
num2=$(version_conversion "$version2")
# Compare using bc
if (( $(echo "$num1 < $num2" | bc -l) )); then
echo "less"
elif (( $(echo "$num1 > $num2" | bc -l) )); then
echo "greater"
else
echo "equal"
fi
}
IFS=$'\n'
agent_policies=$(elastic_fleet_agent_policy_ids)
if [ $? -ne 0 ]; then
echo "Error: Failed to retrieve agent policies."
exit 1
fi
default_packages=({% for pkg in SUPPORTED_PACKAGES %}"{{ pkg }}"{% if not loop.last %} {% endif %}{% endfor %})
in_use_integrations=()
for AGENT_POLICY in $agent_policies; do
if ! integrations=$(elastic_fleet_integration_policy_names "$AGENT_POLICY"); then
# skip the agent policy if we can't get required info, let salt retry. Integrations loaded by this script are non-default integrations.
echo "Skipping $AGENT_POLICY.. "
continue
fi
for INTEGRATION in $integrations; do
if ! PACKAGE_NAME=$(elastic_fleet_integration_policy_package_name "$AGENT_POLICY" "$INTEGRATION"); then
echo "Not adding $INTEGRATION, couldn't get package name"
continue
fi
# non-default integrations that are in-use in any policy
if ! [[ " ${default_packages[@]} " =~ " $PACKAGE_NAME " ]]; then
in_use_integrations+=("$PACKAGE_NAME")
fi
done
done
if [[ -f $STATE_FILE_SUCCESS ]]; then
if retry 3 1 "curl -s -K /opt/so/conf/elasticsearch/curl.config --output /dev/null --silent --head --fail localhost:5601/api/fleet/epm/packages"; then
# Package_list contains all integrations beta / non-beta.
latest_package_list=$(/usr/sbin/so-elastic-fleet-package-list)
echo '{ "packages" : []}' > $BULK_INSTALL_PACKAGE_LIST
rm -f $INSTALLED_PACKAGE_LIST
echo $latest_package_list | jq '{packages: [.items[] | {name: .name, latest_version: .version, installed_version: .savedObject.attributes.install_version, subscription: .conditions.elastic.subscription }]}' >> $INSTALLED_PACKAGE_LIST
while read -r package; do
# get package details
package_name=$(echo "$package" | jq -r '.name')
latest_version=$(echo "$package" | jq -r '.latest_version')
installed_version=$(echo "$package" | jq -r '.installed_version')
subscription=$(echo "$package" | jq -r '.subscription')
bulk_package=$(echo "$package" | jq '{name: .name, version: .latest_version}' )
if [[ ! "${EXCLUDED_INTEGRATIONS[@]}" =~ "$package_name" ]]; then
{% if not SUB %}
if [[ "$subscription" != "basic" && "$subscription" != "null" && -n "$subscription" ]]; then
# pass over integrations that require non-basic elastic license
echo "$package_name integration requires an Elastic license of $subscription or greater... skipping"
continue
else
if [[ "$installed_version" == "null" || -z "$installed_version" ]]; then
echo "$package_name is not installed... Adding to next update."
jq --argjson package "$bulk_package" '.packages += [$package]' $BULK_INSTALL_PACKAGE_LIST > $BULK_INSTALL_PACKAGE_TMP && mv $BULK_INSTALL_PACKAGE_TMP $BULK_INSTALL_PACKAGE_LIST
PENDING_UPDATE=true
else
results=$(compare_versions "$latest_version" "$installed_version")
if [ $results == "greater" ]; then
{#- When auto_upgrade_integrations is false, skip upgrading in_use_integrations #}
{%- if not AUTO_UPGRADE_INTEGRATIONS %}
if ! [[ " ${in_use_integrations[@]} " =~ " $package_name " ]]; then
{%- endif %}
echo "$package_name is at version $installed_version latest version is $latest_version... Adding to next update."
jq --argjson package "$bulk_package" '.packages += [$package]' $BULK_INSTALL_PACKAGE_LIST > $BULK_INSTALL_PACKAGE_TMP && mv $BULK_INSTALL_PACKAGE_TMP $BULK_INSTALL_PACKAGE_LIST
PENDING_UPDATE=true
{%- if not AUTO_UPGRADE_INTEGRATIONS %}
else
echo "skipping available upgrade for in use integration - $package_name."
fi
{%- endif %}
fi
fi
fi
{% else %}
if [[ "$installed_version" == "null" || -z "$installed_version" ]]; then
echo "$package_name is not installed... Adding to next update."
jq --argjson package "$bulk_package" '.packages += [$package]' $BULK_INSTALL_PACKAGE_LIST > $BULK_INSTALL_PACKAGE_TMP && mv $BULK_INSTALL_PACKAGE_TMP $BULK_INSTALL_PACKAGE_LIST
PENDING_UPDATE=true
else
results=$(compare_versions "$latest_version" "$installed_version")
if [ $results == "greater" ]; then
{#- When auto_upgrade_integrations is false, skip upgrading in_use_integrations #}
{%- if not AUTO_UPGRADE_INTEGRATIONS %}
if ! [[ " ${in_use_integrations[@]} " =~ " $package_name " ]]; then
{%- endif %}
echo "$package_name is at version $installed_version latest version is $latest_version... Adding to next update."
jq --argjson package "$bulk_package" '.packages += [$package]' $BULK_INSTALL_PACKAGE_LIST > $BULK_INSTALL_PACKAGE_TMP && mv $BULK_INSTALL_PACKAGE_TMP $BULK_INSTALL_PACKAGE_LIST
PENDING_UPDATE=true
{%- if not AUTO_UPGRADE_INTEGRATIONS %}
else
echo "skipping available upgrade for in use integration - $package_name."
fi
{%- endif %}
fi
fi
{% endif %}
else
echo "Skipping $package_name..."
fi
done <<< "$(jq -c '.packages[]' "$INSTALLED_PACKAGE_LIST")"
if [ "$PENDING_UPDATE" = true ]; then
# Run chunked install of packages
echo "" > $BULK_INSTALL_OUTPUT
pkg_group=1
pkg_filename="${BULK_INSTALL_PACKAGE_LIST%.json}"
jq -c '.packages | _nwise(25)' $BULK_INSTALL_PACKAGE_LIST | while read -r line; do
echo "$line" | jq '{ "packages": . }' > "${pkg_filename}_${pkg_group}.json"
pkg_group=$((pkg_group + 1))
done
for file in "${pkg_filename}_"*.json; do
[ -e "$file" ] || continue
if ! elastic_fleet_bulk_package_install $file >> $BULK_INSTALL_OUTPUT; then
# integrations loaded my this script are non-essential and shouldn't cause exit, skip them for now next highstate run can retry
echo "Failed to complete a chunk of bulk package installs -- $file "
continue
fi
done
# cleanup any temp files for chunked package install
rm -f ${pkg_filename}_*.json $BULK_INSTALL_PACKAGE_LIST
else
echo "Elastic integrations don't appear to need installation/updating..."
fi
# Write out file for generating index/component/ilm templates
if latest_installed_package_list=$(elastic_fleet_installed_packages); then
echo $latest_installed_package_list | jq '[.items[] | {name: .name, es_index_patterns: .dataStreams}]' > $PACKAGE_COMPONENTS
fi
if retry 3 1 "so-elasticsearch-query / --fail --output /dev/null"; then
# Refresh installed component template list
latest_component_templates_list=$(so-elasticsearch-query _component_template | jq '.component_templates[] | .name' | jq -s '.')
echo $latest_component_templates_list > $COMPONENT_TEMPLATES
fi
else
# This is the installation of add-on integrations and upgrade of existing integrations. Exiting without error, next highstate will attempt to re-run.
echo "Elastic Fleet does not appear to be responding... Exiting... "
exit 0
fi
else
# This message will appear when an update to core integration is made and this script is run at the same time as
# elasticsearch.enabled -> detects change to core index settings -> deletes estemplates.txt
echo "Elasticsearch may not be fully configured yet or is currently updating core index settings."
exit 0
fi
@@ -15,22 +15,49 @@ if ! is_manager_node; then
fi
function update_logstash_outputs() {
# Generate updated JSON payload
JSON_STRING=$(jq -n --arg UPDATEDLIST $NEW_LIST_JSON '{"name":"grid-logstash","type":"logstash","hosts": $UPDATEDLIST,"is_default":true,"is_default_monitoring":true,"config_yaml":""}')
if logstash_policy=$(curl -K /opt/so/conf/elasticsearch/curl.config -L "http://localhost:5601/api/fleet/outputs/so-manager_logstash" --retry 3 --retry-delay 10 --fail 2>/dev/null); then
SSL_CONFIG=$(echo "$logstash_policy" | jq -r '.item.ssl')
if SECRETS=$(echo "$logstash_policy" | jq -er '.item.secrets' 2>/dev/null); then
JSON_STRING=$(jq -n \
--arg UPDATEDLIST "$NEW_LIST_JSON" \
--argjson SECRETS "$SECRETS" \
--argjson SSL_CONFIG "$SSL_CONFIG" \
'{"name":"grid-logstash","type":"logstash","hosts": $UPDATEDLIST,"is_default":true,"is_default_monitoring":true,"config_yaml":"","ssl": $SSL_CONFIG,"secrets": $SECRETS}')
else
JSON_STRING=$(jq -n \
--arg UPDATEDLIST "$NEW_LIST_JSON" \
--argjson SSL_CONFIG "$SSL_CONFIG" \
'{"name":"grid-logstash","type":"logstash","hosts": $UPDATEDLIST,"is_default":true,"is_default_monitoring":true,"config_yaml":"","ssl": $SSL_CONFIG}')
fi
fi
# Update Logstash Outputs
curl -K /opt/so/conf/elasticsearch/curl.config -L -X PUT "localhost:5601/api/fleet/outputs/so-manager_logstash" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING" | jq
}
function update_kafka_outputs() {
# Make sure SSL configuration is included in policy updates for Kafka output. SSL is configured in so-elastic-fleet-setup
SSL_CONFIG=$(curl -K /opt/so/conf/elasticsearch/curl.config -L "http://localhost:5601/api/fleet/outputs/so-manager_kafka" | jq -r '.item.ssl')
JSON_STRING=$(jq -n \
--arg UPDATEDLIST "$NEW_LIST_JSON" \
--argjson SSL_CONFIG "$SSL_CONFIG" \
'{"name": "grid-kafka","type": "kafka","hosts": $UPDATEDLIST,"is_default": true,"is_default_monitoring": true,"config_yaml": "","ssl": $SSL_CONFIG}')
# Update Kafka outputs
curl -K /opt/so/conf/elasticsearch/curl.config -L -X PUT "localhost:5601/api/fleet/outputs/so-manager_kafka" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING" | jq
if kafka_policy=$(curl -K /opt/so/conf/elasticsearch/curl.config -L "http://localhost:5601/api/fleet/outputs/so-manager_kafka" --fail 2>/dev/null); then
SSL_CONFIG=$(echo "$kafka_policy" | jq -r '.item.ssl')
if SECRETS=$(echo "$kafka_policy" | jq -er '.item.secrets' 2>/dev/null); then
# Update policy when fleet has secrets enabled
JSON_STRING=$(jq -n \
--arg UPDATEDLIST "$NEW_LIST_JSON" \
--argjson SSL_CONFIG "$SSL_CONFIG" \
--argjson SECRETS "$SECRETS" \
'{"name": "grid-kafka","type": "kafka","hosts": $UPDATEDLIST,"is_default": true,"is_default_monitoring": true,"config_yaml": "","ssl": $SSL_CONFIG,"secrets": $SECRETS}')
else
# Update policy when fleet has secrets disabled or policy hasn't been force updated
JSON_STRING=$(jq -n \
--arg UPDATEDLIST "$NEW_LIST_JSON" \
--argjson SSL_CONFIG "$SSL_CONFIG" \
'{"name": "grid-kafka","type": "kafka","hosts": $UPDATEDLIST,"is_default": true,"is_default_monitoring": true,"config_yaml": "","ssl": $SSL_CONFIG}')
fi
# Update Kafka outputs
curl -K /opt/so/conf/elasticsearch/curl.config -L -X PUT "localhost:5601/api/fleet/outputs/so-manager_kafka" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING" | jq
else
printf "Failed to get current Kafka output policy..."
exit 1
fi
}
{% if GLOBALS.pipeline == "KAFKA" %}
@@ -10,8 +10,16 @@
{%- for PACKAGE in SUPPORTED_PACKAGES %}
echo "Setting up {{ PACKAGE }} package..."
VERSION=$(elastic_fleet_package_version_check "{{ PACKAGE }}")
elastic_fleet_package_install "{{ PACKAGE }}" "$VERSION"
if VERSION=$(elastic_fleet_package_version_check "{{ PACKAGE }}"); then
if ! elastic_fleet_package_install "{{ PACKAGE }}" "$VERSION"; then
# packages loaded by this script should never fail to install and REQUIRED before an installation of SO can be considered successful
echo -e "\nERROR: Failed to install default integration package -- $PACKAGE $VERSION"
exit 1
fi
else
echo -e "\nERROR: Failed to get version information for integration $PACKAGE"
exit 1
fi
echo
{%- endfor %}
echo
@@ -10,8 +10,15 @@
{%- for PACKAGE in SUPPORTED_PACKAGES %}
echo "Upgrading {{ PACKAGE }} package..."
VERSION=$(elastic_fleet_package_latest_version_check "{{ PACKAGE }}")
elastic_fleet_package_install "{{ PACKAGE }}" "$VERSION"
if VERSION=$(elastic_fleet_package_latest_version_check "{{ PACKAGE }}"); then
if ! elastic_fleet_package_install "{{ PACKAGE }}" "$VERSION"; then
# exit 1 on failure to upgrade a default package, allow salt to handle retries
echo -e "\nERROR: Failed to upgrade $PACKAGE to version: $VERSION"
exit 1
fi
else
echo -e "\nERROR: Failed to get version information for integration $PACKAGE"
fi
echo
{%- endfor %}
echo
@@ -23,18 +23,17 @@ if [[ "$RETURN_CODE" != "0" ]]; then
exit 1
fi
ALIASES=".fleet-servers .fleet-policies-leader .fleet-policies .fleet-agents .fleet-artifacts .fleet-enrollment-api-keys .kibana_ingest"
for ALIAS in ${ALIASES}
do
ALIASES=(.fleet-servers .fleet-policies-leader .fleet-policies .fleet-agents .fleet-artifacts .fleet-enrollment-api-keys .kibana_ingest)
for ALIAS in "${ALIASES[@]}"; do
# Get all concrete indices from alias
INDXS=$(curl -K /opt/so/conf/kibana/curl.config -s -k -L -H "Content-Type: application/json" "https://localhost:9200/_resolve/index/${ALIAS}" | jq -r '.aliases[].indices[]')
# Delete all resolved indices
for INDX in ${INDXS}
do
if INDXS_RAW=$(curl -sK /opt/so/conf/kibana/curl.config -s -k -L -H "Content-Type: application/json" "https://localhost:9200/_resolve/index/${ALIAS}" --fail 2>/dev/null); then
INDXS=$(echo "$INDXS_RAW" | jq -r '.aliases[].indices[]')
# Delete all resolved indices
for INDX in ${INDXS}; do
status "Deleting $INDX"
curl -K /opt/so/conf/kibana/curl.config -s -k -L -H "Content-Type: application/json" "https://localhost:9200/${INDX}" -XDELETE
done
done
fi
done
# Restarting Kibana...
@@ -51,18 +50,75 @@ if [[ "$RETURN_CODE" != "0" ]]; then
fi
printf "\n### Create ES Token ###\n"
ESTOKEN=$(curl -K /opt/so/conf/elasticsearch/curl.config -L -X POST "localhost:5601/api/fleet/service_tokens" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' | jq -r .value)
if ESTOKEN_RAW=$(fleet_api "service_tokens" -XPOST -H 'kbn-xsrf: true' -H 'Content-Type: application/json'); then
ESTOKEN=$(echo "$ESTOKEN_RAW" | jq -r .value)
else
echo -e "\nFailed to create ES token..."
exit 1
fi
### Create Outputs & Fleet URLs ###
### Create Outputs, Fleet Policy and Fleet URLs ###
# Create the Manager Elasticsearch Output first and set it as the default output
printf "\nAdd Manager Elasticsearch Output...\n"
ESCACRT=$(openssl x509 -in $INTCA)
JSON_STRING=$( jq -n \
--arg ESCACRT "$ESCACRT" \
'{"name":"so-manager_elasticsearch","id":"so-manager_elasticsearch","type":"elasticsearch","hosts":["https://{{ GLOBALS.manager_ip }}:9200","https://{{ GLOBALS.manager }}:9200"],"is_default":true,"is_default_monitoring":true,"config_yaml":"","ssl":{"certificate_authorities": [$ESCACRT]}}' )
curl -K /opt/so/conf/elasticsearch/curl.config -L -X POST "localhost:5601/api/fleet/outputs" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"
ESCACRT=$(openssl x509 -in "$INTCA" -outform DER | sha256sum | cut -d' ' -f1 | tr '[:lower:]' '[:upper:]')
JSON_STRING=$(jq -n \
--arg ESCACRT "$ESCACRT" \
'{"name":"so-manager_elasticsearch","id":"so-manager_elasticsearch","type":"elasticsearch","hosts":["https://{{ GLOBALS.manager_ip }}:9200","https://{{ GLOBALS.manager }}:9200"],"is_default":false,"is_default_monitoring":false,"config_yaml":"","ca_trusted_fingerprint": $ESCACRT}')
if ! fleet_api "outputs" -XPOST -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"; then
echo -e "\nFailed to create so-elasticsearch_manager policy..."
exit 1
fi
printf "\n\n"
printf "\nCreate Logstash Output Config if node is not an Import or Eval install\n"
# so-manager_elasticsearch should exist and be disabled. Now update it before checking its the only default policy
MANAGER_OUTPUT_ENABLED=$(echo "$JSON_STRING" | jq 'del(.id) | .is_default = true | .is_default_monitoring = true')
if ! curl -sK /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 "$MANAGER_OUTPUT_ENABLED"; then
echo -e "\n failed to update so-manager_elasticsearch"
exit 1
fi
# At this point there should only be two policies. fleet-default-output & so-manager_elasticsearch
status "Verifying so-manager_elasticsearch policy is configured as the current default"
# Grab the fleet-default-output policy instead of so-manager_elasticsearch, because a weird state can exist where both fleet-default-output & so-elasticsearch_manager can be set as the active default output for logs / metrics. Resulting in logs not ingesting on import/eval nodes
if DEFAULTPOLICY=$(fleet_api "outputs/fleet-default-output"); then
fleet_default=$(echo "$DEFAULTPOLICY" | jq -er '.item.is_default')
fleet_default_monitoring=$(echo "$DEFAULTPOLICY" | jq -er '.item.is_default_monitoring')
# Check that fleet-default-output isn't configured as a default for anything ( both variables return false )
if [[ $fleet_default == "false" ]] && [[ $fleet_default_monitoring == "false" ]]; then
echo -e "\nso-manager_elasticsearch is configured as the current default policy..."
else
echo -e "\nVerification of so-manager_elasticsearch policy failed... The default 'fleet-default-output' output is still active..."
exit 1
fi
else
# fleet-output-policy is created automatically by fleet when started. Should always exist on any installation type
echo -e "\nDefault fleet-default-output policy doesn't exist...\n"
exit 1
fi
# Create the Manager Fleet Server Host Agent Policy
# This has to be done while the Elasticsearch Output is set to the default Output
printf "Create Manager Fleet Server Policy...\n"
if ! elastic_fleet_policy_create "FleetServer_{{ GLOBALS.hostname }}" "Fleet Server - {{ GLOBALS.hostname }}" "false" "120"; then
echo -e "\n Failed to create Manager fleet server policy..."
exit 1
fi
# 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
if ! elastic_fleet_integration_create "$UPDATED_INTEGRATION_POLICY"; then
echo -e "\nFailed to create Fleet server integration for Manager.."
exit 1
fi
# 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"
{% if grains.role not in ['so-import', 'so-eval'] %}
LOGSTASHCRT=$(openssl x509 -in /etc/pki/elasticfleet-logstash.crt)
LOGSTASHKEY=$(openssl rsa -in /etc/pki/elasticfleet-logstash.key)
@@ -71,9 +127,12 @@ JSON_STRING=$( jq -n \
--arg LOGSTASHCRT "$LOGSTASHCRT" \
--arg LOGSTASHKEY "$LOGSTASHKEY" \
--arg LOGSTASHCA "$LOGSTASHCA" \
'{"name":"grid-logstash","is_default":true,"is_default_monitoring":true,"id":"so-manager_logstash","type":"logstash","hosts":["{{ GLOBALS.manager_ip }}:5055", "{{ GLOBALS.manager }}:5055"],"config_yaml":"","ssl":{"certificate": $LOGSTASHCRT,"key": $LOGSTASHKEY,"certificate_authorities":[ $LOGSTASHCA ]},"proxy_id":null}'
'{"name":"grid-logstash","is_default":true,"is_default_monitoring":true,"id":"so-manager_logstash","type":"logstash","hosts":["{{ GLOBALS.manager_ip }}:5055", "{{ GLOBALS.manager }}:5055"],"config_yaml":"","ssl":{"certificate": $LOGSTASHCRT,"certificate_authorities":[ $LOGSTASHCA ]},"secrets":{"ssl":{"key": $LOGSTASHKEY }},"proxy_id":null}'
)
curl -K /opt/so/conf/elasticsearch/curl.config -L -X POST "localhost:5601/api/fleet/outputs" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"
if ! fleet_api "outputs" -XPOST -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"; then
echo -e "\nFailed to create logstash fleet output"
exit 1
fi
printf "\n\n"
{%- endif %}
@@ -91,7 +150,10 @@ else
fi
## This array replaces whatever URLs are currently configured
curl -K /opt/so/conf/elasticsearch/curl.config -L -X POST "localhost:5601/api/fleet/fleet_server_hosts" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"
if ! fleet_api "fleet_server_hosts" -XPOST -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"; then
echo -e "\nFailed to add manager fleet URL"
exit 1
fi
printf "\n\n"
### Create Policies & Associated Integration Configuration ###
@@ -101,24 +163,23 @@ printf "\n\n"
# Load Elasticsearch templates
/usr/sbin/so-elasticsearch-templates-load
# Manager Fleet Server Host
elastic_fleet_policy_create "FleetServer_{{ GLOBALS.hostname }}" "Fleet Server - {{ GLOBALS.hostname }}" "true" "120"
#Temp Fixup for ES Output bug
JSON_STRING=$( jq -n \
--arg NAME "FleetServer_{{ GLOBALS.hostname }}" \
'{"name": $NAME,"description": $NAME,"namespace":"default","monitoring_enabled":["logs"],"inactivity_timeout":120,"data_output_id":"so-manager_elasticsearch"}'
)
curl -K /opt/so/conf/elasticsearch/curl.config -L -X PUT "localhost:5601/api/fleet/agent_policies/FleetServer_{{ GLOBALS.hostname }}" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"
# Initial Endpoints Policy
elastic_fleet_policy_create "endpoints-initial" "Initial Endpoint Policy" "false" "1209600"
if ! elastic_fleet_policy_create "endpoints-initial" "Initial Endpoint Policy" "false" "1209600"; then
echo -e "\nFailed to create endpoints-initial policy..."
exit 1
fi
# Grid Nodes - General Policy
elastic_fleet_policy_create "so-grid-nodes_general" "SO Grid Nodes - General Purpose" "false" "1209600"
if ! elastic_fleet_policy_create "so-grid-nodes_general" "SO Grid Nodes - General Purpose" "false" "1209600"; then
echo -e "\nFailed to create so-grid-nodes_general policy..."
exit 1
fi
# Grid Nodes - Heavy Node Policy
elastic_fleet_policy_create "so-grid-nodes_heavy" "SO Grid Nodes - Heavy Node" "false" "1209600"
if ! elastic_fleet_policy_create "so-grid-nodes_heavy" "SO Grid Nodes - Heavy Node" "false" "1209600"; then
echo -e "\nFailed to create so-grid-nodes_heavy policy..."
exit 1
fi
# Load Integrations for default policies
so-elastic-fleet-integration-policy-load
@@ -130,14 +191,34 @@ JSON_STRING=$( jq -n \
'{"name":$NAME,"host":$URL,"is_default":true}'
)
curl -K /opt/so/conf/elasticsearch/curl.config -L -X POST "localhost:5601/api/fleet/agent_download_sources" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"
if ! fleet_api "agent_download_sources" -XPOST -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"; then
echo -e "\nFailed to update Elastic Agent artifact URL"
exit 1
fi
### Finalization ###
# Query for Enrollment Tokens for default policies
ENDPOINTSENROLLMENTOKEN=$(curl -K /opt/so/conf/elasticsearch/curl.config -L "localhost:5601/api/fleet/enrollment_api_keys" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' | jq .list | jq -r -c '.[] | select(.policy_id | contains("endpoints-initial")) | .api_key')
GRIDNODESENROLLMENTOKENGENERAL=$(curl -K /opt/so/conf/elasticsearch/curl.config -L "localhost:5601/api/fleet/enrollment_api_keys" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' | jq .list | jq -r -c '.[] | select(.policy_id | contains("so-grid-nodes_general")) | .api_key')
GRIDNODESENROLLMENTOKENHEAVY=$(curl -K /opt/so/conf/elasticsearch/curl.config -L "localhost:5601/api/fleet/enrollment_api_keys" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' | jq .list | jq -r -c '.[] | select(.policy_id | contains("so-grid-nodes_heavy")) | .api_key')
if ENDPOINTSENROLLMENTOKEN_RAW=$(fleet_api "enrollment_api_keys" -H 'kbn-xsrf: true' -H 'Content-Type: application/json'); then
ENDPOINTSENROLLMENTOKEN=$(echo "$ENDPOINTSENROLLMENTOKEN_RAW" | jq .list | jq -r -c '.[] | select(.policy_id | contains("endpoints-initial")) | .api_key')
else
echo -e "\nFailed to query for Endpoints enrollment token"
exit 1
fi
if GRIDNODESENROLLMENTOKENGENERAL_RAW=$(fleet_api "enrollment_api_keys" -H 'kbn-xsrf: true' -H 'Content-Type: application/json'); then
GRIDNODESENROLLMENTOKENGENERAL=$(echo "$GRIDNODESENROLLMENTOKENGENERAL_RAW" | jq .list | jq -r -c '.[] | select(.policy_id | contains("so-grid-nodes_general")) | .api_key')
else
echo -e "\nFailed to query for Grid nodes - General enrollment token"
exit 1
fi
if GRIDNODESENROLLMENTOKENHEAVY_RAW=$(fleet_api "enrollment_api_keys" -H 'kbn-xsrf: true' -H 'Content-Type: application/json'); then
GRIDNODESENROLLMENTOKENHEAVY=$(echo "$GRIDNODESENROLLMENTOKENHEAVY_RAW" | jq .list | jq -r -c '.[] | select(.policy_id | contains("so-grid-nodes_heavy")) | .api_key')
else
echo -e "\nFailed to query for Grid nodes - Heavy enrollment token"
exit 1
fi
# Store needed data in minion pillar
pillar_file=/opt/so/saltstack/local/pillar/minions/{{ GLOBALS.minion_id }}.sls
@@ -165,4 +246,4 @@ salt-call state.apply elasticfleet queue=True
# Generate installers & install Elastic Agent on the node
so-elastic-agent-gen-installers
salt-call state.apply elasticfleet.install_agent_grid queue=True
exit 0
exit 0
@@ -5,46 +5,78 @@
# Elastic License 2.0.
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% if GLOBALS.role in ['so-manager', 'so-standalone', 'so-managersearch'] %}
{% if GLOBALS.role in ['so-manager', 'so-standalone', 'so-managersearch', 'so-managerhype'] %}
. /usr/sbin/so-common
force=false
while [[ $# -gt 0 ]]; do
case $1 in
-f|--force)
force=true
shift
;;
*)
echo "Unknown option $1"
echo "Usage: $0 [-f|--force]"
exit 1
;;
esac
done
# Check to make sure that Kibana API is up & ready
RETURN_CODE=0
wait_for_web_response "http://localhost:5601/api/fleet/settings" "fleet" 300 "curl -K /opt/so/conf/elasticsearch/curl.config"
RETURN_CODE=$?
if [[ "$RETURN_CODE" != "0" ]]; then
printf "Kibana API not accessible, can't setup Elastic Fleet output policy for Kafka..."
exit 1
echo -e "\nKibana API not accessible, can't setup Elastic Fleet output policy for Kafka...\n"
exit 1
fi
output=$(curl -sK /opt/so/conf/elasticsearch/curl.config -L "http://localhost:5601/api/fleet/outputs" | jq -r .items[].id)
KAFKACRT=$(openssl x509 -in /etc/pki/elasticfleet-kafka.crt)
KAFKAKEY=$(openssl rsa -in /etc/pki/elasticfleet-kafka.key)
KAFKACA=$(openssl x509 -in /etc/pki/tls/certs/intca.crt)
KAFKA_OUTPUT_VERSION="2.6.0"
if ! echo "$output" | grep -q "so-manager_kafka"; then
KAFKACRT=$(openssl x509 -in /etc/pki/elasticfleet-kafka.crt)
KAFKAKEY=$(openssl rsa -in /etc/pki/elasticfleet-kafka.key)
KAFKACA=$(openssl x509 -in /etc/pki/tls/certs/intca.crt)
KAFKA_OUTPUT_VERSION="2.6.0"
if ! kafka_output=$(curl -sK /opt/so/conf/elasticsearch/curl.config -L "http://localhost:5601/api/fleet/outputs/so-manager_kafka" --fail 2>/dev/null); then
# Create a new output policy for Kafka. Default is disabled 'is_default: false & is_default_monitoring: false'
JSON_STRING=$( jq -n \
--arg KAFKACRT "$KAFKACRT" \
--arg KAFKAKEY "$KAFKAKEY" \
--arg KAFKACA "$KAFKACA" \
--arg MANAGER_IP "{{ GLOBALS.manager_ip }}:9092" \
--arg KAFKA_OUTPUT_VERSION "$KAFKA_OUTPUT_VERSION" \
'{ "name": "grid-kafka", "id": "so-manager_kafka", "type": "kafka", "hosts": [ $MANAGER_IP ], "is_default": false, "is_default_monitoring": false, "config_yaml": "", "ssl": { "certificate_authorities": [ $KAFKACA ], "certificate": $KAFKACRT, "key": $KAFKAKEY, "verification_mode": "full" }, "proxy_id": null, "client_id": "Elastic", "version": $KAFKA_OUTPUT_VERSION, "compression": "none", "auth_type": "ssl", "partition": "round_robin", "round_robin": { "group_events": 1 }, "topics":[{"topic":"%{[event.module]}-securityonion","when":{"type":"regexp","condition":"event.module:.+"}},{"topic":"default-securityonion"}], "headers": [ { "key": "", "value": "" } ], "timeout": 30, "broker_timeout": 30, "required_acks": 1 }'
)
curl -sK /opt/so/conf/elasticsearch/curl.config -L -X POST "localhost:5601/api/fleet/outputs" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING" -o /dev/null
refresh_output=$(curl -sK /opt/so/conf/elasticsearch/curl.config -L "http://localhost:5601/api/fleet/outputs" | jq -r .items[].id)
if ! echo "$refresh_output" | grep -q "so-manager_kafka"; then
echo -e "\nFailed to setup Elastic Fleet output policy for Kafka...\n"
--arg KAFKACRT "$KAFKACRT" \
--arg KAFKAKEY "$KAFKAKEY" \
--arg KAFKACA "$KAFKACA" \
--arg MANAGER_IP "{{ GLOBALS.manager_ip }}:9092" \
--arg KAFKA_OUTPUT_VERSION "$KAFKA_OUTPUT_VERSION" \
'{"name":"grid-kafka", "id":"so-manager_kafka","type":"kafka","hosts":[ $MANAGER_IP ],"is_default":false,"is_default_monitoring":false,"config_yaml":"","ssl":{"certificate_authorities":[ $KAFKACA ],"certificate": $KAFKACRT ,"key":"","verification_mode":"full"},"proxy_id":null,"client_id":"Elastic","version": $KAFKA_OUTPUT_VERSION ,"compression":"none","auth_type":"ssl","partition":"round_robin","round_robin":{"group_events":10},"topics":[{"topic":"default-securityonion"}],"headers":[{"key":"","value":""}],"timeout":30,"broker_timeout":30,"required_acks":1,"secrets":{"ssl":{"key": $KAFKAKEY }}}'
)
if ! response=$(curl -sK /opt/so/conf/elasticsearch/curl.config -L -X POST "localhost:5601/api/fleet/outputs" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING" --fail 2>/dev/null); then
echo -e "\nFailed to setup Elastic Fleet output policy for Kafka...\n"
exit 1
else
echo -e "\nSuccessfully setup Elastic Fleet output policy for Kafka...\n"
exit 0
fi
elif kafka_output=$(curl -sK /opt/so/conf/elasticsearch/curl.config -L "http://localhost:5601/api/fleet/outputs/so-manager_kafka" --fail 2>/dev/null) && [[ "$force" == "true" ]]; then
# force an update to Kafka policy. Keep the current value of Kafka output policy (enabled/disabled).
ENABLED_DISABLED=$(echo "$kafka_output" | jq -e .item.is_default)
HOSTS=$(echo "$kafka_output" | jq -r '.item.hosts')
JSON_STRING=$( jq -n \
--arg KAFKACRT "$KAFKACRT" \
--arg KAFKAKEY "$KAFKAKEY" \
--arg KAFKACA "$KAFKACA" \
--arg ENABLED_DISABLED "$ENABLED_DISABLED"\
--arg KAFKA_OUTPUT_VERSION "$KAFKA_OUTPUT_VERSION" \
--argjson HOSTS "$HOSTS" \
'{"name":"grid-kafka","type":"kafka","hosts":$HOSTS,"is_default":$ENABLED_DISABLED,"is_default_monitoring":$ENABLED_DISABLED,"config_yaml":"","ssl":{"certificate_authorities":[ $KAFKACA ],"certificate": $KAFKACRT ,"key":"","verification_mode":"full"},"proxy_id":null,"client_id":"Elastic","version": $KAFKA_OUTPUT_VERSION ,"compression":"none","auth_type":"ssl","partition":"round_robin","round_robin":{"group_events":10},"topics":[{"topic":"default-securityonion"}],"headers":[{"key":"","value":""}],"timeout":30,"broker_timeout":30,"required_acks":1,"secrets":{"ssl":{"key": $KAFKAKEY }}}'
)
if ! response=$(curl -sK /opt/so/conf/elasticsearch/curl.config -L -X PUT "localhost:5601/api/fleet/outputs/so-manager_kafka" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING" --fail 2>/dev/null); then
echo -e "\nFailed to force update to Elastic Fleet output policy for Kafka...\n"
exit 1
elif echo "$refresh_output" | grep -q "so-manager_kafka"; then
echo -e "\nSuccessfully setup Elastic Fleet output policy for Kafka...\n"
else
echo -e "\nForced update to Elastic Fleet output policy for Kafka...\n"
fi
elif echo "$output" | grep -q "so-manager_kafka"; then
else
echo -e "\nElastic Fleet output policy for Kafka already exists...\n"
fi
{% else %}
+1 -1
View File
@@ -15,7 +15,7 @@
elastic_auth_pillar:
file.managed:
- name: /opt/so/saltstack/local/pillar/elasticsearch/auth.sls
- mode: 600
- mode: 640
- reload_pillar: True
- contents: |
elasticsearch:
+22 -8
View File
@@ -1,23 +1,37 @@
{# 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. #}
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% import_yaml 'elasticsearch/defaults.yaml' as ELASTICSEARCHDEFAULTS with context %}
{% set HIGHLANDER = salt['pillar.get']('global:highlander', False) %}
{# ES_LOGSTASH_NODES is the same as LOGSTASH_NODES from logstash/map.jinja but heavynodes and fleet nodes are removed #}
{% set ES_LOGSTASH_NODES = [] %}
{% set node_data = salt['pillar.get']('logstash:nodes', {GLOBALS.role.split('-')[1]: {GLOBALS.hostname: {'ip': GLOBALS.node_ip}}}) %}
{# this is a list of dicts containing hostname:ip for elasticsearch nodes that need to know about each other for cluster #}
{% set ELASTICSEARCH_SEED_HOSTS = [] %}
{% set node_data = salt['pillar.get']('elasticsearch:nodes', {GLOBALS.role.split('-')[1]: {GLOBALS.hostname: {'ip': GLOBALS.node_ip}}}) %}
{% for node_type, node_details in node_data.items() | sort %}
{% if node_type not in ['heavynode', 'fleet'] %}
{% if node_type != 'heavynode' %}
{% for hostname in node_data[node_type].keys() %}
{% do ES_LOGSTASH_NODES.append({hostname:node_details[hostname].ip}) %}
{% do ELASTICSEARCH_SEED_HOSTS.append({hostname:node_details[hostname].ip}) %}
{% endfor %}
{% endif %}
{% endfor %}
{% if grains.id.split('_') | last in ['manager','managersearch','standalone'] %}
{% if ES_LOGSTASH_NODES | length > 1 %}
{# this is a list of dicts containing hostname:ip of all nodes running elasticsearch #}
{% set ELASTICSEARCH_NODES = [] %}
{% set node_data = salt['pillar.get']('elasticsearch:nodes', {GLOBALS.role.split('-')[1]: {GLOBALS.hostname: {'ip': GLOBALS.node_ip}}}) %}
{% for node_type, node_details in node_data.items() %}
{% for hostname in node_data[node_type].keys() %}
{% do ELASTICSEARCH_NODES.append({hostname:node_details[hostname].ip}) %}
{% endfor %}
{% endfor %}
{% if grains.id.split('_') | last in ['manager','managerhype','managersearch','standalone'] %}
{% if ELASTICSEARCH_SEED_HOSTS | length > 1 %}
{% do ELASTICSEARCHDEFAULTS.elasticsearch.config.update({'discovery': {'seed_hosts': []}}) %}
{% for NODE in ES_LOGSTASH_NODES %}
{% for NODE in ELASTICSEARCH_SEED_HOSTS %}
{% do ELASTICSEARCHDEFAULTS.elasticsearch.config.discovery.seed_hosts.append(NODE.keys()|first) %}
{% endfor %}
{% endif %}
+13
View File
@@ -47,6 +47,7 @@ elasticsearch_sbin:
- file_mode: 755
- exclude_pat:
- so-elasticsearch-pipelines # exclude this because we need to watch it for changes, we sync it in another state
- show_changes: False
elasticsearch_sbin_jinja:
file.recurse:
@@ -60,6 +61,7 @@ elasticsearch_sbin_jinja:
- so-elasticsearch-ilm-policy-load # exclude this because we need to watch it for changes, we sync it in another state
- defaults:
GLOBALS: {{ GLOBALS }}
- show_changes: False
so-elasticsearch-ilm-policy-load-script:
file.managed:
@@ -69,6 +71,7 @@ so-elasticsearch-ilm-policy-load-script:
- group: 939
- mode: 754
- template: jinja
- show_changes: False
so-elasticsearch-pipelines-script:
file.managed:
@@ -77,6 +80,7 @@ so-elasticsearch-pipelines-script:
- user: 930
- group: 939
- mode: 754
- show_changes: False
esingestdir:
file.directory:
@@ -110,6 +114,7 @@ esingestdynamicconf:
- user: 930
- group: 939
- template: jinja
- show_changes: False
esingestconf:
file.recurse:
@@ -117,6 +122,12 @@ esingestconf:
- source: salt://elasticsearch/files/ingest
- user: 930
- group: 939
- show_changes: False
# Remove .fleet_final_pipeline-1 because we are using global@custom now
so-fleet-final-pipeline-remove:
file.absent:
- name: /opt/so/conf/elasticsearch/ingest/.fleet_final_pipeline-1
# Auto-generate Elasticsearch ingest node pipelines from pillar
{% for pipeline, config in ELASTICSEARCHMERGED.pipelines.items() %}
@@ -148,6 +159,7 @@ esyml:
- defaults:
ESCONFIG: {{ ELASTICSEARCHMERGED.config }}
- template: jinja
- show_changes: False
esroles:
file.recurse:
@@ -157,6 +169,7 @@ esroles:
- template: jinja
- user: 930
- group: 939
- show_changes: False
nsmesdir:
file.directory:
File diff suppressed because it is too large Load Diff
+2 -1
View File
@@ -6,10 +6,11 @@
{% from 'allowed_states.map.jinja' import allowed_states %}
{% if sls.split('.')[0] in allowed_states %}
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% import_yaml 'elasticsearch/defaults.yaml' as ELASTICSEARCHDEFAULTS %}
so-elasticsearch_image:
docker_image.present:
- name: {{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elasticsearch:{{ GLOBALS.so_version }}
- name: {{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elasticsearch:{{ ELASTICSEARCHDEFAULTS.elasticsearch.version }}
{% else %}
+16 -8
View File
@@ -7,8 +7,8 @@
{% if sls.split('.')[0] in allowed_states %}
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% from 'docker/docker.map.jinja' import DOCKER %}
{% from 'logstash/map.jinja' import LOGSTASH_NODES %}
{% from 'elasticsearch/config.map.jinja' import ES_LOGSTASH_NODES %}
{% from 'elasticsearch/config.map.jinja' import ELASTICSEARCH_NODES %}
{% from 'elasticsearch/config.map.jinja' import ELASTICSEARCH_SEED_HOSTS %}
{% from 'elasticsearch/config.map.jinja' import ELASTICSEARCHMERGED %}
{% set TEMPLATES = salt['pillar.get']('elasticsearch:templates', {}) %}
{% from 'elasticsearch/template.map.jinja' import ES_INDEX_SETTINGS %}
@@ -19,7 +19,7 @@ include:
so-elasticsearch:
docker_container.running:
- image: {{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elasticsearch:{{ GLOBALS.so_version }}
- image: {{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elasticsearch:{{ ELASTICSEARCHMERGED.version }}
- hostname: elasticsearch
- name: so-elasticsearch
- user: elasticsearch
@@ -27,7 +27,7 @@ so-elasticsearch:
- sobridge:
- ipv4_address: {{ DOCKER.containers['so-elasticsearch'].ip }}
- extra_hosts:
{% for node in LOGSTASH_NODES %}
{% for node in ELASTICSEARCH_NODES %}
{% for hostname, ip in node.items() %}
- {{hostname}}:{{ip}}
{% endfor %}
@@ -38,7 +38,7 @@ so-elasticsearch:
{% endfor %}
{% endif %}
- environment:
{% if ES_LOGSTASH_NODES | length == 1 or GLOBALS.role == 'so-heavynode' %}
{% if (GLOBALS.role in GLOBALS.manager_roles and ELASTICSEARCH_SEED_HOSTS | length == 1) or GLOBALS.role == 'so-heavynode' %}
- discovery.type=single-node
{% endif %}
- ES_JAVA_OPTS=-Xms{{ GLOBALS.elasticsearch.es_heap }} -Xmx{{ GLOBALS.elasticsearch.es_heap }} -Des.transport.cname_in_publish_address=true -Dlog4j2.formatMsgNoLookups=true
@@ -116,6 +116,7 @@ escomponenttemplates:
- clean: True
- onchanges_in:
- file: so-elasticsearch-templates-reload
- show_changes: False
# Auto-generate templates from defaults file
{% for index, settings in ES_INDEX_SETTINGS.items() %}
@@ -127,6 +128,7 @@ es_index_template_{{index}}:
- defaults:
TEMPLATE_CONFIG: {{ settings.index_template }}
- template: jinja
- show_changes: False
- onchanges_in:
- file: so-elasticsearch-templates-reload
{% endif %}
@@ -146,12 +148,13 @@ es_template_{{TEMPLATE.split('.')[0] | replace("/","_") }}:
{% endif %}
- user: 930
- group: 939
- show_changes: False
- onchanges_in:
- file: so-elasticsearch-templates-reload
{% endfor %}
{% endif %}
{% if GLOBALS.role in GLOBALS.manager_roles %}
{% if GLOBALS.role in GLOBALS.manager_roles %}
so-es-cluster-settings:
cmd.run:
- name: /usr/sbin/so-elasticsearch-cluster-settings
@@ -160,7 +163,7 @@ so-es-cluster-settings:
- require:
- docker_container: so-elasticsearch
- file: elasticsearch_sbin_jinja
{% endif %}
{% endif %}
so-elasticsearch-ilm-policy-load:
cmd.run:
@@ -201,12 +204,17 @@ so-elasticsearch-roles-load:
- docker_container: so-elasticsearch
- file: elasticsearch_sbin_jinja
{% if grains.role in ['so-eval', 'so-standalone', 'so-managersearch', 'so-heavynode', 'so-manager'] %}
{% if grains.role in ['so-managersearch', 'so-manager', 'so-managerhype'] %}
{% set ap = "absent" %}
{% endif %}
{% if grains.role in ['so-eval', 'so-standalone', 'so-heavynode'] %}
{% if ELASTICSEARCHMERGED.index_clean %}
{% set ap = "present" %}
{% else %}
{% set ap = "absent" %}
{% endif %}
{% endif %}
{% if grains.role in ['so-eval', 'so-standalone', 'so-managersearch', 'so-heavynode', 'so-manager'] %}
so-elasticsearch-indices-delete:
cron.{{ap}}:
- name: /usr/sbin/so-elasticsearch-indices-delete > /opt/so/log/elasticsearch/cron-elasticsearch-indices-delete.log 2>&1
+10 -3
View File
@@ -26,7 +26,7 @@
{
"geoip": {
"field": "destination.ip",
"target_field": "destination_geo",
"target_field": "destination.as",
"database_file": "GeoLite2-ASN.mmdb",
"ignore_missing": true,
"ignore_failure": true,
@@ -36,13 +36,17 @@
{
"geoip": {
"field": "source.ip",
"target_field": "source_geo",
"target_field": "source.as",
"database_file": "GeoLite2-ASN.mmdb",
"ignore_missing": true,
"ignore_failure": true,
"properties": ["ip", "asn", "organization_name", "network"]
}
},
{ "rename": { "field": "destination.as.organization_name", "target_field": "destination.as.organization.name", "ignore_failure": true, "ignore_missing": true } },
{ "rename": { "field": "source.as.organization_name", "target_field": "source.as.organization.name", "ignore_failure": true, "ignore_missing": true } },
{ "rename": { "field": "destination.as.asn", "target_field": "destination.as.number", "ignore_failure": true, "ignore_missing": true } },
{ "rename": { "field": "source.as.asn", "target_field": "source.as.number", "ignore_failure": true, "ignore_missing": true } },
{ "set": { "if": "ctx.event?.severity == 1", "field": "event.severity_label", "value": "low", "override": true } },
{ "set": { "if": "ctx.event?.severity == 2", "field": "event.severity_label", "value": "medium", "override": true } },
{ "set": { "if": "ctx.event?.severity == 3", "field": "event.severity_label", "value": "high", "override": true } },
@@ -62,6 +66,7 @@
{ "split": { "if": "ctx.event?.dataset != null && ctx.event.dataset.contains('.')", "field": "event.dataset", "separator": "\\.", "target_field": "dataset_tag_temp" } },
{ "append": { "if": "ctx.dataset_tag_temp != null", "field": "tags", "value": "{{dataset_tag_temp.1}}" } },
{ "grok": { "if": "ctx.http?.response?.status_code != null", "field": "http.response.status_code", "patterns": ["%{NUMBER:http.response.status_code:long} %{GREEDYDATA}"]} },
{ "set": { "if": "ctx?.metadata?.kafka != null" , "field": "kafka.id", "value": "{{metadata.kafka.partition}}{{metadata.kafka.offset}}{{metadata.kafka.timestamp}}", "ignore_failure": true } },
{ "remove": { "field": [ "message2", "type", "fields", "category", "module", "dataset", "dataset_tag_temp", "event.dataset_temp" ], "ignore_missing": true, "ignore_failure": true } }
{%- endraw %}
{%- if HIGHLANDER %}
@@ -72,7 +77,9 @@
}
}
{%- endif %}
{%- raw %}
{%- raw %}
,
{ "pipeline": { "name": "global@custom", "ignore_missing_pipeline": true, "description": "[Fleet] Global pipeline for all data streams" } }
]
}
{% endraw %}
@@ -1,107 +0,0 @@
{
"version": 3,
"_meta": {
"managed_by": "fleet",
"managed": true
},
"description": "Final pipeline for processing all incoming Fleet Agent documents. \n",
"processors": [
{
"date": {
"description": "Add time when event was ingested (and remove sub-seconds to improve storage efficiency)",
"tag": "truncate-subseconds-event-ingested",
"field": "_ingest.timestamp",
"target_field": "event.ingested",
"formats": [
"ISO8601"
],
"output_format": "date_time_no_millis",
"ignore_failure": true
}
},
{
"remove": {
"description": "Remove any pre-existing untrusted values.",
"field": [
"event.agent_id_status",
"_security"
],
"ignore_missing": true
}
},
{
"set_security_user": {
"field": "_security",
"properties": [
"authentication_type",
"username",
"realm",
"api_key"
]
}
},
{
"script": {
"description": "Add event.agent_id_status based on the API key metadata and the agent.id contained in the event.\n",
"tag": "agent-id-status",
"source": "boolean is_user_trusted(def ctx, def users) {\n if (ctx?._security?.username == null) {\n return false;\n }\n\n def user = null;\n for (def item : users) {\n if (item?.username == ctx._security.username) {\n user = item;\n break;\n }\n }\n\n if (user == null || user?.realm == null || ctx?._security?.realm?.name == null) {\n return false;\n }\n\n if (ctx._security.realm.name != user.realm) {\n return false;\n }\n\n return true;\n}\n\nString verified(def ctx, def params) {\n // No agent.id field to validate.\n if (ctx?.agent?.id == null) {\n return \"missing\";\n }\n\n // Check auth metadata from API key.\n if (ctx?._security?.authentication_type == null\n // Agents only use API keys.\n || ctx._security.authentication_type != 'API_KEY'\n // Verify the API key owner before trusting any metadata it contains.\n || !is_user_trusted(ctx, params.trusted_users)\n // Verify the API key has metadata indicating the assigned agent ID.\n || ctx?._security?.api_key?.metadata?.agent_id == null) {\n return \"auth_metadata_missing\";\n }\n\n // The API key can only be used represent the agent.id it was issued to.\n if (ctx._security.api_key.metadata.agent_id != ctx.agent.id) {\n // Potential masquerade attempt.\n return \"mismatch\";\n }\n\n return \"verified\";\n}\n\nif (ctx?.event == null) {\n ctx.event = [:];\n}\n\nctx.event.agent_id_status = verified(ctx, params);",
"params": {
"trusted_users": [
{
"username": "elastic/fleet-server",
"realm": "_service_account"
},
{
"username": "cloud-internal-agent-server",
"realm": "found"
},
{
"username": "elastic",
"realm": "reserved"
}
]
}
}
},
{
"remove": {
"field": "_security",
"ignore_missing": true
}
},
{ "set": { "ignore_failure": true, "field": "event.module", "value": "elastic_agent" } },
{ "split": { "if": "ctx.event?.dataset != null && ctx.event.dataset.contains('.')", "field": "event.dataset", "separator": "\\.", "target_field": "module_temp" } },
{ "set": { "if": "ctx.module_temp != null", "override": true, "field": "event.module", "value": "{{module_temp.0}}" } },
{ "gsub": { "if": "ctx.event?.dataset != null && ctx.event.dataset.contains('.')", "field": "event.dataset", "pattern": "^[^.]*.", "replacement": "", "target_field": "dataset_tag_temp" } },
{ "append": { "if": "ctx.dataset_tag_temp != null", "field": "tags", "value": "{{dataset_tag_temp}}" } },
{ "set": { "if": "ctx.network?.direction == 'egress'", "override": true, "field": "network.initiated", "value": "true" } },
{ "set": { "if": "ctx.network?.direction == 'ingress'", "override": true, "field": "network.initiated", "value": "false" } },
{ "set": { "if": "ctx.network?.type == 'ipv4'", "override": true, "field": "destination.ipv6", "value": "false" } },
{ "set": { "if": "ctx.network?.type == 'ipv6'", "override": true, "field": "destination.ipv6", "value": "true" } },
{ "set": { "if": "ctx.tags.0 == 'import'", "override": true, "field": "data_stream.dataset", "value": "import" } },
{ "set": { "if": "ctx.tags.0 == 'import'", "override": true, "field": "data_stream.namespace", "value": "so" } },
{ "date": { "if": "ctx.event?.module == 'system'", "field": "event.created", "target_field": "@timestamp","ignore_failure": true, "formats": ["yyyy-MM-dd'T'HH:mm:ss.SSSX","yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'"] } },
{ "community_id":{ "if": "ctx.event?.dataset == 'endpoint.events.network'", "ignore_failure":true } },
{ "set": { "if": "ctx.event?.module == 'fim'", "override": true, "field": "event.module", "value": "file_integrity" } },
{ "rename": { "if": "ctx.winlog?.provider_name == 'Microsoft-Windows-Windows Defender'", "ignore_missing": true, "field": "winlog.event_data.Threat Name", "target_field": "winlog.event_data.threat_name" } },
{ "set": { "if": "ctx?.metadata?.kafka != null" , "field": "kafka.id", "value": "{{metadata.kafka.partition}}{{metadata.kafka.offset}}{{metadata.kafka.timestamp}}", "ignore_failure": true } },
{ "remove": { "field": [ "message2", "type", "fields", "category", "module", "dataset", "event.dataset_temp", "dataset_tag_temp", "module_temp" ], "ignore_missing": true, "ignore_failure": true } }
],
"on_failure": [
{
"remove": {
"field": "_security",
"ignore_missing": true,
"ignore_failure": true
}
},
{
"append": {
"field": "error.message",
"value": [
"failed in Fleet agent final_pipeline: {{ _ingest.on_failure_message }}"
]
}
}
]
}
@@ -0,0 +1,22 @@
{
"processors": [
{
"convert": {
"field": "_ingest._value",
"type": "ip",
"target_field": "_ingest._temp_ip",
"ignore_failure": true
}
},
{
"append": {
"field": "temp._valid_ips",
"allow_duplicates": false,
"value": [
"{{{_ingest._temp_ip}}}"
],
"ignore_failure": true
}
}
]
}
@@ -0,0 +1,36 @@
{
"processors": [
{
"set": {
"field": "event.dataset",
"value": "gridmetrics.agents",
"ignore_failure": true
}
},
{
"set": {
"field": "event.module",
"value": "gridmetrics",
"ignore_failure": true
}
},
{
"remove": {
"field": [
"host",
"elastic_agent",
"agent"
],
"ignore_missing": true,
"ignore_failure": true
}
},
{
"json": {
"field": "message",
"add_to_root": true,
"ignore_failure": true
}
}
]
}
@@ -0,0 +1,31 @@
{
"version": 3,
"_meta": {
"managed_by": "securityonion",
"managed": true
},
"description": "Custom pipeline for processing all incoming Fleet Agent documents. \n",
"processors": [
{ "set": { "ignore_failure": true, "field": "event.module", "value": "elastic_agent" } },
{ "split": { "if": "ctx.event?.dataset != null && ctx.event.dataset.contains('.')", "field": "event.dataset", "separator": "\\.", "target_field": "module_temp" } },
{ "split": { "if": "ctx.data_stream?.dataset != null && ctx.data_stream?.dataset.contains('.')", "field":"data_stream.dataset", "separator":"\\.", "target_field":"datastream_dataset_temp", "ignore_missing":true } },
{ "set": { "if": "ctx.module_temp != null", "override": true, "field": "event.module", "value": "{{module_temp.0}}" } },
{ "set": { "if": "ctx.datastream_dataset_temp != null && ctx.datastream_dataset_temp[0] == 'network_traffic'", "field":"event.module", "value":"{{ datastream_dataset_temp.0 }}", "ignore_failure":true, "ignore_empty_value":true, "description":"Fix EA network packet capture" } },
{ "gsub": { "if": "ctx.event?.dataset != null && ctx.event.dataset.contains('.')", "field": "event.dataset", "pattern": "^[^.]*.", "replacement": "", "target_field": "dataset_tag_temp" } },
{ "append": { "if": "ctx.dataset_tag_temp != null", "field": "tags", "value": "{{dataset_tag_temp}}", "allow_duplicates": false } },
{ "set": { "if": "ctx.network?.direction == 'egress'", "override": true, "field": "network.initiated", "value": "true" } },
{ "set": { "if": "ctx.network?.direction == 'ingress'", "override": true, "field": "network.initiated", "value": "false" } },
{ "set": { "if": "ctx.network?.type == 'ipv4'", "override": true, "field": "destination.ipv6", "value": "false" } },
{ "set": { "if": "ctx.network?.type == 'ipv6'", "override": true, "field": "destination.ipv6", "value": "true" } },
{ "set": { "if": "ctx.tags != null && ctx.tags.contains('import')", "override": true, "field": "data_stream.dataset", "value": "import" } },
{ "set": { "if": "ctx.tags != null && ctx.tags.contains('import')", "override": true, "field": "data_stream.namespace", "value": "so" } },
{ "community_id":{ "if": "ctx.event?.dataset == 'endpoint.events.network'", "ignore_failure":true } },
{ "set": { "if": "ctx.event?.module == 'fim'", "override": true, "field": "event.module", "value": "file_integrity" } },
{ "rename": { "if": "ctx.winlog?.provider_name == 'Microsoft-Windows-Windows Defender'", "ignore_missing": true, "field": "winlog.event_data.Threat Name", "target_field": "winlog.event_data.threat_name" } },
{ "set": { "if": "ctx?.metadata?.kafka != null" , "field": "kafka.id", "value": "{{metadata.kafka.partition}}{{metadata.kafka.offset}}{{metadata.kafka.timestamp}}", "ignore_failure": true } },
{ "set": { "if": "ctx.event?.dataset != null && ctx.event?.dataset == 'elasticsearch.server'", "field": "event.module", "value":"elasticsearch" }},
{"append": {"field":"related.ip","value":["{{source.ip}}","{{destination.ip}}"],"allow_duplicates":false,"if":"ctx?.event?.dataset == 'endpoint.events.network' && ctx?.source?.ip != null","ignore_failure":true}},
{"foreach": {"field":"host.ip","processor":{"append":{"field":"related.ip","value":"{{_ingest._value}}","allow_duplicates":false}},"if":"ctx?.event?.module == 'endpoint' && ctx?.host?.ip != null","ignore_missing":true, "description":"Extract IPs from Elastic Agent events (host.ip) and adds them to related.ip"}},
{ "remove": { "field": [ "message2", "type", "fields", "category", "module", "dataset", "event.dataset_temp", "dataset_tag_temp", "module_temp", "datastream_dataset_temp" ], "ignore_missing": true, "ignore_failure": true } }
]
}
+9
View File
@@ -0,0 +1,9 @@
{
"description" : "hydra",
"processors" : [
{"set":{"field":"audience","value":"access","override":false,"ignore_failure":true}},
{"set":{"field":"event.dataset","ignore_empty_value":true,"ignore_failure":true,"value":"hydra.{{{audience}}}","media_type":"text/plain"}},
{"set":{"field":"event.action","ignore_failure":true,"copy_from":"msg" }},
{ "pipeline": { "name": "common" } }
]
}
@@ -1,11 +0,0 @@
{
"description" : "import.wel",
"processors" : [
{ "set": { "field": "event.ingested", "value": "{{ @timestamp }}" } },
{ "set" : { "field" : "@timestamp", "value" : "{{ event.created }}" } },
{ "remove": { "field": [ "event_record_id", "event.created" , "timestamp" , "winlog.event_data.UtcTime" ], "ignore_failure": true } },
{ "pipeline": { "if": "ctx.winlog?.channel == 'Microsoft-Windows-Sysmon/Operational'", "name": "sysmon" } },
{ "pipeline": { "if": "ctx.winlog?.channel != 'Microsoft-Windows-Sysmon/Operational'", "name":"win.eventlogs" } },
{ "pipeline": { "name": "common" } }
]
}
@@ -1,10 +1,17 @@
{
"description": "Pipeline for pfSense",
"description": "Pipeline for PFsense",
"_meta": {
"managed_by": "fleet",
"managed": true,
"package": {
"name": "pfsense"
}
},
"processors": [
{
"set": {
"field": "ecs.version",
"value": "8.10.0"
"value": "8.17.0"
}
},
{
@@ -22,7 +29,9 @@
{
"rename": {
"field": "message",
"target_field": "event.original"
"target_field": "event.original",
"ignore_missing": true,
"if": "ctx.event?.original == null"
}
},
{
@@ -34,7 +43,7 @@
{
"set": {
"field": "event.timezone",
"value": "{{_tmp.tz_offset}}",
"value": "{{{_tmp.tz_offset}}}",
"if": "ctx._tmp?.tz_offset != null && ctx._tmp?.tz_offset != 'local'"
}
},
@@ -54,7 +63,8 @@
"SYSLOG_TIMESTAMP_FORMAT": "%{TIMESTAMP_ISO8601:_tmp.timestamp8601}%{SPACE}%{OBSERVER}%{SPACE}%{PROCESS}%{SPACE}(%{POSINT:process.pid:long}|-) - (-|%{META})",
"TIMESTAMP_ISO8601": "%{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE:event.timezone}?",
"OBSERVER": "(?:%{IP:observer.ip}|%{HOSTNAME:observer.name})",
"PROCESS": "(\\(%{DATA:process.name}\\)|(?:%{UNIXPATH}*/)?%{BASEPATH:process.name})",
"UNIXPATH": "(/([\\w_%!$@:.,+~-]+|\\\\.)*)*",
"PROCESS": "(\\(%{DATA:process.name}\\)|(?:%{UNIXPATH})%{BASEPATH:process.name})",
"BASEPATH": "[[[:alnum:]]_%!$@:.,+~-]+",
"META": "\\[[^\\]]*\\]"
}
@@ -80,7 +90,7 @@
"MMM d HH:mm:ss",
"MMM dd HH:mm:ss"
],
"timezone": "{{ event.timezone }}"
"timezone": "{{{ event.timezone }}}"
}
},
{
@@ -97,61 +107,67 @@
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-firewall",
"name": "logs-pfsense.log-1.23.1-firewall",
"if": "ctx.event.provider == 'filterlog'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-openvpn",
"name": "logs-pfsense.log-1.23.1-openvpn",
"if": "ctx.event.provider == 'openvpn'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-ipsec",
"name": "logs-pfsense.log-1.23.1-ipsec",
"if": "ctx.event.provider == 'charon'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-dhcp",
"name": "logs-pfsense.log-1.23.1-dhcp",
"if": "[\"dhcpd\", \"dhclient\", \"dhcp6c\"].contains(ctx.event.provider)"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-unbound",
"name": "logs-pfsense.log-1.23.1-unbound",
"if": "ctx.event.provider == 'unbound'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-haproxy",
"name": "logs-pfsense.log-1.23.1-haproxy",
"if": "ctx.event.provider == 'haproxy'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-php-fpm",
"name": "logs-pfsense.log-1.23.1-php-fpm",
"if": "ctx.event.provider == 'php-fpm'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-squid",
"name": "logs-pfsense.log-1.23.1-squid",
"if": "ctx.event.provider == 'squid'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-suricata",
"pipeline": {
"name": "logs-pfsense.log-1.23.1-snort",
"if": "ctx.event.provider == 'snort'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.23.1-suricata",
"if": "ctx.event.provider == 'suricata'"
}
},
{
"drop": {
"if": "![\"filterlog\", \"openvpn\", \"charon\", \"dhcpd\", \"dhclient\", \"dhcp6c\", \"unbound\", \"haproxy\", \"php-fpm\", \"squid\", \"suricata\"].contains(ctx.event?.provider)"
"if": "![\"filterlog\", \"openvpn\", \"charon\", \"dhcpd\", \"dhclient\", \"dhcp6c\", \"unbound\", \"haproxy\", \"php-fpm\", \"squid\", \"snort\", \"suricata\"].contains(ctx.event?.provider)"
}
},
{
@@ -285,7 +301,7 @@
{
"append": {
"field": "related.ip",
"value": "{{destination.ip}}",
"value": "{{{destination.ip}}}",
"allow_duplicates": false,
"if": "ctx.destination?.ip != null"
}
@@ -293,7 +309,7 @@
{
"append": {
"field": "related.ip",
"value": "{{source.ip}}",
"value": "{{{source.ip}}}",
"allow_duplicates": false,
"if": "ctx.source?.ip != null"
}
@@ -301,7 +317,7 @@
{
"append": {
"field": "related.ip",
"value": "{{source.nat.ip}}",
"value": "{{{source.nat.ip}}}",
"allow_duplicates": false,
"if": "ctx.source?.nat?.ip != null"
}
@@ -309,21 +325,21 @@
{
"append": {
"field": "related.hosts",
"value": "{{destination.domain}}",
"value": "{{{destination.domain}}}",
"if": "ctx.destination?.domain != null"
}
},
{
"append": {
"field": "related.user",
"value": "{{user.name}}",
"value": "{{{user.name}}}",
"if": "ctx.user?.name != null"
}
},
{
"set": {
"field": "network.direction",
"value": "{{network.direction}}bound",
"value": "{{{network.direction}}}bound",
"if": "ctx.network?.direction != null && ctx.network?.direction =~ /^(in|out)$/"
}
},
@@ -343,17 +359,31 @@
}
},
{
"remove": {
"field": "event.original",
"if": "ctx.tags == null || !(ctx.tags.contains('preserve_original_event'))",
"ignore_failure": true,
"ignore_missing": true
"pipeline": {
"name": "global@custom",
"ignore_missing_pipeline": true,
"description": "[Fleet] Global pipeline for all data streams"
}
},
{
"pipeline": {
"name": "logs@custom",
"ignore_missing_pipeline": true,
"description": "[Fleet] Pipeline for all data streams of type `logs`"
}
},
{
"pipeline": {
"name": "logs-pfsense.integration@custom",
"ignore_missing_pipeline": true,
"description": "[Fleet] Pipeline for all data streams of type `logs` defined by the `pfsense` integration"
}
},
{
"pipeline": {
"name": "logs-pfsense.log@custom",
"ignore_missing_pipeline": true
"ignore_missing_pipeline": true,
"description": "[Fleet] Pipeline for the `pfsense.log` dataset"
}
}
],
@@ -378,12 +408,5 @@
"value": "{{{ _ingest.on_failure_message }}}"
}
}
],
"_meta": {
"managed_by": "fleet",
"managed": true,
"package": {
"name": "pfsense"
}
}
}
]
}
@@ -1,9 +1,14 @@
{
"description": "Pipeline for parsing pfSense Suricata logs.",
"processors": [
{ "set": {
"field": "event.module",
"value": "suricata"
}
},
{
"pipeline": {
"name": "suricata.common"
"name": "suricata.common_pfsense"
}
}
],
@@ -1,7 +1,7 @@
{
"description" : "suricata.alert",
"processors" : [
{ "set": { "field": "_index", "value": "logs-suricata.alerts-so" } },
{ "set": { "if": "ctx.event?.imported != true", "field": "_index", "value": "logs-suricata.alerts-so" } },
{ "set": { "field": "tags","value": "alert" }},
{ "rename":{ "field": "message2.alert", "target_field": "rule", "ignore_failure": true } },
{ "rename":{ "field": "rule.signature", "target_field": "rule.name", "ignore_failure": true } },
@@ -9,6 +9,7 @@
{ "rename":{ "field": "rule.signature_id", "target_field": "rule.uuid", "ignore_failure": true } },
{ "rename":{ "field": "rule.signature_id", "target_field": "rule.signature", "ignore_failure": true } },
{ "rename":{ "field": "message2.payload_printable", "target_field": "network.data.decoded", "ignore_failure": true } },
{ "dissect": { "field": "rule.rule", "pattern": "%{?prefix}content:\"%{dns.query_name}\"%{?remainder}", "ignore_missing": true, "ignore_failure": true } },
{ "pipeline": { "name": "common.nids" } }
]
}
}
@@ -0,0 +1,16 @@
{
"description" : "suricata.alert",
"processors" : [
{ "set": { "field": "data_stream.dataset", "value": "suricata" } },
{ "set": { "field": "data_stream.namespace", "value": "so" } },
{ "set": { "field": "_index", "value": "logs-suricata.alerts-so" } },
{ "set": { "field": "tags","value": "alert" }},
{ "rename":{ "field": "message2.alert", "target_field": "rule", "ignore_failure": true } },
{ "rename":{ "field": "rule.signature", "target_field": "rule.name", "ignore_failure": true } },
{ "rename":{ "field": "rule.ref", "target_field": "rule.version", "ignore_failure": true } },
{ "rename":{ "field": "rule.signature_id", "target_field": "rule.uuid", "ignore_failure": true } },
{ "rename":{ "field": "rule.signature_id", "target_field": "rule.signature", "ignore_failure": true } },
{ "rename":{ "field": "message2.payload_printable", "target_field": "network.data.decoded", "ignore_failure": true } },
{ "pipeline": { "name": "common.nids" } }
]
}
@@ -18,6 +18,13 @@
{ "set": { "field": "event.ingested", "value": "{{@timestamp}}" } },
{ "date": { "field": "message2.timestamp", "target_field": "@timestamp", "formats": ["ISO8601", "UNIX"], "timezone": "UTC", "ignore_failure": true } },
{ "remove":{ "field": "agent", "ignore_failure": true } },
{"append":{"field":"related.ip","value":["{{source.ip}}","{{destination.ip}}"],"allow_duplicates":false,"ignore_failure":true}},
{
"script": {
"source": "boolean isPrivate(def ip) { if (ip == null) return false; int dot1 = ip.indexOf('.'); if (dot1 == -1) return false; int dot2 = ip.indexOf('.', dot1 + 1); if (dot2 == -1) return false; int first = Integer.parseInt(ip.substring(0, dot1)); if (first == 10) return true; if (first == 192 && ip.startsWith('168.', dot1 + 1)) return true; if (first == 172) { int second = Integer.parseInt(ip.substring(dot1 + 1, dot2)); return second >= 16 && second <= 31; } return false; } String[] fields = new String[] {\"source\", \"destination\"}; for (int i = 0; i < fields.length; i++) { def field = fields[i]; def ip = ctx[field]?.ip; if (ip != null) { if (ctx.network == null) ctx.network = new HashMap(); if (isPrivate(ip)) { if (ctx.network.private_ip == null) ctx.network.private_ip = new ArrayList(); if (!ctx.network.private_ip.contains(ip)) ctx.network.private_ip.add(ip); } else { if (ctx.network.public_ip == null) ctx.network.public_ip = new ArrayList(); if (!ctx.network.public_ip.contains(ip)) ctx.network.public_ip.add(ip); } } }",
"ignore_failure": false
}
},
{ "pipeline": { "if": "ctx?.event?.dataset != null", "name": "suricata.{{event.dataset}}" } }
]
}
@@ -0,0 +1,23 @@
{
"description" : "suricata.common",
"processors" : [
{ "json": { "field": "message", "target_field": "message2", "ignore_failure": true } },
{ "rename": { "field": "message2.pkt_src", "target_field": "network.packet_source","ignore_failure": true } },
{ "rename": { "field": "message2.proto", "target_field": "network.transport", "ignore_failure": true } },
{ "rename": { "field": "message2.in_iface", "target_field": "observer.ingress.interface.name", "ignore_failure": true } },
{ "rename": { "field": "message2.flow_id", "target_field": "log.id.uid", "ignore_failure": true } },
{ "rename": { "field": "message2.src_ip", "target_field": "source.ip", "ignore_failure": true } },
{ "rename": { "field": "message2.src_port", "target_field": "source.port", "ignore_failure": true } },
{ "rename": { "field": "message2.dest_ip", "target_field": "destination.ip", "ignore_failure": true } },
{ "rename": { "field": "message2.dest_port", "target_field": "destination.port", "ignore_failure": true } },
{ "rename": { "field": "message2.vlan", "target_field": "network.vlan.id", "ignore_failure": true } },
{ "rename": { "field": "message2.community_id", "target_field": "network.community_id", "ignore_missing": true } },
{ "rename": { "field": "message2.xff", "target_field": "xff.ip", "ignore_missing": true } },
{ "set": { "field": "event.dataset", "value": "{{ message2.event_type }}" } },
{ "set": { "field": "observer.name", "value": "{{agent.name}}" } },
{ "set": { "field": "event.ingested", "value": "{{@timestamp}}" } },
{ "date": { "field": "message2.timestamp", "target_field": "@timestamp", "formats": ["ISO8601", "UNIX"], "timezone": "UTC", "ignore_failure": true } },
{ "remove":{ "field": "agent", "ignore_failure": true } },
{ "pipeline": { "if": "ctx?.event?.dataset != null", "name": "suricata.{{event.dataset}}_pfsense" } }
]
}

Some files were not shown because too many files have changed in this diff Show More