Compare commits

..

383 Commits

Author SHA1 Message Date
Mike Reeves 2a7365c7d7 Merge pull request #14612 from Security-Onion-Solutions/2.4/dev
2.4.150
2025-05-12 10:34:22 -04:00
Mike Reeves f7ca3e45ac Merge pull request #14611 from Security-Onion-Solutions/2.4.150
2.4.150
2025-05-12 10:24:27 -04:00
Mike Reeves 0172272e1b 2.4.150 2025-05-12 09:58:09 -04:00
Josh Brower 776f574427 Merge pull request #14609 from Security-Onion-Solutions/2.4/jbrower-patch-2
Cleanup
2025-05-09 10:42:05 -04:00
Josh Brower a0aafb7c51 Cleanup 2025-05-09 10:29:23 -04:00
Jason Ertel 09ec14acd8 Merge pull request #14608 from Security-Onion-Solutions/m0duspwnens-patch-1
fix file permissions for download
2025-05-09 09:29:33 -04:00
Josh Patterson 61f8b251f0 cp to mv 2025-05-09 09:25:46 -04:00
Josh Patterson 75dd04c398 fix file permissions for download 2025-05-09 09:21:30 -04:00
Josh Brower e2ef544bfc Merge pull request #14607 from Security-Onion-Solutions/2.4/jbpatch
Regen installers
2025-05-09 08:21:46 -04:00
Josh Brower daad99a0b6 Regen installers 2025-05-09 08:17:46 -04:00
Jason Ertel fdeee45d3f Merge pull request #14605 from Security-Onion-Solutions/jertel/wip
more analyzer dep updates
2025-05-08 15:57:08 -04:00
Jason Ertel 7fe9e2cbfd more analyzer dep updates 2025-05-08 15:53:16 -04:00
Jorge Reyes 74d557a5e0 Merge pull request #14603 from Security-Onion-Solutions/reyesj2/fix-14602
add null check
2025-05-08 08:34:53 -05:00
Doug Burks 82f9043a14 Merge pull request #14604 from Security-Onion-Solutions/dougburks-patch-1
Update defaults.yaml to replace remaining instances of identity_id with user.name
2025-05-08 09:14:03 -04:00
Doug Burks a8cb18bb2e Update defaults.yaml to replace remaining instances of identity_id with user.name 2025-05-08 09:09:26 -04:00
reyesj2 e1d31c895e add null check 2025-05-07 21:25:30 -05:00
Josh Brower e661c73583 Merge pull request #14601 from Security-Onion-Solutions/2.4/upgradeeafix
Only upgrade node agents for local stack version
2025-05-07 16:11:10 -04:00
Josh Brower 42ba778740 Only upgrade node agents for local stack version 2025-05-07 16:08:47 -04:00
Josh Brower 204d53e4a7 Merge pull request #14596 from Security-Onion-Solutions/2.4/kratosuser
Show user.name instead of id
2025-05-07 11:21:18 -04:00
Josh Brower d47a798645 Show user.name instead of id 2025-05-07 11:17:00 -04:00
Jason Ertel 68ea229a1c Merge pull request #14595 from Security-Onion-Solutions/jertel/wip
update default actions for subgrid support
2025-05-06 14:35:01 -04:00
Jason Ertel 1ecf2b29fc update default actions for subgrid support 2025-05-06 13:56:16 -04:00
Jorge Reyes 8a321e3f15 Merge pull request #14593 from Security-Onion-Solutions/reyesj2/feat-254
missing globals.is_manager swap
2025-05-06 09:01:58 -05:00
reyesj2 b4214f73f4 typo 2025-05-06 09:01:22 -05:00
reyesj2 b9da7eb35b missing globals.is_manager swap 2025-05-06 08:58:47 -05:00
Jorge Reyes d6139d0f19 Merge pull request #14580 from Security-Onion-Solutions/reyesj2/feat-254
collect es index sizes
2025-05-06 08:39:16 -05:00
Josh Patterson d2fe8da082 Merge pull request #14592 from Security-Onion-Solutions/fleetlocal
copy so_agent-installers to nsm for nginx
2025-05-05 13:47:22 -04:00
Josh Patterson 1931de2e52 copy so_agent-installers to nsm for nginx 2025-05-05 12:40:56 -04:00
Josh Patterson d68a14d789 Merge pull request #14590 from Security-Onion-Solutions/checkmasterstatus
check master status after highstate incase master service restart
2025-05-02 17:04:03 -04:00
Josh Patterson f988af52f6 check master status after highstate incase master service restart 2025-05-02 15:41:21 -04:00
reyesj2 fd02950864 use globals.is_manager 2025-05-02 13:36:28 -05:00
Mike Reeves 382c3328df Merge pull request #14588 from Security-Onion-Solutions/TOoSmOotH-patch-6
enable the delete on heavynodes
2025-05-02 08:55:55 -04:00
Mike Reeves 92d8985f3c enable the delete on heavynodes 2025-05-02 08:52:57 -04:00
Jason Ertel c2d9523e09 Merge pull request #14587 from Security-Onion-Solutions/jertel/wip
update deps
2025-05-02 08:26:28 -04:00
Jason Ertel c34914c8de update deps 2025-05-02 08:19:54 -04:00
Jason Ertel d020bf5504 Merge pull request #14584 from Security-Onion-Solutions/jertel/wip
update analyser deps for py 3.13
2025-05-01 15:59:04 -04:00
Jason Ertel 95d8e0f318 stop double workflow runs 2025-05-01 15:46:04 -04:00
Jason Ertel be4df48742 deps update 2025-05-01 15:44:34 -04:00
Jason Ertel ba4df4c8b6 dep updates 2025-05-01 15:36:20 -04:00
Jason Ertel 86eab6fda2 dep updates 2025-05-01 15:31:26 -04:00
Jason Ertel 5d2bed950e update analyser deps for py 3.13 2025-05-01 11:16:58 -04:00
reyesj2 044d230158 get 200 from es before collecting metrics 2025-04-30 13:05:36 -05:00
reyesj2 b918a5e256 old attempt 2025-04-29 16:05:55 -05:00
reyesj2 1ddc653a52 fix input error in agentstatus script 2025-04-29 13:40:39 -05:00
reyesj2 85f5f75c84 use salt location for es curl.config 2025-04-29 12:42:05 -05:00
reyesj2 3cb3281cd5 add metrics for es index sizes 2025-04-29 12:38:41 -05:00
Jason Ertel b858543a60 Merge pull request #14578 from Security-Onion-Solutions/jertel/wip
excluded harmless log error; suppress so-user grep output
2025-04-29 09:46:48 -04:00
Jason Ertel 5ecb483596 excluded harmless log error; suppress so-user grep output 2025-04-29 09:35:36 -04:00
Mike Reeves e9a4668c63 Merge pull request #14575 from Security-Onion-Solutions/TOoSmOotH-patch-5
Add url_base to the web certificate
2025-04-28 08:43:13 -04:00
Mike Reeves 5f45327372 Update enabled.sls 2025-04-28 08:39:26 -04:00
Mike Reeves ac8ac23522 Update enabled.sls 2025-04-28 08:36:43 -04:00
Jorge Reyes 46779513de Merge pull request #14569 from Security-Onion-Solutions/reyesj2/fix-225
fix storage metrics on stig installs
2025-04-23 15:38:14 -05:00
reyesj2 e27a0d8f7a Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into reyesj2/fix-225 2025-04-23 15:04:08 -05:00
reyesj2 9e4c456eb9 fix nsm influxdb alert 2025-04-23 15:02:57 -05:00
reyesj2 400739736d add monitored mounts, ignores docker overlays 2025-04-23 15:02:23 -05:00
reyesj2 196e0c1486 change root bind so existing references to 'r[\"path\"] == \"/\")' work as expected 2025-04-23 15:01:48 -05:00
reyesj2 76d63bb2ad remove unused HOST_PROC env 2025-04-23 15:00:21 -05:00
Jorge Reyes 69c904548c Merge pull request #14561 from Security-Onion-Solutions/reyesj2/fix-14516
Disable auto-upgrading non-default integrations
2025-04-23 13:59:46 -05:00
Josh Patterson 272410ecae Merge pull request #14568 from Security-Onion-Solutions/fixem
Fixem
2025-04-23 13:28:29 -04:00
Josh Patterson 19514a969b use file.directory 2025-04-23 08:41:53 -04:00
Josh Patterson 77f88371b8 manage default and local in separate states 2025-04-23 08:30:37 -04:00
reyesj2 559190aee3 upgrade integrations if they aren't in an agent policy 2025-04-22 09:38:22 -05:00
reyesj2 8c4cf0ba08 keep hard failure 2025-04-22 07:29:12 -05:00
reyesj2 e17fea849a continue loop after encountering error with first 2025-04-21 20:32:42 -05:00
Jorge Reyes b2c09d6fd9 Merge pull request #14560 from Security-Onion-Solutions/reyesj2-patch-2
make homedirs
2025-04-21 16:39:26 -05:00
reyesj2 30c4acb828 group 2025-04-21 16:38:16 -05:00
reyesj2 4ec185a9c7 make logstash and kratos homedirs 2025-04-21 16:26:20 -05:00
reyesj2 166e4e0ebc make bool 2025-04-21 15:51:36 -05:00
reyesj2 4b7478654f run optional integrations script so packages get installed. Hold updates unless auto_update_integrations is set 2025-04-21 14:29:37 -05:00
Jason Ertel 5bd84c4e30 Merge pull request #14558 from Security-Onion-Solutions/jertel/wip
researching install failures
2025-04-21 14:34:30 -04:00
Jason Ertel f5a8e917a4 researching install failures 2025-04-21 14:32:33 -04:00
reyesj2 4e6c707067 Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into reyesj2/fix-14516 2025-04-21 10:48:25 -05:00
reyesj2 c89adce3a1 default disable automatic upgrades for optional integration packages & policies 2025-04-21 10:48:18 -05:00
Mike Reeves af1bee4c68 Merge pull request #14556 from Security-Onion-Solutions/TOoSmOotH-patch-4
Disable Elasticsearch delete delete
2025-04-21 08:57:13 -04:00
Mike Reeves e3c8d22cac Update enabled.sls 2025-04-18 16:43:17 -04:00
Josh Brower 3f13f8deae Merge pull request #14543 from Security-Onion-Solutions/2.4/kratos_identity
Support Kratos user.name lookup
2025-04-17 16:13:58 -04:00
Jason Ertel 13d96ae5af Merge pull request #14551 from Security-Onion-Solutions/jertel/wip
additional grid support
2025-04-17 12:54:28 -04:00
Jason Ertel 3b447b343f fix typo 2025-04-17 11:51:45 -04:00
Jason Ertel d0375d3c7e fix typo 2025-04-17 11:51:21 -04:00
Jason Ertel b607689993 improve regex 2025-04-17 11:47:52 -04:00
Jason Ertel 8f1e528f1c improve regex 2025-04-17 11:09:39 -04:00
Jason Ertel 2f8d8d2d96 Merge branch '2.4/dev' into jertel/wip 2025-04-16 15:55:34 -04:00
Jason Ertel 366e39950a subord annotations; ensure node reboots occur in background 2025-04-16 15:55:16 -04:00
Josh Brower 5fd7bf311d Add fallback 2025-04-15 13:57:55 -04:00
Josh Brower 152fdaa7bb Support Kratos user.name lookup 2025-04-15 11:40:43 -04:00
Jorge Reyes 7f5cde9a1c Merge pull request #14540 from Security-Onion-Solutions/reyesj2/fix-14417
FIX: Add log.origin.file.line to base templates
2025-04-14 15:46:54 -05:00
reyesj2 58df566c79 add mapping for metadata.kafka.timestamp 2025-04-14 14:30:40 -05:00
reyesj2 395b81ffc6 FIX: Add log.origin.file.line to base templates #14417 2025-04-14 14:30:00 -05:00
Jorge Reyes e3d5829b89 Merge pull request #14539 from Security-Onion-Solutions/reyesj2-patch-1
fix kafka delayed initial connection with remote clients on multi-broker deployments
2025-04-14 13:06:20 -05:00
reyesj2 df31c349b0 update annotations 2025-04-14 12:32:31 -05:00
reyesj2 759d5f76cd fix kafka external access slow to establish initial connection 2025-04-14 12:32:22 -05:00
Josh Brower 240484deea Merge pull request #14537 from Security-Onion-Solutions/2.4/idstoolsfix
Run so-rule-update when it changes
2025-04-14 11:20:32 -04:00
Josh Brower ceabb673e0 Refactor for so-rule-update 2025-04-14 11:08:35 -04:00
Jorge Reyes f1070992a8 Merge pull request #14538 from Security-Onion-Solutions/reyesj2-patch-5 2025-04-14 08:41:35 -05:00
reyesj2 c0f9c344bb set logstash log rollover when log size exceeds 1G
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-04-14 08:13:27 -05:00
Josh Brower 00029e6f83 Run so-rule-update when it changes 2025-04-14 08:04:46 -04:00
reyesj2 9459bf8a27 allow larger kafka log files before forcing rollover 2025-04-11 14:41:32 -05:00
Josh Patterson 96e99fc442 Merge pull request #14535 from Security-Onion-Solutions/mineimp
ensure the highstate retry runs only once
2025-04-11 14:43:17 -04:00
Josh Patterson 4b14bf90a3 ensure the highstate retry runs only once 2025-04-11 14:28:18 -04:00
reyesj2 2cb002668f restrict count of kafka log files 2025-04-11 12:32:49 -05:00
Jorge Reyes c11a10638b Merge pull request #14528 from Security-Onion-Solutions/reyesj2-patch-4
external access to kafka topics via user/pass auth
2025-04-11 10:52:40 -05:00
reyesj2 6fe240de45 remove whitespaces then check for empty string as password 2025-04-11 10:42:45 -05:00
reyesj2 ecd7da540a skip user entries that don't have password configured 2025-04-11 10:21:46 -05:00
Josh Brower 2a43a6f37e Merge pull request #14532 from Security-Onion-Solutions/2.4/saltlogs
Fix comma
2025-04-11 07:51:35 -04:00
Josh Brower 4cdfb6e3eb Fix comma 2025-04-11 07:49:35 -04:00
Josh Brower 1edd13523c Merge pull request #14530 from Security-Onion-Solutions/fix/detections
Change timeout to 1s
2025-04-11 07:47:38 -04:00
Josh Brower 4217e23272 Merge pull request #14531 from Security-Onion-Solutions/2.4/saltlogs
Extract log level and drop INFO level
2025-04-11 07:47:25 -04:00
Josh Brower f94c81a041 Extract log level and drop INFO level 2025-04-11 07:45:12 -04:00
Josh Brower 4c3518385b Change timeout to 1s 2025-04-11 07:37:09 -04:00
reyesj2 1429226667 nest default value for external_access under kafka:config 2025-04-10 15:55:17 -05:00
reyesj2 5498673fc3 group events in 10s and remove deprecated output configuration option 2025-04-10 09:46:37 -05:00
reyesj2 96c56297ce external access via user/pass 2025-04-09 22:08:13 -05:00
Jason Ertel 270958ddfc Merge pull request #14502 from Security-Onion-Solutions/jertel/wip
support background actions via config UI
2025-04-04 11:27:36 -04:00
Jason Ertel b99bb0b004 support options field on actions 2025-04-04 11:19:30 -04:00
Jason Ertel 9c455badb9 support background actions via config UI 2025-04-03 13:08:44 -04:00
Josh Patterson 275489b8a3 Merge pull request #14499 from Security-Onion-Solutions/strelkaFix
Add missing scanners and fix forcedType for Strelka SOC UI annotations. Restart Strelka containers on config change.
2025-04-02 11:56:44 -04:00
Josh Patterson cd6deae0a7 add missing strelka backend scanners to SOC UI annotation file 2025-04-02 11:20:12 -04:00
Josh Patterson 0b8a7f5b67 fix strelka annotations. restart strelka containers on config change 2025-04-02 10:10:34 -04:00
Mike Reeves 3c342bb90d Merge pull request #14486 from Security-Onion-Solutions/TOoSmOotH-patch-3
Update soup
2025-04-01 09:53:32 -04:00
Jason Ertel ba10228fef Update soup 2025-04-01 09:42:10 -04:00
Mike Reeves 71f146d1d9 Update soup 2025-04-01 09:36:22 -04:00
Mike Reeves 72fd25dcaf Merge pull request #14482 from Security-Onion-Solutions/TOoSmOotH-patch-2
Update 2-4.yml
2025-03-31 12:03:49 -04:00
Mike Reeves eef4b82afb Update 2-4.yml 2025-03-31 11:46:03 -04:00
Mike Reeves 1d4d442554 Merge pull request #14481 from Security-Onion-Solutions/patchmerge
Patchmerge
2025-03-31 11:38:29 -04:00
Mike Reeves 02ad08035e Resolve Conflicts 2025-03-31 11:36:55 -04:00
Mike Reeves 335d8851e6 Resolve Conflicts 2025-03-31 11:32:35 -04:00
Mike Reeves e4d2513609 Merge pull request #14479 from Security-Onion-Solutions/patch/2.4.141
2.4.141
2025-03-31 11:21:30 -04:00
Mike Reeves 22fae2e98d Merge pull request #14478 from Security-Onion-Solutions/2.4.141
2.4.141
2025-03-31 10:38:30 -04:00
Mike Reeves 3850558be3 2.4.141 2025-03-31 10:37:04 -04:00
Josh Patterson 5b785d3ef8 Merge pull request #14477 from Security-Onion-Solutions/issue/14431
heavy node exclude so-import-pcap and so-pcap-import
2025-03-31 09:49:09 -04:00
Josh Patterson 8b874e46d0 heavy node exclude so-import-pcap and so-pcap-import 2025-03-31 09:09:15 -04:00
Josh Patterson 3e10c95b7b Merge pull request #14463 from Security-Onion-Solutions/mineimp
break out manager from non manager in top
2025-03-27 14:04:19 -04:00
Josh Patterson 1d058729e5 break out manager from non manager 2025-03-27 13:27:34 -04:00
Josh Patterson 056a29ea89 Merge pull request #14457 from Security-Onion-Solutions/mineimp
prevent manager node type highstate failure from missing network.ip_addrs in mine
2025-03-26 15:12:23 -04:00
Josh Patterson 667e66bbef rename mine update and highstate state 2025-03-26 13:56:49 -04:00
Josh Patterson 595ff8dce2 Merge remote-tracking branch 'origin/2.4/dev' into mineimp 2025-03-26 13:09:36 -04:00
Jason Ertel 99aa383e01 soup and version updates 2025-03-26 12:11:53 -04:00
Josh Patterson 5f116b3e43 Merge pull request #14453 from Security-Onion-Solutions/x509v2_fix
patch x509_v2 state salt issue 66929
2025-03-26 11:41:50 -04:00
Josh Patterson bb8f0605e1 patch x509_v2 state salt issue 66929 2025-03-26 10:50:04 -04:00
Josh Patterson 5836bc5bd1 remove require since maybe some failure from mine.update 2025-03-25 21:58:42 -04:00
Josh Patterson 55c815cae8 simplify highstate rerun when node_data pillar empty 2025-03-25 19:44:38 -04:00
Josh Patterson 79388af645 only managers need node_ips 2025-03-25 10:17:43 -04:00
Josh Patterson d7e831fbeb add mine_update reactor config for master 2025-03-24 20:45:35 -04:00
Josh Patterson 8f40b66e3b update mine instead of failing highstate if no node_data 2025-03-24 19:49:24 -04:00
Josh Patterson 0fe3038802 Merge pull request #14444 from Security-Onion-Solutions/minionService
salt-minion service wait for ip on mainint
2025-03-24 16:27:32 -04:00
Josh Patterson cd9b04e1bb Merge pull request #14443 from Security-Onion-Solutions/soup150
soup for 2.4.150
2025-03-24 15:55:28 -04:00
Josh Patterson 0fbb6afee1 soup for 2.4.150 2025-03-24 15:51:22 -04:00
Josh Patterson 402e26fc19 Merge remote-tracking branch 'origin/2.4/dev' into minionService 2025-03-24 15:42:07 -04:00
Mike Reeves b6e10b1de7 Merge pull request #14440 from Security-Onion-Solutions/TOoSmOotH-patch-1
Update VERSION
2025-03-24 15:17:15 -04:00
Mike Reeves 54f3a8cb91 Update 2-4.yml 2025-03-24 15:16:43 -04:00
Mike Reeves 1f98cef816 Update VERSION 2025-03-24 15:15:57 -04:00
Mike Reeves 7a71a5369c Merge pull request #14439 from Security-Onion-Solutions/2.4/dev
2.4.140
2025-03-24 15:08:43 -04:00
Mike Reeves 964b631d58 Merge pull request #14438 from Security-Onion-Solutions/2.4.140
2.4.140
2025-03-24 13:43:49 -04:00
Mike Reeves dcb667b32d 2.4.140 2025-03-24 13:35:39 -04:00
Josh Patterson e61d37893a start salt-minion service when mainint has ip 2025-03-24 12:33:10 -04:00
Josh Patterson 60bd960251 Merge pull request #14434 from Security-Onion-Solutions/backto3006.9
roll back to 3006.9 but leave prep in place for future upgrades
2025-03-23 12:09:52 -04:00
Josh Patterson b974c6e8df roll back to 3006.9 but leave prep in place for future upgrades 2025-03-23 12:07:39 -04:00
Josh Patterson 7484495021 Merge pull request #14433 from Security-Onion-Solutions/soupupdatemine140
update mine
2025-03-22 12:59:22 -04:00
Josh Patterson 0952b7528f update mine
update mine after salt-master restart and before highstate
2025-03-22 12:57:13 -04:00
Josh Brower 14c95a5fe0 Merge pull request #14432 from Security-Onion-Solutions/jbfix
Remove pcapoutdir
2025-03-22 07:13:44 -04:00
Josh Brower d0bb86a24f Remove pcapoutdir 2025-03-22 07:12:19 -04:00
Jorge Reyes 749825af19 Merge pull request #14429 from Security-Onion-Solutions/reyesj2-patch-3
FIX: elastic fleet package list get more than 300 results per query
2025-03-21 15:07:15 -05:00
reyesj2 844283cc38 get more results 2025-03-21 14:55:52 -05:00
Jason Ertel ae0bf1ccdf Merge pull request #14428 from Security-Onion-Solutions/jertel/wip
ignore false positives
2025-03-21 14:56:56 -04:00
Jason Ertel a0637fa25d ignore false positives 2025-03-21 14:54:52 -04:00
Josh Patterson d2a21c1e4c Merge pull request #14427 from Security-Onion-Solutions/pcapperms
move pcapoutdir
2025-03-21 14:50:33 -04:00
Josh Patterson ed23340157 move pcapoutdir 2025-03-21 14:48:31 -04:00
Jason Ertel ef6dbf9e46 Merge pull request #14425 from Security-Onion-Solutions/jertel/wip
support pcap imports for sensors in distributed grids
2025-03-21 13:17:18 -04:00
Jason Ertel 1236c8c1f2 support pcap imports for sensors in distributed grids 2025-03-21 10:34:55 -04:00
Josh Patterson 51625e19ad Merge pull request #14423 from Security-Onion-Solutions/salt3006.10
work with quotes in version
2025-03-21 08:25:55 -04:00
Josh Patterson 760ff1e45b work with quotes in version 2025-03-21 08:20:04 -04:00
Josh Patterson 5b3fa17f81 Merge pull request #14422 from Security-Onion-Solutions/salt3006.10
fix SALTVERSION grep to work with or without quote
2025-03-20 17:01:17 -04:00
Josh Patterson 053eadbb39 fix SALTVERSION grep to work with or without quote 2025-03-20 16:58:16 -04:00
Josh Patterson 540b0de00c Merge pull request #14420 from Security-Onion-Solutions/salt3006.10
Salt3006.10
2025-03-20 15:50:10 -04:00
Josh Patterson c30cbf9af0 remove salt-cloud 2025-03-20 15:44:56 -04:00
Josh Patterson 41c0a91d77 ensure versions are strings 2025-03-20 15:42:16 -04:00
Josh Patterson 6e1e5a2ee6 Merge pull request #14419 from Security-Onion-Solutions/salt3006.10
make string to not drop 0
2025-03-20 15:31:05 -04:00
Josh Patterson aa8fd647b6 make string to not drop 0 2025-03-20 15:27:52 -04:00
Mike Reeves 8feae6ba11 Merge pull request #14416 from Security-Onion-Solutions/salt3006.10
add bootstrap-salt to preloaded soup_scripts
2025-03-20 13:48:46 -04:00
Josh Patterson 028297cef8 add bootstrap-salt to preloaded soup_scripts 2025-03-20 13:46:30 -04:00
Mike Reeves 19755d4077 Merge pull request #14413 from Security-Onion-Solutions/bootstrap-salt-2025.02.24
Update bootstrap-salt.sh
2025-03-20 13:38:34 -04:00
Mike Reeves cd655e6adb Merge pull request #14415 from Security-Onion-Solutions/salt3006.10
upgrade salt 3006.10
2025-03-20 13:37:26 -04:00
Josh Patterson 2be143d902 upgrade salt 3006.10 2025-03-20 13:22:28 -04:00
Josh Patterson 1b98f9f313 Update bootstrap-salt.sh 2025-03-20 10:03:26 -04:00
Jason Ertel 762ccdd222 Merge pull request #14403 from Security-Onion-Solutions/jertel/wip
add no-op soup functions for 2.4.140
2025-03-19 07:24:14 -04:00
Jason Ertel 277504fff6 Merge pull request #14402 from Security-Onion-Solutions/reyesj2-patch-3
ldap_search include observer.name
2025-03-18 10:27:16 -04:00
Jason Ertel 3f3e7ea1e8 add no-op soup functions for 2.4.140 2025-03-18 10:12:23 -04:00
reyesj2 4d7fdd390c ldap_search include observer.name 2025-03-18 08:52:43 -05:00
Jason Ertel 05c93e3796 Merge pull request #14394 from Security-Onion-Solutions/jertel/wip
use specified role on new user add
2025-03-17 17:10:45 -04:00
Jorge Reyes fe21a19c5c Merge pull request #14396 from Security-Onion-Solutions/reyesj2-patch-3
add zeek file_extraction forcedType for instances where a single line…
2025-03-17 14:40:40 -05:00
reyesj2 af6245f19d add zeek file_extraction forcedType for instances where a single line is speciifed 2025-03-17 14:30:17 -05:00
Jason Ertel ad8f3dfde7 use specified role on new user add 2025-03-17 14:55:40 -04:00
Jorge Reyes d23b6958c1 Merge pull request #14379 from Security-Onion-Solutions/reyesj2-patch-3
update event pipeline annotation
2025-03-12 13:22:40 -05:00
reyesj2 60b1535018 update event pipeline annotation
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-03-12 13:15:57 -05:00
Mike Reeves 758c6728f9 Merge pull request #14375 from Security-Onion-Solutions/TOoSmOotH-patch-1
Update VERSION
2025-03-11 13:27:21 -04:00
Mike Reeves 5234b21743 Update 2-4.yml 2025-03-11 13:25:43 -04:00
Mike Reeves 7d73f6cfd7 Update VERSION 2025-03-11 13:25:00 -04:00
Mike Reeves fb54c2f533 Merge pull request #14373 from Security-Onion-Solutions/2.4/dev
2.4.130
2025-03-11 13:14:26 -04:00
Mike Reeves e20364cdf5 Merge pull request #14372 from Security-Onion-Solutions/2.4.130
2.4.130
2025-03-11 12:10:39 -04:00
Mike Reeves a9484b4ca9 2.4.130 2025-03-11 12:01:01 -04:00
Josh Brower 6081c46d7f Merge pull request #14362 from Security-Onion-Solutions/reyesj2-patch-2
fix osquery action_data mapping conflict
2025-03-08 10:18:12 -05:00
reyesj2 4dd72ad15c fix osquery action_data mapping conflict
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-03-07 17:05:13 -06:00
Jason Ertel 4893eda4fe Merge pull request #14359 from Security-Onion-Solutions/jertel/wip
Improve label
2025-03-07 08:44:12 -05:00
Jason Ertel 2af05b9a23 switch back to colon for better clarity 2025-03-07 08:24:19 -05:00
Jason Ertel 0bb76aecb3 Merge branch '2.4/dev' into jertel/wip 2025-03-07 08:23:18 -05:00
Mike Reeves 53ab7a223d Merge pull request #14358 from Security-Onion-Solutions/dougburks-patch-1 2025-03-07 07:21:14 -05:00
Doug Burks 3037dc7c38 Update soc_soc.yaml to fix previous change 2025-03-07 07:13:27 -05:00
Mike Reeves bde8a965f3 Merge pull request #14357 from Security-Onion-Solutions/TOoSmOotH-patch-3
Update soc_soc.yaml
2025-03-06 21:12:24 -05:00
Mike Reeves 14e95f4898 Update soc_soc.yaml 2025-03-06 21:01:45 -05:00
Mike Reeves bad0031829 Update soc_soc.yaml 2025-03-06 20:58:23 -05:00
Doug Burks 630140b979 Merge pull request #14354 from Security-Onion-Solutions/dougburks-patch-1
Update soc_elasticsearch.yaml to include note about ILM rollover
2025-03-06 12:11:58 -05:00
Doug Burks cce94d96d1 Update soc_elasticsearch.yaml to include note about ILM rollover 2025-03-06 11:14:48 -05:00
Mike Reeves bcea02b059 Merge pull request #14301 from Security-Onion-Solutions/truefalse
Update annotations for new features
2025-03-05 16:23:00 -05:00
Mike Reeves 03ebc2d86e Add Actions 2025-03-05 15:58:10 -05:00
Mike Reeves 3021ed5d36 Add Actions 2025-03-05 15:56:26 -05:00
Jorge Reyes e59ebc89f8 Merge pull request #14346 from Security-Onion-Solutions/reyesj2-patch-2
bump version
2025-03-05 14:40:36 -06:00
reyesj2 6a5377ceac bump version 2025-03-05 14:39:01 -06:00
Jorge Reyes 515cb3aea8 Merge pull request #14345 from Security-Onion-Solutions/reyesj2-patch-2
osquery templates
2025-03-05 14:28:08 -06:00
Mike Reeves b51aa56e86 Some things I thought were bools are not bools 2025-03-05 15:15:26 -05:00
reyesj2 d2884ef00b typo 2025-03-05 14:02:45 -06:00
reyesj2 0f16b00563 osquery templates 2025-03-05 13:57:47 -06:00
Mike Reeves b01fb733a9 Some things I thought were bools are not bools 2025-03-05 14:56:26 -05:00
Mike Reeves 945a467ec8 Some things I thought were bools are not bools 2025-03-05 14:54:17 -05:00
Mike Reeves 67f9cd39db Some things I thought were bools are not bools 2025-03-05 14:53:29 -05:00
Mike Reeves 72ffef9433 Some things I thought were bools are not bools 2025-03-05 14:52:54 -05:00
Mike Reeves cf536469e6 Some things I thought were bools are not bools 2025-03-05 14:51:56 -05:00
Mike Reeves c7c6d3e556 Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into truefalse 2025-03-05 13:21:21 -05:00
coreyogburn 3a465c2e69 Merge pull request #14343 from Security-Onion-Solutions/cogburn/detections-group-items
Add Client Parameter
2025-03-05 09:57:31 -07:00
Corey Ogburn 21a64b6c1d Add Client Parameter
Add groupItemsPerPage so detections groupby tables have proper default value for page size.
2025-03-05 09:43:21 -07:00
Doug Burks 2f6c7d2643 Merge pull request #14340 from Security-Onion-Solutions/dougburks-patch-1
FEATURE: Add sankey chart to Elastic Agent API dashboard to show relationship between process.name and process.Ext.api.name #14339
2025-03-05 08:02:39 -05:00
Doug Burks c6c67f4d06 FEATURE: Add sankey chart to Elastic Agent API dashboard to show relationship between process.name and process.Ext.api.name #14339 2025-03-05 06:31:16 -05:00
Jorge Reyes f35930317b Merge pull request #14336 from Security-Onion-Solutions/reyesj2-patch-2
ES 8.17.3
2025-03-04 15:36:59 -06:00
reyesj2 11dc004811 ES 8.17.3 2025-03-04 14:24:38 -06:00
Jorge Reyes 966503d875 Merge pull request #14331 from Security-Onion-Solutions/reyesj2-patch-2
osquery v1.15.0 index templates updates
2025-03-04 13:17:28 -06:00
reyesj2 124bf266b5 osquery v1.15.0 index templates updates
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-03-04 12:27:04 -06:00
Jason Ertel 75e3bba9f5 reduce stdout 2025-03-04 11:35:22 -05:00
Jason Ertel 0ff4fc101b Merge pull request #14329 from Security-Onion-Solutions/jertel/wip
reduce stdout verbosity
2025-03-04 11:23:14 -05:00
Jason Ertel 85450693a2 Merge branch '2.4/dev' into jertel/wip 2025-03-04 10:55:29 -05:00
Jason Ertel 0047246cf2 reduce stdout verbosity 2025-03-04 10:55:12 -05:00
Jorge Reyes 95d3a2d834 Merge pull request #14328 from Security-Onion-Solutions/reyesj2-patch-2
install bc package
2025-03-04 09:03:02 -06:00
reyesj2 e1c8bee71a install bc package 2025-03-04 08:58:41 -06:00
Doug Burks 1c96449ad9 Merge pull request #14327 from Security-Onion-Solutions/dougburks-patch-1
FIX: Elastic Agent Security Events dashboard should reference user.effective.name #14325
2025-03-04 07:10:41 -05:00
Doug Burks 44535cba8c FIX: Elastic Agent Security Events dashboard should reference user.effective.name #14325 2025-03-04 06:46:56 -05:00
Jorge Reyes 3f4a5a1b28 Merge pull request #14320 from Security-Onion-Solutions/reyesj2/zeekparslin
zeek traceroute & ntp
2025-03-03 10:56:15 -06:00
reyesj2 4bd83f8983 zeek traceroute & ntp
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-03-03 10:48:06 -06:00
Doug Burks 206acbe618 Merge pull request #14312 from Security-Onion-Solutions/dougburks-patch-1
FIX: SOC Actions for process.entity_id value must be quoted #14311
2025-03-03 07:09:45 -05:00
Doug Burks e53f4fd1f1 Update defaults.yaml to quote the process.entity_id value 2025-03-02 05:54:30 -05:00
Jorge Reyes 573a2a5595 Merge pull request #14307 from Security-Onion-Solutions/reyesj2/esmngdint 2025-02-27 17:13:26 -06:00
reyesj2 9bc64bf453 managed int multiline input 2025-02-27 16:48:07 -06:00
Mike Reeves 2ffaf2f601 Add hunt queries 2025-02-27 12:42:03 -05:00
Mike Reeves 4696152f78 Add hunt queries 2025-02-27 12:31:51 -05:00
Mike Reeves a0944f8359 Add hunt queries 2025-02-27 12:17:57 -05:00
Mike Reeves 1fdbe987b8 Add hunt queries 2025-02-27 12:15:37 -05:00
Mike Reeves 40303c2d78 Add hunt queries 2025-02-27 12:10:59 -05:00
Mike Reeves 4b5048bd80 Add hunt queries 2025-02-27 11:57:57 -05:00
Mike Reeves 9d31050907 roll back SOC changes 2025-02-27 11:32:59 -05:00
Mike Reeves e930d1dec6 roll back SOC changes 2025-02-27 11:28:06 -05:00
Mike Reeves 1d3bae4a7a Add additional entries for actions 2025-02-27 11:15:51 -05:00
Mike Reeves d950e4ebb3 Add additional entries for actions 2025-02-27 11:11:56 -05:00
Mike Reeves 3ba82bd5a4 Fix actions 2025-02-27 11:04:47 -05:00
Jason Ertel bc969c1ca2 Merge pull request #14302 from Security-Onion-Solutions/jertel/wip
more false positives
2025-02-27 08:00:49 -05:00
Jason Ertel 772aa7379f more false positives 2025-02-27 07:55:22 -05:00
Mike Reeves 6c00cdd726 Fix healthlink 2025-02-26 16:15:00 -05:00
Mike Reeves 8bc500e4da soc 2025-02-26 14:16:42 -05:00
Mike Reeves 25217c3262 soc 2025-02-26 14:14:25 -05:00
Mike Reeves 0c2797ecdc soc 2025-02-26 13:49:30 -05:00
Mike Reeves 101f6e744a sensoroni 2025-02-26 13:44:35 -05:00
Mike Reeves c5e0b8a42e sensoroni 2025-02-26 13:40:24 -05:00
Mike Reeves 6d7e0a7a72 sensoroni 2025-02-26 13:39:18 -05:00
Mike Reeves 2bc2e86b01 actions 2025-02-26 13:36:16 -05:00
Mike Reeves 6fec217068 actions 2025-02-26 13:34:32 -05:00
Mike Reeves ee1af39c55 elastalert 2025-02-26 13:17:08 -05:00
Mike Reeves a5ae481ea4 globals 2025-02-26 13:10:57 -05:00
Jorge Reyes f8d19301be Merge pull request #14300 from Security-Onion-Solutions/betrfix
default capinfos to use start/end time arg
2025-02-26 08:32:46 -06:00
reyesj2 80fed1e045 default capinfos to use start/end time arg 2025-02-25 21:47:56 -06:00
Jason Ertel a94d657251 Merge pull request #14296 from Security-Onion-Solutions/jertel/wip
annotation/config updates
2025-02-25 17:04:13 -05:00
Jason Ertel 9dafa062f8 annotation/config updates 2025-02-25 17:00:41 -05:00
Jorge Reyes c8a6aa42fb Merge pull request #14290 from Security-Onion-Solutions/reyesj2-patch-41
allow installing integrations that require an elastic license
2025-02-24 15:24:38 -06:00
reyesj2 17edc06987 allow installing integrations that require an elastic license 2025-02-24 14:45:43 -06:00
Jorge Reyes a60afdbaa5 Merge pull request #14288 from Security-Onion-Solutions/reyesj2-patch-41
missing metadata field
2025-02-24 10:31:42 -06:00
reyesj2 e2772e899e component template missing metadata field 2025-02-24 10:24:11 -06:00
Jorge Reyes 43f86e5e37 Merge pull request #14287 from Security-Onion-Solutions/reyesj2-patch-41
elasticsearch templates load
2025-02-24 09:11:58 -06:00
reyesj2 d7c06e5ff4 run elasticsearch state, right before completing soup to ensure templates for optional integrations are loaded 2025-02-24 09:02:56 -06:00
reyesj2 3f2b0973af manually create unused logs-soc@package for successful elasticsearch templates load 2025-02-24 08:59:59 -06:00
Josh Brower ac841077c2 Merge pull request #14281 from Security-Onion-Solutions/2.4/patch3
Remove old defend json
2025-02-23 15:03:05 -05:00
Josh Brower 6d0350793d Remove old defend json 2025-02-23 14:02:17 -05:00
Jason Ertel d74f9183a0 Merge pull request #14279 from Security-Onion-Solutions/jertel/wip
ensure override for nmcli exists in /etc
2025-02-21 17:13:56 -05:00
Jason Ertel 7155ccaf96 ensure override for nmcli exists in /etc 2025-02-21 17:10:39 -05:00
Jorge Reyes 64996db86b Merge pull request #14277 from Security-Onion-Solutions/reyesj2-patch-40
move removal of eaintegrations.txt to up_to_2.4.130
2025-02-21 14:07:31 -06:00
reyesj2 c1282e77a0 move removal of eaintegrations.txt to up_to_2.4.130 2025-02-21 14:02:22 -06:00
Josh Brower 79574b31b0 Merge pull request #14275 from Security-Onion-Solutions/2.4/patch
Dont upgrade integrations during pre-phase
2025-02-21 09:37:34 -05:00
Josh Brower 22f3865602 Dont upgrade integrations during pre-phase 2025-02-21 09:32:36 -05:00
Jason Ertel f51d255c98 Merge pull request #14274 from Security-Onion-Solutions/jertel/wip
Ignore more acceptable test error logs
2025-02-21 08:40:56 -05:00
Jason Ertel 66a2ec7e21 ES upgrade errors to ignore 2025-02-21 08:38:40 -05:00
Jorge Reyes fc12b1f09b Merge pull request #14272 from Security-Onion-Solutions/reyesj2-patch-1
ES 8.17.2 pipeline version updates
2025-02-20 17:32:20 -06:00
reyesj2 69b559fb26 ES 8.17.2 pipeline version updates 2025-02-20 17:11:28 -06:00
Jorge Reyes 637ed59567 Merge pull request #14271 from Security-Onion-Solutions/reyesj2-patch-1
add back settings previously defined when overwritting logs-elastic_a…
2025-02-20 15:26:12 -06:00
reyesj2 df350b5a56 ES 8.17.2 2025-02-20 14:20:09 -06:00
reyesj2 3b6344e7f0 add back settings previously defined when overwritting logs-elastic_agent@package and logs-endpoint.diagnostics.collection@package 2025-02-20 12:42:30 -06:00
Doug Burks cee9f66689 Merge pull request #14269 from Security-Onion-Solutions/dougburks-patch-1
Configure issue template chooser
2025-02-20 13:29:32 -05:00
Doug Burks 5dc9200ee7 Add files via upload 2025-02-20 13:19:22 -05:00
Doug Burks 2be5384980 Create config.yml 2025-02-20 13:19:08 -05:00
Doug Burks 25dfc182a9 Delete .github/ISSUE_TEMPLATE 2025-02-20 13:18:02 -05:00
Jorge Reyes 145648431f Merge pull request #14267 from Security-Onion-Solutions/reyesj2-patch-1
set metrics indices to 0 replicas
2025-02-20 10:13:29 -06:00
Doug Burks 14e7e411c0 Merge pull request #14268 from Security-Onion-Solutions/dougburks-patch-1
Create LICENSE
2025-02-20 11:13:12 -05:00
reyesj2 c9b41e2eb1 formatting
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-02-20 10:11:34 -06:00
Doug Burks 7c2118f2f6 Create LICENSE 2025-02-20 11:07:50 -05:00
reyesj2 499d473b9d set metrics indices to 0 replicas 2025-02-20 10:06:59 -06:00
Josh Brower 41147ae7f3 Merge pull request #14265 from Security-Onion-Solutions/2.4/elasticfix
Update Elastic Defend JSON
2025-02-19 16:22:28 -05:00
Josh Brower c6d72d31cb Update Elastic Defend JSON 2025-02-19 16:16:38 -05:00
Jorge Reyes bb101ef95e Merge pull request #14259 from Security-Onion-Solutions/reyesj2-patch-1
make sure optional integrations components list is non-empty
2025-02-19 10:50:37 -06:00
reyesj2 64f6a2d81e re-enable security (siem) in default kibana space 2025-02-19 10:38:37 -06:00
reyesj2 45c66b93d7 make sure only a non-empty file is loaded
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-02-19 09:23:48 -06:00
Jorge Reyes a3dba9b566 Merge pull request #14255 from Security-Onion-Solutions/foxtrot
ES 8.17.1
2025-02-18 14:58:46 -06:00
Jorge Reyes f991d8a10a Update .gitleaks.toml 2025-02-18 14:37:20 -06:00
Jorge Reyes 2b7ebf08cb Update VERSION 2025-02-18 13:18:08 -06:00
Jason Ertel 23ab8983f7 Revert "Support CLI changing of a user's password without disabling existing auth settings for that user"
This reverts commit b25b6f7bf2.
2025-02-18 12:41:41 -05:00
Jason Ertel b25b6f7bf2 Support CLI changing of a user's password without disabling existing auth settings for that user 2025-02-18 12:37:25 -05:00
Jason Ertel b8b77693e1 Merge pull request #14254 from Security-Onion-Solutions/jertel/wip
use consistent ciphers across listeners
2025-02-18 12:19:24 -05:00
Jason Ertel 19593cd771 use consistent ciphers across listeners 2025-02-18 12:17:50 -05:00
reyesj2 1be8de7acb must use null check 2025-02-18 11:16:57 -06:00
Jason Ertel 564d8c2868 Merge branch '2.4/dev' into jertel/wip 2025-02-18 11:50:21 -05:00
Doug Burks 8033cdbc89 Merge pull request #14253 from Security-Onion-Solutions/dougburks-patch-1
FIX: Add TLSv1.3 to nginx config #14252
2025-02-18 11:49:22 -05:00
Jason Ertel 7dd64380cc Enable TLSv1.3 and use consistent ciphers across listeners 2025-02-18 11:48:00 -05:00
Doug Burks 5c3e28535a FIX: Add TLSv1.3 to nginx config #14252 2025-02-18 11:46:45 -05:00
reyesj2 21ed1439e2 update udp integration policy 2025-02-18 10:40:18 -06:00
reyesj2 c1c72ddd9b update global@custom pipeline ignore null/empty string values 2025-02-18 10:39:54 -06:00
reyesj2 235a8e3934 update index templates for endpoint integration 2025-02-17 18:30:51 -06:00
reyesj2 3530bff320 always update package components state file to ensure index templates are created with any available integration components 2025-02-17 12:29:27 -06:00
reyesj2 12f0195f29 pfsense integration - keep suricata events 2025-02-17 12:28:23 -06:00
reyesj2 85dcfbf368 update kibana default space 2025-02-17 12:27:36 -06:00
reyesj2 8568c372f6 disable fleet apm 2025-02-17 12:21:31 -06:00
Jorge Reyes 810abba83e Merge pull request #14229 from Security-Onion-Solutions/reyesj2/rel
force es pipeline sync
2025-02-13 08:54:06 -06:00
reyesj2 03b76cbcf5 remove state files 2025-02-13 08:51:50 -06:00
reyesj2 c711ffe6c5 keep pipeline "managed" metadata 2025-02-13 08:44:56 -06:00
Jorge Reyes 8094bf9c7c Merge pull request #14225 from Security-Onion-Solutions/reyesj2/rel
update pfsense pipeline version. Remove unused component templates
2025-02-12 16:37:25 -06:00
reyesj2 09c7b31918 update pfsense pipeline version. Remove unused component templates 2025-02-12 16:33:56 -06:00
Jorge Reyes d1e98d0849 Merge pull request #14224 from Security-Onion-Solutions/reyesj2/rel
Revert ES 8.17.2 upgrade -> 8.17.1
2025-02-12 13:18:39 -06:00
reyesj2 40cb3a53ae Revert ES 8.17.2 upgrade -> 8.17.1
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-02-12 13:18:08 -06:00
Mike Reeves e9e7434c69 Merge pull request #14222 from Security-Onion-Solutions/TOoSmOotH-patch-2
Update 2-4.yml
2025-02-12 11:30:38 -05:00
Mike Reeves d2ac6ec10f Update 2-4.yml 2025-02-12 11:29:07 -05:00
Mike Reeves 4f19884c8d Merge pull request #14221 from Security-Onion-Solutions/TOoSmOotH-patch-1
Update VERSION
2025-02-12 11:28:11 -05:00
Mike Reeves 16c332ad2e Update VERSION 2025-02-12 11:27:43 -05:00
Jorge Reyes cdf8943f24 Merge pull request #14214 from Security-Onion-Solutions/reyesj2/rel
ES 8.17.2
2025-02-11 11:24:18 -06:00
reyesj2 fb0cd436d3 ES 8.17.2 TODO: Check import-evtx-logs.json for updated pipeline versions
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-02-11 11:23:04 -06:00
reyesj2 33f145a40b ensure network packet capture integration data has event.module:network_traffic 2025-02-10 13:16:39 -06:00
reyesj2 3b69ff9fc9 integration policy update 2025-02-10 13:16:25 -06:00
Jorge Reyes 8828a3049d Merge pull request #14155 from Security-Onion-Solutions/reyesj2/es-integ-tmp
add additional weird_integration
2025-01-27 16:36:17 -06:00
reyesj2 d74b69d84d add additional weird_integration 2025-01-27 16:34:33 -06:00
Jorge Reyes abcfe638c9 Merge pull request #14153 from Security-Onion-Solutions/reyesj2/es-integ-tmp
Reyesj2/es integ tmp
2025-01-27 14:07:32 -06:00
Joshua Brower 49ab0751c0 Remove uneeded import 2025-01-27 15:01:21 -05:00
Joshua Brower e994f3a220 Fix commits 2025-01-27 14:48:50 -05:00
reyesj2 38b0276458 remove reference to deleted file 2025-01-27 13:45:18 -06:00
reyesj2 a373d96c3c run managed_soc_annotations.sls from manager state 2025-01-27 13:45:03 -06:00
Josh Brower 97a3f130c8 Update Elastic 2025-01-23 15:32:39 -05:00
reyesj2 5b8f8fb62f add/remove es annotations/defaults automagically
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-23 12:47:22 -06:00
Josh Brower 9738ef382c Upgrade Elastic to 8.17.1 2025-01-23 08:12:02 -05:00
reyesj2 e0039a08ef fix forcedType typo 2025-01-22 13:57:26 -06:00
Jorge Reyes 09df4a5771 Merge pull request #14139 from Security-Onion-Solutions/reyesj2/es-integ-tmp
fixes merging local pillar /global overrides for generated index temp…
2025-01-22 13:12:53 -06:00
reyesj2 81ac1ebc08 fixes merging local pillar /global overrides for generated index templates 2025-01-22 13:12:09 -06:00
Jorge Reyes c2f5c2226f Merge pull request #14138 from Security-Onion-Solutions/reyesj2/es-integ-tmp
add back missing component for http_endpoint_x_generic & winlog_x_win…
2025-01-22 10:16:30 -06:00
reyesj2 d779f7ae7f add back missing component for http_endpoint_x_generic & winlog_x_winglog 2025-01-22 10:15:16 -06:00
Jorge Reyes d26c7e6f9b Merge pull request #14134 from Security-Onion-Solutions/reyesj2/es-integ-tmp
remove individual <integration>@custom mappings. Moved over to so-fle…
2025-01-21 11:00:18 -06:00
reyesj2 6331298eac remove individual <integration>@custom mappings. Moved over to so-fleet_integrations.ip_mappings-1 2025-01-21 10:49:54 -06:00
reyesj2 76abf37351 Merge remote-tracking branch 'origin/2.4/dev' into foxtrot 2025-01-21 09:03:04 -06:00
Jorge Reyes 942c1aa3a6 Merge pull request #14126 from Security-Onion-Solutions/reyesj2/es-integ-tmp
merge dev
2025-01-17 11:24:31 -06:00
reyesj2 d35ffef503 merge 2.4/dev
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-17 11:23:54 -06:00
Jorge Reyes b1d523a4e6 Merge pull request #14113 from Security-Onion-Solutions/reyesj2/es-integ-tmp
update fleet-optional-integrations-load
2025-01-14 15:26:33 -06:00
reyesj2 dab56f0882 update fleet-optional-integrations-load
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-14 15:24:59 -06:00
Jorge Reyes 06983948b0 Merge pull request #14078 from Security-Onion-Solutions/reyesj2/es-integ-tmp
run elasticsearch state to sync templates
2025-01-06 21:34:07 -06:00
reyesj2 a21535b0a2 run elasticsearch state to sync templates
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-06 21:33:07 -06:00
Jorge Reyes b431fb1e49 Merge pull request #14075 from Security-Onion-Solutions/reyesj2/es-integ-tmp
merge dev
2025-01-06 15:18:05 -06:00
reyesj2 b97619b8f9 Merge remote-tracking branch 'origin/2.4/dev' into reyesj2/es-integ-tmp 2025-01-06 14:44:35 -06:00
reyesj2 3d3f0460fa move addon integration script run to elasticfleet state
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-06 14:42:16 -06:00
Jorge Reyes 37d67ee9d0 Merge pull request #14073 from Security-Onion-Solutions/reyesj2/es-integ-tmp
update version to foxtrot
2025-01-06 11:23:27 -06:00
reyesj2 0d49dee46e update version to foxtrot
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-06 11:22:51 -06:00
reyesj2 9fe3f6042f Remove individual integrations ip mappings component template. Replaced with global mappings
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-06 10:44:22 -06:00
reyesj2 cdd4a1ff1f fixes addon integration map file
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-03 16:06:22 -06:00
reyesj2 ecf094f684 WIP: support all es fleet integrations
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-12-26 16:18:04 -06:00
reyesj2 b3436415dc merge 2.4/dev
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-12-18 14:13:25 -06:00
reyesj2 9bc20c26bb Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into reyesj2/es-integ-tmp 2024-12-06 14:29:25 -06:00
reyesj2 e3b7d82a8f remove all non-core integrations from elasticfleet:packages pillar 2024-12-03 08:56:56 -06:00
reyesj2 888145a2ed remove optional integrations from defaults.yaml & soc_elasticsearch.yaml 2024-12-03 08:55:43 -06:00
440 changed files with 3077 additions and 22290 deletions
+1 -1
View File
@@ -536,7 +536,7 @@ secretGroup = 4
[allowlist]
description = "global allow lists"
regexes = ['''219-09-9999''', '''078-05-1120''', '''(9[0-9]{2}|666)-\d{2}-\d{4}''', '''RPM-GPG-KEY.*''', '''.*:.*StrelkaHexDump.*''', '''.*:.*PLACEHOLDER.*''', '''ssl_.*password''']
regexes = ['''219-09-9999''', '''078-05-1120''', '''(9[0-9]{2}|666)-\d{2}-\d{4}''', '''RPM-GPG-KEY.*''', '''.*:.*StrelkaHexDump.*''', '''.*:.*PLACEHOLDER.*''', '''ssl_.*password''', '''integration_key\s=\s"so-logs-"''']
paths = [
'''gitleaks.toml''',
'''(.*?)(jpg|gif|doc|pdf|bin|svg|socket)$''',
+4
View File
@@ -24,6 +24,10 @@ body:
- 2.4.110
- 2.4.111
- 2.4.120
- 2.4.130
- 2.4.140
- 2.4.141
- 2.4.150
- Other (please provide detail below)
validations:
required: true
-12
View File
@@ -1,12 +0,0 @@
PLEASE STOP AND READ THIS INFORMATION!
If you are creating an issue just to ask a question, you will likely get faster and better responses by posting to our discussions forum instead:
https://securityonion.net/discuss
If you think you have found a possible bug or are observing a behavior that you weren't expecting, use the discussion forum to start a conversation about it instead of creating an issue.
If you are very familiar with the latest version of the product and are confident you have found a bug in Security Onion, you can continue with creating an issue here, but please make sure you have done the following:
- duplicated the issue on a fresh installation of the latest version
- provide information about your system and how you installed Security Onion
- include relevant log files
- include reproduction steps
+38
View File
@@ -0,0 +1,38 @@
---
name: Bug report
about: This option is for experienced community members to report a confirmed, reproducible bug
title: ''
labels: ''
assignees: ''
---
PLEASE STOP AND READ THIS INFORMATION!
If you are creating an issue just to ask a question, you will likely get faster and better responses by posting to our discussions forum at https://securityonion.net/discuss.
If you think you have found a possible bug or are observing a behavior that you weren't expecting, use the discussion forum at https://securityonion.net/discuss to start a conversation about it instead of creating an issue.
If you are very familiar with the latest version of the product and are confident you have found a bug in Security Onion, you can continue with creating an issue here, but please make sure you have done the following:
- duplicated the issue on a fresh installation of the latest version
- provide information about your system and how you installed Security Onion
- include relevant log files
- include reproduction steps
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Additional context**
Add any other context about the problem here.
+5
View File
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Security Onion Discussions
url: https://securityonion.com/discussions
about: Please ask and answer questions here
+2 -6
View File
@@ -1,10 +1,6 @@
name: python-test
on:
push:
paths:
- "salt/sensoroni/files/analyzers/**"
- "salt/manager/tools/sbin"
pull_request:
paths:
- "salt/sensoroni/files/analyzers/**"
@@ -17,7 +13,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ["3.10"]
python-version: ["3.13"]
python-code-path: ["salt/sensoroni/files/analyzers", "salt/manager/tools/sbin"]
steps:
@@ -36,4 +32,4 @@ jobs:
flake8 ${{ matrix.python-code-path }} --show-source --max-complexity=12 --doctests --max-line-length=200 --statistics
- name: Test with pytest
run: |
pytest ${{ matrix.python-code-path }} --cov=${{ matrix.python-code-path }} --doctest-modules --cov-report=term --cov-fail-under=100 --cov-config=pytest.ini
PYTHONPATH=${{ matrix.python-code-path }} pytest ${{ matrix.python-code-path }} --cov=${{ matrix.python-code-path }} --doctest-modules --cov-report=term --cov-fail-under=100 --cov-config=pytest.ini
+11 -11
View File
@@ -1,17 +1,17 @@
### 2.4.120-20250212 ISO image released on 2025/02/12
### 2.4.150-20250512 ISO image released on 2025/05/12
### Download and Verify
2.4.120-20250212 ISO image:
https://download.securityonion.net/file/securityonion/securityonion-2.4.120-20250212.iso
2.4.150-20250512 ISO image:
https://download.securityonion.net/file/securityonion/securityonion-2.4.150-20250512.iso
MD5: 3FF09F50AB1C9318CF0862DE9816102D
SHA1: 197AFA5A85C5CF95D0289FCD21BED7615FB8DB5C
SHA256: A59D94B09EEB39D8C2B6D0808792EC479B13D96FA7B32C3BEEFB6709C93F6692
MD5: 7A7469A7A38EA9A2DB770C36AE36A0CA
SHA1: 7E768D515353F339DC536DED6207B786DAFF7D27
SHA256: F8B2EB6B332F2367F0C097D211577565C8FB5CC7809E97D63687C634035B3699
Signature for ISO image:
https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.120-20250212.iso.sig
https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.150-20250512.iso.sig
Signing key:
https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/2.4/main/KEYS
@@ -25,22 +25,22 @@ wget https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/2.
Download the signature file for the ISO:
```
wget https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.120-20250212.iso.sig
wget https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.150-20250512.iso.sig
```
Download the ISO image:
```
wget https://download.securityonion.net/file/securityonion/securityonion-2.4.120-20250212.iso
wget https://download.securityonion.net/file/securityonion/securityonion-2.4.150-20250512.iso
```
Verify the downloaded ISO image using the signature file:
```
gpg --verify securityonion-2.4.120-20250212.iso.sig securityonion-2.4.120-20250212.iso
gpg --verify securityonion-2.4.150-20250512.iso.sig securityonion-2.4.150-20250512.iso
```
The output should show "Good signature" and the Primary key fingerprint should match what's shown below:
```
gpg: Signature made Tue 11 Feb 2025 05:26:33 PM EST using RSA key ID FE507013
gpg: Signature made Fri 09 May 2025 06:27:29 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.
+53
View File
@@ -0,0 +1,53 @@
Elastic License 2.0 (ELv2)
Acceptance
By using the software, you agree to all of the terms and conditions below.
Copyright License
The licensor grants you a non-exclusive, royalty-free, worldwide, non-sublicensable, non-transferable license to use, copy, distribute, make available, and prepare derivative works of the software, in each case subject to the limitations and conditions below.
Limitations
You may not provide the software to third parties as a hosted or managed service, where the service provides users with access to any substantial set of the features or functionality of the software.
You may not move, change, disable, or circumvent the license key functionality in the software, and you may not remove or obscure any functionality in the software that is protected by the license key.
You may not alter, remove, or obscure any licensing, copyright, or other notices of the licensor in the software. Any use of the licensors trademarks is subject to applicable law.
Patents
The licensor grants you a license, under any patent claims the licensor can license, or becomes able to license, to make, have made, use, sell, offer for sale, import and have imported the software, in each case subject to the limitations and conditions in this license. This license does not cover any patent claims that you cause to be infringed by modifications or additions to the software. If you or your company make any written claim that the software infringes or contributes to infringement of any patent, your patent license for the software granted under these terms ends immediately. If your company makes such a claim, your patent license ends immediately for work on behalf of your company.
Notices
You must ensure that anyone who gets a copy of any part of the software from you also gets a copy of these terms.
If you modify the software, you must include in any modified copies of the software prominent notices stating that you have modified the software.
No Other Rights
These terms do not imply any licenses other than those expressly granted in these terms.
Termination
If you use the software in violation of these terms, such use is not licensed, and your licenses will automatically terminate. If the licensor provides you with a notice of your violation, and you cease all violation of this license no later than 30 days after you receive that notice, your licenses will be reinstated retroactively. However, if you violate these terms after such reinstatement, any additional violation of these terms will cause your licenses to terminate automatically and permanently.
No Liability
As far as the law allows, the software comes as is, without any warranty or condition, and the licensor will not be liable to you for any damages arising out of these terms or the use or nature of the software, under any kind of legal claim.
Definitions
The licensor is the entity offering these terms, and the software is the software the licensor makes available under these terms, including any portion of it.
you refers to the individual or entity agreeing to these terms.
your company is any legal entity, sole proprietorship, or other kind of organization that you work for, plus all organizations that have control over, are under the control of, or are under common control with that organization. control means ownership of substantially all the assets of an entity, or the power to direct its management and policies by vote, contract, or otherwise. Control can be direct or indirect.
your licenses are all the licenses granted to you for the software under these terms.
use means anything you do with the software requiring one of your licenses.
trademark means trademarks, service marks, and similar rights.
+1 -1
View File
@@ -1 +1 @@
2.4.120
2.4.150
+4
View File
@@ -24,6 +24,7 @@
{% endif %}
{% endfor %}
{% if node_types %}
node_data:
{% for node_type, host_values in node_types.items() %}
{% for hostname, details in host_values.items() %}
@@ -33,3 +34,6 @@ node_data:
role: {{node_type}}
{% endfor %}
{% endfor %}
{% else %}
node_data: False
{% endif %}
+5 -1
View File
@@ -24,10 +24,10 @@ base:
- firewall.adv_firewall
- nginx.soc_nginx
- nginx.adv_nginx
- node_data.ips
'*_manager or *_managersearch':
- match: compound
- node_data.ips
{% if salt['file.file_exists']('/opt/so/saltstack/local/pillar/elasticsearch/auth.sls') %}
- elasticsearch.auth
{% endif %}
@@ -90,6 +90,7 @@ base:
- soc.license
'*_eval':
- node_data.ips
- secrets
- healthcheck.eval
- elasticsearch.index_templates
@@ -138,6 +139,7 @@ base:
- minions.adv_{{ grains.id }}
'*_standalone':
- node_data.ips
- logstash.nodes
- logstash.soc_logstash
- logstash.adv_logstash
@@ -260,6 +262,7 @@ base:
- soc.license
'*_import':
- node_data.ips
- secrets
- elasticsearch.index_templates
{% if salt['file.file_exists']('/opt/so/saltstack/local/pillar/elasticsearch/auth.sls') %}
@@ -305,6 +308,7 @@ base:
- minions.adv_{{ grains.id }}
'*_fleet':
- node_data.ips
- backup.soc_backup
- backup.adv_backup
- logstash.nodes
+20
View File
@@ -128,6 +128,11 @@ common_sbin:
- user: 939
- group: 939
- file_mode: 755
- show_changes: False
{% if GLOBALS.role == 'so-heavynode' %}
- exclude_pat:
- so-pcap-import
{% endif %}
common_sbin_jinja:
file.recurse:
@@ -137,6 +142,21 @@ common_sbin_jinja:
- group: 939
- file_mode: 755
- template: jinja
- show_changes: False
{% if GLOBALS.role == 'so-heavynode' %}
- exclude_pat:
- so-import-pcap
{% endif %}
{% if GLOBALS.role == 'so-heavynode' %}
remove_so-pcap-import_heavynode:
file.absent:
- name: /usr/sbin/so-pcap-import
remove_so-import-pcap_heavynode:
file.absent:
- name: /usr/sbin/so-import-pcap
{% endif %}
{% if not GLOBALS.is_manager%}
# prior to 2.4.50 these scripts were in common/tools/sbin on the manager because of soup and distributed to non managers
+2
View File
@@ -27,6 +27,7 @@ commonpkgs:
- vim
- tar
- unzip
- bc
{% if grains.oscodename != 'focal' %}
- python3-rich
{% endif %}
@@ -56,6 +57,7 @@ commonpkgs:
- skip_suggestions: True
- pkgs:
- python3-dnf-plugin-versionlock
- bc
- curl
- device-mapper-persistent-data
- fuse
+13
View File
@@ -64,6 +64,12 @@ copy_so-repo-sync_manager_tools_sbin:
- source: {{UPDATE_DIR}}/salt/manager/tools/sbin/so-repo-sync
- preserve: True
copy_bootstrap-salt_manager_tools_sbin:
file.copy:
- name: /opt/so/saltstack/default/salt/salt/scripts/bootstrap-salt.sh
- source: {{UPDATE_DIR}}/salt/salt/scripts/bootstrap-salt.sh
- preserve: True
# This section is used to put the new script in place so that it can be called during soup.
# It is faster than calling the states that normally manage them to put them in place.
copy_so-common_sbin:
@@ -108,6 +114,13 @@ copy_so-repo-sync_sbin:
- force: True
- preserve: True
copy_bootstrap-salt_sbin:
file.copy:
- name: /usr/sbin/bootstrap-salt.sh
- source: {{UPDATE_DIR}}/salt/salt/scripts/bootstrap-salt.sh
- force: True
- preserve: True
{# this is added in 2.4.120 to remove salt repo files pointing to saltproject.io to accomodate the move to broadcom and new bootstrap-salt script #}
{% if salt['pkg.version_cmp'](SOVERSION, '2.4.120') == -1 %}
{% set saltrepofile = '/etc/yum.repos.d/salt.repo' %}
+1 -1
View File
@@ -226,7 +226,7 @@ create_local_directories() {
for d in $(find $PILLARSALTDIR/$i -type d); do
suffixdir=${d//$PILLARSALTDIR/}
if [ ! -d "$local_salt_dir/$suffixdir" ]; then
mkdir -pv $local_salt_dir$suffixdir
mkdir -p $local_salt_dir$suffixdir
fi
done
chown -R socore:socore $local_salt_dir/$i
+7
View File
@@ -126,6 +126,9 @@ if [[ $EXCLUDE_STARTUP_ERRORS == 'Y' ]]; then
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|Unable to get license information" # Logstash trying to contact ES before it's ready
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|process already finished" # Telegraf script finished just as the auto kill timeout kicked in
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|No shard available" # Typical error when making a query before ES has finished loading all indices
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|responded with status-code 503" # telegraf getting 503 from ES during startup
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|process_cluster_event_timeout_exception" # logstash waiting for elasticsearch to start
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|not configured for GeoIP" # SO does not bundle the maxminddb with Zeek
fi
if [[ $EXCLUDE_FALSE_POSITIVE_ERRORS == 'Y' ]]; then
@@ -152,6 +155,9 @@ if [[ $EXCLUDE_FALSE_POSITIVE_ERRORS == 'Y' ]]; then
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|is not an ip string literal" # false positive (Open Canary logging out blank IP addresses)
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|syncing rule" # false positive (rule sync log line includes rule name which can contain 'error')
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|request_unauthorized" # false positive (login failures to Hydra result in an 'error' log)
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|adding index lifecycle policy" # false positive (elasticsearch policy names contain 'error')
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|adding ingest pipeline" # false positive (elasticsearch ingest pipeline names contain 'error')
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|updating index template" # false positive (elasticsearch index or template names contain 'error')
fi
if [[ $EXCLUDE_KNOWN_ERRORS == 'Y' ]]; then
@@ -213,6 +219,7 @@ if [[ $EXCLUDE_KNOWN_ERRORS == 'Y' ]]; then
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|syncErrors" # Detections: Not an actual error
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|Initialized license manager" # SOC log: before fields.status was changed to fields.licenseStatus
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|from NIC checksum offloading" # zeek reporter.log
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|marked for removal" # docker container getting recycled
fi
RESULT=0
+1 -1
View File
@@ -63,7 +63,7 @@ function status {
function pcapinfo() {
PCAP=$1
ARGS=$2
docker run --rm -v "$PCAP:/input.pcap" --entrypoint capinfos {{ MANAGER }}:5000/{{ IMAGEREPO }}/so-pcaptools:{{ VERSION }} /input.pcap $ARGS
docker run --rm -v "$PCAP:/input.pcap" --entrypoint capinfos {{ MANAGER }}:5000/{{ IMAGEREPO }}/so-pcaptools:{{ VERSION }} /input.pcap -ae $ARGS
}
function pcapfix() {
+1
View File
@@ -200,6 +200,7 @@ docker:
final_octet: 88
port_bindings:
- 0.0.0.0:9092:9092
- 0.0.0.0:29092:29092
- 0.0.0.0:9093:9093
- 0.0.0.0:8778:8778
custom_bind_mounts: []
+4
View File
@@ -30,6 +30,7 @@ elasticfleet_sbin:
- user: 947
- group: 939
- file_mode: 755
- show_changes: False
elasticfleet_sbin_jinja:
file.recurse:
@@ -41,6 +42,7 @@ elasticfleet_sbin_jinja:
- template: jinja
- exclude_pat:
- so-elastic-fleet-package-upgrade # exclude this because we need to watch it for changes
- show_changes: False
eaconfdir:
file.directory:
@@ -145,6 +147,7 @@ eadynamicintegration:
- user: 947
- group: 939
- template: jinja
- show_changes: False
eaintegration:
file.recurse:
@@ -152,6 +155,7 @@ eaintegration:
- source: salt://elasticfleet/files/integrations
- user: 947
- group: 939
- show_changes: False
eaoptionalintegrationsdir:
file.directory:
+2 -77
View File
@@ -10,6 +10,8 @@ elasticfleet:
grid_enrollment: ''
defend_filters:
enable_auto_configuration: False
subscription_integrations: False
auto_upgrade_integrations: False
logging:
zeek:
excluded:
@@ -32,97 +34,20 @@ elasticfleet:
- stderr
- stdout
packages:
- apache
- auditd
- auth0
- aws
- azure
- barracuda
- barracuda_cloudgen_firewall
- carbonblack_edr
- cef
- checkpoint
- cisco_asa
- cisco_duo
- cisco_ftd
- cisco_ios
- cisco_ise
- cisco_meraki
- cisco_secure_email_gateway
- cisco_umbrella
- citrix_adc
- citrix_waf
- cloudflare
- cloudflare_logpush
- crowdstrike
- darktrace
- elastic_agent
- elasticsearch
- endpoint
- f5_bigip
- fim
- fireeye
- fleet_server
- fortinet
- fortinet_fortigate
- gcp
- github
- google_workspace
- http_endpoint
- httpjson
- iis
- imperva_cloud_waf
- journald
- juniper
- juniper_srx
- kafka_log
- lastpass
- log
- m365_defender
- microsoft_defender_endpoint
- microsoft_dhcp
- microsoft_sqlserver
- mimecast
- mysql
- netflow
- nginx
- o365
- okta
- osquery_manager
- panw
- pfsense
- proofpoint_tap
- pulse_connect_secure
- redis
- sentinel_one
- snort
- snyk
- sonicwall_firewall
- sophos
- sophos_central
- symantec_endpoint
- system
- tcp
- tenable_io
- tenable_sc
- ti_abusech
- ti_anomali
- ti_cybersixgill
- ti_misp
- ti_opencti
- ti_otx
- ti_rapid7_threat_command
- ti_recordedfuture
- ti_threatq
- trendmicro
- trend_micro_vision_one
- udp
- vsphere
- windows
- winlog
- zscaler_zia
- zscaler_zpa
- 1password
optional_integrations:
sublime_platform:
enabled_nodes: []
+4
View File
@@ -151,6 +151,10 @@ so-elastic-fleet-integration-upgrade:
cmd.run:
- name: /usr/sbin/so-elastic-fleet-integration-upgrade
so-elastic-fleet-addon-integrations:
cmd.run:
- name: /usr/sbin/so-elastic-fleet-optional-integrations-load
{% if ELASTICFLEETMERGED.config.defend_filters.enable_auto_configuration %}
so-elastic-defend-manage-filters-file-watch:
cmd.run:
@@ -0,0 +1,46 @@
{%- set identities = salt['sqlite3.fetch']('/nsm/kratos/db/db.sqlite', 'SELECT id, json_extract(traits, "$.email") as email FROM identities;') -%}
{%- set valid_identities = false -%}
{%- if identities -%}
{%- set valid_identities = true -%}
{%- for id, email in identities -%}
{%- if not id or not email -%}
{%- set valid_identities = false -%}
{%- break -%}
{%- endif -%}
{%- endfor -%}
{%- endif -%}
{
"package": {
"name": "log",
"version": ""
},
"name": "kratos-logs",
"namespace": "so",
"description": "Kratos logs",
"policy_id": "so-grid-nodes_general",
"inputs": {
"logs-logfile": {
"enabled": true,
"streams": {
"log.logs": {
"enabled": true,
"vars": {
"paths": [
"/opt/so/log/kratos/kratos.log"
],
"data_stream.dataset": "kratos",
"tags": ["so-kratos"],
{%- if valid_identities -%}
"processors": "- decode_json_fields:\n fields: [\"message\"]\n target: \"\"\n add_error_key: true\n- add_fields:\n target: event\n fields:\n category: iam\n module: kratos\n- if:\n has_fields:\n - identity_id\n then:{% for id, email in identities %}\n - if:\n equals:\n identity_id: \"{{ id }}\"\n then:\n - add_fields:\n target: ''\n fields:\n user.name: \"{{ email }}\"{% endfor %}",
{%- else -%}
"processors": "- decode_json_fields:\n fields: [\"message\"]\n target: \"\"\n add_error_key: true\n- add_fields:\n target: event\n fields:\n category: iam\n module: kratos",
{%- endif -%}
"custom": "pipeline: kratos"
}
}
}
}
},
"force": true
}
@@ -3,25 +3,30 @@
"namespace": "default",
"description": "",
"package": {
"name": "endpoint",
"title": "Elastic Defend",
"version": "8.14.0"
"name": "endpoint",
"title": "Elastic Defend",
"version": "8.17.0",
"requires_root": true
},
"enabled": true,
"policy_id": "endpoints-initial",
"inputs": [{
"type": "ENDPOINT_INTEGRATION_CONFIG",
"vars": {},
"inputs": [
{
"type": "endpoint",
"enabled": true,
"streams": [],
"config": {
"_config": {
"value": {
"type": "endpoint",
"endpointConfig": {
"preset": "DataCollection"
}
}
"integration_config": {
"value": {
"type": "endpoint",
"endpointConfig": {
"preset": "DataCollection"
}
}
}
}]
}
}
},
"streams": []
}
]
}
@@ -20,7 +20,7 @@
],
"data_stream.dataset": "import",
"custom": "",
"processors": "- dissect:\n tokenizer: \"/nsm/import/%{import.id}/evtx/%{import.file}\"\n field: \"log.file.path\"\n target_prefix: \"\"\n- decode_json_fields:\n fields: [\"message\"]\n target: \"\"\n- drop_fields:\n fields: [\"host\"]\n ignore_missing: true\n- add_fields:\n target: data_stream\n fields:\n type: logs\n dataset: system.security\n- add_fields:\n target: event\n fields:\n dataset: system.security\n module: system\n imported: true\n- add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-system.security-1.59.0\n- if:\n equals:\n winlog.channel: 'Microsoft-Windows-Sysmon/Operational'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: windows.sysmon_operational\n - add_fields:\n target: event\n fields:\n dataset: windows.sysmon_operational\n module: windows\n imported: true\n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-windows.sysmon_operational-1.45.1\n- if:\n equals:\n winlog.channel: 'Application'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: system.application\n - add_fields:\n target: event\n fields:\n dataset: system.application\n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-system.application-1.59.0\n- if:\n equals:\n winlog.channel: 'System'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: system.system\n - add_fields:\n target: event\n fields:\n dataset: system.system\n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-system.system-1.59.0\n \n- if:\n equals:\n winlog.channel: 'Microsoft-Windows-PowerShell/Operational'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: windows.powershell_operational\n - add_fields:\n target: event\n fields:\n dataset: windows.powershell_operational\n module: windows\n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-windows.powershell_operational-1.45.1\n- add_fields:\n target: data_stream\n fields:\n dataset: import",
"processors": "- dissect:\n tokenizer: \"/nsm/import/%{import.id}/evtx/%{import.file}\"\n field: \"log.file.path\"\n target_prefix: \"\"\n- decode_json_fields:\n fields: [\"message\"]\n target: \"\"\n- drop_fields:\n fields: [\"host\"]\n ignore_missing: true\n- add_fields:\n target: data_stream\n fields:\n type: logs\n dataset: system.security\n- add_fields:\n target: event\n fields:\n dataset: system.security\n module: system\n imported: true\n- add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-system.security-1.67.0\n- if:\n equals:\n winlog.channel: 'Microsoft-Windows-Sysmon/Operational'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: windows.sysmon_operational\n - add_fields:\n target: event\n fields:\n dataset: windows.sysmon_operational\n module: windows\n imported: true\n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-windows.sysmon_operational-2.5.0\n- if:\n equals:\n winlog.channel: 'Application'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: system.application\n - add_fields:\n target: event\n fields:\n dataset: system.application\n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-system.application-1.67.0\n- if:\n equals:\n winlog.channel: 'System'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: system.system\n - add_fields:\n target: event\n fields:\n dataset: system.system\n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-system.system-1.67.0\n \n- if:\n equals:\n winlog.channel: 'Microsoft-Windows-PowerShell/Operational'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: windows.powershell_operational\n - add_fields:\n target: event\n fields:\n dataset: windows.powershell_operational\n module: windows\n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-windows.powershell_operational-2.5.0\n- add_fields:\n target: data_stream\n fields:\n dataset: import",
"tags": [
"import"
]
@@ -1,30 +0,0 @@
{
"package": {
"name": "log",
"version": ""
},
"name": "kratos-logs",
"namespace": "so",
"description": "Kratos logs",
"policy_id": "so-grid-nodes_general",
"inputs": {
"logs-logfile": {
"enabled": true,
"streams": {
"log.logs": {
"enabled": true,
"vars": {
"paths": [
"/opt/so/log/kratos/kratos.log"
],
"data_stream.dataset": "kratos",
"tags": ["so-kratos"],
"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"
}
}
}
}
},
"force": true
}
@@ -11,7 +11,7 @@
"udp-udp": {
"enabled": true,
"streams": {
"udp.generic": {
"udp.udp": {
"enabled": true,
"vars": {
"listen_address": "0.0.0.0",
@@ -20,11 +20,13 @@
"pipeline": "syslog",
"max_message_size": "10KiB",
"keep_null": false,
"processors": "- add_fields:\n target: event\n fields: \n module: syslog\n",
"processors": "- add_fields:\n target: event\n fields: \n module: syslog",
"tags": [
"syslog"
],
"syslog_options": "field: message\n#format: auto\n#timezone: Local"
"syslog_options": "field: message\n#format: auto\n#timezone: Local\n",
"preserve_original_event": false,
"custom": ""
}
}
}
@@ -31,7 +31,8 @@
],
"tags": [
"so-grid-node"
]
],
"processors": "- if:\n contains:\n message: \"salt-minion\"\n then: \n - dissect:\n tokenizer: \"%{} %{} %{} %{} %{} %{}: [%{log.level}] %{*}\"\n field: \"message\"\n trim_values: \"all\"\n target_prefix: \"\"\n - drop_event:\n when:\n equals:\n log.level: \"INFO\""
}
}
}
@@ -0,0 +1,133 @@
{# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one
or more contributor license agreements. Licensed under the Elastic License 2.0; you may not use
this file except in compliance with the Elastic License 2.0. #}
{% import_json '/opt/so/state/esfleet_package_components.json' as ADDON_PACKAGE_COMPONENTS %}
{% import_yaml 'elasticfleet/defaults.yaml' as ELASTICFLEETDEFAULTS %}
{% set CORE_ESFLEET_PACKAGES = ELASTICFLEETDEFAULTS.get('elasticfleet', {}).get('packages', {}) %}
{% set ADDON_INTEGRATION_DEFAULTS = {} %}
{# Some fleet integrations don't follow the standard naming convention #}
{% set WEIRD_INTEGRATIONS = {
'awsfirehose.logs': 'awsfirehose',
'awsfirehose.metrics': 'aws.cloudwatch',
'cribl.logs': 'cribl',
'sentinel_one_cloud_funnel.logins': 'sentinel_one_cloud_funnel.login',
'azure_application_insights.app_insights': 'azure.app_insights',
'azure_application_insights.app_state': 'azure.app_state',
'azure_billing.billing': 'azure.billing',
'azure_functions.metrics': 'azure.function',
'azure_metrics.compute_vm_scaleset': 'azure.compute_vm_scaleset',
'azure_metrics.compute_vm': 'azure.compute_vm',
'azure_metrics.container_instance': 'azure.container_instance',
'azure_metrics.container_registry': 'azure.container_registry',
'azure_metrics.container_service': 'azure.container_service',
'azure_metrics.database_account': 'azure.database_account',
'azure_metrics.monitor': 'azure.monitor',
'azure_metrics.storage_account': 'azure.storage_account',
'azure_openai.metrics': 'azure.open_ai',
'beat.state': 'beats.stack_monitoring.state',
'beat.stats': 'beats.stack_monitoring.stats',
'enterprisesearch.health': 'enterprisesearch.stack_monitoring.health',
'enterprisesearch.stats': 'enterprisesearch.stack_monitoring.stats',
'kibana.cluster_actions': 'kibana.stack_monitoring.cluster_actions',
'kibana.cluster_rules': 'kibana.stack_monitoring.cluster_rules',
'kibana.node_actions': 'kibana.stack_monitoring.node_actions',
'kibana.node_rules': 'kibana.stack_monitoring.node_rules',
'kibana.stats': 'kibana.stack_monitoring.stats',
'kibana.status': 'kibana.stack_monitoring.status',
'logstash.node_cel': 'logstash.stack_monitoring.node',
'logstash.node_stats': 'logstash.stack_monitoring.node_stats',
'synthetics.browser': 'synthetics-browser',
'synthetics.browser_network': 'synthetics-browser.network',
'synthetics.browser_screenshot': 'synthetics-browser.screenshot',
'synthetics.http': 'synthetics-http',
'synthetics.icmp': 'synthetics-icmp',
'synthetics.tcp': 'synthetics-tcp'
} %}
{% for pkg in ADDON_PACKAGE_COMPONENTS %}
{% if pkg.name in CORE_ESFLEET_PACKAGES %}
{# skip core integrations #}
{% elif pkg.name not in CORE_ESFLEET_PACKAGES %}
{# generate defaults for each integration #}
{% if pkg.es_index_patterns is defined and pkg.es_index_patterns is not none %}
{% for pattern in pkg.es_index_patterns %}
{% if "metrics-" in pattern.name %}
{% set integration_type = "metrics-" %}
{% elif "logs-" in pattern.name %}
{% set integration_type = "logs-" %}
{% else %}
{% set integration_type = "" %}
{% endif %}
{% set component_name = pkg.name ~ "." ~ pattern.title %}
{# fix weirdly named components #}
{% if component_name in WEIRD_INTEGRATIONS %}
{% set component_name = WEIRD_INTEGRATIONS[component_name] %}
{% endif %}
{# component_name_x maintains the functionality of merging local pillar changes with generated 'defaults' via SOC UI #}
{% set component_name_x = component_name.replace(".","_x_") %}
{# pillar overrides/merge expects the key names to follow the naming in elasticsearch/defaults.yaml eg. so-logs-1password_x_item_usages . The _x_ is replaced later on in elasticsearch/template.map.jinja #}
{% set integration_key = "so-" ~ integration_type ~ component_name_x %}
{# Default integration settings #}
{% set integration_defaults = {
"index_sorting": false,
"index_template": {
"composed_of": [integration_type ~ component_name ~ "@package", integration_type ~ component_name ~ "@custom", "so-fleet_integrations.ip_mappings-1", "so-fleet_globals-1", "so-fleet_agent_id_verification-1"],
"data_stream": {
"allow_custom_routing": false,
"hidden": false
},
"ignore_missing_component_templates": [integration_type ~ component_name ~ "@custom"],
"index_patterns": [pattern.name],
"priority": 501,
"template": {
"settings": {
"index": {
"lifecycle": {"name": "so-" ~ integration_type ~ component_name ~ "-logs"},
"number_of_replicas": 0
}
}
}
},
"policy": {
"phases": {
"cold": {
"actions": {
"set_priority": {"priority": 0}
},
"min_age": "60d"
},
"delete": {
"actions": {
"delete": {}
},
"min_age": "365d"
},
"hot": {
"actions": {
"rollover": {
"max_age": "30d",
"max_primary_shard_size": "50gb"
},
"set_priority": {"priority": 100}
},
"min_age": "0ms"
},
"warm": {
"actions": {
"set_priority": {"priority": 50}
},
"min_age": "30d"
}
}
}
} %}
{% do ADDON_INTEGRATION_DEFAULTS.update({integration_key: integration_defaults}) %}
{% endfor %}
{% endif %}
{% endif %}
{% endfor %}
+10
View File
@@ -40,6 +40,16 @@ elasticfleet:
global: True
helpLink: elastic-fleet.html
advanced: True
subscription_integrations:
description: Enable the installation of integrations that require an Elastic license.
global: True
forcedType: bool
helpLink: elastic-fleet.html
auto_upgrade_integrations:
description: Enables or disables automatically upgrading Elastic Agent integrations.
global: True
forcedType: bool
helpLink: elastic-fleet.html
server:
custom_fqdn:
description: Custom FQDN for Agents to connect to. One per line.
@@ -97,11 +97,20 @@ elastic_fleet_package_install() {
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d '{"force":true}' "localhost:5601/api/fleet/epm/packages/$PKG/$VERSION"
}
elastic_fleet_bulk_package_install() {
BULK_PKG_LIST=$1
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d@$1 "localhost:5601/api/fleet/epm/packages/_bulk"
}
elastic_fleet_package_is_installed() {
PACKAGE=$1
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET -H 'kbn-xsrf: true' "localhost:5601/api/fleet/epm/packages/$PACKAGE" | jq -r '.item.status'
}
elastic_fleet_installed_packages() {
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET -H 'kbn-xsrf: true' -H 'Content-Type: application/json' "localhost:5601/api/fleet/epm/packages/installed?perPage=500"
}
elastic_fleet_agent_policy_ids() {
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies" | jq -r .items[].id
if [ $? -ne 0 ]; then
@@ -1,62 +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-elastic-fleet-common
curl_output=$(curl -s -K /opt/so/conf/elasticsearch/curl.config -c - -X GET http://localhost:5601/)
if [ $? -ne 0 ]; then
echo "Error: Failed to connect to Kibana."
exit 1
fi
IFS=$'\n'
agent_policies=$(elastic_fleet_agent_policy_ids)
if [ $? -ne 0 ]; then
echo "Error: Failed to retrieve agent policies."
exit 1
fi
for AGENT_POLICY in $agent_policies; do
integrations=$(elastic_fleet_integration_policy_names "$AGENT_POLICY")
for INTEGRATION in $integrations; do
if ! [[ "$INTEGRATION" == "elastic-defend-endpoints" ]] && ! [[ "$INTEGRATION" == "fleet_server-"* ]]; then
# Get package name so we know what package to look for when checking the current and latest available version
PACKAGE_NAME=$(elastic_fleet_integration_policy_package_name "$AGENT_POLICY" "$INTEGRATION")
# Get currently installed version of package
PACKAGE_VERSION=$(elastic_fleet_integration_policy_package_version "$AGENT_POLICY" "$INTEGRATION")
# Get latest available version of package
AVAILABLE_VERSION=$(elastic_fleet_package_latest_version_check "$PACKAGE_NAME")
# Get integration ID
INTEGRATION_ID=$(elastic_fleet_integration_id "$AGENT_POLICY" "$INTEGRATION")
if [[ "$PACKAGE_VERSION" != "$AVAILABLE_VERSION" ]]; then
# Dry run of the upgrade
echo "Current $PACKAGE_NAME package version ($PACKAGE_VERSION) is not the same as the latest available package ($AVAILABLE_VERSION)..."
echo "Upgrading $INTEGRATION..."
echo "Starting dry run..."
DRYRUN_OUTPUT=$(elastic_fleet_integration_policy_dryrun_upgrade "$INTEGRATION_ID")
DRYRUN_ERRORS=$(echo "$DRYRUN_OUTPUT" | jq .[].hasErrors)
# If no errors with dry run, proceed with actual upgrade
if [[ "$DRYRUN_ERRORS" == "false" ]]; then
echo "No errors detected. Proceeding with upgrade..."
elastic_fleet_integration_policy_upgrade "$INTEGRATION_ID"
if [ $? -ne 0 ]; then
echo "Error: Upgrade failed for integration ID '$INTEGRATION_ID'."
exit 1
fi
else
echo "Errors detected during dry run. Stopping upgrade..."
exit 1
fi
fi
fi
done
done
echo
@@ -10,6 +10,6 @@
SESSIONCOOKIE=$(curl -s -K /opt/so/conf/elasticsearch/curl.config -c - -X GET http://localhost:5601/ | grep sid | awk '{print $7}')
# List configured package policies
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/epm/packages" -H 'kbn-xsrf: true' | jq
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/epm/packages?prerelease=true" -H 'kbn-xsrf: true' | jq
echo
@@ -83,5 +83,10 @@ docker run \
{{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elastic-agent-builder:{{ GLOBALS.so_version }} wixl -o so-elastic-agent_windows_amd64_msi --arch x64 /workspace/so-elastic-agent.wxs
printf "\n### MSI Generated...\n"
printf "\n### Cleaning up temp files in /nsm/elastic-agent-workspace\n"
printf "\n### Cleaning up temp files \n"
rm -rf /nsm/elastic-agent-workspace
rm -rf /opt/so/saltstack/local/salt/elasticfleet/files/so_agent-installers/so-elastic-agent_windows_amd64.exe
printf "\n### Copying so_agent-installers to /nsm/elastic-fleet/ for nginx.\n"
\cp -vr /opt/so/saltstack/local/salt/elasticfleet/files/so_agent-installers/ /nsm/elastic-fleet/
chmod 644 /nsm/elastic-fleet/so_agent-installers/*
@@ -14,7 +14,7 @@ if ! is_manager_node; then
fi
# Get current list of Grid Node Agents that need to be upgraded
RAW_JSON=$(curl -K /opt/so/conf/elasticsearch/curl.config -L "http://localhost:5601/api/fleet/agents?perPage=20&page=1&kuery=policy_id%20%3A%20so-grid-nodes_%2A&showInactive=false&showUpgradeable=true&getStatusSummary=true")
RAW_JSON=$(curl -K /opt/so/conf/elasticsearch/curl.config -L "http://localhost:5601/api/fleet/agents?perPage=20&page=1&kuery=NOT%20agent.version%20:%20%22{{ELASTICSEARCHDEFAULTS.elasticsearch.version}}%22%20and%20policy_id%20:%20%22so-grid-nodes_general%22&showInactive=false&getStatusSummary=true")
# Check to make sure that the server responded with good data - else, bail from script
CHECKSUM=$(jq -r '.page' <<< "$RAW_JSON")
@@ -0,0 +1,73 @@
#!/bin/bash
# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one
# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at
# https://securityonion.net/license; you may not use this file except in compliance with the
# Elastic License 2.0.
{%- import_yaml 'elasticfleet/defaults.yaml' as ELASTICFLEETDEFAULTS %}
{%- set SUPPORTED_PACKAGES = salt['pillar.get']('elasticfleet:packages', default=ELASTICFLEETDEFAULTS.elasticfleet.packages, merge=True) %}
{%- set AUTO_UPGRADE_INTEGRATIONS = salt['pillar.get']('elasticfleet:config:auto_upgrade_integrations', default=false) %}
. /usr/sbin/so-elastic-fleet-common
curl_output=$(curl -s -K /opt/so/conf/elasticsearch/curl.config -c - -X GET http://localhost:5601/)
if [ $? -ne 0 ]; then
echo "Error: Failed to connect to Kibana."
exit 1
fi
IFS=$'\n'
agent_policies=$(elastic_fleet_agent_policy_ids)
if [ $? -ne 0 ]; then
echo "Error: Failed to retrieve agent policies."
exit 1
fi
default_packages=({% for pkg in SUPPORTED_PACKAGES %}"{{ pkg }}"{% if not loop.last %} {% endif %}{% endfor %})
for AGENT_POLICY in $agent_policies; do
integrations=$(elastic_fleet_integration_policy_names "$AGENT_POLICY")
for INTEGRATION in $integrations; do
if ! [[ "$INTEGRATION" == "elastic-defend-endpoints" ]] && ! [[ "$INTEGRATION" == "fleet_server-"* ]]; then
# Get package name so we know what package to look for when checking the current and latest available version
PACKAGE_NAME=$(elastic_fleet_integration_policy_package_name "$AGENT_POLICY" "$INTEGRATION")
{%- if not AUTO_UPGRADE_INTEGRATIONS %}
if [[ " ${default_packages[@]} " =~ " $PACKAGE_NAME " ]]; then
{%- endif %}
# Get currently installed version of package
PACKAGE_VERSION=$(elastic_fleet_integration_policy_package_version "$AGENT_POLICY" "$INTEGRATION")
# Get latest available version of package
AVAILABLE_VERSION=$(elastic_fleet_package_latest_version_check "$PACKAGE_NAME")
# Get integration ID
INTEGRATION_ID=$(elastic_fleet_integration_id "$AGENT_POLICY" "$INTEGRATION")
if [[ "$PACKAGE_VERSION" != "$AVAILABLE_VERSION" ]]; then
# Dry run of the upgrade
echo ""
echo "Current $PACKAGE_NAME package version ($PACKAGE_VERSION) is not the same as the latest available package ($AVAILABLE_VERSION)..."
echo "Upgrading $INTEGRATION..."
echo "Starting dry run..."
DRYRUN_OUTPUT=$(elastic_fleet_integration_policy_dryrun_upgrade "$INTEGRATION_ID")
DRYRUN_ERRORS=$(echo "$DRYRUN_OUTPUT" | jq .[].hasErrors)
# If no errors with dry run, proceed with actual upgrade
if [[ "$DRYRUN_ERRORS" == "false" ]]; then
echo "No errors detected. Proceeding with upgrade..."
elastic_fleet_integration_policy_upgrade "$INTEGRATION_ID"
if [ $? -ne 0 ]; then
echo "Error: Upgrade failed for $PACKAGE_NAME with integration ID '$INTEGRATION_ID'."
exit 1
fi
else
echo "Errors detected during dry run for $PACKAGE_NAME policy upgrade..."
exit 1
fi
fi
{%- if not AUTO_UPGRADE_INTEGRATIONS %}
fi
{%- endif %}
fi
done
done
echo
@@ -0,0 +1,169 @@
#!/bin/bash
# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one
# or more contributor license agreements. Licensed under the Elastic License 2.0; you may not use
# this file except in compliance with the Elastic License 2.0.
{%- import_yaml 'elasticfleet/defaults.yaml' as ELASTICFLEETDEFAULTS %}
{% set SUB = salt['pillar.get']('elasticfleet:config:subscription_integrations', default=false) %}
{% set AUTO_UPGRADE_INTEGRATIONS = salt['pillar.get']('elasticfleet:config:auto_upgrade_integrations', default=false) %}
{%- set SUPPORTED_PACKAGES = salt['pillar.get']('elasticfleet:packages', default=ELASTICFLEETDEFAULTS.elasticfleet.packages, merge=True) %}
. /usr/sbin/so-common
. /usr/sbin/so-elastic-fleet-common
# Check that /opt/so/state/estemplates.txt exists to signal that Elasticsearch
# has completed its first run of core-only integrations/indices/components/ilm
STATE_FILE_SUCCESS=/opt/so/state/estemplates.txt
INSTALLED_PACKAGE_LIST=/tmp/esfleet_installed_packages.json
BULK_INSTALL_PACKAGE_LIST=/tmp/esfleet_bulk_install.json
BULK_INSTALL_PACKAGE_TMP=/tmp/esfleet_bulk_install_tmp.json
BULK_INSTALL_OUTPUT=/opt/so/state/esfleet_bulk_install_results.json
PACKAGE_COMPONENTS=/opt/so/state/esfleet_package_components.json
PENDING_UPDATE=false
# Integrations which are included in the package registry, but excluded from automatic installation via this script.
# Requiring some level of manual Elastic Stack configuration before installation
EXCLUDED_INTEGRATIONS=('apm')
version_conversion(){
version=$1
echo "$version" | awk -F '.' '{ printf("%d%03d%03d\n", $1, $2, $3); }'
}
compare_versions() {
version1=$1
version2=$2
# Convert versions to numbers
num1=$(version_conversion "$version1")
num2=$(version_conversion "$version2")
# Compare using bc
if (( $(echo "$num1 < $num2" | bc -l) )); then
echo "less"
elif (( $(echo "$num1 > $num2" | bc -l) )); then
echo "greater"
else
echo "equal"
fi
}
IFS=$'\n'
agent_policies=$(elastic_fleet_agent_policy_ids)
if [ $? -ne 0 ]; then
echo "Error: Failed to retrieve agent policies."
exit 1
fi
default_packages=({% for pkg in SUPPORTED_PACKAGES %}"{{ pkg }}"{% if not loop.last %} {% endif %}{% endfor %})
in_use_integrations=()
for AGENT_POLICY in $agent_policies; do
integrations=$(elastic_fleet_integration_policy_names "$AGENT_POLICY")
for INTEGRATION in $integrations; do
PACKAGE_NAME=$(elastic_fleet_integration_policy_package_name "$AGENT_POLICY" "$INTEGRATION")
# non-default integrations that are in-use in any policy
if ! [[ " ${default_packages[@]} " =~ " $PACKAGE_NAME " ]]; then
in_use_integrations+=("$PACKAGE_NAME")
fi
done
done
if [[ -f $STATE_FILE_SUCCESS ]]; then
if retry 3 1 "curl -s -K /opt/so/conf/elasticsearch/curl.config --output /dev/null --silent --head --fail localhost:5601/api/fleet/epm/packages"; then
# Package_list contains all integrations beta / non-beta.
latest_package_list=$(/usr/sbin/so-elastic-fleet-package-list)
echo '{ "packages" : []}' > $BULK_INSTALL_PACKAGE_LIST
rm -f $INSTALLED_PACKAGE_LIST
echo $latest_package_list | jq '{packages: [.items[] | {name: .name, latest_version: .version, installed_version: .savedObject.attributes.install_version, subscription: .conditions.elastic.subscription }]}' >> $INSTALLED_PACKAGE_LIST
while read -r package; do
# get package details
package_name=$(echo "$package" | jq -r '.name')
latest_version=$(echo "$package" | jq -r '.latest_version')
installed_version=$(echo "$package" | jq -r '.installed_version')
subscription=$(echo "$package" | jq -r '.subscription')
bulk_package=$(echo "$package" | jq '{name: .name, version: .latest_version}' )
if [[ ! "${EXCLUDED_INTEGRATIONS[@]}" =~ "$package_name" ]]; then
{% if not SUB %}
if [[ "$subscription" != "basic" && "$subscription" != "null" && -n "$subscription" ]]; then
# pass over integrations that require non-basic elastic license
echo "$package_name integration requires an Elastic license of $subscription or greater... skipping"
continue
else
if [[ "$installed_version" == "null" || -z "$installed_version" ]]; then
echo "$package_name is not installed... Adding to next update."
jq --argjson package "$bulk_package" '.packages += [$package]' $BULK_INSTALL_PACKAGE_LIST > $BULK_INSTALL_PACKAGE_TMP && mv $BULK_INSTALL_PACKAGE_TMP $BULK_INSTALL_PACKAGE_LIST
PENDING_UPDATE=true
else
results=$(compare_versions "$latest_version" "$installed_version")
if [ $results == "greater" ]; then
{#- When auto_upgrade_integrations is false, skip upgrading in_use_integrations #}
{%- if not AUTO_UPGRADE_INTEGRATIONS %}
if ! [[ " ${in_use_integrations[@]} " =~ " $package_name " ]]; then
{%- endif %}
echo "$package_name is at version $installed_version latest version is $latest_version... Adding to next update."
jq --argjson package "$bulk_package" '.packages += [$package]' $BULK_INSTALL_PACKAGE_LIST > $BULK_INSTALL_PACKAGE_TMP && mv $BULK_INSTALL_PACKAGE_TMP $BULK_INSTALL_PACKAGE_LIST
PENDING_UPDATE=true
{%- if not AUTO_UPGRADE_INTEGRATIONS %}
else
echo "skipping available upgrade for in use integration - $package_name."
fi
{%- endif %}
fi
fi
fi
{% else %}
if [[ "$installed_version" == "null" || -z "$installed_version" ]]; then
echo "$package_name is not installed... Adding to next update."
jq --argjson package "$bulk_package" '.packages += [$package]' $BULK_INSTALL_PACKAGE_LIST > $BULK_INSTALL_PACKAGE_TMP && mv $BULK_INSTALL_PACKAGE_TMP $BULK_INSTALL_PACKAGE_LIST
PENDING_UPDATE=true
else
results=$(compare_versions "$latest_version" "$installed_version")
if [ $results == "greater" ]; then
{#- When auto_upgrade_integrations is false, skip upgrading in_use_integrations #}
{%- if not AUTO_UPGRADE_INTEGRATIONS %}
if ! [[ " ${in_use_integrations[@]} " =~ " $package_name " ]]; then
{%- endif %}
echo "$package_name is at version $installed_version latest version is $latest_version... Adding to next update."
jq --argjson package "$bulk_package" '.packages += [$package]' $BULK_INSTALL_PACKAGE_LIST > $BULK_INSTALL_PACKAGE_TMP && mv $BULK_INSTALL_PACKAGE_TMP $BULK_INSTALL_PACKAGE_LIST
PENDING_UPDATE=true
{%- if not AUTO_UPGRADE_INTEGRATIONS %}
else
echo "skipping available upgrade for in use integration - $package_name."
fi
{%- endif %}
fi
fi
{% endif %}
else
echo "Skipping $package_name..."
fi
done <<< "$(jq -c '.packages[]' "$INSTALLED_PACKAGE_LIST")"
if [ "$PENDING_UPDATE" = true ]; then
# Run bulk install of packages
elastic_fleet_bulk_package_install $BULK_INSTALL_PACKAGE_LIST > $BULK_INSTALL_OUTPUT
else
echo "Elastic integrations don't appear to need installation/updating..."
fi
# Write out file for generating index/component/ilm templates
latest_installed_package_list=$(elastic_fleet_installed_packages)
echo $latest_installed_package_list | jq '[.items[] | {name: .name, es_index_patterns: .dataStreams}]' > $PACKAGE_COMPONENTS
else
# This is the installation of add-on integrations and upgrade of existing integrations. Exiting without error, next highstate will attempt to re-run.
echo "Elastic Fleet does not appear to be responding... Exiting... "
exit 0
fi
else
# This message will appear when an update to core integration is made and this script is run at the same time as
# elasticsearch.enabled -> detects change to core index settings -> deletes estemplates.txt
echo "Elasticsearch may not be fully configured yet or is currently updating core index settings."
exit 0
fi
@@ -32,7 +32,7 @@ if ! echo "$output" | grep -q "so-manager_kafka"; then
--arg KAFKACA "$KAFKACA" \
--arg MANAGER_IP "{{ GLOBALS.manager_ip }}:9092" \
--arg KAFKA_OUTPUT_VERSION "$KAFKA_OUTPUT_VERSION" \
'{ "name": "grid-kafka", "id": "so-manager_kafka", "type": "kafka", "hosts": [ $MANAGER_IP ], "is_default": false, "is_default_monitoring": false, "config_yaml": "", "ssl": { "certificate_authorities": [ $KAFKACA ], "certificate": $KAFKACRT, "key": $KAFKAKEY, "verification_mode": "full" }, "proxy_id": null, "client_id": "Elastic", "version": $KAFKA_OUTPUT_VERSION, "compression": "none", "auth_type": "ssl", "partition": "round_robin", "round_robin": { "group_events": 1 }, "topics":[{"topic":"%{[event.module]}-securityonion","when":{"type":"regexp","condition":"event.module:.+"}},{"topic":"default-securityonion"}], "headers": [ { "key": "", "value": "" } ], "timeout": 30, "broker_timeout": 30, "required_acks": 1 }'
'{ "name": "grid-kafka", "id": "so-manager_kafka", "type": "kafka", "hosts": [ $MANAGER_IP ], "is_default": false, "is_default_monitoring": false, "config_yaml": "", "ssl": { "certificate_authorities": [ $KAFKACA ], "certificate": $KAFKACRT, "key": $KAFKAKEY, "verification_mode": "full" }, "proxy_id": null, "client_id": "Elastic", "version": $KAFKA_OUTPUT_VERSION, "compression": "none", "auth_type": "ssl", "partition": "round_robin", "round_robin": { "group_events": 10 }, "topics":[{"topic":"default-securityonion"}], "headers": [ { "key": "", "value": "" } ], "timeout": 30, "broker_timeout": 30, "required_acks": 1 }'
)
curl -sK /opt/so/conf/elasticsearch/curl.config -L -X POST "localhost:5601/api/fleet/outputs" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING" -o /dev/null
refresh_output=$(curl -sK /opt/so/conf/elasticsearch/curl.config -L "http://localhost:5601/api/fleet/outputs" | jq -r .items[].id)
+1 -1
View File
@@ -15,7 +15,7 @@
elastic_auth_pillar:
file.managed:
- name: /opt/so/saltstack/local/pillar/elasticsearch/auth.sls
- mode: 600
- mode: 640
- reload_pillar: True
- contents: |
elasticsearch:
+8
View File
@@ -47,6 +47,7 @@ elasticsearch_sbin:
- file_mode: 755
- exclude_pat:
- so-elasticsearch-pipelines # exclude this because we need to watch it for changes, we sync it in another state
- show_changes: False
elasticsearch_sbin_jinja:
file.recurse:
@@ -60,6 +61,7 @@ elasticsearch_sbin_jinja:
- so-elasticsearch-ilm-policy-load # exclude this because we need to watch it for changes, we sync it in another state
- defaults:
GLOBALS: {{ GLOBALS }}
- show_changes: False
so-elasticsearch-ilm-policy-load-script:
file.managed:
@@ -69,6 +71,7 @@ so-elasticsearch-ilm-policy-load-script:
- group: 939
- mode: 754
- template: jinja
- show_changes: False
so-elasticsearch-pipelines-script:
file.managed:
@@ -77,6 +80,7 @@ so-elasticsearch-pipelines-script:
- user: 930
- group: 939
- mode: 754
- show_changes: False
esingestdir:
file.directory:
@@ -110,6 +114,7 @@ esingestdynamicconf:
- user: 930
- group: 939
- template: jinja
- show_changes: False
esingestconf:
file.recurse:
@@ -117,6 +122,7 @@ esingestconf:
- source: salt://elasticsearch/files/ingest
- user: 930
- group: 939
- show_changes: False
# Remove .fleet_final_pipeline-1 because we are using global@custom now
so-fleet-final-pipeline-remove:
@@ -153,6 +159,7 @@ esyml:
- defaults:
ESCONFIG: {{ ELASTICSEARCHMERGED.config }}
- template: jinja
- show_changes: False
esroles:
file.recurse:
@@ -162,6 +169,7 @@ esroles:
- template: jinja
- user: 930
- group: 939
- show_changes: False
nsmesdir:
file.directory:
File diff suppressed because it is too large Load Diff
+11 -3
View File
@@ -116,6 +116,7 @@ escomponenttemplates:
- clean: True
- onchanges_in:
- file: so-elasticsearch-templates-reload
- show_changes: False
# Auto-generate templates from defaults file
{% for index, settings in ES_INDEX_SETTINGS.items() %}
@@ -127,6 +128,7 @@ es_index_template_{{index}}:
- defaults:
TEMPLATE_CONFIG: {{ settings.index_template }}
- template: jinja
- show_changes: False
- onchanges_in:
- file: so-elasticsearch-templates-reload
{% endif %}
@@ -146,12 +148,13 @@ es_template_{{TEMPLATE.split('.')[0] | replace("/","_") }}:
{% endif %}
- user: 930
- group: 939
- show_changes: False
- onchanges_in:
- file: so-elasticsearch-templates-reload
{% endfor %}
{% endif %}
{% if GLOBALS.role in GLOBALS.manager_roles %}
{% if GLOBALS.role in GLOBALS.manager_roles %}
so-es-cluster-settings:
cmd.run:
- name: /usr/sbin/so-elasticsearch-cluster-settings
@@ -160,7 +163,7 @@ so-es-cluster-settings:
- require:
- docker_container: so-elasticsearch
- file: elasticsearch_sbin_jinja
{% endif %}
{% endif %}
so-elasticsearch-ilm-policy-load:
cmd.run:
@@ -201,12 +204,17 @@ so-elasticsearch-roles-load:
- docker_container: so-elasticsearch
- file: elasticsearch_sbin_jinja
{% if grains.role in ['so-eval', 'so-standalone', 'so-managersearch', 'so-heavynode', 'so-manager'] %}
{% if grains.role in ['so-managersearch', 'so-manager'] %}
{% set ap = "absent" %}
{% endif %}
{% if grains.role in ['so-eval', 'so-standalone', 'so-heavynode'] %}
{% if ELASTICSEARCHMERGED.index_clean %}
{% set ap = "present" %}
{% else %}
{% set ap = "absent" %}
{% endif %}
{% endif %}
{% if grains.role in ['so-eval', 'so-standalone', 'so-managersearch', 'so-heavynode', 'so-manager'] %}
so-elasticsearch-indices-delete:
cron.{{ap}}:
- name: /usr/sbin/so-elasticsearch-indices-delete > /opt/so/log/elasticsearch/cron-elasticsearch-indices-delete.log 2>&1
@@ -8,7 +8,9 @@
"processors": [
{ "set": { "ignore_failure": true, "field": "event.module", "value": "elastic_agent" } },
{ "split": { "if": "ctx.event?.dataset != null && ctx.event.dataset.contains('.')", "field": "event.dataset", "separator": "\\.", "target_field": "module_temp" } },
{ "split": { "if": "ctx.data_stream?.dataset != null && ctx.data_stream?.dataset.contains('.')", "field":"data_stream.dataset", "separator":"\\.", "target_field":"datastream_dataset_temp", "ignore_missing":true } },
{ "set": { "if": "ctx.module_temp != null", "override": true, "field": "event.module", "value": "{{module_temp.0}}" } },
{ "set": { "if": "ctx.datastream_dataset_temp != null && ctx.datastream_dataset_temp[0] == 'network_traffic'", "field":"event.module", "value":"{{ datastream_dataset_temp.0 }}", "ignore_failure":true, "ignore_empty_value":true, "description":"Fix EA network packet capture" } },
{ "gsub": { "if": "ctx.event?.dataset != null && ctx.event.dataset.contains('.')", "field": "event.dataset", "pattern": "^[^.]*.", "replacement": "", "target_field": "dataset_tag_temp" } },
{ "append": { "if": "ctx.dataset_tag_temp != null", "field": "tags", "value": "{{dataset_tag_temp}}", "allow_duplicates": false } },
{ "set": { "if": "ctx.network?.direction == 'egress'", "override": true, "field": "network.initiated", "value": "true" } },
@@ -22,6 +24,6 @@
{ "set": { "if": "ctx.event?.module == 'fim'", "override": true, "field": "event.module", "value": "file_integrity" } },
{ "rename": { "if": "ctx.winlog?.provider_name == 'Microsoft-Windows-Windows Defender'", "ignore_missing": true, "field": "winlog.event_data.Threat Name", "target_field": "winlog.event_data.threat_name" } },
{ "set": { "if": "ctx?.metadata?.kafka != null" , "field": "kafka.id", "value": "{{metadata.kafka.partition}}{{metadata.kafka.offset}}{{metadata.kafka.timestamp}}", "ignore_failure": true } },
{ "remove": { "field": [ "message2", "type", "fields", "category", "module", "dataset", "event.dataset_temp", "dataset_tag_temp", "module_temp" ], "ignore_missing": true, "ignore_failure": true } }
{ "remove": { "field": [ "message2", "type", "fields", "category", "module", "dataset", "event.dataset_temp", "dataset_tag_temp", "module_temp", "datastream_dataset_temp" ], "ignore_missing": true, "ignore_failure": true } }
]
}
@@ -1,389 +0,0 @@
{
"description": "Pipeline for PFsense",
"processors": [
{
"set": {
"field": "ecs.version",
"value": "8.10.0"
}
},
{
"set": {
"field": "observer.vendor",
"value": "netgate"
}
},
{
"set": {
"field": "observer.type",
"value": "firewall"
}
},
{
"rename": {
"field": "message",
"target_field": "event.original"
}
},
{
"set": {
"field": "event.kind",
"value": "event"
}
},
{
"set": {
"field": "event.timezone",
"value": "{{_tmp.tz_offset}}",
"if": "ctx._tmp?.tz_offset != null && ctx._tmp?.tz_offset != 'local'"
}
},
{
"grok": {
"description": "Parse syslog header",
"field": "event.original",
"patterns": [
"^(%{ECS_SYSLOG_PRI})?%{TIMESTAMP} %{GREEDYDATA:message}"
],
"pattern_definitions": {
"ECS_SYSLOG_PRI": "<%{NONNEGINT:log.syslog.priority:long}>(\\d )?",
"TIMESTAMP": "(?:%{BSD_TIMESTAMP_FORMAT}|%{SYSLOG_TIMESTAMP_FORMAT})",
"BSD_TIMESTAMP_FORMAT": "%{SYSLOGTIMESTAMP:_tmp.timestamp}(%{SPACE}%{BSD_PROCNAME}|%{SPACE}%{OBSERVER}%{SPACE}%{BSD_PROCNAME})(\\[%{POSINT:process.pid:long}\\])?:",
"BSD_PROCNAME": "(?:\\b%{NAME:process.name}|\\(%{NAME:process.name}\\))",
"NAME": "[[[:alnum:]]_-]+",
"SYSLOG_TIMESTAMP_FORMAT": "%{TIMESTAMP_ISO8601:_tmp.timestamp8601}%{SPACE}%{OBSERVER}%{SPACE}%{PROCESS}%{SPACE}(%{POSINT:process.pid:long}|-) - (-|%{META})",
"TIMESTAMP_ISO8601": "%{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE:event.timezone}?",
"OBSERVER": "(?:%{IP:observer.ip}|%{HOSTNAME:observer.name})",
"PROCESS": "(\\(%{DATA:process.name}\\)|(?:%{UNIXPATH}*/)?%{BASEPATH:process.name})",
"BASEPATH": "[[[:alnum:]]_%!$@:.,+~-]+",
"META": "\\[[^\\]]*\\]"
}
}
},
{
"date": {
"if": "ctx._tmp.timestamp8601 != null",
"field": "_tmp.timestamp8601",
"target_field": "@timestamp",
"formats": [
"ISO8601"
]
}
},
{
"date": {
"if": "ctx.event?.timezone != null && ctx._tmp?.timestamp != null",
"field": "_tmp.timestamp",
"target_field": "@timestamp",
"formats": [
"MMM d HH:mm:ss",
"MMM d HH:mm:ss",
"MMM dd HH:mm:ss"
],
"timezone": "{{ event.timezone }}"
}
},
{
"grok": {
"description": "Set Event Provider",
"field": "process.name",
"patterns": [
"^%{HYPHENATED_WORDS:event.provider}"
],
"pattern_definitions": {
"HYPHENATED_WORDS": "\\b[A-Za-z0-9_]+(-[A-Za-z_]+)*\\b"
}
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-firewall",
"if": "ctx.event.provider == 'filterlog'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-openvpn",
"if": "ctx.event.provider == 'openvpn'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-ipsec",
"if": "ctx.event.provider == 'charon'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-dhcp",
"if": "[\"dhcpd\", \"dhclient\", \"dhcp6c\"].contains(ctx.event.provider)"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-unbound",
"if": "ctx.event.provider == 'unbound'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-haproxy",
"if": "ctx.event.provider == 'haproxy'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-php-fpm",
"if": "ctx.event.provider == 'php-fpm'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-squid",
"if": "ctx.event.provider == 'squid'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-suricata",
"if": "ctx.event.provider == 'suricata'"
}
},
{
"drop": {
"if": "![\"filterlog\", \"openvpn\", \"charon\", \"dhcpd\", \"dhclient\", \"dhcp6c\", \"unbound\", \"haproxy\", \"php-fpm\", \"squid\", \"suricata\"].contains(ctx.event?.provider)"
}
},
{
"append": {
"field": "event.category",
"value": "network",
"if": "ctx.network != null"
}
},
{
"convert": {
"field": "source.address",
"target_field": "source.ip",
"type": "ip",
"ignore_failure": true,
"ignore_missing": true
}
},
{
"convert": {
"field": "destination.address",
"target_field": "destination.ip",
"type": "ip",
"ignore_failure": true,
"ignore_missing": true
}
},
{
"set": {
"field": "network.type",
"value": "ipv6",
"if": "ctx.source?.ip != null && ctx.source.ip.contains(\":\")"
}
},
{
"set": {
"field": "network.type",
"value": "ipv4",
"if": "ctx.source?.ip != null && ctx.source.ip.contains(\".\")"
}
},
{
"geoip": {
"field": "source.ip",
"target_field": "source.geo",
"ignore_missing": true
}
},
{
"geoip": {
"field": "destination.ip",
"target_field": "destination.geo",
"ignore_missing": true
}
},
{
"geoip": {
"ignore_missing": true,
"database_file": "GeoLite2-ASN.mmdb",
"field": "source.ip",
"target_field": "source.as",
"properties": [
"asn",
"organization_name"
]
}
},
{
"geoip": {
"database_file": "GeoLite2-ASN.mmdb",
"field": "destination.ip",
"target_field": "destination.as",
"properties": [
"asn",
"organization_name"
],
"ignore_missing": true
}
},
{
"rename": {
"field": "source.as.asn",
"target_field": "source.as.number",
"ignore_missing": true
}
},
{
"rename": {
"field": "source.as.organization_name",
"target_field": "source.as.organization.name",
"ignore_missing": true
}
},
{
"rename": {
"field": "destination.as.asn",
"target_field": "destination.as.number",
"ignore_missing": true
}
},
{
"rename": {
"field": "destination.as.organization_name",
"target_field": "destination.as.organization.name",
"ignore_missing": true
}
},
{
"community_id": {
"target_field": "network.community_id",
"ignore_failure": true
}
},
{
"grok": {
"field": "observer.ingress.interface.name",
"patterns": [
"%{DATA}.%{NONNEGINT:observer.ingress.vlan.id}"
],
"ignore_missing": true,
"ignore_failure": true
}
},
{
"set": {
"field": "network.vlan.id",
"copy_from": "observer.ingress.vlan.id",
"ignore_empty_value": true
}
},
{
"append": {
"field": "related.ip",
"value": "{{destination.ip}}",
"allow_duplicates": false,
"if": "ctx.destination?.ip != null"
}
},
{
"append": {
"field": "related.ip",
"value": "{{source.ip}}",
"allow_duplicates": false,
"if": "ctx.source?.ip != null"
}
},
{
"append": {
"field": "related.ip",
"value": "{{source.nat.ip}}",
"allow_duplicates": false,
"if": "ctx.source?.nat?.ip != null"
}
},
{
"append": {
"field": "related.hosts",
"value": "{{destination.domain}}",
"if": "ctx.destination?.domain != null"
}
},
{
"append": {
"field": "related.user",
"value": "{{user.name}}",
"if": "ctx.user?.name != null"
}
},
{
"set": {
"field": "network.direction",
"value": "{{network.direction}}bound",
"if": "ctx.network?.direction != null && ctx.network?.direction =~ /^(in|out)$/"
}
},
{
"remove": {
"field": [
"_tmp"
],
"ignore_failure": true
}
},
{
"script": {
"lang": "painless",
"description": "This script processor iterates over the whole document to remove fields with null values.",
"source": "void handleMap(Map map) {\n for (def x : map.values()) {\n if (x instanceof Map) {\n handleMap(x);\n } else if (x instanceof List) {\n handleList(x);\n }\n }\n map.values().removeIf(v -> v == null || (v instanceof String && v == \"-\"));\n}\nvoid handleList(List list) {\n for (def x : list) {\n if (x instanceof Map) {\n handleMap(x);\n } else if (x instanceof List) {\n handleList(x);\n }\n }\n}\nhandleMap(ctx);\n"
}
},
{
"remove": {
"field": "event.original",
"if": "ctx.tags == null || !(ctx.tags.contains('preserve_original_event'))",
"ignore_failure": true,
"ignore_missing": true
}
},
{
"pipeline": {
"name": "logs-pfsense.log@custom",
"ignore_missing_pipeline": true
}
}
],
"on_failure": [
{
"remove": {
"field": [
"_tmp"
],
"ignore_failure": true
}
},
{
"set": {
"field": "event.kind",
"value": "pipeline_error"
}
},
{
"append": {
"field": "error.message",
"value": "{{{ _ingest.on_failure_message }}}"
}
}
],
"_meta": {
"managed_by": "fleet",
"managed": true,
"package": {
"name": "pfsense"
}
}
}
@@ -1,10 +1,17 @@
{
"description": "Pipeline for PFsense",
"_meta": {
"managed_by": "fleet",
"managed": true,
"package": {
"name": "pfsense"
}
},
"processors": [
{
"set": {
"field": "ecs.version",
"value": "8.11.0"
"value": "8.17.0"
}
},
{
@@ -36,7 +43,7 @@
{
"set": {
"field": "event.timezone",
"value": "{{_tmp.tz_offset}}",
"value": "{{{_tmp.tz_offset}}}",
"if": "ctx._tmp?.tz_offset != null && ctx._tmp?.tz_offset != 'local'"
}
},
@@ -83,7 +90,7 @@
"MMM d HH:mm:ss",
"MMM dd HH:mm:ss"
],
"timezone": "{{ event.timezone }}"
"timezone": "{{{ event.timezone }}}"
}
},
{
@@ -100,61 +107,67 @@
},
{
"pipeline": {
"name": "logs-pfsense.log-1.19.1-firewall",
"name": "logs-pfsense.log-1.21.0-firewall",
"if": "ctx.event.provider == 'filterlog'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.19.1-openvpn",
"name": "logs-pfsense.log-1.21.0-openvpn",
"if": "ctx.event.provider == 'openvpn'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.19.1-ipsec",
"name": "logs-pfsense.log-1.21.0-ipsec",
"if": "ctx.event.provider == 'charon'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.19.1-dhcp",
"name": "logs-pfsense.log-1.21.0-dhcp",
"if": "[\"dhcpd\", \"dhclient\", \"dhcp6c\"].contains(ctx.event.provider)"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.19.1-unbound",
"name": "logs-pfsense.log-1.21.0-unbound",
"if": "ctx.event.provider == 'unbound'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.19.1-haproxy",
"name": "logs-pfsense.log-1.21.0-haproxy",
"if": "ctx.event.provider == 'haproxy'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.19.1-php-fpm",
"name": "logs-pfsense.log-1.21.0-php-fpm",
"if": "ctx.event.provider == 'php-fpm'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.19.1-squid",
"name": "logs-pfsense.log-1.21.0-squid",
"if": "ctx.event.provider == 'squid'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-suricata",
"pipeline": {
"name": "logs-pfsense.log-1.21.0-snort",
"if": "ctx.event.provider == 'snort'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.21.0-suricata",
"if": "ctx.event.provider == 'suricata'"
}
},
{
"drop": {
"if": "![\"filterlog\", \"openvpn\", \"charon\", \"dhcpd\", \"dhclient\", \"dhcp6c\", \"unbound\", \"haproxy\", \"php-fpm\", \"squid\", \"suricata\"].contains(ctx.event?.provider)"
"if": "![\"filterlog\", \"openvpn\", \"charon\", \"dhcpd\", \"dhclient\", \"dhcp6c\", \"unbound\", \"haproxy\", \"php-fpm\", \"squid\", \"snort\", \"suricata\"].contains(ctx.event?.provider)"
}
},
{
@@ -288,7 +301,7 @@
{
"append": {
"field": "related.ip",
"value": "{{destination.ip}}",
"value": "{{{destination.ip}}}",
"allow_duplicates": false,
"if": "ctx.destination?.ip != null"
}
@@ -296,7 +309,7 @@
{
"append": {
"field": "related.ip",
"value": "{{source.ip}}",
"value": "{{{source.ip}}}",
"allow_duplicates": false,
"if": "ctx.source?.ip != null"
}
@@ -304,7 +317,7 @@
{
"append": {
"field": "related.ip",
"value": "{{source.nat.ip}}",
"value": "{{{source.nat.ip}}}",
"allow_duplicates": false,
"if": "ctx.source?.nat?.ip != null"
}
@@ -312,21 +325,21 @@
{
"append": {
"field": "related.hosts",
"value": "{{destination.domain}}",
"value": "{{{destination.domain}}}",
"if": "ctx.destination?.domain != null"
}
},
{
"append": {
"field": "related.user",
"value": "{{user.name}}",
"value": "{{{user.name}}}",
"if": "ctx.user?.name != null"
}
},
{
"set": {
"field": "network.direction",
"value": "{{network.direction}}bound",
"value": "{{{network.direction}}}bound",
"if": "ctx.network?.direction != null && ctx.network?.direction =~ /^(in|out)$/"
}
},
@@ -403,12 +416,5 @@
"value": "{{{ _ingest.on_failure_message }}}"
}
}
],
"_meta": {
"managed_by": "fleet",
"managed": true,
"package": {
"name": "pfsense"
}
}
}
]
}
@@ -1,9 +1,25 @@
{
"description":"zeek.ldap_search",
"processors":[
{"pipeline": {"name": "zeek.ldap", "ignore_missing_pipeline":true,"ignore_failure":true}},
{"set": {"field": "event.dataset", "value":"ldap_search"}},
{"remove": {"field": "tags", "ignore_missing":true}},
{"set": {"field": "event.dataset", "value":"ldap_search"}},
{"json": {"field": "message", "target_field": "message2", "ignore_failure": true}},
{"rename": {"field": "message2.message_id", "target_field": "ldap.message_id", "ignore_missing": true}},
{"rename": {"field": "message2.opcode", "target_field": "ldap.opcode", "ignore_missing": true}},
{"rename": {"field": "message2.result", "target_field": "ldap.result", "ignore_missing": true}},
{"rename": {"field": "message2.diagnostic_message", "target_field": "ldap.diagnostic_message", "ignore_missing": true}},
{"rename": {"field": "message2.version", "target_field": "ldap.version", "ignore_missing": true}},
{"rename": {"field": "message2.object", "target_field": "ldap.object", "ignore_missing": true}},
{"rename": {"field": "message2.argument", "target_field": "ldap.argument", "ignore_missing": true}},
{"rename": {"field": "message2.scope", "target_field": "ldap_search.scope", "ignore_missing":true}},
{"rename": {"field": "message2.deref_aliases", "target_field": "ldap_search.deref_aliases", "ignore_missing":true}},
{"rename": {"field": "message2.base_object", "target_field": "ldap.object", "ignore_missing":true}},
{"rename": {"field": "message2.result_count", "target_field": "ldap_search.result_count", "ignore_missing":true}},
{"rename": {"field": "message2.filter", "target_field": "ldap_search.filter", "ignore_missing":true}},
{"rename": {"field": "message2.attributes", "target_field": "ldap_search.attributes", "ignore_missing":true}},
{"script": {"source": "if (ctx.containsKey('ldap') && ctx.ldap.containsKey('diagnostic_message') && ctx.ldap.diagnostic_message != null) {\n String message = ctx.ldap.diagnostic_message;\n\n // get user and property from SASL success\n if (message.toLowerCase().contains(\"sasl(0): successful result\")) {\n Pattern pattern = /user:\\s*([^ ]+)\\s*property:\\s*([^ ]+)/i;\n Matcher matcher = pattern.matcher(message);\n if (matcher.find()) {\n ctx.ldap.user_email = matcher.group(1); // Extract user email\n ctx.ldap.property = matcher.group(2); // Extract property\n }\n }\n if (message.toLowerCase().contains(\"ldaperr:\")) {\n Pattern pattern = /comment:\\s*([^,]+)/i;\n Matcher matcher = pattern.matcher(message);\n\n if (matcher.find()) {\n ctx.ldap.comment = matcher.group(1);\n }\n }\n }","ignore_failure": true}},
{"script": {"source": "if (ctx.containsKey('ldap') && ctx.ldap.containsKey('object') && ctx.ldap.object != null) {\n String message = ctx.ldap.object;\n\n // parse common name from ldap object\n if (message.toLowerCase().contains(\"cn=\")) {\n Pattern pattern = /cn=([^,]+)/i;\n Matcher matcher = pattern.matcher(message);\n if (matcher.find()) {\n ctx.ldap.common_name = matcher.group(1); // Extract CN\n }\n }\n // build domain from ldap object\n if (message.toLowerCase().contains(\"dc=\")) {\n Pattern dcPattern = /dc=([^,]+)/i;\n Matcher dcMatcher = dcPattern.matcher(message);\n\n StringBuilder domainBuilder = new StringBuilder();\n while (dcMatcher.find()) {\n if (domainBuilder.length() > 0 ){\n domainBuilder.append(\".\");\n }\n domainBuilder.append(dcMatcher.group(1));\n }\n if (domainBuilder.length() > 0) {\n ctx.ldap.domain = domainBuilder.toString();\n }\n }\n // create list of any organizational units from ldap object\n if (message.toLowerCase().contains(\"ou=\")) {\n Pattern ouPattern = /ou=([^,]+)/i;\n Matcher ouMatcher = ouPattern.matcher(message);\n ctx.ldap.organizational_unit = [];\n\n while (ouMatcher.find()) {\n ctx.ldap.organizational_unit.add(ouMatcher.group(1));\n }\n if(ctx.ldap.organizational_unit.isEmpty()) {\n ctx.remove(\"ldap.organizational_unit\");\n }\n }\n}\n","ignore_failure": true}},
{"remove": {"field": "message2.tags", "ignore_failure": true}},
{"remove": {"field": ["host"], "ignore_failure": true}},
{"pipeline": {"name": "zeek.common"}}
]
}
+16
View File
@@ -0,0 +1,16 @@
{
"description" : "zeek.ntp",
"processors":[
{"set": {"field":"event.dataset", "value":"ntp", "ignore_failure":true}},
{"json": {"field":"message", "target_field":"message2", "ignore_failure":true}},
{"rename": {"field":"message2.version", "target_field":"ntp.version", "ignore_missing":true}},
{"rename": {"field":"message2.mode", "target_field":"ntp.mode", "ignore_missing":true}},
{"rename": {"field":"message2.poll", "target_field":"ntp.poll", "ignore_missing":true}},
{"rename": {"field":"message2.precision", "target_field":"ntp.precision", "ignore_missing":true}},
{"rename": {"field":"message2.org_time", "target_field":"ntp.org_time", "ignore_missing":true}},
{"rename": {"field":"message2.xmt_time", "target_field":"ntp.xmt_time", "ignore_missing":true}},
{"date": {"field":"ntp.org_time", "target_field":"ntp.org_time", "formats":["UNIX", "UNIX_MS"], "ignore_failure": true, "if":"ctx?.ntp?.org_time != null"}},
{"date": {"field":"ntp.xmt_time", "target_field":"ntp.xmt_time", "formats":["UNIX", "UNIX_MS"], "ignore_failure": true, "if":"ctx?.ntp?.xmt_time != null"}},
{"pipeline":{"name":"zeek.common"}}
]
}
@@ -0,0 +1,10 @@
{
"description":"zeek.traceroute",
"processors":[
{"set": {"field":"event.dataset", "value":"traceroute" }},
{"json": {"field":"message", "target_field":"message2" }},
{"rename": {"field":"message2.src", "target_field":"source.ip", "ignore_missing":true,"ignore_failure":true}},
{"rename": {"field":"message2.dst", "target_field":"destination.ip", "ignore_missing":true,"ignore_failure":true}},
{"pipeline": {"name":"zeek.common"}}
]
}
+20 -159
View File
@@ -77,6 +77,13 @@ elasticsearch:
custom008: *pipelines
custom009: *pipelines
custom010: *pipelines
managed_integrations:
description: List of integrations to add into SOC config UI. Enter the full or partial integration name. Eg. 1password, 1pass
forcedType: "[]string"
multiline: True
global: True
advanced: True
helpLink: elasticsearch.html
index_settings:
global_overrides:
index_template:
@@ -126,7 +133,7 @@ elasticsearch:
helpLink: elasticsearch.html
cold:
min_age:
description: Minimum age of index. ex. 60d - This determines when the index should be moved to the cold tier. While still searchable, this tier is typically optimized for lower storage costs rather than search speed.
description: Minimum age of index. ex. 60d - This determines when the index should be moved to the cold tier. While still searchable, this tier is typically optimized for lower storage costs rather than search speed. Its important to note that this is calculated relative to the rollover date (NOT the original creation date of the index). For example, if you have an index that is set to rollover after 30 days and cold min_age set to 60 then there will be 30 days from index creation to rollover and then an additional 60 days before moving to cold tier.
regex: ^[0-9]{1,5}d$
forcedType: string
global: True
@@ -139,10 +146,11 @@ elasticsearch:
helpLink: elasticsearch.html
warm:
min_age:
description: Minimum age of index. ex. 30d - This determines when the index should be moved to the warm tier. Nodes in the warm tier generally dont need to be as fast as those in the hot tier.
description: Minimum age of index. ex. 30d - This determines when the index should be moved to the warm tier. Nodes in the warm tier generally dont need to be as fast as those in the hot tier. Its important to note that this is calculated relative to the rollover date (NOT the original creation date of the index). For example, if you have an index that is set to rollover after 30 days and warm min_age set to 30 then there will be 30 days from index creation to rollover and then an additional 30 days before moving to warm tier.
regex: ^[0-9]{1,5}d$
forcedType: string
global: True
helpLink: elasticsearch.html
actions:
set_priority:
priority:
@@ -152,7 +160,7 @@ elasticsearch:
helpLink: elasticsearch.html
delete:
min_age:
description: Minimum age of index. ex. 90d - This determines when the index should be deleted.
description: Minimum age of index. ex. 90d - This determines when the index should be deleted. Its important to note that this is calculated relative to the rollover date (NOT the original creation date of the index). For example, if you have an index that is set to rollover after 30 days and delete min_age set to 90 then there will be 30 days from index creation to rollover and then an additional 90 days before deletion.
regex: ^[0-9]{1,5}d$
forcedType: string
global: True
@@ -166,7 +174,7 @@ elasticsearch:
index_template:
index_patterns:
description: Patterns for matching multiple indices or tables.
forceType: "[]string"
forcedType: "[]string"
multiline: True
global: True
advanced: True
@@ -281,7 +289,7 @@ elasticsearch:
helpLink: elasticsearch.html
warm:
min_age:
description: Minimum age of index. ex. 30d - This determines when the index should be moved to the warm tier. Nodes in the warm tier generally dont need to be as fast as those in the hot tier.
description: Minimum age of index. ex. 30d - This determines when the index should be moved to the warm tier. Nodes in the warm tier generally dont need to be as fast as those in the hot tier. Its important to note that this is calculated relative to the rollover date (NOT the original creation date of the index). For example, if you have an index that is set to rollover after 30 days and warm min_age set to 30 then there will be 30 days from index creation to rollover and then an additional 30 days before moving to warm tier.
regex: ^[0-9]{1,5}d$
forcedType: string
global: True
@@ -308,7 +316,7 @@ elasticsearch:
helpLink: elasticsearch.html
cold:
min_age:
description: Minimum age of index. ex. 60d - This determines when the index should be moved to the cold tier. While still searchable, this tier is typically optimized for lower storage costs rather than search speed.
description: Minimum age of index. ex. 60d - This determines when the index should be moved to the cold tier. While still searchable, this tier is typically optimized for lower storage costs rather than search speed. Its important to note that this is calculated relative to the rollover date (NOT the original creation date of the index). For example, if you have an index that is set to rollover after 30 days and cold min_age set to 60 then there will be 30 days from index creation to rollover and then an additional 60 days before moving to cold tier.
regex: ^[0-9]{1,5}d$
forcedType: string
global: True
@@ -324,7 +332,7 @@ elasticsearch:
helpLink: elasticsearch.html
delete:
min_age:
description: Minimum age of index. This determines when the index should be deleted.
description: Minimum age of index. ex. 90d - This determines when the index should be deleted. Its important to note that this is calculated relative to the rollover date (NOT the original creation date of the index). For example, if you have an index that is set to rollover after 30 days and delete min_age set to 90 then there will be 30 days from index creation to rollover and then an additional 90 days before deletion.
regex: ^[0-9]{1,5}d$
forcedType: string
global: True
@@ -358,163 +366,13 @@ elasticsearch:
so-logs-windows_x_powershell_operational: *indexSettings
so-logs-windows_x_sysmon_operational: *indexSettings
so-logs-winlog_x_winlog: *indexSettings
so-logs-apache_x_access: *indexSettings
so-logs-apache_x_error: *indexSettings
so-logs-auditd_x_log: *indexSettings
so-logs-aws_x_cloudtrail: *indexSettings
so-logs-aws_x_cloudwatch_logs: *indexSettings
so-logs-aws_x_ec2_logs: *indexSettings
so-logs-aws_x_elb_logs: *indexSettings
so-logs-aws_x_firewall_logs: *indexSettings
so-logs-aws_x_route53_public_logs: *indexSettings
so-logs-aws_x_route53_resolver_logs: *indexSettings
so-logs-aws_x_s3access: *indexSettings
so-logs-aws_x_vpcflow: *indexSettings
so-logs-aws_x_waf: *indexSettings
so-logs-azure_x_activitylogs: *indexSettings
so-logs-azure_x_application_gateway: *indexSettings
so-logs-azure_x_auditlogs: *indexSettings
so-logs-azure_x_eventhub: *indexSettings
so-logs-azure_x_firewall_logs: *indexSettings
so-logs-azure_x_identity_protection: *indexSettings
so-logs-azure_x_platformlogs: *indexSettings
so-logs-azure_x_provisioning: *indexSettings
so-logs-azure_x_signinlogs: *indexSettings
so-logs-azure_x_springcloudlogs: *indexSettings
so-logs-barracuda_x_waf: *indexSettings
so-logs-barracuda_cloudgen_firewall_x_log: *indexSettings
so-logs-cef_x_log: *indexSettings
so-logs-cisco_asa_x_log: *indexSettings
so-logs-cisco_ftd_x_log: *indexSettings
so-logs-cisco_ios_x_log: *indexSettings
so-logs-cisco_ise_x_log: *indexSettings
so-logs-citrix_adc_x_interface: *indexSettings
so-logs-citrix_adc_x_lbvserver: *indexSettings
so-logs-citrix_adc_x_service: *indexSettings
so-logs-citrix_adc_x_system: *indexSettings
so-logs-citrix_adc_x_vpn: *indexSettings
so-logs-citrix_waf_x_log: *indexSettings
so-logs-cloudflare_x_audit: *indexSettings
so-logs-cloudflare_x_logpull: *indexSettings
so-logs-crowdstrike_x_alert: *indexSettings
so-logs-crowdstrike_x_falcon: *indexSettings
so-logs-crowdstrike_x_fdr: *indexSettings
so-logs-crowdstrike_x_host: *indexSettings
so-logs-darktrace_x_ai_analyst_alert: *indexSettings
so-logs-darktrace_x_model_breach_alert: *indexSettings
so-logs-darktrace_x_system_status_alert: *indexSettings
so-logs-detections_x_alerts: *indexSettings
so-logs-f5_bigip_x_log: *indexSettings
so-logs-fim_x_event: *indexSettings
so-logs-fortinet_x_clientendpoint: *indexSettings
so-logs-fortinet_x_firewall: *indexSettings
so-logs-fortinet_x_fortimail: *indexSettings
so-logs-fortinet_x_fortimanager: *indexSettings
so-logs-fortinet_x_fortigate: *indexSettings
so-logs-gcp_x_audit: *indexSettings
so-logs-gcp_x_dns: *indexSettings
so-logs-gcp_x_firewall: *indexSettings
so-logs-gcp_x_loadbalancing_logs: *indexSettings
so-logs-gcp_x_vpcflow: *indexSettings
so-logs-github_x_audit: *indexSettings
so-logs-github_x_code_scanning: *indexSettings
so-logs-github_x_dependabot: *indexSettings
so-logs-github_x_issues: *indexSettings
so-logs-github_x_secret_scanning: *indexSettings
so-logs-google_workspace_x_access_transparency: *indexSettings
so-logs-google_workspace_x_admin: *indexSettings
so-logs-google_workspace_x_alert: *indexSettings
so-logs-google_workspace_x_context_aware_access: *indexSettings
so-logs-google_workspace_x_device: *indexSettings
so-logs-google_workspace_x_drive: *indexSettings
so-logs-google_workspace_x_gcp: *indexSettings
so-logs-google_workspace_x_group_enterprise: *indexSettings
so-logs-google_workspace_x_groups: *indexSettings
so-logs-google_workspace_x_login: *indexSettings
so-logs-google_workspace_x_rules: *indexSettings
so-logs-google_workspace_x_saml: *indexSettings
so-logs-google_workspace_x_token: *indexSettings
so-logs-google_workspace_x_user_accounts: *indexSettings
so-logs-http_endpoint_x_generic: *indexSettings
so-logs-httpjson_x_generic: *indexSettings
so-logs-iis_x_access: *indexSettings
so-logs-iis_x_error: *indexSettings
so-logs-imperva_cloud_waf_x_event: *indexSettings
so-logs-juniper_x_junos: *indexSettings
so-logs-juniper_x_netscreen: *indexSettings
so-logs-juniper_x_srx: *indexSettings
so-logs-juniper_srx_x_log: *indexSettings
so-logs-kafka_log_x_generic: *indexSettings
so-logs-lastpass_x_detailed_shared_folder: *indexSettings
so-logs-lastpass_x_event_report: *indexSettings
so-logs-lastpass_x_user: *indexSettings
so-logs-m365_defender_x_event: *indexSettings
so-logs-m365_defender_x_incident: *indexSettings
so-logs-m365_defender_x_log: *indexSettings
so-logs-microsoft_defender_endpoint_x_log: *indexSettings
so-logs-microsoft_dhcp_x_log: *indexSettings
so-logs-microsoft_sqlserver_x_audit: *indexSettings
so-logs-microsoft_sqlserver_x_log: *indexSettings
so-logs-mysql_x_error: *indexSettings
so-logs-mysql_x_slowlog: *indexSettings
so-logs-netflow_x_log: *indexSettings
so-logs-nginx_x_access: *indexSettings
so-logs-nginx_x_error: *indexSettings
so-logs-o365_x_audit: *indexSettings
so-logs-okta_x_system: *indexSettings
so-logs-panw_x_panos: *indexSettings
so-logs-pfsense_x_log: *indexSettings
so-logs-proofpoint_tap_x_clicks_blocked: *indexSettings
so-logs-proofpoint_tap_x_clicks_permitted: *indexSettings
so-logs-proofpoint_tap_x_message_blocked: *indexSettings
so-logs-proofpoint_tap_x_message_delivered: *indexSettings
so-logs-sentinel_one_x_activity: *indexSettings
so-logs-sentinel_one_x_agent: *indexSettings
so-logs-sentinel_one_x_alert: *indexSettings
so-logs-sentinel_one_x_group: *indexSettings
so-logs-sentinel_one_x_threat: *indexSettings
so-logs-sonicwall_firewall_x_log: *indexSettings
so-logs-snort_x_log: *indexSettings
so-logs-symantec_endpoint_x_log: *indexSettings
so-logs-tenable_io_x_asset: *indexSettings
so-logs-tenable_io_x_plugin: *indexSettings
so-logs-tenable_io_x_scan: *indexSettings
so-logs-tenable_io_x_vulnerability: *indexSettings
so-logs-tenable_sc_x_asset: *indexSettings
so-logs-tenable_sc_x_plugin: *indexSettings
so-logs-tenable_sc_x_vulnerability: *indexSettings
so-logs-ti_abusech_x_malware: *indexSettings
so-logs-ti_abusech_x_malwarebazaar: *indexSettings
so-logs-ti_abusech_x_threatfox: *indexSettings
so-logs-ti_abusech_x_url: *indexSettings
so-logs-ti_anomali_x_threatstream: *indexSettings
so-logs-ti_cybersixgill_x_threat: *indexSettings
so-logs-ti_misp_x_threat: *indexSettings
so-logs-ti_misp_x_threat_attributes: *indexSettings
so-logs-ti_opencti_x_indicator: *indexSettings
so-logs-ti_otx_x_pulses_subscribed: *indexSettings
so-logs-ti_otx_x_threat: *indexSettings
so-logs-ti_recordedfuture_x_latest_ioc-template: *indexSettings
so-logs-ti_recordedfuture_x_threat: *indexSettings
so-logs-ti_threatq_x_threat: *indexSettings
so-logs-trend_micro_vision_one_x_alert: *indexSettings
so-logs-trend_micro_vision_one_x_audit: *indexSettings
so-logs-trend_micro_vision_one_x_detection: *indexSettings
so-logs-trendmicro_x_deep_security: *indexSettings
so-logs-zscaler_zia_x_alerts: *indexSettings
so-logs-zscaler_zia_x_dns: *indexSettings
so-logs-zscaler_zia_x_firewall: *indexSettings
so-logs-zscaler_zia_x_tunnel: *indexSettings
so-logs-zscaler_zia_x_web: *indexSettings
so-logs-zscaler_zpa_x_app_connector_status: *indexSettings
so-logs-zscaler_zpa_x_audit: *indexSettings
so-logs-zscaler_zpa_x_browser_access: *indexSettings
so-logs-zscaler_zpa_x_user_activity: *indexSettings
so-logs-zscaler_zpa_x_user_status: *indexSettings
so-logs-1password_x_item_usages: *indexSettings
so-logs-1password_x_signin_attempts: *indexSettings
so-logs-osquery-manager-actions: *indexSettings
so-logs-osquery-manager-action_x_responses: *indexSettings
so-logs-osquery-manager_x_action_x_responses: *indexSettings
so-logs-osquery-manager_x_result: *indexSettings
so-logs-elastic_agent_x_apm_server: *indexSettings
so-logs-elastic_agent_x_auditbeat: *indexSettings
so-logs-elastic_agent_x_cloudbeat: *indexSettings
@@ -538,6 +396,9 @@ elasticsearch:
so-metrics-endpoint_x_metrics: *indexSettings
so-metrics-endpoint_x_policy: *indexSettings
so-metrics-nginx_x_stubstatus: *indexSettings
so-metrics-vsphere_x_datastore: *indexSettings
so-metrics-vsphere_x_host: *indexSettings
so-metrics-vsphere_x_virtualmachine: *indexSettings
so-case: *indexSettings
so-common: *indexSettings
so-endgame: *indexSettings
+12
View File
@@ -14,6 +14,18 @@
{% set ES_INDEX_SETTINGS_ORIG = ELASTICSEARCHDEFAULTS.elasticsearch.index_settings %}
{# start generation of integration default index_settings #}
{% if salt['file.file_exists']('/opt/so/state/esfleet_package_components.json') %}
{% set check_package_components = salt['file.stats']('/opt/so/state/esfleet_package_components.json') %}
{% if check_package_components.size > 1 %}
{% from 'elasticfleet/integration-defaults.map.jinja' import ADDON_INTEGRATION_DEFAULTS %}
{% for index, settings in ADDON_INTEGRATION_DEFAULTS.items() %}
{% do ES_INDEX_SETTINGS_ORIG.update({index: settings}) %}
{% endfor %}
{% endif%}
{% endif %}
{# end generation of integration default index_settings #}
{% set ES_INDEX_SETTINGS_GLOBAL_OVERRIDES = {} %}
{% for index in ES_INDEX_SETTINGS_ORIG.keys() %}
{% do ES_INDEX_SETTINGS_GLOBAL_OVERRIDES.update({index: salt['defaults.merge'](ELASTICSEARCHDEFAULTS.elasticsearch.index_settings[index], PILLAR_GLOBAL_OVERRIDES, in_place=False)}) %}
@@ -29,7 +29,7 @@
"file": {
"properties": {
"line": {
"type": "integer"
"type": "long"
},
"name": {
"ignore_above": 1024,
@@ -0,0 +1,26 @@
{
"template": {
"mappings": {
"dynamic_templates": [],
"properties": {
"metadata": {
"properties": {
"kafka": {
"properties": {
"timestamp": {
"type": "date"
}
}
}
}
}
}
}
},
"_meta": {
"_meta": {
"documentation": "https://www.elastic.co/guide/en/ecs/current/ecs-log.html",
"ecs_version": "1.12.2"
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}
@@ -1,36 +0,0 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}

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