Compare commits

...

593 Commits

Author SHA1 Message Date
Mike Reeves 58dc073678 Merge pull request #10481 from Security-Onion-Solutions/2.4/dev
2.4.2
2023-06-01 09:37:38 -04:00
Mike Reeves 8c9186d8dd Merge pull request #10489 from Security-Onion-Solutions/2.4.2
2.4.2
2023-06-01 09:27:56 -04:00
Mike Reeves aee842b912 2.4.2 2023-06-01 09:26:24 -04:00
weslambert 3a5a59af59 Merge pull request #10485 from Security-Onion-Solutions/fix/elastic_fleet_dedicated
Add so-fleet role logic
2023-05-31 16:04:40 -04:00
Josh Patterson 8f3a874e61 Merge pull request #10483 from Security-Onion-Solutions/dedfleetES
exclude elasticsearch.ca state from fleet and receiver nodes
2023-05-31 16:02:57 -04:00
m0duspwnens 66dc6274e6 exclude elasticsearch.ca state from fleet and receiver nodes 2023-05-31 15:59:36 -04:00
Wes 302e580d8f Add so-fleet role logic 2023-05-31 19:56:17 +00:00
Mike Reeves 4cf60a6054 Merge pull request #10480 from Security-Onion-Solutions/mreeves/mergefrommain
Mreeves/mergefrommain
2023-05-31 15:32:30 -04:00
Mike Reeves 8f6d82af97 Merge branch '2.4/main' into mreeves/mergefrommain 2023-05-31 15:28:07 -04:00
Mike Reeves 8ab54dcead Merge pull request #10477 from Security-Onion-Solutions/2.4.2
2.4.2
2023-05-31 14:49:34 -04:00
Mike Reeves 9704c8917e 2.4.2 2023-05-31 14:47:34 -04:00
weslambert 540ee156db Merge pull request #10469 from Security-Onion-Solutions/fix/elastic_fleet_dynamic_configuration
Use Fleet pillar instead of Zeek
2023-05-31 12:36:39 -04:00
Wes 344e2bf1d0 Update defaults file 2023-05-31 15:30:03 +00:00
Wes 3441c0684e Create elasticfleet pillar dir 2023-05-31 15:10:35 +00:00
Wes ed560f19d3 Remove where not applicable 2023-05-31 14:28:43 +00:00
Wes b3f6012856 Change ordering 2023-05-31 14:22:47 +00:00
Wes 9ae26ec866 Add Fleet to top file 2023-05-31 14:21:39 +00:00
Wes 20aaa79476 Add pillar files for Fleet 2023-05-31 13:45:19 +00:00
Wes 2bb77251b0 Move Elastic Fleet logging exclusions to the Fleet pillar 2023-05-31 13:38:58 +00:00
weslambert 36791665f3 Merge pull request #10462 from Security-Onion-Solutions/feature/elastic_agent_zeek_logging
Dynamic integration configuration and Zeek log exclusions for Elastic Agent
2023-05-30 19:27:13 -04:00
Josh Patterson 4d4744a89b Merge pull request #10465 from Security-Onion-Solutions/suricataimport
dont apply suricata.enabled on import nodes
2023-05-30 16:51:17 -04:00
Wes f3be63051b Remove Fleet configuration 2023-05-30 20:48:43 +00:00
m0duspwnens 743ed316f8 dont apply suricata.enabled on import nodes 2023-05-30 16:10:41 -04:00
Wes e4b4bbcfdc Use ZEEKMERGED from zeek/config.map.jinja 2023-05-30 19:51:13 +00:00
Wes b6e090f29f Move Elastic Fleet logic in so-common to so-elastic-fleet-common 2023-05-30 18:43:56 +00:00
weslambert 25006ed20b Merge pull request #10455 from Security-Onion-Solutions/fix/curator_cluster_delete_delete
Update so-elasticsearch-cluster-space-used and so-curator-cluster-delete-delete
2023-05-30 14:28:22 -04:00
Wes 4469a93a75 Fix typo 2023-05-30 18:24:30 +00:00
Mike Reeves 0027016b5a Merge pull request #10463 from Security-Onion-Solutions/TOoSmOotH-patch-2
Update so-setup
2023-05-30 13:52:30 -04:00
Mike Reeves 0143e2412d Update so-setup 2023-05-30 13:51:20 -04:00
Mike Reeves 20212414c4 Update so-setup 2023-05-30 13:46:24 -04:00
Mike Reeves 8a63ed5124 Update so-setup 2023-05-30 13:33:30 -04:00
Wes 096dadf9bd Change 1024 to 1000 for gigabytes 2023-05-30 17:29:42 +00:00
Wes b441fe662f Change 1024 to 1000 for gigabytes 2023-05-30 17:28:59 +00:00
Wes e5117a343d Change description 2023-05-30 17:10:17 +00:00
Wes b9d692eb0e Remove default value 2023-05-30 17:08:52 +00:00
Wes 36a7f54160 Add extension 2023-05-30 16:46:38 +00:00
Josh Brower 96134684dc Merge pull request #10459 from Security-Onion-Solutions/2.4/fixes
Change Fleet Host URL API Endpoint
2023-05-30 12:13:52 -04:00
Jason Ertel 374ab0779a Merge pull request #10458 from Security-Onion-Solutions/jertel/debugrsa
Add short sleeps around show_top to isolate if there's a race conditi…
2023-05-30 12:09:34 -04:00
Jason Ertel d0d1cc9106 Add short sleeps around show_top to isolate if there's a race condition causing intermittent RSA key format errors 2023-05-30 12:08:39 -04:00
Wes 9035fa3037 Don't load Elasticsearch integration 2023-05-30 15:46:00 +00:00
Wes b4b87e5620 Only provide JSON output 2023-05-30 15:43:31 +00:00
Wes 97c53d70a4 Remove integrations 2023-05-30 14:05:40 +00:00
Wes 53b4f7bd5c Add spacing 2023-05-30 14:05:11 +00:00
Mike Reeves 192c8c78c7 Merge pull request #10456 from Security-Onion-Solutions/airgaps
Update verifications
2023-05-30 09:52:07 -04:00
Mike Reeves 62a063dae4 Update verifications 2023-05-30 09:50:43 -04:00
Wes 79014a53ec Remove extra lines 2023-05-30 12:35:32 +00:00
Wes e910f04beb Add default description and Zeek log exclusions for Elastic Fleet 2023-05-30 03:10:52 +00:00
Wes ef5b63337b Add check for integration existence and integration update functionality 2023-05-30 02:58:00 +00:00
Wes 799e92e595 Add files 2023-05-30 02:56:23 +00:00
Wes c835c523a9 Elastic Fleet integration update improvements 2023-05-30 02:54:39 +00:00
Josh Brower 9ec1492fad Change Fleet Host URL API Endpoint 2023-05-29 07:44:18 -04:00
Wes 5af1bfe142 Move alert generation outside of the inner loop 2023-05-27 21:15:45 +00:00
Jason Ertel 482c5324db Merge pull request #10442 from Security-Onion-Solutions/airgaps
Rule Updates
2023-05-26 20:32:39 -04:00
Mike Reeves 3c1f1cd50e Rule Updates 2023-05-26 20:11:22 -04:00
Mike Reeves aecd900203 Merge pull request #10387 from Security-Onion-Solutions/airgaps
Docker Enhancements
2023-05-26 17:35:23 -04:00
Mike Reeves 89f5d9f292 Rule Updates 2023-05-26 17:14:10 -04:00
Josh Brower de43a202a3 Merge pull request #10441 from Security-Onion-Solutions/2.4/fleet-retry
Add Fleet download retry
2023-05-26 17:03:58 -04:00
Josh Brower 6176fa7ca5 Add Fleet download retry 2023-05-26 16:46:02 -04:00
Mike Reeves 9ff27e5b6a Rule Updates 2023-05-26 16:34:48 -04:00
Mike Reeves 5922fc0e45 Rule Updates 2023-05-26 16:29:13 -04:00
Mike Reeves b48e259fee Rule Updates 2023-05-26 16:27:29 -04:00
Mike Reeves b4d85a7bf8 Rule Updates 2023-05-26 16:21:07 -04:00
Mike Reeves 38881231ac Merge branch '2.4/dev' of https://github.com/Security-Onion-Solutions/securityonion into airgaps 2023-05-26 15:16:38 -04:00
Mike Reeves b2d2a9f0ed Rule Updates 2023-05-26 15:16:14 -04:00
Jason Ertel 32021cf272 Merge pull request #10438 from Security-Onion-Solutions/jertel/redircurl
support forwarding urls
2023-05-26 13:42:57 -04:00
Jason Ertel 4410e136b1 Merge branch '2.4/dev' into jertel/redircurl 2023-05-26 12:12:09 -04:00
Jason Ertel 81d4584819 allow following redirects 2023-05-26 12:11:40 -04:00
Jason Ertel 657ef97d17 Merge pull request #10433 from Security-Onion-Solutions/kilo
Use common fail routine when explicitly aborting setup; Enhance cloud detection
2023-05-26 09:54:15 -04:00
Jason Ertel 8f247f962a undo version for PR 2023-05-26 09:50:12 -04:00
Josh Patterson bcbdab1682 Merge pull request #10435 from Security-Onion-Solutions/issue/10429
Issue/10429
2023-05-26 09:47:33 -04:00
m0duspwnens 5b4ec70ca6 fix typo on suricata annotations. add to global annotations 2023-05-26 09:37:57 -04:00
Wes ce114a2601 Fix total space logic and rename TOTAL_AVAILABLE_SPACE to TOTAL_USED_SPACE 2023-05-26 13:19:45 +00:00
Wes 5de59a879a Break out of index deletion when unable to bring space below the disk space threshold 2023-05-26 13:15:27 +00:00
Jason Ertel a2e6469a38 provide custom cloud detection path 2023-05-26 08:05:34 -04:00
m0duspwnens 5c933910aa simplify map for updating suricata config if md engine is suricata 2023-05-25 17:25:54 -04:00
m0duspwnens a3c3f08511 convert list to dict to work better with ui. regex on suricata vars HOME_NET for soc 2023-05-25 17:00:48 -04:00
Jason Ertel 9aa58be286 correct kilo version 2023-05-25 16:14:07 -04:00
Jason Ertel db56b3d6a3 pin version to kilo 2023-05-25 15:27:05 -04:00
Jason Ertel 7d6182a18f redir err to out to avoid leaks to console 2023-05-25 15:24:09 -04:00
Jason Ertel 074f84ae4d flag all forced setup aborts 2023-05-25 14:57:58 -04:00
Mike Reeves 8ce0d76287 Zeek Annotations 2023-05-25 12:12:18 -04:00
Mike Reeves 3be3df00d1 Zeek Annotations 2023-05-25 12:10:15 -04:00
m0duspwnens d99d4756c3 set defaults as example in soc ui for suricata cpu affinity 2023-05-25 11:11:53 -04:00
m0duspwnens 0d83b13585 Merge remote-tracking branch 'origin/2.4/dev' into issue/10229 2023-05-25 11:04:04 -04:00
m0duspwnens 6505d3e2ce update annotations for suricata 2023-05-25 11:03:37 -04:00
Josh Patterson 6edfadd18b Merge pull request #10432 from Security-Onion-Solutions/distribsetup
Update so-functions
2023-05-25 10:44:33 -04:00
Josh Patterson 9552510c7d Update so-functions
assign proper hostgroups for setup
2023-05-25 10:43:47 -04:00
Doug Burks 36ddcfa4e5 Merge pull request #10431 from Security-Onion-Solutions/dougburks-patch-1
Update README.md for Beta 3
2023-05-25 08:36:14 -04:00
Doug Burks fcc1337e1a Update README.md for Beta 3 2023-05-25 07:51:08 -04:00
Mike Reeves 10f9d0f4bd Suricata Airgap 2023-05-24 16:21:51 -04:00
Mike Reeves edf531739c Suricata Airgap 2023-05-24 15:47:07 -04:00
Mike Reeves 11d7e66ea0 Suricata Airgap 2023-05-24 15:30:52 -04:00
Mike Reeves caaedee5a7 Suricata Airgap 2023-05-24 15:18:52 -04:00
Mike Reeves 1bdd79c578 Suricata Airgap 2023-05-24 15:05:40 -04:00
Mike Reeves c199acc64e Suricata Airgap 2023-05-24 14:58:11 -04:00
Josh Patterson a01704a1d7 Merge pull request #10427 from Security-Onion-Solutions/issue/10229
Issue/10229
2023-05-24 13:23:29 -04:00
Wes 53f258b08f Add eligible_indices to index deletion requirements 2023-05-24 17:02:11 +00:00
Wes a308a39bbe Use disk space taken up by indices if the script is not running on a manager 2023-05-24 16:48:45 +00:00
m0duspwnens 5c00655ad0 Merge remote-tracking branch 'origin/2.4/dev' into issue/10229 2023-05-24 12:22:52 -04:00
m0duspwnens 67a608ea56 adjust suricata defaults 2023-05-24 12:22:42 -04:00
Josh Brower 01d983fc00 Merge pull request #10426 from Security-Onion-Solutions/2.4/fleet-punchlist
2.4/fleet punchlist
2023-05-24 12:15:50 -04:00
Mike Reeves d6f1bcfdf0 Merge branch '2.4/dev' of https://github.com/Security-Onion-Solutions/securityonion into airgaps 2023-05-24 11:42:44 -04:00
Josh Brower f156573f8d Merge remote-tracking branch 'remotes/origin/2.4/dev' into 2.4/fleet-punchlist 2023-05-24 11:28:38 -04:00
Josh Brower b3e0e68896 Change Fleet Host URL API 2023-05-24 11:27:41 -04:00
Mike Reeves 86803f1fb5 Add Suricata 2023-05-24 10:48:01 -04:00
Jason Ertel aad08a830b Merge pull request #10425 from Security-Onion-Solutions/kilo
fix malformed alert templates
2023-05-24 10:21:21 -04:00
Mike Reeves c9db6c0f18 Add Suricata 2023-05-24 10:18:58 -04:00
Jason Ertel d9a9c8738c fix malformed alert templates 2023-05-24 10:17:59 -04:00
Mike Reeves cb0ed9ae6d Merge branch '2.4/dev' of https://github.com/Security-Onion-Solutions/securityonion into airgaps 2023-05-24 10:04:15 -04:00
Josh Brower 4f72fca2d7 Merge remote-tracking branch 'remotes/origin/2.4/dev' into 2.4/fleet-punchlist 2023-05-24 09:55:29 -04:00
Josh Patterson 1dc426b8ce Merge pull request #10422 from Security-Onion-Solutions/issue/10229
fix suricata sostatus
2023-05-24 09:54:14 -04:00
m0duspwnens 8995012c80 fix suricata sostatus 2023-05-24 09:52:07 -04:00
Mike Reeves 2c4ba2e8b2 Add Suricata 2023-05-24 09:35:50 -04:00
Mike Reeves c42959d040 soup skeleton 2023-05-24 09:29:50 -04:00
Mike Reeves fa6dcd7f83 Merge branch '2.4/dev' of https://github.com/Security-Onion-Solutions/securityonion into airgaps 2023-05-24 09:04:04 -04:00
Josh Brower 9c6365aa2f Merge remote-tracking branch 'remotes/origin/2.4/dev' into 2.4/fleet-punchlist 2023-05-24 09:03:57 -04:00
Josh Patterson 6e4c4febfb Merge pull request #10421 from Security-Onion-Solutions/issue/10229
rename state to resolve conflicting / duplicate state ids
2023-05-24 09:02:47 -04:00
m0duspwnens 732d2aadf8 rename state to resolve conflicting / duplicate state ids 2023-05-24 08:58:43 -04:00
Mike Reeves cace817c79 Merge branch '2.4/dev' of https://github.com/Security-Onion-Solutions/securityonion into airgaps 2023-05-24 08:43:03 -04:00
Josh Brower e1c361e555 Fix variable 2023-05-23 16:50:40 -04:00
Josh Brower 502277b1b7 Hash check, use url base 2023-05-23 16:38:37 -04:00
bryant-treacle 57f5a22f0f Merge pull request #10396 from Security-Onion-Solutions/2.4/Influxdb_alerts
2.4/influxdb alerts
2023-05-23 14:14:48 -04:00
Josh Patterson 4b18a0e758 Merge pull request #10417 from Security-Onion-Solutions/issue/10229
Issue/10229
2023-05-23 13:47:48 -04:00
Josh Brower f6a9a764de Merge pull request #10416 from Security-Onion-Solutions/2.4/smallfixes
2.4/EQL
2023-05-23 13:28:11 -04:00
m0duspwnens e65214b097 Merge remote-tracking branch 'origin/2.4/dev' into issue/10229 2023-05-23 12:10:29 -04:00
m0duspwnens cc47f9a595 fix suricata thresholding 2023-05-23 11:16:32 -04:00
m0duspwnens eb633be437 enable/disable suricata in ui. assign threads properly 2023-05-22 17:48:22 -04:00
Josh Brower df0dc2e4d1 Merge remote-tracking branch 'remotes/origin/2.4/dev' into 2.4/smallfixes 2023-05-22 16:02:30 -04:00
Josh Brower 766f4dd661 Add Elastic Defend Integration 2023-05-22 16:02:08 -04:00
Jason Ertel f53fb69ffb Merge pull request #10407 from Security-Onion-Solutions/kilo
Ignore Synchronize button clicks when an active salt job is running and another is already in queue
2023-05-22 14:59:42 -04:00
Jason Ertel ba0ec18a33 Ignore Synchronize button clicks when an active salt job is running and another is already in queue 2023-05-22 14:52:07 -04:00
weslambert 79182cecfd Merge pull request #10397 from Security-Onion-Solutions/fix/elastic_exclude_zeek_reporter_log
Exclude Zeek's reporter.log from being picked up by Elastic Agent
2023-05-22 07:56:54 -04:00
weslambert 8cf82c4b6a Merge pull request #10398 from Security-Onion-Solutions/fix/elasticsearch_ingest_dns_query
Check if 'dns.query' is null
2023-05-22 07:56:44 -04:00
weslambert 78d4586033 Merge pull request #10399 from Security-Onion-Solutions/fix/elastalert_playbook_alerter
Update 'url' to use 'es_hosts'
2023-05-22 07:56:31 -04:00
Jason Ertel 02cf1074f2 Merge pull request #10400 from Security-Onion-Solutions/kilo
use the same requests version that's already packaged with the analyzer
2023-05-20 08:45:21 -04:00
Jason Ertel a881cab469 use the same requests version that's already packaged with the analyzer 2023-05-19 23:54:30 -04:00
weslambert 00bd93c026 Update 'url' to use 'es_hosts' 2023-05-19 17:14:13 -04:00
weslambert 2c10ad7eec Check if 'dns.query' is null 2023-05-19 15:50:33 -04:00
weslambert 167051af28 Exclude Zeek's reporter.log from being picked up by Elastic Agent 2023-05-19 15:44:09 -04:00
weslambert eb9c5e9af0 Merge pull request #10307 from Security-Onion-Solutions/fix/elastic_fleet_ignore_zeek_logs
Don't read from 'known_hosts.log', 'known_services.log', or 'ntp.log'
2023-05-19 15:09:15 -04:00
Jason Ertel 2f942a3e37 Merge pull request #10393 from Security-Onion-Solutions/kilo
fix lib dependency issue with whoisit
2023-05-19 14:34:42 -04:00
Jason Ertel 03f97b309a fix lib dependency issue with whoisit 2023-05-19 14:18:19 -04:00
weslambert c6a962a46b Merge pull request #10392 from Security-Onion-Solutions/fix/elastalert_index
Change Elastalert writeback index name from 'elastalert_status' to 'elastalert'
2023-05-19 13:31:29 -04:00
weslambert 1ddf45bbbe Change Elastalert writeback index name from 'elastalert_status' to 'elastalert' 2023-05-19 12:39:27 -04:00
Doug Burks f0c4cebaca Merge pull request #10391 from Security-Onion-Solutions/2.4/elastic-8.7.1
UPGRADE: Elastic 8.7.1 #10269
2023-05-19 12:29:01 -04:00
Doug Burks 87c42ece00 Update so-kibana-config-load 2023-05-19 12:21:09 -04:00
Doug Burks 4f8fcd3369 Update config_saved_objects.ndjson 2023-05-19 12:19:44 -04:00
bryant-treacle 5b2d91b5b5 Update alarm_zeek_packet_loss.json 2023-05-19 10:32:53 -04:00
bryant-treacle a84322f9b7 Update alarm_suricata_packet_loss.json 2023-05-19 10:32:29 -04:00
bryant-treacle 2de95bcb63 Update alarm_steno_packet_loss.json 2023-05-19 10:32:13 -04:00
bryant-treacle 1e9e2facde Update alarm_low_monitor_traffic.json 2023-05-19 10:29:53 -04:00
bryant-treacle 592c67d1f2 Update alarm_pcap_retention.json 2023-05-19 10:29:15 -04:00
bryant-treacle e91dd29cb2 Update alarm_high_redis_memory_usage.json 2023-05-19 10:25:22 -04:00
bryant-treacle 13c9142814 Update alarm_low_monitor_traffic.json 2023-05-19 10:21:43 -04:00
bryant-treacle ef4f2491f3 Update alarm_high_redis_memory_usage.json 2023-05-19 10:12:44 -04:00
bryant-treacle 645555b990 Update alarm_zeek_packet_loss.json 2023-05-19 10:10:44 -04:00
bryant-treacle 839275814c Update redis.sh - Added percent of used memory. 2023-05-19 08:51:49 -04:00
bryant-treacle 9b973e07e2 Add files via upload 2023-05-19 08:49:43 -04:00
Josh Patterson 0027385da9 Merge pull request #10389 from Security-Onion-Solutions/issue/10229
enable playbook on eval in pillar during setup
2023-05-18 17:38:05 -04:00
m0duspwnens 4ef77f9050 enable playbook on eval in pillar during setup 2023-05-18 17:34:59 -04:00
Mike Reeves debbdec350 Allow additional docker parameters 2023-05-18 17:10:18 -04:00
Mike Reeves bf4ac0c2dd Allow additional docker parameters 2023-05-18 17:08:39 -04:00
Mike Reeves cb9e7e63db Allow additional docker parameters 2023-05-18 17:00:54 -04:00
Mike Reeves 32560af767 Allow additional docker parameters 2023-05-18 16:59:45 -04:00
Mike Reeves 1e5ac61ff5 Allow additional docker parameters 2023-05-18 16:57:48 -04:00
Mike Reeves 5315c51197 Allow additional docker parameters 2023-05-18 16:52:38 -04:00
Mike Reeves 8917f9b9d2 Allow additional docker parameters 2023-05-18 16:46:28 -04:00
Mike Reeves c0dc05f26a Allow additional docker parameters 2023-05-18 16:39:42 -04:00
Mike Reeves 2aa801d906 Allow additional docker parameters 2023-05-18 16:31:29 -04:00
weslambert c192ec9109 Merge pull request #10385 from Security-Onion-Solutions/feature/elastalert_eql
Add initial support for EQL queries for Elastalert
2023-05-18 15:36:28 -04:00
Mike Reeves 7ab31e36af Merge branch '2.4/dev' of https://github.com/Security-Onion-Solutions/securityonion into airgaps 2023-05-18 15:19:15 -04:00
Mike Reeves 0fd9fb9294 Allow additional docker parameters 2023-05-18 15:19:09 -04:00
Josh Patterson 059f80bfc4 Merge pull request #10384 from Security-Onion-Solutions/issue/10334
Issue/10334
2023-05-18 13:28:47 -04:00
m0duspwnens bab2f7282c fix spaciong 2023-05-18 13:27:48 -04:00
m0duspwnens 02920b5ac9 confirm manager ip when found in setup 2023-05-18 13:25:12 -04:00
m0duspwnens 25b0934cda confirm manager ip when found in setup 2023-05-18 13:06:20 -04:00
Wes d3c7ea4805 Add EQL option 2023-05-18 16:55:26 +00:00
Wes 82c3d78672 Change Elasticsearch host syntax 2023-05-18 16:52:27 +00:00
Josh Brower 97b68609bc Merge pull request #10381 from Security-Onion-Solutions/2.4/smallfixes
2.4/ElasticFleetPunchList
2023-05-18 09:04:30 -04:00
Josh Patterson 1d611e618f Merge pull request #10383 from Security-Onion-Solutions/issue/10229
remove conditional on cacertz and capemz
2023-05-18 08:45:41 -04:00
m0duspwnens f4b8d385ee remove conditional on cacertz and capemz 2023-05-18 08:36:24 -04:00
Jason Ertel b7e0923ec4 Merge pull request #10382 from Security-Onion-Solutions/kilo
add missing var for local dev
2023-05-17 18:58:29 -04:00
Jason Ertel 4930ae4ba6 add missing var for local dev 2023-05-17 18:14:21 -04:00
Josh Brower d11479ec5f Merge remote-tracking branch 'remotes/origin/2.4/dev' into 2.4/smallfixes 2023-05-17 16:11:46 -04:00
Josh Brower 901e3c4a20 Set Fleet Host timeouts to 120 seconds 2023-05-17 16:07:59 -04:00
Josh Patterson 81842462ba Merge pull request #10380 from Security-Onion-Solutions/issue/10229
Issue/10229
2023-05-17 15:53:15 -04:00
m0duspwnens e15c14cc2e fix indent 2023-05-17 15:50:31 -04:00
m0duspwnens f7ddf57f39 move files out of config 2023-05-17 15:49:22 -04:00
Josh Brower 47e67fda46 Rework restart scripts for Elastic Fleet 2023-05-17 15:37:39 -04:00
Josh Brower 7d0251952c Filter out uneeded Logstash metadata 2023-05-17 11:06:16 -04:00
Josh Brower 5536f5a8c2 Add Fleet node to other roles 2023-05-17 09:32:20 -04:00
Josh Patterson 2c932fae9d Merge pull request #10371 from Security-Onion-Solutions/salt3006.1
Salt3006.1
2023-05-16 16:59:31 -04:00
Josh Brower 24445cf36a Rename Fleet pipelines 2023-05-16 16:43:21 -04:00
m0duspwnens 0feb25c962 Merge remote-tracking branch 'origin/2.4/dev' into salt3006.1 2023-05-16 16:07:31 -04:00
m0duspwnens 3abb4d79ba change path where SALTVERSION is pulled from 2023-05-16 16:07:06 -04:00
Josh Patterson 1df183deb3 Merge pull request #10370 from Security-Onion-Solutions/issue/10229
fix grep logic for so-elastic-fleet sostatus.sls
2023-05-16 15:46:41 -04:00
m0duspwnens 77834c1e58 fix grep logic for so-elastic-fleet sostatus.sls 2023-05-16 15:05:14 -04:00
Josh Patterson d6207705cd Merge pull request #10369 from Security-Onion-Solutions/salt3006.1
specify salt version to install during setup
2023-05-16 14:47:35 -04:00
m0duspwnens e4b61aa08d specify salt version to install during setup 2023-05-16 14:28:57 -04:00
Josh Patterson 736ff2930d Merge pull request #10368 from Security-Onion-Solutions/salt3006.1
Salt3006.1
2023-05-16 13:48:11 -04:00
m0duspwnens 6aff526d9e Merge remote-tracking branch 'origin/2.4/dev' into salt3006.1 2023-05-16 13:08:28 -04:00
Josh Brower 8101171c97 Merge pull request #10367 from Security-Onion-Solutions/2.4/integrationfix
Update Integrations
2023-05-16 12:56:47 -04:00
Josh Brower 000507c366 Update Integrations 2023-05-16 12:50:40 -04:00
Josh Patterson 82fdee45aa Merge pull request #10366 from Security-Onion-Solutions/issue/10229
cwd for catrustscript
2023-05-16 12:11:20 -04:00
m0duspwnens 2419fa43b6 cwd for catrustscript 2023-05-16 12:08:44 -04:00
m0duspwnens acc7619023 salt 3006.1 2023-05-16 12:04:02 -04:00
Jason Ertel dcd761ad74 Merge pull request #10364 from Security-Onion-Solutions/kilo
import installs do not use monitor ifaces
2023-05-16 10:15:26 -04:00
Jason Ertel 9871ecd223 import installs do not use monitor ifaces 2023-05-16 10:14:31 -04:00
Josh Patterson 56a7fdcfcd Merge pull request #10363 from Security-Onion-Solutions/issue/10229
Issue/10229
2023-05-16 09:36:31 -04:00
m0duspwnens 6325f6db16 run elasticfleet.config so elasticfleet setup script gets put in place 2023-05-16 09:30:27 -04:00
m0duspwnens b253cd45ca Merge remote-tracking branch 'origin/2.4/dev' into issue/10229 2023-05-16 09:22:48 -04:00
Jason Ertel 1724565331 Merge pull request #10362 from Security-Onion-Solutions/kilo
ensure automated tests have passwordless sudo
2023-05-16 08:49:00 -04:00
Jason Ertel 00a7beaca2 ensure automated tests have passwordless sudo 2023-05-16 08:43:13 -04:00
Mike Reeves c129bba7e5 Merge pull request #10361 from Security-Onion-Solutions/TOoSmOotH-patch-3
Update defaults.yaml
2023-05-16 08:19:07 -04:00
Mike Reeves fb298224fc Update defaults.yaml 2023-05-16 08:17:50 -04:00
Josh Brower 1feed47185 Merge pull request #10360 from Security-Onion-Solutions/2.4/retry
2.4/retry
2023-05-16 08:15:42 -04:00
Josh Brower 923de356e1 Fix typos 2023-05-16 08:06:31 -04:00
Jason Ertel cea9af4e01 Merge pull request #10359 from Security-Onion-Solutions/kilo
missing braces
2023-05-16 07:25:36 -04:00
Jason Ertel 0f6d894322 missing braces 2023-05-16 07:22:17 -04:00
Josh Brower 9f879164ec Fix broken loop 2023-05-16 06:45:17 -04:00
Jason Ertel 1ddc4b6ff8 Merge pull request #10357 from Security-Onion-Solutions/kilo
ISO tests also use DHCP
2023-05-15 19:04:31 -04:00
Jason Ertel 58f80120bd ISO tests also use DHCP 2023-05-15 18:58:04 -04:00
m0duspwnens a0e08e4f41 enable elasticfleet via pillar, fix sostatus for elasticfleet 2023-05-15 17:41:09 -04:00
m0duspwnens 2813d67670 import GLOBALS 2023-05-15 16:47:33 -04:00
m0duspwnens c49b134122 move so-catrust 2023-05-15 16:43:47 -04:00
Mike Reeves 48ce377b02 Merge pull request #10340 from Security-Onion-Solutions/airgaps
Fix IDS Tools
2023-05-15 16:10:03 -04:00
Josh Brower 40de01e8c4 Temp fix 2023-05-15 15:56:21 -04:00
Mike Reeves 2fe88a1e66 Fix verify so copying sigma rules isnt fail 2023-05-15 15:33:52 -04:00
Mike Reeves 214117e0e0 Fix verify so copying sigma rules isnt fail 2023-05-15 15:33:32 -04:00
Josh Brower bc2d3e43f0 Merge pull request #10356 from Security-Onion-Solutions/2.4/retry
Fix path
2023-05-15 15:20:43 -04:00
Josh Brower b3528b2139 Fix path 2023-05-15 15:18:49 -04:00
Josh Brower 7ecd067e2b Merge pull request #10355 from Security-Onion-Solutions/2.4/retry
Add retry
2023-05-15 14:57:46 -04:00
Josh Brower 576c1d7cc1 Add retry 2023-05-15 14:55:43 -04:00
m0duspwnens 6320528263 move so-catrust 2023-05-15 14:08:30 -04:00
Josh Brower 6528632861 Merge pull request #10352 from Security-Onion-Solutions/2.4/taglogs
Refactor wrapper
2023-05-15 13:56:38 -04:00
m0duspwnens 928b3b5471 create local kibana pillar dirs before touching pillar files 2023-05-15 13:40:52 -04:00
m0duspwnens f1c8467e9b create and assign kibana.soc and kibana.adv 2023-05-15 13:13:38 -04:00
m0duspwnens f5337eba1a Merge remote-tracking branch 'origin/2.4/dev' into issue/10229 2023-05-15 13:08:53 -04:00
Jason Ertel de28e15805 Merge pull request #10354 from Security-Onion-Solutions/kilo
Relax rate limiting thresholds when installing in test mode
2023-05-15 13:02:07 -04:00
Jason Ertel 09ba15f9bb Merge branch '2.4/dev' into kilo 2023-05-15 12:57:46 -04:00
Jason Ertel ba9892941d relax login rate limiting when testing 2023-05-15 12:57:41 -04:00
Josh Brower b381c51246 Merge branch '2.4/dev' into 2.4/taglogs 2023-05-15 12:13:44 -04:00
Josh Brower 64726af69c Change from tmp 2023-05-15 12:09:16 -04:00
m0duspwnens 7a4fea7a12 fix nginx merge conflicts 2023-05-15 11:40:12 -04:00
m0duspwnens db47256cdd rename 2023-05-15 11:23:27 -04:00
m0duspwnens ba2392997b enabled/disable elastic-fleet-package-registry via ui 2023-05-15 11:14:21 -04:00
m0duspwnens 1a1bcb3526 enable/disable idh via ui 2023-05-15 10:53:39 -04:00
m0duspwnens 997e6c141a enable/disable idstools in ui 2023-05-15 10:19:15 -04:00
Doug Burks 9a3c997779 Merge pull request #10351 from Security-Onion-Solutions/dougburks-patch-1
Update install_agent_grid.sls
2023-05-15 10:13:55 -04:00
Doug Burks 53ed4d49c2 Update install_agent_grid.sls 2023-05-15 10:10:27 -04:00
m0duspwnens 0cee5b54a1 make advnaced 2023-05-15 10:00:15 -04:00
m0duspwnens 3f8e15d16f enabled/disable elaticfleet in ui 2023-05-15 09:41:44 -04:00
Doug Burks f8f6a1433a Merge pull request #10350 from Security-Onion-Solutions/2.4/fix-agent-iso
2.4/fix agent iso
2023-05-15 08:47:05 -04:00
Doug Burks 83188401c5 update status messages 2023-05-15 08:43:53 -04:00
Doug Burks b01367a294 remove the temp directory when finished 2023-05-15 08:41:05 -04:00
Doug Burks d8e0e320f4 so-elastic-agent-gen-installers should use /nsm to avoid filling /tmp 2023-05-15 07:31:32 -04:00
m0duspwnens b033f0d20f fix import 2023-05-12 16:57:31 -04:00
m0duspwnens b71b4225c4 enabled/disable kratos in ui 2023-05-12 16:53:18 -04:00
m0duspwnens 2a39f5f0b5 enabled/disable mysql in ui 2023-05-12 16:27:18 -04:00
m0duspwnens e27e690bc8 fix disabled for registry 2023-05-12 16:07:49 -04:00
m0duspwnens 57371ffe5a fix so-status for dockerregistry 2023-05-12 16:05:23 -04:00
m0duspwnens 4440ecd433 enabled/disable registry in ui 2023-05-12 15:51:00 -04:00
m0duspwnens 277ad61920 enabled/disable registry in ui 2023-05-12 15:49:13 -04:00
m0duspwnens 0860b1501e fix so-status state name 2023-05-12 15:17:51 -04:00
m0duspwnens b06610088a fix so-status state names 2023-05-12 15:15:21 -04:00
m0duspwnens aa2f168b73 make node_description a string 2023-05-12 15:12:12 -04:00
m0duspwnens d1f7e5f4a7 fix and rename timeout_ms and parallel_limit 2023-05-12 14:57:55 -04:00
m0duspwnens 05a81596e5 place and access sensoronikey from sensoroni.config 2023-05-12 14:38:39 -04:00
m0duspwnens 00d1ca0b62 configure and enable/disable sensoroni via ui 2023-05-12 14:26:46 -04:00
Josh Brower dbd4a5bd98 Refactor wrapper 2023-05-12 12:11:28 -04:00
Doug Burks 3db34a3346 Merge pull request #10341 from Security-Onion-Solutions/dougburks-patch-1
revert last change to so-verify
2023-05-11 16:47:50 -04:00
Doug Burks f9890778ad revert last change to so-verify 2023-05-11 16:45:46 -04:00
m0duspwnens e342dae818 put srvKey under soc:config:server 2023-05-11 16:14:52 -04:00
Mike Reeves 64e294ef48 Fix verify so copying sigma rules isnt fail 2023-05-11 16:02:58 -04:00
Mike Reeves 992bbdfac1 Merge branch '2.4/dev' of https://github.com/Security-Onion-Solutions/securityonion into airgaps 2023-05-11 16:00:15 -04:00
Mike Reeves a4cd695cc8 Airgap Rules Fix 2023-05-11 16:00:07 -04:00
Doug Burks 9f85b3cb4f Merge pull request #10339 from Security-Onion-Solutions/dougburks-patch-1
add another error exclusion to so-verify
2023-05-11 15:59:14 -04:00
Doug Burks e9fd7d8b8b add another error exclusion to so-verify 2023-05-11 15:38:57 -04:00
m0duspwnens fa1a428133 fix import 2023-05-11 15:36:20 -04:00
m0duspwnens 8e18986671 enabled/disable soc in ui 2023-05-11 15:33:16 -04:00
m0duspwnens a3b97b40ba enabled/disable soctopus in ui 2023-05-11 13:57:08 -04:00
Doug Burks 634dd9907d Merge pull request #10338 from Security-Onion-Solutions/dougburks-patch-1
fix typo in so-elastic-fleet-setup
2023-05-11 13:40:15 -04:00
Doug Burks 1d12dcd243 fix typo in so-elastic-fleet-setup 2023-05-11 13:39:07 -04:00
Jason Ertel 2ec8d6abf0 Merge pull request #10337 from Security-Onion-Solutions/kilo
Prevent duplicate telegraph data from elastic from distorting Influx graphs
2023-05-11 13:38:14 -04:00
Jason Ertel 98c19e5934 handle duplicate telegraph data for elastic 2023-05-11 13:34:44 -04:00
m0duspwnens 03e7636a18 include nginx.config in soctopus 2023-05-11 13:19:16 -04:00
m0duspwnens 6ce9561ba7 enabled/disable nginx via ui 2023-05-11 13:15:26 -04:00
m0duspwnens b80dd996cc fix import 2023-05-11 12:46:05 -04:00
m0duspwnens 63cea88c1d enable/disable influxdb in ui 2023-05-11 12:43:06 -04:00
m0duspwnens f41c75c633 fix include 2023-05-11 12:14:30 -04:00
m0duspwnens 20f706f165 enable/disable telegraf in ui 2023-05-11 12:12:25 -04:00
m0duspwnens c74b440922 configure and enable/disable curator in ui 2023-05-11 10:17:28 -04:00
Mike Reeves badaab94de Merge pull request #10331 from Security-Onion-Solutions/airgaps
Fix so_user shennanigans
2023-05-10 18:34:39 -04:00
Mike Reeves 2be6c603ab Fix so_user shennanigans 2023-05-10 17:47:41 -04:00
Jason Ertel 7700a5a1bf Merge pull request #10328 from Security-Onion-Solutions/kilo
add missing dollar sign
2023-05-10 17:06:35 -04:00
Jason Ertel 687a89e30b add missing dollar sign 2023-05-10 17:00:13 -04:00
m0duspwnens 06a0492226 import DOCKER and GLOBALS for filestream enabled 2023-05-10 16:04:53 -04:00
m0duspwnens 4e4034e054 cleanup strelka in top and allowed_states 2023-05-10 15:59:10 -04:00
m0duspwnens 5b06aa518e makedirs if needed 2023-05-10 15:55:21 -04:00
m0duspwnens c91fb438bb update map file with new strelka format 2023-05-10 15:53:28 -04:00
m0duspwnens 54c9a3ec71 enable/disable each strelka container in ui 2023-05-10 15:50:07 -04:00
Mike Reeves cc1babbea6 Merge pull request #10325 from Security-Onion-Solutions/airgaps
Initial airgap support
2023-05-10 15:00:57 -04:00
Mike Reeves bde67266d4 Add elastic agent logic 2023-05-10 14:28:46 -04:00
Josh Brower 1de1e2fdc2 Merge pull request #10324 from Security-Onion-Solutions/2.4/taglogs
tag container logs
2023-05-10 14:21:16 -04:00
Josh Brower 2293574f2e tag container logs 2023-05-10 14:19:17 -04:00
Mike Reeves 3077c21bd9 Add official key 2023-05-10 14:15:06 -04:00
Mike Reeves a52ca6e298 Add official key 2023-05-10 13:29:22 -04:00
m0duspwnens 02e1a29f0c configure redis in ui 2023-05-10 11:54:21 -04:00
m0duspwnens 1b9ed1c72b uncomment so-playbook when enabled 2023-05-10 11:24:14 -04:00
Mike Reeves 9564158c32 Don't sync down the repo for airgap 2023-05-10 11:19:36 -04:00
m0duspwnens ce1f75aab6 fix indent for description and helplink 2023-05-10 11:19:00 -04:00
m0duspwnens a0ce46e702 enable/disable logstash in ui 2023-05-10 11:16:03 -04:00
Mike Reeves f501fac9cd Don't sync down the repo for airgap 2023-05-10 11:07:03 -04:00
Mike Reeves 8b95edd91a Fix setup whiptail for airgap 2023-05-10 10:46:29 -04:00
m0duspwnens c5e5763014 uncomment so-kibana in so-status 2023-05-10 09:55:20 -04:00
m0duspwnens 2322ed4b6d fix require 2023-05-09 17:13:36 -04:00
m0duspwnens 38d69701a4 fix require 2023-05-09 17:09:00 -04:00
m0duspwnens 4dc0f06331 add add_kibana_to_minion to so-minion 2023-05-09 16:51:41 -04:00
m0duspwnens ec7bcd9b0c enabled/disable kibana in ui 2023-05-09 16:46:48 -04:00
Doug Burks 24140c4cda Merge pull request #10319 from Security-Onion-Solutions/dougburks-patch-1
Update soc_idstools.yaml
2023-05-09 12:18:36 -04:00
m0duspwnens 6909d3ed14 move cacertz and capemz to ssl state 2023-05-09 12:16:18 -04:00
Doug Burks cf5feafb1e Update soc_idstools.yaml 2023-05-09 12:11:42 -04:00
Josh Brower ebc20a86eb Merge pull request #10316 from Security-Onion-Solutions/2.4/integrationversions
Remove Hardcoded Versions
2023-05-09 12:04:24 -04:00
Mike Reeves e792fbe023 Merge pull request #10317 from Security-Onion-Solutions/airgaps
Remove escaping from nmcli
2023-05-09 11:58:02 -04:00
Mike Reeves 02b619193d Remove escaping from nmcli 2023-05-09 11:55:51 -04:00
Mike Reeves e5aab3b707 Merge pull request #10315 from Security-Onion-Solutions/airgaps
Fix NIC escaping
2023-05-09 11:40:20 -04:00
Mike Reeves 089fcbd0c5 Fix NIC escaping 2023-05-09 11:37:50 -04:00
Josh Brower 62bafb94f9 Remove Hardcoded Versions 2023-05-09 11:30:25 -04:00
m0duspwnens 9d6fb98e3b move cacertz and capemz to ca state 2023-05-09 11:13:57 -04:00
m0duspwnens 7bd9a84aa1 changes to top and allow_states for enable/disable elasticsearch in ui 2023-05-09 10:01:30 -04:00
m0duspwnens 328b714306 import ELASTICSEARCHMERGED 2023-05-09 09:51:53 -04:00
m0duspwnens 2a979197a0 enabled/disable elasticsearch in ui 2023-05-09 09:33:37 -04:00
Jason Ertel 6f7f09f1cd Merge pull request #10310 from Security-Onion-Solutions/kilo
nginx changes: add rate limiting, remove old HH html
2023-05-08 16:32:27 -04:00
m0duspwnens f9804c218d only append to so-status.conf if needed 2023-05-08 16:20:17 -04:00
Jason Ertel dfc4498921 Clarify auth throttle desc 2023-05-08 16:06:10 -04:00
m0duspwnens 9049f9cf03 enabled/disable elastalert via web ui 2023-05-08 15:56:26 -04:00
Jason Ertel 79a5f3a89f add missing slash 2023-05-08 15:55:00 -04:00
Jason Ertel c7cb11e919 remove obsolete code 2023-05-08 15:34:19 -04:00
Jason Ertel da81d93930 adjust var name 2023-05-08 15:32:04 -04:00
Jason Ertel 44344612b7 adjust var name 2023-05-08 15:31:08 -04:00
Jason Ertel 7ac4bc52a3 add missing file 2023-05-08 14:55:37 -04:00
m0duspwnens 9aaa33c224 fix allowed_states logic in playbook config 2023-05-08 14:51:10 -04:00
weslambert a13e6257c3 Don't read from 'known_hosts.log', 'known_services.log', or 'ntp.log' 2023-05-08 14:38:55 -04:00
m0duspwnens ef18cb3704 top and allow_states changes for playbook 2023-05-08 14:12:46 -04:00
m0duspwnens d5c7eec4ef enabled false by default, enabled via pillar in so-minion 2023-05-08 13:43:53 -04:00
m0duspwnens a2c444e03b enabled/disable playbook in ui 2023-05-08 13:43:08 -04:00
Jason Ertel 40c3f9a156 Merge branch '2.4/dev' into kilo 2023-05-08 12:19:00 -04:00
Jason Ertel bd23d1ab7b implement selective rate limiting 2023-05-08 12:18:46 -04:00
weslambert a1e0041b14 Merge pull request #10287 from Security-Onion-Solutions/fix/strelka_ignore_yara_rules_2.4
Ignore "expl_outlook_cve_2023_23397.yar" and "gen_mal_3cx_compromise_mar23.yar" since they are causing problems with YARA compilation
2023-05-08 11:58:17 -04:00
weslambert 7483dbf442 Merge pull request #10304 from Security-Onion-Solutions/fix/kibana_pivot_to_pcap_url_2.4
Surround _id field in double quotes to prevent errors associated with values beginning with a hyphen
2023-05-08 11:55:35 -04:00
Wes 0f30e787b3 Surround _id field in double quotes to prevent errors associated with values beginning with a hyphen 2023-05-08 15:34:35 +00:00
m0duspwnens 5d50dbb69e enabled/disable zeek 2023-05-08 10:12:32 -04:00
Mike Reeves 867ea5a1ac Merge pull request #10298 from Security-Onion-Solutions/dockerbinds
Add custom volume binds to all containers
2023-05-08 09:48:45 -04:00
Doug Burks 52cfc59113 Merge pull request #10300 from Security-Onion-Solutions/dougburks-patch-2
FIX: Improve soup's local file modification logic #8972
2023-05-08 09:47:57 -04:00
Mike Reeves 789eafa8c2 Fix string entry 2023-05-08 09:45:08 -04:00
Doug Burks ed712477d6 FIX: Improve soup's local file modification logic #8972 2023-05-08 09:43:20 -04:00
Mike Reeves e3cb0a9953 Fix string entry 2023-05-08 09:35:07 -04:00
m0duspwnens 743bbfea35 add zeek.enabled to zeek annotation file 2023-05-05 17:09:01 -04:00
m0duspwnens e8a5a5bffb import GLOBALS 2023-05-05 16:44:46 -04:00
m0duspwnens a97fa9675b enable/disable zeek in ui 2023-05-05 16:33:59 -04:00
Mike Reeves 2418d9a096 Add volume mounts 2023-05-05 16:01:23 -04:00
m0duspwnens 2a8ed24045 import GLOBALS 2023-05-05 15:35:04 -04:00
Mike Reeves f1c91e91b1 Remove port bindings from logstash config section 2023-05-05 15:10:21 -04:00
m0duspwnens 5405bc4e20 handle import node and merge with 2.4/dev 2023-05-05 14:41:26 -04:00
m0duspwnens 47a580d110 fix enabled and disable steno in ui 2023-05-05 13:59:52 -04:00
Mike Reeves 61a43f7df5 Merge pull request #10233 from Security-Onion-Solutions/mkrfixes
Several Fixes
2023-05-05 13:52:56 -04:00
Mike Reeves 21ffcbf2fd Update so-setup 2023-05-05 13:16:45 -04:00
Mike Reeves 563c0631ba Update so-functions 2023-05-05 13:01:40 -04:00
Mike Reeves 77cbf35625 Update so-functions 2023-05-05 11:26:10 -04:00
Mike Reeves d7972032e4 Update init.sls 2023-05-05 10:33:11 -04:00
Mike Reeves f6dcefe0f8 Update so-user 2023-05-05 09:34:33 -04:00
Mike Reeves d5a1406095 Update so-user 2023-05-05 09:15:52 -04:00
Josh Patterson 3d3be6bd29 Merge pull request #10290 from Security-Onion-Solutions/ui/logstash
UI/logstash
2023-05-05 09:01:57 -04:00
m0duspwnens 52fec5fef0 Merge remote-tracking branch 'origin/mkrfixes' into ui/logstash 2023-05-05 09:00:23 -04:00
m0duspwnens ddb776c80e add redis pillars to searchnode. move redis scripts with jinja to sbin_jinja 2023-05-04 17:26:18 -04:00
Mike Reeves 469258ee5e Update init.sls 2023-05-04 16:46:54 -04:00
Mike Reeves 4fec2a18a5 Update so-functions 2023-05-04 16:26:40 -04:00
weslambert c7ed29dfa8 Ignore "expl_outlook_cve_2023_23397.yar" and "gen_mal_3cx_compromise_mar23.yar" since they are causing problems with YARA compilation 2023-05-04 16:16:06 -04:00
Mike Reeves 80cbe5f6e8 Update so-functions 2023-05-04 15:45:05 -04:00
Mike Reeves a64eb0ba97 Update so-setup 2023-05-04 15:30:44 -04:00
Josh Patterson dbb1b82e1b Merge pull request #10285 from Security-Onion-Solutions/ui/logstash
source from sbin_jinja and exlude pat
2023-05-04 15:14:47 -04:00
m0duspwnens f34627f709 source from sbin_jinja and exlude pat 2023-05-04 15:13:42 -04:00
Josh Patterson 59451fc4d0 Merge pull request #10284 from Security-Onion-Solutions/ui/logstash
remove extra " from so-elasticsearch-roles-load
2023-05-04 15:02:34 -04:00
m0duspwnens dc77b20723 remove extra " from so-elasticsearch-roles-load 2023-05-04 14:54:37 -04:00
Josh Patterson 51869ce5b2 Merge pull request #10282 from Security-Onion-Solutions/ui/logstash
UI/logstash
2023-05-04 13:55:28 -04:00
m0duspwnens 98705608a6 Merge remote-tracking branch 'origin/mkrfixes' into ui/logstash 2023-05-04 13:53:55 -04:00
Mike Reeves 8055088d25 Fix some errors 2023-05-04 13:35:44 -04:00
Mike Reeves d0cfaaeb26 Fix some errors 2023-05-04 13:28:11 -04:00
Mike Reeves fbacfce0e4 Fix some errors 2023-05-04 13:18:08 -04:00
m0duspwnens 082704ce1f logstash jinja for ui 2023-05-04 13:07:07 -04:00
m0duspwnens 71b6311edc add logstash.nodes to pillar top 2023-05-04 13:05:16 -04:00
Mike Reeves 7e71c60334 Fix some errors 2023-05-04 12:57:35 -04:00
Mike Reeves c5c2600799 Fix some errors 2023-05-04 12:56:04 -04:00
Josh Brower c6c3cc82e4 Merge pull request #10281 from Security-Onion-Solutions/2.4/airgapfix
Reenable Elastic Package Registry - all managers
2023-05-04 12:25:00 -04:00
Josh Brower b17b68034e Reenable Elastic Package Registry - all managers 2023-05-04 12:19:45 -04:00
Mike Reeves cbd1c05929 Sbin Changes 2023-05-04 10:36:03 -04:00
m0duspwnens b14d33ced8 add logstash jinja for ui changes 2023-05-03 15:22:03 -04:00
Mike Reeves a5b1660778 Fix firewall changes 2023-05-03 14:12:32 -04:00
Mike Reeves d5c4a2887e Fix annotations and defaults for logstash 2023-05-03 13:37:06 -04:00
Josh Brower b4b84038ed Merge pull request #10277 from Security-Onion-Solutions/2.4/package-registry
Reenable Elastic Package Registry
2023-05-03 12:57:21 -04:00
Josh Patterson 85ce0bb472 Merge pull request #10274 from Security-Onion-Solutions/ui/firewall
UI/firewall
2023-05-03 12:44:18 -04:00
m0duspwnens b0bd64bc10 define and assign elastic_agent_update port 2023-05-03 12:40:56 -04:00
Josh Brower 17dd21703d Reenable Elastic Package Registry 2023-05-03 12:08:46 -04:00
m0duspwnens 767c922083 add idh to firewall annotation 2023-05-03 11:55:29 -04:00
Josh Brower a57ba7e35d Merge pull request #10273 from Security-Onion-Solutions/2.4/fleet-airgap
Fleet Airgap - Phase 1
2023-05-03 11:24:52 -04:00
Josh Brower 81c1678ec7 Merge branch '2.4/dev' into 2.4/fleet-airgap 2023-05-03 11:19:57 -04:00
m0duspwnens 1593da4597 idh services are no longer selected in setup 2023-05-03 11:05:21 -04:00
m0duspwnens 8359f1983c idh firewall 2023-05-03 10:53:13 -04:00
Josh Brower 87a20ffede Refactor Wrapper gen script 2023-05-03 10:44:46 -04:00
m0duspwnens c597766390 assign firewall pillars to * in top 2023-05-03 10:17:45 -04:00
Mike Reeves 3d10a60502 Fix annotations and defaults for logstash 2023-05-03 10:01:44 -04:00
Mike Reeves 220c534ad4 Fix annotations and defaults for logstash 2023-05-03 09:32:03 -04:00
Mike Reeves c7604e893e Fix annotations and defaults for logstash 2023-05-03 09:17:37 -04:00
Josh Brower b56486d88e Set Elastic Agent Artifact Registry URL 2023-05-03 08:55:29 -04:00
Josh Brower c99f19251b More visibility 2023-05-02 17:04:41 -04:00
Josh Brower 544fa824ea Initial cut for Artifact Registry 2023-05-02 14:17:59 -04:00
Mike Reeves dd034edad6 Fix some files 2023-05-02 13:12:14 -04:00
Mike Reeves 2419cf86ee Fix some files 2023-05-02 12:41:49 -04:00
m0duspwnens 61f9573ace Merge remote-tracking branch 'origin/2.4/dev' into ui/firewall 2023-05-02 12:21:09 -04:00
Mike Reeves 7595072e85 Fix some files 2023-05-02 12:15:05 -04:00
Mike Reeves e60e21d9ff Move files out of common 2023-05-02 09:40:02 -04:00
Jason Ertel b46a5c4b2a Merge pull request #10267 from Security-Onion-Solutions/kilo
more detection improvements
2023-05-02 08:17:09 -04:00
Jason Ertel 40ff2677c4 more detection improvements 2023-05-02 07:57:49 -04:00
m0duspwnens 80b40503fb no more plural roles, update so-firewall-minion 2023-05-01 17:28:16 -04:00
m0duspwnens 6a501efa75 remove unneeded imports 2023-05-01 16:55:16 -04:00
m0duspwnens 1f6463a9bb rework so-firewall to work with pillar files 2023-05-01 16:49:06 -04:00
Mike Reeves 2d4f4791e0 Move files out of common 2023-05-01 15:21:31 -04:00
Mike Reeves 102906f5dd Change to new repo layout 2023-05-01 13:39:24 -04:00
Jason Ertel 6c151d3ebd Merge pull request #10260 from Security-Onion-Solutions/kilo
simplify cloud detection
2023-05-01 11:26:34 -04:00
Jason Ertel 17e6f5b899 simplify cloud detection 2023-05-01 11:06:00 -04:00
Mike Reeves a38495ce39 Fix pillar top for firewall 2023-05-01 10:40:36 -04:00
Mike Reeves 38629a7676 fix defaults for logstash 2023-05-01 09:55:16 -04:00
m0duspwnens 9a4ae2b832 start with customhostgroup0 2023-04-28 16:44:02 -04:00
m0duspwnens 3fdcb92dfe dont apply firewall.soc state anymore for manager highstate 2023-04-28 15:33:54 -04:00
m0duspwnens 725f5414ba fw rework for ui, still need to add idh to map 2023-04-28 15:30:18 -04:00
Jason Ertel 73aceb9697 Merge pull request #10251 from Security-Onion-Solutions/kilo
Kilo
2023-04-28 14:44:25 -04:00
Jason Ertel 03c89a02ad Add privileged session config option to kratos config UI 2023-04-28 14:01:19 -04:00
Jason Ertel 666d4ea260 Add privileged session config option to kratos config UI 2023-04-28 13:56:28 -04:00
Jason Ertel 4c58aa2ccf Add privileged session config option to kratos config UI 2023-04-28 13:14:30 -04:00
Mike Reeves 26619e5f8d Merge pull request #10245 from Security-Onion-Solutions/2.4/Fix_zeek_idstools
2.4/fix zeek idstools
2023-04-28 09:38:08 -04:00
bryant-treacle 57d90a62f7 Update soc_zeek.yaml 2023-04-27 16:21:41 -04:00
bryant-treacle a8b8a1d0b7 Update soc_idstools.yaml 2023-04-27 15:32:37 -04:00
Mike Reeves e4375a6568 regex for hostgroups 2023-04-27 15:30:59 -04:00
Mike Reeves b8f9a9a311 regex for hostgroups 2023-04-27 15:08:01 -04:00
Mike Reeves 3d7f2bc691 Fix annotations and file locations 2023-04-27 13:23:53 -04:00
Mike Reeves e799edaf49 Fix globals order 2023-04-26 15:54:16 -04:00
Mike Reeves be003f7ee4 Merge branch '2.4/dev' of https://github.com/Security-Onion-Solutions/securityonion into mkrfixes 2023-04-26 15:50:47 -04:00
Mike Reeves 868cb8183c Fix the top file 2023-04-26 14:15:34 -04:00
Mike Reeves b3f94961ea Fix Kibana and friends 2023-04-26 13:30:23 -04:00
bryant-treacle 12120e94c8 Update soc_idstools.yaml 2023-04-26 09:32:08 -04:00
bryant-treacle 49a60bac76 Update soc_idstools.yaml 2023-04-26 08:49:04 -04:00
bryant-treacle f07f0775ac Update top.sls 2023-04-26 08:30:28 -04:00
bryant-treacle e93e58fedb Update node.cfg.jinja 2023-04-26 08:28:40 -04:00
Jason Ertel 8459054ff8 Merge pull request #10220 from Security-Onion-Solutions/kilo
timeout more quickly on aws imdsv2 detection
2023-04-26 07:56:22 -04:00
Jason Ertel 43ec897397 timeout more quickly on aws imdsv2 detection 2023-04-26 07:53:07 -04:00
Mike Reeves 4b73f859d1 don't sync the repo 2x 2023-04-25 15:33:08 -04:00
Jason Ertel 969cf25818 Merge pull request #10199 from Security-Onion-Solutions/jertel/imdsv2
Detect cloud install on forced imdsv2 instances
2023-04-24 16:33:56 -04:00
Jason Ertel e25bbd8a0d Detect cloud install on forced imdsv2 instances 2023-04-24 16:19:20 -04:00
Mike Reeves 5b11c41434 Merge pull request #10197 from Security-Onion-Solutions/TOoSmOotH-patch-1
Update VERSION
2023-04-24 13:40:36 -04:00
Mike Reeves 99f21ce46f Update VERSION 2023-04-24 13:39:51 -04:00
Mike Reeves 9dc31b6db4 Merge pull request #10193 from Security-Onion-Solutions/2.4/dev
2.4.1
2023-04-24 13:29:45 -04:00
Mike Reeves 083d96fab2 Merge pull request #10192 from Security-Onion-Solutions/2.4.1
Update VERIFY_ISO.md
2023-04-24 11:41:04 -04:00
Mike Reeves f21e717dcd Update README.md 2023-04-24 11:39:39 -04:00
Mike Reeves 87e9d2997b Update VERIFY_ISO.md 2023-04-24 11:37:35 -04:00
Josh Patterson 288b5ac4d2 Merge pull request #10184 from Security-Onion-Solutions/2.4/hsschedule
rename highstate schedule
2023-04-24 09:34:11 -04:00
m0duspwnens 533c3b7569 rename highstate schedule 2023-04-24 09:31:32 -04:00
weslambert 32874d2e9d Merge pull request #10175 from Security-Onion-Solutions/fix/setup_docker_image_display_and_log
Display output and write to a log for Docker image operations during setup
2023-04-20 17:15:09 -04:00
Wes fca7753f73 Display output and write to log for Docker image downloads 2023-04-20 20:56:04 +00:00
Doug Burks fcdb02d61e Merge pull request #10174 from Security-Onion-Solutions/dougburks-patch-1
FIX: Overview Customization link #10173
2023-04-20 16:28:01 -04:00
Doug Burks 4dcc79d245 FIX: Overview Customization link #10173 2023-04-20 16:26:51 -04:00
weslambert 6c7b4e5492 Merge pull request #10166 from Security-Onion-Solutions/fix/elasticsearch_curl_config
Don't distribute curl configuration to nodes that don't need it
2023-04-20 08:47:47 -04:00
Wes a341f1b7b7 Don't distribute curl configuration to nodes that don't need it 2023-04-20 12:31:50 +00:00
weslambert 01bd3545d0 Merge pull request #10162 from Security-Onion-Solutions/fix/elastic_agent_metadata
Rename @metadata to metadata to ensure it's not lost between Logstash pipelines
2023-04-19 16:25:01 -04:00
Wes d823d5dcc9 Rename @metadata to metadata to ensure it's not lost between Logstash pipelines 2023-04-19 20:17:10 +00:00
Josh Patterson 9fed2ac616 Merge pull request #10159 from Security-Onion-Solutions/ui/globals
fix globals being changed via ui
2023-04-19 12:22:42 -04:00
m0duspwnens d5ab8ff191 create the local global pillar directory 2023-04-19 11:44:03 -04:00
m0duspwnens 2b28283095 Merge remote-tracking branch 'origin/2.4/dev' into ui/globals 2023-04-19 11:23:29 -04:00
Josh Brower 499b889b56 Merge pull request #10158 from Security-Onion-Solutions/2.4/fleet
Gen installers at the end setup
2023-04-19 11:12:22 -04:00
Josh Brower aa5063c5df Gen installers at the end setup 2023-04-19 11:11:08 -04:00
m0duspwnens 9f07388fa4 fix global location for fleet node 2023-04-19 10:47:08 -04:00
m0duspwnens cd674947bb Merge remote-tracking branch 'origin/2.4/dev' into ui/globals 2023-04-19 10:45:56 -04:00
m0duspwnens 976ad4152d move soc_global and adv_global pillar file under pillar/global/ 2023-04-19 10:44:02 -04:00
Josh Brower 2633f348ac Merge pull request #10157 from Security-Onion-Solutions/2.4/fleet
Fix cert gen
2023-04-19 10:25:24 -04:00
Josh Brower 1ab72e9288 Fix cert gen 2023-04-19 10:23:13 -04:00
Josh Brower ef92fba867 Merge pull request #10156 from Security-Onion-Solutions/2.4/fleet
2.4/fleet
2023-04-19 10:06:03 -04:00
Josh Brower 36c96c4beb Remove dep vars 2023-04-19 10:02:24 -04:00
Josh Brower d79ad53daf Merge pull request #10153 from Security-Onion-Solutions/fleet-sa
FEATURE: Dedicated Fleet Node
2023-04-19 09:12:30 -04:00
Josh Brower 4c4b873eca Add integrations and cleanup 2023-04-19 09:04:33 -04:00
Josh Patterson a062939705 Merge pull request #10152 from Security-Onion-Solutions/issue/10050
Issue/10050
2023-04-18 11:58:04 -04:00
Jason Ertel 3f14885539 Merge pull request #10151 from Security-Onion-Solutions/kilo
avoid docker and lo nics getting used by test profiles
2023-04-18 11:56:35 -04:00
Jason Ertel 393077ba9e avoid docker and lo nics getting used by test profiles 2023-04-18 11:43:24 -04:00
m0duspwnens b0f9585da1 Merge remote-tracking branch 'origin/2.4/dev' into issue/10050 2023-04-18 11:31:00 -04:00
m0duspwnens 7c8ba04820 set file limit for zeek container 2023-04-18 11:30:39 -04:00
Josh Brower 31f83c6dee Re-enabled Fleet Setup during setup 2023-04-17 15:00:51 -04:00
Josh Brower 8cccaef664 mkdirs as needed 2023-04-17 12:28:07 -04:00
Josh Brower 1944d09978 Logstash certs fixup 2023-04-17 11:34:57 -04:00
Josh Brower a7d282b412 Firewall fixup 2023-04-15 18:33:44 -04:00
Jason Ertel aade62491c Merge pull request #10132 from Security-Onion-Solutions/kilo
fix log dir
2023-04-14 16:58:14 -04:00
Jason Ertel b901555793 fix log dir 2023-04-14 16:56:40 -04:00
Josh Patterson debe146dcf Merge pull request #10131 from Security-Onion-Solutions/m0duspwnens-patch-1
USER=root no longer needed for so-status cron
2023-04-14 16:23:27 -04:00
Josh Patterson c8ef8cc88e USER=root no longer needed for so-status cron 2023-04-14 16:18:48 -04:00
Jason Ertel 9bd176621d Merge pull request #10130 from Security-Onion-Solutions/kilo
detect root using id command
2023-04-14 16:17:44 -04:00
Jason Ertel 05baaacc83 detect root using id command 2023-04-14 16:15:39 -04:00
Jason Ertel 9bc44c122f Merge pull request #10129 from Security-Onion-Solutions/kilo
wrong and
2023-04-14 12:46:11 -04:00
Jason Ertel 1fdd8acd0c wrong and 2023-04-14 12:35:32 -04:00
Josh Brower 92a6eac976 fix EA wrapper gen 2023-04-14 12:09:18 -04:00
Jason Ertel dc227df229 Merge pull request #10128 from Security-Onion-Solutions/kilo
Skip raid state for cloud images
2023-04-14 10:31:17 -04:00
Jason Ertel ff35a58f3f Skip raid state for cloud images 2023-04-14 10:24:54 -04:00
Josh Patterson 64fde6b02e Merge pull request #10124 from Security-Onion-Solutions/2.4/ubuntu
2.4/ubuntu
2023-04-13 16:35:53 -04:00
m0duspwnens 1047462898 add identifiers for all cron.present 2023-04-13 16:25:47 -04:00
m0duspwnens 76ba89c356 fix so-status cron to work with ubuntu 2023-04-13 16:01:43 -04:00
weslambert f3b4ee6a0b Merge pull request #10121 from Security-Onion-Solutions/fix/elasticsearch_deletion_improvements
Simplify deletion logic and add stderr and stdout logging within script
2023-04-13 11:10:50 -04:00
Wes d6421ee7cc Simplify deletion logic and add stderr and stdout logging within script 2023-04-13 15:04:16 +00:00
Doug Burks 148ef5833e Merge pull request #10120 from Security-Onion-Solutions/2.4/fix-suricata-dns
FIX: Suricata DNS A and CNAME parsing #10117
2023-04-13 11:00:24 -04:00
Doug Burks a67cbb3276 FIX: Suricata DNS A and CNAME parsing #10117 2023-04-13 10:56:17 -04:00
m0duspwnens 0485c83388 Merge remote-tracking branch 'origin/2.4/dev' into 2.4/ubuntu 2023-04-13 09:10:58 -04:00
Jason Ertel a8d3363a6f Merge pull request #10115 from Security-Onion-Solutions/kilo
discover appliance model grain during setup
2023-04-12 19:12:45 -04:00
Jason Ertel dba7b84adb discover appliance model grain during setup 2023-04-12 19:02:04 -04:00
Josh Brower 2567ceea74 Fix path 2023-04-12 16:51:40 -04:00
Josh Brower 4ec31dbf35 Refactoring Fleet setup redux 2023-04-12 16:40:28 -04:00
m0duspwnens e4e326cd06 limit whiptail install options for ubuntu 2023-04-12 15:44:42 -04:00
m0duspwnens 0d17f4f486 python modules for filecheck 2023-04-12 14:38:21 -04:00
Mike Reeves 7838393b9f Merge pull request #10112 from Security-Onion-Solutions/TOoSmOotH-patch-3
Update defaults.yaml
2023-04-12 10:32:54 -04:00
m0duspwnens c90c72dbba provide info when running apt-get update and upgrade 2023-04-12 10:17:13 -04:00
Mike Reeves 04eb73ac27 Update defaults.yaml 2023-04-12 10:06:23 -04:00
m0duspwnens de082f6100 install chrony in ntp state 2023-04-12 09:26:04 -04:00
weslambert 2c44c8e468 Merge pull request #10108 from Security-Onion-Solutions/fix/elastic_clear
Update Elastic clear utility script
2023-04-11 17:24:21 -04:00
Wes 06b60ca96b Don't stop Elastic Fleet for now 2023-04-11 21:11:12 +00:00
Wes 4d64a9777e Update Elastic clear utility script 2023-04-11 21:06:20 +00:00
m0duspwnens 26a12477ac python3-rich for ubuntu and chrony pkg for all 2023-04-11 15:36:57 -04:00
weslambert 43447e5df5 Merge pull request #10106 from Security-Onion-Solutions/fix/kibana_16.04_dashboards_remove
Remove Security Onion 16.04 dashboards
2023-04-11 14:41:12 -04:00
m0duspwnens c66f595666 unsure prereqs for sensor 2023-04-11 13:48:59 -04:00
m0duspwnens ad64b873c0 ubuntu changes 2023-04-11 12:58:40 -04:00
Wes c6be0a48a1 Remove Security Onion 16.04 dashboards 2023-04-11 15:05:41 +00:00
weslambert 5eb0364a98 Merge pull request #10105 from Security-Onion-Solutions/fix/elasticsearch_template_loading_so-searchnode
Only load pipelines and templates if the node role is not 'so-searchnode'
2023-04-11 10:45:52 -04:00
Wes 8d0074c712 Only load pipelines and tempaltes if the node role is not 'so-searchnode' 2023-04-11 14:15:21 +00:00
Jason Ertel 3883a89212 Merge pull request #10102 from Security-Onion-Solutions/kilo
elastic-fleet typo fix; remote dev enhancement
2023-04-10 14:09:20 -04:00
Jason Ertel cfa61a6c26 correct salt state 2023-04-10 14:04:19 -04:00
Jason Ertel 7f28cdd2a3 provide means for using salt-relay with local development against remove VMs 2023-04-10 14:04:03 -04:00
m0duspwnens 9ea3eaafae fix merge conflict 2023-04-10 09:09:43 -04:00
m0duspwnens 16249cc80d salt install for ubuntu 2023-04-10 09:06:55 -04:00
m0duspwnens 2589670755 set forceType 2023-04-06 15:16:04 -04:00
Josh Brower 17bc96c3b3 Refactoring Fleet setup 2023-04-06 13:21:19 -04:00
Josh Patterson b87ee4904f Merge pull request #10096 from Security-Onion-Solutions/salt3006rc3
only install salt-minion on non manager
2023-04-06 11:07:26 -04:00
m0duspwnens 7519a8c39d only install salt-minion on non manager 2023-04-06 10:20:17 -04:00
m0duspwnens df4bf95b93 sort local.zeek so redef is last 2023-04-06 09:54:59 -04:00
m0duspwnens 602e00058a Merge remote-tracking branch 'remotes/origin/2.4/dev' into issue/10050 2023-04-06 09:13:27 -04:00
Josh Patterson 6aba7b6bcf Merge pull request #10091 from Security-Onion-Solutions/salt3006rc3
Salt3006rc3
2023-04-05 16:42:36 -04:00
Josh Patterson ff7aaa95e1 Merge branch '2.4/dev' into salt3006rc3 2023-04-05 16:38:41 -04:00
m0duspwnens f166919160 use dockerpy 5.0.2 2023-04-05 15:35:48 -04:00
m0duspwnens aecbfd28ee install salt module deps from local 2023-04-05 13:08:50 -04:00
m0duspwnens b24e3ff6c4 add requests 2.25.1 2023-04-04 16:59:35 -04:00
Josh Brower cda67b2894 Ded Fleet Node - checkpoint 2023-04-04 16:11:22 -04:00
m0duspwnens 6040c5062b include whl files for salt module dependencies 2023-04-04 16:08:35 -04:00
m0duspwnens d83266c546 remove unrecognized keyword arguments 2023-04-04 09:58:44 -04:00
m0duspwnens 6039a1430e x509 changes for salt 3006 2023-04-04 08:55:10 -04:00
Josh Brower c2d4e870c8 Fixup Elastic Fleet 2023-04-03 16:50:34 -04:00
Josh Patterson 1faceddc40 Merge pull request #10085 from Security-Onion-Solutions/saltrc3key
Saltrc3key
2023-04-03 11:27:04 -04:00
Josh Patterson 471f467e63 Merge pull request #10084 from Security-Onion-Solutions/saltrc3key
add new salt key since rc3 has been added to repo
2023-04-03 11:23:57 -04:00
m0duspwnens a0d8be4dc6 add new salt key since rc3 has been added to repo 2023-04-03 10:44:44 -04:00
Josh Brower 035451cdb8 Cleanup conflict leftovers 2023-04-03 07:30:25 -04:00
Josh Brower af392681e3 Merge remote-tracking branch 'remotes/origin/2.4/dev' into fleet-sa 2023-04-03 07:27:04 -04:00
Josh Brower a0bb6a700a Merge pull request #10082 from Security-Onion-Solutions/2.4/elasticagent8.7
Update elastic agent binaries - 8.7.0
2023-03-31 18:40:43 -04:00
Josh Brower ad000550a6 Update elastic agent binaries - 8.7.0 2023-03-31 16:46:24 -04:00
m0duspwnens 0fc6a74b6d update salt versions on defaults 2023-03-31 15:02:40 -04:00
m0duspwnens 0b96635bcc salt3006rc3 2023-03-31 14:52:40 -04:00
Doug Burks 5b2e39f80d Merge pull request #10078 from Security-Onion-Solutions/2.4/fix-elasticsearch-roles
FIX: SOC only displaying data for users assigned the superuser role #10068
2023-03-31 09:26:58 -04:00
Doug Burks a8b6470a14 Update limited-auditor.json 2023-03-31 09:22:42 -04:00
Doug Burks e945f1c38f Update limited-analyst.json 2023-03-31 09:22:28 -04:00
Doug Burks d0dff9572d Update auditor.json 2023-03-31 09:22:15 -04:00
Doug Burks 68e8c159ce Update analyst.json 2023-03-31 09:21:59 -04:00
Josh Brower a8038c90ce Merge pull request #10077 from Security-Onion-Solutions/2.4/Elastic8.7.0
2.4/elastic8.7.0
2023-03-31 08:57:20 -04:00
Josh Brower 91c990e30a UPGRADE: Elastic 8.7.0 2023-03-31 08:52:43 -04:00
Josh Brower b6b49c876b UPGRADE: Elastic to 8.7.0 2023-03-31 08:51:51 -04:00
Doug Burks cf98a95dd1 Merge pull request #10072 from Security-Onion-Solutions/2.4/so-user-formatting
fix formatting in so-user
2023-03-30 17:03:29 -04:00
Doug Burks 921e79c56c fix formatting in so-user 2023-03-30 16:55:30 -04:00
weslambert 2cfbf30f05 Merge pull request #10070 from Security-Onion-Solutions/fix/cloud_test
Fix cloud sniffing interface configuration
2023-03-30 14:41:59 -04:00
weslambert 3e08506c4e Fix syntax for $is_cloud test 2023-03-30 13:26:36 -04:00
Wes d4cba6908e Use dynamic interface value instead of explicitly setting it to 'bond0' 2023-03-30 16:17:34 +00:00
Wes dfd3456343 Add logging for cloud detection and interface settings 2023-03-30 16:15:41 +00:00
Wes 3cd1598067 Only perform bond interface operations if it is not a cloud installation 2023-03-30 16:11:50 +00:00
m0duspwnens 1be86cdf8e issue 10050 and issue 10062 2023-03-29 17:21:40 -04:00
Mike Reeves bdae8d5017 Merge pull request #10042 from Security-Onion-Solutions/TOoSmOotH-patch-2
Update VERSION
2023-03-28 16:21:50 -04:00
Mike Reeves d5e17da9d3 Update VERSION 2023-03-28 16:20:40 -04:00
Josh Brower e4b10aa28c Remove endif 2023-02-01 15:47:26 -05:00
Josh Brower 1c1b079058 Change default output 2023-02-01 15:42:05 -05:00
Josh Brower 967a0807ad Fix typo 2023-02-01 09:16:34 -05:00
Josh Brower b8d8a5fd6b Remove default outputs 2023-01-31 17:02:41 -05:00
Josh Brower 18a54b86f4 More fixes 2023-01-31 14:57:39 -05:00
Josh Brower 17af095e14 Fix firewall 2023-01-27 11:28:54 -05:00
Josh Brower a71cbcfc9b Pull in upstream changes 2023-01-27 07:53:53 -05:00
Josh Brower 29aa6dceed Add logstash 2023-01-27 07:49:21 -05:00
Josh Brower 81ee333b07 Initial support - Elastic Fleet Node 2023-01-24 13:36:30 -05:00
566 changed files with 15905 additions and 9773 deletions
+2 -2
View File
@@ -1,6 +1,6 @@
## Security Onion 2.4
## Security Onion 2.4 Beta 3
Security Onion 2.4 is here!
Security Onion 2.4 Beta 3 is here!
## Screenshots
+14 -14
View File
@@ -1,47 +1,47 @@
### 2.3.120-20220425 ISO image built on 2022/04/25
### 2.4.2-20230531 ISO image built on 2023/05/31
### Download and Verify
2.3.120-20220425 ISO image:
https://download.securityonion.net/file/securityonion/securityonion-2.3.120-20220425.iso
2.4.2-20230531 ISO image:
https://download.securityonion.net/file/securityonion/securityonion-2.4.2-20230531.iso
MD5: C99729E452B064C471BEF04532F28556
SHA1: 60BF07D5347C24568C7B793BFA9792E98479CFBF
SHA256: CD17D0D7CABE21D45FA45E1CF91C5F24EB9608C79FF88480134E5592AFDD696E
MD5: EB861EFB7F7DA6FB418075B4C452E4EB
SHA1: 479A72DBB0633CB23608122F7200A24E2C3C3128
SHA256: B69C1AE4C576BBBC37F4B87C2A8379903421E65B2C4F24C90FABB0EAD6F0471B
Signature for ISO image:
https://github.com/Security-Onion-Solutions/securityonion/raw/master/sigs/securityonion-2.3.120-20220425.iso.sig
https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.2-20230531.iso.sig
Signing key:
https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/master/KEYS
https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/2.4/main/KEYS
For example, here are the steps you can use on most Linux distributions to download and verify our Security Onion ISO image.
Download and import the signing key:
```
wget https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/master/KEYS -O - | gpg --import -
wget https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/2.4/main/KEYS -O - | gpg --import -
```
Download the signature file for the ISO:
```
wget https://github.com/Security-Onion-Solutions/securityonion/raw/master/sigs/securityonion-2.3.120-20220425.iso.sig
wget https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.2-20230531.iso.sig
```
Download the ISO image:
```
wget https://download.securityonion.net/file/securityonion/securityonion-2.3.120-20220425.iso
wget https://download.securityonion.net/file/securityonion/securityonion-2.4.2-20230531.iso
```
Verify the downloaded ISO image using the signature file:
```
gpg --verify securityonion-2.3.120-20220425.iso.sig securityonion-2.3.120-20220425.iso
gpg --verify securityonion-2.4.2-20230531.iso.sig securityonion-2.4.2-20230531.iso
```
The output should show "Good signature" and the Primary key fingerprint should match what's shown below:
```
gpg: Signature made Mon 25 Apr 2022 08:20:40 AM EDT using RSA key ID FE507013
gpg: Signature made Wed 31 May 2023 05:01:41 PM 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.
@@ -49,4 +49,4 @@ Primary key fingerprint: C804 A93D 36BE 0C73 3EA1 9644 7C10 60B7 FE50 7013
```
Once you've verified the ISO image, you're ready to proceed to our Installation guide:
https://docs.securityonion.net/en/2.3/installation.html
https://docs.securityonion.net/en/2.4/installation.html
+1 -1
View File
@@ -1 +1 @@
2.4.0
2.4.2
-42
View File
@@ -1,42 +0,0 @@
logstash:
pipelines:
helix:
config:
- so/0010_input_hhbeats.conf
- so/1033_preprocess_snort.conf
- so/1100_preprocess_bro_conn.conf
- so/1101_preprocess_bro_dhcp.conf
- so/1102_preprocess_bro_dns.conf
- so/1103_preprocess_bro_dpd.conf
- so/1104_preprocess_bro_files.conf
- so/1105_preprocess_bro_ftp.conf
- so/1106_preprocess_bro_http.conf
- so/1107_preprocess_bro_irc.conf
- so/1108_preprocess_bro_kerberos.conf
- so/1109_preprocess_bro_notice.conf
- so/1110_preprocess_bro_rdp.conf
- so/1111_preprocess_bro_signatures.conf
- so/1112_preprocess_bro_smtp.conf
- so/1113_preprocess_bro_snmp.conf
- so/1114_preprocess_bro_software.conf
- so/1115_preprocess_bro_ssh.conf
- so/1116_preprocess_bro_ssl.conf
- so/1117_preprocess_bro_syslog.conf
- so/1118_preprocess_bro_tunnel.conf
- so/1119_preprocess_bro_weird.conf
- so/1121_preprocess_bro_mysql.conf
- so/1122_preprocess_bro_socks.conf
- so/1123_preprocess_bro_x509.conf
- so/1124_preprocess_bro_intel.conf
- so/1125_preprocess_bro_modbus.conf
- so/1126_preprocess_bro_sip.conf
- so/1127_preprocess_bro_radius.conf
- so/1128_preprocess_bro_pe.conf
- so/1129_preprocess_bro_rfb.conf
- so/1130_preprocess_bro_dnp3.conf
- so/1131_preprocess_bro_smb_files.conf
- so/1132_preprocess_bro_smb_mapping.conf
- so/1133_preprocess_bro_ntlm.conf
- so/1134_preprocess_bro_dce_rpc.conf
- so/8001_postprocess_common_ip_augmentation.conf
- so/9997_output_helix.conf.jinja
+1
View File
@@ -4,6 +4,7 @@ logstash:
- 0.0.0.0:3765:3765
- 0.0.0.0:5044:5044
- 0.0.0.0:5055:5055
- 0.0.0.0:5056:5056
- 0.0.0.0:5644:5644
- 0.0.0.0:6050:6050
- 0.0.0.0:6051:6051
-8
View File
@@ -1,8 +0,0 @@
logstash:
pipelines:
manager:
config:
- so/0011_input_endgame.conf
- so/0012_input_elastic_agent.conf
- so/9999_output_redis.conf.jinja
-8
View File
@@ -1,8 +0,0 @@
logstash:
pipelines:
receiver:
config:
- so/0011_input_endgame.conf
- so/0012_input_elastic_agent.conf
- so/9999_output_redis.conf.jinja
-7
View File
@@ -1,7 +0,0 @@
logstash:
pipelines:
search:
config:
- so/0900_input_redis.conf.jinja
- so/9805_output_elastic_agent.conf.jinja
- so/9900_output_endgame.conf.jinja
+137 -65
View File
@@ -1,44 +1,26 @@
base:
'*':
- patch.needs_restarting
- ntp.soc_ntp
- ntp.adv_ntp
- logrotate
- global.soc_global
- global.adv_global
- docker.soc_docker
- docker.adv_docker
- firewall.soc_firewall
- firewall.adv_firewall
- influxdb.token
- logrotate.soc_logrotate
- logrotate.adv_logrotate
- nginx.soc_nginx
- nginx.adv_nginx
- node_data.ips
- ntp.soc_ntp
- ntp.adv_ntp
- patch.needs_restarting
- patch.soc_patch
- patch.adv_patch
- sensoroni.soc_sensoroni
- sensoroni.adv_sensoroni
- telegraf.soc_telegraf
- telegraf.adv_telegraf
- influxdb.token
- node_data.ips
'* and not *_eval and not *_import':
- logstash.nodes
'*_eval or *_heavynode or *_sensor or *_standalone or *_import':
- match: compound
- zeek
- bpf.soc_bpf
- bpf.adv_bpf
'*_managersearch or *_heavynode':
- match: compound
- logstash
- logstash.manager
- logstash.search
- logstash.soc_logstash
- logstash.adv_logstash
- elasticsearch.index_templates
- elasticsearch.soc_elasticsearch
- elasticsearch.adv_elasticsearch
'*_manager':
- logstash
- logstash.manager
- logstash.soc_logstash
- logstash.adv_logstash
- elasticsearch.index_templates
'*_manager or *_managersearch':
- match: compound
@@ -49,14 +31,19 @@ base:
- kibana.secrets
{% endif %}
- secrets
- soc_global
- adv_global
- manager.soc_manager
- manager.adv_manager
- idstools.soc_idstools
- idstools.adv_idstools
- logstash.nodes
- logstash.soc_logstash
- logstash.adv_logstash
- soc.soc_soc
- soc.adv_soc
- soctopus.soc_soctopus
- soctopus.adv_soctopus
- kibana.soc_kibana
- kibana.adv_kibana
- kratos.soc_kratos
- kratos.adv_kratos
- redis.soc_redis
@@ -65,17 +52,31 @@ base:
- influxdb.adv_influxdb
- elasticsearch.soc_elasticsearch
- elasticsearch.adv_elasticsearch
- elasticfleet.soc_elasticfleet
- elasticfleet.adv_elasticfleet
- elastalert.soc_elastalert
- elastalert.adv_elastalert
- backup.soc_backup
- backup.adv_backup
- firewall.soc_firewall
- firewall.adv_firewall
- curator.soc_curator
- curator.adv_curator
- soctopus.soc_soctopus
- soctopus.adv_soctopus
- minions.{{ grains.id }}
- minions.adv_{{ grains.id }}
'*_sensor':
- healthcheck.sensor
- soc_global
- adv_global
- strelka.soc_strelka
- strelka.adv_strelka
- zeek.soc_zeek
- zeek.adv_zeek
- bpf.soc_bpf
- bpf.adv_bpf
- pcap.soc_pcap
- pcap.adv_pcap
- suricata.soc_suricata
- suricata.adv_suricata
- minions.{{ grains.id }}
- minions.adv_{{ grains.id }}
@@ -89,15 +90,27 @@ base:
{% if salt['file.file_exists']('/opt/so/saltstack/local/pillar/kibana/secrets.sls') %}
- kibana.secrets
{% endif %}
- soc_global
- kratos.soc_kratos
- elasticsearch.soc_elasticsearch
- elasticsearch.adv_elasticsearch
- elasticfleet.soc_elasticfleet
- elasticfleet.adv_elasticfleet
- elastalert.soc_elastalert
- elastalert.adv_elastalert
- manager.soc_manager
- manager.adv_manager
- idstools.soc_idstools
- idstools.adv_idstools
- soc.soc_soc
- soc.adv_soc
- soctopus.soc_soctopus
- soctopus.adv_soctopus
- kibana.soc_kibana
- kibana.adv_kibana
- strelka.soc_strelka
- strelka.adv_strelka
- curator.soc_curator
- curator.adv_curator
- kratos.soc_kratos
- kratos.adv_kratos
- redis.soc_redis
@@ -106,15 +119,19 @@ base:
- influxdb.adv_influxdb
- backup.soc_backup
- backup.adv_backup
- firewall.soc_firewall
- firewall.adv_firewall
- zeek.soc_zeek
- zeek.adv_zeek
- bpf.soc_bpf
- bpf.adv_bpf
- pcap.soc_pcap
- pcap.adv_pcap
- suricata.soc_suricata
- suricata.adv_suricata
- minions.{{ grains.id }}
- minions.adv_{{ grains.id }}
'*_standalone':
- logstash
- logstash.manager
- logstash.search
- logstash.nodes
- logstash.soc_logstash
- logstash.adv_logstash
- elasticsearch.index_templates
@@ -126,7 +143,6 @@ base:
{% endif %}
- secrets
- healthcheck.standalone
- soc_global
- idstools.soc_idstools
- idstools.adv_idstools
- kratos.soc_kratos
@@ -137,51 +153,81 @@ base:
- influxdb.adv_influxdb
- elasticsearch.soc_elasticsearch
- elasticsearch.adv_elasticsearch
- elasticfleet.soc_elasticfleet
- elasticfleet.adv_elasticfleet
- elastalert.soc_elastalert
- elastalert.adv_elastalert
- manager.soc_manager
- manager.adv_manager
- soc.soc_soc
- soc.adv_soc
- soctopus.soc_soctopus
- soctopus.adv_soctopus
- kibana.soc_kibana
- kibana.adv_kibana
- strelka.soc_strelka
- strelka.adv_strelka
- curator.soc_curator
- curator.adv_curator
- backup.soc_backup
- backup.adv_backup
- firewall.soc_firewall
- firewall.adv_firewall
- zeek.soc_zeek
- zeek.adv_zeek
- bpf.soc_bpf
- bpf.adv_bpf
- pcap.soc_pcap
- pcap.adv_pcap
- suricata.soc_suricata
- suricata.adv_suricata
- minions.{{ grains.id }}
- minions.adv_{{ grains.id }}
'*_heavynode':
- elasticsearch.auth
- soc_global
- logstash.nodes
- logstash.soc_logstash
- logstash.adv_logstash
- elasticsearch.soc_elasticsearch
- elasticsearch.adv_elasticsearch
- curator.soc_curator
- curator.adv_curator
- redis.soc_redis
- redis.adv_redis
- zeek.soc_zeek
- zeek.adv_zeek
- bpf.soc_bpf
- bpf.adv_bpf
- pcap.soc_pcap
- pcap.adv_pcap
- suricata.soc_suricata
- suricata.adv_suricata
- strelka.soc_strelka
- strelka.adv_strelka
- minions.{{ grains.id }}
- minions.adv_{{ grains.id }}
'*_idh':
- soc_global
- adv_global
- idh.soc_idh
- idh.adv_idh
- minions.{{ grains.id }}
- minions.adv_{{ grains.id }}
'*_searchnode':
- logstash
- logstash.search
- logstash.nodes
- logstash.soc_logstash
- logstash.adv_logstash
- elasticsearch.index_templates
- elasticsearch.soc_elasticsearch
- elasticsearch.adv_elasticsearch
{% if salt['file.file_exists']('/opt/so/saltstack/local/pillar/elasticsearch/auth.sls') %}
- elasticsearch.auth
{% endif %}
- redis.soc_redis
- soc_global
- adv_global
- redis.adv_redis
- minions.{{ grains.id }}
- minions.adv_{{ grains.id }}
'*_receiver':
- logstash
- logstash.receiver
- logstash.nodes
- logstash.soc_logstash
- logstash.adv_logstash
{% if salt['file.file_exists']('/opt/so/saltstack/local/pillar/elasticsearch/auth.sls') %}
@@ -189,8 +235,6 @@ base:
{% endif %}
- redis.soc_redis
- redis.adv_redis
- soc_global
- adv_global
- minions.{{ grains.id }}
- minions.adv_{{ grains.id }}
@@ -206,11 +250,20 @@ base:
- kratos.soc_kratos
- elasticsearch.soc_elasticsearch
- elasticsearch.adv_elasticsearch
- elasticfleet.soc_elasticfleet
- elasticfleet.adv_elasticfleet
- elastalert.soc_elastalert
- elastalert.adv_elastalert
- manager.soc_manager
- manager.adv_manager
- soc.soc_soc
- soc_global
- adv_global
- soc.adv_soc
- soctopus.soc_soctopus
- soctopus.adv_soctopus
- kibana.soc_kibana
- kibana.adv_kibana
- curator.soc_curator
- curator.adv_curator
- backup.soc_backup
- backup.adv_backup
- kratos.soc_kratos
@@ -219,11 +272,30 @@ base:
- redis.adv_redis
- influxdb.soc_influxdb
- influxdb.adv_influxdb
- firewall.soc_firewall
- firewall.adv_firewall
- zeek.soc_zeek
- zeek.adv_zeek
- bpf.soc_bpf
- bpf.adv_bpf
- pcap.soc_pcap
- pcap.adv_pcap
- suricata.soc_suricata
- suricata.adv_suricata
- strelka.soc_strelka
- strelka.adv_strelka
- minions.{{ grains.id }}
- minions.adv_{{ grains.id }}
'*_workstation':
'*_fleet':
- backup.soc_backup
- backup.adv_backup
- logstash.nodes
- logstash.soc_logstash
- logstash.adv_logstash
- elasticfleet.soc_elasticfleet
- elasticfleet.adv_elasticfleet
- minions.{{ grains.id }}
- minions.adv_{{ grains.id }}
'*_desktop':
- minions.{{ grains.id }}
- minions.adv_{{ grains.id }}
+26 -25
View File
@@ -3,16 +3,6 @@
# https://securityonion.net/license; you may not use this file except in compliance with the
# Elastic License 2.0.
{% set ZEEKVER = salt['pillar.get']('global:mdengine', '') %}
{% set PLAYBOOK = salt['pillar.get']('manager:playbook', '0') %}
{% set ELASTALERT = salt['pillar.get']('elastalert:enabled', True) %}
{% set ELASTICSEARCH = salt['pillar.get']('elasticsearch:enabled', True) %}
{% set KIBANA = salt['pillar.get']('kibana:enabled', True) %}
{% set LOGSTASH = salt['pillar.get']('logstash:enabled', True) %}
{% set CURATOR = salt['pillar.get']('curator:enabled', True) %}
{% set REDIS = salt['pillar.get']('redis:enabled', True) %}
{% set STRELKA = salt['pillar.get']('strelka:enabled', '0') %}
{% set ISAIRGAP = salt['pillar.get']('global:airgap', False) %}
{% import_yaml 'salt/minion.defaults.yaml' as saltversion %}
{% set saltversion = saltversion.salt.minion.version %}
@@ -35,6 +25,7 @@
'soc',
'kratos',
'elasticfleet',
'elastic-fleet-package-registry',
'firewall',
'idstools',
'suricata.manager',
@@ -105,7 +96,8 @@
'schedule',
'tcpreplay',
'docker_clean',
'elasticfleet'
'elasticfleet',
'elastic-fleet-package-registry'
],
'so-manager': [
'salt.master',
@@ -119,6 +111,7 @@
'soc',
'kratos',
'elasticfleet',
'elastic-fleet-package-registry',
'firewall',
'idstools',
'suricata.manager',
@@ -137,6 +130,7 @@
'influxdb',
'soc',
'kratos',
'elastic-fleet-package-registry',
'elasticfleet',
'firewall',
'manager',
@@ -166,6 +160,7 @@
'influxdb',
'soc',
'kratos',
'elastic-fleet-package-registry',
'elasticfleet',
'firewall',
'idstools',
@@ -191,6 +186,16 @@
'tcpreplay',
'docker_clean'
],
'so-fleet': [
'ssl',
'telegraf',
'firewall',
'logstash',
'healthcheck',
'schedule',
'elasticfleet',
'docker_clean'
],
'so-receiver': [
'ssl',
'telegraf',
@@ -202,27 +207,27 @@
],
}, grain='role') %}
{% if (PLAYBOOK != 0) and grains.role in ['so-eval', 'so-manager', 'so-managersearch', 'so-standalone'] %}
{% if grains.role in ['so-eval', 'so-manager', 'so-managersearch', 'so-standalone'] %}
{% do allowed_states.append('mysql') %}
{% endif %}
{%- if ZEEKVER != 'SURICATA' and grains.role in ['so-sensor', 'so-eval', 'so-standalone', 'so-heavynode'] %}
{%- if grains.role in ['so-sensor', 'so-eval', 'so-standalone', 'so-heavynode'] %}
{% do allowed_states.append('zeek') %}
{%- endif %}
{% if STRELKA and grains.role in ['so-sensor', 'so-eval', 'so-standalone', 'so-heavynode'] %}
{% if grains.role in ['so-sensor', 'so-eval', 'so-standalone', 'so-heavynode'] %}
{% do allowed_states.append('strelka') %}
{% endif %}
{% if ELASTICSEARCH and grains.role in ['so-eval', 'so-manager', 'so-standalone', 'so-searchnode', 'so-managersearch', 'so-heavynode', 'so-import'] %}
{% 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 ELASTICSEARCH and grains.role in ['so-eval', 'so-manager', 'so-standalone', 'so-managersearch', 'so-import'] %}
{% if grains.role in ['so-eval', 'so-manager', 'so-standalone', 'so-managersearch', 'so-import'] %}
{% do allowed_states.append('elasticsearch.auth') %}
{% endif %}
{% if KIBANA and grains.role in ['so-eval', 'so-manager', 'so-standalone', 'so-managersearch', 'so-import'] %}
{% 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 %}
@@ -231,23 +236,19 @@
{% do allowed_states.append('curator') %}
{% endif %}
{% if ELASTALERT and grains.role in ['so-eval', 'so-manager', 'so-standalone', 'so-managersearch'] %}
{% if grains.role in ['so-eval', 'so-manager', 'so-standalone', 'so-managersearch'] %}
{% do allowed_states.append('elastalert') %}
{% endif %}
{% if (PLAYBOOK !=0) and grains.role in ['so-eval', 'so-manager', 'so-standalone', 'so-managersearch'] %}
{% if grains.role in ['so-eval', 'so-manager', 'so-standalone', 'so-managersearch'] %}
{% do allowed_states.append('playbook') %}
{% endif %}
{% if (PLAYBOOK !=0) and grains.role in ['so-eval'] %}
{% do allowed_states.append('redis') %}
{% endif %}
{% if LOGSTASH and grains.role in ['so-helixsensor', 'so-manager', 'so-standalone', 'so-searchnode', 'so-managersearch', 'so-heavynode', 'so-receiver'] %}
{% if grains.role in ['so-helixsensor', 'so-manager', 'so-standalone', 'so-searchnode', 'so-managersearch', 'so-heavynode', 'so-receiver'] %}
{% do allowed_states.append('logstash') %}
{% endif %}
{% if REDIS and grains.role in ['so-manager', 'so-standalone', 'so-managersearch', 'so-heavynode', 'so-receiver'] %}
{% if grains.role in ['so-manager', 'so-standalone', 'so-managersearch', 'so-heavynode', 'so-receiver', 'so-eval'] %}
{% do allowed_states.append('redis') %}
{% endif %}
+1
View File
@@ -25,6 +25,7 @@ config_backup_script:
so_config_backup:
cron.present:
- name: /usr/sbin/so-config-backup > /dev/null 2>&1
- identifier: so_config_backup
- user: root
- minute: '1'
- hour: '0'
+2 -2
View File
@@ -18,7 +18,7 @@ include:
pki_private_key:
x509.private_key_managed:
- name: /etc/pki/ca.key
- bits: 4096
- keysize: 4096
- passphrase:
- cipher: aes_256_cbc
- backup: True
@@ -39,7 +39,7 @@ pki_public_ca_crt:
- keyUsage: "critical cRLSign, keyCertSign"
- extendedkeyUsage: "serverAuth, clientAuth"
- subjectKeyIdentifier: hash
- authorityKeyIdentifier: keyid,issuer:always
- authorityKeyIdentifier: keyid:always, issuer
- days_valid: 3650
- days_remaining: 0
- backup: True
+35 -30
View File
@@ -49,13 +49,12 @@ so-status.conf:
- name: /opt/so/conf/so-status/so-status.conf
- unless: ls /opt/so/conf/so-status/so-status.conf
sosaltstackperms:
socore_opso_perms:
file.directory:
- name: /opt/so/saltstack
- name: /opt/so
- user: 939
- group: 939
- dir_mode: 770
so_log_perms:
file.directory:
- name: /opt/so/log
@@ -97,6 +96,8 @@ alwaysupdated:
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'] %}
elastic_curl_config:
file.managed:
- name: /opt/so/conf/elasticsearch/curl.config
@@ -108,22 +109,25 @@ elastic_curl_config:
- require:
- file: elastic_curl_config_distributed
{% endif %}
{% endif %}
# Sync some Utilities
utilsyncscripts:
common_sbin:
file.recurse:
- name: /usr/sbin
- user: root
- group: root
- source: salt://common/tools/sbin
- user: 939
- group: 939
- file_mode: 755
common_sbin_jinja:
file.recurse:
- name: /usr/sbin
- source: salt://common/tools/sbin_jinja
- user: 939
- group: 939
- file_mode: 755
- template: jinja
- source: salt://common/tools/sbin
- exclude_pat:
- so-common
- so-firewall
- so-image-common
- soup
- so-status
so-status_script:
file.managed:
@@ -133,8 +137,10 @@ so-status_script:
{% if GLOBALS.role in GLOBALS.sensor_roles %}
# Add sensor cleanup
/usr/sbin/so-sensor-clean:
so-sensor-clean:
cron.present:
- name: /usr/sbin/so-sensor-clean
- identifier: so-sensor-clean
- user: root
- minute: '*'
- hour: '*'
@@ -154,8 +160,10 @@ sensorrotateconf:
- source: salt://common/files/sensor-rotate.conf
- mode: 644
/usr/local/bin/sensor-rotate:
sensor-rotate:
cron.present:
- name: /usr/local/bin/sensor-rotate
- identifier: sensor-rotate
- user: root
- minute: '1'
- hour: '0'
@@ -178,8 +186,10 @@ commonlogrotateconf:
- template: jinja
- mode: 644
/usr/local/bin/common-rotate:
common-rotate:
cron.present:
- name: /usr/local/bin/common-rotate
- identifier: common-rotate
- user: root
- minute: '1'
- hour: '0'
@@ -200,17 +210,11 @@ sostatus_log:
- name: /opt/so/log/sostatus/status.log
- mode: 644
common_pip_dependencies:
pip.installed:
- user: root
- pkgs:
- rich
- target: /usr/lib64/python3.6/site-packages
# Install sostatus check cron
sostatus_check_cron:
# Install sostatus check cron. This is used to populate Grid.
so-status_check_cron:
cron.present:
- name: '/usr/sbin/so-status -j > /opt/so/log/sostatus/status.log 2>&1'
- identifier: so-status_check_cron
- user: root
- minute: '*/1'
- hour: '*'
@@ -220,7 +224,7 @@ sostatus_check_cron:
remove_post_setup_cron:
cron.absent:
- name: 'salt-call state.highstate'
- name: 'PATH=$PATH:/usr/sbin salt-call state.highstate'
- identifier: post_setup_cron
{% if GLOBALS.role not in ['eval', 'manager', 'managersearch', 'standalone'] %}
@@ -234,7 +238,7 @@ soversionfile:
{% endif %}
{% if GLOBALS.so_model %}
{% if GLOBALS.so_model and GLOBALS.so_model not in ['SO2AMI01', 'SO2AZI01', 'SO2GCI01'] %}
{% if GLOBALS.os == 'Rocky' %}
# Install Raid tools
raidpkgs:
@@ -246,9 +250,10 @@ raidpkgs:
{% endif %}
# Install raid check cron
so_raid_status:
so-raid-status:
cron.present:
- name: '/usr/sbin/so-raid-status > /dev/null 2>&1'
- identifier: so-raid-status
- user: root
- minute: '*/15'
- hour: '*'
+16 -5
View File
@@ -5,28 +5,37 @@ commonpkgs:
pkg.installed:
- skip_suggestions: True
- pkgs:
- chrony
- apache2-utils
- wget
- ntpdate
- jq
- python3-docker
- curl
- ca-certificates
- software-properties-common
- apt-transport-https
- openssl
- netcat
- python3-mysqldb
- sqlite3
- libssl-dev
- python3-dateutil
- python3-m2crypto
- python3-mysqldb
- python3-packaging
- python3-watchdog
- python3-lxml
- git
- vim
# since Ubuntu requires and internet connection we can use pip to install modules
python3-pip:
pkg.installed
python-rich:
pip.installed:
- name: rich
- target: /usr/local/lib/python3.8/dist-packages/
- require:
- pkg: python3-pip
{% elif GLOBALS.os == 'Rocky' %}
commonpkgs:
pkg.installed:
@@ -51,6 +60,8 @@ commonpkgs:
- python3-m2crypto
- rsync
- python3-rich
- python3-pyyaml
- python3-watchdog
- python3-packaging
- unzip
{% endif %}
+27 -23
View File
@@ -54,33 +54,37 @@ add_interface_bond0() {
ethtool -K "$BNIC" $i off &>/dev/null
fi
done
# Check if the bond slave connection has already been created
nmcli -f name,uuid -p con | grep -q "bond0-slave-$BNIC"
local found_int=$?
if [[ $found_int != 0 ]]; then
# Create the slave interface and assign it to the bond
nmcli con add type ethernet ifname "$BNIC" con-name "bond0-slave-$BNIC" master bond0 -- \
ethernet.mtu "$MTU" \
connection.autoconnect "yes"
else
local int_uuid
int_uuid=$(nmcli -f name,uuid -p con | sed -n "s/bond0-slave-$BNIC //p" | tr -d ' ')
if ! [[ $is_cloud ]]; then
# Check if the bond slave connection has already been created
nmcli -f name,uuid -p con | grep -q "bond0-slave-$BNIC"
local found_int=$?
nmcli con mod "$int_uuid" \
ethernet.mtu "$MTU" \
connection.autoconnect "yes"
fi
if [[ $found_int != 0 ]]; then
# Create the slave interface and assign it to the bond
nmcli con add type ethernet ifname "$BNIC" con-name "bond0-slave-$BNIC" master bond0 -- \
ethernet.mtu "$MTU" \
connection.autoconnect "yes"
else
local int_uuid
int_uuid=$(nmcli -f name,uuid -p con | sed -n "s/bond0-slave-$BNIC //p" | tr -d ' ')
nmcli con mod "$int_uuid" \
ethernet.mtu "$MTU" \
connection.autoconnect "yes"
fi
fi
ip link set dev "$BNIC" arp off multicast off allmulticast off promisc on
# Bring the slave interface up
if [[ $verbose == true ]]; then
nmcli con up "bond0-slave-$BNIC"
else
nmcli con up "bond0-slave-$BNIC" &>/dev/null
if ! [[ $is_cloud ]]; then
# Bring the slave interface up
if [[ $verbose == true ]]; then
nmcli con up "bond0-slave-$BNIC"
else
nmcli con up "bond0-slave-$BNIC" &>/dev/null
fi
fi
if [ "$nic_error" != 0 ]; then
return "$nic_error"
fi
@@ -201,7 +205,7 @@ gpg_rpm_import() {
local RPMKEYSLOC="$UPDATE_DIR/salt/repo/client/files/rocky/keys"
fi
RPMKEYS=('RPM-GPG-KEY-EPEL-9' 'SALTSTACK-GPG-KEY2.pub' 'docker.pub' 'securityonion.pub')
RPMKEYS=('RPM-GPG-KEY-rockyofficial' 'RPM-GPG-KEY-EPEL-9' 'SALT-PROJECT-GPG-PUBKEY-2023.pub' 'docker.pub' 'securityonion.pub')
for RPMKEY in "${RPMKEYS[@]}"; do
rpm --import $RPMKEYSLOC/$RPMKEY
@@ -1,34 +0,0 @@
#!/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.
#so-elastic-agent-gen-installers $FleetHost $EnrollmentToken
{% from 'vars/globals.map.jinja' import GLOBALS %}
. /usr/sbin/so-common
ENROLLMENTOKEN=$(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")) | .api_key')
FLEETHOST=$(lookup_pillar "server:url" "elasticfleet")
#FLEETHOST=$1
#ENROLLMENTOKEN=$2
CONTAINERGOOS=( "linux" "darwin" "windows" )
rm -rf /tmp/elastic-agent-workspace
mkdir -p /tmp/elastic-agent-workspace
for OS in "${CONTAINERGOOS[@]}"
do
printf "\n\nGenerating $OS Installer..."
cp /opt/so/saltstack/default/salt/elasticfleet/files/elastic-agent/so-elastic-agent-*-$OS-x86_64.tar.gz /tmp/elastic-agent-workspace/$OS.tar.gz
docker run -e CGO_ENABLED=0 -e GOOS=$OS \
--mount type=bind,source=/etc/ssl/certs/,target=/workspace/files/cert/ \
--mount type=bind,source=/tmp/elastic-agent-workspace/,target=/workspace/files/elastic-agent/ \
--mount type=bind,source=/opt/so/saltstack/local/salt/elasticfleet/files/so_agent-installers/,target=/output/ \
{{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elastic-agent-builder:{{ GLOBALS.so_version }} go build -ldflags "-X main.fleetHost=$FLEETHOST -X main.enrollmentToken=$ENROLLMENTOKEN" -o /output/so-elastic-agent_$OS
printf "\n $OS Installer Generated..."
done
-94
View File
@@ -1,94 +0,0 @@
#!/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.
{%- set NODEIP = salt['pillar.get']('host:mainip', '') %}
. /usr/sbin/so-common
SKIP=0
#########################################
# Options
#########################################
usage()
{
cat <<EOF
Security Onion Elastic Clear
Options:
-h This message
-y Skip interactive mode
EOF
}
while getopts "h:y" OPTION
do
case $OPTION in
h)
usage
exit 0
;;
y)
SKIP=1
;;
*)
usage
exit 0
;;
esac
done
if [ $SKIP -ne 1 ]; then
# List indices
echo
curl -K /opt/so/conf/elasticsearch/curl.config -k -L https://{{ NODEIP }}:9200/_cat/indices?v
echo
# Inform user we are about to delete all data
echo
echo "This script will delete all data (documents, indices, etc.) in the Elasticsearch database."
echo
echo "If you would like to proceed, please type "AGREE" and hit ENTER."
echo
# Read user input
read INPUT
if [ "$INPUT" != "AGREE" ] ; then exit 0; fi
fi
# Check to see if Logstash are running
LS_ENABLED=$(so-status | grep logstash)
EA_ENABLED=$(so-status | grep elastalert)
if [ ! -z "$LS_ENABLED" ]; then
/usr/sbin/so-logstash-stop
fi
if [ ! -z "$EA_ENABLED" ]; then
/usr/sbin/so-elastalert-stop
fi
# Delete data
echo "Deleting data..."
INDXS=$(curl -K /opt/so/conf/elasticsearch/curl.config -s -XGET -k -L https://{{ NODEIP }}:9200/_cat/indices?v | egrep 'logstash|elastalert|so-' | awk '{ print $3 }')
for INDX in ${INDXS}
do
curl -K /opt/so/conf/elasticsearch/curl.config-XDELETE -k -L https://"{{ NODEIP }}:9200/${INDX}" > /dev/null 2>&1
done
#Start Logstash
if [ ! -z "$LS_ENABLED" ]; then
/usr/sbin/so-logstash-start
fi
if [ ! -z "$EA_ENABLED" ]; then
/usr/sbin/so-elastalert-start
fi
@@ -1,137 +0,0 @@
#!/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-common
{%- set ZEEKVER = salt['pillar.get']('global:mdengine', '') %}
{%- set STRELKAENABLED = salt['pillar.get']('strelka:enabled', '0') %}
{%- set RITAENABLED = salt['pillar.get']('rita:enabled', False) %}
wait_for_web_response "http://localhost:5601/api/spaces/space/default" "default" 300 "curl -K /opt/so/conf/elasticsearch/curl.config"
# Let's snag a cookie from Kibana
SESSIONCOOKIE=$(curl -K /opt/so/conf/elasticsearch/curl.config -c - -X GET http://localhost:5601/ | grep sid | awk '{print $7}')
# Disable certain Features from showing up in the Kibana UI
echo
echo "Disable certain Features from showing up in the Kibana UI"
so-kibana-space-defaults
echo
# Suricata logs
echo
echo "Setting up Suricata package policy..."
curl -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST "localhost:5601/api/fleet/package_policies" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d'{ "policy_id": "so-grid-nodes", "package": { "name": "log", "version": "1.1.0" }, "id": "suricata-logs", "name": "suricata-logs", "description": "Suricata integration", "namespace": "so", "inputs": { "logs-logfile": { "enabled": true, "streams": { "log.log": { "enabled": true, "vars": { "paths": [ "/nsm/suricata/eve*.json" ], "data_stream.dataset": "suricata", "tags": [],"processors": "- add_fields:\n target: event\n fields:\n category: network\n module: suricata", "custom": "pipeline: suricata.common" }}}}}}'
echo
# Zeek logs
echo
echo "Setting up Zeek package policy..."
curl -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST "localhost:5601/api/fleet/package_policies" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d'{ "policy_id": "so-grid-nodes", "package": { "name": "log", "version": "1.1.0" }, "name": "zeek-logs", "description": "Zeek logs", "namespace": "so", "inputs": { "logs-logfile": { "enabled": true, "streams": { "log.log": { "enabled": true, "vars": { "paths": ["/nsm/zeek/logs/current/*.log"], "data_stream.dataset": "zeek", "tags": [], "processors": "- dissect:\n tokenizer: \"/nsm/zeek/logs/current/%{pipeline}.log\"\n field: \"log.file.path\"\n trim_chars: \".log\"\n target_prefix: \"\"\n- script:\n lang: javascript\n source: >\n function process(event) {\n var pl = event.Get(\"pipeline\");\n event.Put(\"@metadata.pipeline\", \"zeek.\" + pl);\n }\n- add_fields:\n target: event\n fields:\n category: network\n module: zeek\n- add_tags:\n tags: \"ics\"\n when:\n regexp:\n pipeline: \"^bacnet*|^bsap*|^cip*|^cotp*|^dnp3*|^ecat*|^enip*|^modbus*|^opcua*|^profinet*|^s7comm*\"", "custom": "exclude_files: [\"broker|capture_loss|ecat_arp_info|loaded_scripts|packet_filter|stats|stderr|stdout.log$\"]\n" } } } } } }'
echo
# Import - EVTX
echo
echo "Setting up EVTX import package policy..."
curl -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST "localhost:5601/api/fleet/package_policies" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d '{ "package": { "name": "log", "version": "1.1.0" }, "name": "import-evtx-logs", "namespace": "so", "description": "Import Windows EVTX logs", "policy_id": "so-grid-nodes", "inputs": { "logs-logfile": { "enabled": true, "streams": { "log.log": { "enabled": true, "vars": { "paths": [ "/nsm/import/*/evtx/data.json" ], "data_stream.dataset": "import", "custom": "pipeline: import.wel", "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- add_fields:\n target: event\n fields:\n module: windows_eventlog\n imported: true", "tags": [] } } } } } }'
echo
# Import - Suricata logs
echo
echo "Setting up Suricata import package policy..."
curl -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST "localhost:5601/api/fleet/package_policies" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d '{ "policy_id": "so-grid-nodes", "package": { "name": "log", "version": "1.1.0" }, "id": "import-suricata-logs", "name": "import-suricata-logs", "description": "Import Suricata logs", "namespace": "so", "inputs": { "logs-logfile": { "enabled": true, "streams": { "log.log": { "enabled": true, "vars": { "paths": ["/nsm/import/*/suricata/eve*.json"], "data_stream.dataset": "import", "tags": [], "processors": "- add_fields:\n target: event\n fields:\n category: network\n module: suricata\n imported: true\n- dissect:\n tokenizer: \"/nsm/import/%{import.id}/suricata/%{import.file}\"\n field: \"log.file.path\"\n target_prefix: \"\"", "custom": "pipeline: suricata.common" } } } } } }'
echo
# Import - Zeek logs
echo
echo "Setting up Zeek import package policy..."
curl -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST "localhost:5601/api/fleet/package_policies" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d'{ "policy_id": "so-grid-nodes", "package": { "name": "log", "version": "1.1.0" }, "name": "import-zeek-logs", "description": "Zeek Import logs", "namespace": "so", "inputs": { "logs-logfile": { "enabled": true, "streams": { "log.log": { "enabled": true, "vars": { "paths": ["/nsm/import/*/zeek/logs/*.log"], "data_stream.dataset": "import", "tags": [], "processors": "- dissect:\n tokenizer: \"/nsm/import/%{import.id}/zeek/logs/%{import.file}\"\n field: \"log.file.path\"\n target_prefix: \"\"\n- script:\n lang: javascript\n source: >\n function process(event) {\n var pl = event.Get(\"import.file\").slice(0,-4);\n event.Put(\"@metadata.pipeline\", \"zeek.\" + pl);\n }\n- add_fields:\n target: event\n fields:\n category: network\n module: zeek\n imported: true\n- add_tags:\n tags: \"ics\"\n when:\n regexp:\n import.file: \"^bacnet*|^bsap*|^cip*|^cotp*|^dnp3*|^ecat*|^enip*|^modbus*|^opcua*|^profinet*|^s7comm*\"", "custom": "exclude_files: [\"broker|capture_loss|ecat_arp_info|loaded_scripts|packet_filter|stats|stderr|stdout.log$\"]\n" } } } } } }'
echo
# Strelka logs
echo
echo "Setting up Strelka package policy..."
curl -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST "localhost:5601/api/fleet/package_policies" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d'{ "policy_id": "so-grid-nodes", "package": { "name": "log", "version": "1.1.0" }, "id": "strelka-logs", "name": "strelka-logs", "description": "Strelka logs", "namespace": "so", "inputs": { "logs-logfile": { "enabled": true, "streams": { "log.log": { "enabled": true, "vars": { "paths": [ "/nsm/strelka/log/strelka.log" ], "data_stream.dataset": "strelka", "tags": [],"processors": "- add_fields:\n target: event\n fields:\n category: file\n module: strelka", "custom": "pipeline: strelka.file" }}}}}}'
echo
# Syslog TCP Port 514
echo
echo "Setting up Syslog TCP package policy..."
curl -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST "localhost:5601/api/fleet/package_policies" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d '{ "policy_id": "so-grid-nodes", "package": { "name": "tcp", "version": "1.5.0" }, "id": "syslog-tcp-514", "name": "syslog-tcp-514", "description": "Syslog Over TCP Port 514", "namespace": "so", "inputs": { "tcp-tcp": { "enabled": true, "streams": { "tcp.generic": { "enabled": true, "vars": { "listen_address": "0.0.0.0", "listen_port": "514", "data_stream.dataset": "syslog", "pipeline": "syslog", "processors": "- add_fields:\n target: event\n fields:\n module: syslog", "tags": [ "syslog" ], "syslog_options": "field: message\n#format: auto\n#timezone: Local" } } } } } }'
echo
# Syslog UDP Port 514
echo
echo "Setting up Syslog UDP package policy..."
curl -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST "localhost:5601/api/fleet/package_policies" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d '{ "policy_id": "so-grid-nodes", "package": { "name": "udp", "version": "1.5.0" }, "id": "syslog-udp-514", "name": "syslog-udp-514", "description": "Syslog over UDP Port 514", "namespace": "so", "inputs": { "udp-udp": { "enabled": true, "streams": { "udp.generic": { "enabled": true, "vars": { "listen_address": "0.0.0.0", "listen_port": "514", "data_stream.dataset": "syslog", "pipeline": "syslog", "max_message_size": "10KiB", "keep_null": false, "processors": "- add_fields:\n target: event\n fields: \n module: syslog\n", "tags": [ "syslog" ], "syslog_options": "field: message\n#format: auto\n#timezone: Local" } } } } } }'
echo
# Kratos logs
echo
echo "Setting up Kratos package policy..."
curl -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST "localhost:5601/api/fleet/package_policies" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d'{ "policy_id": "so-grid-nodes", "package": { "name": "log", "version": "1.1.0" }, "id": "kratos-logs", "name": "kratos-logs", "description": "Kratos logs", "namespace": "so", "inputs": { "logs-logfile": { "enabled": true, "streams": { "log.log": { "enabled": true, "vars": { "paths": [ "/opt/so/log/kratos/kratos.log" ], "data_stream.dataset": "kratos", "tags": [],"custom":"pipeline: 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" }}}}}}'
echo
# RITA Logs
#echo
#echo "Setting up RITA package policy..."
#curl -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST "localhost:5601/api/fleet/package_policies" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d'{ "policy_id": "so-grid-nodes", "package": { "name": "log", "version": "1.1.0" }, "id": "rita-logs", "name": "rita-logs", "description": "RITA Beacon logs", "namespace": "so", "inputs": { "logs-logfile": { "enabled": true, "streams": { "log.log": { "enabled": true, "vars": { "paths": [ "/nsm/rita/beacons.csv", "/nsm/rita/long-connections.csv", "/nsm/rita/short-connections.csv", "/nsm/rita/exploded-dns.csv" ], "data_stream.dataset": "rita", "tags": [], "processors": "- add_fields:\n target: event\n fields:\n category: network\n module: rita\n- if:\n log.file.path: beacons.csv\n then: \n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: rita.beacon\n- if:\n regexp:\n log.file.path: \"*connections.csv\"\n then: \n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: rita.connection\n- if:\n log.file.path: \"exploded-dns.csv\"\n then: \n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: rita.dns" }}}}}}'
#echo
# Elasticsearch logs
echo
echo "Setting up Elasticsearch package policy..."
curl -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST "localhost:5601/api/fleet/package_policies" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d'{ "policy_id": "so-grid-nodes", "package": { "name": "elasticsearch", "version": "1.0.0" }, "id": "elasticsearch-logs", "name": "elasticsearch-logs", "description": "Elasticsearch Logs", "namespace": "default", "inputs": { "elasticsearch-logfile": { "enabled": true, "streams": { "elasticsearch.audit": { "enabled": false, "vars": { "paths": [ "/var/log/elasticsearch/*_audit.json" ] } }, "elasticsearch.deprecation": { "enabled": false, "vars": { "paths": [ "/var/log/elasticsearch/*_deprecation.json" ] } }, "elasticsearch.gc": { "enabled": false, "vars": { "paths": [ "/var/log/elasticsearch/gc.log.[0-9]*", "/var/log/elasticsearch/gc.log" ] } }, "elasticsearch.server": { "enabled": true, "vars": { "paths": [ "/opt/so/log/elasticsearch/*.log" ] } }, "elasticsearch.slowlog": { "enabled": false, "vars": { "paths": [ "/var/log/elasticsearch/*_index_search_slowlog.json", "/var/log/elasticsearch/*_index_indexing_slowlog.json" ] } } } }, "elasticsearch-elasticsearch/metrics": { "enabled": false, "vars": { "hosts": [ "http://localhost:9200" ], "scope": "node" }, "streams": { "elasticsearch.stack_monitoring.ccr": { "enabled": false }, "elasticsearch.stack_monitoring.cluster_stats": { "enabled": false }, "elasticsearch.stack_monitoring.enrich": { "enabled": false }, "elasticsearch.stack_monitoring.index": { "enabled": false }, "elasticsearch.stack_monitoring.index_recovery": { "enabled": false, "vars": { "active.only": true } }, "elasticsearch.stack_monitoring.index_summary": { "enabled": false }, "elasticsearch.stack_monitoring.ml_job": { "enabled": false }, "elasticsearch.stack_monitoring.node": { "enabled": false }, "elasticsearch.stack_monitoring.node_stats": { "enabled": false }, "elasticsearch.stack_monitoring.pending_tasks": { "enabled": false }, "elasticsearch.stack_monitoring.shard": { "enabled": false } } } } }'
echo
# Logstash logs
#echo
#echo "Setting up Logstash package policy..."
#curl -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST "localhost:5601/api/fleet/package_policies" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d'{ "policy_id": "so-grid-nodes", "package": { "name": "logstash", "version": "2.0.0" }, "id": "logstash-logs", "name": "logstash-logs", "description": "Logstash logs", "namespace": "default", "inputs": { "logstash-logfile": { "enabled": true, "streams": { "logstash.log": { "enabled": true, "vars": { "paths": [ "/opt/so/logs/logstash/logstash.log" ] } }, "logstash.slowlog": { "enabled": false, "vars": { "paths": [ "/var/log/logstash/logstash-slowlog-plain*.log", "/var/log/logstash/logstash-slowlog-json*.log" ] } } } }, "logstash-logstash/metrics": { "enabled": false, "vars": { "hosts": [ "http://localhost:9600" ], "period": "10s" }, "streams": { "logstash.stack_monitoring.node": { "enabled": false }, "logstash.stack_monitoring.node_stats": { "enabled": false } } } } }'
#echo
# Kibana logs
#echo
#echo "Setting up Kibana package policy..."
#curl -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST "localhost:5601/api/fleet/package_policies" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d'{ "policy_id": "so-grid-nodes", "package": { "name": "kibana", "version": "2.0.0" }, "id": "kibana-logs", "name": "kibana-logs", "description": "Kibana logs", "namespace": "default", "inputs": { "kibana-logfile": { "enabled": true, "streams": { "kibana.audit": { "enabled": false, "vars": { "paths": [ "/opt/so/log/kibana/kibana.log" ] } }, "kibana.log": { "enabled": true, "vars": { "paths": [ "/opt/so/log/kibana/kibana.log" ] } } } }, "kibana-kibana/metrics": { "enabled": false, "vars": { "hosts": [ "http://localhost:5601" ] }, "streams": { "kibana.stack_monitoring.cluster_actions": { "enabled": false }, "kibana.stack_monitoring.cluster_rules": { "enabled": false }, "kibana.stack_monitoring.node_actions": { "enabled": false }, "kibana.stack_monitoring.node_rules": { "enabled": false }, "kibana.stack_monitoring.stats": { "enabled": false }, "kibana.stack_monitoring.status": { "enabled": false } } } } }'
#echo
# Redis logs
echo
echo "Setting up Redis package policy..."
curl -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST "localhost:5601/api/fleet/package_policies" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d'{ "policy_id": "so-grid-nodes", "package": { "name": "redis", "version": "1.4.0" }, "id": "redis-logs", "name": "redis-logs", "description": "Redis logs", "namespace": "default", "inputs": { "redis-logfile": { "enabled": true, "streams": { "redis.log": { "enabled": true, "vars": { "paths": [ "/opt/so/log/redis/redis.log" ], "tags": [ "redis-log" ], "preserve_original_event": false } } } }, "redis-redis": { "enabled": false, "streams": { "redis.slowlog": { "enabled": false, "vars": { "hosts": [ "127.0.0.1:6379" ], "password": "" } } } }, "redis-redis/metrics": { "enabled": false, "vars": { "hosts": [ "127.0.0.1:6379" ], "idle_timeout": "20s", "maxconn": 10, "network": "tcp", "password": "" }, "streams": { "redis.info": { "enabled": false, "vars": { "period": "10s" } }, "redis.key": { "enabled": false, "vars": { "key.patterns": "- limit: 20\n pattern: '*'\n", "period": "10s" } }, "redis.keyspace": { "enabled": false, "vars": { "period": "10s" } } } } } }'
echo
# IDH logs
echo
echo "Setting up IDH package policy..."
curl -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST "localhost:5601/api/fleet/package_policies" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d'{"policy_id":"so-grid-nodes","package":{"name":"log","version":"1.1.1"},"id":"idh-logs","name":"idh-logs","namespace":"so","description":"IDH integration","inputs":{"logs-logfile":{"enabled":true,"streams":{"log.log":{"enabled":true,"vars":{"paths":["/nsm/idh/opencanary.log"],"data_stream.dataset":"idh","custom":"pipeline: common","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","tags":[]}}}}}}'
echo
# SOC - Server logs
echo
echo "Setting up SOC - Server Logs package policy..."
curl -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST "localhost:5601/api/fleet/package_policies" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d'{"package":{"name":"log","version":"1.1.2"},"name":"soc-server-logs","namespace":"so","description":"Security Onion Console Logs","policy_id":"so-grid-nodes","inputs":{"logs-logfile":{"enabled":true,"streams":{"log.log":{"enabled":true,"vars":{"paths":["/opt/so/log/soc/sensoroni-server.log"],"data_stream.dataset":"soc","custom":"pipeline: common","processors": "- decode_json_fields:\n fields: [\"message\"]\n target: \"soc\"\n process_array: true\n max_depth: 2\n add_error_key: true \n- add_fields:\n target: event\n fields:\n category: host\n module: soc\n dataset_temp: server\n- rename:\n fields:\n - from: \"soc.fields.sourceIp\"\n to: \"source.ip\"\n - from: \"soc.fields.status\"\n to: \"http.response.status_code\"\n - from: \"soc.fields.method\"\n to: \"http.request.method\"\n - from: \"soc.fields.path\"\n to: \"url.path\"\n - from: \"soc.message\"\n to: \"event.action\"\n - from: \"soc.level\"\n to: \"log.level\"\n ignore_missing: true","tags":[]}}}}}}'
echo
# SOC - Sensoroni logs
echo
echo "Setting up SOC - Sensoroni Logs package policy..."
curl -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST "localhost:5601/api/fleet/package_policies" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d'{"package":{"name":"log","version":"1.1.2"},"name":"soc-sensoroni-logs","namespace":"so","description":"Security Onion - Sensoroni - Logs","policy_id":"so-grid-nodes","inputs":{"logs-logfile":{"enabled":true,"streams":{"log.log":{"enabled":true,"vars":{"paths":["/opt/so/log/sensoroni/sensoroni.log"],"data_stream.dataset":"soc","custom":"pipeline: common","processors": "- decode_json_fields:\n fields: [\"message\"]\n target: \"sensoroni\"\n process_array: true\n max_depth: 2\n add_error_key: true \n- add_fields:\n target: event\n fields:\n category: host\n module: soc\n dataset_temp: sensoroni\n- rename:\n fields:\n - from: \"sensoroni.fields.sourceIp\"\n to: \"source.ip\"\n - from: \"sensoroni.fields.status\"\n to: \"http.response.status_code\"\n - from: \"sensoroni.fields.method\"\n to: \"http.request.method\"\n - from: \"sensoroni.fields.path\"\n to: \"url.path\"\n - from: \"sensoroni.message\"\n to: \"event.action\"\n - from: \"sensoroni.level\"\n to: \"log.level\"\n ignore_missing: true","tags":[]}}}}}}'
echo
# SOC - Elastic Auth Sync logs
echo
echo "Setting up SOC - Elastic Auth Sync Logs package policy..."
curl -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST "localhost:5601/api/fleet/package_policies" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d'{"package":{"name":"log","version":"1.1.2"},"name":"soc-auth-sync-logs","namespace":"so","description":"Security Onion - Elastic Auth Sync - Logs","policy_id":"so-grid-nodes","inputs":{"logs-logfile":{"enabled":true,"streams":{"log.log":{"enabled":true,"vars":{"paths":["/opt/so/log/soc/sync.log"],"data_stream.dataset":"soc","custom":"pipeline: common","processors": "- dissect:\n tokenizer: \"%{event.action}\"\n field: \"message\"\n target_prefix: \"\"\n- add_fields:\n target: event\n fields:\n category: host\n module: soc\n dataset_temp: auth_sync","tags":[]}}}}}}'
echo
# SOC - Salt Relay logs
echo
echo "Setting up SOC - Salt_Relay Logs package policy..."
curl -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST "localhost:5601/api/fleet/package_policies" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d'{"package":{"name":"log","version":"1.1.2"},"name":"soc-salt-relay-logs","namespace":"so","description":"Security Onion - Salt Relay - Logs","policy_id":"so-grid-nodes","inputs":{"logs-logfile":{"enabled":true,"streams":{"log.log":{"enabled":true,"vars":{"paths":["/opt/so/log/soc/salt-relay.log"],"data_stream.dataset":"soc","custom":"pipeline: common","processors": "- dissect:\n tokenizer: \"%{soc.ts} | %{event.action}\"\n field: \"message\"\n target_prefix: \"\"\n- add_fields:\n target: event\n fields:\n category: host\n module: soc\n dataset_temp: salt_relay","tags":[]}}}}}}'
echo
@@ -1,109 +0,0 @@
#!/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.
{% from 'vars/globals.map.jinja' import GLOBALS %}
. /usr/sbin/so-common
# Create ES Token
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)
printf "ESTOKEN = $ESTOKEN \n"
# Add SO-Manager Fleet URL
## This array replaces whatever URLs are currently configured
printf "\n"
curl -K /opt/so/conf/elasticsearch/curl.config -L -X PUT "localhost:5601/api/fleet/settings" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d '{"fleet_server_hosts":["https://{{ GLOBALS.manager_ip }}:8220"]}'
printf "\n\n"
# Configure certificates
mkdir -p /opt/so/conf/elastic-fleet/certs
cp /etc/ssl/certs/intca.crt /opt/so/conf/elastic-fleet/certs
cp /etc/pki/elasticfleet* /opt/so/conf/elastic-fleet/certs
{% if grains.role in ['so-import', 'so-standalone', 'so-eval', 'so-manager', 'so-managersearch'] %}
# Add SO-Manager Elasticsearch Ouput
ESCACRT=$(openssl x509 -in /opt/so/conf/elastic-fleet/certs/intca.crt)
JSON_STRING=$( jq -n \
--arg ESCACRT "$ESCACRT" \
'{"name":"so-manager_elasticsearch","id":"so-manager_elasticsearch","type":"elasticsearch","hosts":["https://{{ GLOBALS.manager_ip }}: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"
printf "\n\n"
{% else %}
# Create Logstash Output payload
LOGSTASHCRT=$(openssl x509 -in /opt/so/conf/elastic-fleet/certs/elasticfleet.crt)
LOGSTASHKEY=$(openssl rsa -in /opt/so/conf/elastic-fleet/certs/elasticfleet.key)
LOGSTASHCA=$(openssl x509 -in /opt/so/conf/elastic-fleet/certs/intca.crt)
JSON_STRING=$( jq -n \
--arg LOGSTASHCRT "$LOGSTASHCRT" \
--arg LOGSTASHKEY "$LOGSTASHKEY" \
--arg LOGSTASHCA "$LOGSTASHCA" \
'{"name":"so-manager_logstash","id":"so-manager_logstash","type":"logstash","hosts":["{{ GLOBALS.manager_ip }}:5055"],"is_default":true,"is_default_monitoring":true,"config_yaml":"","ssl":{"certificate": $LOGSTASHCRT,"key": $LOGSTASHKEY,"certificate_authorities":[ $LOGSTASHCA ]}}'
)
# Add SO-Manager Logstash Ouput
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"
printf "\n\n"
{%- endif %}
# Add Elastic Fleet Integrations
# Add Elastic Fleet Server Agent Policy
#curl -vv -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 '{"name":"SO-Manager","id":"so-manager","description":"SO Manager Fleet Server Policy","namespace":"default","monitoring_enabled":["logs"],"has_fleet_server":true}'
# Add Agent Policy - SOS Grid Nodes
#curl -vv -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 '{"name":"SO-Grid","id":"so-grid","description":"SO Grid Endpoint Policy","namespace":"default","monitoring_enabled":["logs"]}'
# Add Agent Policy - Default endpoints
#curl -vv -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 '{"name":"Endpoints-Initalization","id":"endpoints","description":"Initial Endpoint Policy","namespace":"default","monitoring_enabled":["logs"]}'
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-default")) | .api_key')
GRIDNODESENROLLMENTOKEN=$(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")) | .api_key')
# Store needed data in minion pillar
pillar_file=/opt/so/saltstack/local/pillar/minions/{{ GLOBALS.minion_id }}.sls
printf '%s\n'\
"elasticfleet:"\
" server:"\
" es_token: '$ESTOKEN'"\
" endpoints_enrollment: '$ENDPOINTSENROLLMENTOKEN'"\
" grid_enrollment: '$GRIDNODESENROLLMENTOKEN'"\
" url: '{{ GLOBALS.manager_ip }}'"\
"" >> "$pillar_file"
#Store Grid Nodes Enrollment token in Global pillar
global_pillar_file=/opt/so/saltstack/local/pillar/soc_global.sls
printf '%s\n'\
" fleet_grid_enrollment_token: '$GRIDNODESENROLLMENTOKEN'"\
"" >> "$global_pillar_file"
# Call Elastic-Fleet Salt State
salt-call state.apply elasticfleet queue=True
# Load Elastic Fleet integrations
/usr/sbin/so-elastic-fleet-integration-policy-load
# Temp
wget --progress=bar:force:noscroll -P /opt/so/saltstack/default/salt/elasticfleet/files/elastic-agent/ https://github.com/Security-Onion-Solutions/securityonion-docker-rpm/releases/download/so_elastic-agent-8.6.2/so-elastic-agent-8.6.2-darwin-x86_64.tar.gz
wget --progress=bar:force:noscroll -P /opt/so/saltstack/default/salt/elasticfleet/files/elastic-agent/ https://github.com/Security-Onion-Solutions/securityonion-docker-rpm/releases/download/so_elastic-agent-8.6.2/so-elastic-agent-8.6.2-linux-x86_64.tar.gz
wget --progress=bar:force:noscroll -P /opt/so/saltstack/default/salt/elasticfleet/files/elastic-agent/ https://github.com/Security-Onion-Solutions/securityonion-docker-rpm/releases/download/so_elastic-agent-8.6.2/so-elastic-agent-8.6.2-windows-x86_64.tar.gz
#git clone -b 2.4-so-elastic-agent https://github.com/Security-Onion-Solutions/securityonion-image.git
#cd securityonion-image/so-elastic-agent-builder
#docker build -t so-elastic-agent-builder .
so-elastic-agent-gen-installers
salt-call state.apply elasticfleet.install_agent_grid queue=True
-31
View File
@@ -1,31 +0,0 @@
#!/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-common
{%- if grains['role'] in ['so-eval','so-manager', 'so-managersearch', 'so-standalone', 'so-heavynode', 'so-searchnode', 'so-import']%}
/usr/sbin/so-restart elasticsearch $1
{%- endif %}
{%- if grains['role'] in ['so-eval', 'so-manager', 'so-managersearch', 'so-standalone', 'so-import']%}
/usr/sbin/so-restart kibana $1
{%- endif %}
{%- if grains['role'] in ['so-manager', 'so-managersearch', 'so-standalone', 'so-heavynode', 'so-searchnode']%}
/usr/sbin/so-restart logstash $1
{%- endif %}
{%- if grains['role'] in ['so-manager', 'so-managersearch', 'so-standalone', 'so-heavynode', 'so-searchnode']%}
/usr/sbin/so-restart curator $1
{%- endif %}
{%- if grains['role'] in ['so-eval','so-manager', 'so-managersearch', 'so-standalone']%}
/usr/sbin/so-restart elastalert $1
{%- endif %}
-31
View File
@@ -1,31 +0,0 @@
#!/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-common
{%- if grains['role'] in ['so-eval','so-manager', 'so-managersearch', 'so-standalone', 'so-heavynode', 'so-searchnode', 'so-import']%}
/usr/sbin/so-start elasticsearch $1
{%- endif %}
{%- if grains['role'] in ['so-eval', 'so-manager', 'so-managersearch', 'so-standalone', 'so-import']%}
/usr/sbin/so-start kibana $1
{%- endif %}
{%- if grains['role'] in ['so-manager', 'so-managersearch', 'so-standalone', 'so-heavynode', 'so-searchnode']%}
/usr/sbin/so-start logstash $1
{%- endif %}
{%- if grains['role'] in ['so-manager', 'so-managersearch', 'so-standalone', 'so-heavynode', 'so-searchnode']%}
/usr/sbin/so-start curator $1
{%- endif %}
{%- if grains['role'] in ['so-eval','so-manager', 'so-managersearch', 'so-standalone']%}
/usr/sbin/so-start elastalert $1
{%- endif %}
-31
View File
@@ -1,31 +0,0 @@
#!/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-common
{%- if grains['role'] in ['so-eval','so-manager', 'so-managersearch', 'so-standalone', 'so-heavynode', 'so-searchnode', 'so-import']%}
/usr/sbin/so-stop elasticsearch $1
{%- endif %}
{%- if grains['role'] in ['so-eval', 'so-manager', 'so-managersearch', 'so-standalone', 'so-import']%}
/usr/sbin/so-stop kibana $1
{%- endif %}
{%- if grains['role'] in ['so-manager', 'so-managersearch', 'so-standalone', 'so-heavynode', 'so-searchnode']%}
/usr/sbin/so-stop logstash $1
{%- endif %}
{%- if grains['role'] in ['so-manager', 'so-managersearch', 'so-standalone', 'so-heavynode', 'so-searchnode']%}
/usr/sbin/so-stop curator $1
{%- endif %}
{%- if grains['role'] in ['so-eval','so-manager', 'so-managersearch', 'so-standalone']%}
/usr/sbin/so-stop elastalert $1
{%- endif %}
@@ -1,15 +0,0 @@
#!/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.
IP={{ salt['grains.get']('ip_interfaces').get(salt['pillar.get']('sensor:mainint', salt['pillar.get']('manager:mainint', salt['pillar.get']('elasticsearch:mainint', salt['pillar.get']('host:mainint')))))[0] }}
ESPORT=9200
echo "Removing read only attributes for indices..."
echo
curl -K /opt/so/conf/elasticsearch/curl.config -s -k -XPUT -H "Content-Type: application/json" -L https://$IP:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}' 2>&1 | if grep -q ack; then echo "Index settings updated..."; else echo "There was any issue updating the read-only attribute. Please ensure Elasticsearch is running.";fi;
-104
View File
@@ -1,104 +0,0 @@
#!/usr/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-common
if [[ $# -lt 1 ]]; then
echo "Usage: $0 --role=<ROLE> --ip=<IP ADDRESS> --apply=<true|false>"
echo ""
echo " Example: so-firewall --role=sensor --ip=192.168.254.100 --apply=true"
echo ""
exit 1
fi
for i in "$@"; do
case $i in
-r=*|--role=*)
ROLE="${i#*=}"
shift
;;
-i=*|--ip=*)
IP="${i#*=}"
shift
;;
-a=*|--apply*)
APPLY="${i#*=}"
shift
;;
-*|--*)
echo "Unknown option $i"
exit 1
;;
*)
;;
esac
done
ROLE=${ROLE,,}
APPLY=${APPLY,,}
function rolecall() {
THEROLE=$1
THEROLES="analyst analyst_workstations beats_endpoint beats_endpoint_ssl elastic_agent_endpoint elasticsearch_rest endgame eval heavynodes idh manager managersearch receivers searchnodes sensors standalone strelka_frontend syslog"
for AROLE in $THEROLES; do
if [ "$AROLE" = "$THEROLE" ]; then
return 0
fi
done
return 1
}
# Make sure the required options are specified
if [ -z "$ROLE" ]; then
echo "Please specify a role with --role="
exit 1
fi
if [ -z "$IP" ]; then
echo "Please specify an IP address with --ip="
exit 1
fi
# Are we dealing with a role that this script supports?
if rolecall "$ROLE"; then
echo "$ROLE is a supported role"
else
echo "This is not a supported role"
exit 1
fi
# Are we dealing with an IP?
if verify_ip4 "$IP"; then
echo "$IP is a valid IP or CIDR"
else
echo "$IP is not a valid IP or CIDR"
exit 1
fi
local_salt_dir=/opt/so/saltstack/local/salt/firewall
# Let's see if the file exists and if it does, let's see if the IP exists.
if [ -f "$local_salt_dir/hostgroups/$ROLE" ]; then
if grep -q $IP "$local_salt_dir/hostgroups/$ROLE"; then
echo "Host already exists"
exit 0
fi
fi
# If you have reached this part of your quest then let's add the IP
echo "Adding $IP to the $ROLE role"
echo "$IP" >> $local_salt_dir/hostgroups/$ROLE
# Check to see if we are applying this right away.
if [ "$APPLY" = "true" ]; then
echo "Applying the firewall rules"
salt-call state.apply firewall queue=True
echo "Firewall rules have been applied... Review logs further if there were errors."
echo ""
else
echo "Firewall rules will be applied next salt run"
fi
-27
View File
@@ -1,27 +0,0 @@
#!/bin/bash
local_salt_dir=/opt/so/saltstack/local
got_root() {
# Make sure you are root
if [ "$(id -u)" -ne 0 ]; then
echo "This script must be run using sudo!"
exit 1
fi
}
got_root
if [ ! -f $local_salt_dir/pillar/fireeye/init.sls ]; then
echo "This is nto configured for Helix Mode. Please re-install."
exit
else
echo "Enter your Helix API Key: "
read APIKEY
sed -i "s/^ api_key.*/ api_key: $APIKEY/g" $local_salt_dir/pillar/fireeye/init.sls
docker stop so-logstash
docker rm so-logstash
echo "Restarting Logstash for updated key"
salt-call state.apply logstash queue=True
fi
+2
View File
@@ -38,6 +38,7 @@ container_list() {
"so-zeek"
"so-elastic-agent"
"so-elastic-agent-builder"
"so-elastic-fleet-package-registry"
)
elif [ $MANAGERCHECK != 'so-helix' ]; then
TRUSTED_CONTAINERS=(
@@ -45,6 +46,7 @@ container_list() {
"so-elastalert"
"so-elastic-agent"
"so-elastic-agent-builder"
"so-elastic-fleet-package-registry"
"so-elasticsearch"
"so-idh"
"so-idstools"
-17
View File
@@ -1,17 +0,0 @@
#!/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.
{% set MAININT = salt['pillar.get']('host:mainint') -%}
{% set NODEIP = salt['grains.get']('ip_interfaces').get(MAININT)[0] -%}
. /usr/sbin/so-common
if [ "$1" == "" ]; then
for i in $(curl -s -L http://{{ NODEIP }}:9600/_node/stats | jq .pipelines | jq '. | to_entries | .[].key' | sed 's/\"//g'); do echo ${i^}:; curl -s localhost:9600/_node/stats | jq .pipelines.$i.events; done
else
curl -s -L http://{{ NODEIP }}:9600/_node/stats | jq .pipelines.$1.events
fi
-304
View File
@@ -1,304 +0,0 @@
#!/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.
if [ -f /usr/sbin/so-common ]; then
. /usr/sbin/so-common
fi
if [ "$(id -u)" -ne 0 ]; then
echo "This script must be run using sudo!"
exit 1
fi
if [[ $# -lt 1 ]]; then
echo "Usage: $0 -o=<operation> -m=[id]"
echo ""
echo " where <operation> is one of the following:"
echo ""
echo " list: Lists all keys with hashes"
echo " accept: Accepts a new key and adds the minion files"
echo " delete: Removes the key and deletes the minion files"
echo " reject: Rejects a key"
echo " test: Perform minion test"
echo ""
exit 1
fi
for i in "$@"; do
case $i in
-o=*|--operation=*)
OPERATION="${i#*=}"
shift
;;
-m=*|--minionid=*)
MINION_ID="${i#*=}"
shift
;;
-e=*|--esheap=*)
ES_HEAP_SIZE="${i#*=}"
shift
;;
-n=*|--mgmtnic=*)
MNIC="${i#*=}"
shift
;;
-d=*|--description=*)
NODE_DESCRIPTION="${i#*=}"
shift
;;
-a=*|--monitor=*)
INTERFACE="${i#*=}"
shift
;;
-i=*|--ip=*)
MAINIP="${i#*=}"
shift
;;
-*|--*)
echo "Unknown option $i"
exit 1
;;
*)
;;
esac
done
PILLARFILE=/opt/so/saltstack/local/pillar/minions/$MINION_ID.sls
ADVPILLARFILE=/opt/so/saltstack/local/pillar/minions/adv_$MINION_ID.sls
function getinstallinfo() {
# Pull from file
INSTALLVARS=$(sudo salt "$MINION_ID" cp.get_file_str /opt/so/install.txt --out=newline_values_only)
source <(echo $INSTALLVARS)
}
function testminion() {
# Always run on the host, since this is going to be the manager of a distributed grid, or an eval/standalone.
# Distributed managers must run this in order for the sensor nodes to have access to the so-tcpreplay image.
so-test
result=$?
# If this so-minion script is not running on the given minion ID, run so-test remotely on the sensor as well
local_id=$(lookup_grain id)
if [[ ! "$local_id" =~ "${MINION_ID}_" ]]; then
salt "$MINION_ID" cmd.run 'so-test'
result=$?
fi
exit $result
}
function listminions() {
salt-key list -F --out=json
exit $?
}
function rejectminion() {
salt-key -y -r $MINION_ID
exit $?
}
function acceptminion() {
salt-key -y -a $MINION_ID
}
function deleteminion() {
salt-key -y -d $MINION_ID
}
function deleteminionfiles () {
rm -f $PILLARFILE
rm -f $ADVPILLARFILE
}
# Create the minion file
function create_minion_files() {
mkdir -p /opt/so/saltstack/local/pillar/minions
touch $ADVPILLARFILE
if [ -f "$PILLARFILE" ]; then
rm $PILLARFILE
fi
}
# Add Elastic settings to the minion file
function add_elastic_to_minion() {
printf '%s\n'\
"elasticsearch:"\
" esheap: '$ES_HEAP_SIZE'"\
" " >> $PILLARFILE
}
# Add IDH Services info to the minion file
function add_idh_to_minion() {
printf '%s\n'\
"idh:"\
" restrict_management_ip: $IDH_MGTRESTRICT"\
" services:" >> "$PILLARFILE"
IFS=',' read -ra IDH_SERVICES_ARRAY <<< "$IDH_SERVICES"
for service in ${IDH_SERVICES_ARRAY[@]}; do
echo " - $service" | tr '[:upper:]' '[:lower:]' | tr -d '"' >> "$PILLARFILE"
done
}
function add_logstash_to_minion() {
# Create the logstash advanced pillar
printf '%s\n'\
"logstash_settings:"\
" ls_host: '$LSHOSTNAME'"\
" ls_pipeline_batch_size: 125"\
" ls_input_threads: 1"\
" lsheap: $LSHEAP"\
" ls_pipeline_workers: $CPUCORES"\
" " >> $PILLARFILE
}
# Analyst Workstation
function add_analyst_to_minion() {
printf '%s\n'\
"host:"\
" mainint: '$MNIC'"\
"workstation:"\
" gui:"\
" enabled: true"\
"sensoroni:"\
" node_description: '${NODE_DESCRIPTION//\'/''}'" >> $PILLARFILE
}
# Add basic host info to the minion file
function add_host_to_minion() {
printf '%s\n'\
"host:"\
" mainip: '$MAINIP'"\
" mainint: '$MNIC'" >> $PILLARFILE
}
# Add sensoroni specific information - Can we pull node_adrees from the host pillar?
function add_sensoroni_to_minion() {
printf '%s\n'\
"sensoroni:"\
" node_description: '${NODE_DESCRIPTION//\'/''}'"\
" " >> $PILLARFILE
}
# Sensor settings for the minion pillar
function add_sensor_to_minion() {
echo "sensor:" >> $PILLARFILE
echo " interface: '$INTERFACE'" >> $PILLARFILE
echo " mtu: 9000" >> $PILLARFILE
echo "zeek:" >> $PILLARFILE
echo " config:" >> $PILLARFILE
echo " node:" >> $PILLARFILE
echo " lb_procs: '$CORECOUNT'" >> $PILLARFILE
echo "suricata:" >> $PILLARFILE
echo " config:" >> $PILLARFILE
echo " af-packet:" >> $PILLARFILE
echo " threads: '$CORECOUNT'" >> $PILLARFILE
echo "pcap:" >> $PILLARFILE
echo " enabled: True" >> $PILLARFILE
}
function updateMine() {
salt "$MINION_ID" mine.send network.ip_addrs interface="$MNIC"
}
function apply_ES_state() {
salt-call state.apply elasticsearch concurrent=True
}
function createEVAL() {
add_elastic_to_minion
add_logstash_to_minion
add_sensor_to_minion
}
function createIDH() {
add_idh_to_minion
}
function createIMPORT() {
add_elastic_to_minion
add_logstash_to_minion
add_sensor_to_minion
}
function createHEAVYNODE() {
add_elastic_to_minion
add_logstash_to_minion
add_sensor_to_minion
}
function createMANAGER() {
add_elastic_to_minion
add_logstash_to_minion
}
function createMANAGERSEARCH() {
add_elastic_to_minion
add_logstash_to_minion
}
function createSENSOR() {
add_sensor_to_minion
}
function createSEARCHNODE() {
add_elastic_to_minion
add_logstash_to_minion
updateMine
apply_ES_state
}
function createSTANDALONE() {
add_elastic_to_minion
add_logstash_to_minion
add_sensor_to_minion
}
function testConnection() {
retry 15 3 "salt '$MINION_ID' test.ping" True
local ret=$?
if [[ $ret != 0 ]]; then
echo "The Minion has been accepted but is not online. Try again later"
echo "Deleting the key"
deleteminion
exit 1
fi
}
if [[ "$OPERATION" = 'list' ]]; then
listminions
fi
if [[ "$OPERATION" = 'delete' ]]; then
deleteminionfiles
deleteminion
fi
if [[ "$OPERATION" = 'add' || "$OPERATION" = 'setup' ]]; then
# Skip this if its setup
if [ $OPERATION != 'setup' ]; then
# Accept the salt key
acceptminion
# Test to see if the minion was accepted
testConnection
# Pull the info from the file to build what is needed
getinstallinfo
fi
# Check to see if nodetype is set
if [ -z $NODETYPE ]; then
echo "No node type specified"
exit 1
fi
create_minion_files
add_host_to_minion
add_sensoroni_to_minion
create$NODETYPE
echo "Minion file created for $MINION_ID"
fi
if [[ "$OPERATION" = 'test' ]]; then
testminion
fi
+1
View File
@@ -24,6 +24,7 @@ if [ $# -ge 1 ]; then
case $1 in
"steno") docker stop so-steno && docker rm so-steno && salt-call state.apply pcap queue=True;;
"elastic-fleet") docker stop so-elastic-fleet && docker rm so-elastic-fleet && salt-call state.apply elasticfleet queue=True;;
*) docker stop so-$1 ; docker rm so-$1 ; salt-call state.apply $1 queue=True;;
esac
else
-10
View File
@@ -1,10 +0,0 @@
#!/bin/bash
. /usr/sbin/so-common
argstr=""
for arg in "$@"; do
argstr="${argstr} \"${arg}\""
done
docker exec so-idstools /bin/bash -c "cd /opt/so/idstools/etc && idstools-rulecat --force ${argstr}"
+1
View File
@@ -24,6 +24,7 @@ if [ $# -ge 1 ]; then
case $1 in
"all") salt-call state.highstate queue=True;;
"steno") if docker ps | grep -q so-$1; then printf "\n$1 is already running!\n\n"; else docker rm so-$1 >/dev/null 2>&1 ; salt-call state.apply pcap queue=True; fi ;;
"elastic-fleet") if docker ps | grep -q so-$1; then printf "\n$1 is already running!\n\n"; else docker rm so-$1 >/dev/null 2>&1 ; salt-call state.apply elasticfleet queue=True; fi ;;
*) if docker ps | grep -E -q '^so-$1$'; then printf "\n$1 is already running\n\n"; else docker rm so-$1 >/dev/null 2>&1 ; salt-call state.apply $1 queue=True; fi ;;
esac
else
+2 -1
View File
@@ -170,7 +170,8 @@ def main():
if "-h" in options or "--help" in options or "-?" in options:
showUsage(options, None)
if os.environ["USER"] != "root":
proc = subprocess.run(['id', '-u'], stdout=subprocess.PIPE, encoding="utf-8")
if proc.stdout.strip() != "0":
fail("This program must be run as root")
console = Console()
@@ -61,7 +61,7 @@ if [ -f "$pillar_file" ]; then
reboot;
else
echo "There was an issue applying the workstation state. Please review the log above or at /opt/so/logs/salt/minion."
echo "There was an issue applying the workstation state. Please review the log above or at /opt/so/log/salt/minion."
fi
else # workstation is already added
echo "The workstation pillar already exists in $pillar_file."
+81
View File
@@ -0,0 +1,81 @@
# 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 'allowed_states.map.jinja' import allowed_states %}
{% if sls.split('.')[0] in allowed_states %}
{% from "curator/map.jinja" import CURATORMERGED %}
# Create the group
curatorgroup:
group.present:
- name: curator
- gid: 934
# Add user
curator:
user.present:
- uid: 934
- gid: 934
- home: /opt/so/conf/curator
- createhome: False
# Create the log directory
curlogdir:
file.directory:
- name: /opt/so/log/curator
- user: 934
- group: 939
curactiondir:
file.directory:
- name: /opt/so/conf/curator/action
- user: 934
- group: 939
- makedirs: True
actionconfs:
file.recurse:
- name: /opt/so/conf/curator/action
- source: salt://curator/files/action
- user: 934
- group: 939
- template: jinja
- defaults:
CURATORMERGED: {{ CURATORMERGED.elasticsearch.index_settings }}
curconf:
file.managed:
- name: /opt/so/conf/curator/curator.yml
- source: salt://curator/files/curator.yml
- user: 934
- group: 939
- mode: 660
- template: jinja
- show_changes: False
curator_sbin:
file.recurse:
- name: /usr/sbin
- source: salt://curator/tools/sbin
- user: 934
- group: 939
- file_mode: 755
curator_sbin_jinja:
file.recurse:
- name: /usr/sbin
- source: salt://curator/tools/sbin_jinja
- user: 934
- group: 939
- file_mode: 755
- template: jinja
{% else %}
{{sls}}_state_not_allowed:
test.fail_without_changes:
- name: {{sls}}_state_not_allowed
{% endif %}
+100 -98
View File
@@ -1,98 +1,100 @@
elasticsearch:
index_settings:
logs-import-so:
close: 73000
delete: 73001
logs-strelka-so:
close: 30
delete: 365
logs-suricata-so:
close: 30
delete: 365
logs-syslog-so:
close: 30
delete: 365
logs-zeek-so:
close: 30
delete: 365
logs-elastic_agent-metricbeat-default:
close: 30
delete: 365
logs-elastic_agent-osquerybeat-default:
close: 30
delete: 365
logs-elastic_agent-fleet_server-default:
close: 30
delete: 365
logs-elastic_agent-filebeat-default:
close: 30
delete: 365
logs-elastic_agent-default:
close: 30
delete: 365
logs-system-auth-default:
close: 30
delete: 365
logs-system-application-default:
close: 30
delete: 365
logs-system-security-default:
close: 30
delete: 365
logs-system-system-default:
close: 30
delete: 365
logs-system-syslog-default:
close: 30
delete: 365
logs-windows-powershell-default:
close: 30
delete: 365
logs-windows-sysmon_operational-default:
close: 30
delete: 365
so-beats:
close: 30
delete: 365
so-elasticsearch:
close: 30
delete: 365
so-firewall:
close: 30
delete: 365
so-ids:
close: 30
delete: 365
so-import:
close: 73000
delete: 73001
so-kratos:
close: 30
delete: 365
so-kibana:
close: 30
delete: 365
so-logstash:
close: 30
delete: 365
so-netflow:
close: 30
delete: 365
so-osquery:
close: 30
delete: 365
so-ossec:
close: 30
delete: 365
so-redis:
close: 30
delete: 365
so-strelka:
close: 30
delete: 365
so-syslog:
close: 30
delete: 365
so-zeek:
close: 30
delete: 365
curator:
enabled: False
elasticsearch:
index_settings:
logs-import-so:
close: 73000
delete: 73001
logs-strelka-so:
close: 30
delete: 365
logs-suricata-so:
close: 30
delete: 365
logs-syslog-so:
close: 30
delete: 365
logs-zeek-so:
close: 30
delete: 365
logs-elastic_agent-metricbeat-default:
close: 30
delete: 365
logs-elastic_agent-osquerybeat-default:
close: 30
delete: 365
logs-elastic_agent-fleet_server-default:
close: 30
delete: 365
logs-elastic_agent-filebeat-default:
close: 30
delete: 365
logs-elastic_agent-default:
close: 30
delete: 365
logs-system-auth-default:
close: 30
delete: 365
logs-system-application-default:
close: 30
delete: 365
logs-system-security-default:
close: 30
delete: 365
logs-system-system-default:
close: 30
delete: 365
logs-system-syslog-default:
close: 30
delete: 365
logs-windows-powershell-default:
close: 30
delete: 365
logs-windows-sysmon_operational-default:
close: 30
delete: 365
so-beats:
close: 30
delete: 365
so-elasticsearch:
close: 30
delete: 365
so-firewall:
close: 30
delete: 365
so-ids:
close: 30
delete: 365
so-import:
close: 73000
delete: 73001
so-kratos:
close: 30
delete: 365
so-kibana:
close: 30
delete: 365
so-logstash:
close: 30
delete: 365
so-netflow:
close: 30
delete: 365
so-osquery:
close: 30
delete: 365
so-ossec:
close: 30
delete: 365
so-redis:
close: 30
delete: 365
so-strelka:
close: 30
delete: 365
so-syslog:
close: 30
delete: 365
so-zeek:
close: 30
delete: 365
+35
View File
@@ -0,0 +1,35 @@
# 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 'allowed_states.map.jinja' import allowed_states %}
{% if sls.split('.')[0] in allowed_states %}
include:
- curator.sostatus
so-curator:
docker_container.absent:
- force: True
so-curator_so-status.disabled:
file.comment:
- name: /opt/so/conf/so-status/so-status.conf
- regex: ^so-curator$
so-curator-cluster-close:
cron.absent:
- identifier: so-curator-cluster-close
so-curator-cluster-delete:
cron.absent:
- identifier: so-curator-cluster-delete
{% else %}
{{sls}}_state_not_allowed:
test.fail_without_changes:
- name: {{sls}}_state_not_allowed
{% endif %}
+88
View File
@@ -0,0 +1,88 @@
# 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 'allowed_states.map.jinja' import allowed_states %}
{% if sls.split('.')[0] in allowed_states %}
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% from 'docker/docker.map.jinja' import DOCKER %}
include:
- curator.config
- curator.sostatus
so-curator:
docker_container.running:
- image: {{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-curator:{{ GLOBALS.so_version }}
- start: True
- hostname: curator
- name: so-curator
- user: curator
- networks:
- sobridge:
- ipv4_address: {{ DOCKER.containers['so-curator'].ip }}
- interactive: True
- tty: True
- binds:
- /opt/so/conf/curator/curator.yml:/etc/curator/config/curator.yml:ro
- /opt/so/conf/curator/action/:/etc/curator/action:ro
- /opt/so/log/curator:/var/log/curator:rw
{% if DOCKER.containers['so-curator'].custom_bind_mounts %}
{% for BIND in DOCKER.containers['so-curator'].custom_bind_mounts %}
- {{ BIND }}
{% endfor %}
{% endif %}
{% if DOCKER.containers['so-curator'].extra_hosts %}
- extra_hosts:
{% for XTRAHOST in DOCKER.containers['so-curator'].extra_hosts %}
- {{ XTRAHOST }}
{% endfor %}
{% endif %}
{% if DOCKER.containers['so-curator'].extra_env %}
- environment:
{% for XTRAENV in DOCKER.containers['so-curator'].extra_env %}
- {{ XTRAENV }}
{% endfor %}
{% endif %}
- require:
- file: actionconfs
- file: curconf
- file: curlogdir
- watch:
- file: curconf
delete_so-curator_so-status.disabled:
file.uncomment:
- name: /opt/so/conf/so-status/so-status.conf
- regex: ^so-curator$
so-curator-cluster-close:
cron.present:
- name: /usr/sbin/so-curator-cluster-close > /opt/so/log/curator/cron-close.log 2>&1
- identifier: so-curator-cluster-close
- user: root
- minute: '2'
- hour: '*/1'
- daymonth: '*'
- month: '*'
- dayweek: '*'
so-curator-cluster-delete:
cron.present:
- name: /usr/sbin/so-curator-cluster-delete > /opt/so/log/curator/cron-cluster-delete.log 2>&1
- identifier: so-curator-cluster-delete
- user: root
- minute: '*/5'
- hour: '*'
- daymonth: '*'
- month: '*'
- dayweek: '*'
{% else %}
{{sls}}_state_not_allowed:
test.fail_without_changes:
- name: {{sls}}_state_not_allowed
{% endif %}
@@ -1,85 +0,0 @@
#!/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.
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% import_yaml 'elasticsearch/defaults.yaml' as ELASTICDEFAULTS %}
{%- set ELASTICSEARCH_HOST = GLOBALS.node_ip -%}
{%- set RETENTION = salt['pillar.get']('elasticsearch:retention', ELASTICDEFAULTS.elasticsearch.retention, merge=true) -%}
LOG="/opt/so/log/curator/so-curator-cluster-delete.log"
LOG_SIZE_LIMIT=$(/usr/sbin/so-elasticsearch-cluster-space-total {{ RETENTION.retention_pct}})
overlimit() {
[[ $(/usr/sbin/so-elasticsearch-cluster-space-used) -gt "${LOG_SIZE_LIMIT}" ]]
}
closedindices() {
# If we can't query Elasticsearch, then immediately return false.
/usr/sbin/so-elasticsearch-query _cat/indices?h=index,status | grep close > /dev/null 2>&1
[ $? -eq 1 ] && return false
# First, get the list of closed indices using _cat/indices?h=index,status | grep close | awk '{print $1}'.
# Next, filter out any so-case indices.
# Finally, use grep's -q option to return true if there are any remaining logstash-, so-, or .ds-logs- indices.
/usr/sbin/so-elasticsearch-query _cat/indices?h=index,status | grep close | awk '{print $1}' | grep -v "so-case" | grep -q -E "(logstash-|so-|.ds-logs-)"
}
# Check for 2 conditions:
# 1. Are Elasticsearch indices using more disk space than LOG_SIZE_LIMIT?
# 2. Are there any closed indices that we can delete?
# If both conditions are true, keep on looping until one of the conditions is false.
while overlimit && closedindices; do
CLOSED_INDICES=$(/usr/sbin/so-elasticsearch-query _cat/indices?h=index,status | grep close | awk '{print $1}' | grep -v "so-case" | grep -E "(logstash-|so-|.ds-logs-)" | sort -t- -k3)
# We iterate through the closed indices
for CLOSED_INDEX in ${CLOSED_INDICES}; do
# Now that we've sorted the indices from oldest to newest, we need to check each index to see if it is assigned as the current write index for a data stream
# To do so, we need to identify to which data stream this index is associated
# We extract the data stream name using the pattern below
DATASTREAM_PATTERN="logs-[a-zA-Z_.]+-[a-zA-Z_.]+"
DATASTREAM=$(echo "${CLOSED_INDEX}" | grep -oE "$DATASTREAM_PATTERN")
# We look up the data stream, and determine the write index
CURRENT_WRITE_INDEX=$(/usr/sbin/so-elasticsearch-query _data_stream/$DATASTREAM | jq -r .data_streams[0].indices[-1].index_name)
# We make sure we are not trying to delete a write index
if [ "${CLOSED_INDEX}" != "${CURRENT_WRITE_INDEX}" ]; then
# This should not be a write index, so we should be allowed to delete it
/usr/sbin/so-elasticsearch-query ${CLOSED_INDEX} -XDELETE
# Finally, write a log entry that says we deleted it.
echo "$(date) - Used disk space exceeds LOG_SIZE_LIMIT (${LOG_SIZE_LIMIT} GB) - Index ${CLOSED_INDEX} deleted ..." >> ${LOG}
fi
if ! overlimit; then
exit
fi
done
done
while overlimit; do
# We need to determine the oldest open index.
# First, get the list of open indices using _cat/indices?h=index,status | grep open | awk '{print $1}'.
# Next, filter out any so-case indices and only select the remaining logstash-, so-, or .ds-logs- indices.
# Then, sort by date by telling sort to use hyphen as delimiter and sort on the third field.
OPEN_INDICES=$(/usr/sbin/so-elasticsearch-query _cat/indices?h=index,status | grep open | awk '{print $1}' | grep -v "so-case" | grep -E "(logstash-|so-|.ds-logs-)" | sort -t- -k3)
# We iterate through the open indices
for OPEN_INDEX in ${OPEN_INDICES}; do
# Now that we've sorted the indices from oldest to newest, we need to check each index to see if it is assigned as the current write index for a data stream
# To do so, we need to identify to which data stream this index is associated
# We extract the data stream name using the pattern below
DATASTREAM_PATTERN="logs-[a-zA-Z_.]+-[a-zA-Z_.]+"
DATASTREAM=$(echo "${OPEN_INDEX}" | grep -oE "$DATASTREAM_PATTERN")
# We look up the data stream, and determine the write index
CURRENT_WRITE_INDEX=$(/usr/sbin/so-elasticsearch-query _data_stream/$DATASTREAM | jq -r .data_streams[0].indices[-1].index_name)
# We make sure we are not trying to delete a write index
if [ "${OPEN_INDEX}" != "${CURRENT_WRITE_INDEX}" ]; then
# This should not be a write index, so we should be allowed to delete it
/usr/sbin/so-elasticsearch-query ${OPEN_INDEX} -XDELETE
# Finally, write a log entry that says we deleted it.
echo "$(date) - Used disk space exceeds LOG_SIZE_LIMIT (${LOG_SIZE_LIMIT} GB) - Index ${OPEN_INDEX} deleted ..." >> ${LOG}
fi
if ! overlimit; then
exit
fi
done
done
+2 -4
View File
@@ -4,9 +4,9 @@
# Elastic License 2.0.
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% if grains['role'] in ['so-searchnode', 'so-heavynode'] %}
{% if GLOBALS.role in ['so-searchnode', 'so-heavynode'] %}
{%- set elasticsearch = GLOBALS.node_ip -%}
{% elif grains['role'] in ['so-eval', 'so-managersearch', 'so-standalone', 'so-manager'] %}
{% elif GLOBALS.role in ['so-eval', 'so-managersearch', 'so-standalone', 'so-manager'] %}
{%- set elasticsearch = GLOBALS.manager_ip -%}
{%- endif %}
{%- set ES_USER = salt['pillar.get']('elasticsearch:auth:users:so_elastic_user:user', '') %}
@@ -30,10 +30,8 @@ elasticsearch:
id:
api_key:
master_only: False
{%- if salt['pillar.get']('elasticsearch:auth:enabled') is sameas true %}
username: "{{ ES_USER }}"
password: "{{ ES_PASS }}"
{%- endif %}
logging:
loglevel: INFO
+5 -147
View File
@@ -3,153 +3,11 @@
# https://securityonion.net/license; you may not use this file except in compliance with the
# Elastic License 2.0.
{% from 'allowed_states.map.jinja' import allowed_states %}
{% if sls in allowed_states %}
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% from 'docker/docker.map.jinja' import DOCKER %}
{% from "curator/map.jinja" import CURATOROPTIONS %}
{% from "curator/map.jinja" import CURATORMERGED %}
{% set REMOVECURATORCRON = False %}
# Curator
# Create the group
curatorgroup:
group.present:
- name: curator
- gid: 934
# Add user
curator:
user.present:
- uid: 934
- gid: 934
- home: /opt/so/conf/curator
- createhome: False
# Create the log directory
curlogdir:
file.directory:
- name: /opt/so/log/curator
- user: 934
- group: 939
curactiondir:
file.directory:
- name: /opt/so/conf/curator/action
- user: 934
- group: 939
- makedirs: True
actionconfs:
file.recurse:
- name: /opt/so/conf/curator/action
- source: salt://curator/files/action
- user: 934
- group: 939
- template: jinja
- defaults:
CURATORMERGED: {{ CURATORMERGED }}
curconf:
file.managed:
- name: /opt/so/conf/curator/curator.yml
- source: salt://curator/files/curator.yml
- user: 934
- group: 939
- mode: 660
- template: jinja
- show_changes: False
curclusterclose:
file.managed:
- name: /usr/sbin/so-curator-cluster-close
- source: salt://curator/files/bin/so-curator-cluster-close
- user: 934
- group: 939
- mode: 755
- template: jinja
curclusterdelete:
file.managed:
- name: /usr/sbin/so-curator-cluster-delete
- source: salt://curator/files/bin/so-curator-cluster-delete
- user: 934
- group: 939
- mode: 755
curclusterdeletedelete:
file.managed:
- name: /usr/sbin/so-curator-cluster-delete-delete
- source: salt://curator/files/bin/so-curator-cluster-delete-delete
- user: 934
- group: 939
- mode: 755
- template: jinja
so-curator:
docker_container.{{ CURATOROPTIONS.status }}:
- image: {{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-curator:{{ GLOBALS.so_version }}
- start: {{ CURATOROPTIONS.start }}
- hostname: curator
- name: so-curator
- user: curator
- networks:
- sobridge:
- ipv4_address: {{ DOCKER.containers['so-curator'].ip }}
- interactive: True
- tty: True
- binds:
- /opt/so/conf/curator/curator.yml:/etc/curator/config/curator.yml:ro
- /opt/so/conf/curator/action/:/etc/curator/action:ro
- /opt/so/log/curator:/var/log/curator:rw
- require:
- file: actionconfs
- file: curconf
- file: curlogdir
- watch:
- file: curconf
append_so-curator_so-status.conf:
file.append:
- name: /opt/so/conf/so-status/so-status.conf
- text: so-curator
- unless: grep -q so-curator /opt/so/conf/so-status/so-status.conf
{% if not CURATOROPTIONS.start %}
so-curator_so-status.disabled:
file.comment:
- name: /opt/so/conf/so-status/so-status.conf
- regex: ^so-curator$
{% else %}
delete_so-curator_so-status.disabled:
file.uncomment:
- name: /opt/so/conf/so-status/so-status.conf
- regex: ^so-curator$
{% endif %}
so-curatorclusterclose:
cron.present:
- name: /usr/sbin/so-curator-cluster-close > /opt/so/log/curator/cron-close.log 2>&1
- user: root
- minute: '2'
- hour: '*/1'
- daymonth: '*'
- month: '*'
- dayweek: '*'
so-curatorclusterdeletecron:
cron.present:
- name: /usr/sbin/so-curator-cluster-delete > /opt/so/log/curator/cron-cluster-delete.log 2>&1
- user: root
- minute: '*/5'
- hour: '*'
- daymonth: '*'
- month: '*'
- dayweek: '*'
{% from 'curator/map.jinja' import CURATORMERGED %}
include:
{% if CURATORMERGED.enabled %}
- curator.enabled
{% else %}
{{sls}}_state_not_allowed:
test.fail_without_changes:
- name: {{sls}}_state_not_allowed
- curator.disabled
{% endif %}
+5 -16
View File
@@ -1,18 +1,7 @@
{% set CURATOROPTIONS = {} %}
{% set ENABLED = salt['pillar.get']('curator:enabled', True) %}
{% do CURATOROPTIONS.update({'manage_sostatus': True}) %}
# don't start the docker container if curator is disabled via pillar
{% if not ENABLED %}
{% do CURATOROPTIONS.update({'start': False}) %}
{% do CURATOROPTIONS.update({'status': 'absent'}) %}
{% if (TRUECLUSTER and grains.id.split('_')|last == 'searchnode') or (not TRUECLUSTER and grains.id.split('_')|last == 'manager') %}
{% do CURATOROPTIONS.update({'manage_sostatus': False}) %}
{% endif %}
{% else %}
{% do CURATOROPTIONS.update({'start': True}) %}
{% do CURATOROPTIONS.update({'status': 'running'}) %}
{% endif %}
{# 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 'curator/defaults.yaml' as CURATORDEFAULTS %}
{% set CURATORMERGED = salt['pillar.get']('elasticsearch:index_settings', CURATORDEFAULTS.elasticsearch.index_settings, merge=true) %}
{% set CURATORMERGED = salt['pillar.get']('curator', CURATORDEFAULTS.curator, merge=true) %}
+108
View File
@@ -0,0 +1,108 @@
curator:
enabled:
description: You can enable or disable Curator.
helpLink: curator.html
elasticsearch:
index_settings:
logs-import-so:
close: &close
description: Age, in days, when Curator closes the index.
helpLink: curator.html
forcedType: int
delete: &delete
description: Age, in days, when Curator deletes the index.
helpLink: curator.html
forcedType: int
logs-strelka-so:
close: *close
delete: *delete
logs-suricata-so:
close: *close
delete: *delete
logs-syslog-so:
close: *close
delete: *delete
logs-zeek-so:
close: *close
delete: *delete
logs-elastic_agent-metricbeat-default:
close: *close
delete: *delete
logs-elastic_agent-osquerybeat-default:
close: *close
delete: *delete
logs-elastic_agent-fleet_server-default:
close: *close
delete: *delete
logs-elastic_agent-filebeat-default:
close: *close
delete: *delete
logs-elastic_agent-default:
close: *close
delete: *delete
logs-system-auth-default:
close: *close
delete: *delete
logs-system-application-default:
close: *close
delete: *delete
logs-system-security-default:
close: *close
delete: *delete
logs-system-system-default:
close: *close
delete: *delete
logs-system-syslog-default:
close: *close
delete: *delete
logs-windows-powershell-default:
close: *close
delete: *delete
logs-windows-sysmon_operational-default:
close: *close
delete: *delete
so-beats:
close: *close
delete: *delete
so-elasticsearch:
close: *close
delete: *delete
so-firewall:
close: *close
delete: *delete
so-ids:
close: *close
delete: *delete
so-import:
close: *close
delete: *delete
so-kratos:
close: *close
delete: *delete
so-kibana:
close: *close
delete: *delete
so-logstash:
close: *close
delete: *delete
so-netflow:
close: *close
delete: *delete
so-osquery:
close: *close
delete: *delete
so-ossec:
close: *close
delete: *delete
so-redis:
close: *close
delete: *delete
so-strelka:
close: *close
delete: *delete
so-syslog:
close: *close
delete: *delete
so-zeek:
close: *close
delete: *delete
+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.
{% from 'allowed_states.map.jinja' import allowed_states %}
{% if sls.split('.')[0] in allowed_states %}
append_so-curator_so-status.conf:
file.append:
- name: /opt/so/conf/so-status/so-status.conf
- text: so-curator
- unless: grep -q so-curator /opt/so/conf/so-status/so-status.conf
{% else %}
{{sls}}_state_not_allowed:
test.fail_without_changes:
- name: {{sls}}_state_not_allowed
{% endif %}
@@ -0,0 +1,67 @@
#!/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.
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% import_yaml 'elasticsearch/defaults.yaml' as ELASTICDEFAULTS %}
{%- set ELASTICSEARCH_HOST = GLOBALS.node_ip -%}
{%- set RETENTION = salt['pillar.get']('elasticsearch:retention', ELASTICDEFAULTS.elasticsearch.retention, merge=true) -%}
LOG="/opt/so/log/curator/so-curator-cluster-delete.log"
ALERT_LOG="/opt/so/log/curator/alert.log"
LOG_SIZE_LIMIT_GB=$(/usr/sbin/so-elasticsearch-cluster-space-total {{ RETENTION.retention_pct}})
LOG_SIZE_LIMIT=$(( "$LOG_SIZE_LIMIT_GB" * 1000 * 1000 * 1000 ))
ITERATION=0
MAX_ITERATIONS=10
overlimit() {
[[ $(/usr/sbin/so-elasticsearch-cluster-space-used) -gt ${LOG_SIZE_LIMIT} ]]
}
###########################
# Check for 2 conditions: #
###########################
# 1. Check if Elasticsearch indices are using more disk space than LOG_SIZE_LIMIT
# 2. Check if the maximum number of iterations - MAX_ITERATIONS - has been exceeded. If so, exit.
# Closed indices will be deleted first. If we are able to bring disk space under LOG_SIZE_LIMIT, or the number of iterations has exceeded the maximum allowed number of iterations, we will break out of the loop.
while overlimit && [[ $ITERATION -lt $MAX_ITERATIONS ]]; do
# If we can't query Elasticsearch, then immediately return false.
/usr/sbin/so-elasticsearch-query _cat/indices?h=index,status > /dev/null 2>&1
[ $? -eq 1 ] && echo "$(date) - Could not query Elasticsearch." >> ${LOG} && exit
# We iterate through the closed and open indices
CLOSED_INDICES=$(/usr/sbin/so-elasticsearch-query _cat/indices?h=index,status | grep 'close$' | awk '{print $1}' | grep -vE "playbook|so-case" | grep -E "(logstash-|so-|.ds-logs-)" | sort -t- -k3)
OPEN_INDICES=$(/usr/sbin/so-elasticsearch-query _cat/indices?h=index,status | grep 'open$' | awk '{print $1}' | grep -vE "playbook|so-case" | grep -E "(logstash-|so-|.ds-logs-)" | sort -t- -k3)
for INDEX in ${CLOSED_INDICES} ${OPEN_INDICES}; do
# Now that we've sorted the indices from oldest to newest, we need to check each index to see if it is assigned as the current write index for a data stream
# To do so, we need to identify to which data stream this index is associated
# We extract the data stream name using the pattern below
DATASTREAM_PATTERN="logs-[a-zA-Z_.]+-[a-zA-Z_.]+"
DATASTREAM=$(echo "${INDEX}" | grep -oE "$DATASTREAM_PATTERN")
# We look up the data stream, and determine the write index. If there is only one backing index, we delete the entire data stream
BACKING_INDICES=$(/usr/sbin/so-elasticsearch-query _data_stream/${DATASTREAM} | jq -r '.data_streams[0].indices | length')
if [ "$BACKING_INDICES" -gt 1 ]; then
CURRENT_WRITE_INDEX=$(/usr/sbin/so-elasticsearch-query _data_stream/$DATASTREAM | jq -r .data_streams[0].indices[-1].index_name)
# We make sure we are not trying to delete a write index
if [ "${INDEX}" != "${CURRENT_WRITE_INDEX}" ]; then
# This should not be a write index, so we should be allowed to delete it
printf "\n$(date) - Used disk space exceeds LOG_SIZE_LIMIT (${LOG_SIZE_LIMIT_GB} GB) - Deleting ${INDEX} index...\n" >> ${LOG}
/usr/sbin/so-elasticsearch-query ${INDEX} -XDELETE >> ${LOG} 2>&1
fi
fi
if ! overlimit ; then
exit
fi
((ITERATION++))
done
if [[ $ITERATION -ge $MAX_ITERATIONS ]]; then
alert_id=$(uuidgen)
printf "\n$(date) -> Maximum iteration limit reached ($MAX_ITERATIONS). Unable to bring disk below threshold. Writing alert ($alert_id) to ${ALERT_LOG}\n" >> ${LOG}
printf "\n$(date),$alert_id,Maximum iteration limit reached ($MAX_ITERATIONS). Unable to bring disk below threshold.\n" >> ${ALERT_LOG}
fi
done
+101 -1
View File
@@ -8,93 +8,193 @@ docker:
final_octet: 20
port_bindings:
- 0.0.0.0:5000:5000
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-elastic-fleet':
final_octet: 21
port_bindings:
- 0.0.0.0:8220:8220/tcp
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-elasticsearch':
final_octet: 22
port_bindings:
- 0.0.0.0:9200:9200/tcp
- 0.0.0.0:9300:9300/tcp
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-idstools':
final_octet: 25
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-influxdb':
final_octet: 26
port_bindings:
- 0.0.0.0:8086:8086
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-kibana':
final_octet: 27
port_bindings:
- 0.0.0.0:5601:5601
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-kratos':
final_octet: 28
port_bindings:
- 0.0.0.0:4433:4433
- 0.0.0.0:4434:4434
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-logstash':
final_octet: 29
port_bindings:
- 0.0.0.0:3765:3765
- 0.0.0.0:5044:5044
- 0.0.0.0:5055:5055
- 0.0.0.0:5056:5056
- 0.0.0.0:5644:5644
- 0.0.0.0:6050:6050
- 0.0.0.0:6051:6051
- 0.0.0.0:6052:6052
- 0.0.0.0:6053:6053
- 0.0.0.0:9600:9600
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-mysql':
final_octet: 30
port_bindings:
- 0.0.0.0:3306:3306
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-nginx':
final_octet: 31
port_bindings:
- 80:80
- 443:443
- 8443:8443
- 7788:7788
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-playbook':
final_octet: 32
port_bindings:
- 0.0.0.0:3000:3000
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-redis':
final_octet: 33
port_bindings:
- 0.0.0.0:6379:6379
- 0.0.0.0:9696:9696
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-sensoroni':
final_octet: 99
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-soc':
final_octet: 34
port_bindings:
- 0.0.0.0:9822:9822
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-soctopus':
final_octet: 35
port_bindings:
- 0.0.0.0:7000:7000
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-strelka-backend':
final_octet: 36
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-strelka-filestream':
final_octet: 37
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-strelka-frontend':
final_octet: 38
port_bindings:
- 0.0.0.0:57314:57314
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-strelka-manager':
final_octet: 39
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-strelka-gatekeeper':
final_octet: 40
port_bindings:
- 0.0.0.0:6381:6379
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-strelka-coordinator':
final_octet: 41
port_bindings:
- 0.0.0.0:6380:6379
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-elastalert':
final_octet: 42
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-curator':
final_octet: 43
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-elastic-fleet-package-registry':
final_octet: 44
port_bindings:
- 0.0.0.0:8080:8080/tcp
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-idh':
final_octet: 45
final_octet: 45
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-telegraf':
final_octet: 99
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-steno':
final_octet: 99
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-suricata':
final_octet: 99
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-zeek':
final_octet: 99
custom_bind_mounts: []
extra_hosts: []
extra_env: []
+4 -4
View File
@@ -26,10 +26,10 @@ dockerheldpackages:
dockerheldpackages:
pkg.installed:
- pkgs:
- containerd.io: 1.6.18-3.1.el9
- docker-ce: 23.0.1-1.el9
- docker-ce-cli: 23.0.1-1.el9
- docker-ce-rootless-extras: 23.0.1-1.el9
- containerd.io: 1.6.20-3.1.el9
- docker-ce: 23.0.5-1.el9
- docker-ce-cli: 23.0.5-1.el9
- docker-ce-rootless-extras: 23.0.5-1.el9
- hold: True
- update_holds: True
{% endif %}
+18
View File
@@ -28,6 +28,24 @@ docker:
helpLink: docker.html
advanced: True
multiline: True
custom_bind_mounts:
description: List of custom local volume bindings.
advanced: True
helpLink: docker.html
multiline: True
forcedType: "[]string"
extra_hosts:
description: List of additional host entries for the container.
advanced: True
helpLink: docker.html
multiline: True
forcedType: "[]string"
extra_env:
description: List of additional ENV entries for the container.
advanced: True
helpLink: docker.html
multiline: True
forcedType: "[]string"
so-dockerregistry: *dockerOptions
so-elastalert: *dockerOptions
so-elastic-fleet-package-registry: *dockerOptions
+103
View File
@@ -0,0 +1,103 @@
# 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 'allowed_states.map.jinja' import allowed_states %}
{% if sls.split('.')[0] in allowed_states %}
{% from 'elastalert/map.jinja' import ELASTALERTMERGED %}
# Create the group
elastagroup:
group.present:
- name: elastalert
- gid: 933
# Add user
elastalert:
user.present:
- uid: 933
- gid: 933
- home: /opt/so/conf/elastalert
- createhome: False
elastalogdir:
file.directory:
- name: /opt/so/log/elastalert
- user: 933
- group: 933
- makedirs: True
elastalert_sbin:
file.recurse:
- name: /usr/sbin
- source: salt://elastalert/tools/sbin
- user: 933
- group: 939
- file_mode: 755
#elastalert_sbin_jinja:
# file.recurse:
# - name: /usr/sbin
# - source: salt://elastalert/tools/sbin_jinja
# - user: 933
# - group: 939
# - file_mode: 755
# - template: jinja
elastarules:
file.directory:
- name: /opt/so/rules/elastalert
- user: 933
- group: 933
- makedirs: True
elastaconfdir:
file.directory:
- name: /opt/so/conf/elastalert
- user: 933
- group: 933
- makedirs: True
elastasomodulesdir:
file.directory:
- name: /opt/so/conf/elastalert/modules/so
- user: 933
- group: 933
- makedirs: True
elastacustmodulesdir:
file.directory:
- name: /opt/so/conf/elastalert/modules/custom
- user: 933
- group: 933
- makedirs: True
elastasomodulesync:
file.recurse:
- name: /opt/so/conf/elastalert/modules/so
- source: salt://elastalert/files/modules/so
- user: 933
- group: 933
- makedirs: True
elastaconf:
file.managed:
- name: /opt/so/conf/elastalert/elastalert_config.yaml
- source: salt://elastalert/files/elastalert_config.yaml.jinja
- context:
elastalert_config: {{ ELASTALERTMERGED.config }}
- user: 933
- group: 933
- mode: 660
- template: jinja
- show_changes: False
{% else %}
{{sls}}_state_not_allowed:
test.fail_without_changes:
- name: {{sls}}_state_not_allowed
{% endif %}
+3 -1
View File
@@ -1,4 +1,5 @@
elastalert:
enabled: False
config:
rules_folder: /opt/elastalert/rules/
scan_subdirectories: true
@@ -12,9 +13,10 @@ elastalert:
es_port: 9200
es_conn_timeout: 55
max_query_size: 5000
eql: true
use_ssl: true
verify_certs: false
writeback_index: elastalert_status
writeback_index: elastalert
alert_time_limit:
days: 2
index_settings:
+27
View File
@@ -0,0 +1,27 @@
# 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 'allowed_states.map.jinja' import allowed_states %}
{% if sls.split('.')[0] in allowed_states %}
include:
- elastalert.sostatus
so-elastalert:
docker_container.absent:
- force: True
so-elastalert_so-status.disabled:
file.comment:
- name: /opt/so/conf/so-status/so-status.conf
- regex: ^so-elastalert$
{% else %}
{{sls}}_state_not_allowed:
test.fail_without_changes:
- name: {{sls}}_state_not_allowed
{% endif %}
@@ -1,11 +0,0 @@
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% import_yaml 'elastalert/defaults.yaml' as ELASTALERT %}
{% set elastalert_pillar = salt['pillar.get']('elastalert:config', {}) %}
{% do ELASTALERT.elastalert.config.update({'es_host': GLOBALS.manager}) %}
{% do ELASTALERT.elastalert.config.update({'es_username': pillar.elasticsearch.auth.users.so_elastic_user.user}) %}
{% do ELASTALERT.elastalert.config.update({'es_password': pillar.elasticsearch.auth.users.so_elastic_user.pass}) %}
{% do salt['defaults.merge'](ELASTALERT.elastalert.config, elastalert_pillar, in_place=True) %}
+74
View File
@@ -0,0 +1,74 @@
# 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 'allowed_states.map.jinja' import allowed_states %}
{% if sls.split('.')[0] in allowed_states %}
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% from 'docker/docker.map.jinja' import DOCKER %}
include:
- elastalert.config
- elastalert.sostatus
wait_for_elasticsearch:
cmd.run:
- name: so-elasticsearch-wait
so-elastalert:
docker_container.running:
- image: {{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elastalert:{{ GLOBALS.so_version }}
- hostname: elastalert
- name: so-elastalert
- user: so-elastalert
- networks:
- sobridge:
- ipv4_address: {{ DOCKER.containers['so-elastalert'].ip }}
- detach: True
- binds:
- /opt/so/rules/elastalert:/opt/elastalert/rules/:ro
- /opt/so/log/elastalert:/var/log/elastalert:rw
- /opt/so/conf/elastalert/modules/:/opt/elastalert/modules/:ro
- /opt/so/conf/elastalert/elastalert_config.yaml:/opt/elastalert/config.yaml:ro
{% if DOCKER.containers['so-elastalert'].custom_bind_mounts %}
{% for BIND in DOCKER.containers['so-elastalert'].custom_bind_mounts %}
- {{ BIND }}
{% endfor %}
{% endif %}
- extra_hosts:
- {{ GLOBALS.manager }}:{{ GLOBALS.manager_ip }}
{% if DOCKER.containers['so-elastalert'].extra_hosts %}
{% for XTRAHOST in DOCKER.containers['so-elastalert'].extra_hosts %}
- {{ XTRAHOST }}
{% endfor %}
{% endif %}
{% if DOCKER.containers['so-elastalert'].extra_env %}
- environment:
{% for XTRAENV in DOCKER.containers['so-elastalert'].extra_env %}
- {{ XTRAENV }}
{% endfor %}
{% endif %}
- require:
- cmd: wait_for_elasticsearch
- file: elastarules
- file: elastalogdir
- file: elastacustmodulesdir
- file: elastaconf
- watch:
- file: elastaconf
- onlyif:
- "so-elasticsearch-query / | jq -r '.version.number[0:1]' | grep -q 8" {# only run this state if elasticsearch is version 8 #}
delete_so-elastalert_so-status.disabled:
file.uncomment:
- name: /opt/so/conf/so-status/so-status.conf
- regex: ^so-elastalert$
{% else %}
{{sls}}_state_not_allowed:
test.fail_without_changes:
- name: {{sls}}_state_not_allowed
{% endif %}
@@ -31,8 +31,8 @@ class PlaybookESAlerter(Alerter):
creds = (self.rule['es_username'], self.rule['es_password'])
payload = {"rule": { "name": self.rule['play_title'],"case_template": self.rule['play_id'],"uuid": self.rule['play_id'],"category": self.rule['rule.category']},"event":{ "severity": self.rule['event.severity'],"module": self.rule['event.module'],"dataset": self.rule['event.dataset'],"severity_label": self.rule['sigma_level']},"kibana_pivot": self.rule['kibana_pivot'],"soc_pivot": self.rule['soc_pivot'],"play_url": self.rule['play_url'],"sigma_level": self.rule['sigma_level'],"event_data": match, "@timestamp": timestamp}
url = f"https://{self.rule['es_host']}:{self.rule['es_port']}/so-playbook-alerts-{today}/_doc/"
url = f"{self.rule['es_hosts']}/so-playbook-alerts-{today}/_doc/"
requests.post(url, data=json.dumps(payload), headers=headers, verify=False, auth=creds)
def get_info(self):
return {'type': 'PlaybookESAlerter'}
return {'type': 'PlaybookESAlerter'}
+8 -119
View File
@@ -1,124 +1,13 @@
# 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.
{% from 'allowed_states.map.jinja' import allowed_states %}
{% if sls in allowed_states %}
# 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 %}
{% from 'docker/docker.map.jinja' import DOCKER %}
{% from 'elastalert/elastalert_config.map.jinja' import ELASTALERT as elastalert_config with context %}
# Create the group
elastagroup:
group.present:
- name: elastalert
- gid: 933
# Add user
elastalert:
user.present:
- uid: 933
- gid: 933
- home: /opt/so/conf/elastalert
- createhome: False
elastalogdir:
file.directory:
- name: /opt/so/log/elastalert
- user: 933
- group: 933
- makedirs: True
elastarules:
file.directory:
- name: /opt/so/rules/elastalert
- user: 933
- group: 933
- makedirs: True
elastaconfdir:
file.directory:
- name: /opt/so/conf/elastalert
- user: 933
- group: 933
- makedirs: True
elastasomodulesdir:
file.directory:
- name: /opt/so/conf/elastalert/modules/so
- user: 933
- group: 933
- makedirs: True
elastacustmodulesdir:
file.directory:
- name: /opt/so/conf/elastalert/modules/custom
- user: 933
- group: 933
- makedirs: True
elastasomodulesync:
file.recurse:
- name: /opt/so/conf/elastalert/modules/so
- source: salt://elastalert/files/modules/so
- user: 933
- group: 933
- makedirs: True
elastaconf:
file.managed:
- name: /opt/so/conf/elastalert/elastalert_config.yaml
- source: salt://elastalert/files/elastalert_config.yaml.jinja
- context:
elastalert_config: {{ elastalert_config.elastalert.config }}
- user: 933
- group: 933
- mode: 660
- template: jinja
- show_changes: False
wait_for_elasticsearch:
cmd.run:
- name: so-elasticsearch-wait
so-elastalert:
docker_container.running:
- image: {{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elastalert:{{ GLOBALS.so_version }}
- hostname: elastalert
- name: so-elastalert
- user: so-elastalert
- networks:
- sobridge:
- ipv4_address: {{ DOCKER.containers['so-elastalert'].ip }}
- detach: True
- binds:
- /opt/so/rules/elastalert:/opt/elastalert/rules/:ro
- /opt/so/log/elastalert:/var/log/elastalert:rw
- /opt/so/conf/elastalert/modules/:/opt/elastalert/modules/:ro
- /opt/so/conf/elastalert/elastalert_config.yaml:/opt/elastalert/config.yaml:ro
- extra_hosts:
- {{ GLOBALS.manager }}:{{ GLOBALS.manager_ip }}
- require:
- cmd: wait_for_elasticsearch
- file: elastarules
- file: elastalogdir
- file: elastacustmodulesdir
- file: elastaconf
- watch:
- file: elastaconf
- onlyif:
- "so-elasticsearch-query / | jq -r '.version.number[0:1]' | grep -q 8" {# only run this state if elasticsearch is version 8 #}
append_so-elastalert_so-status.conf:
file.append:
- name: /opt/so/conf/so-status/so-status.conf
- text: so-elastalert
{% from 'elastalert/map.jinja' import ELASTALERTMERGED %}
include:
{% if ELASTALERTMERGED.enabled %}
- elastalert.enabled
{% else %}
{{sls}}_state_not_allowed:
test.fail_without_changes:
- name: {{sls}}_state_not_allowed
- elastalert.disabled
{% endif %}
+15
View File
@@ -0,0 +1,15 @@
{# 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 'elastalert/defaults.yaml' as ELASTALERTDEFAULTS %}
{% set elastalert_pillar = salt['pillar.get']('elastalert:config', {}) %}
{% do ELASTALERTDEFAULTS.elastalert.config.update({'es_hosts': 'https://' + GLOBALS.manager + ':' + ELASTALERTDEFAULTS.elastalert.config.es_port|string}) %}
{% do ELASTALERTDEFAULTS.elastalert.config.update({'es_username': pillar.elasticsearch.auth.users.so_elastic_user.user}) %}
{% do ELASTALERTDEFAULTS.elastalert.config.update({'es_password': pillar.elasticsearch.auth.users.so_elastic_user.pass}) %}
{% set ELASTALERTMERGED = salt['pillar.get']('elastalert', ELASTALERTDEFAULTS.elastalert, merge=True) %}
+3
View File
@@ -1,4 +1,7 @@
elastalert:
enabled:
description: You can enable or disable Elastalert.
helpLink: elastalert.html
config:
disable_rules_on_error:
description: Disable rules on failure.
+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.
{% from 'allowed_states.map.jinja' import allowed_states %}
{% if sls.split('.')[0] in allowed_states %}
append_so-elastalert_so-status.conf:
file.append:
- name: /opt/so/conf/so-status/so-status.conf
- text: so-elastalert
- unless: grep -q so-elastalert /opt/so/conf/so-status/so-status.conf
{% else %}
{{sls}}_state_not_allowed:
test.fail_without_changes:
- name: {{sls}}_state_not_allowed
{% endif %}
@@ -0,0 +1,29 @@
# 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 'allowed_states.map.jinja' import allowed_states %}
{% if sls.split('.')[0] in allowed_states %}
# Add Group
elasticsagentprgroup:
group.present:
- name: elastic-agent-pr
- gid: 948
# Add user
elastic-agent-pr:
user.present:
- uid: 948
- gid: 948
- home: /opt/so/conf/elastic-fleet-pr
- createhome: False
{% else %}
{{sls}}_state_not_allowed:
test.fail_without_changes:
- name: {{sls}}_state_not_allowed
{% endif %}
@@ -0,0 +1,2 @@
elastic_fleet_package_registry:
enabled: False
@@ -0,0 +1,27 @@
# 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 'allowed_states.map.jinja' import allowed_states %}
{% if sls.split('.')[0] in allowed_states %}
include:
- elastic-fleet-package-registry.sostatus
so-elastic-fleet-package-registry:
docker_container.absent:
- force: True
so-elastic-fleet-package-registry_so-status.disabled:
file.comment:
- name: /opt/so/conf/so-status/so-status.conf
- regex: ^so-elastic-fleet-package-registry$
{% else %}
{{sls}}_state_not_allowed:
test.fail_without_changes:
- name: {{sls}}_state_not_allowed
{% endif %}
@@ -0,0 +1,59 @@
# 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 'allowed_states.map.jinja' import allowed_states %}
{% if sls.split('.')[0] in allowed_states %}
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% from 'docker/docker.map.jinja' import DOCKER %}
include:
- elastic-fleet-package-registry.config
- elastic-fleet-package-registry.sostatus
so-elastic-fleet-package-registry:
docker_container.running:
- image: {{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elastic-fleet-package-registry:{{ GLOBALS.so_version }}
- name: so-elastic-fleet-package-registry
- hostname: Fleet-package-reg-{{ GLOBALS.hostname }}
- detach: True
- user: 948
- networks:
- sobridge:
- ipv4_address: {{ DOCKER.containers['so-elastic-fleet-package-registry'].ip }}
- extra_hosts:
- {{ GLOBALS.hostname }}:{{ GLOBALS.node_ip }}
{% if DOCKER.containers['so-elastic-fleet-package-registry'].extra_hosts %}
{% for XTRAHOST in DOCKER.containers['so-elastic-fleet-package-registry'].extra_hosts %}
- {{ XTRAHOST }}
{% endfor %}
{% endif %}
- port_bindings:
{% for BINDING in DOCKER.containers['so-elastic-fleet-package-registry'].port_bindings %}
- {{ BINDING }}
{% endfor %}
{% if DOCKER.containers['so-elastic-fleet-package-registry'].custom_bind_mounts %}
- binds:
{% for BIND in DOCKER.containers['so-elastic-fleet-package-registry'].custom_bind_mounts %}
- {{ BIND }}
{% endfor %}
{% endif %}
{% if DOCKER.containers['so-elastic-fleet-package-registry'].extra_env %}
- environment:
{% for XTRAENV in DOCKER.containers['so-elastic-fleet-package-registry'].extra_env %}
- {{ XTRAENV }}
{% endfor %}
{% endif %}
delete_so-elastic-fleet-package-registry_so-status.disabled:
file.uncomment:
- name: /opt/so/conf/so-status/so-status.conf
- regex: ^so-elastic-fleet-package-registry$
{% else %}
{{sls}}_state_not_allowed:
test.fail_without_changes:
- name: {{sls}}_state_not_allowed
{% endif %}
+8 -47
View File
@@ -1,52 +1,13 @@
# 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.
{% from 'allowed_states.map.jinja' import allowed_states %}
{% if sls in allowed_states %}
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% from 'docker/docker.map.jinja' import DOCKER %}
# 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.
# Add Group
elasticsagentprgroup:
group.present:
- name: elastic-agent-pr
- gid: 948
# Add user
elastic-agent-pr:
user.present:
- uid: 948
- gid: 948
- home: /opt/so/conf/elastic-fleet-pr
- createhome: False
so-elastic-fleet-package-registry:
docker_container.running:
- image: {{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elastic-fleet-package-registry:{{ GLOBALS.so_version }}
- name: so-elastic-fleet-package-registry
- hostname: Fleet-package-reg-{{ GLOBALS.hostname }}
- detach: True
- user: 948
- networks:
- sobridge:
- ipv4_address: {{ DOCKER.containers['so-elastic-fleet-package-registry'].ip }}
- extra_hosts:
- {{ GLOBALS.hostname }}:{{ GLOBALS.node_ip }}
- port_bindings:
{% for BINDING in DOCKER.containers['so-elastic-fleet-package-registry'].port_bindings %}
- {{ BINDING }}
{% endfor %}
append_so-elastic-fleet-package-registry_so-status.conf:
file.append:
- name: /opt/so/conf/so-status/so-status.conf
- text: so-elastic-fleet-package-registry
{% from 'elastic-fleet-package-registry/map.jinja' import ELASTICFLEETPACKAGEREGISTRYMERGED %}
include:
{% if ELASTICFLEETPACKAGEREGISTRYMERGED.enabled %}
- elastic-fleet-package-registry.enabled
{% else %}
{{sls}}_state_not_allowed:
test.fail_without_changes:
- name: {{sls}}_state_not_allowed
- elastic-fleet-package-registry.disabled
{% endif %}
@@ -0,0 +1,7 @@
{# 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 'elastic-fleet-package-registry/defaults.yaml' as ELASTICFLEETPACKAGEREGISTRYDEFAULTS %}
{% set ELASTICFLEETPACKAGEREGISTRYMERGED = salt['pillar.get']('elastic_fleet_package_registry', ELASTICFLEETPACKAGEREGISTRYDEFAULTS.elastic_fleet_package_registry, merge=True) %}
@@ -0,0 +1,4 @@
elastic_fleet_package_registry:
enabled:
description: You can enable or disable Elastic Fleet Package Registry.
advanced: True
@@ -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.
{% from 'allowed_states.map.jinja' import allowed_states %}
{% if sls.split('.')[0] in allowed_states %}
append_so-elastic-fleet-package-registry_so-status.conf:
file.append:
- name: /opt/so/conf/so-status/so-status.conf
- text: so-elastic-fleet-package-registry
- unless: grep -q so-elastic-fleet-package-registry /opt/so/conf/so-status/so-status.conf
{% else %}
{{sls}}_state_not_allowed:
test.fail_without_changes:
- name: {{sls}}_state_not_allowed
{% endif %}
+11
View File
@@ -0,0 +1,11 @@
# 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.
fleetartifactdir:
file.directory:
- name: /nsm/elastic-fleet/artifacts
- user: 947
- group: 939
- makedirs: True
+91
View File
@@ -0,0 +1,91 @@
# 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 'allowed_states.map.jinja' import allowed_states %}
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% if sls.split('.')[0] in allowed_states %}
# Add EA Group
elasticsagentgroup:
group.present:
- name: elastic-agent
- gid: 947
# Add EA user
elastic-agent:
user.present:
- uid: 947
- gid: 947
- home: /opt/so/conf/elastic-fleet
- createhome: False
elasticfleet_sbin:
file.recurse:
- name: /usr/sbin
- source: salt://elasticfleet/tools/sbin
- user: 947
- group: 939
- file_mode: 755
elasticfleet_sbin_jinja:
file.recurse:
- name: /usr/sbin
- source: salt://elasticfleet/tools/sbin_jinja
- user: 947
- group: 939
- file_mode: 755
- template: jinja
eaconfdir:
file.directory:
- name: /opt/so/conf/elastic-fleet
- user: 947
- group: 939
- makedirs: True
eastatedir:
file.directory:
- name: /opt/so/conf/elastic-fleet/state
- user: 947
- group: 939
- makedirs: True
{% if GLOBALS.role != "so-fleet" %}
eaintegrationsdir:
file.directory:
- name: /opt/so/conf/elastic-fleet/integrations
- user: 947
- group: 939
- makedirs: True
eadynamicintegration:
file.recurse:
- name: /opt/so/conf/elastic-fleet/integrations
- source: salt://elasticfleet/files/integrations-dynamic
- user: 947
- group: 939
- template: jinja
eaintegration:
file.recurse:
- name: /opt/so/conf/elastic-fleet/integrations
- source: salt://elasticfleet/files/integrations
- user: 947
- group: 939
ea-integrations-load:
file.absent:
- name: /opt/so/state/eaintegrations.txt
- onchanges:
- file: eaintegration
- file: eadynamicintegration
{% endif %}
{% else %}
{{sls}}_state_not_allowed:
test.fail_without_changes:
- name: {{sls}}_state_not_allowed
{% endif %}
+23
View File
@@ -0,0 +1,23 @@
elasticfleet:
enabled: False
config:
server:
endpoints_enrollment: ''
es_token: ''
grid_enrollment: ''
url: ''
logging:
zeek:
excluded:
- broker
- capture_loss
- ecat_arp_info
- known_hosts
- known_services
- loaded_scripts
- ntp
- packet_filter
- reporter
- stats
- stderr
- stdout
+27
View File
@@ -0,0 +1,27 @@
# 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 'allowed_states.map.jinja' import allowed_states %}
{% if sls.split('.')[0] in allowed_states %}
include:
- elasticfleet.sostatus
so-elastic-fleet:
docker_container.absent:
- force: True
so-elastic-fleet_so-status.disabled:
file.comment:
- name: /opt/so/conf/so-status/so-status.conf
- regex: ^so-elastic-fleet$
{% else %}
{{sls}}_state_not_allowed:
test.fail_without_changes:
- name: {{sls}}_state_not_allowed
{% endif %}
+83
View File
@@ -0,0 +1,83 @@
# 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 'allowed_states.map.jinja' import allowed_states %}
{% if sls.split('.')[0] in allowed_states %}
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% from 'docker/docker.map.jinja' import DOCKER %}
{# This value is generated during node install and stored in minion pillar #}
{% set SERVICETOKEN = salt['pillar.get']('elasticfleet:config:server:es_token','') %}
include:
- elasticfleet.config
- elasticfleet.sostatus
{% if SERVICETOKEN != '' %}
so-elastic-fleet:
docker_container.running:
- image: {{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elastic-agent:{{ GLOBALS.so_version }}
- name: so-elastic-fleet
- hostname: FleetServer-{{ GLOBALS.hostname }}
- detach: True
- user: 947
- networks:
- sobridge:
- ipv4_address: {{ DOCKER.containers['so-elastic-fleet'].ip }}
- extra_hosts:
- {{ GLOBALS.manager }}:{{ GLOBALS.manager_ip }}
- {{ GLOBALS.hostname }}:{{ GLOBALS.node_ip }}
{% if DOCKER.containers['so-elastic-fleet'].extra_hosts %}
{% for XTRAHOST in DOCKER.containers['so-elastic-fleet'].extra_hosts %}
- {{ XTRAHOST }}
{% endfor %}
{% endif %}
- port_bindings:
{% for BINDING in DOCKER.containers['so-elastic-fleet'].port_bindings %}
- {{ BINDING }}
{% endfor %}
- binds:
- /etc/pki:/etc/pki:ro
#- /opt/so/conf/elastic-fleet/state:/usr/share/elastic-agent/state:rw
{% if DOCKER.containers['so-elastic-fleet'].custom_bind_mounts %}
{% for BIND in DOCKER.containers['so-elastic-fleet'].custom_bind_mounts %}
- {{ BIND }}
{% endfor %}
{% endif %}
- environment:
- FLEET_SERVER_ENABLE=true
- FLEET_URL=https://{{ GLOBALS.node_ip }}:8220
- FLEET_SERVER_ELASTICSEARCH_HOST=https://{{ GLOBALS.manager }}:9200
- FLEET_SERVER_SERVICE_TOKEN={{ SERVICETOKEN }}
- FLEET_SERVER_POLICY_ID=FleetServer_{{ GLOBALS.hostname }}
- FLEET_SERVER_ELASTICSEARCH_CA=/etc/pki/tls/certs/intca.crt
- FLEET_SERVER_CERT=/etc/pki/elasticfleet.crt
- FLEET_SERVER_CERT_KEY=/etc/pki/elasticfleet.key
- FLEET_CA=/etc/pki/tls/certs/intca.crt
{% if DOCKER.containers['so-elastic-fleet'].extra_env %}
{% for XTRAENV in DOCKER.containers['so-elastic-fleet'].extra_env %}
- {{ XTRAENV }}
{% endfor %}
{% endif %}
{% endif %}
{% if GLOBALS.role != "so-fleet" %}
so-elastic-fleet-integrations:
cmd.run:
- name: /usr/sbin/so-elastic-fleet-integration-policy-load
{% endif %}
delete_so-elastic-fleet_so-status.disabled:
file.uncomment:
- name: /opt/so/conf/so-status/so-status.conf
- regex: ^so-elastic-fleet$
{% else %}
{{sls}}_state_not_allowed:
test.fail_without_changes:
- name: {{sls}}_state_not_allowed
{% endif %}
@@ -0,0 +1,32 @@
{% from 'elasticfleet/map.jinja' import ELASTICFLEETMERGED %}
{%- raw -%}
{
"package": {
"name": "log",
"version": ""
},
"name": "import-zeek-logs",
"namespace": "so",
"description": "Zeek Import logs",
"policy_id": "so-grid-nodes",
"inputs": {
"logs-logfile": {
"enabled": true,
"streams": {
"log.log": {
"enabled": true,
"vars": {
"paths": [
"/nsm/import/*/zeek/logs/*.log"
],
"data_stream.dataset": "import",
"tags": [],
"processors": "- dissect:\n tokenizer: \"/nsm/import/%{import.id}/zeek/logs/%{import.file}\"\n field: \"log.file.path\"\n target_prefix: \"\"\n- script:\n lang: javascript\n source: >\n function process(event) {\n var pl = event.Get(\"import.file\").slice(0,-4);\n event.Put(\"@metadata.pipeline\", \"zeek.\" + pl);\n }\n- add_fields:\n target: event\n fields:\n category: network\n module: zeek\n imported: true\n- add_tags:\n tags: \"ics\"\n when:\n regexp:\n import.file: \"^bacnet*|^bsap*|^cip*|^cotp*|^dnp3*|^ecat*|^enip*|^modbus*|^opcua*|^profinet*|^s7comm*\"",
"custom": "exclude_files: [\"{%- endraw -%}{{ ELASTICFLEETMERGED.logging.zeek.excluded | join('|') }}{%- raw -%}.log$\"]\n"
}
}
}
}
}
}
{%- endraw -%}
@@ -0,0 +1,33 @@
{% from 'elasticfleet/map.jinja' import ELASTICFLEETMERGED %}
{%- raw -%}
{
"package": {
"name": "log",
"version": ""
},
"id": "zeek-logs",
"name": "zeek-logs",
"namespace": "so",
"description": "Zeek logs",
"policy_id": "so-grid-nodes",
"inputs": {
"logs-logfile": {
"enabled": true,
"streams": {
"log.log": {
"enabled": true,
"vars": {
"paths": [
"/nsm/zeek/logs/current/*.log"
],
"data_stream.dataset": "zeek",
"tags": [],
"processors": "- dissect:\n tokenizer: \"/nsm/zeek/logs/current/%{pipeline}.log\"\n field: \"log.file.path\"\n trim_chars: \".log\"\n target_prefix: \"\"\n- script:\n lang: javascript\n source: >\n function process(event) {\n var pl = event.Get(\"pipeline\");\n event.Put(\"@metadata.pipeline\", \"zeek.\" + pl);\n }\n- add_fields:\n target: event\n fields:\n category: network\n module: zeek\n- add_tags:\n tags: \"ics\"\n when:\n regexp:\n pipeline: \"^bacnet*|^bsap*|^cip*|^cotp*|^dnp3*|^ecat*|^enip*|^modbus*|^opcua*|^profinet*|^s7comm*\"",
"custom": "exclude_files: [\"{%- endraw -%}{{ ELASTICFLEETMERGED.logging.zeek.excluded | join('|') }}{%- raw -%}.log$\"]\n"
}
}
}
}
}
}
{%- endraw -%}
@@ -0,0 +1,28 @@
{
"name": "elastic-defend-endpoints",
"namespace": "default",
"description": "",
"package": {
"name": "endpoint",
"title": "Elastic Defend",
"version": ""
},
"enabled": true,
"policy_id": "endpoints-initial",
"vars": {},
"inputs": [{
"type": "endpoint",
"enabled": true,
"streams": [],
"config": {
"integration_config": {
"value": {
"type": "endpoint",
"endpointConfig": {
"preset": "DataCollection"
}
}
}
}
}]
}
@@ -0,0 +1,20 @@
{
"package": {
"name": "osquery_manager",
"version": ""
},
"name": "osquery-endpoints",
"namespace": "default",
"policy_id": "endpoints-initial",
"inputs": {
"osquery_manager-osquery": {
"enabled": true,
"streams": {
"osquery_manager.result": {
"enabled": true,
"vars": {}
}
}
}
}
}
@@ -0,0 +1,57 @@
{
"policy_id": "endpoints-initial",
"package": {
"name": "system",
"version": ""
},
"name": "system-endpoints",
"namespace": "default",
"inputs": {
"system-logfile": {
"enabled": true,
"streams": {
"system.auth": {
"enabled": true,
"vars": {
"paths": [
"/var/log/auth.log*",
"/var/log/secure*"
]
}
},
"system.syslog": {
"enabled": true,
"vars": {
"paths": [
"/var/log/messages*",
"/var/log/syslog*"
]
}
}
}
},
"system-winlog": {
"enabled": true,
"vars": {
"preserve_original_event": false
},
"streams": {
"system.application": {
"enabled": true,
"vars": {
"tags": []
}
},
"system.security": {
"enabled": true,
"vars": {
"tags": []
}
}
}
},
"system-system/metrics": {
"enabled": false
}
}
}
@@ -0,0 +1,67 @@
{
"policy_id": "endpoints-initial",
"package": {
"name": "windows",
"version": ""
},
"name": "windows-endpoints",
"description": "",
"namespace": "default",
"inputs": {
"windows-winlog": {
"enabled": true,
"streams": {
"windows.forwarded": {
"enabled": true,
"vars": {
"tags": [
"forwarded"
],
"preserve_original_event": false
}
},
"windows.powershell": {
"enabled": true,
"vars": {
"tags": [],
"preserve_original_event": false
}
},
"windows.powershell_operational": {
"enabled": true,
"vars": {
"tags": [],
"preserve_original_event": false
}
},
"windows.sysmon_operational": {
"enabled": true,
"vars": {
"tags": [],
"preserve_original_event": false
}
}
}
},
"windows-windows/metrics": {
"enabled": false,
"streams": {
"windows.perfmon": {
"enabled": false,
"vars": {
"perfmon.group_measurements_by_instance": false,
"perfmon.ignore_non_existent_counters": false,
"perfmon.queries": "- object: 'Process'\n instance: [\"*\"]\n counters:\n - name: '% Processor Time'\n field: cpu_perc\n format: \"float\"\n - name: \"Working Set\"\n",
"period": "10s"
}
},
"windows.service": {
"enabled": false,
"vars": {
"period": "60s"
}
}
}
}
}
}
@@ -0,0 +1,106 @@
{
"package": {
"name": "elasticsearch",
"version": ""
},
"name": "elasticsearch-logs",
"namespace": "default",
"description": "Elasticsearch Logs",
"policy_id": "so-grid-nodes",
"inputs": {
"elasticsearch-logfile": {
"enabled": true,
"streams": {
"elasticsearch.audit": {
"enabled": false,
"vars": {
"paths": [
"/var/log/elasticsearch/*_audit.json"
]
}
},
"elasticsearch.deprecation": {
"enabled": false,
"vars": {
"paths": [
"/var/log/elasticsearch/*_deprecation.json"
]
}
},
"elasticsearch.gc": {
"enabled": false,
"vars": {
"paths": [
"/var/log/elasticsearch/gc.log.[0-9]*",
"/var/log/elasticsearch/gc.log"
]
}
},
"elasticsearch.server": {
"enabled": true,
"vars": {
"paths": [
"/opt/so/log/elasticsearch/*.log"
]
}
},
"elasticsearch.slowlog": {
"enabled": false,
"vars": {
"paths": [
"/var/log/elasticsearch/*_index_search_slowlog.json",
"/var/log/elasticsearch/*_index_indexing_slowlog.json"
]
}
}
}
},
"elasticsearch-elasticsearch/metrics": {
"enabled": false,
"vars": {
"hosts": [
"http://localhost:9200"
],
"scope": "node"
},
"streams": {
"elasticsearch.stack_monitoring.ccr": {
"enabled": false
},
"elasticsearch.stack_monitoring.cluster_stats": {
"enabled": false
},
"elasticsearch.stack_monitoring.enrich": {
"enabled": false
},
"elasticsearch.stack_monitoring.index": {
"enabled": false
},
"elasticsearch.stack_monitoring.index_recovery": {
"enabled": false,
"vars": {
"active.only": true
}
},
"elasticsearch.stack_monitoring.index_summary": {
"enabled": false
},
"elasticsearch.stack_monitoring.ml_job": {
"enabled": false
},
"elasticsearch.stack_monitoring.node": {
"enabled": false
},
"elasticsearch.stack_monitoring.node_stats": {
"enabled": false
},
"elasticsearch.stack_monitoring.pending_tasks": {
"enabled": false
},
"elasticsearch.stack_monitoring.shard": {
"enabled": false
}
}
}
}
}
@@ -0,0 +1,29 @@
{
"package": {
"name": "log",
"version": ""
},
"name": "idh-logs",
"namespace": "so",
"description": "IDH integration",
"policy_id": "so-grid-nodes",
"inputs": {
"logs-logfile": {
"enabled": true,
"streams": {
"log.log": {
"enabled": true,
"vars": {
"paths": [
"/nsm/idh/opencanary.log"
],
"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",
"custom": "pipeline: common"
}
}
}
}
}
}
@@ -0,0 +1,29 @@
{
"package": {
"name": "log",
"version": ""
},
"name": "import-evtx-logs",
"namespace": "so",
"description": "Import Windows EVTX logs",
"policy_id": "so-grid-nodes",
"inputs": {
"logs-logfile": {
"enabled": true,
"streams": {
"log.log": {
"enabled": true,
"vars": {
"paths": [
"/nsm/import/*/evtx/data.json"
],
"data_stream.dataset": "import",
"tags": [],
"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- add_fields:\n target: event\n fields:\n module: windows_eventlog\n imported: true",
"custom": "pipeline: import.wel"
}
}
}
}
}
}
@@ -0,0 +1,29 @@
{
"package": {
"name": "log",
"version": ""
},
"name": "import-suricata-logs",
"namespace": "so",
"description": "Import Suricata logs",
"policy_id": "so-grid-nodes",
"inputs": {
"logs-logfile": {
"enabled": true,
"streams": {
"log.log": {
"enabled": true,
"vars": {
"paths": [
"/nsm/import/*/suricata/eve*.json"
],
"data_stream.dataset": "import",
"tags": [],
"processors": "- add_fields:\n target: event\n fields:\n category: network\n module: suricata\n imported: true\n- dissect:\n tokenizer: \"/nsm/import/%{import.id}/suricata/%{import.file}\"\n field: \"log.file.path\"\n target_prefix: \"\"",
"custom": "pipeline: suricata.common"
}
}
}
}
}
}
@@ -0,0 +1,29 @@
{
"package": {
"name": "log",
"version": ""
},
"name": "kratos-logs",
"namespace": "so",
"description": "Kratos logs",
"policy_id": "so-grid-nodes",
"inputs": {
"logs-logfile": {
"enabled": true,
"streams": {
"log.log": {
"enabled": true,
"vars": {
"paths": [
"/opt/so/log/kratos/kratos.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"
}
}
}
}
}
}
@@ -0,0 +1,20 @@
{
"package": {
"name": "osquery_manager",
"version": ""
},
"name": "osquery-grid-nodes",
"namespace": "default",
"policy_id": "so-grid-nodes",
"inputs": {
"osquery_manager-osquery": {
"enabled": true,
"streams": {
"osquery_manager.result": {
"enabled": true,
"vars": {}
}
}
}
}
}
@@ -0,0 +1,76 @@
{
"package": {
"name": "redis",
"version": ""
},
"name": "redis-logs",
"namespace": "default",
"description": "Redis logs",
"policy_id": "so-grid-nodes",
"inputs": {
"redis-logfile": {
"enabled": true,
"streams": {
"redis.log": {
"enabled": true,
"vars": {
"paths": [
"/opt/so/log/redis/redis.log"
],
"tags": [
"redis-log"
],
"preserve_original_event": false
}
}
}
},
"redis-redis": {
"enabled": false,
"streams": {
"redis.slowlog": {
"enabled": false,
"vars": {
"hosts": [
"127.0.0.1:6379"
],
"password": ""
}
}
}
},
"redis-redis/metrics": {
"enabled": false,
"vars": {
"hosts": [
"127.0.0.1:6379"
],
"idle_timeout": "20s",
"maxconn": 10,
"network": "tcp",
"password": ""
},
"streams": {
"redis.info": {
"enabled": false,
"vars": {
"period": "10s"
}
},
"redis.key": {
"enabled": false,
"vars": {
"key.patterns": "- limit: 20\n pattern: *\n",
"period": "10s"
}
},
"redis.keyspace": {
"enabled": false,
"vars": {
"period": "10s"
}
}
}
}
}
}
@@ -0,0 +1,29 @@
{
"package": {
"name": "log",
"version": ""
},
"name": "soc-auth-sync-logs",
"namespace": "so",
"description": "Security Onion - Elastic Auth Sync - Logs",
"policy_id": "so-grid-nodes",
"inputs": {
"logs-logfile": {
"enabled": true,
"streams": {
"log.log": {
"enabled": true,
"vars": {
"paths": [
"/opt/so/log/soc/sync.log"
],
"data_stream.dataset": "soc",
"tags": ["so-soc"],
"processors": "- dissect:\n tokenizer: \"%{event.action}\"\n field: \"message\"\n target_prefix: \"\"\n- add_fields:\n target: event\n fields:\n category: host\n module: soc\n dataset_temp: auth_sync",
"custom": "pipeline: common"
}
}
}
}
}
}

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