Compare commits

...

329 Commits

Author SHA1 Message Date
Mike Reeves
37116a9bdd Merge pull request #10755 from Security-Onion-Solutions/2.4/dev
2.4.3
2023-07-12 10:57:42 -04:00
Jason Ertel
6297a2632b Merge pull request #10756 from Security-Onion-Solutions/kilo
catch up branch
2023-07-12 10:38:18 -04:00
Jason Ertel
5cc752f128 Merge branch '2.4/main' into 2.4/dev 2023-07-12 10:19:39 -04:00
Mike Reeves
68d95cd1cb Merge pull request #10754 from Security-Onion-Solutions/2.4.3
2.4.3
2023-07-12 10:05:31 -04:00
Mike Reeves
1a68c3cd24 2.4.3 2023-07-12 10:02:19 -04:00
Josh Patterson
87eec4ae88 Merge pull request #10751 from Security-Onion-Solutions/yararules
Yararules
2023-07-11 15:55:00 -04:00
m0duspwnens
676696b24a restart strelka backend if rules change 2023-07-11 15:48:22 -04:00
m0duspwnens
da27fce95f run so-yara-download/update if scripts change 2023-07-11 13:48:26 -04:00
weslambert
8acc37a7d1 Merge pull request #10749 from Security-Onion-Solutions/fix/yara_update
Fix syntax for conditional
2023-07-11 13:41:38 -04:00
weslambert
5f1b467e64 Fix syntax for conditional 2023-07-11 13:37:50 -04:00
weslambert
fe7fb7f54d Merge pull request #10748 from Security-Onion-Solutions/fix/elasticsearch_strelka
Update logic for YARA matches
2023-07-11 13:02:24 -04:00
Wes
577bfac886 Update logic for YARA matches 2023-07-11 17:00:13 +00:00
Josh Patterson
468b6e4831 Merge pull request #10741 from Security-Onion-Solutions/m0duspwnens-patch-1
import ELASTICFLEETMERGED
2023-07-11 11:04:26 -04:00
Josh Patterson
c75d209d7f import ELASTICFLEETMERGED 2023-07-11 11:01:27 -04:00
Josh Brower
b29b264d5c Merge pull request #10740 from Security-Onion-Solutions/2.4/removecomments
Remove Comments
2023-07-11 10:28:41 -04:00
Josh Brower
c99e7da5a7 Remove Comments 2023-07-11 10:26:18 -04:00
Josh Patterson
60d66b973c Merge pull request #10739 from Security-Onion-Solutions/yararules
include *.yara
2023-07-11 10:21:35 -04:00
m0duspwnens
304830d2ee remove old rules prior to copy 2023-07-11 10:20:04 -04:00
m0duspwnens
d7285d69a7 include *.yara 2023-07-11 09:59:13 -04:00
weslambert
7cdd1f89d7 Merge pull request #10736 from Security-Onion-Solutions/fix/strelka_path
Change path to old one
2023-07-11 09:13:36 -04:00
weslambert
b7cab1d118 Change path to old one 2023-07-11 09:10:20 -04:00
weslambert
f03a472ee5 Merge pull request #10731 from Security-Onion-Solutions/fix/kibana_file_search
Kibana dashboard changes
2023-07-11 08:50:03 -04:00
Mike Reeves
c7a0801eed Merge pull request #10725 from Security-Onion-Solutions/yararules
Yararules
2023-07-11 08:49:20 -04:00
Josh Brower
5e0015e9ac Merge pull request #10735 from Security-Onion-Solutions/2.4/TagPlaybookAlerts
2.4/tag playbook alerts
2023-07-11 08:37:37 -04:00
Josh Brower
5a72c558cb Tag at top level 2023-07-11 08:35:47 -04:00
Josh Brower
a6e907f76c Tag Playbook Alerts 2023-07-11 08:03:15 -04:00
Josh Brower
2d3eb22057 Merge pull request #10732 from Security-Onion-Solutions/2.4/autogenfix
Exclude Import and Eval from autoupdate
2023-07-10 17:18:10 -04:00
Josh Brower
8437fcd94c Exclude Import and Eval from autoupdate 2023-07-10 17:10:08 -04:00
Josh Brower
1b25db4573 Merge pull request #10680 from Security-Onion-Solutions/2.4/fleetautogen
Automatically manage Fleet Logstash Config
2023-07-10 16:26:20 -04:00
m0duspwnens
f8ed2e6e8e make parent dirs 2023-07-10 16:11:45 -04:00
m0duspwnens
f22c61a0a2 use su instead of runuser since logCmd has issues with runuser 2023-07-10 15:19:41 -04:00
m0duspwnens
5069d1163c only *.yar files 2023-07-10 14:36:34 -04:00
Josh Brower
31edf2e8ea Tighten & Document Pipelines 2023-07-10 14:17:42 -04:00
Wes
6b8893ded5 Update saved objects 2023-07-10 18:13:34 +00:00
m0duspwnens
1f8b7bda89 fix output_dir var 2023-07-10 13:39:31 -04:00
m0duspwnens
59233d6550 use full path 2023-07-10 11:43:56 -04:00
m0duspwnens
1ac72e5b24 ensure /nsm/rules/yara directory exists 2023-07-10 11:10:37 -04:00
Josh Brower
7805ca8beb Add Failover Support 2023-07-10 10:38:14 -04:00
m0duspwnens
47b2481cdd nothing in strelka/tools/sbin_jinja to file.recurse 2023-07-10 10:29:19 -04:00
m0duspwnens
fa933d3f53 use file_mode 2023-07-10 10:26:30 -04:00
m0duspwnens
f4dc73a206 yara download and update 2023-07-10 09:42:37 -04:00
Doug Burks
437c9cab68 Merge pull request #10726 from Security-Onion-Solutions/dougburks-patch-1
Update README.md
2023-07-10 09:07:11 -04:00
Wes
6da96a733f Use tags instead of dataset 2023-07-10 13:06:38 +00:00
Doug Burks
82796370ce Update README.md 2023-07-10 09:04:55 -04:00
Josh Brower
8c16feb772 Rename Fleet pipelines 2023-07-09 12:22:55 -04:00
Josh Brower
ce1f363424 Allow base_url 2023-07-08 13:30:19 -04:00
Josh Brower
e8860a7d2c Fix perms 2023-07-08 09:04:55 -04:00
Josh Brower
beb26596fd Merge remote-tracking branch 'origin/2.4/dev' into 2.4/fleetautogen 2023-07-07 19:12:47 -04:00
m0duspwnens
6a5ff04804 remove unneeded function 2023-07-07 16:45:51 -04:00
Josh Brower
ff3bb11fbb Elastic Fleet Certs Refactor 2023-07-07 16:44:16 -04:00
m0duspwnens
8be5082b60 yara scripts 2023-07-07 16:43:26 -04:00
coreyogburn
5faa4f0a30 Merge pull request #10720 from Security-Onion-Solutions/cogburn/8908
Allow an additional kratos endpoint through
2023-07-07 13:17:32 -06:00
Corey Ogburn
da7770a900 Allow an additional kratos endpoint through
The /auth/self-service/errors route is used to lookup auth issues so the route must also be proxied to kratos.
2023-07-07 12:47:55 -06:00
weslambert
8178338971 Merge pull request #10717 from Security-Onion-Solutions/fix/strelka_rules
Change path
2023-07-07 13:45:02 -04:00
weslambert
79ed17b506 Change path 2023-07-07 13:31:43 -04:00
Josh Patterson
2785587840 Merge pull request #10714 from Security-Onion-Solutions/remove_so-logstash-get-unparsed
remove so-logstash-get-unparsed, use so-redis-count instead
2023-07-07 09:53:54 -04:00
weslambert
9f95306458 Merge pull request #10708 from Security-Onion-Solutions/fix/elasticsearch_templates_hn
Fix heavy node Elasticsearch template load
2023-07-07 09:52:54 -04:00
m0duspwnens
55bed0771b remove so-logstash-get-unparsed, use so-redis-count instead 2023-07-07 09:52:21 -04:00
Wes
0b5ee49873 Fix inverted logic for component template 2023-07-06 20:46:35 +00:00
Jason Ertel
1646459052 Merge pull request #10707 from Security-Onion-Solutions/kilo
add default pillar file
2023-07-06 14:49:40 -04:00
Jason Ertel
8ec003d89f add default pillar file 2023-07-06 14:47:21 -04:00
Jason Ertel
224f0606c2 Merge pull request #10706 from Security-Onion-Solutions/kilo
incorporate features pillar
2023-07-06 14:04:12 -04:00
Wes
910125f13a Restructure logic 2023-07-06 17:49:06 +00:00
Jason Ertel
5eca1acbeb incorporate features pillar 2023-07-06 13:24:45 -04:00
Wes
d551faeb16 Heavy node template considerations 2023-07-06 17:19:28 +00:00
Josh Patterson
6a6afeef75 Merge pull request #10704 from Security-Onion-Solutions/patch/x509_v2
Patch/x509 v2
2023-07-06 11:43:33 -04:00
m0duspwnens
869f60ccaa cipher deprecated for x509_+v2 2023-07-06 10:51:44 -04:00
m0duspwnens
12c82d2812 bits deprecation to keysize 2023-07-06 10:49:32 -04:00
m0duspwnens
a2b50c6d40 remove quote 2023-07-06 10:25:19 -04:00
m0duspwnens
ab7ae6cddd fix cp for x509_v2.py 2023-07-06 10:17:14 -04:00
m0duspwnens
7a9a12ae3d fix cp for x509_v2.py 2023-07-06 10:03:12 -04:00
m0duspwnens
b49a296276 we can remove the unless in ssl state since x509_v2 is patched 2023-07-06 09:44:58 -04:00
Josh Patterson
9b9321d23a Merge pull request #10698 from Security-Onion-Solutions/issue/10468
disable salt schedule after highstate then enable later in setup
2023-07-05 14:56:31 -04:00
m0duspwnens
1922ad95d5 disable salt schedule after highstate then enable later in setup 2023-07-05 13:43:54 -04:00
Josh Patterson
9de8814412 Merge pull request #10692 from Security-Onion-Solutions/issue/10545
Issue/10545
2023-07-03 11:05:55 -04:00
Josh Brower
35e7659904 Merge remote-tracking branch 'remotes/origin/2.4/dev' into 2.4/fleetautogen 2023-07-03 10:36:29 -04:00
weslambert
d31ea4097d Merge pull request #10683 from Security-Onion-Solutions/fix/kibana_http_search
Kibana dashboard changes
2023-06-30 17:17:37 -04:00
Wes
c277b7acfa Change Zeek file from evet dataset to tags 2023-06-30 20:24:10 +00:00
m0duspwnens
97a9e0989d Merge remote-tracking branch 'origin/2.4/dev' into issue/10545 2023-06-30 15:46:41 -04:00
Wes
6bdccec6b1 Add asterisk back to Modbus search 2023-06-30 19:01:53 +00:00
m0duspwnens
35945ed224 create local logrotate pillar dir 2023-06-30 14:43:00 -04:00
m0duspwnens
7319d7ae9b replace . with _x_ 2023-06-30 14:18:20 -04:00
Wes
8b38cbe8cf Fix Modbus since the previous fix was reverted 2023-06-30 17:38:05 +00:00
Wes
35ea084466 Update from exported saved objects again 2023-06-30 16:55:00 +00:00
Jason Ertel
c89582ffb6 Merge pull request #10685 from Security-Onion-Solutions/kilo
remove use of pipe
2023-06-30 12:23:48 -04:00
Jason Ertel
d6db94a4d4 reset ver 2023-06-30 12:11:32 -04:00
Wes
e2acf027a9 Update from exported saved objects 2023-06-30 16:01:50 +00:00
m0duspwnens
d6d8ba7479 Merge remote-tracking branch 'origin/2.4/dev' into issue/10545 2023-06-30 11:29:25 -04:00
m0duspwnens
41a4321b03 configure logrotate through soc 2023-06-30 11:26:55 -04:00
Jason Ertel
2ae049071d Merge branch '2.4t/dev' into kilo 2023-06-30 11:10:01 -04:00
Jason Ertel
e82df53997 switch version to kilo 2023-06-30 11:08:42 -04:00
Wes
273e78da94 Modbus dashboard - use asterisk 2023-06-30 15:03:20 +00:00
Wes
446376395e Modbus dashboard - use tags 2023-06-30 13:56:08 +00:00
Wes
a13001dce0 PE dashboard - use tags 2023-06-30 13:40:36 +00:00
Wes
8819e1d4d6 HTTP search - use tags 2023-06-30 13:02:00 +00:00
Josh Brower
1baea3bcd5 Add Fleet to Logstash Nodes 2023-06-29 17:24:52 -04:00
Josh Patterson
1c37c05824 Merge pull request #10682 from Security-Onion-Solutions/addbackunless
add back unless in ssl state
2023-06-29 16:13:39 -04:00
m0duspwnens
cd1db36c13 add back unless in ssl state 2023-06-29 15:26:16 -04:00
m0duspwnens
5898c9ef31 start of logrotate configurable via ui 2023-06-29 12:54:37 -04:00
Jason Ertel
951f04c265 remove use of pipe 2023-06-29 12:10:12 -04:00
Josh Brower
4b069d91ab Check the correct pillar 2023-06-29 11:00:34 -04:00
Josh Brower
7561ec0512 Automatically manage Fleet Logstash Config 2023-06-29 08:52:51 -04:00
Josh Patterson
eef1b40436 Merge pull request #10677 from Security-Onion-Solutions/issue/10533
Issue/10533
2023-06-28 15:17:42 -04:00
m0duspwnens
34db6fb823 dont need the unless for ssl since using x509v2 now 2023-06-28 15:06:13 -04:00
m0duspwnens
eeaf077baf dont need the unless for ssl since using x509v2 now 2023-06-28 15:02:09 -04:00
m0duspwnens
120d21c0da use minion id instead of hostname for ca_server in nginx state 2023-06-28 13:52:30 -04:00
m0duspwnens
66457ad8f8 use watch_in instead of watch 2023-06-28 12:27:14 -04:00
m0duspwnens
69670c481d fix require logic for nginx container 2023-06-28 11:32:08 -04:00
m0duspwnens
cae011babb force bool for nginx ssl replace_cert 2023-06-28 11:30:36 -04:00
m0duspwnens
02ea939abc watch crt and key for nginx container 2023-06-28 11:11:20 -04:00
m0duspwnens
be028aa23e define ca_server for nginx.ssl 2023-06-28 10:58:13 -04:00
m0duspwnens
24b7f7a7ce move replace_cert under ssl for nginx defaults 2023-06-28 10:32:16 -04:00
m0duspwnens
12cce111db custom crt and key for nginx 2023-06-28 10:28:50 -04:00
weslambert
add72d7a5c Merge pull request #10670 from Security-Onion-Solutions/fix/kibana_dashboards
Kibana Dashboards - Remove Wazuh reference and use tags
2023-06-28 09:41:19 -04:00
Josh Brower
c7a1d4758b Merge pull request #10598 from Security-Onion-Solutions/2.4/fix-naming
Remove old var
2023-06-28 07:09:37 -04:00
Wes
8436b647dd Remove Wazuh and use tags 2023-06-27 18:05:04 +00:00
Doug Burks
77e6ee3c36 Merge pull request #10669 from Security-Onion-Solutions/dougburks-patch-1
Update so-desktop-install
2023-06-27 09:26:44 -04:00
Doug Burks
3e71663669 Update so-desktop-install 2023-06-27 09:24:47 -04:00
Mike Reeves
984971c63c Merge pull request #10667 from Security-Onion-Solutions/desktop
Fix some installs
2023-06-26 18:51:55 -04:00
Mike Reeves
6adef20a06 Fix the rest of the analyst entries 2023-06-26 16:26:55 -04:00
Mike Reeves
cb8faf7c5f Fix the rest of the analyst entries 2023-06-26 16:14:04 -04:00
Mike Reeves
740723ecd6 Fix some installs 2023-06-26 16:01:58 -04:00
Mike Reeves
d70371c540 Merge pull request #10665 from Security-Onion-Solutions/desktop
Desktop Install
2023-06-26 15:42:14 -04:00
Mike Reeves
b6986d5c61 Merge branch '2.4/dev' into desktop 2023-06-26 15:36:48 -04:00
Mike Reeves
02e6e11be7 so-desktop-install 2023-06-26 15:34:48 -04:00
Mike Reeves
d26484fe1a so-desktop-install 2023-06-26 15:27:18 -04:00
Mike Reeves
12d10d7d42 Merge branch '2.4/dev' into desktop 2023-06-26 15:20:43 -04:00
Mike Reeves
7ea37ac2dd Merge pull request #10663 from Security-Onion-Solutions/TOoSmOotH-patch-3
Update packages.sls
2023-06-26 11:25:14 -04:00
Mike Reeves
7aae72cfcf Update packages.sls 2023-06-26 11:23:02 -04:00
Mike Reeves
ec427cde08 Merge pull request #10662 from Security-Onion-Solutions/desktop
Desktop State
2023-06-26 10:48:41 -04:00
weslambert
c2efd7ef64 Merge pull request #10655 from Security-Onion-Solutions/feature/supported_integrations
Restructure Elasticsearch templates for supported integrations
2023-06-26 09:43:10 -04:00
Mike Reeves
77c58e665e Merge pull request #10654 from Security-Onion-Solutions/24soup
soup updates
2023-06-26 09:26:47 -04:00
Mike Reeves
9530901d1d Remove local file check 2023-06-26 09:09:55 -04:00
Doug Burks
e83afa3e30 Merge pull request #10660 from Security-Onion-Solutions/dougburks-patch-1
Update README.md
2023-06-26 08:33:22 -04:00
Doug Burks
70fb28a8b3 Update README.md 2023-06-26 08:31:41 -04:00
Josh Brower
8355432356 Merge pull request #10657 from Security-Onion-Solutions/2.4/policy-name-fix
2.4/policy name fix
2023-06-24 19:00:00 -04:00
Josh Brower
2247cafe5f Change policy name 2023-06-24 17:13:28 -04:00
Josh Brower
85a8da6331 Change policy name 2023-06-24 16:58:36 -04:00
Josh Brower
ddabab253c Merge pull request #10653 from Security-Onion-Solutions/2.4/heavynode
2.4/heavynode
2023-06-23 19:55:24 -04:00
Jason Ertel
2e42eddbc2 Merge pull request #10656 from Security-Onion-Solutions/jertel/fix-import
fix agent extract error during install; simplify logic
2023-06-23 17:21:39 -04:00
Jason Ertel
07a590dda8 fix agent extract error during install; simplify logic 2023-06-23 17:17:59 -04:00
Mike Reeves
ec8eac3430 soup fix 2023-06-23 17:05:41 -04:00
weslambert
05b84327b8 Fix typo 2023-06-23 16:32:57 -04:00
Mike Reeves
0607532e4a soup fix 2023-06-23 16:20:41 -04:00
Mike Reeves
3018886f72 soup fix 2023-06-23 16:13:04 -04:00
weslambert
e02bdffe34 Fix typos 2023-06-23 16:10:22 -04:00
Mike Reeves
5073d62ee8 soup fix 2023-06-23 16:09:57 -04:00
weslambert
e2ff48164b Only load if so-elastic-fleet-common exists 2023-06-23 16:03:58 -04:00
Mike Reeves
43832f9c34 soup fix 2023-06-23 16:03:51 -04:00
Mike Reeves
5da5a04025 soup fix 2023-06-23 16:00:02 -04:00
Mike Reeves
25b51135fc soup fix 2023-06-23 15:58:20 -04:00
weslambert
aa91c1fef2 Add empty object for index_settings 2023-06-23 15:57:30 -04:00
Mike Reeves
801a5a6824 soup fix 2023-06-23 15:56:15 -04:00
Mike Reeves
f63c26b7f2 soup fix 2023-06-23 15:50:54 -04:00
Josh Brower
336a40d646 Merge remote-tracking branch 'remotes/origin/2.4/dev' into 2.4/heavynode 2023-06-23 15:50:14 -04:00
Josh Brower
bb0cfc5253 Create & assign Heavy Node Fleet Policy 2023-06-23 15:49:03 -04:00
coreyogburn
106aaa9c3e Merge pull request #10652 from Security-Onion-Solutions/cogburn/10122
FIX: Exclude System logs from Hunt/Dashboard Queries.
2023-06-23 13:48:17 -06:00
weslambert
ff7db0be63 Remove old index settings 2023-06-23 15:31:11 -04:00
Wes
b96d3473f2 Fix indentation 2023-06-23 18:38:04 +00:00
Corey Ogburn
fb27e7c479 Also add to dashboard
Duplicate new queryToggleFilter from hunt to dashboard.
2023-06-23 11:30:26 -06:00
Corey Ogburn
261acee8a0 New Hunt queryToggleFilter
New filter to exclude soc logs from hunt results.
2023-06-23 11:30:26 -06:00
Josh Brower
a9585b2a7f Fix Elastic Agent for Heavy 2023-06-23 10:45:58 -04:00
Wes
62fa15c63e Add more templates 2023-06-23 14:43:15 +00:00
weslambert
e995576b1d Remove extra templates 2023-06-23 09:41:49 -04:00
Jason Ertel
d247c9d704 Merge pull request #10648 from Security-Onion-Solutions/jertel/fix-import
use cluster-unique password for import encryption
2023-06-23 09:40:26 -04:00
Jason Ertel
b21b545756 use cluster-unique password for import encryption 2023-06-23 09:37:41 -04:00
Wes
5e8748c436 Load Elasticsearch templates 2023-06-23 13:28:01 +00:00
Wes
e2cca917c1 Add package load command to Fleet setup 2023-06-23 13:26:06 +00:00
Wes
d8700137d2 Add updated so-elasticsearch-templates-load 2023-06-23 13:23:29 +00:00
Wes
2c42d4b19e Add package check to so-elasticsearch-templates-load 2023-06-23 13:22:51 +00:00
Wes
a3c7e40c40 Add package load command 2023-06-23 13:20:05 +00:00
Wes
94fe456e28 Add package functions 2023-06-23 13:19:20 +00:00
Wes
662db41857 Add default packages 2023-06-23 13:17:38 +00:00
Jason Ertel
7623dd20b9 Merge pull request #10644 from Security-Onion-Solutions/cogburn/salt-relay-fix
WIP: Fix `salt cmd.run` commands for importing
2023-06-22 20:31:19 -04:00
Corey Ogburn
2b323ab661 Fix salt cmd.run commands for importing
Functional and easy to read.
2023-06-22 17:30:56 -06:00
Josh Brower
8de01625a8 Add Elastic Agent container for Heavy Nodes 2023-06-22 16:02:42 -04:00
Josh Brower
d0d7ab57ca Add Elastic Agent container for Heavy Nodes 2023-06-22 16:02:17 -04:00
Jason Ertel
f4cbe20ddf Merge pull request #10641 from Security-Onion-Solutions/jertel/fix-import
fix quotations
2023-06-22 14:46:41 -04:00
Jason Ertel
0d92a1594a fix quotations 2023-06-22 14:41:39 -04:00
m0duspwnens
daaead618e Merge remote-tracking branch 'origin/2.4/dev' into 2.4/heavynode 2023-06-22 13:26:56 -04:00
m0duspwnens
19469205e1 include eval and import in so-elasticsearch-cluster-settings 2023-06-22 13:12:47 -04:00
Jason Ertel
cae9e6230f Merge pull request #10638 from Security-Onion-Solutions/cogburn/import-fix
Change upload path
2023-06-22 13:04:22 -04:00
m0duspwnens
6c4c815683 change so-elasticsearch-cluster settings to include heavynode, and only run on managers 2023-06-22 13:04:20 -04:00
Corey Ogburn
6769386c86 Change upload path 2023-06-22 10:59:24 -06:00
m0duspwnens
36272efda7 create ES_LOGSTASH_NODES which removes heavynodes 2023-06-22 09:46:42 -04:00
weslambert
6b97d07a89 Merge pull request #10629 from Security-Onion-Solutions/fix/elasticsearch_ingest_suricata_xff_ip
Parse xff
2023-06-22 08:45:58 -04:00
coreyogburn
da82395dcf Merge pull request #10633 from Security-Onion-Solutions/cogburn/10413
Cogburn/10413
2023-06-21 15:48:53 -06:00
Corey Ogburn
b5e5bd57ad Fix for Upload Import
Needed to mount /nsm/soc/uploads into soc container.

Made the upload route configurable.

Added gpg logging to salt-relay.
2023-06-21 15:41:16 -06:00
Josh Patterson
ad4fb52b81 Merge pull request #10631 from Security-Onion-Solutions/2.4/repos
2.4/repos
2023-06-21 16:06:30 -04:00
m0duspwnens
4e849ecc90 issues with exclude rocky-repos 2023-06-21 15:14:53 -04:00
weslambert
7e37cd0f05 Parse xff 2023-06-21 14:29:54 -04:00
Mike Reeves
3952c1a9b7 Fix desktop state 2023-06-21 13:52:10 -04:00
Mike Reeves
c13c37f406 Fix desktop state 2023-06-21 13:49:01 -04:00
Mike Reeves
9240c3c6f0 Fix desktop package list 2023-06-21 13:42:51 -04:00
Mike Reeves
2aa01280e7 Fix desktop package list 2023-06-21 13:34:47 -04:00
m0duspwnens
1675b787bf exclude rocky-repos and remove files 2023-06-21 13:27:34 -04:00
Mike Reeves
4866eb2315 Fix desktop package list 2023-06-21 12:52:42 -04:00
Mike Reeves
f785fb2772 Fix desktop package list 2023-06-21 12:27:15 -04:00
Mike Reeves
8c9f863808 Fix desktop package list 2023-06-21 12:22:03 -04:00
Mike Reeves
1751e35121 Fix desktop package list 2023-06-21 12:20:57 -04:00
Mike Reeves
6676afc7de Fix desktop package list 2023-06-21 12:19:48 -04:00
Mike Reeves
699ea1ac3e Fix desktop package list 2023-06-21 11:48:37 -04:00
Mike Reeves
90fdb9c465 Update paths 2023-06-21 11:47:22 -04:00
Mike Reeves
48291f5271 Merge branch '2.4/dev' of https://github.com/Security-Onion-Solutions/securityonion into desktop 2023-06-21 11:43:05 -04:00
Mike Reeves
3a41b090c1 Update paths 2023-06-21 11:42:51 -04:00
Josh Brower
139b36b189 Merge pull request #10627 from Security-Onion-Solutions/2.4/import-evtx
Refactor EVTX Import
2023-06-21 11:42:10 -04:00
Josh Brower
6ddf887342 Refactor EVTX Import 2023-06-21 09:32:42 -04:00
Josh Brower
6ba9e057a9 Merge pull request #10600 from Security-Onion-Solutions/fix/dataset_tags
Change format of event dataset and assign dataset to tags
2023-06-21 09:22:40 -04:00
Mike Reeves
6600484f8e Update Docker 2023-06-21 09:15:31 -04:00
Mike Reeves
b02c38175c Merge pull request #10624 from Security-Onion-Solutions/TOoSmOotH-patch-2
Salt Defunct Workaround
2023-06-20 17:44:53 -04:00
Mike Reeves
4497f6561f Salt Defunct Workaround
This can be removed once they patch salt
2023-06-20 17:27:02 -04:00
Mike Reeves
0fc03baf58 Desktop Packages 2023-06-20 13:41:10 -04:00
coreyogburn
fb81c6e2e3 Merge pull request #10601 from Security-Onion-Solutions/cogburn/10413
Cogburn/10413
2023-06-20 11:08:53 -06:00
Corey Ogburn
ad28ea275f Better state management
When salt-cp runs it's course and finds it can't send a file, it outputs a report saying as much but the exit code will be zero. Now we remove the filename and node from the response and look for `True` to know if it succeeded. Also, respect the cleanup flag on success or failure.

Check the status of the decryption process before importing.

No longer decrypt locally, issue salt command for the remote client to do the decrypting.
2023-06-20 09:41:14 -06:00
Corey Ogburn
41951659ec Use importer's new --json flag.
Using the new --json flag is not only more reliable than using a regex, the way the import script was written even re-imports will provide a url. This means that in more cases we can provide the results to the users (even if nothing changed).
2023-06-20 09:41:14 -06:00
Corey Ogburn
451a4784a1 send-file and import-file security
Encrypt the file with a passphrase before sending and decrypt the file with the same passphrase before importing.
2023-06-20 09:41:14 -06:00
Corey Ogburn
1b7095fa81 Improved import-file url regex
sed doesn't remove ALL whitespace, only newlines. It's better to stop at the first whitespace than to stop at a particular, maybe-not-last query string parameter.
2023-06-20 09:41:14 -06:00
Corey Ogburn
89d789fe0f New folder for salt to maintain
This folder is where a manager will initially store uploaded PCAP/EVTX files before sending to sensors. Sensors will store uploads in this folder on their own system.
2023-06-20 09:41:14 -06:00
Corey Ogburn
49055e260f salt-relay import-file reporting
On successful import, return dashboard URL
2023-06-20 09:41:14 -06:00
Corey Ogburn
a465039887 2 new capabilities: send-file and import-file 2023-06-20 09:41:14 -06:00
Doug Burks
b60cf29598 Merge pull request #10618 from Security-Onion-Solutions/dougburks-patch-1
Resolve conflicts with dataset PR
2023-06-20 07:42:30 -04:00
Doug Burks
0e09d73aa0 Resolve conflicts with dataset PR 2023-06-20 07:40:10 -04:00
Doug Burks
520a5671ca Merge pull request #10617 from Security-Onion-Solutions/dougburks-patch-1
Fix SOC Auth queries in Dashboards and Hunt
2023-06-20 07:32:46 -04:00
Doug Burks
fc824359ed Update default fields for kratos.audit 2023-06-20 07:30:56 -04:00
Doug Burks
7caa7cec6b Fix SOC Auth queries in Dashboards and Hunt
Change `event.dataset:audit` to `event.dataset:kratos.audit`.
2023-06-20 07:13:33 -04:00
Josh Patterson
0695140f83 Merge pull request #10611 from Security-Onion-Solutions/2.4/ubuntu
2.4/ubuntu
2023-06-16 14:00:52 -04:00
m0duspwnens
ed1e2c8908 ignore failure notification for Ubuntu Failed to restart snapd 2023-06-16 13:58:45 -04:00
Jason Ertel
594900a8d4 Merge pull request #10609 from Security-Onion-Solutions/kilo
webauthn for SOC
2023-06-16 13:15:25 -04:00
Jason Ertel
6894fa4e4d Update VERSION 2023-06-16 13:09:01 -04:00
m0duspwnens
2334d82d36 fix salt install for ubuntu 2023-06-16 11:13:34 -04:00
Josh Patterson
c0a2ea3138 Merge pull request #10604 from Security-Onion-Solutions/2.4/receiver
2.4/receiver
2023-06-15 15:42:34 -04:00
m0duspwnens
d4acb1a33a Merge remote-tracking branch 'origin/2.4/dev' into 2.4/receiver 2023-06-15 15:32:49 -04:00
m0duspwnens
5de9e5baf4 allow sensor to logstash on receiver 2023-06-15 14:46:46 -04:00
Wes
3a34da354f Use append instead of set 2023-06-15 16:35:43 +00:00
m0duspwnens
469390696e 2.4 receiver changes 2023-06-15 11:04:16 -04:00
Josh Brower
0a4a48b61e Remove old var 2023-06-15 10:24:50 -04:00
Wes
58a63e0765 Remove extra comma 2023-06-15 14:22:37 +00:00
Doug Burks
251bc6f45e Merge pull request #10597 from Security-Onion-Solutions/dougburks-patch-1
Update so_motd.jinja
2023-06-15 09:59:25 -04:00
Doug Burks
b84d997f87 Update so_motd.jinja 2023-06-15 09:54:23 -04:00
Wes
b5bccc5e05 Use module in dataset name and add dataset tag 2023-06-15 13:06:57 +00:00
Jason Ertel
b4e5ac9796 Add note to advise against changing settings 2023-06-14 16:11:50 -04:00
m0duspwnens
2db95fe1b4 fw rules for receiver to managers 2023-06-14 15:24:14 -04:00
m0duspwnens
934b0f45a1 allow receiver to connect to salt manager 2023-06-14 15:08:07 -04:00
Jason Ertel
a88227d13f Merge branch '2.4/dev' into kilo 2023-06-14 13:34:15 -04:00
Jason Ertel
21a7b76352 webauthn 2023-06-14 13:33:31 -04:00
weslambert
03082339ca Merge pull request #10592 from Security-Onion-Solutions/fix/analyzer_dependencies
Update analyzer dependencies
2023-06-14 12:22:06 -04:00
m0duspwnens
8f6226b531 Merge remote-tracking branch 'origin/2.4/dev' into 2.4/heavynode 2023-06-14 10:40:22 -04:00
m0duspwnens
2c4eccd7e0 2.4 heavynode changes 2023-06-14 10:40:05 -04:00
Josh Brower
fa57494694 Merge pull request #10584 from Security-Onion-Solutions/2.4/elasticagent-renaming
Change Elastic Fleet Tarball naming
2023-06-14 09:42:57 -04:00
weslambert
3f1741e75a Merge pull request #10585 from Security-Onion-Solutions/fix/elasticsearch_templates
Update Elasticsearch templates for Fleet
2023-06-14 09:33:23 -04:00
Wes
48331ce35b Add system.system component templates 2023-06-14 13:29:11 +00:00
Wes
c2ac60b82e Add system.system template and add event-mappings 2023-06-14 13:28:00 +00:00
Josh Brower
fedfbe9fec Fix tarball output name 2023-06-14 08:52:56 -04:00
Josh Brower
9947f9def4 Rework tarball naming schema 2023-06-14 07:38:03 -04:00
Wes
c205438771 Update dependencies 2023-06-14 02:35:29 +00:00
Wes
8cde05807c Remove elastic-agent dir 2023-06-13 21:33:04 +00:00
Wes
2ac0aba916 Add osquery files 2023-06-13 21:32:02 +00:00
Wes
af003cc2a1 Add osquery templates 2023-06-13 20:43:39 +00:00
Josh Brower
0d4f6b4fe6 Change Elastic Fleet Tarball naming 2023-06-13 16:32:19 -04:00
Jason Ertel
7093254439 Merge pull request #10582 from Security-Onion-Solutions/jertel/pcap
ensure status line shows dates for new and existing imports
2023-06-13 15:16:43 -04:00
Wes
bd7644a557 Add another template 2023-06-13 19:13:20 +00:00
Jason Ertel
90b740a997 ensure status line shows dates for new and existing imports 2023-06-13 15:11:13 -04:00
Wes
5547a1b7ab Add event mappings 2023-06-13 18:23:50 +00:00
Wes
1b90fd8581 Add custom component templates 2023-06-13 18:21:45 +00:00
Doug Burks
bbdf7bb5a7 Merge pull request #10580 from Security-Onion-Solutions/dougburks-patch-1
Set START and END variables earlier in so-import-pcap
2023-06-13 13:31:16 -04:00
Doug Burks
fb8ad71b27 Set START and END variables earlier in so-import-pcap 2023-06-13 13:19:18 -04:00
Wes
e43b7607bb Add more component templates 2023-06-13 17:04:03 +00:00
Wes
a265c06e31 Add other component templates 2023-06-13 15:47:25 +00:00
Wes
2aa954cb0a Add component templates 2023-06-13 15:25:23 +00:00
Wes
73812b11a3 Allow ingest node pipelines that start with a period 2023-06-13 13:37:56 +00:00
Wes
38ab426470 Add final Fleet pipeline 2023-06-13 13:36:26 +00:00
Wes
d0a6881c2c Add event mappings and remove meta information for now 2023-06-13 13:35:46 +00:00
m0duspwnens
c7c4e65df1 single-node for heavynode 2023-06-13 09:22:17 -04:00
m0duspwnens
49b150797d 2.4 heavynode changes 2023-06-12 16:25:51 -04:00
Wes
57268ba934 Change priority of templates 2023-06-12 14:29:45 +00:00
Wes
1208915896 Remove Elastic Agent package templates 2023-06-12 14:24:59 +00:00
Wes
42f5ad9939 Add templates for system.auth and systen.syslog 2023-06-12 14:23:24 +00:00
Doug Burks
8e0d895afb Merge pull request #10572 from Security-Onion-Solutions/dougburks-patch-1
FIX: Add more Zeek logs to excluded list #10569
2023-06-12 09:33:13 -04:00
Doug Burks
998c85e3f8 Update defaults.yaml 2023-06-12 09:31:19 -04:00
weslambert
32f3ee0b01 Merge pull request #10564 from Security-Onion-Solutions/fix/elasticsearch_templates
Update templates for integrations
2023-06-12 09:05:31 -04:00
Doug Burks
a90aed25fb Merge pull request #10570 from Security-Onion-Solutions/dougburks-patch-1
FIX: Add Zeek ocsp.log to excluded list #10569
2023-06-12 08:46:49 -04:00
Doug Burks
ae14e4870d Add ocsp to logging.zeek.exclued in defaults.yaml 2023-06-12 08:44:46 -04:00
Doug Burks
273a1d7e9c Merge pull request #10568 from Security-Onion-Solutions/2.4/fix-suricata-dhcp
FIX: Suricata DHCP logs not ingesting #10565
2023-06-12 07:50:44 -04:00
Doug Burks
b3f8ed7dcd FIX: Suricata DHCP logs not ingesting #10565 2023-06-10 11:42:41 -04:00
Wes
ad5a424c03 Update templates for integrations 2023-06-09 18:32:50 +00:00
Jason Ertel
e06787445c Merge pull request #10561 from Security-Onion-Solutions/jertel/pcap
Node description config setting should not accept a grid-wide value
2023-06-09 12:02:51 -04:00
Jason Ertel
8a4f5d6dcb Merge branch '2.4/dev' into jertel/pcap 2023-06-09 11:51:37 -04:00
Doug Burks
81dd951064 Merge pull request #10560 from Security-Onion-Solutions/dougburks-patch-1
FIX: Setup re-runs when SSH'ing into a successfully installed minion …
2023-06-09 11:49:54 -04:00
Doug Burks
c12f138899 FIX: Setup re-runs when SSH'ing into a successfully installed minion node #10498 2023-06-09 11:20:54 -04:00
Jason Ertel
884a7041af Merge branch '2.4/dev' into jertel/pcap 2023-06-09 10:47:26 -04:00
Jason Ertel
023008c54c do not allow node_description to be set at global grid-wide level 2023-06-09 10:46:56 -04:00
Jason Ertel
6f7de954d9 Merge pull request #10559 from Security-Onion-Solutions/jertel/pcap
Telegraf should monitor all mount points
2023-06-09 09:18:54 -04:00
Jason Ertel
46371aaaf5 Monitor all mount points for simplicity 2023-06-09 09:14:36 -04:00
Doug Burks
1fde2e2755 Merge pull request #10553 from Security-Onion-Solutions/2.4/update-readme
2.4/update readme
2023-06-08 13:44:39 -04:00
Doug Burks
1aad9d1b2f Update README.md 2023-06-08 13:41:08 -04:00
Doug Burks
9703e70163 Update README.md 2023-06-08 13:38:11 -04:00
Doug Burks
f6735207d7 Merge pull request #10552 from Security-Onion-Solutions/2.4/fix-suricata-dataset
FIX: Suricata dataset values for certain types of metadata#10551
2023-06-08 13:33:53 -04:00
Doug Burks
e5f76a9c6e change suricata parsers from dataset to event.dataset 2023-06-08 12:31:31 -04:00
weslambert
d1c86cb9ff Merge pull request #10550 from Security-Onion-Solutions/kilo
Elastalert and EQL
2023-06-08 11:21:18 -04:00
weslambert
8ccb24dda2 Update version to 2.4.3 2023-06-08 11:05:05 -04:00
weslambert
932054e9da Update version to 2.4.0 2023-06-08 11:04:45 -04:00
Josh Brower
8b35002169 EQL Refactor 2023-06-07 13:44:37 -04:00
weslambert
f68527d366 Merge pull request #10541 from Security-Onion-Solutions/fix/curator_action_ignore_empty_list
Use ignore_empty_list
2023-06-07 10:36:38 -04:00
Wes
81e3d26540 Ignore empty list 2023-06-07 13:14:52 +00:00
weslambert
96b60fa39a Restore original URL syntax, but use data stream 2023-06-06 20:53:05 -04:00
weslambert
f172a74fbc Remove EQL setting 2023-06-06 20:51:29 -04:00
weslambert
c4be56ec7b Update host syntax 2023-06-06 20:51:03 -04:00
weslambert
96195806ab Update version to 2.4.0-kilo 2023-06-06 20:50:10 -04:00
weslambert
88bbd3440d Merge pull request #10522 from Security-Onion-Solutions/fix/playbook_index
Change Playbook index to a data stream and update mapping for event.severity_label
2023-06-06 09:03:49 -04:00
Wes
495a9c0783 Add mapping for event.severity_label 2023-06-05 21:19:37 +00:00
Wes
905bc564fc Change data stream name 2023-06-05 21:18:47 +00:00
Wes
f6f387428f Update Playbook alerter to write to a data stream 2023-06-05 21:17:10 +00:00
Jason Ertel
db5abcb3cf Merge pull request #10503 from Security-Onion-Solutions/jertel/pcap
add ability to output PCAP import results in JSON format
2023-06-05 14:32:32 -04:00
Jason Ertel
27e310c2a1 add json output option to so-import-evtx; clean up other issues 2023-06-05 13:54:44 -04:00
weslambert
236eb0cbcc Merge pull request #10515 from Security-Onion-Solutions/fix/analyzers
Update requests and whoisit
2023-06-05 12:12:59 -04:00
Wes
841d0b4b1f Update dependencies after git add 2023-06-05 15:42:55 +00:00
Wes
272f97e2d7 Update dependencies 2023-06-05 15:42:38 +00:00
Wes
eac9a3fc86 Update requests and whoisit 2023-06-05 15:41:01 +00:00
Doug Burks
32dc26f2e7 Merge pull request #10514 from Security-Onion-Solutions/2.4/fix-VERIFY_ISO
Rename VERIFY_ISO.md to DOWNLOAD_AND_VERIFY_ISO.md
2023-06-05 10:12:43 -04:00
Doug Burks
1b14142e4c Rename VERIFY_ISO.md to DOWNLOAD_AND_VERIFY_ISO.md 2023-06-05 10:08:20 -04:00
Jason Ertel
2fef1d5fa7 silence grep output 2023-06-02 15:43:48 -04:00
Jason Ertel
3bbfc3865d use proper URL spacing 2023-06-02 15:26:14 -04:00
Jason Ertel
6947fd6414 add ability to output PCAP import results in JSON format 2023-06-02 15:21:41 -04:00
Doug Burks
d3e5be78fd Merge pull request #10500 from Security-Onion-Solutions/dougburks-patch-1
Update soc_zeek.yaml
2023-06-02 07:54:11 -04:00
Doug Burks
09e005127e Update soc_zeek.yaml 2023-06-02 07:41:55 -04:00
Mike Reeves
d3ea596deb Merge pull request #10491 from Security-Onion-Solutions/TOoSmOotH-patch-1
Update VERSION
2023-06-01 09:44:13 -04:00
Mike Reeves
d6d315e8d5 Update VERSION 2023-06-01 09:43:32 -04:00
Jason Ertel
162a32fd08 Merge branch '2.4/dev' into kilo 2023-05-30 11:51:57 -04:00
Jason Ertel
f765dc23ea kilofy version 2023-05-26 09:54:50 -04:00
356 changed files with 22683 additions and 10948 deletions

View File

@@ -1,18 +1,18 @@
### 2.4.2-20230531 ISO image built on 2023/05/31
### 2.4.3-20230711 ISO image built on 2023/07/11
### Download and Verify
2.4.2-20230531 ISO image:
https://download.securityonion.net/file/securityonion/securityonion-2.4.2-20230531.iso
2.4.3-20230711 ISO image:
https://download.securityonion.net/file/securityonion/securityonion-2.4.3-20230711.iso
MD5: EB861EFB7F7DA6FB418075B4C452E4EB
SHA1: 479A72DBB0633CB23608122F7200A24E2C3C3128
SHA256: B69C1AE4C576BBBC37F4B87C2A8379903421E65B2C4F24C90FABB0EAD6F0471B
MD5: F481ED39E02A5AF05EB50D319D97A6C7
SHA1: 20F9BAA8F73A44C21A8DFE81F36247BCF33CEDA6
SHA256: D805522E02CD4941641385F6FF86FAAC240DA6C5FD98F78460348632C7C631B0
Signature for ISO image:
https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.2-20230531.iso.sig
https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.3-20230711.iso.sig
Signing key:
https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/2.4/main/KEYS
@@ -26,22 +26,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.2-20230531.iso.sig
wget https://github.com/Security-Onion-Solutions/securityonion/raw/2.4/main/sigs/securityonion-2.4.3-20230711.iso.sig
```
Download the ISO image:
```
wget https://download.securityonion.net/file/securityonion/securityonion-2.4.2-20230531.iso
wget https://download.securityonion.net/file/securityonion/securityonion-2.4.3-20230711.iso
```
Verify the downloaded ISO image using the signature file:
```
gpg --verify securityonion-2.4.2-20230531.iso.sig securityonion-2.4.2-20230531.iso
gpg --verify securityonion-2.4.3-20230711.iso.sig securityonion-2.4.3-20230711.iso
```
The output should show "Good signature" and the Primary key fingerprint should match what's shown below:
```
gpg: Signature made Wed 31 May 2023 05:01:41 PM EDT using RSA key ID FE507013
gpg: Signature made Tue 11 Jul 2023 06:23:37 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.

View File

@@ -1,20 +1,26 @@
## Security Onion 2.4 Beta 3
## Security Onion 2.4 Beta 4
Security Onion 2.4 Beta 3 is here!
Security Onion 2.4 Beta 4 is here!
## Screenshots
Alerts
![Alerts](./assets/images/screenshots/alerts.png)
![Alerts](https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion-docs/2.4/images/50_alerts.png)
Dashboards
![Dashboards](./assets/images/screenshots/dashboards.png)
![Dashboards](https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion-docs/2.4/images/51_dashboards.png)
Hunt
![Hunt](./assets/images/screenshots/hunt.png)
![Hunt](https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion-docs/2.4/images/52_hunt.png)
Cases
![Cases](./assets/images/screenshots/cases-comments.png)
PCAP
![PCAP](https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion-docs/2.4/images/53_pcap.png)
Grid
![Grid](https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion-docs/2.4/images/57_grid.png)
Config
![Config](https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion-docs/2.4/images/61_config.png)
### Release Notes

View File

@@ -1 +1 @@
2.4.2
2.4.3

View File

@@ -1,13 +0,0 @@
logrotate:
conf: |
daily
rotate 14
missingok
copytruncate
compress
create
extension .log
dateext
dateyesterday
group_conf: |
su root socore

View File

@@ -2,7 +2,7 @@
{% 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-helix ',
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 ',
fun='network.ip_addrs',
tgt_type='compound') | dictsort()
%}

14
pillar/soc/license.sls Normal file
View File

@@ -0,0 +1,14 @@
# Copyright Jason Ertel (github.com/jertel).
# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one
# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at
# https://securityonion.net/license; you may not use this file except in compliance with
# the Elastic License 2.0.
# Note: Per the Elastic License 2.0, the second limitation states:
#
# "You may not move, change, disable, or circumvent the license key functionality
# in the software, and you may not remove or obscure any functionality in the
# software that is protected by the license key."
# This file is generated by Security Onion and contains a list of license-enabled features.
features: []

View File

@@ -40,6 +40,7 @@ base:
- logstash.adv_logstash
- soc.soc_soc
- soc.adv_soc
- soc.license
- soctopus.soc_soctopus
- soctopus.adv_soctopus
- kibana.soc_kibana
@@ -103,6 +104,7 @@ base:
- idstools.adv_idstools
- soc.soc_soc
- soc.adv_soc
- soc.license
- soctopus.soc_soctopus
- soctopus.adv_soctopus
- kibana.soc_kibana
@@ -161,6 +163,7 @@ base:
- manager.adv_manager
- soc.soc_soc
- soc.adv_soc
- soc.license
- soctopus.soc_soctopus
- soctopus.adv_soctopus
- kibana.soc_kibana
@@ -258,6 +261,7 @@ base:
- manager.adv_manager
- soc.soc_soc
- soc.adv_soc
- soc.license
- soctopus.soc_soctopus
- soctopus.adv_soctopus
- kibana.soc_kibana

View File

@@ -46,23 +46,7 @@
'pcap',
'suricata',
'healthcheck',
'schedule',
'tcpreplay',
'docker_clean'
],
'so-helixsensor': [
'salt.master',
'ca',
'ssl',
'registry',
'telegraf',
'firewall',
'idstools',
'suricata.manager',
'zeek',
'redis',
'elasticsearch',
'logstash',
'elasticagent',
'schedule',
'tcpreplay',
'docker_clean'
@@ -203,7 +187,7 @@
'schedule',
'docker_clean'
],
'so-workstation': [
'so-desktop': [
],
}, grain='role') %}
@@ -244,7 +228,7 @@
{% do allowed_states.append('playbook') %}
{% endif %}
{% if grains.role in ['so-helixsensor', 'so-manager', 'so-standalone', 'so-searchnode', 'so-managersearch', 'so-heavynode', 'so-receiver'] %}
{% if grains.role in ['so-manager', 'so-standalone', 'so-searchnode', 'so-managersearch', 'so-heavynode', 'so-receiver'] %}
{% do allowed_states.append('logstash') %}
{% endif %}

View File

@@ -20,7 +20,6 @@ pki_private_key:
- name: /etc/pki/ca.key
- keysize: 4096
- passphrase:
- cipher: aes_256_cbc
- backup: True
{% if salt['file.file_exists']('/etc/pki/ca.key') -%}
- prereq:

View File

@@ -1,2 +0,0 @@
#!/bin/bash
/usr/sbin/logrotate -f /opt/so/conf/log-rotate.conf > /dev/null 2>&1

View File

@@ -1,2 +0,0 @@
#!/bin/bash
/usr/sbin/logrotate -f /opt/so/conf/sensor-rotate.conf > /dev/null 2>&1

View File

@@ -1,79 +0,0 @@
The following GUI tools are available on the analyst workstation:
chromium
url: https://www.chromium.org/Home
To run chromium, click Applications > Internet > Chromium Web Browser
Wireshark
url: https://www.wireshark.org/
To run Wireshark, click Applications > Internet > Wireshark Network Analyzer
NetworkMiner
url: https://www.netresec.com
To run NetworkMiner, click Applications > Internet > NetworkMiner
The following CLI tools are available on the analyst workstation:
bit-twist
url: http://bittwist.sourceforge.net
To run bit-twist, open a terminal and type: bittwist -h
chaosreader
url: http://chaosreader.sourceforge.net
To run chaosreader, open a terminal and type: chaosreader -h
dnsiff
url: https://www.monkey.org/~dugsong/dsniff/
To run dsniff, open a terminal and type: dsniff -h
foremost
url: http://foremost.sourceforge.net
To run foremost, open a terminal and type: foremost -h
hping3
url: http://www.hping.org/hping3.html
To run hping3, open a terminal and type: hping3 -h
netsed
url: http://silicone.homelinux.org/projects/netsed/
To run netsed, open a terminal and type: netsed -h
ngrep
url: https://github.com/jpr5/ngrep
To run ngrep, open a terminal and type: ngrep -h
scapy
url: http://www.secdev.org/projects/scapy/
To run scapy, open a terminal and type: scapy
ssldump
url: http://www.rtfm.com/ssldump/
To run ssldump, open a terminal and type: ssldump -h
sslsplit
url: https://github.com/droe/sslsplit
To run sslsplit, open a terminal and type: sslsplit -h
tcpdump
url: http://www.tcpdump.org
To run tcpdump, open a terminal and type: tcpdump -h
tcpflow
url: https://github.com/simsong/tcpflow
To run tcpflow, open a terminal and type: tcpflow -h
tcpstat
url: https://frenchfries.net/paul/tcpstat/
To run tcpstat, open a terminal and type: tcpstat -h
tcptrace
url: http://www.tcptrace.org
To run tcptrace, open a terminal and type: tcptrace -h
tcpxtract
url: http://tcpxtract.sourceforge.net/
To run tcpxtract, open a terminal and type: tcpxtract -h
whois
url: http://www.linux.it/~md/software/
To run whois, open a terminal and type: whois -h

View File

@@ -1,37 +0,0 @@
{%- set logrotate_conf = salt['pillar.get']('logrotate:conf') %}
{%- set group_conf = salt['pillar.get']('logrotate:group_conf') %}
/opt/so/log/aptcacher-ng/*.log
/opt/so/log/idstools/*.log
/opt/so/log/nginx/*.log
/opt/so/log/soc/*.log
/opt/so/log/kratos/*.log
/opt/so/log/kibana/*.log
/opt/so/log/influxdb/*.log
/opt/so/log/elastalert/*.log
/opt/so/log/soctopus/*.log
/opt/so/log/curator/*.log
/opt/so/log/fleet/*.log
/opt/so/log/suricata/*.log
/opt/so/log/mysql/*.log
/opt/so/log/telegraf/*.log
/opt/so/log/redis/*.log
/opt/so/log/sensoroni/*.log
/opt/so/log/stenographer/*.log
/opt/so/log/salt/so-salt-minion-check
/opt/so/log/salt/minion
/opt/so/log/salt/master
/opt/so/log/logscan/*.log
/nsm/idh/*.log
{
{{ logrotate_conf | indent(width=4) }}
}
# Playbook's log directory needs additional configuration
# because Playbook requires a more permissive directory
/opt/so/log/playbook/*.log
{
{{ logrotate_conf | indent(width=4) }}
{{ group_conf | indent(width=4) }}
}

View File

@@ -1,22 +0,0 @@
/opt/so/log/sensor_clean.log
{
daily
rotate 2
missingok
nocompress
create
sharedscripts
}
/nsm/strelka/log/strelka.log
{
daily
rotate 14
missingok
copytruncate
compress
create
extension .log
dateext
dateyesterday
}

View File

@@ -10,6 +10,10 @@ include:
- manager.elasticsearch # needed for elastic_curl_config state
{% endif %}
net.core.wmem_default:
sysctl.present:
- value: 26214400
# Remove variables.txt from /tmp - This is temp
rmvariablesfile:
file.absent:
@@ -147,56 +151,8 @@ so-sensor-clean:
- daymonth: '*'
- month: '*'
- dayweek: '*'
sensorrotatescript:
file.managed:
- name: /usr/local/bin/sensor-rotate
- source: salt://common/cron/sensor-rotate
- mode: 755
sensorrotateconf:
file.managed:
- name: /opt/so/conf/sensor-rotate.conf
- source: salt://common/files/sensor-rotate.conf
- mode: 644
sensor-rotate:
cron.present:
- name: /usr/local/bin/sensor-rotate
- identifier: sensor-rotate
- user: root
- minute: '1'
- hour: '0'
- daymonth: '*'
- month: '*'
- dayweek: '*'
{% endif %}
commonlogrotatescript:
file.managed:
- name: /usr/local/bin/common-rotate
- source: salt://common/cron/common-rotate
- mode: 755
commonlogrotateconf:
file.managed:
- name: /opt/so/conf/log-rotate.conf
- source: salt://common/files/log-rotate.conf
- template: jinja
- mode: 644
common-rotate:
cron.present:
- name: /usr/local/bin/common-rotate
- identifier: common-rotate
- user: root
- minute: '1'
- hour: '0'
- daymonth: '*'
- month: '*'
- dayweek: '*'
# Create the status directory
sostatusdir:
file.directory:

View File

@@ -8,6 +8,15 @@ soup_scripts:
- source: salt://common/tools/sbin
- include_pat:
- so-common
- so-firewall
- so-image-common
soup_manager_scripts:
file.recurse:
- name: /usr/sbin
- user: root
- group: root
- file_mode: 755
- source: salt://manager/tools/sbin
- include_pat:
- so-firewall
- soup

View File

@@ -5,6 +5,7 @@
# https://securityonion.net/license; you may not use this file except in compliance with the
# Elastic License 2.0.
ELASTIC_AGENT_TARBALL_VERSION="8.7.1"
DEFAULT_SALT_DIR=/opt/so/saltstack/default
DOC_BASE_URL="https://docs.securityonion.net/en/2.4"
@@ -242,7 +243,7 @@ is_manager_node() {
is_sensor_node() {
# Check to see if this is a sensor (forward) node
is_single_node_grid && return 0
grep "role: so-" /etc/salt/grains | grep -E "sensor|heavynode|helix" &> /dev/null
grep "role: so-" /etc/salt/grains | grep -E "sensor|heavynode" &> /dev/null
}
is_single_node_grid() {
@@ -300,6 +301,17 @@ lookup_role() {
echo ${pieces[1]}
}
is_feature_enabled() {
feature=$1
enabled=$(lookup_salt_value features)
for cur in $enabled; do
if [[ "$feature" == "$cur" ]]; then
return 0
fi
done
return 1
}
require_manager() {
if is_manager_node; then
echo "This is a manager, so we can proceed."

View File

@@ -6,17 +6,17 @@
# Elastic License 2.0.
{# we only want the script to install the workstation if it is Rocky -#}
{# we only want the script to install the desktop if it is Rocky -#}
{% if grains.os == 'Rocky' -%}
{# if this is a manager -#}
{% if grains.master == grains.id.split('_')|first -%}
source /usr/sbin/so-common
doc_workstation_url="$DOC_BASE_URL/analyst-vm.html"
doc_desktop_url="$DOC_BASE_URL/desktop.html"
pillar_file="/opt/so/saltstack/local/pillar/minions/{{grains.id}}.sls"
if [ -f "$pillar_file" ]; then
if ! grep -q "^workstation:$" "$pillar_file"; then
if ! grep -q "^desktop:$" "$pillar_file"; then
FIRSTPASS=yes
while [[ $INSTALL != "yes" ]] && [[ $INSTALL != "no" ]]; do
@@ -26,7 +26,7 @@ if [ -f "$pillar_file" ]; then
echo "## _______________________________ ##"
echo "## ##"
echo "## Installing the Security Onion ##"
echo "## analyst node on this device will ##"
echo "## Desktop on this device will ##"
echo "## make permanent changes to ##"
echo "## the system. ##"
echo "## A system reboot will be required ##"
@@ -42,40 +42,40 @@ if [ -f "$pillar_file" ]; then
done
if [[ $INSTALL == "no" ]]; then
echo "Exiting analyst node installation."
echo "Exiting desktop node installation."
exit 0
fi
# Add workstation pillar to the minion's pillar file
# Add desktop pillar to the minion's pillar file
printf '%s\n'\
"workstation:"\
"desktop:"\
" gui:"\
" enabled: true"\
"" >> "$pillar_file"
echo "Applying the workstation state. This could take some time since there are many packages that need to be installed."
if salt-call state.apply workstation -linfo queue=True; then # make sure the state ran successfully
echo "Applying the desktop state. This could take some time since there are many packages that need to be installed."
if salt-call state.apply desktop -linfo queue=True; then # make sure the state ran successfully
echo ""
echo "Analyst workstation has been installed!"
echo "Security Onion Desktop has been installed!"
echo "Press ENTER to reboot or Ctrl-C to cancel."
read pause
reboot;
else
echo "There was an issue applying the workstation state. Please review the log above or at /opt/so/log/salt/minion."
echo "There was an issue applying the desktop state. Please review the log above or at /opt/so/log/salt/minion."
fi
else # workstation is already added
echo "The workstation pillar already exists in $pillar_file."
echo "To enable/disable the gui, set 'workstation:gui:enabled' to true or false in $pillar_file."
echo "Additional documentation can be found at $doc_workstation_url."
else # desktop is already added
echo "The desktop pillar already exists in $pillar_file."
echo "To enable/disable the gui, set 'desktop:gui:enabled' to true or false in $pillar_file."
echo "Additional documentation can be found at $doc_desktop_url."
fi
else # if the pillar file doesn't exist
echo "Could not find $pillar_file and add the workstation pillar."
echo "Could not find $pillar_file and add the desktop pillar."
fi
{#- if this is not a manager #}
{% else -%}
echo "Since this is not a manager, the pillar values to enable analyst workstation must be set manually. Please view the documentation at $doc_workstation_url."
echo "Since this is not a manager, the pillar values to enable Security Onion Desktop must be set manually. Please view the documentation at $doc_desktop_url."
{#- endif if this is a manager #}
{% endif -%}
@@ -83,7 +83,7 @@ echo "Since this is not a manager, the pillar values to enable analyst workstati
{#- if not Rocky #}
{%- else %}
echo "The Analyst Workstation can only be installed on Rocky. Please view the documentation at $doc_workstation_url."
echo "The Security Onion Desktop can only be installed on Rocky Linux. Please view the documentation at $doc_desktop_url."
{#- endif grains.os == Rocky #}
{% endif -%}

View File

@@ -14,19 +14,56 @@
{%- set ES_PASS = salt['pillar.get']('elasticsearch:auth:users:so_elastic_user:pass', '') %}
INDEX_DATE=$(date +'%Y.%m.%d')
RUNID=$(cat /dev/urandom | tr -dc 'a-z0-9' | fold -w 8 | head -n 1)
LOG_FILE=/nsm/import/evtx-import.log
. /usr/sbin/so-common
function usage {
cat << EOF
Usage: $0 <evtx-file-1> [evtx-file-2] [evtx-file-*]
Usage: $0 [options] <evtx-file-1> [evtx-file-2] [evtx-file-*]
Imports one or more evtx files into Security Onion. The evtx files will be analyzed and made available for review in the Security Onion toolset.
Options:
--json Outputs summary in JSON format. Implies --quiet.
--quiet Silences progress information to stdout.
EOF
}
quiet=0
json=0
INPUT_FILES=
while [[ $# -gt 0 ]]; do
param=$1
shift
case "$param" in
--json)
json=1
quiet=1
;;
--quiet)
quiet=1
;;
-*)
echo "Encountered unexpected parameter: $param"
usage
exit 1
;;
*)
if [[ "$INPUT_FILES" != "" ]]; then
INPUT_FILES="$INPUT_FILES $param"
else
INPUT_FILES="$param"
fi
;;
esac
done
function status {
msg=$1
[[ $quiet -eq 1 ]] && return
echo "$msg"
}
function evtx2es() {
EVTX=$1
@@ -42,31 +79,30 @@ function evtx2es() {
}
# if no parameters supplied, display usage
if [ $# -eq 0 ]; then
if [ "$INPUT_FILES" == "" ]; then
usage
exit 1
fi
# ensure this is a Manager node
require_manager
require_manager @> /dev/null
# verify that all parameters are files
for i in "$@"; do
for i in $INPUT_FILES; do
if ! [ -f "$i" ]; then
usage
echo "\"$i\" is not a valid file!"
exit 2
fi
done
# track if we have any valid or invalid evtx
INVALID_EVTXS="no"
VALID_EVTXS="no"
# track oldest start and newest end so that we can generate the Kibana search hyperlink at the end
START_OLDEST="2050-12-31"
END_NEWEST="1971-01-01"
INVALID_EVTXS_COUNT=0
VALID_EVTXS_COUNT=0
SKIPPED_EVTXS_COUNT=0
touch /nsm/import/evtx-start_oldest
touch /nsm/import/evtx-end_newest
@@ -74,27 +110,39 @@ echo $START_OLDEST > /nsm/import/evtx-start_oldest
echo $END_NEWEST > /nsm/import/evtx-end_newest
# paths must be quoted in case they include spaces
for EVTX in "$@"; do
for EVTX in $INPUT_FILES; do
EVTX=$(/usr/bin/realpath "$EVTX")
echo "Processing Import: ${EVTX}"
status "Processing Import: ${EVTX}"
# generate a unique hash to assist with dedupe checks
HASH=$(md5sum "${EVTX}" | awk '{ print $1 }')
HASH_DIR=/nsm/import/${HASH}
echo "- assigning unique identifier to import: $HASH"
status "- assigning unique identifier to import: $HASH"
if [[ "$HASH_FILTERS" == "" ]]; then
HASH_FILTERS="import.id:${HASH}"
HASHES="${HASH}"
else
HASH_FILTERS="$HASH_FILTERS%20OR%20import.id:${HASH}"
HASHES="${HASHES} ${HASH}"
fi
if [ -d $HASH_DIR ]; then
echo "- this EVTX has already been imported; skipping"
INVALID_EVTXS="yes"
status "- this EVTX has already been imported; skipping"
SKIPPED_EVTXS_COUNT=$((SKIPPED_EVTXS_COUNT + 1))
else
VALID_EVTXS="yes"
EVTX_DIR=$HASH_DIR/evtx
mkdir -p $EVTX_DIR
# import evtx and write them to import ingest pipeline
echo "- importing logs to Elasticsearch..."
status "- importing logs to Elasticsearch..."
evtx2es "${EVTX}" $HASH
if [[ $? -ne 0 ]]; then
INVALID_EVTXS_COUNT=$((INVALID_EVTXS_COUNT + 1))
status "- WARNING: This evtx file may not have fully imported successfully"
else
VALID_EVTXS_COUNT=$((VALID_EVTXS_COUNT + 1))
fi
# compare $START to $START_OLDEST
START=$(cat /nsm/import/evtx-start_oldest)
@@ -118,38 +166,60 @@ for EVTX in "$@"; do
fi # end of valid evtx
echo
status
done # end of for-loop processing evtx files
# remove temp files
echo "Cleaning up:"
for TEMP_EVTX in ${TEMP_EVTXS[@]}; do
echo "- removing temporary evtx $TEMP_EVTX"
rm -f $TEMP_EVTX
done
# output final messages
if [ "$INVALID_EVTXS" = "yes" ]; then
echo
echo "Please note! One or more evtx was invalid! You can scroll up to see which ones were invalid."
if [[ $INVALID_EVTXS_COUNT -gt 0 ]]; then
status
status "Please note! One or more evtx was invalid! You can scroll up to see which ones were invalid."
fi
START_OLDEST_FORMATTED=`date +%Y-%m-%d --date="$START_OLDEST"`
START_OLDEST_SLASH=$(echo $START_OLDEST_FORMATTED | sed -e 's/-/%2F/g')
END_NEWEST_SLASH=$(echo $END_NEWEST | sed -e 's/-/%2F/g')
if [ "$VALID_EVTXS" = "yes" ]; then
cat << EOF
if [[ $VALID_EVTXS_COUNT -gt 0 ]] || [[ $SKIPPED_EVTXS_COUNT -gt 0 ]]; then
URL="https://{{ URLBASE }}/#/dashboards?q=$HASH_FILTERS%20%7C%20groupby%20-sankey%20event.dataset%20event.category%2a%20%7C%20groupby%20-pie%20event.category%20%7C%20groupby%20-bar%20event.module%20%7C%20groupby%20event.dataset%20%7C%20groupby%20event.module%20%7C%20groupby%20event.category%20%7C%20groupby%20observer.name%20%7C%20groupby%20source.ip%20%7C%20groupby%20destination.ip%20%7C%20groupby%20destination.port&t=${START_OLDEST_SLASH}%2000%3A00%3A00%20AM%20-%20${END_NEWEST_SLASH}%2000%3A00%3A00%20AM&z=UTC"
Import complete!
You can use the following hyperlink to view data in the time range of your import. You can triple-click to quickly highlight the entire hyperlink and you can then copy it into your browser:
https://{{ URLBASE }}/#/dashboards?q=import.id:${RUNID}%20%7C%20groupby%20-sankey%20event.dataset%20event.category%2a%20%7C%20groupby%20-pie%20event.category%20%7C%20groupby%20-bar%20event.module%20%7C%20groupby%20event.dataset%20%7C%20groupby%20event.module%20%7C%20groupby%20event.category%20%7C%20groupby%20observer.name%20%7C%20groupby%20source.ip%20%7C%20groupby%20destination.ip%20%7C%20groupby%20destination.port&t=${START_OLDEST_SLASH}%2000%3A00%3A00%20AM%20-%20${END_NEWEST_SLASH}%2000%3A00%3A00%20AM&z=UTC
or you can manually set your Time Range to be (in UTC):
From: $START_OLDEST_FORMATTED To: $END_NEWEST
Please note that it may take 30 seconds or more for events to appear in Security Onion Console.
EOF
status "Import complete!"
status
status "Use the following hyperlink to view the imported data. Triple-click to quickly highlight the entire hyperlink and then copy it into a browser:"
status
status "$URL"
status
status "or, manually set the Time Range to be (in UTC):"
status
status "From: $START_OLDEST_FORMATTED To: $END_NEWEST"
status
status "Note: It can take 30 seconds or more for events to appear in Security Onion Console."
RESULT=0
else
START_OLDEST=
END_NEWEST=
URL=
RESULT=1
fi
if [[ $json -eq 1 ]]; then
jq -n \
--arg success_count "$VALID_EVTXS_COUNT" \
--arg fail_count "$INVALID_EVTXS_COUNT" \
--arg skipped_count "$SKIPPED_EVTXS_COUNT" \
--arg begin_date "$START_OLDEST" \
--arg end_date "$END_NEWEST" \
--arg url "$URL" \
--arg hashes "$HASHES" \
'''{
success_count: $success_count,
fail_count: $fail_count,
skipped_count: $skipped_count,
begin_date: $begin_date,
end_date: $end_date,
url: $url,
hash: ($hashes / " ")
}'''
fi
exit $RESULT

View File

@@ -15,12 +15,51 @@
function usage {
cat << EOF
Usage: $0 <pcap-file-1> [pcap-file-2] [pcap-file-N]
Usage: $0 [options] <pcap-file-1> [pcap-file-2] [pcap-file-N]
Imports one or more PCAP files onto a sensor node. The PCAP traffic will be analyzed and made available for review in the Security Onion toolset.
Options:
--json Outputs summary in JSON format. Implies --quiet.
--quiet Silences progress information to stdout.
EOF
}
quiet=0
json=0
INPUT_FILES=
while [[ $# -gt 0 ]]; do
param=$1
shift
case "$param" in
--json)
json=1
quiet=1
;;
--quiet)
quiet=1
;;
-*)
echo "Encountered unexpected parameter: $param"
usage
exit 1
;;
*)
if [[ "$INPUT_FILES" != "" ]]; then
INPUT_FILES="$INPUT_FILES $param"
else
INPUT_FILES="$param"
fi
;;
esac
done
function status {
msg=$1
[[ $quiet -eq 1 ]] && return
echo "$msg"
}
function pcapinfo() {
PCAP=$1
ARGS=$2
@@ -84,7 +123,7 @@ function zeek() {
}
# if no parameters supplied, display usage
if [ $# -eq 0 ]; then
if [ "$INPUT_FILES" == "" ]; then
usage
exit 1
fi
@@ -96,31 +135,30 @@ if [ ! -d /opt/so/conf/suricata ]; then
fi
# verify that all parameters are files
for i in "$@"; do
for i in $INPUT_FILES; do
if ! [ -f "$i" ]; then
usage
echo "\"$i\" is not a valid file!"
exit 2
fi
done
# track if we have any valid or invalid pcaps
INVALID_PCAPS="no"
VALID_PCAPS="no"
# track oldest start and newest end so that we can generate the Kibana search hyperlink at the end
START_OLDEST="2050-12-31"
END_NEWEST="1971-01-01"
INVALID_PCAPS_COUNT=0
VALID_PCAPS_COUNT=0
SKIPPED_PCAPS_COUNT=0
# paths must be quoted in case they include spaces
for PCAP in "$@"; do
for PCAP in $INPUT_FILES; do
PCAP=$(/usr/bin/realpath "$PCAP")
echo "Processing Import: ${PCAP}"
echo "- verifying file"
status "Processing Import: ${PCAP}"
status "- verifying file"
if ! pcapinfo "${PCAP}" > /dev/null 2>&1; then
# try to fix pcap and then process the fixed pcap directly
PCAP_FIXED=`mktemp /tmp/so-import-pcap-XXXXXXXXXX.pcap`
echo "- attempting to recover corrupted PCAP file"
status "- attempting to recover corrupted PCAP file"
pcapfix "${PCAP}" "${PCAP_FIXED}"
# Make fixed file world readable since the Suricata docker container will runas a non-root user
chmod a+r "${PCAP_FIXED}"
@@ -131,33 +169,44 @@ for PCAP in "$@"; do
# generate a unique hash to assist with dedupe checks
HASH=$(md5sum "${PCAP}" | awk '{ print $1 }')
HASH_DIR=/nsm/import/${HASH}
echo "- assigning unique identifier to import: $HASH"
status "- assigning unique identifier to import: $HASH"
if [ -d $HASH_DIR ]; then
echo "- this PCAP has already been imported; skipping"
INVALID_PCAPS="yes"
elif pcapinfo "${PCAP}" |egrep -q "Last packet time: 1970-01-01|Last packet time: n/a"; then
echo "- this PCAP file is invalid; skipping"
INVALID_PCAPS="yes"
pcap_data=$(pcapinfo "${PCAP}")
if ! echo "$pcap_data" | grep -q "First packet time:" || echo "$pcap_data" |egrep -q "Last packet time: 1970-01-01|Last packet time: n/a"; then
status "- this PCAP file is invalid; skipping"
INVALID_PCAPS_COUNT=$((INVALID_PCAPS_COUNT + 1))
else
VALID_PCAPS="yes"
if [ -d $HASH_DIR ]; then
status "- this PCAP has already been imported; skipping"
SKIPPED_PCAPS_COUNT=$((SKIPPED_PCAPS_COUNT + 1))
else
VALID_PCAPS_COUNT=$((VALID_PCAPS_COUNT + 1))
PCAP_DIR=$HASH_DIR/pcap
mkdir -p $PCAP_DIR
PCAP_DIR=$HASH_DIR/pcap
mkdir -p $PCAP_DIR
# generate IDS alerts and write them to standard pipeline
echo "- analyzing traffic with Suricata"
suricata "${PCAP}" $HASH
{% if salt['pillar.get']('global:mdengine') == 'ZEEK' %}
# generate Zeek logs and write them to a unique subdirectory in /nsm/import/zeek/
# since each run writes to a unique subdirectory, there is no need for a lock file
echo "- analyzing traffic with Zeek"
zeek "${PCAP}" $HASH
{% endif %}
# generate IDS alerts and write them to standard pipeline
status "- analyzing traffic with Suricata"
suricata "${PCAP}" $HASH
{% if salt['pillar.get']('global:mdengine') == 'ZEEK' %}
# generate Zeek logs and write them to a unique subdirectory in /nsm/import/zeek/
# since each run writes to a unique subdirectory, there is no need for a lock file
status "- analyzing traffic with Zeek"
zeek "${PCAP}" $HASH
{% endif %}
fi
if [[ "$HASH_FILTERS" == "" ]]; then
HASH_FILTERS="import.id:${HASH}"
HASHES="${HASH}"
else
HASH_FILTERS="$HASH_FILTERS%20OR%20import.id:${HASH}"
HASHES="${HASHES} ${HASH}"
fi
START=$(pcapinfo "${PCAP}" -a |grep "First packet time:" | awk '{print $4}')
END=$(pcapinfo "${PCAP}" -e |grep "Last packet time:" | awk '{print $4}')
echo "- saving PCAP data spanning dates $START through $END"
status "- found PCAP data spanning dates $START through $END"
# compare $START to $START_OLDEST
START_COMPARE=$(date -d $START +%s)
@@ -179,37 +228,62 @@ for PCAP in "$@"; do
fi # end of valid pcap
echo
status
done # end of for-loop processing pcap files
# remove temp files
echo "Cleaning up:"
for TEMP_PCAP in ${TEMP_PCAPS[@]}; do
echo "- removing temporary pcap $TEMP_PCAP"
status "- removing temporary pcap $TEMP_PCAP"
rm -f $TEMP_PCAP
done
# output final messages
if [ "$INVALID_PCAPS" = "yes" ]; then
echo
echo "Please note! One or more pcaps was invalid! You can scroll up to see which ones were invalid."
if [[ $INVALID_PCAPS_COUNT -gt 0 ]]; then
status
status "WARNING: One or more pcaps was invalid. Scroll up to see which ones were invalid."
fi
START_OLDEST_SLASH=$(echo $START_OLDEST | sed -e 's/-/%2F/g')
END_NEWEST_SLASH=$(echo $END_NEWEST | sed -e 's/-/%2F/g')
if [[ $VALID_PCAPS_COUNT -gt 0 ]] || [[ $SKIPPED_PCAPS_COUNT -gt 0 ]]; then
URL="https://{{ URLBASE }}/#/dashboards?q=$HASH_FILTERS%20%7C%20groupby%20-sankey%20event.dataset%20event.category%2a%20%7C%20groupby%20-pie%20event.category%20%7C%20groupby%20-bar%20event.module%20%7C%20groupby%20event.dataset%20%7C%20groupby%20event.module%20%7C%20groupby%20event.category%20%7C%20groupby%20observer.name%20%7C%20groupby%20source.ip%20%7C%20groupby%20destination.ip%20%7C%20groupby%20destination.port&t=${START_OLDEST_SLASH}%2000%3A00%3A00%20AM%20-%20${END_NEWEST_SLASH}%2000%3A00%3A00%20AM&z=UTC"
if [ "$VALID_PCAPS" = "yes" ]; then
cat << EOF
Import complete!
You can use the following hyperlink to view data in the time range of your import. You can triple-click to quickly highlight the entire hyperlink and you can then copy it into your browser:
https://{{ URLBASE }}/#/dashboards?q=import.id:${HASH}%20%7C%20groupby%20-sankey%20event.dataset%20event.category%2a%20%7C%20groupby%20-pie%20event.category%20%7C%20groupby%20-bar%20event.module%20%7C%20groupby%20event.dataset%20%7C%20groupby%20event.module%20%7C%20groupby%20event.category%20%7C%20groupby%20observer.name%20%7C%20groupby%20source.ip%20%7C%20groupby%20destination.ip%20%7C%20groupby%20destination.port&t=${START_OLDEST_SLASH}%2000%3A00%3A00%20AM%20-%20${END_NEWEST_SLASH}%2000%3A00%3A00%20AM&z=UTC
or you can manually set your Time Range to be (in UTC):
From: $START_OLDEST To: $END_NEWEST
Please note that it may take 30 seconds or more for events to appear in Security Onion Console.
EOF
status "Import complete!"
status
status "Use the following hyperlink to view the imported data. Triple-click to quickly highlight the entire hyperlink and then copy it into a browser:"
status "$URL"
status
status "or, manually set the Time Range to be (in UTC):"
status "From: $START_OLDEST To: $END_NEWEST"
status
status "Note: It can take 30 seconds or more for events to appear in Security Onion Console."
RESULT=0
else
START_OLDEST=
END_NEWEST=
URL=
RESULT=1
fi
if [[ $json -eq 1 ]]; then
jq -n \
--arg success_count "$VALID_PCAPS_COUNT" \
--arg fail_count "$INVALID_PCAPS_COUNT" \
--arg skipped_count "$SKIPPED_PCAPS_COUNT" \
--arg begin_date "$START_OLDEST" \
--arg end_date "$END_NEWEST" \
--arg url "$URL" \
--arg hashes "$HASHES" \
'''{
success_count: $success_count,
fail_count: $fail_count,
skipped_count: $skipped_count,
begin_date: $begin_date,
end_date: $end_date,
url: $url,
hash: ($hashes / " ")
}'''
fi
exit $RESULT

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -13,7 +13,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -13,7 +13,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

@@ -12,7 +12,7 @@ actions:
options:
delete_aliases: False
timeout_override:
continue_if_exception: False
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern

View File

Before

Width:  |  Height:  |  Size: 269 KiB

After

Width:  |  Height:  |  Size: 269 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 319 KiB

After

Width:  |  Height:  |  Size: 319 KiB

View File

@@ -1,7 +1,7 @@
include:
- workstation.xwindows
- desktop.xwindows
{# If the master is 'salt' then the minion hasn't been configured and isn't connected to the grid. #}
{# We need this since the trusted-ca state uses mine data. #}
{% if grains.master != 'salt' %}
- workstation.trusted-ca
- desktop.trusted-ca
{% endif %}

310
salt/desktop/packages.sls Normal file
View File

@@ -0,0 +1,310 @@
{% from 'vars/globals.map.jinja' import GLOBALS %}
{# we only want this state to run it is CentOS #}
{% if GLOBALS.os == 'Rocky' %}
desktop_packages:
pkg.installed:
- pkgs:
- NetworkManager
- NetworkManager-adsl
- NetworkManager-bluetooth
- NetworkManager-l2tp-gnome
- NetworkManager-libreswan-gnome
- NetworkManager-openconnect-gnome
- NetworkManager-openvpn-gnome
- NetworkManager-ppp
- NetworkManager-pptp-gnome
- NetworkManager-team
- NetworkManager-tui
- NetworkManager-wifi
- NetworkManager-wwan
- PackageKit-gstreamer-plugin
- aajohan-comfortaa-fonts
- abattis-cantarell-fonts
- acl
- alsa-ucm
- alsa-utils
- anaconda
- anaconda-install-env-deps
- anaconda-live
- at
- attr
- audit
- authselect
- basesystem
- bash
- bash-completion
- bc
- blktrace
- bluez
- bolt
- bpftool
- bzip2
- chkconfig
- chromium
- chrony
- cinnamon
- cinnamon-control-center
- cinnamon-screensaver
- cockpit
- coreutils
- cpio
- cronie
- crontabs
- crypto-policies
- crypto-policies-scripts
- cryptsetup
- curl
- cyrus-sasl-plain
- dbus
- dejavu-sans-fonts
- dejavu-sans-mono-fonts
- dejavu-serif-fonts
- dnf
- dnf-plugins-core
- dos2unix
- dosfstools
- dracut-config-rescue
- dracut-live
- dsniff
- e2fsprogs
- ed
- efi-filesystem
- efibootmgr
- efivar-libs
- eom
- ethtool
- f36-backgrounds-extras-gnome
- f36-backgrounds-gnome
- f37-backgrounds-extras-gnome
- f37-backgrounds-gnome
- file
- filesystem
- firewall-config
- firewalld
- fprintd-pam
- git
- glibc
- glibc-all-langpacks
- gnome-calculator
- gnome-disk-utility
- gnome-screenshot
- gnome-system-monitor
- gnome-terminal
- gnupg2
- google-noto-emoji-color-fonts
- google-noto-sans-cjk-ttc-fonts
- google-noto-sans-gurmukhi-fonts
- google-noto-sans-sinhala-vf-fonts
- google-noto-serif-cjk-ttc-fonts
- grub2-common
- grub2-pc-modules
- grub2-tools
- grub2-tools-efi
- grub2-tools-extra
- grub2-tools-minimal
- grubby
- gstreamer1-plugins-bad-free
- gstreamer1-plugins-good
- gstreamer1-plugins-ugly-free
- gvfs-gphoto2
- gvfs-mtp
- gvfs-smb
- hostname
- hyperv-daemons
- ibus-anthy
- ibus-hangul
- ibus-libpinyin
- ibus-libzhuyin
- ibus-m17n
- ibus-typing-booster
- imsettings-systemd
- initial-setup-gui
- initscripts
- initscripts-rename-device
- iproute
- iproute-tc
- iprutils
- iputils
- irqbalance
- iwl100-firmware
- iwl1000-firmware
- iwl105-firmware
- iwl135-firmware
- iwl2000-firmware
- iwl2030-firmware
- iwl3160-firmware
- iwl5000-firmware
- iwl5150-firmware
- iwl6000g2a-firmware
- iwl6000g2b-firmware
- iwl6050-firmware
- iwl7260-firmware
- jomolhari-fonts
- julietaula-montserrat-fonts
- kbd
- kernel
- kernel-modules
- kernel-modules-extra
- kernel-tools
- kexec-tools
- khmer-os-system-fonts
- kmod-kvdo
- kpatch
- kpatch-dnf
- ledmon
- less
- liberation-mono-fonts
- liberation-sans-fonts
- liberation-serif-fonts
- libertas-sd8787-firmware
- libstoragemgmt
- libsysfs
- lightdm
- linux-firmware
- logrotate
- lohit-assamese-fonts
- lohit-bengali-fonts
- lohit-devanagari-fonts
- lohit-gujarati-fonts
- lohit-kannada-fonts
- lohit-odia-fonts
- lohit-tamil-fonts
- lohit-telugu-fonts
- lshw
- lsof
- lsscsi
- lvm2
- mailcap
- man-db
- man-pages
- mcelog
- mdadm
- memtest86+
- metacity
- microcode_ctl
- mlocate
- mtr
- nano
- ncurses
- nemo-fileroller
- nemo-image-converter
- nemo-preview
- net-tools
- netronome-firmware
- ngrep
- nm-connection-editor
- nmap-ncat
- nvme-cli
- open-vm-tools-desktop
- openssh-clients
- openssh-server
- p11-kit
- paktype-naskh-basic-fonts
- parole
- parted
- passwd
- pciutils
- pinfo
- pipewire
- pipewire-alsa
- pipewire-gstreamer
- pipewire-jack-audio-connection-kit
- pipewire-pulseaudio
- pipewire-utils
- plymouth
- policycoreutils
- powerline
- ppp
- prefixdevname
- procps-ng
- psacct
- pt-sans-fonts
- python3-libselinux
- python3-scapy
- qemu-guest-agent
- quota
- realmd
- redshift-gtk
- rocky-backgrounds
- rocky-release
- rootfiles
- rpm
- rpm-plugin-audit
- rsync
- rsyslog
- rsyslog-gnutls
- rsyslog-gssapi
- rsyslog-relp
- salt-minion
- sane-backends-drivers-scanners
- selinux-policy-targeted
- setroubleshoot
- setup
- sg3_utils
- sg3_utils-libs
- shadow-utils
- sil-abyssinica-fonts
- sil-nuosu-fonts
- sil-padauk-fonts
- slick-greeter
- slick-greeter-cinnamon
- smartmontools
- smc-meera-fonts
- sos
- spice-vdagent
- ssldump
- sssd
- sssd-common
- sssd-kcm
- stix-fonts
- strace
- sudo
- symlinks
- syslinux
- systemd
- systemd-udev
- tar
- tcpdump
- tcpflow
- teamd
- thai-scalable-waree-fonts
- time
- tmux
- tmux-powerline
- transmission
- tree
- tuned
- unzip
- usb_modeswitch
- usbutils
- util-linux
- util-linux-user
- vdo
- vim-enhanced
- vim-minimal
- vim-powerline
- virt-what
- wget
- whois
- which
- wireplumber
- wireshark
- words
- xdg-user-dirs-gtk
- xed
- xfsdump
- xfsprogs
- xreader
- yum
- zip
{% else %}
desktop_packages_os_fail:
test.fail_without_changes:
- comment: 'SO desktop can only be installed on Rocky'
{% endif %}

View File

@@ -10,8 +10,8 @@ remove_graphical_target:
- force: True
{% else %}
workstation_trusted-ca_os_fail:
desktop_trusted-ca_os_fail:
test.fail_without_changes:
- comment: 'SO Analyst Workstation can only be installed on CentOS'
- comment: 'SO Desktop can only be installed on Rocky'
{% endif %}

View File

@@ -29,8 +29,8 @@ update_ca_certs:
{% else %}
workstation_trusted-ca_os_fail:
desktop_trusted-ca_os_fail:
test.fail_without_changes:
- comment: 'SO Analyst Workstation can only be installed on CentOS'
- comment: 'SO Desktop can only be installed on CentOS'
{% endif %}

View File

@@ -4,7 +4,7 @@
{% if GLOBALS.os == 'Rocky' %}
include:
- workstation.packages
- desktop.packages
graphical_target:
file.symlink:
@@ -12,13 +12,12 @@ graphical_target:
- target: /lib/systemd/system/graphical.target
- force: True
- require:
- pkg: X Window System
- pkg: graphical_extras
- desktop_packages
{% else %}
workstation_xwindows_os_fail:
desktop_xwindows_os_fail:
test.fail_without_changes:
- comment: 'SO Analyst Workstation can only be installed on CentOS'
- comment: 'SO Desktop can only be installed on Rocky'
{% endif %}

View File

@@ -178,6 +178,11 @@ docker:
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-elastic-agent':
final_octet: 46
custom_bind_mounts: []
extra_hosts: []
extra_env: []
'so-telegraf':
final_octet: 99
custom_bind_mounts: []

View File

@@ -26,10 +26,10 @@ dockerheldpackages:
dockerheldpackages:
pkg.installed:
- pkgs:
- containerd.io: 1.6.20-3.1.el9
- docker-ce: 23.0.5-1.el9
- docker-ce-cli: 23.0.5-1.el9
- docker-ce-rootless-extras: 23.0.5-1.el9
- containerd.io: 1.6.21-3.1.el9
- docker-ce: 24.0.2-1.el9
- docker-ce-cli: 24.0.2-1.el9
- docker-ce-rootless-extras: 24.0.2-1.el9
- hold: True
- update_holds: True
{% endif %}

View File

@@ -13,7 +13,6 @@ elastalert:
es_port: 9200
es_conn_timeout: 55
max_query_size: 5000
eql: true
use_ssl: true
verify_certs: false
writeback_index: elastalert

View File

@@ -30,8 +30,8 @@ class PlaybookESAlerter(Alerter):
if 'es_username' in self.rule and 'es_password' in self.rule:
creds = (self.rule['es_username'], self.rule['es_password'])
payload = {"rule": { "name": self.rule['play_title'],"case_template": self.rule['play_id'],"uuid": self.rule['play_id'],"category": self.rule['rule.category']},"event":{ "severity": self.rule['event.severity'],"module": self.rule['event.module'],"dataset": self.rule['event.dataset'],"severity_label": self.rule['sigma_level']},"kibana_pivot": self.rule['kibana_pivot'],"soc_pivot": self.rule['soc_pivot'],"play_url": self.rule['play_url'],"sigma_level": self.rule['sigma_level'],"event_data": match, "@timestamp": timestamp}
url = f"{self.rule['es_hosts']}/so-playbook-alerts-{today}/_doc/"
payload = {"tags":"alert","rule": { "name": self.rule['play_title'],"case_template": self.rule['play_id'],"uuid": self.rule['play_id'],"category": self.rule['rule.category']},"event":{ "severity": self.rule['event.severity'],"module": self.rule['event.module'],"dataset": self.rule['event.dataset'],"severity_label": self.rule['sigma_level']},"kibana_pivot": self.rule['kibana_pivot'],"soc_pivot": self.rule['soc_pivot'],"play_url": self.rule['play_url'],"sigma_level": self.rule['sigma_level'],"event_data": match, "@timestamp": timestamp}
url = f"https://{self.rule['es_host']}:{self.rule['es_port']}/logs-playbook.alerts-so/_doc/"
requests.post(url, data=json.dumps(payload), headers=headers, verify=False, auth=creds)
def get_info(self):

View File

@@ -8,7 +8,7 @@
{% set elastalert_pillar = salt['pillar.get']('elastalert:config', {}) %}
{% do ELASTALERTDEFAULTS.elastalert.config.update({'es_hosts': 'https://' + GLOBALS.manager + ':' + ELASTALERTDEFAULTS.elastalert.config.es_port|string}) %}
{% do ELASTALERTDEFAULTS.elastalert.config.update({'es_host': GLOBALS.manager}) %}
{% do ELASTALERTDEFAULTS.elastalert.config.update({'es_username': pillar.elasticsearch.auth.users.so_elastic_user.user}) %}
{% do ELASTALERTDEFAULTS.elastalert.config.update({'es_password': pillar.elasticsearch.auth.users.so_elastic_user.pass}) %}

View File

@@ -0,0 +1,47 @@
# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one
# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at
# https://securityonion.net/license; you may not use this file except in compliance with the
# Elastic License 2.0.
{% from 'allowed_states.map.jinja' import allowed_states %}
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% if sls.split('.')[0] in allowed_states %}
# Add EA Group
elasticagentgroup:
group.present:
- name: elastic-agent
- gid: 949
# Add EA user
elastic-agent:
user.present:
- uid: 949
- gid: 949
- home: /opt/so/conf/elastic-agent
- createhome: False
elasticagentconfdir:
file.directory:
- name: /opt/so/conf/elastic-agent
- user: 949
- group: 939
- makedirs: True
# Create config
create-elastic-agent-config:
file.managed:
- name: /opt/so/conf/elastic-agent/elastic-agent.yml
- source: salt://elasticagent/files/elastic-agent.yml.jinja
- user: 949
- group: 939
- template: jinja
{% else %}
{{sls}}_state_not_allowed:
test.fail_without_changes:
- name: {{sls}}_state_not_allowed
{% endif %}

View File

@@ -0,0 +1,2 @@
elasticagent:
enabled: False

View File

@@ -0,0 +1,27 @@
# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one
# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at
# https://securityonion.net/license; you may not use this file except in compliance with the
# Elastic License 2.0.
{% from 'allowed_states.map.jinja' import allowed_states %}
{% if sls.split('.')[0] in allowed_states %}
include:
- elasticagent.sostatus
so-elastic-agent:
docker_container.absent:
- force: True
so-elastic-agent_so-status.disabled:
file.comment:
- name: /opt/so/conf/so-status/so-status.conf
- regex: ^so-elastic-agent$
{% else %}
{{sls}}_state_not_allowed:
test.fail_without_changes:
- name: {{sls}}_state_not_allowed
{% endif %}

View File

@@ -0,0 +1,62 @@
# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one
# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at
# https://securityonion.net/license; you may not use this file except in compliance with the
# Elastic License 2.0.
{% from 'allowed_states.map.jinja' import allowed_states %}
{% if sls.split('.')[0] in allowed_states %}
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% from 'docker/docker.map.jinja' import DOCKER %}
include:
- elasticagent.config
- elasticagent.sostatus
so-elastic-agent:
docker_container.running:
- image: {{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elastic-agent:{{ GLOBALS.so_version }}
- name: so-elastic-agent
- hostname: {{ GLOBALS.hostname }}
- detach: True
- user: 949
- networks:
- sobridge:
- ipv4_address: {{ DOCKER.containers['so-elastic-agent'].ip }}
- extra_hosts:
- {{ GLOBALS.manager }}:{{ GLOBALS.manager_ip }}
- {{ GLOBALS.hostname }}:{{ GLOBALS.node_ip }}
{% if DOCKER.containers['so-elastic-agent'].extra_hosts %}
{% for XTRAHOST in DOCKER.containers['so-elastic-agent'].extra_hosts %}
- {{ XTRAHOST }}
{% endfor %}
{% endif %}
- binds:
- /opt/so/conf/elastic-agent/elastic-agent.yml:/usr/share/elastic-agent/elastic-agent.yml:ro
- /nsm:/nsm:ro
{% if DOCKER.containers['so-elastic-agent'].custom_bind_mounts %}
{% for BIND in DOCKER.containers['so-elastic-agent'].custom_bind_mounts %}
- {{ BIND }}
{% endfor %}
{% endif %}
{% if DOCKER.containers['so-elastic-agent'].extra_env %}
- environment:
{% for XTRAENV in DOCKER.containers['so-elastic-agent'].extra_env %}
- {{ XTRAENV }}
{% endfor %}
{% endif %}
delete_so-elastic-agent_so-status.disabled:
file.uncomment:
- name: /opt/so/conf/so-status/so-status.conf
- regex: ^so-elastic-agent$
{% else %}
{{sls}}_state_not_allowed:
test.fail_without_changes:
- name: {{sls}}_state_not_allowed
{% endif %}

View File

@@ -0,0 +1,119 @@
{% from 'vars/globals.map.jinja' import GLOBALS %}
{%- set ES_USER = salt['pillar.get']('elasticsearch:auth:users:so_elastic_user:user', '') %}
{%- set ES_PASS = salt['pillar.get']('elasticsearch:auth:users:so_elastic_user:pass', '') %}
id: aea1ba80-1065-11ee-a369-97538913b6a9
revision: 2
outputs:
default:
type: elasticsearch
hosts:
- 'https://{{ GLOBALS.hostname }}:9200'
username: '{{ ES_USER }}'
password: '{{ ES_PASS }}'
ssl.verification_mode: none
output_permissions: {}
agent:
download:
sourceURI: 'http://{{ GLOBALS.manager }}:8443/artifacts/'
monitoring:
enabled: false
logs: false
metrics: false
features: {}
inputs:
- id: logfile-logs-80ffa884-2cfc-459a-964a-34df25714d85
name: suricata-logs
revision: 1
type: logfile
use_output: default
meta:
package:
name: log
version:
data_stream:
namespace: so
package_policy_id: 80ffa884-2cfc-459a-964a-34df25714d85
streams:
- id: logfile-log.log-80ffa884-2cfc-459a-964a-34df25714d85
data_stream:
dataset: suricata
paths:
- /nsm/suricata/eve*.json
processors:
- add_fields:
target: event
fields:
category: network
module: suricata
pipeline: suricata.common
- id: logfile-logs-90103ac4-f6bd-4a4a-b596-952c332390fc
name: strelka-logs
revision: 1
type: logfile
use_output: default
meta:
package:
name: log
version:
data_stream:
namespace: so
package_policy_id: 90103ac4-f6bd-4a4a-b596-952c332390fc
streams:
- id: logfile-log.log-90103ac4-f6bd-4a4a-b596-952c332390fc
data_stream:
dataset: strelka
paths:
- /nsm/strelka/log/strelka.log
processors:
- add_fields:
target: event
fields:
category: file
module: strelka
pipeline: strelka.file
- id: logfile-logs-6197fe84-9b58-4d9b-8464-3d517f28808d
name: zeek-logs
revision: 1
type: logfile
use_output: default
meta:
package:
name: log
version:
data_stream:
namespace: so
package_policy_id: 6197fe84-9b58-4d9b-8464-3d517f28808d
streams:
- id: logfile-log.log-6197fe84-9b58-4d9b-8464-3d517f28808d
data_stream:
dataset: zeek
paths:
- /nsm/zeek/logs/current/*.log
processors:
- dissect:
tokenizer: '/nsm/zeek/logs/current/%{pipeline}.log'
field: log.file.path
trim_chars: .log
target_prefix: ''
- script:
lang: javascript
source: |
function process(event) {
var pl = event.Get("pipeline");
event.Put("@metadata.pipeline", "zeek." + pl);
}
- add_fields:
target: event
fields:
category: network
module: zeek
- add_tags:
tags: ics
when:
regexp:
pipeline: >-
^bacnet*|^bsap*|^cip*|^cotp*|^dnp3*|^ecat*|^enip*|^modbus*|^opcua*|^profinet*|^s7comm*
exclude_files:
- >-
broker|capture_loss|cluster|ecat_arp_info|known_hosts|known_services|loaded_scripts|ntp|ocsp|packet_filter|reporter|stats|stderr|stdout.log$

View File

@@ -0,0 +1,13 @@
# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one
# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at
# https://securityonion.net/license; you may not use this file except in compliance with the
# Elastic License 2.0.
{% from 'elasticagent/map.jinja' import ELASTICAGENTMERGED %}
include:
{% if ELASTICAGENTMERGED.enabled %}
- elasticagent.enabled
{% else %}
- elasticagent.disabled
{% endif %}

View File

@@ -0,0 +1,7 @@
{# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one
or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at
https://securityonion.net/license; you may not use this file except in compliance with the
Elastic License 2.0. #}
{% import_yaml 'elasticagent/defaults.yaml' as ELASTICAGENTDEFAULTS %}
{% set ELASTICAGENTMERGED = salt['pillar.get']('elasticagent', ELASTICAGENTDEFAULTS.elasticagent, merge=True) %}

View File

@@ -0,0 +1,21 @@
# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one
# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at
# https://securityonion.net/license; you may not use this file except in compliance with the
# Elastic License 2.0.
{% from 'allowed_states.map.jinja' import allowed_states %}
{% if sls.split('.')[0] in allowed_states %}
append_so-elastic-agent_so-status.conf:
file.append:
- name: /opt/so/conf/so-status/so-status.conf
- text: so-elastic-agent
- unless: grep -q so-elastic-agent$ /opt/so/conf/so-status/so-status.conf
{% else %}
{{sls}}_state_not_allowed:
test.fail_without_changes:
- name: {{sls}}_state_not_allowed
{% endif %}

View File

@@ -0,0 +1,10 @@
#!/bin/bash
# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one
# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at
# https://securityonion.net/license; you may not use this file except in compliance with the
# Elastic License 2.0.
. /usr/sbin/so-common
/usr/sbin/so-restart elastic-agent $1

View File

@@ -9,4 +9,4 @@
. /usr/sbin/so-common
docker exec -it so-redis redis-cli llen logstash:unparsed
/usr/sbin/so-start elastic-agent $1

View File

@@ -0,0 +1,12 @@
#!/bin/bash
# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one
# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at
# https://securityonion.net/license; you may not use this file except in compliance with the
# Elastic License 2.0.
. /usr/sbin/so-common
/usr/sbin/so-stop elastic-agent $1

View File

@@ -8,13 +8,13 @@
{% if sls.split('.')[0] in allowed_states %}
# Add EA Group
elasticsagentgroup:
elasticfleetgroup:
group.present:
- name: elastic-agent
- name: elastic-fleet
- gid: 947
# Add EA user
elastic-agent:
elastic-fleet:
user.present:
- uid: 947
- gid: 947

View File

@@ -2,22 +2,33 @@ elasticfleet:
enabled: False
config:
server:
custom_fqdn: ''
enable_auto_configuration: True
endpoints_enrollment: ''
es_token: ''
grid_enrollment: ''
url: ''
logging:
zeek:
excluded:
- broker
- capture_loss
- cluster
- ecat_arp_info
- known_hosts
- known_services
- loaded_scripts
- ntp
- ocsp
- packet_filter
- reporter
- stats
- stderr
- stdout
packages:
- aws
- azure
- cloudflare
- fim
- github
- google_workspace
- 1password

View File

@@ -7,6 +7,8 @@
{% if sls.split('.')[0] in allowed_states %}
{% from 'vars/globals.map.jinja' import GLOBALS %}
{% from 'docker/docker.map.jinja' import DOCKER %}
{% from 'elasticfleet/map.jinja' import ELASTICFLEETMERGED %}
{# This value is generated during node install and stored in minion pillar #}
{% set SERVICETOKEN = salt['pillar.get']('elasticfleet:config:server:es_token','') %}
@@ -14,6 +16,16 @@ include:
- elasticfleet.config
- elasticfleet.sostatus
{% if ELASTICFLEETMERGED.config.server.enable_auto_configuration and grains.role not in ['so-import', 'so-eval'] %}
so-elastic-fleet-auto-configure-logstash-outputs:
cmd.run:
- name: /usr/sbin/so-elastic-fleet-outputs-update
#so-elastic-fleet-auto-configure-server-urls:
# cmd.run:
# - name: /usr/sbin/so-elastic-fleet-urls-update
{% endif %}
{% if SERVICETOKEN != '' %}
so-elastic-fleet:
docker_container.running:
@@ -52,8 +64,8 @@ so-elastic-fleet:
- FLEET_SERVER_SERVICE_TOKEN={{ SERVICETOKEN }}
- FLEET_SERVER_POLICY_ID=FleetServer_{{ GLOBALS.hostname }}
- FLEET_SERVER_ELASTICSEARCH_CA=/etc/pki/tls/certs/intca.crt
- FLEET_SERVER_CERT=/etc/pki/elasticfleet.crt
- FLEET_SERVER_CERT_KEY=/etc/pki/elasticfleet.key
- FLEET_SERVER_CERT=/etc/pki/elasticfleet-server.crt
- FLEET_SERVER_CERT_KEY=/etc/pki/elasticfleet-server.key
- FLEET_CA=/etc/pki/tls/certs/intca.crt
{% if DOCKER.containers['so-elastic-fleet'].extra_env %}
{% for XTRAENV in DOCKER.containers['so-elastic-fleet'].extra_env %}

View File

@@ -8,7 +8,7 @@
"name": "import-zeek-logs",
"namespace": "so",
"description": "Zeek Import logs",
"policy_id": "so-grid-nodes",
"policy_id": "so-grid-nodes_general",
"inputs": {
"logs-logfile": {
"enabled": true,

View File

@@ -9,7 +9,7 @@
"name": "zeek-logs",
"namespace": "so",
"description": "Zeek logs",
"policy_id": "so-grid-nodes",
"policy_id": "so-grid-nodes_general",
"inputs": {
"logs-logfile": {
"enabled": true,

View File

@@ -1,29 +0,0 @@
{
"package": {
"name": "log",
"version": ""
},
"name": "import-evtx-logs",
"namespace": "so",
"description": "Import Windows EVTX logs",
"policy_id": "so-grid-nodes",
"inputs": {
"logs-logfile": {
"enabled": true,
"streams": {
"log.log": {
"enabled": true,
"vars": {
"paths": [
"/nsm/import/*/evtx/data.json"
],
"data_stream.dataset": "import",
"tags": [],
"processors": "- dissect:\n tokenizer: \"/nsm/import/%{import.id}/evtx/%{import.file}\"\n field: \"log.file.path\"\n target_prefix: \"\"\n- decode_json_fields:\n fields: [\"message\"]\n target: \"\"\n- add_fields:\n target: event\n fields:\n module: windows_eventlog\n imported: true",
"custom": "pipeline: import.wel"
}
}
}
}
}
}

View File

@@ -0,0 +1,106 @@
{
"package": {
"name": "elasticsearch",
"version": ""
},
"name": "elasticsearch-logs",
"namespace": "default",
"description": "Elasticsearch Logs",
"policy_id": "so-grid-nodes_general",
"inputs": {
"elasticsearch-logfile": {
"enabled": true,
"streams": {
"elasticsearch.audit": {
"enabled": false,
"vars": {
"paths": [
"/var/log/elasticsearch/*_audit.json"
]
}
},
"elasticsearch.deprecation": {
"enabled": false,
"vars": {
"paths": [
"/var/log/elasticsearch/*_deprecation.json"
]
}
},
"elasticsearch.gc": {
"enabled": false,
"vars": {
"paths": [
"/var/log/elasticsearch/gc.log.[0-9]*",
"/var/log/elasticsearch/gc.log"
]
}
},
"elasticsearch.server": {
"enabled": true,
"vars": {
"paths": [
"/opt/so/log/elasticsearch/*.log"
]
}
},
"elasticsearch.slowlog": {
"enabled": false,
"vars": {
"paths": [
"/var/log/elasticsearch/*_index_search_slowlog.json",
"/var/log/elasticsearch/*_index_indexing_slowlog.json"
]
}
}
}
},
"elasticsearch-elasticsearch/metrics": {
"enabled": false,
"vars": {
"hosts": [
"http://localhost:9200"
],
"scope": "node"
},
"streams": {
"elasticsearch.stack_monitoring.ccr": {
"enabled": false
},
"elasticsearch.stack_monitoring.cluster_stats": {
"enabled": false
},
"elasticsearch.stack_monitoring.enrich": {
"enabled": false
},
"elasticsearch.stack_monitoring.index": {
"enabled": false
},
"elasticsearch.stack_monitoring.index_recovery": {
"enabled": false,
"vars": {
"active.only": true
}
},
"elasticsearch.stack_monitoring.index_summary": {
"enabled": false
},
"elasticsearch.stack_monitoring.ml_job": {
"enabled": false
},
"elasticsearch.stack_monitoring.node": {
"enabled": false
},
"elasticsearch.stack_monitoring.node_stats": {
"enabled": false
},
"elasticsearch.stack_monitoring.pending_tasks": {
"enabled": false
},
"elasticsearch.stack_monitoring.shard": {
"enabled": false
}
}
}
}
}

View File

@@ -6,7 +6,7 @@
"name": "idh-logs",
"namespace": "so",
"description": "IDH integration",
"policy_id": "so-grid-nodes",
"policy_id": "so-grid-nodes_general",
"inputs": {
"logs-logfile": {
"enabled": true,

View File

@@ -0,0 +1,32 @@
{
"package": {
"name": "log",
"version": ""
},
"name": "import-evtx-logs",
"namespace": "so",
"description": "Import Windows EVTX logs",
"policy_id": "so-grid-nodes_general",
"vars": {},
"inputs": {
"logs-logfile": {
"enabled": true,
"streams": {
"log.log": {
"enabled": true,
"vars": {
"paths": [
"/nsm/import/*/evtx/*.json"
],
"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 namespace: default\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- 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- 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- 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- 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",
"tags": [
"import"
]
}
}
}
}
}
}

View File

@@ -6,7 +6,7 @@
"name": "import-suricata-logs",
"namespace": "so",
"description": "Import Suricata logs",
"policy_id": "so-grid-nodes",
"policy_id": "so-grid-nodes_general",
"inputs": {
"logs-logfile": {
"enabled": true,

View File

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

View File

@@ -0,0 +1,20 @@
{
"package": {
"name": "osquery_manager",
"version": ""
},
"name": "osquery-grid-nodes",
"namespace": "default",
"policy_id": "so-grid-nodes_general",
"inputs": {
"osquery_manager-osquery": {
"enabled": true,
"streams": {
"osquery_manager.result": {
"enabled": true,
"vars": {}
}
}
}
}
}

View File

@@ -0,0 +1,76 @@
{
"package": {
"name": "redis",
"version": ""
},
"name": "redis-logs",
"namespace": "default",
"description": "Redis logs",
"policy_id": "so-grid-nodes_general",
"inputs": {
"redis-logfile": {
"enabled": true,
"streams": {
"redis.log": {
"enabled": true,
"vars": {
"paths": [
"/opt/so/log/redis/redis.log"
],
"tags": [
"redis-log"
],
"preserve_original_event": false
}
}
}
},
"redis-redis": {
"enabled": false,
"streams": {
"redis.slowlog": {
"enabled": false,
"vars": {
"hosts": [
"127.0.0.1:6379"
],
"password": ""
}
}
}
},
"redis-redis/metrics": {
"enabled": false,
"vars": {
"hosts": [
"127.0.0.1:6379"
],
"idle_timeout": "20s",
"maxconn": 10,
"network": "tcp",
"password": ""
},
"streams": {
"redis.info": {
"enabled": false,
"vars": {
"period": "10s"
}
},
"redis.key": {
"enabled": false,
"vars": {
"key.patterns": "- limit: 20\n pattern: *\n",
"period": "10s"
}
},
"redis.keyspace": {
"enabled": false,
"vars": {
"period": "10s"
}
}
}
}
}
}

View File

@@ -0,0 +1,29 @@
{
"package": {
"name": "log",
"version": ""
},
"name": "soc-auth-sync-logs",
"namespace": "so",
"description": "Security Onion - Elastic Auth Sync - Logs",
"policy_id": "so-grid-nodes_general",
"inputs": {
"logs-logfile": {
"enabled": true,
"streams": {
"log.log": {
"enabled": true,
"vars": {
"paths": [
"/opt/so/log/soc/sync.log"
],
"data_stream.dataset": "soc",
"tags": ["so-soc"],
"processors": "- dissect:\n tokenizer: \"%{event.action}\"\n field: \"message\"\n target_prefix: \"\"\n- add_fields:\n target: event\n fields:\n category: host\n module: soc\n dataset_temp: auth_sync",
"custom": "pipeline: common"
}
}
}
}
}
}

View File

@@ -0,0 +1,29 @@
{
"package": {
"name": "log",
"version": ""
},
"name": "soc-salt-relay-logs",
"namespace": "so",
"description": "Security Onion - Salt Relay - Logs",
"policy_id": "so-grid-nodes_general",
"inputs": {
"logs-logfile": {
"enabled": true,
"streams": {
"log.log": {
"enabled": true,
"vars": {
"paths": [
"/opt/so/log/soc/salt-relay.log"
],
"data_stream.dataset": "soc",
"tags": ["so-soc"],
"processors": "- dissect:\n tokenizer: \"%{soc.ts} | %{event.action}\"\n field: \"message\"\n target_prefix: \"\"\n- add_fields:\n target: event\n fields:\n category: host\n module: soc\n dataset_temp: salt_relay",
"custom": "pipeline: common"
}
}
}
}
}
}

View File

@@ -0,0 +1,29 @@
{
"package": {
"name": "log",
"version": ""
},
"name": "soc-sensoroni-logs",
"namespace": "so",
"description": "Security Onion - Sensoroni - Logs",
"policy_id": "so-grid-nodes_general",
"inputs": {
"logs-logfile": {
"enabled": true,
"streams": {
"log.log": {
"enabled": true,
"vars": {
"paths": [
"/opt/so/log/sensoroni/sensoroni.log"
],
"data_stream.dataset": "soc",
"tags": [],
"processors": "- decode_json_fields:\n fields: [\"message\"]\n target: \"sensoroni\"\n process_array: true\n max_depth: 2\n add_error_key: true \n- add_fields:\n target: event\n fields:\n category: host\n module: soc\n dataset_temp: sensoroni\n- rename:\n fields:\n - from: \"sensoroni.fields.sourceIp\"\n to: \"source.ip\"\n - from: \"sensoroni.fields.status\"\n to: \"http.response.status_code\"\n - from: \"sensoroni.fields.method\"\n to: \"http.request.method\"\n - from: \"sensoroni.fields.path\"\n to: \"url.path\"\n - from: \"sensoroni.message\"\n to: \"event.action\"\n - from: \"sensoroni.level\"\n to: \"log.level\"\n ignore_missing: true",
"custom": "pipeline: common"
}
}
}
}
}
}

View File

@@ -0,0 +1,29 @@
{
"package": {
"name": "log",
"version": ""
},
"name": "soc-server-logs",
"namespace": "so",
"description": "Security Onion Console Logs",
"policy_id": "so-grid-nodes_general",
"inputs": {
"logs-logfile": {
"enabled": true,
"streams": {
"log.log": {
"enabled": true,
"vars": {
"paths": [
"/opt/so/log/soc/sensoroni-server.log"
],
"data_stream.dataset": "soc",
"tags": ["so-soc"],
"processors": "- decode_json_fields:\n fields: [\"message\"]\n target: \"soc\"\n process_array: true\n max_depth: 2\n add_error_key: true \n- add_fields:\n target: event\n fields:\n category: host\n module: soc\n dataset_temp: server\n- rename:\n fields:\n - from: \"soc.fields.sourceIp\"\n to: \"source.ip\"\n - from: \"soc.fields.status\"\n to: \"http.response.status_code\"\n - from: \"soc.fields.method\"\n to: \"http.request.method\"\n - from: \"soc.fields.path\"\n to: \"url.path\"\n - from: \"soc.message\"\n to: \"event.action\"\n - from: \"soc.level\"\n to: \"log.level\"\n ignore_missing: true",
"custom": "pipeline: common"
}
}
}
}
}
}

View File

@@ -6,7 +6,7 @@
"name": "strelka-logs",
"namespace": "so",
"description": "Strelka logs",
"policy_id": "so-grid-nodes",
"policy_id": "so-grid-nodes_general",
"inputs": {
"logs-logfile": {
"enabled": true,

View File

@@ -6,7 +6,7 @@
"name": "suricata-logs",
"namespace": "so",
"description": "Suricata integration",
"policy_id": "so-grid-nodes",
"policy_id": "so-grid-nodes_general",
"inputs": {
"logs-logfile": {
"enabled": true,

View File

@@ -6,7 +6,7 @@
"name": "syslog-tcp-514",
"namespace": "so",
"description": "Syslog Over TCP Port 514",
"policy_id": "so-grid-nodes",
"policy_id": "so-grid-nodes_general",
"inputs": {
"tcp-tcp": {
"enabled": true,

View File

@@ -6,7 +6,7 @@
"name": "syslog-udp-514",
"namespace": "so",
"description": "Syslog over UDP Port 514",
"policy_id": "so-grid-nodes",
"policy_id": "so-grid-nodes_general",
"inputs": {
"udp-udp": {
"enabled": true,

View File

@@ -0,0 +1,40 @@
{
"policy_id": "so-grid-nodes_general",
"package": {
"name": "system",
"version": ""
},
"name": "system-grid-nodes",
"namespace": "default",
"inputs": {
"system-logfile": {
"enabled": true,
"streams": {
"system.auth": {
"enabled": true,
"vars": {
"paths": [
"/var/log/auth.log*",
"/var/log/secure*"
]
}
},
"system.syslog": {
"enabled": true,
"vars": {
"paths": [
"/var/log/messages*",
"/var/log/syslog*"
]
}
}
}
},
"system-winlog": {
"enabled": false
},
"system-system/metrics": {
"enabled": false
}
}
}

View File

@@ -6,7 +6,7 @@
"name": "elasticsearch-logs",
"namespace": "default",
"description": "Elasticsearch Logs",
"policy_id": "so-grid-nodes",
"policy_id": "so-grid-nodes_heavy",
"inputs": {
"elasticsearch-logfile": {
"enabled": true,

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