Compare commits

...

957 Commits

Author SHA1 Message Date
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
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
Mike Reeves
d430dd2b73 Merge pull request #14219 from Security-Onion-Solutions/2.4/dev
2.4.120
2025-02-12 11:14:56 -05:00
Mike Reeves
43a0020a9e Merge pull request #14220 from Security-Onion-Solutions/fixeroni
Merge Conflict Fix
2025-02-12 09:37:04 -05:00
Mike Reeves
b0e82cd59b Fix Conflict 2025-02-12 09:35:52 -05:00
Mike Reeves
237370f0c7 Merge pull request #14218 from Security-Onion-Solutions/2.4.120
2.4.120
2025-02-12 09:20:40 -05:00
Mike Reeves
69be367acf 2.4.120 2025-02-12 09:09:38 -05:00
Jorge Reyes
cdf8943f24 Merge pull request #14214 from Security-Onion-Solutions/reyesj2/rel
ES 8.17.2
2025-02-11 11:24:18 -06:00
reyesj2
fb0cd436d3 ES 8.17.2 TODO: Check import-evtx-logs.json for updated pipeline versions
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-02-11 11:23:04 -06:00
reyesj2
33f145a40b ensure network packet capture integration data has event.module:network_traffic 2025-02-10 13:16:39 -06:00
reyesj2
3b69ff9fc9 integration policy update 2025-02-10 13:16:25 -06:00
Jorge Reyes
66bc0d487c Merge pull request #14206 from Security-Onion-Solutions/reyesj2-patch-00
zeek.software typo
2025-02-07 15:27:52 -06:00
reyesj2
9bde70a8e2 zeek.software typo
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-02-07 15:19:40 -06:00
Jorge Reyes
322941f29a Merge pull request #14203 from Security-Onion-Solutions/reyesj2-patch-00
fix defining custom logstash pipelines when kafka is enabled
2025-02-07 07:52:11 -06:00
reyesj2
dd17ee7665 fix defining custom logstash pipelines when kafka is enabled 2025-02-06 22:19:24 -06:00
Jason Ertel
4b51066327 Merge pull request #14191 from Security-Onion-Solutions/jertel/wip
ca download; ignore shard errors on startup; clarify oidc id
2025-02-05 15:09:57 -05:00
Jason Ertel
bf19c6e730 ca download; ignore shard errors on startup; clarify oidc id 2025-02-05 15:04:04 -05:00
Josh Brower
12a2b491c3 Merge pull request #14190 from Security-Onion-Solutions/2.4/fixmsi
Refresh Agent installers
2025-02-05 10:22:17 -05:00
Joshua Brower
4636a8d9b1 Refresh Agent installers 2025-02-05 09:38:33 -05:00
Josh Brower
abbb0db1ff Merge pull request #14189 from Security-Onion-Solutions/2.4/fixmsi
Rework for MSI
2025-02-05 09:35:37 -05:00
Joshua Brower
95fe212202 Rework for MSI 2025-02-05 09:29:45 -05:00
coreyogburn
fbb9bf14e9 Merge pull request #14183 from Security-Onion-Solutions/cogburn/escalate-limit
New Limit on Bulk Creating Related Events
2025-02-04 15:24:53 -07:00
Corey Ogburn
23ebe966e0 Added Large Values Warning
maxBulkEscalateEvents now has a warning that large values may run into other limits.
2025-02-04 10:33:04 -07:00
Corey Ogburn
d0fa6eaf83 New Limit on Bulk Creating Related Events
Used by the UI and API to hint at a user that not every event will be attached to a case. Supports values up to 10,000 (the default limit on the number of documents returned by a single ES search).
2025-02-03 14:20:33 -07:00
Josh Brower
7a0309cdf4 Merge pull request #14179 from Security-Onion-Solutions/2.4/fixilmpolicy
Fix ip-mappings ILM
2025-02-03 09:35:55 -05:00
Joshua Brower
b874619f0d Fix ip-mappings ILM 2025-02-03 09:31:08 -05:00
Jason Ertel
028c73fd3a Merge pull request #14162 from Security-Onion-Solutions/TOoSmOotH-patch-2
Update so-functions
2025-01-29 10:12:20 -05:00
Mike Reeves
27e9773782 Update so-functions 2025-01-29 10:07:52 -05:00
Josh Patterson
7ae128dec6 Merge pull request #14161 from Security-Onion-Solutions/esdtsn
env discovery.type single-node change
2025-01-29 09:29:04 -05:00
Josh Patterson
fe4129c8e0 env discovery.type single-node change
only managers and heavynodes are eligible for discovery.type=single-node
2025-01-29 09:11:52 -05:00
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
Jason Ertel
ca0c1170ab Merge pull request #14140 from Security-Onion-Solutions/jertel/wip
fix issue with first-time api client permission toggling
2025-01-22 17:43:54 -05:00
Jason Ertel
db9387764d fix issue with first-time api client permission toggling 2025-01-22 17:41:04 -05:00
reyesj2
e0039a08ef fix forcedType typo 2025-01-22 13:57:26 -06:00
Jorge Reyes
09df4a5771 Merge pull request #14139 from Security-Onion-Solutions/reyesj2/es-integ-tmp
fixes merging local pillar /global overrides for generated index temp…
2025-01-22 13:12:53 -06:00
reyesj2
81ac1ebc08 fixes merging local pillar /global overrides for generated index templates 2025-01-22 13:12:09 -06:00
Jorge Reyes
c2f5c2226f Merge pull request #14138 from Security-Onion-Solutions/reyesj2/es-integ-tmp
add back missing component for http_endpoint_x_generic & winlog_x_win…
2025-01-22 10:16:30 -06:00
reyesj2
d779f7ae7f add back missing component for http_endpoint_x_generic & winlog_x_winglog 2025-01-22 10:15:16 -06:00
Jorge Reyes
d26c7e6f9b Merge pull request #14134 from Security-Onion-Solutions/reyesj2/es-integ-tmp
remove individual <integration>@custom mappings. Moved over to so-fle…
2025-01-21 11:00:18 -06:00
reyesj2
6331298eac remove individual <integration>@custom mappings. Moved over to so-fleet_integrations.ip_mappings-1 2025-01-21 10:49:54 -06:00
reyesj2
76abf37351 Merge remote-tracking branch 'origin/2.4/dev' into foxtrot 2025-01-21 09:03:04 -06:00
Jorge Reyes
704e30219a Merge pull request #14124 from Security-Onion-Solutions/reyesj2-patch-8
keep imported data in logs-import-so index
2025-01-17 13:33:26 -06:00
reyesj2
1396083b7d use so-elasticsearch-query where possible; simplify suricata.alerts index reroute
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-17 13:29:46 -06:00
Jason Ertel
7017024ba7 Merge pull request #14123 from Security-Onion-Solutions/jertel/wip
Additional web security measures
2025-01-17 12:31:42 -05:00
Jorge Reyes
942c1aa3a6 Merge pull request #14126 from Security-Onion-Solutions/reyesj2/es-integ-tmp
merge dev
2025-01-17 11:24:31 -06:00
reyesj2
d35ffef503 merge 2.4/dev
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-17 11:23:54 -06:00
Jason Ertel
7705f45d78 Revert "subgrid config annotations"
This reverts commit 3ab1b907e4.
2025-01-17 12:16:12 -05:00
Jason Ertel
964bbe6aa5 additional web server security measures 2025-01-17 12:14:30 -05:00
reyesj2
01a2e4cd4f check for index existence before attemping rollover
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-17 09:27:28 -06:00
reyesj2
9032d7d7bc any suricata.alert with event.imported: true remains in logs-import-so
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-16 18:48:31 -06:00
reyesj2
d573c0922d add 2.4.111 -> postupgrade check
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-16 18:25:06 -06:00
reyesj2
45d3438d18 update ingest pipeline for imported logs
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-16 17:33:14 -06:00
Jorge Reyes
6c80fd0e18 Merge pull request #14116 from Security-Onion-Solutions/reyesj2-patch-8
update global@custom
2025-01-15 14:23:40 -06:00
reyesj2
b3b7fb8f29 add null check and move tag lookup to .contains() in global@custom
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-15 12:16:11 -06:00
Jason Ertel
d101fda423 Merge branch '2.4/dev' into jertel/wip 2025-01-15 11:06:05 -05:00
Jorge Reyes
b1d523a4e6 Merge pull request #14113 from Security-Onion-Solutions/reyesj2/es-integ-tmp
update fleet-optional-integrations-load
2025-01-14 15:26:33 -06:00
reyesj2
dab56f0882 update fleet-optional-integrations-load
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-14 15:24:59 -06:00
Jorge Reyes
846f2485db Merge pull request #14111 from Security-Onion-Solutions/reyesj2-patch-1
update http query
2025-01-14 08:26:43 -06:00
Jorge Reyes
107ca38268 fix http query for "includes" function 2025-01-14 08:24:07 -06:00
Jorge Reyes
35547b476f update http query 2025-01-14 08:13:27 -06:00
Jorge Reyes
ad765200c3 Merge pull request #14105 from Security-Onion-Solutions/reyesj2/moarzeekparse
Additional Zeek parsing & cloudflare_logpush integration
2025-01-13 11:37:21 -06:00
reyesj2
4618256442 include okta-mappings in so-logs-okta.system index template 2025-01-13 11:32:27 -06:00
reyesj2
323ef1d5d6 add missing lifecycle name to trend_micro_vision_one indices 2025-01-13 09:29:22 -06:00
reyesj2
a5b1648b68 add missing lifecycle name to crowdstrike indices 2025-01-13 09:26:16 -06:00
reyesj2
14c920a258 fix hidden ldap menu subtitle 2025-01-13 09:23:32 -06:00
reyesj2
4f92b7ced1 add support for cloudflare_logpush integration 2025-01-13 09:23:05 -06:00
Josh Brower
5ec2006c9e Merge pull request #14102 from Security-Onion-Solutions/2.4/nav-airgap
Fix folder perm
2025-01-10 16:20:18 -05:00
Joshua Brower
dcdf31eee8 Fix folder perm 2025-01-10 16:15:17 -05:00
Jason Ertel
3ab1b907e4 subgrid config annotations 2025-01-10 13:45:42 -05:00
reyesj2
e60a1e4357 zeek ldap & ldap_search parsing
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-09 16:06:10 -06:00
Josh Brower
2de1f0464f Merge pull request #14091 from Security-Onion-Solutions/2.4/nav-airgap
Refactor Navigator Airgap
2025-01-09 11:59:50 -05:00
Joshua Brower
bcb92b63e3 Move json files to container image 2025-01-09 10:58:40 -05:00
Jorge Reyes
412397fa7b Merge pull request #14089 from Security-Onion-Solutions/reyesj2/moarzeekparse 2025-01-08 17:45:14 -06:00
reyesj2
0e87351a9c add zeek.quic mappings
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-08 16:18:53 -06:00
Josh Brower
71f4150c27 Merge pull request #14013 from Security-Onion-Solutions/2.4/navigator
Refactor Navigator for Detections
2025-01-07 13:34:19 -05:00
Joshua Brower
a2caf7425d Add config options 2025-01-07 13:22:14 -05:00
Joshua Brower
6fa11a38ef Update defaults 2025-01-07 13:14:50 -05:00
Joshua Brower
e3f75215b6 Merge remote-tracking branch 'origin/2.4/dev' into 2.4/navigator 2025-01-07 13:06:49 -05:00
Jorge Reyes
06983948b0 Merge pull request #14078 from Security-Onion-Solutions/reyesj2/es-integ-tmp
run elasticsearch state to sync templates
2025-01-06 21:34:07 -06:00
reyesj2
a21535b0a2 run elasticsearch state to sync templates
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-06 21:33:07 -06:00
Jason Ertel
d14b6e6d7d Merge pull request #14077 from Security-Onion-Solutions/jertel/wip
invalidate user sessions when an admin changes the user's password
2025-01-06 17:26:56 -05:00
Jason Ertel
bd96b5d722 invalidate user sessions when an admin changes the user's password 2025-01-06 17:23:10 -05:00
Jorge Reyes
b431fb1e49 Merge pull request #14075 from Security-Onion-Solutions/reyesj2/es-integ-tmp
merge dev
2025-01-06 15:18:05 -06:00
reyesj2
b97619b8f9 Merge remote-tracking branch 'origin/2.4/dev' into reyesj2/es-integ-tmp 2025-01-06 14:44:35 -06:00
reyesj2
3d3f0460fa move addon integration script run to elasticfleet state
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-06 14:42:16 -06:00
Jorge Reyes
37d67ee9d0 Merge pull request #14073 from Security-Onion-Solutions/reyesj2/es-integ-tmp
update version to foxtrot
2025-01-06 11:23:27 -06:00
reyesj2
0d49dee46e update version to foxtrot
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-06 11:22:51 -06:00
reyesj2
9fe3f6042f Remove individual integrations ip mappings component template. Replaced with global mappings
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-06 10:44:22 -06:00
reyesj2
cdd4a1ff1f fixes addon integration map file
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2025-01-03 16:06:22 -06:00
Josh Brower
8408a53b82 Merge remote-tracking branch 'origin/2.4/dev' into 2.4/navigator 2025-01-02 16:13:34 -05:00
Jorge Reyes
5969e9accc Merge pull request #14060 from Security-Onion-Solutions/reyesj2/zeekquic
zeek quic support
2025-01-02 08:13:33 -06:00
Doug Burks
927b618ec9 Update Zeek QUIC dashboard, add Hunt query, add quic.server.name as column in Events table 2025-01-02 06:57:56 -05:00
reyesj2
9f83853922 Zeek QUIC support
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-12-31 13:44:20 -06:00
reyesj2
ecf094f684 WIP: support all es fleet integrations
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-12-26 16:18:04 -06:00
Josh Brower
8f5634d958 Merge pull request #14048 from Security-Onion-Solutions/2.4/sigmaHashes
Refactor pipeline for hash changes
2024-12-23 15:49:35 -05:00
defensivedepth
7237b8971e Refactor pipeline for hash changes 2024-12-23 15:41:13 -05:00
Mike Reeves
33239219cb Merge pull request #14046 from Security-Onion-Solutions/TOoSmOotH-patch-1 2024-12-23 08:34:01 -05:00
Mike Reeves
09ef096620 Update soup 2024-12-23 08:27:45 -05:00
Jason Ertel
6c19a4c68a Merge pull request #14043 from Security-Onion-Solutions/jertel/wip
cloud installs should use the local docker registry data
2024-12-19 15:01:25 -05:00
Jason Ertel
b8afef1ee4 cloud installs should use the local docker registry data 2024-12-19 14:56:40 -05:00
reyesj2
b3436415dc merge 2.4/dev
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-12-18 14:13:25 -06:00
Jorge Reyes
16a819ff4f Merge pull request #14041 from Security-Onion-Solutions/reyesj2/opencti
add ti_opencti integration support
2024-12-18 12:12:03 -06:00
reyesj2
157185c370 add ti_opencti integration support 2024-12-18 11:33:49 -06:00
Mike Reeves
ace6c5c9e4 Merge pull request #14039 from Security-Onion-Solutions/docsfix
Fix Discussions Dropdown
2024-12-18 11:42:42 -05:00
Mike Reeves
4a4c8eace2 Update 2-4.yml 2024-12-18 10:49:34 -05:00
Jason Ertel
8183dcf363 Merge pull request #14038 from Security-Onion-Solutions/TOoSmOotH-patch-1
Update 2-4.yml
2024-12-18 10:38:42 -05:00
Mike Reeves
d4f1772d2e Update 2-4.yml 2024-12-18 10:36:15 -05:00
Jason Ertel
dc1c7d8bd2 Merge pull request #14036 from Security-Onion-Solutions/merger
Merge in 2.4.111
2024-12-18 10:25:42 -05:00
Mike Reeves
9c10094914 Fix conflict 2024-12-18 10:19:40 -05:00
Mike Reeves
72fed8d6a7 Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into 2.4/dev 2024-12-18 10:17:04 -05:00
Mike Reeves
ec90adc6d9 Merge branch '2.4/main' of github.com:Security-Onion-Solutions/securityonion into 2.4/main 2024-12-18 10:16:50 -05:00
Mike Reeves
93f3171a63 Merge pull request #14031 from Security-Onion-Solutions/patch/2.4.111
2.4.111
2024-12-18 10:05:48 -05:00
Mike Reeves
7d4c6b1174 Merge branch 'patch/2.4.111' of https://github.com/Security-Onion-Solutions/securityonion into patch/2.4.111 2024-12-18 09:29:08 -05:00
Mike Reeves
3e04bfbd21 2.4.111 2024-12-18 09:27:55 -05:00
Josh Brower
c6ebebc4d0 Merge pull request #14033 from Security-Onion-Solutions/patchfix
Delete uneeded files
2024-12-17 16:05:13 -05:00
defensivedepth
17405b849a Delete uneeded files 2024-12-17 16:01:31 -05:00
Mike Reeves
897e8f6883 2.4.111 2024-12-17 13:03:52 -05:00
Mike Reeves
7d06dd4b1d Update HOTFIX 2024-12-13 09:20:49 -05:00
Mike Reeves
5bc9fb19a8 Update VERSION 2024-12-13 09:18:58 -05:00
Mike Reeves
607aa1b992 Merge pull request #14016 from Security-Onion-Solutions/TOoSmOotH-patch-1
Fix port bind for managing external suricata ruleset
2024-12-10 17:40:35 -05:00
Mike Reeves
e4db2f4819 Update defaults.yaml 2024-12-10 17:19:15 -05:00
defensivedepth
9475211417 Refactor Navigator for Detections 2024-12-09 16:31:51 -05:00
reyesj2
9bc20c26bb Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into reyesj2/es-integ-tmp 2024-12-06 14:29:25 -06:00
Jorge Reyes
14cb41ea87 Merge pull request #14001 from Security-Onion-Solutions/reyesj2/zeekvpn
add openvpn & ipsec support to Zeek
2024-12-06 12:06:02 -06:00
Jorge Reyes
edd90cbed4 Merge pull request #14004 from Security-Onion-Solutions/reyesj2/logcheck
file extract zeek v7
2024-12-06 10:28:15 -06:00
reyesj2
1de20e9d43 fix zeek file extract
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-12-06 09:55:56 -06:00
reyesj2
ad8b339a3b fix error due to null reference
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-12-06 09:07:16 -06:00
reyesj2
9532f21c7b check zeek reporter.log 2024-12-05 13:49:44 -06:00
reyesj2
754d28e95d add openvpn & ipsec support to Zeek 2024-12-05 09:52:55 -06:00
reyesj2
e3b7d82a8f remove all non-core integrations from elasticfleet:packages pillar 2024-12-03 08:56:56 -06:00
reyesj2
888145a2ed remove optional integrations from defaults.yaml & soc_elasticsearch.yaml 2024-12-03 08:55:43 -06:00
Josh Brower
726bdd8735 Merge pull request #13995 from Security-Onion-Solutions/feature/msi
fix path
2024-12-02 14:49:22 -05:00
defensivedepth
5b9f6b2d52 fix path 2024-12-02 14:42:56 -05:00
Josh Brower
aabff98bea Merge pull request #13989 from Security-Onion-Solutions/feature/msi
Generate MSI
2024-12-02 09:17:45 -05:00
defensivedepth
aade3db80d Generate MSI 2024-11-28 07:00:23 -05:00
Jorge Reyes
129c10dde5 Merge pull request #13981 from Security-Onion-Solutions/reyesj2/integ 2024-11-26 00:55:31 -06:00
reyesj2
993d56cb58 ti_rapid7*
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-25 15:51:49 -06:00
reyesj2
efa6a533c3 add missing ilm to index template
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-25 15:47:47 -06:00
Josh Brower
04ffdf9b15 Merge pull request #13958 from Security-Onion-Solutions/2.4/autoenablesigma
More flexibility for AutoEnable Sigma rules
2024-11-21 09:47:49 -05:00
defensivedepth
f61bf1bd67 Remove adv 2024-11-21 09:15:29 -05:00
defensivedepth
b1c4e32123 Remove duplicate option 2024-11-21 09:11:44 -05:00
defensivedepth
8958da83b3 Deprecate instead 2024-11-20 18:00:26 -05:00
defensivedepth
3fcf197bc1 Tweak structure 2024-11-19 11:54:15 -05:00
Jason Ertel
532dfd7f5a Merge pull request #13966 from Security-Onion-Solutions/jertel/wip
MFA issuer name shouldn't be an advanced setting
2024-11-19 09:35:26 -05:00
Jason Ertel
92ddf2ec6c MFA issuer name shouldn't be an advanced setting 2024-11-19 09:27:26 -05:00
coreyogburn
a703f46a0a Merge pull request #13961 from Security-Onion-Solutions/cogburn/engine-update-config
Add Annotations to Existing Detections Options
2024-11-18 14:46:04 -07:00
Corey Ogburn
d86c009f55 Add Annotations to Existing Detections Options
The autoUpdateEnabled setting has been present for awhile and now have annotations.
2024-11-18 14:35:55 -07:00
defensivedepth
56d6857cd6 Addl customization for autoenable sigma 2024-11-18 09:03:17 -05:00
Jason Ertel
52bc9be6b6 Merge pull request #13956 from Security-Onion-Solutions/jertel/wip
ignore fp from hydra
2024-11-17 18:23:54 -05:00
Jason Ertel
918f26962a ignore fp from hydra 2024-11-17 12:21:06 -05:00
Jason Ertel
3bf7870729 Merge pull request #13955 from Security-Onion-Solutions/jertel/wip
soup corrections
2024-11-16 21:31:08 -05:00
Jason Ertel
0eebe48492 soup corrections 2024-11-16 21:20:24 -05:00
Mike Reeves
e02cb30f1b Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into 2.4/dev 2024-11-16 20:41:31 -05:00
Mike Reeves
d005f0d7d6 Merge branch '2.4/main' of github.com:Security-Onion-Solutions/securityonion into 2.4/main 2024-11-16 20:41:20 -05:00
Jason Ertel
cc44558f40 Merge pull request #13954 from Security-Onion-Solutions/jertel/wip
revert prev commit
2024-11-16 12:08:49 -05:00
Jason Ertel
73521dd7a7 revert prev commit 2024-11-16 11:09:44 -05:00
Jorge Reyes
3041d7d2b1 Merge pull request #13951 from Security-Onion-Solutions/reyesj2/integ
additional integrations
2024-11-15 15:02:04 -06:00
Jason Ertel
b6ab5249f1 Merge pull request #13953 from Security-Onion-Solutions/jertel/wip
Connect API upgrades
2024-11-15 14:32:37 -05:00
Jason Ertel
dc838e7148 connect 2024-11-15 14:25:52 -05:00
Jason Ertel
f290e52fbd connect 2024-11-15 14:25:11 -05:00
Jason Ertel
e4de376394 connect api 2024-11-15 13:42:02 -05:00
reyesj2
44ec237447 additional integration support - cisco secure email gateway - rapid7 threat command
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-15 11:39:01 -06:00
Jorge Reyes
ec5a6aec41 Merge pull request #13946 from Security-Onion-Solutions/foxtrot
Zeek 7 w/ http2
2024-11-14 14:52:48 -06:00
Josh Patterson
7f96d20eb4 Merge pull request #13944 from Security-Onion-Solutions/saltbootstrap
update bootstrap-salt
2024-11-14 10:25:16 -05:00
Jorge Reyes
dfd9108f39 Merge pull request #13945 from Security-Onion-Solutions/2.4/dev
2.4/dev
2024-11-14 09:13:00 -06:00
Jorge Reyes
e07c1e6958 Merge pull request #13943 from Security-Onion-Solutions/zeek7
add http2
2024-11-14 09:11:08 -06:00
reyesj2
1113c3924f zeek http2
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-14 09:09:23 -06:00
m0duspwnens
b1ddaa7211 support installing specified version for rhel variants. remove bootstrap -x python3 since not needed 2024-11-14 09:07:41 -05:00
Jorge Reyes
ff00ddeb3c Merge pull request #13935 from Security-Onion-Solutions/ilm-detection 2024-11-13 15:07:29 -06:00
reyesj2
ba7a6dbbf0 Remove tuning/defaults "Remove in v7.1 The policy/tuning/defaults package is deprecated. The options set here are now the defaults for Zeek in general."
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-12 18:37:46 -06:00
reyesj2
f3a88de0c3 so-(case/detection)history uses same ilm policy as so-(case/detection)
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-12 16:28:01 -06:00
Jorge Reyes
4e0b5569dc Merge pull request #13933 from Security-Onion-Solutions/ilm-detection
add ilm and update managed index settings
2024-11-12 15:22:05 -06:00
reyesj2
a4d763c1e5 use curl vs es query to force PUT request
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-12 14:50:04 -06:00
m0duspwnens
33fdc23965 remove salt repo files created by saltbootstrap 2024-11-12 11:31:42 -05:00
reyesj2
aaf9f53695 update soup; check for index before applying new index setting
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-11 22:40:06 -06:00
Jason Ertel
59cf049a06 Merge pull request #13930 from Security-Onion-Solutions/jertel/wip
ensure roles file exists since no longer syncing clients to es
2024-11-11 18:53:46 -05:00
Jason Ertel
5b74a55c3c ensure roles file exists since no longer syncing clients to es 2024-11-11 17:21:42 -05:00
Josh Patterson
f2ce070833 Merge pull request #13927 from Security-Onion-Solutions/saltbootstrap
upodate saltbootstrap
2024-11-11 16:17:23 -05:00
reyesj2
ce9bd18947 no error when versionlock dir exists after re-running soup
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-11 14:59:42 -06:00
m0duspwnens
9e5d0e88de fix soversion path 2024-11-11 15:56:01 -05:00
reyesj2
43f7989d73 ()
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-11 14:47:17 -06:00
m0duspwnens
69245e4fad have soup_scripts remove old salt repo file 2024-11-11 15:31:57 -05:00
Jason Ertel
f8f496da73 Merge pull request #13923 from Security-Onion-Solutions/jertel/wip
Connect API
2024-11-11 15:04:34 -05:00
reyesj2
6dbe0645e5 use auto_expand_replica, configure ilm for so-case* & so-detection*
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-11 13:51:48 -06:00
Jason Ertel
d4ed34d0ea connect 2024-11-11 11:56:19 -05:00
m0duspwnens
7875406da1 update bootstrap-salt for broadcom changes 2024-11-11 10:54:51 -05:00
Jason Ertel
57a9992a3d Merge branch '2.4/dev' into jertel/wip 2024-11-11 10:06:44 -05:00
Josh Patterson
b3ce624fff Merge pull request #13921 from Security-Onion-Solutions/reposynccron
only enable repo sync cron if OEL
2024-11-08 16:16:48 -05:00
m0duspwnens
ee4405e75e only enable repo sync cron if OEL 2024-11-08 16:13:44 -05:00
Josh Brower
f7c3957a43 Merge pull request #13920 from Security-Onion-Solutions/2.4/templaterepos
Fix permissions
2024-11-08 15:34:56 -05:00
defensivedepth
dcbb0e48d4 make sure its owned by socore 2024-11-08 14:34:29 -05:00
defensivedepth
74b95a0bcc Merge remote-tracking branch 'origin/2.4/dev' into 2.4/templaterepos 2024-11-08 09:20:11 -05:00
defensivedepth
8b70aa9f0e Fix socore permissions 2024-11-08 09:19:41 -05:00
coreyogburn
9095595db1 Merge pull request #13915 from Security-Onion-Solutions/cogburn/source-dates
Source Dates
2024-11-07 14:55:48 -07:00
Corey Ogburn
8334fd9c46 Source Dates 2024-11-07 14:44:45 -07:00
Jason Ertel
31cf6a2ebc connect 2024-11-07 16:17:30 -05:00
Jason Ertel
97f4cbdade connect 2024-11-07 16:16:37 -05:00
Jason Ertel
ba0abb156a connect 2024-11-07 16:08:28 -05:00
Josh Brower
47f9b0021c Merge pull request #13879 from Security-Onion-Solutions/2.4/templaterepos
Add local custom template
2024-11-07 15:40:36 -05:00
defensivedepth
f5bd8ab585 Rewrite docs 2024-11-07 15:33:47 -05:00
Jorge Reyes
356236ba4c Merge pull request #13912 from Security-Onion-Solutions/crowdstrike
fix crowdstrike integration
2024-11-07 08:53:36 -06:00
defensivedepth
28d468dd41 Merge remote-tracking branch 'origin/2.4/dev' into 2.4/templaterepos 2024-11-07 07:25:01 -05:00
reyesj2
80b82b0bd6 missing replica 0
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-06 15:24:13 -06:00
reyesj2
039d5c22ac fix: crowdstrike integration
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-11-06 14:35:41 -06:00
coreyogburn
07b867df76 Merge pull request #13904 from Security-Onion-Solutions/cogburn/ignored-sids
Cogburn/ignored sids
2024-11-05 12:30:08 -07:00
Corey Ogburn
52a144c052 Added Help Link to Annotation for IgnoredSidRanges 2024-11-05 12:11:17 -07:00
Corey Ogburn
25d55feeef More Detailed Description 2024-11-05 11:41:14 -07:00
Corey Ogburn
5e48ccafce Update Default Value 2024-11-05 11:11:34 -07:00
Corey Ogburn
69dd35c30a Add Option for Ignoring Ranges of SIDs in Suricata Integrity Check 2024-11-04 14:31:53 -07:00
Josh Patterson
d37a8d51fa Merge pull request #13900 from Security-Onion-Solutions/saltrepo
setup use new salt repo
2024-11-04 13:05:58 -05:00
m0duspwnens
6e14f7b626 fix pub key name 2024-11-04 11:14:00 -05:00
Jason Ertel
e8ab7bce0c connect 2024-11-04 10:49:30 -05:00
m0duspwnens
083c678400 new salt repo 2024-11-04 09:46:26 -05:00
Jason Ertel
7442ffc7d8 connect 2024-11-01 16:37:24 -04:00
Jason Ertel
25479ca71f connect 2024-11-01 16:29:04 -04:00
Jason Ertel
c9f6b5206a connect 2024-11-01 16:18:40 -04:00
Jason Ertel
755cfb4e13 connect 2024-11-01 15:47:33 -04:00
Jason Ertel
fb73517fc1 connect 2024-11-01 15:43:26 -04:00
Jason Ertel
825dbb36dd connect 2024-11-01 15:37:59 -04:00
Jason Ertel
cd2e5bf2d0 rename role 2024-10-31 17:20:44 -04:00
Jason Ertel
520c9d8d51 rename role 2024-10-31 16:42:42 -04:00
Jason Ertel
370b117938 rename role 2024-10-31 16:39:45 -04:00
Josh Brower
6ab05e7c05 Merge pull request #13890 from Security-Onion-Solutions/2.4/templatefix
timestamp fix
2024-10-31 10:59:45 -04:00
defensivedepth
7896f951f3 timestamp fix 2024-10-31 10:24:58 -04:00
Josh Brower
01932d873f Merge pull request #13883 from Security-Onion-Solutions/2.4/lookuprev2
2.4/lookuprev2
2024-10-31 08:46:01 -04:00
Josh Brower
84a8477c5d Merge pull request #13887 from Security-Onion-Solutions/2.4/soupedite
rm eaintegration state file
2024-10-30 17:15:07 -04:00
defensivedepth
6b468eaed3 rm eaintegration state file 2024-10-30 16:52:44 -04:00
Jason Ertel
a146153ee9 switch to json 2024-10-30 12:44:01 -04:00
defensivedepth
c509dab5f1 Use socore user 2024-10-30 11:03:14 -04:00
Josh Brower
1940901386 Merge pull request #13882 from Security-Onion-Solutions/ipmappingses
add so-ip-mappings index
2024-10-30 10:28:40 -04:00
reyesj2
36fc3bbd6d add so-ip-mappings index
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-10-30 10:24:11 -04:00
defensivedepth
5406a263d5 Add local custom template 2024-10-29 19:42:06 -04:00
Jason Ertel
3f3ac21f50 connect 2024-10-29 12:28:24 -04:00
Jason Ertel
11820a16f0 connect 2024-10-29 12:04:38 -04:00
Josh Brower
ac359839e2 Merge pull request #13877 from Security-Onion-Solutions/2.4/lookuprev2
Initial support for local lookup
2024-10-29 11:22:39 -04:00
defensivedepth
4c5099d429 Initial support for local lookup 2024-10-29 10:27:54 -04:00
Jason Ertel
1243c7588b connect 2024-10-28 19:42:01 -04:00
Jason Ertel
624c4855c8 connect 2024-10-28 19:25:20 -04:00
Jason Ertel
12a76a9d35 connect 2024-10-28 19:11:26 -04:00
Josh Brower
6a3e5415cf Merge pull request #13832 from Security-Onion-Solutions/2.4/sigmapipelines
Add process and file creation mappings
2024-10-28 18:30:21 -04:00
coreyogburn
2c4f65009c Merge pull request #13873 from Security-Onion-Solutions/cogburn/tuning-notes
Tuning Notes
2024-10-28 15:37:06 -06:00
defensivedepth
f3ca5b1c42 Remove OS-specific mappings 2024-10-28 09:19:51 -04:00
Corey Ogburn
640f53d085 Cleanup
Fix indentation and trailing comma.
2024-10-24 17:05:36 -06:00
Corey Ogburn
1aa9d87c5d Corrected
Put the note on the right model this time.
2024-10-24 17:05:36 -06:00
Corey Ogburn
e11c562022 Added Note to ES Mappings 2024-10-24 17:05:35 -06:00
coreyogburn
a76a2d8e9f Merge pull request #13800 from Security-Onion-Solutions/cogburn/detection-status-hunt
Cogburn/detection status hunt
2024-10-24 16:31:59 -06:00
Jason Ertel
d503c09ef2 connect 2024-10-24 15:45:18 -04:00
Corey Ogburn
6ce52bf9ab Specify Defaults for detectionEngineStatusQueries
Specify the defaults as an example to the user.
2024-10-24 13:11:49 -06:00
Corey Ogburn
f67fcecc6e Clean up StatusQueries String 2024-10-24 11:18:48 -06:00
Corey Ogburn
b7c392a244 Corrected a misspelling 2024-10-24 11:18:48 -06:00
Corey Ogburn
ad0b0a5e95 Refactor to String
To accomodate the config screen, the annotation now specifies it as a multiline string with a yaml syntax. The user can edit the yaml to add or remove queries. The UI will parse the YAML before use.

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

Added showUnreviewedAiSummaries to client parameters.

Added annotations.
2024-08-08 10:46:41 -06:00
Corey Ogburn
fc89604982 New Config Values/Annotations for Ai Summaries
Each engine pulls the same repo into the same location and shows the summaries.

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

`bulkIndexerWorkerCount` defines how many worker threads a bulk indexer should use. 0 or fewer indicates that 1 thread per CPU core should be used.
2024-07-15 14:43:47 -06:00
weslambert
38e7da1334 Merge pull request #13347 from Security-Onion-Solutions/upgrade/elastic_8_14_3
Elastic 8.14.3
2024-07-15 16:29:24 -04:00
reyesj2
1b623c5c7a Show Kafka EPS for nodes with broker role only
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-15 16:27:48 -04:00
reyesj2
542a116b8c use so-yaml add for kafka pillar change
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-15 16:26:52 -04:00
Doug Burks
e7b6496f98 Merge pull request #13348 from Security-Onion-Solutions/dougburks-patch-1
FEATURE: Add new action to SOC Actions list to allow users to more easily add their own actions #13346
2024-07-15 15:59:49 -04:00
Doug Burks
3991c7b5fe FEATURE: Add new action to SOC Actions list to allow users to more easily add their own actions #13346 2024-07-15 15:52:00 -04:00
weslambert
678b232c24 Elastic 8.14.3 2024-07-15 15:48:01 -04:00
weslambert
fbd0dbd048 Elastic 8.14.3 2024-07-15 15:46:55 -04:00
weslambert
1df19faf5c Elastic 8.14.3 2024-07-15 15:44:50 -04:00
weslambert
8ec5794833 Update VERSION 2024-07-15 15:42:40 -04:00
weslambert
bf07d56da6 Merge pull request #13341 from Security-Onion-Solutions/revert-13323-fix/agent_pipeline
Revert "Change pipeline version for agent"
2024-07-15 11:38:56 -04:00
weslambert
cdbffa2323 Merge pull request #13342 from Security-Onion-Solutions/revert-13316-foxtrot
Revert "Elastic 8.14.2"
2024-07-15 11:38:48 -04:00
Josh Patterson
55469ebd24 Merge pull request #13340 from Security-Onion-Solutions/surianno
force var to be list of string
2024-07-15 11:34:00 -04:00
weslambert
4e81860a13 Revert "Change pipeline version for agent" 2024-07-15 11:33:52 -04:00
m0duspwnens
a23789287e force var to be list of string 2024-07-15 11:29:47 -04:00
weslambert
fe1824aedd Revert "Elastic 8.14.2" 2024-07-15 11:28:59 -04:00
Jorge Reyes
e58b2c45dd Merge pull request #13335 from Security-Onion-Solutions/reyesj2/kgz
FIX: Kafka configuration updates
2024-07-12 15:55:43 -04:00
reyesj2
5d322ebc0b Allow searchnodes to run kafka.ssl state for kafka-logstash cert generation
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-12 14:45:11 -04:00
reyesj2
7ea8d5efd0 Remove redis input pipeline from searchnodes when global pipeline is Kafka
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-12 14:44:10 -04:00
reyesj2
4182ff66a0 rearrange kafka pillar, declutters SOC ui
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-11 16:37:16 -04:00
reyesj2
ff29d9ca51 Update log-check to ignore kafka data directories
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-11 10:23:51 -04:00
reyesj2
4a88dedcb8 Fixin kafka.ssl state and include name for kafka_user
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-10 16:18:46 -04:00
reyesj2
cfe5c1d76a remove elasticsearch.ca from receiver allowed_states. Replaced by generated kafka trust
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-10 13:24:02 -04:00
weslambert
ebf5159c95 Merge pull request #13323 from Security-Onion-Solutions/fix/agent_pipeline
Change pipeline version for agent
2024-07-10 13:01:29 -04:00
weslambert
d432019ad9 Change version from 1.13.1 to 1.20.0 2024-07-10 12:48:08 -04:00
reyesj2
0d8fd42be3 update pillarwatch engine
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-10 11:37:07 -04:00
reyesj2
d5faf535c3 Only interact with logstash configuration when Kafka pipeline is enabled otherwise leave it default
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-10 11:36:44 -04:00
reyesj2
8e1edd1d91 split Kafka ssl from ssl/init. Certs won't be generated until Kafka is enabled. Also runs some clean up for old Kafka certs
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-10 11:32:43 -04:00
reyesj2
d791b23838 Generate new Kafka truststore
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-07-10 11:29:09 -04:00
weslambert
0db0754ee5 Merge pull request #13316 from Security-Onion-Solutions/foxtrot
Elastic 8.14.2
2024-07-10 08:53:03 -04:00
Wes
1f5a990b1e Remove lines that aren't needed right now 2024-07-09 18:32:06 +00:00
weslambert
7a2f01be53 Update VERSION 2024-07-09 13:58:13 -04:00
Doug Burks
dadb0db8f3 Merge pull request #13321 from Security-Onion-Solutions/dougburks-patch-1
FIX: Update SOC MOTD #13320
2024-07-09 12:58:22 -04:00
Doug Burks
dfd8ac3626 FIX: Update SOC MOTD #13320 2024-07-09 12:55:58 -04:00
weslambert
9716e09b83 Temp change for testing 2024-07-09 12:51:34 -04:00
Wes
669f68ad88 Fleet metric annotations 2024-07-09 15:39:59 +00:00
Doug Burks
32af2d8436 Merge pull request #13318 from Security-Onion-Solutions/dougburks-patch-1
FIX: Update MOTD #13317
2024-07-09 10:07:47 -04:00
Doug Burks
24e945eee4 FIX: Update MOTD #13317 2024-07-09 10:06:16 -04:00
weslambert
8615e5d5ea Move enabled and index_clean back to the top 2024-07-08 16:50:06 -04:00
weslambert
2dd5ff4333 Update VERSION 2024-07-08 16:19:53 -04:00
weslambert
6a396ec1aa Fix accidental double quote removal 2024-07-08 11:44:27 -04:00
weslambert
34f558c023 Merge pull request #13314 from Security-Onion-Solutions/upgrade/elastic_8_14_2
Elastic 8.14.2
2024-07-08 10:02:02 -04:00
weslambert
9504f0885a Elastic 8.14.2 2024-07-08 09:49:07 -04:00
weslambert
ef59678441 Elastic 8.14.2 2024-07-08 09:48:12 -04:00
weslambert
c6f6811f47 Elastic 8.14.2 2024-07-08 09:47:34 -04:00
Mike Reeves
ce8f9fe024 Merge pull request #13299 from Security-Onion-Solutions/TOoSmOotH-patch-2
Delete old user commands
2024-07-02 14:46:56 -04:00
Mike Reeves
40b7999786 Delete salt/manager/tools/sbin/so-user-list 2024-07-02 14:36:51 -04:00
Mike Reeves
69be03f86a Delete salt/manager/tools/sbin/so-user-enable 2024-07-02 14:36:36 -04:00
Mike Reeves
8dc8092241 Delete salt/manager/tools/sbin/so-user-disable 2024-07-02 14:36:02 -04:00
Mike Reeves
578c6c567f Delete old user commands 2024-07-02 14:34:45 -04:00
weslambert
662df1208d Merge pull request #13296 from Security-Onion-Solutions/fix/soc_ilm_policy
Change name for ILM
2024-07-02 09:06:11 -04:00
weslambert
745b6775f1 Change name for ILM 2024-07-02 09:05:35 -04:00
weslambert
176aaa8f3d Merge pull request #13295 from Security-Onion-Solutions/fix/custom_windows_integration
Change name to winlog.winlogs
2024-07-02 09:03:52 -04:00
weslambert
4d499be1a8 Change name 2024-07-02 08:47:29 -04:00
weslambert
c27225d91f Merge pull request #13290 from Security-Onion-Solutions/fix/elastic_template_changes
Changes for Elastic 8.14.1
2024-07-01 11:19:02 -04:00
Wes
1b47d5c622 Changes for Elastic 8.14.1 2024-07-01 15:16:58 +00:00
Wes
32d7927a49 Template changes for Elastic 8.14.1 2024-07-01 15:16:06 +00:00
Jorge Reyes
861630681c Merge pull request #13282 from Security-Onion-Solutions/reyesj2/rupd
FIX: so-rule-update airgap check
2024-06-28 16:26:34 -04:00
reyesj2
9d725f2b0b fix rule update
Signed-off-by: reyesj2 <94730068+reyesj2@users.noreply.github.com>
2024-06-28 13:45:50 -04:00
Josh Patterson
132263ac1a Merge pull request #13278 from Security-Onion-Solutions/issue/13073
Issue/13073 - disable Logstash on heavynodes
2024-06-27 14:50:18 -04:00
DefensiveDepth
92a847e3bd Fix Fleet setup 2024-06-27 11:48:54 -04:00
DefensiveDepth
75bbc41d38 Merge remote-tracking branch 'refs/remotes/origin/foxtrot' into foxtrot 2024-06-27 11:48:05 -04:00
weslambert
7716f4aff8 Elastic 8.14.1 2024-06-27 10:49:52 -04:00
weslambert
8eb6dcc5b7 Elastic 8.14.1 2024-06-27 10:49:06 -04:00
weslambert
847638442b Elastic 8.14.1 2024-06-27 10:48:28 -04:00
weslambert
5743189eef Elastic 8.14.1 2024-06-27 10:47:46 -04:00
weslambert
81d874c6ae Update VERSION 2024-06-27 10:42:58 -04:00
Mike Reeves
72146d9566 Merge branch '2.4/dev' of github.com:Security-Onion-Solutions/securityonion into 2.4/dev 2024-06-27 10:42:07 -04:00
m0duspwnens
bfe8a3a01b Merge remote-tracking branch 'origin/2.4/dev' into issue/13073 2024-06-27 09:20:12 -04:00
weslambert
71ed9204ff Merge pull request #13275 from Security-Onion-Solutions/fix/elastic_8_10_4
Revert back to 8.10.4
2024-06-27 09:16:54 -04:00
weslambert
222ebbdec1 Revert back to 8.10.4 2024-06-27 09:05:29 -04:00
weslambert
260d4e44bc Revert back to 8.10.4 2024-06-27 09:04:07 -04:00
weslambert
0c5b3f7c1c Revert back to 8.10.4 2024-06-27 09:03:28 -04:00
weslambert
feee80cad9 Revert back to 8.10.4 2024-06-27 09:01:55 -04:00
m0duspwnens
5f69456e22 Merge remote-tracking branch 'origin/2.4/dev' into issue/13073 2024-06-27 08:56:44 -04:00
weslambert
e59d124c82 Merge pull request #13271 from Security-Onion-Solutions/upgrade/elastic
Elastic 8.14.1
2024-06-26 14:47:54 -04:00
Wes
13d4738e8f Elastic 8.14.1 2024-06-26 18:39:53 +00:00
weslambert
abdfbba32a Elastic 8.14.1 2024-06-26 14:06:24 -04:00
weslambert
7d0a961482 Elastic 8.14.1 2024-06-26 14:00:54 -04:00
weslambert
0f226cc08e Elastic 8.14.1 2024-06-26 13:59:23 -04:00
m0duspwnens
cfcfc6819f disable logstash in heavynode pillars 2024-06-26 12:53:32 -04:00
m0duspwnens
fe4e2a9540 Merge remote-tracking branch 'origin/2.4/dev' into issue/13073 2024-06-26 12:46:01 -04:00
Josh Patterson
492554d951 Merge pull request #13270 from Security-Onion-Solutions/90soup
start soup 2.4.90
2024-06-26 12:40:44 -04:00
m0duspwnens
dfd5e95c93 start soup 2.4.90 2024-06-26 12:37:28 -04:00
m0duspwnens
50f0c43212 merge dev 2024-06-26 12:33:32 -04:00
Mike Reeves
7fe8715bce Merge pull request #13260 from Security-Onion-Solutions/TOoSmOotH-patch-1
Update VERSION
2024-06-25 15:40:26 -04:00
Mike Reeves
f837ea944a Update VERSION 2024-06-25 15:39:39 -04:00
Mike Reeves
9af3e364aa Merge branch '2.4/main' of github.com:Security-Onion-Solutions/securityonion into 2.4/dev 2024-06-25 08:23:10 -04:00
Mike Reeves
229cb1e9ef Merge branch '2.4/main' of github.com:Security-Onion-Solutions/securityonion into 2.4/main 2024-06-21 14:06:51 -04:00
m0duspwnens
469ca44016 fix maps 2024-06-20 16:53:12 -04:00
m0duspwnens
81fcd68e9b create and use redis:nodes and elasticsearch:nodes pillars 2024-06-20 16:42:11 -04:00
m0duspwnens
55f8303dc2 remove manager and search pipelines from heavynode 2024-06-17 10:06:43 -04:00
m0duspwnens
8f8698fd02 Merge remote-tracking branch 'origin/2.4/dev' into issue/13073 2024-06-12 10:50:18 -04:00
m0duspwnens
98837bc379 this method does not cause soup to fail 2024-06-12 09:11:02 -04:00
m0duspwnens
0f243bb6ec Merge remote-tracking branch 'origin/2.4/dev' into issue/13073 2024-06-11 16:33:23 -04:00
m0duspwnens
88fc1bbe32 quotes on vars 2024-06-11 16:32:57 -04:00
m0duspwnens
2ecac38f6d disable logstash on heavynodes 2024-06-11 13:50:29 -04:00
Mike Reeves
21f78a039a Merge branch '2.4/main' of github.com:Security-Onion-Solutions/securityonion into 2.4/main 2024-04-02 08:47:08 -04:00
Mike Reeves
6069c586d3 Merge branch '2.4/main' of github.com:Security-Onion-Solutions/securityonion into 2.4/main 2024-01-24 16:07:31 -05:00
weslambert
2168698595 Update VERSION 2024-01-22 20:27:19 -05:00
Mike Reeves
3bdc0340b8 Merge branch 'hotfix/2.4.30' into 2.4/main 2023-12-19 13:21:33 -05:00
448 changed files with 10139 additions and 541398 deletions

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)$''',

View File

@@ -11,7 +11,6 @@ body:
description: Which version of Security Onion 2.4.x are you asking about?
options:
-
- 2.4 Pre-release (Beta, Release Candidate)
- 2.4.10
- 2.4.20
- 2.4.30
@@ -22,6 +21,11 @@ body:
- 2.4.80
- 2.4.90
- 2.4.100
- 2.4.110
- 2.4.111
- 2.4.120
- 2.4.130
- 2.4.140
- Other (please provide detail below)
validations:
required: true
@@ -32,9 +36,10 @@ body:
options:
-
- Security Onion ISO image
- Network installation on Red Hat derivative like Oracle, Rocky, Alma, etc.
- Network installation on Ubuntu
- Network installation on Debian
- Cloud image (Amazon, Azure, Google)
- Network installation on Red Hat derivative like Oracle, Rocky, Alma, etc. (unsupported)
- Network installation on Ubuntu (unsupported)
- Network installation on Debian (unsupported)
- Other (please provide detail below)
validations:
required: true

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
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
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
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
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

View File

@@ -18,7 +18,7 @@ jobs:
with:
path-to-signatures: 'signatures_v1.json'
path-to-document: 'https://securityonionsolutions.com/cla'
allowlist: dependabot[bot],jertel,dougburks,TOoSmOotH,weslambert,defensivedepth,m0duspwnens
allowlist: dependabot[bot],jertel,dougburks,TOoSmOotH,defensivedepth,m0duspwnens
remote-organization-name: Security-Onion-Solutions
remote-repository-name: licensing

View File

@@ -1,17 +1,17 @@
### 2.4.80-20240624 ISO image released on 2024/06/25
### 2.4.140-20250324 ISO image released on 2025/03/24
### Download and Verify
2.4.80-20240624 ISO image:
https://download.securityonion.net/file/securityonion/securityonion-2.4.80-20240624.iso
2.4.140-20250324 ISO image:
https://download.securityonion.net/file/securityonion/securityonion-2.4.140-20250324.iso
MD5: 139F9762E926F9CB3C4A9528A3752C31
SHA1: BC6CA2C5F4ABC1A04E83A5CF8FFA6A53B1583CC9
SHA256: 70E90845C84FFA30AD6CF21504634F57C273E7996CA72F7250428DDBAAC5B1BD
MD5: 36393200A5CEEC5B58277691DDAFF247
SHA1: 48655378C732CF47A6B3290F6F07F4F3162BE054
SHA256: 470E00245EBAD83C045743CFB27885CEC3E1F057D91081906B240A38B6D3759A
Signature for ISO image:
https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.80-20240624.iso.sig
https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.140-20250324.iso.sig
Signing key:
https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/2.4/main/KEYS
@@ -25,22 +25,22 @@ wget https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/2.
Download the signature file for the ISO:
```
wget https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.80-20240624.iso.sig
wget https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.140-20250324.iso.sig
```
Download the ISO image:
```
wget https://download.securityonion.net/file/securityonion/securityonion-2.4.80-20240624.iso
wget https://download.securityonion.net/file/securityonion/securityonion-2.4.140-20250324.iso
```
Verify the downloaded ISO image using the signature file:
```
gpg --verify securityonion-2.4.80-20240624.iso.sig securityonion-2.4.80-20240624.iso
gpg --verify securityonion-2.4.140-20250324.iso.sig securityonion-2.4.140-20250324.iso
```
The output should show "Good signature" and the Primary key fingerprint should match what's shown below:
```
gpg: Signature made Mon 24 Jun 2024 02:42:03 PM EDT using RSA key ID FE507013
gpg: Signature made Sun 23 Mar 2025 08:37:47 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
LICENSE Normal file
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.

View File

@@ -5,9 +5,11 @@
| Version | Supported |
| ------- | ------------------ |
| 2.4.x | :white_check_mark: |
| 2.3.x | :white_check_mark: |
| 2.3.x | :x: |
| 16.04.x | :x: |
Security Onion 2.3 has reached End Of Life and is no longer supported.
Security Onion 16.04 has reached End Of Life and is no longer supported.
## Reporting a Vulnerability

View File

@@ -1 +1 @@
2.4.80
2.4.140

View File

@@ -0,0 +1,34 @@
{% set node_types = {} %}
{% for minionid, ip in salt.saltutil.runner(
'mine.get',
tgt='elasticsearch:enabled:true',
fun='network.ip_addrs',
tgt_type='pillar') | dictsort()
%}
# only add a node to the pillar if it returned an ip from the mine
{% if ip | length > 0%}
{% set hostname = minionid.split('_') | first %}
{% set node_type = minionid.split('_') | last %}
{% if node_type not in node_types.keys() %}
{% do node_types.update({node_type: {hostname: ip[0]}}) %}
{% else %}
{% if hostname not in node_types[node_type] %}
{% do node_types[node_type].update({hostname: ip[0]}) %}
{% else %}
{% do node_types[node_type][hostname].update(ip[0]) %}
{% endif %}
{% endif %}
{% endif %}
{% endfor %}
elasticsearch:
nodes:
{% for node_type, values in node_types.items() %}
{{node_type}}:
{% for hostname, ip in values.items() %}
{{hostname}}:
ip: {{ip}}
{% endfor %}
{% endfor %}

View File

@@ -1,16 +1,15 @@
{% set node_types = {} %}
{% set cached_grains = salt.saltutil.runner('cache.grains', tgt='*') %}
{% for minionid, ip in salt.saltutil.runner(
'mine.get',
tgt='G@role:so-manager or G@role:so-managersearch or G@role:so-standalone or G@role:so-searchnode or G@role:so-heavynode or G@role:so-receiver or G@role:so-fleet ',
tgt='logstash:enabled:true',
fun='network.ip_addrs',
tgt_type='compound') | dictsort()
tgt_type='pillar') | dictsort()
%}
# only add a node to the pillar if it returned an ip from the mine
{% if ip | length > 0%}
{% set hostname = cached_grains[minionid]['host'] %}
{% set node_type = minionid.split('_')[1] %}
{% set hostname = minionid.split('_') | first %}
{% set node_type = minionid.split('_') | last %}
{% if node_type not in node_types.keys() %}
{% do node_types.update({node_type: {hostname: ip[0]}}) %}
{% else %}

34
pillar/redis/nodes.sls Normal file
View File

@@ -0,0 +1,34 @@
{% set node_types = {} %}
{% for minionid, ip in salt.saltutil.runner(
'mine.get',
tgt='redis:enabled:true',
fun='network.ip_addrs',
tgt_type='pillar') | dictsort()
%}
# only add a node to the pillar if it returned an ip from the mine
{% if ip | length > 0%}
{% set hostname = minionid.split('_') | first %}
{% set node_type = minionid.split('_') | last %}
{% if node_type not in node_types.keys() %}
{% do node_types.update({node_type: {hostname: ip[0]}}) %}
{% else %}
{% if hostname not in node_types[node_type] %}
{% do node_types[node_type].update({hostname: ip[0]}) %}
{% else %}
{% do node_types[node_type][hostname].update(ip[0]) %}
{% endif %}
{% endif %}
{% endif %}
{% endfor %}
redis:
nodes:
{% for node_type, values in node_types.items() %}
{{node_type}}:
{% for hostname, ip in values.items() %}
{{hostname}}:
ip: {{ip}}
{% endfor %}
{% endfor %}

View File

@@ -16,6 +16,8 @@ base:
- sensoroni.adv_sensoroni
- telegraf.soc_telegraf
- telegraf.adv_telegraf
- versionlock.soc_versionlock
- versionlock.adv_versionlock
'* and not *_desktop':
- firewall.soc_firewall
@@ -47,10 +49,14 @@ base:
- kibana.adv_kibana
- kratos.soc_kratos
- kratos.adv_kratos
- hydra.soc_hydra
- hydra.adv_hydra
- redis.nodes
- redis.soc_redis
- redis.adv_redis
- influxdb.soc_influxdb
- influxdb.adv_influxdb
- elasticsearch.nodes
- elasticsearch.soc_elasticsearch
- elasticsearch.adv_elasticsearch
- elasticfleet.soc_elasticfleet
@@ -94,6 +100,7 @@ base:
- kibana.secrets
{% endif %}
- kratos.soc_kratos
- kratos.adv_kratos
- elasticsearch.soc_elasticsearch
- elasticsearch.adv_elasticsearch
- elasticfleet.soc_elasticfleet
@@ -111,8 +118,8 @@ base:
- kibana.adv_kibana
- strelka.soc_strelka
- strelka.adv_strelka
- kratos.soc_kratos
- kratos.adv_kratos
- hydra.soc_hydra
- hydra.adv_hydra
- redis.soc_redis
- redis.adv_redis
- influxdb.soc_influxdb
@@ -147,10 +154,14 @@ base:
- idstools.adv_idstools
- kratos.soc_kratos
- kratos.adv_kratos
- hydra.soc_hydra
- hydra.adv_hydra
- redis.nodes
- redis.soc_redis
- redis.adv_redis
- influxdb.soc_influxdb
- influxdb.adv_influxdb
- elasticsearch.nodes
- elasticsearch.soc_elasticsearch
- elasticsearch.adv_elasticsearch
- elasticfleet.soc_elasticfleet
@@ -215,11 +226,13 @@ base:
- logstash.nodes
- logstash.soc_logstash
- logstash.adv_logstash
- elasticsearch.nodes
- elasticsearch.soc_elasticsearch
- elasticsearch.adv_elasticsearch
{% if salt['file.file_exists']('/opt/so/saltstack/local/pillar/elasticsearch/auth.sls') %}
- elasticsearch.auth
{% endif %}
- redis.nodes
- redis.soc_redis
- redis.adv_redis
- minions.{{ grains.id }}
@@ -227,6 +240,8 @@ base:
- stig.soc_stig
- soc.license
- kafka.nodes
- kafka.soc_kafka
- kafka.adv_kafka
'*_receiver':
- logstash.nodes
@@ -254,6 +269,7 @@ base:
- kibana.secrets
{% endif %}
- kratos.soc_kratos
- kratos.adv_kratos
- elasticsearch.soc_elasticsearch
- elasticsearch.adv_elasticsearch
- elasticfleet.soc_elasticfleet
@@ -269,8 +285,8 @@ base:
- kibana.adv_kibana
- backup.soc_backup
- backup.adv_backup
- kratos.soc_kratos
- kratos.adv_kratos
- hydra.soc_hydra
- hydra.adv_hydra
- redis.soc_redis
- redis.adv_redis
- influxdb.soc_influxdb
@@ -302,3 +318,5 @@ base:
'*_desktop':
- minions.{{ grains.id }}
- minions.adv_{{ grains.id }}
- stig.soc_stig
- soc.license

View File

@@ -24,6 +24,7 @@
'influxdb',
'soc',
'kratos',
'hydra',
'elasticfleet',
'elastic-fleet-package-registry',
'firewall',
@@ -68,6 +69,7 @@
'strelka.manager',
'soc',
'kratos',
'hydra',
'influxdb',
'telegraf',
'firewall',
@@ -95,6 +97,7 @@
'strelka.manager',
'soc',
'kratos',
'hydra',
'elasticfleet',
'elastic-fleet-package-registry',
'firewall',
@@ -117,6 +120,7 @@
'strelka.manager',
'soc',
'kratos',
'hydra',
'elastic-fleet-package-registry',
'elasticfleet',
'firewall',
@@ -136,7 +140,9 @@
'firewall',
'schedule',
'docker_clean',
'stig'
'stig',
'kafka.ca',
'kafka.ssl'
],
'so-standalone': [
'salt.master',
@@ -149,6 +155,7 @@
'influxdb',
'soc',
'kratos',
'hydra',
'elastic-fleet-package-registry',
'elasticfleet',
'firewall',
@@ -195,13 +202,13 @@
'schedule',
'docker_clean',
'kafka',
'elasticsearch.ca',
'stig'
],
'so-desktop': [
'ssl',
'docker_clean',
'telegraf'
'telegraf',
'stig'
],
}, grain='role') %}

View File

@@ -4,4 +4,5 @@ backup:
- /etc/pki
- /etc/salt
- /nsm/kratos
- /nsm/hydra
destination: "/nsm/backup"

View File

@@ -14,6 +14,11 @@ net.core.wmem_default:
sysctl.present:
- value: 26214400
# Users are not a fan of console messages
kernel.printk:
sysctl.present:
- value: "3 4 1 3"
# Remove variables.txt from /tmp - This is temp
rmvariablesfile:
file.absent:
@@ -123,6 +128,7 @@ common_sbin:
- user: 939
- group: 939
- file_mode: 755
- show_changes: False
common_sbin_jinja:
file.recurse:
@@ -132,6 +138,7 @@ common_sbin_jinja:
- group: 939
- file_mode: 755
- template: jinja
- show_changes: False
{% if not GLOBALS.is_manager%}
# prior to 2.4.50 these scripts were in common/tools/sbin on the manager because of soup and distributed to non managers
@@ -177,6 +184,7 @@ sostatus_log:
file.managed:
- name: /opt/so/log/sostatus/status.log
- mode: 644
- replace: False
# Install sostatus check cron. This is used to populate Grid.
so-status_check_cron:

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

View File

@@ -11,6 +11,7 @@
{% else %}
{% set UPDATE_DIR='/tmp/sogh/securityonion' %}
{% endif %}
{% set SOVERSION = salt['file.read']('/etc/soversion').strip() %}
remove_common_soup:
file.absent:
@@ -63,6 +64,12 @@ copy_so-repo-sync_manager_tools_sbin:
- source: {{UPDATE_DIR}}/salt/manager/tools/sbin/so-repo-sync
- preserve: True
copy_bootstrap-salt_manager_tools_sbin:
file.copy:
- name: /opt/so/saltstack/default/salt/salt/scripts/bootstrap-salt.sh
- source: {{UPDATE_DIR}}/salt/salt/scripts/bootstrap-salt.sh
- preserve: True
# This section is used to put the new script in place so that it can be called during soup.
# It is faster than calling the states that normally manage them to put them in place.
copy_so-common_sbin:
@@ -107,6 +114,24 @@ copy_so-repo-sync_sbin:
- force: True
- preserve: True
copy_bootstrap-salt_sbin:
file.copy:
- name: /usr/sbin/bootstrap-salt.sh
- source: {{UPDATE_DIR}}/salt/salt/scripts/bootstrap-salt.sh
- force: True
- preserve: True
{# this is added in 2.4.120 to remove salt repo files pointing to saltproject.io to accomodate the move to broadcom and new bootstrap-salt script #}
{% if salt['pkg.version_cmp'](SOVERSION, '2.4.120') == -1 %}
{% set saltrepofile = '/etc/yum.repos.d/salt.repo' %}
{% if grains.os_family == 'Debian' %}
{% set saltrepofile = '/etc/apt/sources.list.d/salt.list' %}
{% endif %}
remove_saltproject_io_repo_manager:
file.absent:
- name: {{ saltrepofile }}
{% endif %}
{% else %}
fix_23_soup_sbin:
cmd.run:

View File

@@ -8,12 +8,6 @@
# Elastic agent is not managed by salt. Because of this we must store this base information in a
# script that accompanies the soup system. Since so-common is one of those special soup files,
# and since this same logic is required during installation, it's included in this file.
ELASTIC_AGENT_TARBALL_VERSION="8.10.4"
ELASTIC_AGENT_URL="https://repo.securityonion.net/file/so-repo/prod/2.4/elasticagent/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.tar.gz"
ELASTIC_AGENT_MD5_URL="https://repo.securityonion.net/file/so-repo/prod/2.4/elasticagent/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.md5"
ELASTIC_AGENT_FILE="/nsm/elastic-fleet/artifacts/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.tar.gz"
ELASTIC_AGENT_MD5="/nsm/elastic-fleet/artifacts/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.md5"
ELASTIC_AGENT_EXPANSION_DIR=/nsm/elastic-fleet/artifacts/beats/elastic-agent
DEFAULT_SALT_DIR=/opt/so/saltstack/default
DOC_BASE_URL="https://docs.securityonion.net/en/2.4"
@@ -174,6 +168,46 @@ check_salt_minion_status() {
return $status
}
# Compare es versions and return the highest version
compare_es_versions() {
# Save the original IFS
local OLD_IFS="$IFS"
IFS=.
local i ver1=($1) ver2=($2)
# Restore the original IFS
IFS="$OLD_IFS"
# Determine the maximum length between the two version arrays
local max_len=${#ver1[@]}
if [[ ${#ver2[@]} -gt $max_len ]]; then
max_len=${#ver2[@]}
fi
# Compare each segment of the versions
for ((i=0; i<max_len; i++)); do
# If a segment in ver1 or ver2 is missing, set it to 0
if [[ -z ${ver1[i]} ]]; then
ver1[i]=0
fi
if [[ -z ${ver2[i]} ]]; then
ver2[i]=0
fi
if ((10#${ver1[i]} > 10#${ver2[i]})); then
echo "$1"
return 0
fi
if ((10#${ver1[i]} < 10#${ver2[i]})); then
echo "$2"
return 0
fi
done
echo "$1" # If versions are equal, return either
return 0
}
copy_new_files() {
# Copy new files over to the salt dir
cd $UPDATE_DIR
@@ -192,7 +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
@@ -263,11 +297,6 @@ fail() {
exit 1
}
get_random_value() {
length=${1:-20}
head -c 5000 /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w $length | head -n 1
}
get_agent_count() {
if [ -f /opt/so/log/agents/agentstatus.log ]; then
AGENTCOUNT=$(cat /opt/so/log/agents/agentstatus.log | grep -wF active | awk '{print $2}')
@@ -276,6 +305,27 @@ get_agent_count() {
fi
}
get_elastic_agent_vars() {
local path="${1:-/opt/so/saltstack/default}"
local defaultsfile="${path}/salt/elasticsearch/defaults.yaml"
if [ -f "$defaultsfile" ]; then
ELASTIC_AGENT_TARBALL_VERSION=$(egrep " +version: " $defaultsfile | awk -F: '{print $2}' | tr -d '[:space:]')
ELASTIC_AGENT_URL="https://repo.securityonion.net/file/so-repo/prod/2.4/elasticagent/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.tar.gz"
ELASTIC_AGENT_MD5_URL="https://repo.securityonion.net/file/so-repo/prod/2.4/elasticagent/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.md5"
ELASTIC_AGENT_FILE="/nsm/elastic-fleet/artifacts/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.tar.gz"
ELASTIC_AGENT_MD5="/nsm/elastic-fleet/artifacts/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.md5"
ELASTIC_AGENT_EXPANSION_DIR=/nsm/elastic-fleet/artifacts/beats/elastic-agent
else
fail "Could not find salt/elasticsearch/defaults.yaml"
fi
}
get_random_value() {
length=${1:-20}
head -c 5000 /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w $length | head -n 1
}
gpg_rpm_import() {
if [[ $is_oracle ]]; then
if [[ "$WHATWOULDYOUSAYYAHDOHERE" == "setup" ]]; then
@@ -627,6 +677,8 @@ has_uppercase() {
}
update_elastic_agent() {
local path="${1:-/opt/so/saltstack/default}"
get_elastic_agent_vars "$path"
echo "Checking if Elastic Agent update is necessary..."
download_and_verify "$ELASTIC_AGENT_URL" "$ELASTIC_AGENT_MD5_URL" "$ELASTIC_AGENT_FILE" "$ELASTIC_AGENT_MD5" "$ELASTIC_AGENT_EXPANSION_DIR"
}

View File

@@ -29,6 +29,7 @@ container_list() {
"so-influxdb"
"so-kibana"
"so-kratos"
"so-hydra"
"so-nginx"
"so-pcaptools"
"so-soc"
@@ -53,6 +54,7 @@ container_list() {
"so-kafka"
"so-kibana"
"so-kratos"
"so-hydra"
"so-logstash"
"so-nginx"
"so-pcaptools"
@@ -112,6 +114,10 @@ update_docker_containers() {
container_list
fi
# all the images using ELASTICSEARCHDEFAULTS.elasticsearch.version
# does not include so-elastic-fleet since that container uses so-elastic-agent image
local IMAGES_USING_ES_VERSION=("so-elasticsearch")
rm -rf $SIGNPATH >> "$LOG_FILE" 2>&1
mkdir -p $SIGNPATH >> "$LOG_FILE" 2>&1
@@ -139,15 +145,36 @@ update_docker_containers() {
$PROGRESS_CALLBACK $i
fi
if [[ " ${IMAGES_USING_ES_VERSION[*]} " =~ [[:space:]]${i}[[:space:]] ]]; then
# this is an es container so use version defined in elasticsearch defaults.yaml
local UPDATE_DIR='/tmp/sogh/securityonion'
if [ ! -d "$UPDATE_DIR" ]; then
UPDATE_DIR=/securityonion
fi
local v1=0
local v2=0
if [[ -f "$UPDATE_DIR/salt/elasticsearch/defaults.yaml" ]]; then
v1=$(egrep " +version: " "$UPDATE_DIR/salt/elasticsearch/defaults.yaml" | awk -F: '{print $2}' | tr -d '[:space:]')
fi
if [[ -f "$DEFAULT_SALT_DIR/salt/elasticsearch/defaults.yaml" ]]; then
v2=$(egrep " +version: " "$DEFAULT_SALT_DIR/salt/elasticsearch/defaults.yaml" | awk -F: '{print $2}' | tr -d '[:space:]')
fi
local highest_es_version=$(compare_es_versions "$v1" "$v2")
local image=$i:$highest_es_version$IMAGE_TAG_SUFFIX
local sig_url=https://sigs.securityonion.net/es-$highest_es_version/$image.sig
else
# this is not an es container so use the so version for the version
local image=$i:$VERSION$IMAGE_TAG_SUFFIX
local sig_url=https://sigs.securityonion.net/$VERSION/$image.sig
fi
# Pull down the trusted docker image
local image=$i:$VERSION$IMAGE_TAG_SUFFIX
run_check_net_err \
"docker pull $CONTAINER_REGISTRY/$IMAGEREPO/$image" \
"Could not pull $image, please ensure connectivity to $CONTAINER_REGISTRY" >> "$LOG_FILE" 2>&1
# Get signature
run_check_net_err \
"curl --retry 5 --retry-delay 60 -A '$CURLTYPE/$CURRENTVERSION/$OS/$(uname -r)' https://sigs.securityonion.net/$VERSION/$i:$VERSION$IMAGE_TAG_SUFFIX.sig --output $SIGNPATH/$image.sig" \
"curl --retry 5 --retry-delay 60 -A '$CURLTYPE/$CURRENTVERSION/$OS/$(uname -r)' $sig_url --output $SIGNPATH/$image.sig" \
"Could not pull signature file for $image, please ensure connectivity to https://sigs.securityonion.net " \
noretry >> "$LOG_FILE" 2>&1
# Dump our hash values

View File

@@ -95,6 +95,8 @@ if [[ $EXCLUDE_STARTUP_ERRORS == 'Y' ]]; then
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|shutdown process" # server not yet ready (logstash waiting on elastic)
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|contain valid certificates" # server not yet ready (logstash waiting on elastic)
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|failedaction" # server not yet ready (logstash waiting on elastic)
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|block in start_workers" # server not yet ready (logstash waiting on elastic)
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|block in buffer_initialize" # server not yet ready (logstash waiting on elastic)
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|no route to host" # server not yet ready
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|not running" # server not yet ready
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|unavailable" # server not yet ready
@@ -123,6 +125,9 @@ if [[ $EXCLUDE_STARTUP_ERRORS == 'Y' ]]; then
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|tls handshake error" # Docker registry container when new node comes onlines
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|Unable to get license information" # Logstash trying to contact ES before it's ready
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|process already finished" # Telegraf script finished just as the auto kill timeout kicked in
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|No shard available" # Typical error when making a query before ES has finished loading all indices
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|responded with status-code 503" # telegraf getting 503 from ES during startup
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|process_cluster_event_timeout_exception" # logstash waiting for elasticsearch to start
fi
if [[ $EXCLUDE_FALSE_POSITIVE_ERRORS == 'Y' ]]; then
@@ -147,6 +152,11 @@ if [[ $EXCLUDE_FALSE_POSITIVE_ERRORS == 'Y' ]]; then
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|status 200" # false positive (request successful, contained error string in content)
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|app_layer.error" # false positive (suricata 7) in stats.log e.g. app_layer.error.imap.parser | Total | 0
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|is not an ip string literal" # false positive (Open Canary logging out blank IP addresses)
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|syncing rule" # false positive (rule sync log line includes rule name which can contain 'error')
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|request_unauthorized" # false positive (login failures to Hydra result in an 'error' log)
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|adding index lifecycle policy" # false positive (elasticsearch policy names contain 'error')
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|adding ingest pipeline" # false positive (elasticsearch ingest pipeline names contain 'error')
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|updating index template" # false positive (elasticsearch index or template names contain 'error')
fi
if [[ $EXCLUDE_KNOWN_ERRORS == 'Y' ]]; then
@@ -170,6 +180,7 @@ if [[ $EXCLUDE_KNOWN_ERRORS == 'Y' ]]; then
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|cannot join on an empty table" # InfluxDB flux query, import nodes
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|exhausting result iterator" # InfluxDB flux query mismatched table results (temporary data issue)
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|failed to finish run" # InfluxDB rare error, self-recoverable
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|Unable to gather disk name" # InfluxDB known error, can't read disks because the container doesn't have them mounted
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|iteration"
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|communication packets"
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|use of closed"
@@ -205,6 +216,9 @@ if [[ $EXCLUDE_KNOWN_ERRORS == 'Y' ]]; then
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|detect-parse" # Suricata encountering a malformed rule
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|integrity check failed" # Detections: Exclude false positive due to automated testing
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|syncErrors" # Detections: Not an actual error
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|Initialized license manager" # SOC log: before fields.status was changed to fields.licenseStatus
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|from NIC checksum offloading" # zeek reporter.log
EXCLUDED_ERRORS="$EXCLUDED_ERRORS|marked for removal" # docker container getting recycled
fi
RESULT=0
@@ -241,6 +255,10 @@ exclude_log "mysqld.log" # MySQL is removed as of 2.4.70, logs may still be on
exclude_log "soctopus.log" # Soctopus is removed as of 2.4.70, logs may still be on disk
exclude_log "agentstatus.log" # ignore this log since it tracks agents in error state
exclude_log "detections_runtime-status_yara.log" # temporarily ignore this log until Detections is more stable
exclude_log "/nsm/kafka/data/" # ignore Kafka data directory from log check.
# Include Zeek reporter.log to detect errors after running known good pcap(s) through sensor
echo "/nsm/zeek/spool/logger/reporter.log" >> /tmp/log_check_files
for log_file in $(cat /tmp/log_check_files); do
status "Checking log file $log_file"

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() {

View File

@@ -9,6 +9,9 @@
. /usr/sbin/so-common
software_raid=("SOSMN" "SOSMN-DE02" "SOSSNNV" "SOSSNNV-DE02" "SOS10k-DE02" "SOS10KNV" "SOS10KNV-DE02" "SOS10KNV-DE02" "SOS2000-DE02" "SOS-GOFAST-LT-DE02" "SOS-GOFAST-MD-DE02" "SOS-GOFAST-HV-DE02")
hardware_raid=("SOS1000" "SOS1000F" "SOSSN7200" "SOS5000" "SOS4000")
{%- if salt['grains.get']('sosmodel', '') %}
{%- set model = salt['grains.get']('sosmodel') %}
model={{ model }}
@@ -16,33 +19,42 @@ model={{ model }}
if [[ $model =~ ^(SO2AMI01|SO2AZI01|SO2GCI01)$ ]]; then
exit 0
fi
for i in "${software_raid[@]}"; do
if [[ "$model" == $i ]]; then
is_softwareraid=true
is_hwraid=false
break
fi
done
for i in "${hardware_raid[@]}"; do
if [[ "$model" == $i ]]; then
is_softwareraid=false
is_hwraid=true
break
fi
done
{%- else %}
echo "This is not an appliance"
exit 0
{%- endif %}
if [[ $model =~ ^(SOS10K|SOS500|SOS1000|SOS1000F|SOS4000|SOSSN7200|SOSSNNV|SOSMN)$ ]]; then
is_bossraid=true
fi
if [[ $model =~ ^(SOSSNNV|SOSMN)$ ]]; then
is_swraid=true
fi
if [[ $model =~ ^(SOS10K|SOS500|SOS1000|SOS1000F|SOS4000|SOSSN7200)$ ]]; then
is_hwraid=true
fi
check_nsm_raid() {
PERCCLI=$(/opt/raidtools/perccli/perccli64 /c0/v0 show|grep RAID|grep Optl)
MEGACTL=$(/opt/raidtools/megasasctl |grep optimal)
if [[ $APPLIANCE == '1' ]]; then
if [[ "$model" == "SOS500" || "$model" == "SOS500-DE02" ]]; then
#This doesn't have raid
HWRAID=0
else
if [[ -n $PERCCLI ]]; then
HWRAID=0
elif [[ -n $MEGACTL ]]; then
HWRAID=0
else
HWRAID=1
fi
fi
fi
}
@@ -50,17 +62,27 @@ check_nsm_raid() {
check_boss_raid() {
MVCLI=$(/usr/local/bin/mvcli info -o vd |grep status |grep functional)
MVTEST=$(/usr/local/bin/mvcli info -o vd | grep "No adapter")
BOSSNVMECLI=$(/usr/local/bin/mnv_cli info -o vd -i 0 | grep Functional)
# Check to see if this is a SM based system
if [[ -z $MVTEST ]]; then
if [[ -n $MVCLI ]]; then
# Is this NVMe Boss Raid?
if [[ "$model" =~ "-DE02" ]]; then
if [[ -n $BOSSNVMECLI ]]; then
BOSSRAID=0
else
BOSSRAID=1
fi
else
# This doesn't have boss raid so lets make it 0
BOSSRAID=0
# Check to see if this is a SM based system
if [[ -z $MVTEST ]]; then
if [[ -n $MVCLI ]]; then
BOSSRAID=0
else
BOSSRAID=1
fi
else
# This doesn't have boss raid so lets make it 0
BOSSRAID=0
fi
fi
}
@@ -79,14 +101,13 @@ SWRAID=0
BOSSRAID=0
HWRAID=0
if [[ $is_hwraid ]]; then
if [[ "$is_hwraid" == "true" ]]; then
check_nsm_raid
check_boss_raid
fi
if [[ $is_bossraid ]]; then
check_boss_raid
fi
if [[ $is_swraid ]]; then
if [[ "$is_softwareraid" == "true" ]]; then
check_software_raid
check_boss_raid
fi
sum=$(($SWRAID + $BOSSRAID + $HWRAID))

View File

@@ -51,6 +51,14 @@ docker:
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-hydra':
final_octet: 30
port_bindings:
- 0.0.0.0:4444:4444
- 0.0.0.0:4445:4445
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-logstash':
final_octet: 29
port_bindings:
@@ -74,6 +82,7 @@ docker:
- 443:443
- 8443:8443
- 7788:7788
- 7789:7789
custom_bind_mounts: []
extra_hosts: []
extra_env: []

View File

@@ -20,41 +20,41 @@ dockergroup:
dockerheldpackages:
pkg.installed:
- pkgs:
- containerd.io: 1.6.33-1
- docker-ce: 5:26.1.4-1~debian.12~bookworm
- docker-ce-cli: 5:26.1.4-1~debian.12~bookworm
- docker-ce-rootless-extras: 5:26.1.4-1~debian.12~bookworm
- containerd.io: 1.7.21-1
- docker-ce: 5:27.2.0-1~debian.12~bookworm
- docker-ce-cli: 5:27.2.0-1~debian.12~bookworm
- docker-ce-rootless-extras: 5:27.2.0-1~debian.12~bookworm
- hold: True
- update_holds: True
{% elif grains.oscodename == 'jammy' %}
dockerheldpackages:
pkg.installed:
- pkgs:
- containerd.io: 1.6.33-1
- docker-ce: 5:26.1.4-1~ubuntu.22.04~jammy
- docker-ce-cli: 5:26.1.4-1~ubuntu.22.04~jammy
- docker-ce-rootless-extras: 5:26.1.4-1~ubuntu.22.04~jammy
- containerd.io: 1.7.21-1
- docker-ce: 5:27.2.0-1~ubuntu.22.04~jammy
- docker-ce-cli: 5:27.2.0-1~ubuntu.22.04~jammy
- docker-ce-rootless-extras: 5:27.2.0-1~ubuntu.22.04~jammy
- hold: True
- update_holds: True
{% else %}
dockerheldpackages:
pkg.installed:
- pkgs:
- containerd.io: 1.6.33-1
- docker-ce: 5:26.1.4-1~ubuntu.20.04~focal
- docker-ce-cli: 5:26.1.4-1~ubuntu.20.04~focal
- docker-ce-rootless-extras: 5:26.1.4-1~ubuntu.20.04~focal
- containerd.io: 1.7.21-1
- docker-ce: 5:27.2.0-1~ubuntu.20.04~focal
- docker-ce-cli: 5:27.2.0-1~ubuntu.20.04~focal
- docker-ce-rootless-extras: 5:27.2.0-1~ubuntu.20.04~focal
- hold: True
- update_holds: True
{% endif %}
{% endif %}
{% else %}
dockerheldpackages:
pkg.installed:
- pkgs:
- containerd.io: 1.6.33-3.1.el9
- docker-ce: 3:26.1.4-1.el9
- docker-ce-cli: 1:26.1.4-1.el9
- docker-ce-rootless-extras: 26.1.4-1.el9
- containerd.io: 1.7.21-3.1.el9
- docker-ce: 3:27.2.0-1.el9
- docker-ce-cli: 1:27.2.0-1.el9
- docker-ce-rootless-extras: 27.2.0-1.el9
- hold: True
- update_holds: True
{% endif %}

View File

@@ -45,6 +45,7 @@ docker:
so-influxdb: *dockerOptions
so-kibana: *dockerOptions
so-kratos: *dockerOptions
so-hydra: *dockerOptions
so-logstash: *dockerOptions
so-nginx: *dockerOptions
so-nginx-fleet-node: *dockerOptions

View File

@@ -1,10 +1,10 @@
elastalert:
enabled:
description: You can enable or disable Elastalert.
description: Enables or disables the ElastAlert 2 process. This process is critical for ensuring alerts arrive in SOC, and for outbound notification delivery.
helpLink: elastalert.html
alerter_parameters:
title: Alerter Parameters
description: Optional configuration parameters for additional alerters that can be enabled for all Sigma rules. Filter for 'Alerter' in this Configuration screen to find the setting that allows these alerters to be enabled within the SOC ElastAlert module. Use YAML format for these parameters, and reference the ElastAlert 2 documentation, located at https://elastalert2.readthedocs.io, for available alerters and their required configuration parameters. A full update of the ElastAlert rule engine, via the Detections screen, is required in order to apply these changes. Requires a valid Security Onion license key.
title: Custom Configuration Parameters
description: Optional configuration parameters made available as defaults for all rules and alerters. Use YAML format for these parameters, and reference the ElastAlert 2 documentation, located at https://elastalert2.readthedocs.io, for available configuration parameters. Requires a valid Security Onion license key.
global: True
multiline: True
syntax: yaml

View File

@@ -1,4 +1,4 @@
elastic_fleet_package_registry:
enabled:
description: You can enable or disable Elastic Fleet Package Registry.
description: Enables or disables the Fleet package registry process. This process must remain enabled to allow Elastic Agent packages to be updated.
advanced: True

View File

@@ -8,7 +8,6 @@
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% from 'docker/docker.map.jinja' import DOCKER %}
include:
- elasticagent.config
- elasticagent.sostatus

View File

@@ -0,0 +1,4 @@
elasticagent:
enabled:
description: Enables or disables the Elastic Agent process. This process must remain enabled to allow collection of node events.
advanced: True

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:
@@ -63,6 +65,14 @@ eastatedir:
- group: 939
- makedirs: True
custommappingsdir:
file.directory:
- name: /nsm/custom-mappings
- user: 947
- group: 939
- makedirs: True
eapackageupgrade:
file.managed:
- name: /usr/sbin/so-elastic-fleet-package-upgrade
@@ -73,6 +83,56 @@ eapackageupgrade:
- template: jinja
{% if GLOBALS.role != "so-fleet" %}
{% if not GLOBALS.airgap %}
soresourcesrepoclone:
git.latest:
- name: https://github.com/Security-Onion-Solutions/securityonion-resources.git
- target: /nsm/securityonion-resources
- rev: 'main'
- depth: 1
- force_reset: True
{% endif %}
elasticdefendconfdir:
file.directory:
- name: /opt/so/conf/elastic-fleet/defend-exclusions/rulesets
- user: 947
- group: 939
- makedirs: True
elasticdefenddisabled:
file.managed:
- name: /opt/so/conf/elastic-fleet/defend-exclusions/disabled-filters.yaml
- source: salt://elasticfleet/files/soc/elastic-defend-disabled-filters.yaml
- user: 947
- group: 939
- mode: 600
elasticdefendcustom:
file.managed:
- name: /opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters-raw
- source: salt://elasticfleet/files/soc/elastic-defend-custom-filters.yaml
- user: 947
- group: 939
- mode: 600
{% if ELASTICFLEETMERGED.config.defend_filters.enable_auto_configuration %}
{% set ap = "present" %}
{% else %}
{% set ap = "absent" %}
{% endif %}
cron-elastic-defend-filters:
cron.{{ap}}:
- name: python3 /sbin/so-elastic-defend-manage-filters.py -c /opt/so/conf/elasticsearch/curl.config -d /opt/so/conf/elastic-fleet/defend-exclusions/disabled-filters.yaml -i /nsm/securityonion-resources/event_filters/ -i /opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters/ &>> /opt/so/log/elasticfleet/elastic-defend-manage-filters.log
- identifier: elastic-defend-filters
- user: root
- minute: '0'
- hour: '3'
- daymonth: '*'
- month: '*'
- dayweek: '*'
eaintegrationsdir:
file.directory:
- name: /opt/so/conf/elastic-fleet/integrations
@@ -87,6 +147,7 @@ eadynamicintegration:
- user: 947
- group: 939
- template: jinja
- show_changes: False
eaintegration:
file.recurse:
@@ -94,6 +155,7 @@ eaintegration:
- source: salt://elasticfleet/files/integrations
- user: 947
- group: 939
- show_changes: False
eaoptionalintegrationsdir:
file.directory:

View File

@@ -8,6 +8,9 @@ elasticfleet:
endpoints_enrollment: ''
es_token: ''
grid_enrollment: ''
defend_filters:
enable_auto_configuration: False
subscription_integrations: False
logging:
zeek:
excluded:
@@ -30,88 +33,20 @@ elasticfleet:
- stderr
- stdout
packages:
- apache
- auditd
- auth0
- aws
- azure
- barracuda
- carbonblack_edr
- cef
- checkpoint
- cisco_asa
- cisco_duo
- cisco_ftd
- cisco_ios
- cisco_ise
- cisco_meraki
- cisco_umbrella
- citrix_adc
- citrix_waf
- cloudflare
- crowdstrike
- darktrace
- elastic_agent
- elasticsearch
- endpoint
- f5_bigip
- fim
- fireeye
- fleet_server
- fortinet
- fortinet_fortigate
- gcp
- github
- google_workspace
- http_endpoint
- httpjson
- iis
- journald
- juniper
- juniper_srx
- kafka_log
- lastpass
- log
- m365_defender
- microsoft_defender_endpoint
- microsoft_dhcp
- microsoft_sqlserver
- mimecast
- mysql
- netflow
- nginx
- o365
- okta
- osquery_manager
- panw
- pfsense
- proofpoint_tap
- pulse_connect_secure
- redis
- sentinel_one
- snort
- snyk
- sonicwall_firewall
- sophos
- sophos_central
- symantec_endpoint
- system
- tcp
- tenable_sc
- ti_abusech
- ti_anomali
- ti_cybersixgill
- ti_misp
- ti_otx
- ti_recordedfuture
- ti_threatq
- udp
- vsphere
- windows
- winlog
- zscaler_zia
- zscaler_zpa
- 1password
optional_integrations:
sublime_platform:
enabled_nodes: []

View File

@@ -17,10 +17,12 @@ include:
- elasticfleet.sostatus
- ssl
{% if grains.role not in ['so-fleet'] %}
# Wait for Elasticsearch to be ready - no reason to try running Elastic Fleet server if ES is not ready
wait_for_elasticsearch_elasticfleet:
cmd.run:
- name: so-elasticsearch-wait
{% endif %}
# If enabled, automatically update Fleet Logstash Outputs
{% if ELASTICFLEETMERGED.config.server.enable_auto_configuration and grains.role not in ['so-import', 'so-eval', 'so-fleet'] %}
@@ -141,7 +143,26 @@ so-elastic-fleet-integrations:
so-elastic-agent-grid-upgrade:
cmd.run:
- name: /usr/sbin/so-elastic-agent-grid-upgrade
- retry: True
- retry:
attempts: 12
interval: 5
so-elastic-fleet-integration-upgrade:
cmd.run:
- name: /usr/sbin/so-elastic-fleet-integration-upgrade
so-elastic-fleet-addon-integrations:
cmd.run:
- name: /usr/sbin/so-elastic-fleet-optional-integrations-load
{% if ELASTICFLEETMERGED.config.defend_filters.enable_auto_configuration %}
so-elastic-defend-manage-filters-file-watch:
cmd.run:
- name: python3 /sbin/so-elastic-defend-manage-filters.py -c /opt/so/conf/elasticsearch/curl.config -d /opt/so/conf/elastic-fleet/defend-exclusions/disabled-filters.yaml -i /nsm/securityonion-resources/event_filters/ -i /opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters/ &>> /opt/so/log/elasticfleet/elastic-defend-manage-filters.log
- onchanges:
- file: elasticdefendcustom
- file: elasticdefenddisabled
{% endif %}
{% endif %}
delete_so-elastic-fleet_so-status.disabled:

View File

@@ -0,0 +1,19 @@
{
"package": {
"name": "fleet_server",
"version": ""
},
"name": "fleet_server-1",
"namespace": "default",
"policy_id": "FleetServer_hostname",
"vars": {},
"inputs": {
"fleet_server-fleet-server": {
"enabled": true,
"vars": {
"custom": "server.ssl.supported_protocols: [\"TLSv1.2\", \"TLSv1.3\"]\nserver.ssl.cipher_suites: [ \"ECDHE-RSA-AES-128-GCM-SHA256\", \"ECDHE-RSA-AES-256-GCM-SHA384\", \"ECDHE-RSA-AES-128-CBC-SHA\", \"ECDHE-RSA-AES-256-CBC-SHA\", \"RSA-AES-128-GCM-SHA256\", \"RSA-AES-256-GCM-SHA384\"]"
},
"streams": {}
}
}
}

View File

@@ -3,25 +3,30 @@
"namespace": "default",
"description": "",
"package": {
"name": "endpoint",
"title": "Elastic Defend",
"version": "8.10.2"
"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": []
}
]
}

View File

@@ -11,7 +11,7 @@
"winlogs-winlog": {
"enabled": true,
"streams": {
"winlog.winlog": {
"winlog.winlogs": {
"enabled": true,
"vars": {
"channel": "Microsoft-Windows-Windows Defender/Operational",

View File

@@ -0,0 +1,30 @@
{
"package": {
"name": "log",
"version": ""
},
"name": "hydra-logs",
"namespace": "so",
"description": "Hydra logs",
"policy_id": "so-grid-nodes_general",
"inputs": {
"logs-logfile": {
"enabled": true,
"streams": {
"log.logs": {
"enabled": true,
"vars": {
"paths": [
"/opt/so/log/hydra/hydra.log"
],
"data_stream.dataset": "hydra",
"tags": ["so-hydra"],
"processors": "- decode_json_fields:\n fields: [\"message\"]\n target: \"\"\n add_error_key: true \n- add_fields:\n target: event\n fields:\n category: iam\n module: hydra",
"custom": "pipeline: hydra"
}
}
}
}
},
"force": true
}

View File

@@ -20,7 +20,7 @@
],
"data_stream.dataset": "import",
"custom": "",
"processors": "- dissect:\n tokenizer: \"/nsm/import/%{import.id}/evtx/%{import.file}\"\n field: \"log.file.path\"\n target_prefix: \"\"\n- decode_json_fields:\n fields: [\"message\"]\n target: \"\"\n- drop_fields:\n fields: [\"host\"]\n ignore_missing: true\n- add_fields:\n target: data_stream\n fields:\n type: logs\n dataset: system.security\n- add_fields:\n target: event\n fields:\n dataset: system.security\n module: system\n imported: true\n- add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-system.security-1.43.0\n- if:\n equals:\n winlog.channel: 'Microsoft-Windows-Sysmon/Operational'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: windows.sysmon_operational\n - add_fields:\n target: event\n fields:\n dataset: windows.sysmon_operational\n module: windows\n imported: true\n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-windows.sysmon_operational-1.38.0\n- if:\n equals:\n winlog.channel: 'Application'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: system.application\n - add_fields:\n target: event\n fields:\n dataset: system.application\n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-system.application-1.43.0\n- if:\n equals:\n winlog.channel: 'System'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: system.system\n - add_fields:\n target: event\n fields:\n dataset: system.system\n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-system.system-1.43.0\n \n- if:\n equals:\n winlog.channel: 'Microsoft-Windows-PowerShell/Operational'\n then: \n - add_fields:\n target: data_stream\n fields:\n dataset: windows.powershell_operational\n - add_fields:\n target: event\n fields:\n dataset: windows.powershell_operational\n module: windows\n - add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-windows.powershell_operational-1.38.0\n- add_fields:\n target: data_stream\n fields:\n dataset: import",
"processors": "- dissect:\n tokenizer: \"/nsm/import/%{import.id}/evtx/%{import.file}\"\n field: \"log.file.path\"\n target_prefix: \"\"\n- decode_json_fields:\n fields: [\"message\"]\n target: \"\"\n- drop_fields:\n fields: [\"host\"]\n ignore_missing: true\n- add_fields:\n target: data_stream\n fields:\n type: logs\n dataset: system.security\n- add_fields:\n target: event\n fields:\n dataset: system.security\n module: system\n imported: true\n- add_fields:\n target: \"@metadata\"\n fields:\n pipeline: logs-system.security-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"
]

View File

@@ -0,0 +1,35 @@
{
"package": {
"name": "log",
"version": ""
},
"name": "so-ip-mappings",
"namespace": "so",
"description": "IP Description mappings",
"policy_id": "so-grid-nodes_general",
"vars": {},
"inputs": {
"logs-logfile": {
"enabled": true,
"streams": {
"log.logs": {
"enabled": true,
"vars": {
"paths": [
"/nsm/custom-mappings/ip-descriptions.csv"
],
"data_stream.dataset": "hostnamemappings",
"tags": [
"so-ip-mappings"
],
"processors": "- decode_csv_fields:\n fields:\n message: decoded.csv\n separator: \",\"\n ignore_missing: false\n overwrite_keys: true\n trim_leading_space: true\n fail_on_error: true\n\n- extract_array:\n field: decoded.csv\n mappings:\n so.ip_address: '0'\n so.description: '1'\n\n- script:\n lang: javascript\n source: >\n function process(event) {\n var ip = event.Get('so.ip_address');\n var validIpRegex = /^((25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)\\.){3}(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)$/\n if (!validIpRegex.test(ip)) {\n event.Cancel();\n }\n }\n- fingerprint:\n fields: [\"so.ip_address\"]\n target_field: \"@metadata._id\"\n",
"custom": ""
}
}
}
}
},
"force": true
}

View File

@@ -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": ""
}
}
}

View File

@@ -0,0 +1,27 @@
title: 'Template 1'
id: 'This needs to be a UUIDv4 id - https://www.uuidgenerator.net/version4'
description: 'Short description detailing what this rule is filtering and why.'
references: 'Relevant urls, etc'
author: '@SecurityOnion'
date: 'MM/DD/YY'
event_type: 'dns_query'
filter_type: 'exclude'
filter:
selection_1:
TargetField: 'QueryName'
Condition: 'end with'
Pattern: '.thawte.com'
---
title: 'Template 2'
id: 'This needs to be a UUIDv4 id - https://www.uuidgenerator.net/version4'
description: 'Short description detailing what this rule is filtering and why.'
references: 'Relevant urls, etc'
author: '@SecurityOnion'
date: 'MM/DD/YY'
event_type: 'process_creation'
filter_type: 'exclude'
filter:
selection_1:
TargetField: 'ParentImage'
Condition: 'is'
Pattern: 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngentask.exe'

View File

@@ -0,0 +1,3 @@
'9EDAA51C-BB12-49D9-8748-2B61371F2E7D':
Date: '10/10/2024'
Notes: 'Example Disabled Filter - Leave this entry here, just copy and paste as needed.'

View File

@@ -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 %}

View File

@@ -1,6 +1,6 @@
elasticfleet:
enabled:
description: You can enable or disable Elastic Fleet.
description: Enables or disables the Elastic Fleet process. This process is critical for managing Elastic Agents.
advanced: True
helpLink: elastic-fleet.html
enable_manager_output:
@@ -9,6 +9,24 @@ elasticfleet:
global: True
forcedType: bool
helpLink: elastic-fleet.html
files:
soc:
elastic-defend-disabled-filters__yaml:
title: Disabled Elastic Defend filters
description: Enter the ID of the filter that should be disabled.
syntax: yaml
file: True
global: True
helpLink: elastic-fleet.html
advanced: True
elastic-defend-custom-filters__yaml:
title: Custom Elastic Defend filters
description: Enter custom filters seperated by ---
syntax: yaml
file: True
global: True
helpLink: elastic-fleet.html
advanced: True
logging:
zeek:
excluded:
@@ -16,6 +34,17 @@ elasticfleet:
forcedType: "[]string"
helpLink: zeek.html
config:
defend_filters:
enable_auto_configuration:
description: Enable auto-configuration and management of the Elastic Defend Exclusion filters.
global: True
helpLink: elastic-fleet.html
advanced: True
subscription_integrations:
description: Enable the installation of integrations that require an Elastic license.
global: True
forcedType: bool
helpLink: elastic-fleet.html
server:
custom_fqdn:
description: Custom FQDN for Agents to connect to. One per line.

View File

@@ -0,0 +1,251 @@
from datetime import datetime
import sys
import getopt
from so_elastic_defend_filters_helper import *
import logging
logging.basicConfig(level=logging.INFO, format='%(message)s')
# Define mappings for Target Field, Event Type, Conditions
TARGET_FIELD_MAPPINGS = {
"Image": "process.executable",
"ParentImage": "process.parent.executable",
"CommandLine": "process.command_line",
"ParentCommandLine": "process.parent.command_line",
"DestinationHostname": "destination.domain",
"QueryName": "dns.question.name",
"DestinationIp": "destination.ip",
"TargetObject": "registry.path",
"TargetFilename": "file.path"
}
DATASET_MAPPINGS = {
"process_create": "endpoint.events.process",
"network_connection": "endpoint.events.network",
"file_create": "endpoint.events.file",
"file_delete": "endpoint.events.file",
"registry_event": "endpoint.events.registry",
"dns_query": "endpoint.events.network"
}
CONDITION_MAPPINGS = {
"is": ("included", "match"),
"end with": ("included", "wildcard"),
"begin with": ("included", "wildcard"),
"contains": ("included", "wildcard")
}
# Extract entries for a rule
def extract_entries(data, event_type):
entries = []
filter_data = data.get('filter', {})
for value in filter_data.values():
target_field = TARGET_FIELD_MAPPINGS.get(value.get('TargetField', ''))
condition = value.get('Condition', '')
pattern = value.get('Pattern', '')
if condition not in CONDITION_MAPPINGS:
logging.error(f"Invalid condition: {condition}")
# Modify the pattern based on the condition
pattern = modify_pattern(condition, pattern)
operator, match_type = CONDITION_MAPPINGS[condition]
entries.append({
"field": target_field,
"operator": operator,
"type": match_type,
"value": pattern
})
# Add the event.dataset entry from DATASET_MAPPINGS
dataset_value = DATASET_MAPPINGS.get(event_type, '')
if dataset_value:
entries.append({
"field": "event.dataset",
"operator": "included",
"type": "match",
"value": dataset_value
})
else:
logging.error(f"No dataset mapping found for event_type: {event_type}")
return entries
# Build the JSON
def build_json_entry(entries, guid, event_type, context):
return {
"comments": [],
"entries": entries,
"item_id": guid,
"name": f"SO - {event_type} - {guid}",
"description": f"{context}\n\n <<- Note: This filter is managed by Security Onion. ->>",
"namespace_type": "agnostic",
"tags": ["policy:all"],
"type": "simple",
"os_types": ["windows"],
"entries": entries
}
# Check to see if the rule is disabled
# If it is, make sure it is not active
def disable_check(guid, disabled_rules, username, password):
if guid in disabled_rules:
logging.info(f"Rule {guid} is in the disabled rules list, confirming that is is actually disabled...")
existing_rule = api_request("GET", guid, username, password)
if existing_rule:
if api_request("DELETE", guid, username, password):
logging.info(f"Successfully deleted rule {guid}")
return True, "deleted"
else:
logging.error(f"Error deleting rule {guid}.")
return True, "Error deleting"
return True, "NOP"
return False, None
def modify_pattern(condition, pattern):
"""
Modify the pattern based on the condition.
- 'end with': Add '*' to the beginning of the pattern.
- 'begin with': Add '*' to the end of the pattern.
- 'contains': Add '*' to both the beginning and end of the pattern.
"""
if isinstance(pattern, list):
# Apply modification to each pattern in the list if it's a list of patterns
return [modify_pattern(condition, p) for p in pattern]
if condition == "end with":
return f"*{pattern}"
elif condition == "begin with":
return f"{pattern}*"
elif condition == "contains":
return f"*{pattern}*"
return pattern
def process_rule_update_or_create(guid, json_entry, username, password):
existing_rule = api_request("GET", guid, username, password)
if existing_rule:
existing_rule_data = extract_relevant_fields(existing_rule)
new_rule_data = extract_relevant_fields(json_entry)
if generate_hash(existing_rule_data) != generate_hash(new_rule_data):
logging.info(f"Updating rule {guid}")
json_entry.pop("list_id", None)
api_request("PUT", guid, username, password, json_data=json_entry)
return "updated"
logging.info(f"Rule {guid} is up to date.")
return "no_change"
else:
logging.info(f"Creating new rule {guid}")
json_entry["list_id"] = "endpoint_event_filters"
api_request("POST", guid, username, password, json_data=json_entry)
return "new"
# Main function for processing rules
def process_rules(yaml_files, disabled_rules, username, password):
stats = {"rule_count": 0, "new": 0, "updated": 0, "no_change": 0, "disabled": 0, "deleted": 0}
for data in yaml_files:
logging.info(f"Processing rule: {data.get('id', '')}")
event_type = data.get('event_type', '')
guid = data.get('id', '')
dataset = DATASET_MAPPINGS.get(event_type, '')
context = data.get('description', '')
rule_deleted, state = disable_check(guid, disabled_rules, username, password)
if rule_deleted:
stats["disabled"] += 1
if state == "deleted":
stats["deleted"] += 1
continue
# Extract entries and build JSON
entries = extract_entries(data, event_type)
json_entry = build_json_entry(entries, guid, event_type, context)
# Process rule creation or update
status = process_rule_update_or_create(guid, json_entry, username, password)
stats[status] += 1
stats["rule_count"] += 1
return stats
def parse_args(argv):
try:
opts, args = getopt.getopt(argv, "i:d:c:f:", ["input=", "disabled=", "credentials=", "flags_file="])
except getopt.GetoptError:
print("Usage: python so-elastic-defend-manage-filters.py -c <credentials_file> -d <disabled_file> -i <folder_of_yaml_files> [-f <flags_file>]")
sys.exit(2)
return opts
def load_flags(file_path):
with open(file_path, 'r') as flags_file:
return flags_file.read().splitlines()
def validate_inputs(credentials_file, disabled_file, yaml_directories):
if not credentials_file or not disabled_file or not yaml_directories:
print("Usage: python so-elastic-defend-manage-filters.py -c <credentials_file> -d <disabled_file> -i <folder_of_yaml_files> [-f <flags_file>]")
sys.exit(2)
def main(argv):
credentials_file = ""
disabled_file = ""
yaml_directories = []
opts = parse_args(argv)
for opt, arg in opts:
if opt in ("-c", "--credentials"):
credentials_file = arg
elif opt in ("-d", "--disabled"):
disabled_file = arg
elif opt in ("-i", "--input"):
yaml_directories.append(arg)
elif opt in ("-f", "--flags_file"):
flags = load_flags(arg)
return main(argv + flags)
timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
logging.info(f"\n{timestamp}")
validate_inputs(credentials_file, disabled_file, yaml_directories)
credentials = load_credentials(credentials_file)
if not credentials:
raise Exception("Failed to load credentials")
username, password = extract_auth_details(credentials)
if not username or not password:
raise Exception("Invalid credentials format")
custom_rules_input = '/opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters-raw'
custom_rules_output = '/opt/so/conf/elastic-fleet/defend-exclusions/rulesets/custom-filters'
prepare_custom_rules(custom_rules_input, custom_rules_output)
disabled_rules = load_disabled(disabled_file)
total_stats = {"rule_count": 0, "new": 0, "updated": 0, "no_change": 0, "disabled": 0, "deleted": 0}
for yaml_dir in yaml_directories:
yaml_files = load_yaml_files(yaml_dir)
stats = process_rules(yaml_files, disabled_rules, username, password)
for key in total_stats:
total_stats[key] += stats[key]
logging.info(f"\nProcessing Summary")
logging.info(f" - Total processed rules: {total_stats['rule_count']}")
logging.info(f" - New rules: {total_stats['new']}")
logging.info(f" - Updated rules: {total_stats['updated']}")
logging.info(f" - Disabled rules: {total_stats['deleted']}")
logging.info(f" - Rules with no changes: {total_stats['no_change']}")
logging.info(f"Rule status Summary")
logging.info(f" - Active rules: {total_stats['rule_count'] - total_stats['disabled']}")
logging.info(f" - Disabled rules: {total_stats['disabled']}")
timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
logging.info(f"Execution completed at: {timestamp}")
if __name__ == "__main__":
main(sys.argv[1:])

View File

@@ -97,11 +97,84 @@ 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
echo "Error: Failed to retrieve agent policies."
exit 1
fi
}
elastic_fleet_agent_policy_names() {
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies" | jq -r .items[].name
if [ $? -ne 0 ]; then
echo "Error: Failed to retrieve agent policies."
exit 1
fi
}
elastic_fleet_integration_policy_names() {
AGENT_POLICY=$1
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies/$AGENT_POLICY" | jq -r .item.package_policies[].name
if [ $? -ne 0 ]; then
echo "Error: Failed to retrieve integrations for '$AGENT_POLICY'."
exit 1
fi
}
elastic_fleet_integration_policy_package_name() {
AGENT_POLICY=$1
INTEGRATION=$2
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies/$AGENT_POLICY" | jq -r --arg INTEGRATION "$INTEGRATION" '.item.package_policies[] | select(.name==$INTEGRATION)| .package.name'
if [ $? -ne 0 ]; then
echo "Error: Failed to retrieve package name for '$INTEGRATION' in '$AGENT_POLICY'."
exit 1
fi
}
elastic_fleet_integration_policy_package_version() {
AGENT_POLICY=$1
INTEGRATION=$2
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies/$AGENT_POLICY" | jq -r --arg INTEGRATION "$INTEGRATION" '.item.package_policies[] | select(.name==$INTEGRATION)| .package.version'
if [ $? -ne 0 ]; then
echo "Error: Failed to retrieve package version for '$INTEGRATION' in '$AGENT_POLICY'."
exit 1
fi
}
elastic_fleet_integration_id() {
AGENT_POLICY=$1
INTEGRATION=$2
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/agent_policies/$AGENT_POLICY" | jq -r --arg INTEGRATION "$INTEGRATION" '.item.package_policies[] | select(.name==$INTEGRATION)| .id'
if [ $? -ne 0 ]; then
echo "Error: Failed to retrieve integration ID for '$INTEGRATION' in '$AGENT_POLICY'."
exit 1
fi
}
elastic_fleet_integration_policy_dryrun_upgrade() {
INTEGRATION_ID=$1
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -H "Content-Type: application/json" -H 'kbn-xsrf: true' -L -X POST "localhost:5601/api/fleet/package_policies/upgrade/dryrun" -d "{\"packagePolicyIds\":[\"$INTEGRATION_ID\"]}"
if [ $? -ne 0 ]; then
echo "Error: Failed to complete dry run for '$INTEGRATION_ID'."
exit 1
fi
}
elastic_fleet_policy_create() {
NAME=$1

View File

@@ -0,0 +1,29 @@
#!/bin/bash
# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one
# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at
# https://securityonion.net/license; you may not use this file except in compliance with the
# Elastic License 2.0.
. /usr/sbin/so-elastic-fleet-common
# Get all the fleet policies
json_output=$(curl -s -K /opt/so/conf/elasticsearch/curl.config -L -X GET "localhost:5601/api/fleet/agent_policies" -H 'kbn-xsrf: true')
# Extract the IDs that start with "FleetServer_"
POLICY=$(echo "$json_output" | jq -r '.items[] | select(.id | startswith("FleetServer_")) | .id')
# Iterate over each ID in the POLICY variable
for POLICYNAME in $POLICY; do
printf "\nUpdating Policy: $POLICYNAME\n"
# First get the Integration ID
INTEGRATION_ID=$(/usr/sbin/so-elastic-fleet-agent-policy-view "$POLICYNAME" | jq -r '.item.package_policies[] | select(.package.name == "fleet_server") | .id')
# Modify the default integration policy to update the policy_id and an with the correct naming
UPDATED_INTEGRATION_POLICY=$(jq --arg policy_id "$POLICYNAME" --arg name "fleet_server-$POLICYNAME" '
.policy_id = $policy_id |
.name = $name' /opt/so/conf/elastic-fleet/integrations/fleet-server/fleet-server.json)
# Now update the integration policy using the modified JSON
elastic_fleet_integration_update "$INTEGRATION_ID" "$UPDATED_INTEGRATION_POLICY"
done

View File

@@ -12,7 +12,10 @@ if [ ! -f /opt/so/state/eaintegrations.txt ]; then
# First, check for any package upgrades
/usr/sbin/so-elastic-fleet-package-upgrade
# Second, configure Elastic Defend Integration seperately
# Second, update Fleet Server policies
/sbin/so-elastic-fleet-integration-policy-elastic-fleet-server
# Third, configure Elastic Defend Integration seperately
/usr/sbin/so-elastic-fleet-integration-policy-elastic-defend
# Initial Endpoints

View File

@@ -0,0 +1,62 @@
#!/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

View File

@@ -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

View File

@@ -0,0 +1,128 @@
import hashlib
import os
import json
import yaml
import requests
from requests.auth import HTTPBasicAuth
import shutil
# Extract 'entries', 'description' and 'os_types' fields
def extract_relevant_fields(filter):
return {
'entries': filter.get('entries', []),
'description': filter.get('description', '')
}
# Sort for consistency, so that a hash can be generated
def sorted_data(value):
if isinstance(value, dict):
# Recursively sort the dictionary by key
return {k: sorted_data(v) for k, v in sorted(value.items())}
elif isinstance(value, list):
# Sort lists; for dictionaries, sort by a specific key
return sorted(value, key=lambda x: tuple(sorted(x.items())) if isinstance(x, dict) else x)
return value
# Generate a hash based on sorted relevant fields
def generate_hash(data):
sorted_data_string = json.dumps(sorted_data(data), sort_keys=True)
return hashlib.sha256(sorted_data_string.encode('utf-8')).hexdigest()
# Load Elasticsearch credentials from the config file
def load_credentials(config_path):
with open(config_path, 'r') as file:
for line in file:
if line.startswith("user"):
credentials = line.split('=', 1)[1].strip().strip('"')
return credentials
return None
# Extract username and password from credentials
def extract_auth_details(credentials):
if ':' in credentials:
return credentials.split(':', 1)
return None, None
# Generalized API request function
def api_request(method, guid, username, password, json_data=None):
headers = {
'kbn-xsrf': 'true',
'Content-Type': 'application/json'
}
auth = HTTPBasicAuth(username, password)
if method == "POST":
url = "http://localhost:5601/api/exception_lists/items?namespace_type=agnostic"
else:
url = f"http://localhost:5601/api/exception_lists/items?item_id={guid}&namespace_type=agnostic"
response = requests.request(method, url, headers=headers, auth=auth, json=json_data)
if response.status_code in [200, 201]:
return response.json() if response.content else True
elif response.status_code == 404 and method == "GET":
return None
else:
print(f"Error with {method} request: {response.status_code} - {response.text}")
return False
# Load YAML data for GUIDs to skip
def load_disabled(disabled_file_path):
if os.path.exists(disabled_file_path):
with open(disabled_file_path, 'r') as file:
return yaml.safe_load(file) or {}
return {}
def load_yaml_files(*dirs):
yaml_files = []
for dir_path in dirs:
if os.path.isdir(dir_path):
# Recurse through the directory and subdirectories
for root, dirs, files in os.walk(dir_path):
for file_name in files:
if file_name.endswith(".yaml"):
full_path = os.path.join(root, file_name)
with open(full_path, 'r') as f:
try:
yaml_content = yaml.safe_load(f)
yaml_files.append(yaml_content)
except yaml.YAMLError as e:
print(f"Error loading {full_path}: {e}")
else:
print(f"Invalid directory: {dir_path}")
return yaml_files
def prepare_custom_rules(input_file, output_dir):
# Clear the output directory first
if os.path.exists(output_dir):
shutil.rmtree(output_dir)
os.makedirs(output_dir, exist_ok=True)
try:
# Load the YAML file
with open(input_file, 'r') as f:
docs = yaml.safe_load_all(f)
for doc in docs:
if 'id' not in doc:
print(f"Skipping rule, no 'id' found: {doc}")
continue
if doc.get('title') in ["Template 1", "Template 2"]:
print(f"Skipping template rule with title: {doc['title']}")
continue
# Create a filename using the 'id' field
file_name = os.path.join(output_dir, f"{doc['id']}.yaml")
# Write the individual YAML file
with open(file_name, 'w') as output_file:
yaml.dump(doc, output_file, default_flow_style=False)
print(f"Created file: {file_name}")
except yaml.YAMLError as e:
print(f"Error parsing YAML: {e}")
except Exception as e:
print(f"Error processing file: {e}")

View File

@@ -13,6 +13,9 @@
LOG="/opt/so/log/elasticfleet/so-elastic-agent-gen-installers.log"
# get the variables needed such as ELASTIC_AGENT_TARBALL_VERSION
get_elastic_agent_vars
# Check to see if we are already running
NUM_RUNNING=$(pgrep -cf "/bin/bash /sbin/so-elastic-agent-gen-installers")
[ "$NUM_RUNNING" -gt 1 ] && echo "$(date) - $NUM_RUNNING gen installers script processes running...exiting." >>$LOG && exit 0
@@ -36,6 +39,7 @@ printf "\n### Creating a temp directory at /nsm/elastic-agent-workspace\n"
rm -rf /nsm/elastic-agent-workspace
mkdir -p /nsm/elastic-agent-workspace
printf "\n### Extracting outer tarball and then each individual tarball/zip\n"
tar -xf /nsm/elastic-fleet/artifacts/elastic-agent_SO-$ELASTIC_AGENT_TARBALL_VERSION.tar.gz -C /nsm/elastic-agent-workspace/
unzip -q /nsm/elastic-agent-workspace/elastic-agent-*.zip -d /nsm/elastic-agent-workspace/
@@ -72,5 +76,12 @@ do
printf "\n### $GOOS/$GOARCH Installer Generated...\n"
done
printf "\n\n### Generating MSI...\n"
cp /opt/so/saltstack/local/salt/elasticfleet/files/so_agent-installers/so-elastic-agent_windows_amd64 /opt/so/saltstack/local/salt/elasticfleet/files/so_agent-installers/so-elastic-agent_windows_amd64.exe
docker run \
--mount type=bind,source=/opt/so/saltstack/local/salt/elasticfleet/files/so_agent-installers/,target=/output/ -w /output \
{{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elastic-agent-builder:{{ GLOBALS.so_version }} wixl -o so-elastic-agent_windows_amd64_msi --arch x64 /workspace/so-elastic-agent.wxs
printf "\n### MSI Generated...\n"
printf "\n### Cleaning up temp files in /nsm/elastic-agent-workspace\n"
rm -rf /nsm/elastic-agent-workspace

View File

@@ -5,6 +5,7 @@
# this file except in compliance with the Elastic License 2.0.
. /usr/sbin/so-common
{%- import_yaml 'elasticsearch/defaults.yaml' as ELASTICSEARCHDEFAULTS %}
# Only run on Managers
if ! is_manager_node; then
@@ -27,14 +28,14 @@ OUTDATED_LIST=$(jq -r '.items | map(.id) | (tojson)' <<< "$RAW_JSON")
if [ "$OUTDATED_LIST" != '[]' ]; then
AGENTNUMBERS=$(jq -r '.total' <<< "$RAW_JSON")
printf "Initiating upgrades for $AGENTNUMBERS Agents to Elastic $ELASTIC_AGENT_TARBALL_VERSION...\n\n"
printf "Initiating upgrades for $AGENTNUMBERS Agents to Elastic {{ELASTICSEARCHDEFAULTS.elasticsearch.version}}...\n\n"
# Generate updated JSON payload
JSON_STRING=$(jq -n --arg ELASTICVERSION $ELASTIC_AGENT_TARBALL_VERSION --arg UPDATELIST $OUTDATED_LIST '{"version": $ELASTICVERSION,"agents": $UPDATELIST }')
JSON_STRING=$(jq -n --arg ELASTICVERSION {{ELASTICSEARCHDEFAULTS.elasticsearch.version}} --arg UPDATELIST $OUTDATED_LIST '{"version": $ELASTICVERSION,"agents": $UPDATELIST }')
# Update Node Agents
curl -K /opt/so/conf/elasticsearch/curl.config -L -X POST "http://localhost:5601/api/fleet/agents/bulk_upgrade" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"
else
printf "No Agents need updates... Exiting\n\n"
exit 0
fi
fi

View File

@@ -0,0 +1,126 @@
#!/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.
{% set SUB = salt['pillar.get']('elasticfleet:config:subscription_integrations', default=false) %}
. /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
}
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
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
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
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
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

View File

@@ -53,7 +53,8 @@ fi
printf "\n### Create ES Token ###\n"
ESTOKEN=$(curl -K /opt/so/conf/elasticsearch/curl.config -L -X POST "localhost:5601/api/fleet/service_tokens" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' | jq -r .value)
### Create Outputs & Fleet URLs ###
### Create Outputs, Fleet Policy and Fleet URLs ###
# Create the Manager Elasticsearch Output first and set it as the default output
printf "\nAdd Manager Elasticsearch Output...\n"
ESCACRT=$(openssl x509 -in $INTCA)
JSON_STRING=$( jq -n \
@@ -62,7 +63,21 @@ JSON_STRING=$( jq -n \
curl -K /opt/so/conf/elasticsearch/curl.config -L -X POST "localhost:5601/api/fleet/outputs" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"
printf "\n\n"
printf "\nCreate Logstash Output Config if node is not an Import or Eval install\n"
# Create the Manager Fleet Server Host Agent Policy
# This has to be done while the Elasticsearch Output is set to the default Output
printf "Create Manager Fleet Server Policy...\n"
elastic_fleet_policy_create "FleetServer_{{ GLOBALS.hostname }}" "Fleet Server - {{ GLOBALS.hostname }}" "false" "120"
# Modify the default integration policy to update the policy_id with the correct naming
UPDATED_INTEGRATION_POLICY=$(jq --arg policy_id "FleetServer_{{ GLOBALS.hostname }}" --arg name "fleet_server-{{ GLOBALS.hostname }}" '
.policy_id = $policy_id |
.name = $name' /opt/so/conf/elastic-fleet/integrations/fleet-server/fleet-server.json)
# Add the Fleet Server Integration to the new Fleet Policy
elastic_fleet_integration_create "$UPDATED_INTEGRATION_POLICY"
# Now we can create the Logstash Output and set it to to be the default Output
printf "\n\nCreate Logstash Output Config if node is not an Import or Eval install\n"
{% if grains.role not in ['so-import', 'so-eval'] %}
LOGSTASHCRT=$(openssl x509 -in /etc/pki/elasticfleet-logstash.crt)
LOGSTASHKEY=$(openssl rsa -in /etc/pki/elasticfleet-logstash.key)
@@ -101,16 +116,6 @@ printf "\n\n"
# Load Elasticsearch templates
/usr/sbin/so-elasticsearch-templates-load
# Manager Fleet Server Host
elastic_fleet_policy_create "FleetServer_{{ GLOBALS.hostname }}" "Fleet Server - {{ GLOBALS.hostname }}" "true" "120"
#Temp Fixup for ES Output bug
JSON_STRING=$( jq -n \
--arg NAME "FleetServer_{{ GLOBALS.hostname }}" \
'{"name": $NAME,"description": $NAME,"namespace":"default","monitoring_enabled":["logs"],"inactivity_timeout":120,"data_output_id":"so-manager_elasticsearch"}'
)
curl -K /opt/so/conf/elasticsearch/curl.config -L -X PUT "localhost:5601/api/fleet/agent_policies/FleetServer_{{ GLOBALS.hostname }}" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d "$JSON_STRING"
# Initial Endpoints Policy
elastic_fleet_policy_create "endpoints-initial" "Initial Endpoint Policy" "false" "1209600"
@@ -165,4 +170,4 @@ salt-call state.apply elasticfleet queue=True
# Generate installers & install Elastic Agent on the node
so-elastic-agent-gen-installers
salt-call state.apply elasticfleet.install_agent_grid queue=True
exit 0
exit 0

View File

@@ -1,23 +1,37 @@
{# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one
or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at
https://securityonion.net/license; you may not use this file except in compliance with the
Elastic License 2.0. #}
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% import_yaml 'elasticsearch/defaults.yaml' as ELASTICSEARCHDEFAULTS with context %}
{% set HIGHLANDER = salt['pillar.get']('global:highlander', False) %}
{# ES_LOGSTASH_NODES is the same as LOGSTASH_NODES from logstash/map.jinja but heavynodes and fleet nodes are removed #}
{% set ES_LOGSTASH_NODES = [] %}
{% set node_data = salt['pillar.get']('logstash:nodes', {GLOBALS.role.split('-')[1]: {GLOBALS.hostname: {'ip': GLOBALS.node_ip}}}) %}
{# this is a list of dicts containing hostname:ip for elasticsearch nodes that need to know about each other for cluster #}
{% set ELASTICSEARCH_SEED_HOSTS = [] %}
{% set node_data = salt['pillar.get']('elasticsearch:nodes', {GLOBALS.role.split('-')[1]: {GLOBALS.hostname: {'ip': GLOBALS.node_ip}}}) %}
{% for node_type, node_details in node_data.items() | sort %}
{% if node_type not in ['heavynode', 'fleet'] %}
{% if node_type != 'heavynode' %}
{% for hostname in node_data[node_type].keys() %}
{% do ES_LOGSTASH_NODES.append({hostname:node_details[hostname].ip}) %}
{% do ELASTICSEARCH_SEED_HOSTS.append({hostname:node_details[hostname].ip}) %}
{% endfor %}
{% endif %}
{% endfor %}
{# this is a list of dicts containing hostname:ip of all nodes running elasticsearch #}
{% set ELASTICSEARCH_NODES = [] %}
{% set node_data = salt['pillar.get']('elasticsearch:nodes', {GLOBALS.role.split('-')[1]: {GLOBALS.hostname: {'ip': GLOBALS.node_ip}}}) %}
{% for node_type, node_details in node_data.items() %}
{% for hostname in node_data[node_type].keys() %}
{% do ELASTICSEARCH_NODES.append({hostname:node_details[hostname].ip}) %}
{% endfor %}
{% endfor %}
{% if grains.id.split('_') | last in ['manager','managersearch','standalone'] %}
{% if ES_LOGSTASH_NODES | length > 1 %}
{% if ELASTICSEARCH_SEED_HOSTS | length > 1 %}
{% do ELASTICSEARCHDEFAULTS.elasticsearch.config.update({'discovery': {'seed_hosts': []}}) %}
{% for NODE in ES_LOGSTASH_NODES %}
{% for NODE in ELASTICSEARCH_SEED_HOSTS %}
{% do ELASTICSEARCHDEFAULTS.elasticsearch.config.discovery.seed_hosts.append(NODE.keys()|first) %}
{% endfor %}
{% endif %}

View File

@@ -47,6 +47,7 @@ elasticsearch_sbin:
- file_mode: 755
- exclude_pat:
- so-elasticsearch-pipelines # exclude this because we need to watch it for changes, we sync it in another state
- show_changes: False
elasticsearch_sbin_jinja:
file.recurse:
@@ -60,6 +61,7 @@ elasticsearch_sbin_jinja:
- so-elasticsearch-ilm-policy-load # exclude this because we need to watch it for changes, we sync it in another state
- defaults:
GLOBALS: {{ GLOBALS }}
- show_changes: False
so-elasticsearch-ilm-policy-load-script:
file.managed:
@@ -69,6 +71,7 @@ so-elasticsearch-ilm-policy-load-script:
- group: 939
- mode: 754
- template: jinja
- show_changes: False
so-elasticsearch-pipelines-script:
file.managed:
@@ -77,6 +80,7 @@ so-elasticsearch-pipelines-script:
- user: 930
- group: 939
- mode: 754
- show_changes: False
esingestdir:
file.directory:
@@ -110,6 +114,7 @@ esingestdynamicconf:
- user: 930
- group: 939
- template: jinja
- show_changes: False
esingestconf:
file.recurse:
@@ -117,6 +122,12 @@ esingestconf:
- source: salt://elasticsearch/files/ingest
- user: 930
- group: 939
- show_changes: False
# Remove .fleet_final_pipeline-1 because we are using global@custom now
so-fleet-final-pipeline-remove:
file.absent:
- name: /opt/so/conf/elasticsearch/ingest/.fleet_final_pipeline-1
# Auto-generate Elasticsearch ingest node pipelines from pillar
{% for pipeline, config in ELASTICSEARCHMERGED.pipelines.items() %}
@@ -148,6 +159,7 @@ esyml:
- defaults:
ESCONFIG: {{ ELASTICSEARCHMERGED.config }}
- template: jinja
- show_changes: False
esroles:
file.recurse:
@@ -157,6 +169,7 @@ esroles:
- template: jinja
- user: 930
- group: 939
- show_changes: False
nsmesdir:
file.directory:

File diff suppressed because it is too large Load Diff

View File

@@ -6,10 +6,11 @@
{% from 'allowed_states.map.jinja' import allowed_states %}
{% if sls.split('.')[0] in allowed_states %}
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% import_yaml 'elasticsearch/defaults.yaml' as ELASTICSEARCHDEFAULTS %}
so-elasticsearch_image:
docker_image.present:
- name: {{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elasticsearch:{{ GLOBALS.so_version }}
- name: {{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elasticsearch:{{ ELASTICSEARCHDEFAULTS.elasticsearch.version }}
{% else %}

View File

@@ -7,8 +7,8 @@
{% if sls.split('.')[0] in allowed_states %}
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% from 'docker/docker.map.jinja' import DOCKER %}
{% from 'logstash/map.jinja' import LOGSTASH_NODES %}
{% from 'elasticsearch/config.map.jinja' import ES_LOGSTASH_NODES %}
{% from 'elasticsearch/config.map.jinja' import ELASTICSEARCH_NODES %}
{% from 'elasticsearch/config.map.jinja' import ELASTICSEARCH_SEED_HOSTS %}
{% from 'elasticsearch/config.map.jinja' import ELASTICSEARCHMERGED %}
{% set TEMPLATES = salt['pillar.get']('elasticsearch:templates', {}) %}
{% from 'elasticsearch/template.map.jinja' import ES_INDEX_SETTINGS %}
@@ -19,7 +19,7 @@ include:
so-elasticsearch:
docker_container.running:
- image: {{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elasticsearch:{{ GLOBALS.so_version }}
- image: {{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elasticsearch:{{ ELASTICSEARCHMERGED.version }}
- hostname: elasticsearch
- name: so-elasticsearch
- user: elasticsearch
@@ -27,7 +27,7 @@ so-elasticsearch:
- sobridge:
- ipv4_address: {{ DOCKER.containers['so-elasticsearch'].ip }}
- extra_hosts:
{% for node in LOGSTASH_NODES %}
{% for node in ELASTICSEARCH_NODES %}
{% for hostname, ip in node.items() %}
- {{hostname}}:{{ip}}
{% endfor %}
@@ -38,7 +38,7 @@ so-elasticsearch:
{% endfor %}
{% endif %}
- environment:
{% if ES_LOGSTASH_NODES | length == 1 or GLOBALS.role == 'so-heavynode' %}
{% if (GLOBALS.role in GLOBALS.manager_roles and ELASTICSEARCH_SEED_HOSTS | length == 1) or GLOBALS.role == 'so-heavynode' %}
- discovery.type=single-node
{% endif %}
- ES_JAVA_OPTS=-Xms{{ GLOBALS.elasticsearch.es_heap }} -Xmx{{ GLOBALS.elasticsearch.es_heap }} -Des.transport.cname_in_publish_address=true -Dlog4j2.formatMsgNoLookups=true
@@ -116,6 +116,7 @@ escomponenttemplates:
- clean: True
- onchanges_in:
- file: so-elasticsearch-templates-reload
- show_changes: False
# Auto-generate templates from defaults file
{% for index, settings in ES_INDEX_SETTINGS.items() %}
@@ -127,6 +128,7 @@ es_index_template_{{index}}:
- defaults:
TEMPLATE_CONFIG: {{ settings.index_template }}
- template: jinja
- show_changes: False
- onchanges_in:
- file: so-elasticsearch-templates-reload
{% endif %}
@@ -146,12 +148,13 @@ es_template_{{TEMPLATE.split('.')[0] | replace("/","_") }}:
{% endif %}
- user: 930
- group: 939
- show_changes: False
- onchanges_in:
- file: so-elasticsearch-templates-reload
{% endfor %}
{% endif %}
{% if GLOBALS.role in GLOBALS.manager_roles %}
{% if GLOBALS.role in GLOBALS.manager_roles %}
so-es-cluster-settings:
cmd.run:
- name: /usr/sbin/so-elasticsearch-cluster-settings
@@ -160,7 +163,7 @@ so-es-cluster-settings:
- require:
- docker_container: so-elasticsearch
- file: elasticsearch_sbin_jinja
{% endif %}
{% endif %}
so-elasticsearch-ilm-policy-load:
cmd.run:

View File

@@ -62,6 +62,7 @@
{ "split": { "if": "ctx.event?.dataset != null && ctx.event.dataset.contains('.')", "field": "event.dataset", "separator": "\\.", "target_field": "dataset_tag_temp" } },
{ "append": { "if": "ctx.dataset_tag_temp != null", "field": "tags", "value": "{{dataset_tag_temp.1}}" } },
{ "grok": { "if": "ctx.http?.response?.status_code != null", "field": "http.response.status_code", "patterns": ["%{NUMBER:http.response.status_code:long} %{GREEDYDATA}"]} },
{ "set": { "if": "ctx?.metadata?.kafka != null" , "field": "kafka.id", "value": "{{metadata.kafka.partition}}{{metadata.kafka.offset}}{{metadata.kafka.timestamp}}", "ignore_failure": true } },
{ "remove": { "field": [ "message2", "type", "fields", "category", "module", "dataset", "dataset_tag_temp", "event.dataset_temp" ], "ignore_missing": true, "ignore_failure": true } }
{%- endraw %}
{%- if HIGHLANDER %}
@@ -72,7 +73,9 @@
}
}
{%- endif %}
{%- raw %}
{%- raw %}
,
{ "pipeline": { "name": "global@custom", "ignore_missing_pipeline": true, "description": "[Fleet] Global pipeline for all data streams" } }
]
}
{% endraw %}

View File

@@ -1,107 +0,0 @@
{
"version": 3,
"_meta": {
"managed_by": "fleet",
"managed": true
},
"description": "Final pipeline for processing all incoming Fleet Agent documents. \n",
"processors": [
{
"date": {
"description": "Add time when event was ingested (and remove sub-seconds to improve storage efficiency)",
"tag": "truncate-subseconds-event-ingested",
"field": "_ingest.timestamp",
"target_field": "event.ingested",
"formats": [
"ISO8601"
],
"output_format": "date_time_no_millis",
"ignore_failure": true
}
},
{
"remove": {
"description": "Remove any pre-existing untrusted values.",
"field": [
"event.agent_id_status",
"_security"
],
"ignore_missing": true
}
},
{
"set_security_user": {
"field": "_security",
"properties": [
"authentication_type",
"username",
"realm",
"api_key"
]
}
},
{
"script": {
"description": "Add event.agent_id_status based on the API key metadata and the agent.id contained in the event.\n",
"tag": "agent-id-status",
"source": "boolean is_user_trusted(def ctx, def users) {\n if (ctx?._security?.username == null) {\n return false;\n }\n\n def user = null;\n for (def item : users) {\n if (item?.username == ctx._security.username) {\n user = item;\n break;\n }\n }\n\n if (user == null || user?.realm == null || ctx?._security?.realm?.name == null) {\n return false;\n }\n\n if (ctx._security.realm.name != user.realm) {\n return false;\n }\n\n return true;\n}\n\nString verified(def ctx, def params) {\n // No agent.id field to validate.\n if (ctx?.agent?.id == null) {\n return \"missing\";\n }\n\n // Check auth metadata from API key.\n if (ctx?._security?.authentication_type == null\n // Agents only use API keys.\n || ctx._security.authentication_type != 'API_KEY'\n // Verify the API key owner before trusting any metadata it contains.\n || !is_user_trusted(ctx, params.trusted_users)\n // Verify the API key has metadata indicating the assigned agent ID.\n || ctx?._security?.api_key?.metadata?.agent_id == null) {\n return \"auth_metadata_missing\";\n }\n\n // The API key can only be used represent the agent.id it was issued to.\n if (ctx._security.api_key.metadata.agent_id != ctx.agent.id) {\n // Potential masquerade attempt.\n return \"mismatch\";\n }\n\n return \"verified\";\n}\n\nif (ctx?.event == null) {\n ctx.event = [:];\n}\n\nctx.event.agent_id_status = verified(ctx, params);",
"params": {
"trusted_users": [
{
"username": "elastic/fleet-server",
"realm": "_service_account"
},
{
"username": "cloud-internal-agent-server",
"realm": "found"
},
{
"username": "elastic",
"realm": "reserved"
}
]
}
}
},
{
"remove": {
"field": "_security",
"ignore_missing": true
}
},
{ "set": { "ignore_failure": true, "field": "event.module", "value": "elastic_agent" } },
{ "split": { "if": "ctx.event?.dataset != null && ctx.event.dataset.contains('.')", "field": "event.dataset", "separator": "\\.", "target_field": "module_temp" } },
{ "set": { "if": "ctx.module_temp != null", "override": true, "field": "event.module", "value": "{{module_temp.0}}" } },
{ "gsub": { "if": "ctx.event?.dataset != null && ctx.event.dataset.contains('.')", "field": "event.dataset", "pattern": "^[^.]*.", "replacement": "", "target_field": "dataset_tag_temp" } },
{ "append": { "if": "ctx.dataset_tag_temp != null", "field": "tags", "value": "{{dataset_tag_temp}}" } },
{ "set": { "if": "ctx.network?.direction == 'egress'", "override": true, "field": "network.initiated", "value": "true" } },
{ "set": { "if": "ctx.network?.direction == 'ingress'", "override": true, "field": "network.initiated", "value": "false" } },
{ "set": { "if": "ctx.network?.type == 'ipv4'", "override": true, "field": "destination.ipv6", "value": "false" } },
{ "set": { "if": "ctx.network?.type == 'ipv6'", "override": true, "field": "destination.ipv6", "value": "true" } },
{ "set": { "if": "ctx.tags.0 == 'import'", "override": true, "field": "data_stream.dataset", "value": "import" } },
{ "set": { "if": "ctx.tags.0 == 'import'", "override": true, "field": "data_stream.namespace", "value": "so" } },
{ "date": { "if": "ctx.event?.module == 'system'", "field": "event.created", "target_field": "@timestamp","ignore_failure": true, "formats": ["yyyy-MM-dd'T'HH:mm:ss.SSSX","yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'"] } },
{ "community_id":{ "if": "ctx.event?.dataset == 'endpoint.events.network'", "ignore_failure":true } },
{ "set": { "if": "ctx.event?.module == 'fim'", "override": true, "field": "event.module", "value": "file_integrity" } },
{ "rename": { "if": "ctx.winlog?.provider_name == 'Microsoft-Windows-Windows Defender'", "ignore_missing": true, "field": "winlog.event_data.Threat Name", "target_field": "winlog.event_data.threat_name" } },
{ "set": { "if": "ctx?.metadata?.kafka != null" , "field": "kafka.id", "value": "{{metadata.kafka.partition}}{{metadata.kafka.offset}}{{metadata.kafka.timestamp}}", "ignore_failure": true } },
{ "remove": { "field": [ "message2", "type", "fields", "category", "module", "dataset", "event.dataset_temp", "dataset_tag_temp", "module_temp" ], "ignore_missing": true, "ignore_failure": true } }
],
"on_failure": [
{
"remove": {
"field": "_security",
"ignore_missing": true,
"ignore_failure": true
}
},
{
"append": {
"field": "error.message",
"value": [
"failed in Fleet agent final_pipeline: {{ _ingest.on_failure_message }}"
]
}
}
]
}

View File

@@ -0,0 +1,29 @@
{
"version": 3,
"_meta": {
"managed_by": "securityonion",
"managed": true
},
"description": "Custom pipeline for processing all incoming Fleet Agent documents. \n",
"processors": [
{ "set": { "ignore_failure": true, "field": "event.module", "value": "elastic_agent" } },
{ "split": { "if": "ctx.event?.dataset != null && ctx.event.dataset.contains('.')", "field": "event.dataset", "separator": "\\.", "target_field": "module_temp" } },
{ "split": { "if": "ctx.data_stream?.dataset.contains('.')", "field":"data_stream.dataset", "separator":"\\.", "target_field":"datastream_dataset_temp", "ignore_missing":true } },
{ "set": { "if": "ctx.module_temp != null", "override": true, "field": "event.module", "value": "{{module_temp.0}}" } },
{ "set": { "if": "ctx.datastream_dataset_temp != null && ctx.datastream_dataset_temp[0] == 'network_traffic'", "field":"event.module", "value":"{{ datastream_dataset_temp.0 }}", "ignore_failure":true, "ignore_empty_value":true, "description":"Fix EA network packet capture" } },
{ "gsub": { "if": "ctx.event?.dataset != null && ctx.event.dataset.contains('.')", "field": "event.dataset", "pattern": "^[^.]*.", "replacement": "", "target_field": "dataset_tag_temp" } },
{ "append": { "if": "ctx.dataset_tag_temp != null", "field": "tags", "value": "{{dataset_tag_temp}}", "allow_duplicates": false } },
{ "set": { "if": "ctx.network?.direction == 'egress'", "override": true, "field": "network.initiated", "value": "true" } },
{ "set": { "if": "ctx.network?.direction == 'ingress'", "override": true, "field": "network.initiated", "value": "false" } },
{ "set": { "if": "ctx.network?.type == 'ipv4'", "override": true, "field": "destination.ipv6", "value": "false" } },
{ "set": { "if": "ctx.network?.type == 'ipv6'", "override": true, "field": "destination.ipv6", "value": "true" } },
{ "set": { "if": "ctx.tags != null && ctx.tags.contains('import')", "override": true, "field": "data_stream.dataset", "value": "import" } },
{ "set": { "if": "ctx.tags != null && ctx.tags.contains('import')", "override": true, "field": "data_stream.namespace", "value": "so" } },
{ "date": { "if": "ctx.event?.module == 'system'", "field": "event.created", "target_field": "@timestamp","ignore_failure": true, "formats": ["yyyy-MM-dd'T'HH:mm:ss.SSSX","yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'"] } },
{ "community_id":{ "if": "ctx.event?.dataset == 'endpoint.events.network'", "ignore_failure":true } },
{ "set": { "if": "ctx.event?.module == 'fim'", "override": true, "field": "event.module", "value": "file_integrity" } },
{ "rename": { "if": "ctx.winlog?.provider_name == 'Microsoft-Windows-Windows Defender'", "ignore_missing": true, "field": "winlog.event_data.Threat Name", "target_field": "winlog.event_data.threat_name" } },
{ "set": { "if": "ctx?.metadata?.kafka != null" , "field": "kafka.id", "value": "{{metadata.kafka.partition}}{{metadata.kafka.offset}}{{metadata.kafka.timestamp}}", "ignore_failure": true } },
{ "remove": { "field": [ "message2", "type", "fields", "category", "module", "dataset", "event.dataset_temp", "dataset_tag_temp", "module_temp", "datastream_dataset_temp" ], "ignore_missing": true, "ignore_failure": true } }
]
}

View File

@@ -0,0 +1,9 @@
{
"description" : "hydra",
"processors" : [
{"set":{"field":"audience","value":"access","override":false,"ignore_failure":true}},
{"set":{"field":"event.dataset","ignore_empty_value":true,"ignore_failure":true,"value":"hydra.{{{audience}}}","media_type":"text/plain"}},
{"set":{"field":"event.action","ignore_failure":true,"copy_from":"msg" }},
{ "pipeline": { "name": "common" } }
]
}

View File

@@ -1,10 +1,17 @@
{
"description": "Pipeline for pfSense",
"description": "Pipeline for PFsense",
"_meta": {
"managed_by": "fleet",
"managed": true,
"package": {
"name": "pfsense"
}
},
"processors": [
{
"set": {
"field": "ecs.version",
"value": "8.10.0"
"value": "8.17.0"
}
},
{
@@ -22,7 +29,9 @@
{
"rename": {
"field": "message",
"target_field": "event.original"
"target_field": "event.original",
"ignore_missing": true,
"if": "ctx.event?.original == null"
}
},
{
@@ -34,7 +43,7 @@
{
"set": {
"field": "event.timezone",
"value": "{{_tmp.tz_offset}}",
"value": "{{{_tmp.tz_offset}}}",
"if": "ctx._tmp?.tz_offset != null && ctx._tmp?.tz_offset != 'local'"
}
},
@@ -54,7 +63,8 @@
"SYSLOG_TIMESTAMP_FORMAT": "%{TIMESTAMP_ISO8601:_tmp.timestamp8601}%{SPACE}%{OBSERVER}%{SPACE}%{PROCESS}%{SPACE}(%{POSINT:process.pid:long}|-) - (-|%{META})",
"TIMESTAMP_ISO8601": "%{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE:event.timezone}?",
"OBSERVER": "(?:%{IP:observer.ip}|%{HOSTNAME:observer.name})",
"PROCESS": "(\\(%{DATA:process.name}\\)|(?:%{UNIXPATH}*/)?%{BASEPATH:process.name})",
"UNIXPATH": "(/([\\w_%!$@:.,+~-]+|\\\\.)*)*",
"PROCESS": "(\\(%{DATA:process.name}\\)|(?:%{UNIXPATH})%{BASEPATH:process.name})",
"BASEPATH": "[[[:alnum:]]_%!$@:.,+~-]+",
"META": "\\[[^\\]]*\\]"
}
@@ -80,7 +90,7 @@
"MMM d HH:mm:ss",
"MMM dd HH:mm:ss"
],
"timezone": "{{ event.timezone }}"
"timezone": "{{{ event.timezone }}}"
}
},
{
@@ -97,61 +107,67 @@
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-firewall",
"name": "logs-pfsense.log-1.21.0-firewall",
"if": "ctx.event.provider == 'filterlog'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-openvpn",
"name": "logs-pfsense.log-1.21.0-openvpn",
"if": "ctx.event.provider == 'openvpn'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-ipsec",
"name": "logs-pfsense.log-1.21.0-ipsec",
"if": "ctx.event.provider == 'charon'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-dhcp",
"name": "logs-pfsense.log-1.21.0-dhcp",
"if": "[\"dhcpd\", \"dhclient\", \"dhcp6c\"].contains(ctx.event.provider)"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-unbound",
"name": "logs-pfsense.log-1.21.0-unbound",
"if": "ctx.event.provider == 'unbound'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-haproxy",
"name": "logs-pfsense.log-1.21.0-haproxy",
"if": "ctx.event.provider == 'haproxy'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-php-fpm",
"name": "logs-pfsense.log-1.21.0-php-fpm",
"if": "ctx.event.provider == 'php-fpm'"
}
},
{
"pipeline": {
"name": "logs-pfsense.log-1.16.0-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)"
}
},
{
@@ -285,7 +301,7 @@
{
"append": {
"field": "related.ip",
"value": "{{destination.ip}}",
"value": "{{{destination.ip}}}",
"allow_duplicates": false,
"if": "ctx.destination?.ip != null"
}
@@ -293,7 +309,7 @@
{
"append": {
"field": "related.ip",
"value": "{{source.ip}}",
"value": "{{{source.ip}}}",
"allow_duplicates": false,
"if": "ctx.source?.ip != null"
}
@@ -301,7 +317,7 @@
{
"append": {
"field": "related.ip",
"value": "{{source.nat.ip}}",
"value": "{{{source.nat.ip}}}",
"allow_duplicates": false,
"if": "ctx.source?.nat?.ip != null"
}
@@ -309,21 +325,21 @@
{
"append": {
"field": "related.hosts",
"value": "{{destination.domain}}",
"value": "{{{destination.domain}}}",
"if": "ctx.destination?.domain != null"
}
},
{
"append": {
"field": "related.user",
"value": "{{user.name}}",
"value": "{{{user.name}}}",
"if": "ctx.user?.name != null"
}
},
{
"set": {
"field": "network.direction",
"value": "{{network.direction}}bound",
"value": "{{{network.direction}}}bound",
"if": "ctx.network?.direction != null && ctx.network?.direction =~ /^(in|out)$/"
}
},
@@ -350,10 +366,32 @@
"ignore_missing": true
}
},
{
"pipeline": {
"name": "global@custom",
"ignore_missing_pipeline": true,
"description": "[Fleet] Global pipeline for all data streams"
}
},
{
"pipeline": {
"name": "logs@custom",
"ignore_missing_pipeline": true,
"description": "[Fleet] Pipeline for all data streams of type `logs`"
}
},
{
"pipeline": {
"name": "logs-pfsense.integration@custom",
"ignore_missing_pipeline": true,
"description": "[Fleet] Pipeline for all data streams of type `logs` defined by the `pfsense` integration"
}
},
{
"pipeline": {
"name": "logs-pfsense.log@custom",
"ignore_missing_pipeline": true
"ignore_missing_pipeline": true,
"description": "[Fleet] Pipeline for the `pfsense.log` dataset"
}
}
],
@@ -378,12 +416,5 @@
"value": "{{{ _ingest.on_failure_message }}}"
}
}
],
"_meta": {
"managed_by": "fleet",
"managed": true,
"package": {
"name": "pfsense"
}
}
}
]
}

View File

@@ -1,9 +1,14 @@
{
"description": "Pipeline for parsing pfSense Suricata logs.",
"processors": [
{ "set": {
"field": "event.module",
"value": "suricata"
}
},
{
"pipeline": {
"name": "suricata.common"
"name": "suricata.common_pfsense"
}
}
],

View File

@@ -1,7 +1,7 @@
{
"description" : "suricata.alert",
"processors" : [
{ "set": { "field": "_index", "value": "logs-suricata.alerts-so" } },
{ "set": { "if": "ctx.event?.imported != true", "field": "_index", "value": "logs-suricata.alerts-so" } },
{ "set": { "field": "tags","value": "alert" }},
{ "rename":{ "field": "message2.alert", "target_field": "rule", "ignore_failure": true } },
{ "rename":{ "field": "rule.signature", "target_field": "rule.name", "ignore_failure": true } },

View File

@@ -0,0 +1,16 @@
{
"description" : "suricata.alert",
"processors" : [
{ "set": { "field": "data_stream.dataset", "value": "suricata" } },
{ "set": { "field": "data_stream.namespace", "value": "so" } },
{ "set": { "field": "_index", "value": "logs-suricata.alerts-so" } },
{ "set": { "field": "tags","value": "alert" }},
{ "rename":{ "field": "message2.alert", "target_field": "rule", "ignore_failure": true } },
{ "rename":{ "field": "rule.signature", "target_field": "rule.name", "ignore_failure": true } },
{ "rename":{ "field": "rule.ref", "target_field": "rule.version", "ignore_failure": true } },
{ "rename":{ "field": "rule.signature_id", "target_field": "rule.uuid", "ignore_failure": true } },
{ "rename":{ "field": "rule.signature_id", "target_field": "rule.signature", "ignore_failure": true } },
{ "rename":{ "field": "message2.payload_printable", "target_field": "network.data.decoded", "ignore_failure": true } },
{ "pipeline": { "name": "common.nids" } }
]
}

View File

@@ -0,0 +1,23 @@
{
"description" : "suricata.common",
"processors" : [
{ "json": { "field": "message", "target_field": "message2", "ignore_failure": true } },
{ "rename": { "field": "message2.pkt_src", "target_field": "network.packet_source","ignore_failure": true } },
{ "rename": { "field": "message2.proto", "target_field": "network.transport", "ignore_failure": true } },
{ "rename": { "field": "message2.in_iface", "target_field": "observer.ingress.interface.name", "ignore_failure": true } },
{ "rename": { "field": "message2.flow_id", "target_field": "log.id.uid", "ignore_failure": true } },
{ "rename": { "field": "message2.src_ip", "target_field": "source.ip", "ignore_failure": true } },
{ "rename": { "field": "message2.src_port", "target_field": "source.port", "ignore_failure": true } },
{ "rename": { "field": "message2.dest_ip", "target_field": "destination.ip", "ignore_failure": true } },
{ "rename": { "field": "message2.dest_port", "target_field": "destination.port", "ignore_failure": true } },
{ "rename": { "field": "message2.vlan", "target_field": "network.vlan.id", "ignore_failure": true } },
{ "rename": { "field": "message2.community_id", "target_field": "network.community_id", "ignore_missing": true } },
{ "rename": { "field": "message2.xff", "target_field": "xff.ip", "ignore_missing": true } },
{ "set": { "field": "event.dataset", "value": "{{ message2.event_type }}" } },
{ "set": { "field": "observer.name", "value": "{{agent.name}}" } },
{ "set": { "field": "event.ingested", "value": "{{@timestamp}}" } },
{ "date": { "field": "message2.timestamp", "target_field": "@timestamp", "formats": ["ISO8601", "UNIX"], "timezone": "UTC", "ignore_failure": true } },
{ "remove":{ "field": "agent", "ignore_failure": true } },
{ "pipeline": { "if": "ctx?.event?.dataset != null", "name": "suricata.{{event.dataset}}_pfsense" } }
]
}

View File

@@ -18,6 +18,7 @@
{ "set": { "if": "ctx.destination?.ip != null", "field": "server.ip", "value": "{{destination.ip}}" } },
{ "set": { "if": "ctx.destination?.port != null", "field": "server.port", "value": "{{destination.port}}" } },
{ "set": { "field": "observer.name", "value": "{{agent.name}}" } },
{ "append": { "if": "ctx.network?.protocol != null && ctx.network?.protocol.contains(\"openvpn\")","field": "tags","value": ["{{network.protocol}}"],"allow_duplicates": false,"ignore_failure": true}},
{ "date": { "field": "message2.ts", "target_field": "@timestamp", "formats": ["ISO8601", "UNIX"], "ignore_failure": true } },
{ "remove": { "field": ["agent"], "ignore_failure": true } },
{ "pipeline": { "name": "common" } }

View File

@@ -38,6 +38,8 @@
{ "set": { "if": "ctx.connection?.state == 'SH'", "field": "connection.state_description", "value": "Originator sent a SYN followed by a FIN, we never saw a SYN ACK from the responder (hence the connection was 'half' open)" } },
{ "set": { "if": "ctx.connection?.state == 'SHR'", "field": "connection.state_description", "value": "Responder sent a SYN ACK followed by a FIN, we never saw a SYN from the originator" } },
{ "set": { "if": "ctx.connection?.state == 'OTH'", "field": "connection.state_description", "value": "No SYN seen, just midstream traffic (a 'partial connection' that was not later closed)" } },
{ "set": { "if": "ctx.network?.protocol != null && ctx.network?.protocol.contains(\"ipsec\")", "field": "network.protocol", "value": "ipsec"}},
{ "set": { "if": "ctx.network?.protocol != null && ctx.network?.protocol.contains(\"openvpn\")", "field": "network.protocol", "value": "openvpn"}},
{ "pipeline": { "name": "zeek.common" } }
]
}

View File

@@ -0,0 +1,37 @@
{
"description" : "zeek.http2",
"processors" : [
{ "set": { "field": "event.dataset", "value": "http2" } },
{ "set": { "field": "network.transport", "value": "tcp" } },
{ "json": { "field": "message", "target_field": "message2", "ignore_failure": true } },
{ "rename": { "field": "message2.trans_depth", "target_field": "http.trans_depth", "ignore_missing": true } },
{ "rename": { "field": "message2.method", "target_field": "http.method", "ignore_missing": true } },
{ "rename": { "field": "message2.host", "target_field": "http.virtual_host", "ignore_missing": true } },
{ "rename": { "field": "message2.uri", "target_field": "http.uri", "ignore_missing": true } },
{ "rename": { "field": "message2.referrer", "target_field": "http.referrer", "ignore_missing": true } },
{ "rename": { "field": "message2.version", "target_field": "http.version", "ignore_missing": true } },
{ "rename": { "field": "message2.user_agent", "target_field": "http.useragent", "ignore_missing": true } },
{ "rename": { "field": "message2.request_body_len", "target_field": "http.request.body.length", "ignore_missing": true } },
{ "rename": { "field": "message2.response_body_len", "target_field": "http.response.body.length", "ignore_missing": true } },
{ "rename": { "field": "message2.status_code", "target_field": "http.status_code", "ignore_missing": true } },
{ "rename": { "field": "message2.status_msg", "target_field": "http.status_message", "ignore_missing": true } },
{ "rename": { "field": "message2.info_code", "target_field": "http.info_code", "ignore_missing": true } },
{ "rename": { "field": "message2.info_msg", "target_field": "http.info_message", "ignore_missing": true } },
{ "rename": { "field": "message2.username", "target_field": "http.user", "ignore_missing": true } },
{ "rename": { "field": "message2.password", "target_field": "http.password", "ignore_missing": true } },
{ "rename": { "field": "message2.proxied", "target_field": "http.proxied", "ignore_missing": true } },
{ "rename": { "field": "message2.orig_fuids", "target_field": "log.id.orig_fuids", "ignore_missing": true } },
{ "rename": { "field": "message2.orig_filenames", "target_field": "file.orig_filenames", "ignore_missing": true } },
{ "rename": { "field": "message2.orig_mime_types", "target_field": "file.orig_mime_types", "ignore_missing": true } },
{ "rename": { "field": "message2.resp_fuids", "target_field": "log.id.resp_fuids", "ignore_missing": true } },
{ "rename": { "field": "message2.resp_filenames", "target_field": "file.resp_filenames", "ignore_missing": true } },
{ "rename": { "field": "message2.resp_mime_types", "target_field": "file.resp_mime_types", "ignore_missing": true } },
{ "rename": { "field": "message2.stream_id", "target_field": "http2.stream_id", "ignore_missing": true } },
{ "remove": { "field": "message2.tags", "ignore_failure": true } },
{ "remove": { "field": ["host"], "ignore_failure": true } },
{ "script": { "lang": "painless", "source": "ctx.uri_length = ctx.uri.length()", "ignore_failure": true } },
{ "script": { "lang": "painless", "source": "ctx.useragent_length = ctx.useragent.length()", "ignore_failure": true } },
{ "script": { "lang": "painless", "source": "ctx.virtual_host_length = ctx.virtual_host.length()", "ignore_failure": true } },
{ "pipeline": { "name": "zeek.common" } }
]
}

View File

@@ -0,0 +1,38 @@
{
"description": "zeek.ipsec",
"processors": [
{"set": { "field": "event.dataset","value": "ipsec"}},
{"json": { "field": "message","target_field": "message2","ignore_failure": true}},
{"rename": {"field": "message2.initiator_spi","target_field": "ipsec.initiator_spi","ignore_missing": true}},
{"rename": {"field": "message2.responder_spi","target_field": "ipsec.responder_spi","ignore_missing": true}},
{"rename": {"field": "message2.maj_ver","target_field": "ipsec.maj_version","ignore_missing": true}},
{"rename": {"field": "message2.min_ver","target_field": "ipsec.min_version","ignore_missing": true}},
{"set": {"ignore_failure": true,"field": "ipsec.version","value": "{{ipsec.maj_version}}.{{ipsec.min_version}}"}},
{"rename": {"field": "message2.exchange_type","target_field": "ipsec.exchange_type","ignore_missing": true}},
{"rename": {"field": "message2.flag_e","target_field": "ipsec.flag_e","ignore_missing": true}},
{"rename": {"field": "message2.flag_c","target_field": "ipsec.flag_c","ignore_missing": true}},
{"rename": {"field": "message2.flag_a","target_field": "ipsec.flag_a","ignore_missing": true}},
{"rename": {"field": "message2.flag_i","target_field": "ipsec.flag_i","ignore_missing": true}},
{"rename": {"field": "message2.flag_v","target_field": "ipsec.flag_v","ignore_missing": true}},
{"rename": {"field": "message2.flag_r","target_field": "ipsec.flag_r","ignore_missing": true}},
{"rename": {"field": "message2.message_id","target_field": "ipsec.message_id","ignore_missing": true}},
{"rename": {"field": "message2.vendor_ids","target_field": "ipsec.vendor_ids","ignore_missing": true}},
{"rename": {"field": "message2.notify_messages","target_field": "ipsec.notify_messages","ignore_missing": true}},
{"rename": {"field": "message2.transforms","target_field": "ipsec.transforms","ignore_missing": true}},
{"rename": {"field": "message2.ke_dh_groups","target_field": "ipsec.ke_dh_groups","ignore_missing": true}},
{"rename": {"field": "message2.proposals","target_field": "ipsec.proposals","ignore_missing": true}},
{"rename": {"field": "message2.certificates","target_field": "ipsec.certificates","ignore_missing": true}},
{"rename": {"field": "message2.transform_attributes","target_field": "ipsec.transform_attributes","ignore_missing": true}},
{"rename": {"field": "message2.length","target_field": "ipsec.length","ignore_missing": true}},
{"rename": {"field": "message2.hash","target_field": "ipsec.hash","ignore_missing": true}},
{"rename": {"field": "message2.doi","target_field": "ipsec.doi","ignore_missing": true}},
{"rename": {"field": "message2.situation","target_field": "ipsec.situation","ignore_missing": true}},
{"script": {
"lang": "painless",
"description": "Remove ipsec fields with empty arrays",
"source": "if (ctx.containsKey('ipsec') && ctx.ipsec instanceof Map) {\n for (String field : ['certificates', 'ke_dh_groups', 'notify_messages', 'proposals', 'transforms', 'transform_attributes', 'vendor_ids']) {\n if (ctx.ipsec[field] instanceof List && ctx.ipsec[field].isEmpty()) {\n ctx.ipsec.remove(field);\n }\n }\n }",
"ignore_failure": true
}},
{"pipeline": {"name": "zeek.common"}}
]
}

View File

@@ -0,0 +1,25 @@
{
"description": "zeek.ldap",
"processors": [
{"set": {"field": "event.dataset", "value": "ldap"}},
{"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"}}
]
}

View File

@@ -0,0 +1,25 @@
{
"description":"zeek.ldap_search",
"processors":[
{"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"}}
]
}

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"}}
]
}

View File

@@ -0,0 +1,18 @@
{
"description" : "zeek.quic",
"processors" : [
{ "set": { "field": "event.dataset", "value": "quic" } },
{ "set": { "field": "network.transport", "value": "udp" } },
{ "json": { "field": "message", "target_field": "message2", "ignore_failure": true } },
{ "rename": { "field": "message2.version", "target_field": "quic.version", "ignore_missing": true } },
{ "rename": { "field": "message2.client_initial_dcid", "target_field": "quic.client_initial_dcid", "ignore_missing": true } },
{ "rename": { "field": "message2.client_scid", "target_field": "quic.client_scid", "ignore_missing": true } },
{ "rename": { "field": "message2.server_scid", "target_field": "quic.server_scid", "ignore_missing": true } },
{ "rename": { "field": "message2.server_name", "target_field": "quic.server_name", "ignore_missing": true } },
{ "rename": { "field": "message2.client_protocol", "target_field": "quic.client_protocol", "ignore_missing": true } },
{ "rename": { "field": "message2.history", "target_field": "quic.history", "ignore_missing": true } },
{ "remove": { "field": "message2.tags", "ignore_failure": true } },
{ "remove": { "field": ["host"], "ignore_failure": true } },
{ "pipeline": { "name": "zeek.common" } }
]
}

View File

@@ -11,7 +11,7 @@
{ "dot_expander": { "field": "version.minor2", "path": "message2", "ignore_failure": true } },
{ "rename": { "field": "message2.version.minor2", "target_field": "software.version.minor2", "ignore_missing": true } },
{ "dot_expander": { "field": "version.minor3", "path": "message2", "ignore_failure": true } },
{ "rename": { "field": "message2.version.minor3", "target_field": "version.minor3", "ignore_missing": true } },
{ "rename": { "field": "message2.version.minor3", "target_field": "software.version.minor3", "ignore_missing": true } },
{ "dot_expander": { "field": "version.addl", "path": "message2", "ignore_failure": true } },
{ "rename": { "field": "message2.version.addl", "target_field": "software.version.additional_info", "ignore_missing": true } },
{ "rename": { "field": "message2.host", "target_field": "source.ip", "ignore_missing": true } },

View File

@@ -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"}}
]
}

View File

@@ -1,7 +1,13 @@
elasticsearch:
enabled:
description: You can enable or disable Elasticsearch.
description: Enables or disables the Elasticsearch process. This process provides the log event storage system. WARNING - Disabling this process is unsupported.
advanced: True
helpLink: elasticsearch.html
version:
description: "This specifies the version of the following containers: so-elastic-fleet-package-registry, so-elastic-agent, so-elastic-fleet, so-kibana, so-logstash and so-elasticsearch. Modifying this value in the Elasticsearch defaults.yaml will result in catastrophic grid failure."
readonly: True
global: True
advanced: True
esheap:
description: Specify the memory heap size in (m)egabytes for Elasticsearch.
helpLink: elasticsearch.html
@@ -71,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:
@@ -120,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
@@ -133,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:
@@ -146,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
@@ -160,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
@@ -275,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
@@ -302,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
@@ -318,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
@@ -352,147 +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-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_falcon: *indexSettings
so-logs-crowdstrike_x_fdr: *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-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-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_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-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
@@ -516,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
@@ -524,12 +407,65 @@ elasticsearch:
so-suricata_x_alerts: *indexSettings
so-import: *indexSettings
so-kratos: *indexSettings
so-hydra: *indexSettings
so-kismet: *indexSettings
so-logstash: *indexSettings
so-redis: *indexSettings
so-strelka: *indexSettings
so-syslog: *indexSettings
so-zeek: *indexSettings
so-metrics-fleet_server_x_agent_status: &fleetMetricsSettings
index_sorting:
description: Sorts the index by event time, at the cost of additional processing resource consumption.
advanced: True
readonly: True
helpLink: elasticsearch.html
index_template:
ignore_missing_component_templates:
description: Ignore component templates if they aren't in Elasticsearch.
advanced: True
readonly: True
helpLink: elasticsearch.html
index_patterns:
description: Patterns for matching multiple indices or tables.
advanced: True
readonly: True
helpLink: elasticsearch.html
template:
settings:
index:
mode:
description: Type of mode used for this index. Time series indices can be used for metrics to reduce necessary storage.
advanced: True
readonly: True
helpLink: elasticsearch.html
number_of_replicas:
description: Number of replicas required for this index. Multiple replicas protects against data loss, but also increases storage costs.
advanced: True
readonly: True
helpLink: elasticsearch.html
composed_of:
description: The index template is composed of these component templates.
advanced: True
readonly: True
helpLink: elasticsearch.html
priority:
description: The priority of the index template.
advanced: True
readonly: True
helpLink: elasticsearch.html
data_stream:
hidden:
description: Hide the data stream.
advanced: True
readonly: True
helpLink: elasticsearch.html
allow_custom_routing:
description: Allow custom routing for the data stream.
advanced: True
readonly: True
helpLink: elasticsearch.html
so-metrics-fleet_server_x_agent_versions: *fleetMetricsSettings
so_roles:
so-manager: &soroleSettings
config:

View File

@@ -1,3 +1,8 @@
{# 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 'elasticsearch/defaults.yaml' as ELASTICSEARCHDEFAULTS %}
{% set DEFAULT_GLOBAL_OVERRIDES = ELASTICSEARCHDEFAULTS.elasticsearch.index_settings.pop('global_overrides') %}
@@ -9,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)}) %}
@@ -17,10 +34,26 @@
{% set ES_INDEX_SETTINGS = {} %}
{% do ES_INDEX_SETTINGS_GLOBAL_OVERRIDES.update(salt['defaults.merge'](ES_INDEX_SETTINGS_GLOBAL_OVERRIDES, ES_INDEX_PILLAR, in_place=False)) %}
{% for index, settings in ES_INDEX_SETTINGS_GLOBAL_OVERRIDES.items() %}
{# if policy isn't defined in the original index settings, then dont merge policy from the global_overrides #}
{# this will prevent so-elasticsearch-ilm-policy-load from trying to load policy on non ILM manged indices #}
{% if not ES_INDEX_SETTINGS_ORIG[index].policy is defined and ES_INDEX_SETTINGS_GLOBAL_OVERRIDES[index].policy is defined %}
{% do ES_INDEX_SETTINGS_GLOBAL_OVERRIDES[index].pop('policy') %}
{# prevent this action from being performed on custom defined indices. #}
{# the custom defined index is not present in either of the dictionaries and fails to reder. #}
{% if index in ES_INDEX_SETTINGS_ORIG and index in ES_INDEX_SETTINGS_GLOBAL_OVERRIDES %}
{# dont merge policy from the global_overrides if policy isn't defined in the original index settingss #}
{# this will prevent so-elasticsearch-ilm-policy-load from trying to load policy on non ILM manged indices #}
{% if not ES_INDEX_SETTINGS_ORIG[index].policy is defined and ES_INDEX_SETTINGS_GLOBAL_OVERRIDES[index].policy is defined %}
{% do ES_INDEX_SETTINGS_GLOBAL_OVERRIDES[index].pop('policy') %}
{% endif %}
{# this prevents and index from inderiting a policy phase from global overrides if it wasnt defined in the defaults. #}
{% if ES_INDEX_SETTINGS_GLOBAL_OVERRIDES[index].policy is defined %}
{% for phase in ES_INDEX_SETTINGS_GLOBAL_OVERRIDES[index].policy.phases.copy() %}
{% if ES_INDEX_SETTINGS_ORIG[index].policy.phases[phase] is not defined %}
{% do ES_INDEX_SETTINGS_GLOBAL_OVERRIDES[index].policy.phases.pop(phase) %}
{% endif %}
{% endfor %}
{% endif %}
{% endif %}
{% if settings.index_template is defined %}

View File

@@ -603,6 +603,89 @@
}
}
},
"ipsec": {
"properties": {
"certificates": {
"ignore_above": 1024,
"type": "keyword"
},
"exchange_type": {
"type": "short"
},
"flag_a": {
"type": "boolean"
},
"flag_c": {
"type": "boolean"
},
"flag_e": {
"type": "boolean"
},
"flag_i": {
"type": "boolean"
},
"flag_r": {
"type": "boolean"
},
"flag_v": {
"type": "boolean"
},
"hash": {
"ignore_above": 1024,
"type": "keyword"
},
"initiator_spi": {
"ignore_above": 1024,
"type": "keyword"
},
"ke_dh_groups": {
"type": "short"
},
"length": {
"type": "long"
},
"maj_version": {
"type": "short"
},
"message_id": {
"type": "long"
},
"min_version": {
"type": "short"
},
"notify_messages": {
"ignore_above": 1024,
"type": "keyword"
},
"proposals": {
"type": "long"
},
"responder_spi": {
"ignore_above": 1024,
"type": "keyword"
},
"situation": {
"ignore_above": 1024,
"type": "keyword"
},
"transform_attributes": {
"ignore_above": 1024,
"type": "keyword"
},
"transforms": {
"ignore_above": 1024,
"type": "keyword"
},
"vendor_ids": {
"ignore_above": 1024,
"type": "keyword"
},
"version": {
"ignore_above": 1024,
"type": "keyword"
}
}
},
"irc": {
"properties": {
"addl": {
@@ -751,6 +834,81 @@
}
}
},
"ldap": {
"type": "object",
"properties": {
"message_id": {
"type": "short"
},
"opcode": {
"ignore_above": 1024,
"type": "keyword"
},
"result": {
"ignore_above": 1024,
"type": "keyword"
},
"diagnostic_message": {
"ignore_above": 1024,
"type": "keyword"
},
"version": {
"type": "short"
},
"object": {
"ignore_above": 1024,
"type": "keyword"
},
"argument": {
"ignore_above": 1024,
"type": "keyword"
},
"user_email": {
"ignore_above": 1024,
"type": "keyword"
},
"property": {
"ignore_above": 1024,
"type": "keyword"
},
"common_name": {
"ignore_above": 1024,
"type": "keyword"
},
"organizational_unit": {
"ignore_above": 1024,
"type": "keyword"
},
"domain": {
"ignore_above": 1024,
"type": "keyword"
}
}
},
"ldap_search": {
"type": "object",
"properties": {
"scope": {
"ignore_above": 1024,
"type": "keyword"
},
"deref_aliases": {
"ignore_above": 1024,
"type": "keyword"
},
"result_count": {
"type": "long"
},
"filter": {
"ignore_above": 1024,
"type": "keyword"
},
"attributes": {
"ignore_above": 1024,
"type": "keyword"
}
}
},
"modbus": {
"properties": {
"exception": {
@@ -1089,6 +1247,38 @@
}
}
},
"quic": {
"type": "object",
"properties": {
"server_name": {
"ignore_above": 1024,
"type": "keyword"
},
"version": {
"type": "short"
},
"client_initial_dcid": {
"ignore_above": 1024,
"type": "keyword"
},
"client_scid": {
"ignore_above": 1024,
"type": "keyword"
},
"server_scid": {
"ignore_above": 1024,
"type": "keyword"
},
"client_protocol": {
"ignore_above": 1024,
"type": "keyword"
},
"history": {
"ignore_above": 1024,
"type": "keyword"
}
}
},
"radius": {
"properties": {
"connect_info": {

View File

@@ -1,12 +0,0 @@
{
"template": {
"settings": {}
},
"_meta": {
"package": {
"name": "elastic_agent"
},
"managed_by": "fleet",
"managed": true
}
}

View File

@@ -1,383 +0,0 @@
{
"template": {
"settings": {
"index": {
"lifecycle": {
"name": "logs"
},
"codec": "best_compression",
"default_pipeline": "logs-elastic_agent-1.13.1",
"mapping": {
"total_fields": {
"limit": "10000"
}
},
"query": {
"default_field": [
"cloud.account.id",
"cloud.availability_zone",
"cloud.instance.id",
"cloud.instance.name",
"cloud.machine.type",
"cloud.provider",
"cloud.region",
"cloud.project.id",
"cloud.image.id",
"container.id",
"container.image.name",
"container.name",
"host.architecture",
"host.hostname",
"host.id",
"host.mac",
"host.name",
"host.os.family",
"host.os.kernel",
"host.os.name",
"host.os.platform",
"host.os.version",
"host.os.build",
"host.os.codename",
"host.type",
"ecs.version",
"agent.build.original",
"agent.ephemeral_id",
"agent.id",
"agent.name",
"agent.type",
"agent.version",
"log.level",
"message",
"elastic_agent.id",
"elastic_agent.process",
"elastic_agent.version",
"component.id",
"component.type",
"component.binary",
"component.state",
"component.old_state",
"unit.id",
"unit.type",
"unit.state",
"unit.old_state"
]
}
}
},
"mappings": {
"dynamic": false,
"dynamic_templates": [
{
"container.labels": {
"path_match": "container.labels.*",
"mapping": {
"type": "keyword"
},
"match_mapping_type": "string"
}
}
],
"properties": {
"container": {
"properties": {
"image": {
"properties": {
"name": {
"ignore_above": 1024,
"type": "keyword"
}
}
},
"name": {
"ignore_above": 1024,
"type": "keyword"
},
"id": {
"ignore_above": 1024,
"type": "keyword"
}
}
},
"agent": {
"properties": {
"build": {
"properties": {
"original": {
"ignore_above": 1024,
"type": "keyword"
}
}
},
"name": {
"ignore_above": 1024,
"type": "keyword"
},
"id": {
"ignore_above": 1024,
"type": "keyword"
},
"ephemeral_id": {
"ignore_above": 1024,
"type": "keyword"
},
"type": {
"ignore_above": 1024,
"type": "keyword"
},
"version": {
"ignore_above": 1024,
"type": "keyword"
}
}
},
"log": {
"properties": {
"level": {
"ignore_above": 1024,
"type": "keyword"
}
}
},
"elastic_agent": {
"properties": {
"process": {
"ignore_above": 1024,
"type": "keyword"
},
"id": {
"ignore_above": 1024,
"type": "keyword"
},
"version": {
"ignore_above": 1024,
"type": "keyword"
},
"snapshot": {
"type": "boolean"
}
}
},
"message": {
"type": "text"
},
"cloud": {
"properties": {
"availability_zone": {
"ignore_above": 1024,
"type": "keyword"
},
"image": {
"properties": {
"id": {
"ignore_above": 1024,
"type": "keyword"
}
}
},
"instance": {
"properties": {
"name": {
"ignore_above": 1024,
"type": "keyword"
},
"id": {
"ignore_above": 1024,
"type": "keyword"
}
}
},
"provider": {
"ignore_above": 1024,
"type": "keyword"
},
"machine": {
"properties": {
"type": {
"ignore_above": 1024,
"type": "keyword"
}
}
},
"project": {
"properties": {
"id": {
"ignore_above": 1024,
"type": "keyword"
}
}
},
"region": {
"ignore_above": 1024,
"type": "keyword"
},
"account": {
"properties": {
"id": {
"ignore_above": 1024,
"type": "keyword"
}
}
}
}
},
"component": {
"properties": {
"binary": {
"ignore_above": 1024,
"type": "keyword"
},
"old_state": {
"ignore_above": 1024,
"type": "keyword"
},
"id": {
"ignore_above": 1024,
"type": "wildcard"
},
"state": {
"ignore_above": 1024,
"type": "keyword"
},
"type": {
"ignore_above": 1024,
"type": "keyword"
}
}
},
"unit": {
"properties": {
"old_state": {
"ignore_above": 1024,
"type": "keyword"
},
"id": {
"ignore_above": 1024,
"type": "wildcard"
},
"state": {
"ignore_above": 1024,
"type": "keyword"
},
"type": {
"ignore_above": 1024,
"type": "keyword"
}
}
},
"@timestamp": {
"type": "date"
},
"ecs": {
"properties": {
"version": {
"ignore_above": 1024,
"type": "keyword"
}
}
},
"data_stream": {
"properties": {
"namespace": {
"type": "constant_keyword"
},
"type": {
"type": "constant_keyword"
},
"dataset": {
"type": "constant_keyword"
}
}
},
"host": {
"properties": {
"hostname": {
"ignore_above": 1024,
"type": "keyword"
},
"os": {
"properties": {
"build": {
"ignore_above": 1024,
"type": "keyword"
},
"kernel": {
"ignore_above": 1024,
"type": "keyword"
},
"codename": {
"ignore_above": 1024,
"type": "keyword"
},
"name": {
"ignore_above": 1024,
"type": "keyword",
"fields": {
"text": {
"type": "text"
}
}
},
"family": {
"ignore_above": 1024,
"type": "keyword"
},
"version": {
"ignore_above": 1024,
"type": "keyword"
},
"platform": {
"ignore_above": 1024,
"type": "keyword"
}
}
},
"domain": {
"ignore_above": 1024,
"type": "keyword"
},
"ip": {
"type": "ip"
},
"containerized": {
"type": "boolean"
},
"name": {
"ignore_above": 1024,
"type": "keyword"
},
"id": {
"ignore_above": 1024,
"type": "keyword"
},
"type": {
"ignore_above": 1024,
"type": "keyword"
},
"mac": {
"ignore_above": 1024,
"type": "keyword"
},
"architecture": {
"ignore_above": 1024,
"type": "keyword"
}
}
},
"event": {
"properties": {
"dataset": {
"type": "constant_keyword"
}
}
}
}
}
},
"_meta": {
"package": {
"name": "elastic_agent"
},
"managed_by": "fleet",
"managed": true
}
}

View File

@@ -1,132 +0,0 @@
{
"template": {
"settings": {
"index": {
"lifecycle": {
"name": "logs-endpoint.collection-diagnostic"
},
"codec": "best_compression",
"default_pipeline": "logs-endpoint.diagnostic.collection-8.10.2",
"mapping": {
"total_fields": {
"limit": "10000"
},
"ignore_malformed": "true"
},
"query": {
"default_field": [
"ecs.version",
"event.action",
"event.category",
"event.code",
"event.dataset",
"event.hash",
"event.id",
"event.kind",
"event.module",
"event.outcome",
"event.provider",
"event.type"
]
}
}
},
"mappings": {
"dynamic": false,
"properties": {
"@timestamp": {
"ignore_malformed": false,
"type": "date"
},
"ecs": {
"properties": {
"version": {
"ignore_above": 1024,
"type": "keyword"
}
}
},
"data_stream": {
"properties": {
"namespace": {
"type": "constant_keyword"
},
"type": {
"type": "constant_keyword"
},
"dataset": {
"type": "constant_keyword"
}
}
},
"event": {
"properties": {
"severity": {
"type": "long"
},
"code": {
"ignore_above": 1024,
"type": "keyword"
},
"created": {
"type": "date"
},
"kind": {
"ignore_above": 1024,
"type": "keyword"
},
"module": {
"ignore_above": 1024,
"type": "keyword"
},
"type": {
"ignore_above": 1024,
"type": "keyword"
},
"sequence": {
"type": "long"
},
"ingested": {
"type": "date"
},
"provider": {
"ignore_above": 1024,
"type": "keyword"
},
"action": {
"ignore_above": 1024,
"type": "keyword"
},
"id": {
"ignore_above": 1024,
"type": "keyword"
},
"category": {
"ignore_above": 1024,
"type": "keyword"
},
"dataset": {
"ignore_above": 1024,
"type": "keyword"
},
"hash": {
"ignore_above": 1024,
"type": "keyword"
},
"outcome": {
"ignore_above": 1024,
"type": "keyword"
}
}
}
}
}
},
"_meta": {
"package": {
"name": "endpoint"
},
"managed_by": "fleet",
"managed": true
}
}

View File

@@ -0,0 +1,49 @@
{
"template": {
"mappings": {
"dynamic_templates": [
{
"action_data.ecs_mapping": {
"path_match": "action_data.ecs_mapping.*",
"mapping": {
"type": "keyword"
},
"match_mapping_type": "string"
}
}
],
"properties": {
"action_data": {
"dynamic": true,
"type": "object",
"properties": {
"ecs_mapping": {
"dynamic": true,
"type": "object"
},
"id": {
"ignore_above": 1024,
"type": "keyword"
},
"platform": {
"ignore_above": 1024,
"type": "keyword"
},
"query": {
"ignore_above": 1024,
"type": "keyword"
},
"saved_query_id": {
"ignore_above": 1024,
"type": "keyword"
},
"version": {
"ignore_above": 1024,
"type": "keyword"
}
}
}
}
}
}
}

View File

@@ -1,12 +1,10 @@
{
"template": {
"settings": {}
},
"template": {},
"_meta": {
"package": {
"name": "endpoint"
"name": "log"
},
"managed_by": "fleet",
"managed": true
}
}
}

View File

@@ -8,7 +8,35 @@
"type": "match_only_text"
}
}
}
},
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
},

View File

@@ -0,0 +1,9 @@
{
"template": {
"settings": {
"index": {
"number_of_replicas": "0"
}
}
}
}

View File

@@ -0,0 +1,9 @@
{
"template": {
"settings": {
"index": {
"number_of_replicas": "0"
}
}
}
}

View File

@@ -0,0 +1,37 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}

View File

@@ -21,10 +21,10 @@
"properties": {
"publicId": {
"ignore_above": 1024,
"type": "keyword"
"type": "keyword"
},
"title": {
"ignore_above": 1024,
"ignore_above": 1024,
"type": "keyword"
},
"severity": {
@@ -38,15 +38,15 @@
"description": {
"type": "text"
},
"category": {
"category": {
"ignore_above": 1024,
"type": "keyword"
},
"product": {
"product": {
"ignore_above": 1024,
"type": "keyword"
},
"service": {
"service": {
"ignore_above": 1024,
"type": "keyword"
},
@@ -64,7 +64,7 @@
},
"tags": {
"ignore_above": 1024,
"type": "keyword"
"type": "keyword"
},
"ruleset": {
"ignore_above": 1024,
@@ -82,6 +82,12 @@
"ignore_above": 1024,
"type": "keyword"
},
"sourceCreated": {
"type": "date"
},
"sourceUpdated": {
"type": "date"
},
"overrides": {
"properties": {
"type": {
@@ -97,6 +103,9 @@
"updatedAt": {
"type": "date"
},
"note": {
"type": "text"
},
"regex": {
"type": "text"
},

View File

@@ -0,0 +1,25 @@
{
"_meta": {
"documentation": "https://www.elastic.co/guide/en/ecs/current/ecs-network.html",
"ecs_version": "1.12.2"
},
"template": {
"mappings": {
"properties": {
"@timestamp": {
"type": "date"
},
"so": {
"properties": {
"ip_address": {
"type": "ip"
},
"description": {
"type": "text"
}
}
}
}
}
}
}

View File

@@ -0,0 +1,36 @@
{
"template": {
"mappings": {
"properties": {
"host": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"related": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"destination": {
"properties":{
"ip": {
"type": "ip"
}
}
},
"source": {
"properties":{
"ip": {
"type": "ip"
}
}
}
}
}
}
}

View File

@@ -20,7 +20,7 @@ if [ ! -f /opt/so/state/espipelines.txt ]; then
cd ${ELASTICSEARCH_INGEST_PIPELINES}
echo "Loading pipelines..."
for i in .[a-z]* *;
for i in *;
do
echo $i;
retry 5 5 "so-elasticsearch-query _ingest/pipeline/$i -d@$i -XPUT | grep '{\"acknowledged\":true}'" || fail "Could not load pipeline: $i"

View File

@@ -6,13 +6,14 @@
# Elastic License 2.0.
. /usr/sbin/so-common
get_elastic_agent_vars
# Exit on errors, since all lines must succeed
set -e
# Check to see if we have extracted the ca cert.
if [ ! -f /opt/so/saltstack/local/salt/elasticsearch/cacerts ]; then
docker run -v /etc/pki/ca.crt:/etc/ssl/ca.crt --name so-elasticsearchca --user root --entrypoint jdk/bin/keytool {{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elasticsearch:{{ GLOBALS.so_version }} -keystore /usr/share/elasticsearch/jdk/lib/security/cacerts -alias SOSCA -import -file /etc/ssl/ca.crt -storepass changeit -noprompt
docker run -v /etc/pki/ca.crt:/etc/ssl/ca.crt --name so-elasticsearchca --user root --entrypoint jdk/bin/keytool {{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elasticsearch:$ELASTIC_AGENT_TARBALL_VERSION -keystore /usr/share/elasticsearch/jdk/lib/security/cacerts -alias SOSCA -import -file /etc/ssl/ca.crt -storepass changeit -noprompt
docker cp so-elasticsearchca:/usr/share/elasticsearch/jdk/lib/security/cacerts /opt/so/saltstack/local/salt/elasticsearch/cacerts
docker cp so-elasticsearchca:/etc/ssl/certs/ca-certificates.crt /opt/so/saltstack/local/salt/elasticsearch/tls-ca-bundle.pem
docker rm so-elasticsearchca

View File

@@ -4,7 +4,7 @@
# https://securityonion.net/license; you may not use this file except in compliance with the
# Elastic License 2.0.
{%- from 'vars/globals.map.jinja' import GLOBALS %}
{%- set node_data = salt['pillar.get']('logstash:nodes', {GLOBALS.role.split('-')[1]: {GLOBALS.hostname: {'ip': GLOBALS.node_ip}}}) %}
{%- set node_data = salt['pillar.get']('elasticsearch:nodes', {GLOBALS.role.split('-')[1]: {GLOBALS.hostname: {'ip': GLOBALS.node_ip}}}) %}
. /usr/sbin/so-common

View File

@@ -40,9 +40,9 @@ fi
# Iterate through the output of _cat/allocation for each node in the cluster to determine the total available space
{% if GLOBALS.role == 'so-manager' %}
for i in $(/usr/sbin/so-elasticsearch-query _cat/allocation | grep -v "{{ GLOBALS.manager }}$" | awk '{print $5}'); do
for i in $(/usr/sbin/so-elasticsearch-query _cat/allocation | grep -v "{{ GLOBALS.manager }}$" | awk '{print $8}'); do
{% else %}
for i in $(/usr/sbin/so-elasticsearch-query _cat/allocation | awk '{print $5}'); do
for i in $(/usr/sbin/so-elasticsearch-query _cat/allocation | awk '{print $8}'); do
{% endif %}
size=$(echo $i | grep -oE '[0-9].*' | awk '{print int($1+0.5)}')
unit=$(echo $i | grep -oE '[A-Za-z]+')

View File

@@ -13,10 +13,10 @@ TOTAL_USED_SPACE=0
# Iterate through the output of _cat/allocation for each node in the cluster to determine the total used space
{% if GLOBALS.role == 'so-manager' %}
# Get total disk space - disk.total
for i in $(/usr/sbin/so-elasticsearch-query _cat/allocation | grep -v "{{ GLOBALS.manager }}$" | awk '{print $3}'); do
for i in $(/usr/sbin/so-elasticsearch-query _cat/allocation | grep -v "{{ GLOBALS.manager }}$" | awk '{print $6}'); do
{% else %}
# Get disk space taken up by indices - disk.indices
for i in $(/usr/sbin/so-elasticsearch-query _cat/allocation | awk '{print $2}'); do
for i in $(/usr/sbin/so-elasticsearch-query _cat/allocation | awk '{print $5}'); do
{% endif %}
size=$(echo $i | grep -oE '[0-9].*' | awk '{print int($1+0.5)}')
unit=$(echo $i | grep -oE '[A-Za-z]+')

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