Compare commits

..

934 Commits

Author SHA1 Message Date
Mike Reeves
36207d0440 Merge pull request #2417 from Security-Onion-Solutions/patch/2.3.21
2.3.21
2020-12-21 20:02:04 -05:00
Mike Reeves
88bfe7c49c Update VERIFY_ISO.md 2020-12-21 19:52:31 -05:00
Mike Reeves
7116c2103b Update Docker Clean 2020-12-21 17:06:14 -05:00
Mike Reeves
b49355d346 Update changes.json 2020-12-21 16:54:55 -05:00
Mike Reeves
aecde2dd54 Update README.md 2020-12-21 16:54:10 -05:00
Mike Reeves
f2d8c7f10d Update VERSION 2020-12-21 16:53:30 -05:00
Mike Reeves
627d4da432 Merge pull request #2403 from Security-Onion-Solutions/fix/so-analyst-typo
fix typo in so-analyst-install warning
2020-12-21 11:48:25 -05:00
m0duspwnens
a18c89d804 fix typo in so-analyst-install warning 2020-12-21 11:42:03 -05:00
Mike Reeves
7b8f5aa8a9 Merge pull request #2402 from Security-Onion-Solutions/dev
2.3.20
2020-12-21 10:26:50 -05:00
Mike Reeves
1f9151b407 Update README.md 2020-12-21 10:21:28 -05:00
TOoSmOotH
def8dc0e1e 2.3.20 ISO sig 2020-12-21 09:58:25 -05:00
Mike Reeves
88be7bca3f Update VERIFY_ISO.md 2020-12-21 09:56:18 -05:00
Mike Reeves
a0f00e09c1 2.3.20 Readme Update 2020-12-21 09:55:23 -05:00
weslambert
def08895d5 Merge pull request #2393 from Security-Onion-Solutions/fix/strelka_filestream
Fix/strelka filestream
2020-12-18 15:48:54 -05:00
weslambert
2fee2ca143 Change identifier name to be more descriptive 2020-12-18 15:40:54 -05:00
weslambert
7453626b06 Add identifier 2020-12-18 15:39:52 -05:00
Josh Patterson
4ccb80c9c8 Merge pull request #2392 from Security-Onion-Solutions/fix/sensoroni_fw
fix duplicate state name for fw
2020-12-18 15:02:52 -05:00
m0duspwnens
ad45779978 fix duplicate state name for fw 2020-12-18 15:01:55 -05:00
Josh Patterson
83326518c4 Merge pull request #2391 from Security-Onion-Solutions/fix/sensoroni_fw
Fix/sensoroni fw
2020-12-18 14:16:33 -05:00
m0duspwnens
66f62b912e Merge remote-tracking branch 'remotes/origin/dev' into fix/sensoroni_fw 2020-12-18 14:14:55 -05:00
m0duspwnens
4bbedfa027 put portgroup name in statename 2020-12-18 14:14:45 -05:00
Josh Patterson
5275583098 Merge pull request #2388 from Security-Onion-Solutions/fix/grafana_sensor_uptime
limit sensor uptime in grafana dash to 2 decimal
2020-12-18 13:41:54 -05:00
m0duspwnens
e756bbc430 limit sensor uptime in grafana dash to 2 decimal 2020-12-18 13:40:55 -05:00
Mike Reeves
dea88e4c68 Update soup 2020-12-18 13:27:08 -05:00
Josh Patterson
dec6cdd3c5 Merge pull request #2385 from Security-Onion-Solutions/fix/sensoroni_fw
add sensoroni port to minions for manager nodes
2020-12-18 13:08:16 -05:00
m0duspwnens
dbf82a891f add sensoroni port to minions for manager nodes 2020-12-18 13:06:14 -05:00
Mike Reeves
96bd1e72a7 Update soup 2020-12-18 11:55:24 -05:00
weslambert
1a463bccaf Add cron.absent to remove old cron job if present 2020-12-18 11:25:14 -05:00
Josh Patterson
b0db910e7a Merge pull request #2384 from Security-Onion-Solutions/fix/telegraf_stenoloss
make sure timestamp on steno log line has changed so we don't snapshot the drop%
2020-12-18 11:02:29 -05:00
m0duspwnens
90dcad7e6f make sure timestamp on steno log line has changed so we dont snapshot the drop% 2020-12-18 11:00:24 -05:00
weslambert
9493aad1a5 Read from dedicated unprocessed dir 2020-12-18 10:53:17 -05:00
weslambert
bf76c1b58c Create unprocessed dir and move Zeek extracted files there 2020-12-18 10:52:14 -05:00
Mike Reeves
575098e368 Update init.sls 2020-12-17 20:23:38 -05:00
Mike Reeves
39425c1ba8 Fix extra extrahosts 2020-12-17 20:15:56 -05:00
TOoSmOotH
6448ddc31a Allow SNs to resolve the ES master 2020-12-17 20:08:21 -05:00
Josh Patterson
89a9816d50 Merge pull request #2379 from Security-Onion-Solutions/fix/telegraf-suriloss
tell dc to use 4 decimal spot for suriloss calc
2020-12-17 18:08:35 -05:00
m0duspwnens
412e8eeccb tell dc to use 4 decimal spot for suriloss calc 2020-12-17 18:05:25 -05:00
Mike Reeves
6ccbe47f10 Fix Jinja 2020-12-17 16:34:49 -05:00
Mike Reeves
6fcc11eac2 Fix setup 2020-12-17 16:31:25 -05:00
Mike Reeves
b6f2cdce8c Fix whiptail menu 2020-12-17 15:57:13 -05:00
Jason Ertel
370a2cdb81 Update change.json for 2.3.20 2020-12-17 15:49:09 -05:00
TOoSmOotH
96ebb98fc6 Change wording about true clustering again 2020-12-17 15:34:29 -05:00
TOoSmOotH
336ec18e09 Change wording about true clustering 2020-12-17 15:32:34 -05:00
TOoSmOotH
d99596ad06 Fix Docker Settings on new installs 2020-12-17 15:21:29 -05:00
William Wernert
1f523deaea [fix] Playbook setup bug fixes
* Increase timeout for port check
* Exit with non-zero code in user create script if timeout exceeded or error occurs
2020-12-17 12:23:06 -05:00
Jason Ertel
e0dc6cbb41 Update screenshots with new Grid menu change 2020-12-17 11:15:49 -05:00
Josh Brower
5719b12968 Merge pull request #2373 from Security-Onion-Solutions/bugfix/so-suricata-testrule
Fix so-suricata-testrule
2020-12-17 11:08:26 -05:00
Josh Brower
73ad89f4ba Fix so-suricata-testrule 2020-12-17 11:05:57 -05:00
Josh Patterson
011dc48d96 Merge pull request #2363 from Security-Onion-Solutions/fix/grafana-eval
Fix/grafana eval
2020-12-16 18:05:02 -05:00
m0duspwnens
027929bb6d fix eval grafana dashboard 2020-12-16 17:59:54 -05:00
TOoSmOotH
345710a48d Make sure thehive is up then soup by hitting api 2020-12-16 17:41:38 -05:00
m0duspwnens
90e499f6e9 fix eval grafana dashboard 2020-12-16 17:25:56 -05:00
TOoSmOotH
23110d3b33 Make sure thehive is up then soup 2020-12-16 17:23:51 -05:00
William Wernert
384456a991 [fix] Make repo directory during soup if it doesn't exist 2020-12-16 16:18:17 -05:00
TOoSmOotH
6e84227525 Add DB migration for thehive 2020-12-16 16:06:05 -05:00
Josh Patterson
3ff99da302 Merge pull request #2359 from Security-Onion-Solutions/fix/so-status-import-node
Fix/so status import node
2020-12-16 14:22:08 -05:00
m0duspwnens
2d497cb724 change to just Hunt 2020-12-16 14:15:57 -05:00
Mike Reeves
eecb323459 remove extra state.apply common 2020-12-16 13:12:38 -05:00
m0duspwnens
2e278586f2 disable steno in so-status for import node 2020-12-16 13:03:24 -05:00
m0duspwnens
81e2b4d572 Merge remote-tracking branch 'remotes/origin/dev' into fix/so-status-import-node 2020-12-16 12:02:39 -05:00
m0duspwnens
96b72d46be show steno,zeek,suricata as disabled in so-status on import node 2020-12-16 12:01:48 -05:00
Mike Reeves
09b5e6d227 Fix SSL issue 2020-12-16 11:57:27 -05:00
William Wernert
9c8fc5e6ed [fix] Make parent directories if needed 2020-12-16 11:16:14 -05:00
William Wernert
6ba3c16c75 [fix] Actually count containers when checking count 2020-12-16 11:10:57 -05:00
William Wernert
d670f96dc0 [fix] Exit on command failure in so-catrust 2020-12-16 11:07:00 -05:00
William Wernert
a959b4b2cd [fix] Helix sensor needs so-soc and so-elasticsearch images downloaded 2020-12-16 11:00:48 -05:00
William Wernert
142649b396 [fix] Fix comparator 2020-12-16 10:38:34 -05:00
William Wernert
e464117e8a [fix] Run so-catrust in ES state on Helix sensor install 2020-12-16 10:19:44 -05:00
William Wernert
aa0d43b1db [fix] Always define ismanager var 2020-12-16 09:55:09 -05:00
Josh Patterson
bdbb466d69 Merge pull request #2357 from Security-Onion-Solutions/fix/sensoroni_steno_pillar
Fix/sensoroni steno pillar
2020-12-16 09:40:06 -05:00
TOoSmOotH
8889c79afd Run a common state first to fix docker race condition 2020-12-16 09:39:41 -05:00
m0duspwnens
448d0e079e add whitespace removal to the front 2020-12-16 09:39:25 -05:00
m0duspwnens
f0999abd8e add missing % 2020-12-16 09:38:21 -05:00
m0duspwnens
c68b87db56 set steno running default based on sensor role or not 2020-12-16 09:33:44 -05:00
William Wernert
a1fc354a89 [fix] Correct ordering of printf lines 2020-12-16 09:32:36 -05:00
TOoSmOotH
b858136672 Add jertel complaince 2020-12-16 09:24:59 -05:00
William Wernert
af149d04a9 [fix] Only run portions of ES state, do not run container 2020-12-16 09:18:40 -05:00
William Wernert
a4897d2063 [fix] Add Elasticsearch to containers running on Helix sensor 2020-12-16 09:07:38 -05:00
TOoSmOotH
805e25f495 Fix typeo 2020-12-15 20:40:59 -05:00
TOoSmOotH
4ca4141819 Fix conditional statement 2020-12-15 19:29:35 -05:00
TOoSmOotH
f1be6cc259 Check MD5 of all components 2020-12-15 18:32:07 -05:00
TOoSmOotH
e30d7a8d8e Fix upgrade docker variable 2020-12-15 18:25:41 -05:00
TOoSmOotH
87882b4d91 Fix upgrade function 2020-12-15 18:18:26 -05:00
TOoSmOotH
082fd51b05 Remove extra variable 2020-12-15 17:07:40 -05:00
TOoSmOotH
04a26df4f7 Fix the features suffix 2020-12-15 17:05:33 -05:00
Jason Ertel
e3c8018824 Toggle strelka rules after the user is prompted it strelka should be installed to ensure strelka rules are updated later during the setup process 2020-12-15 16:44:52 -05:00
TOoSmOotH
7909834722 Clean up previous upgrade dirs in temp 2020-12-15 16:23:49 -05:00
Mike Reeves
06dd3432f8 Copy the correct files over that soup needs 2020-12-15 16:13:51 -05:00
Mike Reeves
6cab65a548 Update so-image-common 2020-12-15 16:06:21 -05:00
Jason Ertel
e58ca93896 Add logging for strelka configuration during setup 2020-12-15 15:46:59 -05:00
William Wernert
15347d1209 [fix] More condition changes for Helix 2020-12-15 15:08:33 -05:00
William Wernert
c7c3d004ca [fix] More helix -> helixsensor 2020-12-15 14:01:19 -05:00
William Wernert
1825776271 [fix] helix -> helixsensor 2020-12-15 13:58:36 -05:00
William Wernert
951556902c [fix] Accept salt key on Helix Sensor install 2020-12-15 13:41:00 -05:00
William Wernert
7ba10ee698 [fix] Add HELIXSENSOR to case for Ubuntu 2020-12-15 13:38:00 -05:00
William Wernert
343e9f8b2c [fix] Only try to stop/remove containers if at least one exists 2020-12-15 13:37:46 -05:00
William Wernert
e89c06f71b [fix] Add backslash for newline 2020-12-15 13:37:21 -05:00
William Wernert
f7d02763e8 [fix] Move FEATURESCHECK var assignment, fix indentation 2020-12-15 13:07:21 -05:00
William Wernert
f70d828aa6 [fix] Create array correctly 2020-12-15 13:04:09 -05:00
Jason Ertel
3da7a26e88 Remove jinja whitespace trimming to avoid syntax error in bash 2020-12-15 12:37:05 -05:00
Mike Reeves
922534a5da Merge pull request #2352 from Security-Onion-Solutions/soup2320
SOUP Features
2020-12-15 12:07:19 -05:00
TOoSmOotH
80a61d3316 SOUP Features 2020-12-15 12:06:30 -05:00
Mike Reeves
bf1f00d2fe Merge pull request #2348 from Security-Onion-Solutions/soup2320
SOUP Changes
2020-12-14 21:19:45 -05:00
TOoSmOotH
cbd59ed86a SOUP Changes 2020-12-14 20:46:31 -05:00
Josh Brower
efe44323cb Merge pull request #2346 from Security-Onion-Solutions/bugfix/fleet-patch
Swap localhost for 127.0.0.1
2020-12-14 15:49:58 -05:00
William Wernert
aa281f849f [feat] Add message about dropping to command line when setting up ssh key 2020-12-14 15:31:25 -05:00
William Wernert
f4c4a16f54 Merge pull request #2343 from Security-Onion-Solutions/experimental
Experimental
2020-12-14 14:27:52 -05:00
Jason Ertel
aa479b9c8e Move node address/desc into the minion pillar 2020-12-14 12:42:16 -05:00
William Wernert
3e2a9cc884 Merge branch 'dev' into experimental 2020-12-14 12:32:53 -05:00
William Wernert
a533e6fa35 [fix] Always set INSTALLUSERNAME var 2020-12-14 11:42:34 -05:00
Josh Patterson
de3f86724a Merge pull request #2335 from Security-Onion-Solutions/issue/1586
remove old firewall ports pillar file
2020-12-14 11:15:34 -05:00
m0duspwnens
4e04f31b8e remove old firewall ports pillar file https://github.com/Security-Onion-Solutions/securityonion/issues/1586 2020-12-14 10:24:49 -05:00
Doug Burks
7a314b5935 Prevent Wazuh "last -n 20" logs from going to Alerts queue #2321 2020-12-12 11:35:29 -05:00
Doug Burks
61ae187d03 revert previous commit #2321 2020-12-12 10:12:23 -05:00
Josh Brower
73d23e6d17 Revert "Initial support - Playbook Overrides"
This reverts commit 8915e49288.
2020-12-12 10:07:30 -05:00
Josh Brower
8faf80a03b Revert "Playbook db updates"
This reverts commit 35be785f7a.
2020-12-12 10:07:23 -05:00
Mike Reeves
b5ed973abd Merge pull request #2138 from OmerTirosh/OmerTirosh-fix-win.eventlog
Fix Error: SO elasticsearch ingest failed to convert 'winlog.event_data.SubjectUserName' to 'user.name'
2020-12-12 10:00:27 -05:00
Doug Burks
85aac4ad75 Prevent Wazuh "last -n 20" logs from going to Alerts queue #2321 2020-12-12 09:22:08 -05:00
Jason Ertel
fd7fe72b2a Correct default address pool base value 2020-12-11 23:29:59 -05:00
Jason Ertel
c5a3597564 Swap AWS interfaces 2020-12-11 21:57:56 -05:00
Josh Brower
66495e6bae Swap localhost for 127.0.0.1 2020-12-11 17:38:42 -05:00
Jason Ertel
42c8f1e325 Use eth0/eth1 instead of ens5/ens6 in AWS 2020-12-11 15:34:16 -05:00
Jason Ertel
bb61c1f745 Cleanup bash imports/sources, function definitions, and variables 2020-12-11 15:33:31 -05:00
Josh Patterson
e4eea6a616 Merge pull request #2320 from Security-Onion-Solutions/issue/2319
zeek file extraction can now be manipulated with zeek pillar
2020-12-11 14:38:10 -05:00
m0duspwnens
09b3a4a0dd merge pillar with the defaults https://github.com/Security-Onion-Solutions/securityonion/issues/2319 2020-12-11 14:35:06 -05:00
m0duspwnens
b8e8510dd2 merge pillar with the defaults https://github.com/Security-Onion-Solutions/securityonion/issues/2319 2020-12-11 14:26:32 -05:00
Jason Ertel
eb735c7289 Replace duplicate random generator with common function 2020-12-11 13:22:13 -05:00
Josh Patterson
2f2867804a Merge pull request #2318 from Security-Onion-Solutions/issue/1175
pillarize grafana and allow for grafana alerts to be created
2020-12-11 12:36:06 -05:00
m0duspwnens
d877fac786 add null for max graph value https://github.com/Security-Onion-Solutions/securityonion/issues/1175 2020-12-11 12:28:43 -05:00
m0duspwnens
c88a1a943d update search and sensor node dashboard panaels from guage to graph https://github.com/Security-Onion-Solutions/securityonion/issues/1175 2020-12-11 12:21:16 -05:00
m0duspwnens
e3335a3106 update managersearch dashboard panaels from guage to graph https://github.com/Security-Onion-Solutions/securityonion/issues/1175 2020-12-11 12:00:02 -05:00
m0duspwnens
0a77a28e06 guage to graph cor cpu on manager and eval https://github.com/Security-Onion-Solutions/securityonion/issues/1175 2020-12-11 11:51:42 -05:00
m0duspwnens
6eb64227ae update manager dashboard panaels from guage to graph https://github.com/Security-Onion-Solutions/securityonion/issues/1175 2020-12-11 11:44:21 -05:00
m0duspwnens
5a95181b2b update eval version 1 https://github.com/Security-Onion-Solutions/securityonion/issues/1175 2020-12-11 11:36:19 -05:00
m0duspwnens
2fc151d923 update eval dashboard panaels from guage to graph https://github.com/Security-Onion-Solutions/securityonion/issues/1175 2020-12-11 11:34:08 -05:00
William Wernert
db276d9020 [fix] Always set hostname 2020-12-11 11:02:27 -05:00
m0duspwnens
33fde42dbc dont show legend on pcap retention panel 2020-12-11 10:42:30 -05:00
m0duspwnens
e0e38ac37f update standlone dashboard panaels from guage to graph https://github.com/Security-Onion-Solutions/securityonion/issues/1175 2020-12-11 10:39:25 -05:00
William Wernert
75c5abef30 [fix] Add all selected options to install_opts 2020-12-11 10:16:00 -05:00
Jason Ertel
0915ae30e4 Add timestamps to so-yara-update output 2020-12-11 10:08:10 -05:00
Jason Ertel
14f28e38be Ensure so-yara-updata script is logging to a file during cron job execution 2020-12-11 10:04:43 -05:00
William Wernert
870cc6b79b [fix][typo] readaraay -> readarray 2020-12-11 09:39:22 -05:00
William Wernert
3c7a8fe92f [fix] Don't cd in so-variables 2020-12-11 09:39:00 -05:00
William Wernert
b6a0e692c6 [refactor] Use command -v for netplan check 2020-12-11 09:38:44 -05:00
m0duspwnens
fbcc62d5c5 Merge remote-tracking branch 'remotes/origin/dev' into issue/1175 2020-12-10 15:17:45 -05:00
m0duspwnens
733f5a5021 allowUiUpdates to dashboards to allow for alert creation on stock dashboards issue/1175 2020-12-10 15:17:22 -05:00
William Wernert
25f2075e22 [fix] Revert bad change to whiptail_basic_zeek 2020-12-10 15:01:10 -05:00
William Wernert
5c4103681c [fix] Save original argument array to use later 2020-12-10 14:45:24 -05:00
William Wernert
ab856532e6 [fix] Show airgap option on import install 2020-12-10 14:20:48 -05:00
William Wernert
58bcc79c54 [fix] Create full dir structure, rm /root/install_opt on failure 2020-12-10 14:17:47 -05:00
William Wernert
1f1cfde3ac [fix] Make directory for new setup download 2020-12-10 14:03:54 -05:00
William Wernert
bc6a0c1e6f [fix] Add missing append flags to tee 2020-12-10 13:54:41 -05:00
William Wernert
8302119756 [fix] Don't redirect entire download function to setup log 2020-12-10 13:26:19 -05:00
William Wernert
21e107f2e8 [fix] Remove sudo from version check, only remove known_hosts entry if exists 2020-12-10 13:13:45 -05:00
Mike Reeves
cd6a945a24 Merge pull request #2298 from Security-Onion-Solutions/escluster
Traditional ES Clustering Support
2020-12-10 12:07:17 -05:00
m0duspwnens
4ee944448f remove $Interval template var since alerts cant be crated when it is used https://github.com/Security-Onion-Solutions/securityonion/issues/1175 2020-12-10 12:05:57 -05:00
TOoSmOotH
42833b2086 Make non clustered node attributes 2020-12-10 11:14:32 -05:00
TOoSmOotH
d9d7f49b96 Adjust elasticsearch.yml 2020-12-10 11:09:38 -05:00
William Wernert
86313796a5 [fix] Set manager_ver in download function 2020-12-10 11:00:52 -05:00
weslambert
24fce27e62 Merge pull request #2297 from Security-Onion-Solutions/feature/idstools_arg
Add ability to supply an arg, for example overriding 15 min limit
2020-12-10 09:31:50 -05:00
Wes Lambert
45faa7fda4 Add ability to supply an arg, for example overriding 15 min limit 2020-12-10 14:30:29 +00:00
weslambert
c2cf2c4987 Merge pull request #2296 from Security-Onion-Solutions/fix/suricata_ftp_data
Add initial suricata.ftp_data pipeline
2020-12-10 09:17:01 -05:00
TOoSmOotH
379f1d98d8 fix addtotab 2020-12-10 09:15:17 -05:00
Wes Lambert
f689722559 Add initial suricata.ftp_data pipeline 2020-12-10 14:14:50 +00:00
weslambert
d09daef094 Merge pull request #2288 from Security-Onion-Solutions/fix/strelka_rules
Expand STRELKARULES
2020-12-09 17:05:44 -05:00
weslambert
0b2e2739bd Expand STRELKARULES 2020-12-09 17:05:11 -05:00
m0duspwnens
ea1bd63f60 makedirs and place readme file for grafana https://github.com/Security-Onion-Solutions/securityonion/issues/1175 2020-12-09 16:59:38 -05:00
TOoSmOotH
af15f0eb38 remove ml node.role 2020-12-09 16:23:38 -05:00
TOoSmOotH
101ddd18a5 Fix print statments 2020-12-09 16:08:09 -05:00
Mike Reeves
3a903501fd Merge pull request #2286 from Security-Onion-Solutions/newescluster
Newescluster
2020-12-09 16:01:46 -05:00
m0duspwnens
8db79ae852 comment out some defaults file https://github.com/Security-Onion-Solutions/securityonion/issues/1175 2020-12-09 16:01:09 -05:00
m0duspwnens
e05da4efc2 remove odl grafana.ini file https://github.com/Security-Onion-Solutions/securityonion/issues/1175 2020-12-09 15:53:01 -05:00
Mike Reeves
30e69bf7b2 Merge branch 'escluster' into newescluster 2020-12-09 15:23:49 -05:00
TOoSmOotH
0a48f7d5dc Simplify logic 2020-12-09 15:22:09 -05:00
m0duspwnens
c320efe7e4 fix whitespace https://github.com/Security-Onion-Solutions/securityonion/issues/1175 2020-12-09 14:33:19 -05:00
m0duspwnens
617ed2a7c2 add a place to place files referenced in the config https://github.com/Security-Onion-Solutions/securityonion/issues/1175 2020-12-09 14:06:54 -05:00
William Wernert
522399e4ab Merge branch 'feature/setup' into experimental 2020-12-09 13:13:58 -05:00
William Wernert
a2e48f91b2 [fix] Add manager to hosts before attempting ssh 2020-12-09 13:13:51 -05:00
William Wernert
987008811c [fix] Make repo directory before using it 2020-12-09 12:47:35 -05:00
m0duspwnens
c5c053d24a change to header 2020-12-09 11:59:06 -05:00
m0duspwnens
75ea648cf9 change to file.managed https://github.com/Security-Onion-Solutions/securityonion/issues/1175 2020-12-09 11:57:28 -05:00
William Wernert
e29fa7ba70 Merge branch 'feature/setup' into experimental 2020-12-09 11:51:18 -05:00
William Wernert
282b4090ce [fix] Actually call nic comparison function, redirect tarball gen to setup_log 2020-12-09 11:51:07 -05:00
TOoSmOotH
e983322a18 Fix elastic if statement 2020-12-09 11:31:22 -05:00
m0duspwnens
6b479c5a89 pillarize grafana https://github.com/Security-Onion-Solutions/securityonion/issues/1175 2020-12-09 11:10:00 -05:00
William Wernert
223856c0b9 [fix] Don't redirect whiptail message, use SIGINT instead of SIGKILL 2020-12-09 10:16:42 -05:00
William Wernert
795cacecf3 [fix] Fix cut command options 2020-12-09 10:06:14 -05:00
William Wernert
f3ce2fc71e [fix] new_setup -> manager_setup 2020-12-09 10:06:02 -05:00
William Wernert
51650147ef [fix] Only show network init message if valid 2020-12-09 09:59:44 -05:00
William Wernert
950c05e53d [fix] Only move error log if present 2020-12-09 09:50:30 -05:00
William Wernert
652c4d49c9 [fix] Remove extra semicolon 2020-12-09 09:47:57 -05:00
TOoSmOotH
6ceecbd524 Fixing some elasticsearch logic 2020-12-09 09:42:03 -05:00
William Wernert
a8f1ec37a3 [refactor] Remove is_smooshed var 2020-12-08 15:29:48 -05:00
William Wernert
813fe77582 [feat] Run so-analyst-install after network init 2020-12-08 15:29:31 -05:00
William Wernert
b41ba1ea3c [feat] Compare setup version to manager, dl tarball + exec on mismatch 2020-12-08 15:29:04 -05:00
William Wernert
4899ea23f8 [fix] Put conditions in install_cleanup function 2020-12-08 14:03:59 -05:00
William Wernert
4210d25fae [feat] Init network + soremote key early 2020-12-08 14:03:21 -05:00
William Wernert
65d994a2f8 [feat] Generate gzipped tarball of repo during setup and soup 2020-12-08 14:02:45 -05:00
William Wernert
997e2735e3 [refactor] Press -> select 2020-12-08 13:59:42 -05:00
TOoSmOotH
d6fa739c60 Adding queue=True 2020-12-08 11:17:47 -05:00
Josh Brower
f34a10a986 Merge pull request #2259 from Security-Onion-Solutions/feature/playbook-updates2
Playbook db updates
2020-12-08 10:36:42 -05:00
Josh Brower
35be785f7a Playbook db updates 2020-12-08 10:35:50 -05:00
Jason Ertel
5d955bcdb7 Enable new SoStatus module in SOC for managing grid status 2020-12-08 09:22:18 -05:00
Josh Brower
5f756549b1 Merge pull request #2254 from Security-Onion-Solutions/feature/playbook-updates2
Initial support - Playbook Overrides
2020-12-07 22:30:50 -05:00
Josh Brower
8915e49288 Initial support - Playbook Overrides 2020-12-07 22:28:58 -05:00
Josh Patterson
2d9c6a42bf Merge pull request #2249 from Security-Onion-Solutions/issue/2188
Issue/2188
2020-12-07 16:52:34 -05:00
Josh Brower
35ea6c36d2 Merge pull request #2247 from Security-Onion-Solutions/feature/so-suricata-ruletest
so-suricata-testrule initial commit
2020-12-07 15:12:20 -05:00
William Wernert
64dc9f8d4e [fix] Only list ipv4 addresses when checking mysql 2020-12-07 14:40:32 -05:00
William Wernert
d88364c9fd [feat] Create error log for easy copy/paste
Resolves #2165
2020-12-07 14:18:01 -05:00
William Wernert
08ab36927d [refactor] Kill parent script on exit 2020-12-07 14:16:54 -05:00
William Wernert
6fc3232637 [fix] Set INSTALLUSERNAME to the user running the script
Resolves #2243
2020-12-07 14:16:06 -05:00
William Wernert
4363b082bb Merge branch 'dev' into feature/setup 2020-12-07 14:15:11 -05:00
Mike Reeves
8ea088c3fc Restart Elastic on addition of node. 2020-12-07 14:09:41 -05:00
m0duspwnens
b5e0b21400 Merge remote-tracking branch 'remotes/origin/dev' into issue/2188 2020-12-07 11:52:09 -05:00
m0duspwnens
19d27c7d68 remove docker-ce-cli from common state 2020-12-07 11:50:47 -05:00
William Wernert
38324c226e [fix] Don't let grep output message on file not found 2020-12-07 10:58:58 -05:00
m0duspwnens
4fe2de2637 upgrade docker https://github.com/Security-Onion-Solutions/securityonion/issues/2188 2020-12-07 10:47:20 -05:00
William Wernert
edc8ccd1b6 Merge branch 'feature/main-ip-validation' into feature/setup 2020-12-07 09:53:38 -05:00
William Wernert
3136c66780 [fix] Bring back network setup before setting MAINIP var 2020-12-07 08:50:53 -05:00
Josh Brower
134d9bc89a so-suricata-testrule initial commit 2020-12-06 17:08:11 -05:00
William Wernert
d724fe7357 Merge pull request #2201 from Security-Onion-Solutions/bugfix/reinstall
Bugfix/reinstall
2020-12-04 09:38:46 -05:00
William Wernert
fca50660a2 [fix] Trap argument off by one 2020-12-04 09:33:28 -05:00
William Wernert
1c1b835c71 Merge branch 'bugfix/reinstall' into experimental 2020-12-03 15:44:04 -05:00
William Wernert
7b43c2955e [fix] kill old restart pid and assign new pid for start 2020-12-03 15:42:15 -05:00
William Wernert
ff1cfb578f Only kill+start on final loop and increase time between status checks 2020-12-03 15:42:15 -05:00
William Wernert
7458313d3d [fix] Also kill+start while trying to restart service initially 2020-12-03 15:42:15 -05:00
William Wernert
39dce13cf6 [fix] Move set_redirect out of sub-shell 2020-12-03 15:42:15 -05:00
William Wernert
916db4acec [fix] kill/start after if statement 2020-12-03 15:42:15 -05:00
William Wernert
2e516629f9 [fix] Kill + start salt-minion if it isn't responding 2020-12-03 15:42:15 -05:00
William Wernert
3273a63662 [fix] kill old restart pid and assign new pid for start 2020-12-03 15:38:26 -05:00
William Wernert
660c768f8f Only kill+start on final loop and increase time between status checks 2020-12-03 15:38:26 -05:00
William Wernert
ebade0a5a6 [fix] Also kill+start while trying to restart service initially 2020-12-03 15:38:26 -05:00
William Wernert
ac85cbc3f1 [fix] Move set_redirect out of sub-shell 2020-12-03 15:38:26 -05:00
William Wernert
b5bfad07dc [fix] kill/start after if statement 2020-12-03 15:38:26 -05:00
William Wernert
3049718660 [fix] Kill + start salt-minion if it isn't responding 2020-12-03 15:38:25 -05:00
William Wernert
80ce8b5e41 [refactor] Run all changes inside whiptail progress, use grep -q 2020-12-03 15:38:25 -05:00
William Wernert
2c208ec943 [fix] kill -> stop, add indent to service check, revert incorrect logic 2020-12-03 15:38:25 -05:00
William Wernert
76fff28dfa [fix] Correct logic for service check + bash trap 2020-12-03 15:38:25 -05:00
William Wernert
af8295a651 [reafactor] systemctl stop -> kill 2020-12-03 15:38:25 -05:00
William Wernert
ddcf5dec5b [refactor] Run all changes inside whiptail progress, use grep -q 2020-12-03 13:59:25 -05:00
Jason Ertel
967111decc Add node address to sensoroni pillar 2020-12-03 11:24:45 -05:00
Mike Reeves
94253e92a6 Adjust the elasticsearch config 2020-12-03 10:38:18 -05:00
William Wernert
f410c451cd [fix] kill -> stop, add indent to service check, revert incorrect logic 2020-12-03 10:31:45 -05:00
William Wernert
786665d8cf [fix] Correct logic for service check + bash trap 2020-12-03 10:18:44 -05:00
weslambert
c41d4373b7 Merge pull request #2192 from Security-Onion-Solutions/fix/elasticsearch_bool_query_clause_count
Add indices.query.bool.max_clause_count to allow for wildcard searche…
2020-12-03 09:30:24 -05:00
weslambert
95570976a8 Add indices.query.bool.max_clause_count to allow for wildcard searches targeting more than 1024 fields 2020-12-03 09:29:44 -05:00
weslambert
a84f816eff Merge pull request #2189 from Security-Onion-Solutions/feature/so-elastic-scripts
so-elastic scripts
2020-12-03 09:20:47 -05:00
Wes Lambert
4ce3ec7582 Make scripts executable 2020-12-03 14:18:22 +00:00
Wes Lambert
f96365baba Add intial grouped Elastic start/stop/restart scripts 2020-12-03 14:17:32 +00:00
William Wernert
9c919f3c92 [reafactor] systemctl stop -> kill 2020-12-02 17:07:49 -05:00
Jason Ertel
cf0ec2f78f Default to the node's primary IP for the description field 2020-12-02 16:38:33 -05:00
Mike Reeves
3e322c38eb Fix config for single cluster mode 2020-12-02 15:33:35 -05:00
William Wernert
46d2342c8b Merge branch 'bugfix/reinstall' into experimental 2020-12-02 14:45:46 -05:00
Mike Reeves
d004263b71 Add Elastic Clustering 2020-12-02 14:33:22 -05:00
William Wernert
fc7fe23590 [fix] Correct signal naming 2020-12-02 14:06:50 -05:00
William Wernert
cc5d54764a [fix] sed masks command return code, remove 2020-12-02 13:54:02 -05:00
William Wernert
8fe43d6d56 [fix] Print WARNING instead of ERROR if minion is not responding initially 2020-12-02 13:35:57 -05:00
Mike Reeves
69ae4577f5 Merge pull request #2174 from Security-Onion-Solutions/escluster
Escluster
2020-12-02 13:23:08 -05:00
William Wernert
467f9923b0 [refactor] Add trap to handle script exits, change what files are deleted in /etc/salt/ 2020-12-02 13:19:34 -05:00
weslambert
c819729cd6 Don't use max_files or time_to_live for shutdown params 2020-12-02 13:17:19 -05:00
Josh Patterson
54d8dcdbb0 Merge pull request #2173 from Security-Onion-Solutions/issue/2079
Issue/2079
2020-12-02 11:46:29 -05:00
William Wernert
2d4fe58299 [fix] Also kill currently running jobs 2020-12-01 21:43:38 -05:00
William Wernert
4b5b936abb [fix] echo -> return 2020-12-01 21:40:41 -05:00
William Wernert
2d6feea5c5 [fix] Syntax fixes 2020-12-01 21:21:32 -05:00
William Wernert
38028a543a [feat] Add timeout for salt services to stop during reinstall init 2020-12-01 21:18:24 -05:00
Jason Ertel
b7bc8db3b2 Modify PCAP quick action to work off of network community ID; Add new Correlate quick action 2020-12-01 17:37:44 -05:00
Jason Ertel
81b86bf7f2 Switch PCAP quick actions to support alternative lookup link when a single event ID is not available 2020-12-01 16:04:50 -05:00
m0duspwnens
ff6951cd95 Merge branch 'dev' of https://github.com/Security-Onion-Solutions/securityonion into issue/2079 2020-12-01 15:38:15 -05:00
m0duspwnens
141d7a35c9 if true cluster enabled allow search nodes to talk to each other https://github.com/Security-Onion-Solutions/securityonion/issues/2079 2020-12-01 15:38:09 -05:00
William Wernert
c2e7e42509 [fix] Don't SIGKILL salt services + disable highstate schedule 2020-12-01 15:36:05 -05:00
weslambert
0e8f547087 Merge pull request #2160 from Security-Onion-Solutions/fix/strelka_mmbot
Remove ScanMmbot
2020-12-01 11:26:14 -05:00
weslambert
9517cb2a58 Remove ScanMmbot 2020-12-01 11:25:51 -05:00
Josh Brower
c303cdff09 Merge pull request #2150 from Security-Onion-Solutions/bugfix/fleet-standalone
Fleet Fixes - mysql race condition
2020-11-30 18:06:30 -05:00
Josh Brower
e7a927188b Fleet Fixes - mysql race condition 2020-11-30 17:28:11 -05:00
William Wernert
8a8885e14f [feat] Verify that main ip = mngmt ip
* Add a check to check whether the src ip in the routing table is also the ip assigned to the management nic
2020-11-30 16:53:02 -05:00
Josh Brower
8e9458ca84 Merge pull request #2149 from Security-Onion-Solutions/bugfix/fleet-standalone
Fix Fleet setup errors
2020-11-30 12:06:36 -05:00
Josh Brower
5d2acf4011 Fix Fleet setup errors 2020-11-30 12:06:02 -05:00
William Wernert
8964444eeb [fix] Correct count print in mysql_conn 2020-11-30 11:32:43 -05:00
William Wernert
ec81e8565f [fix] Add safety logic to retry var in mysql_conn 2020-11-30 11:32:28 -05:00
William Wernert
040b435278 [refactor] Fail mysql_conn if the mainint has > 1 ip address 2020-11-30 11:10:50 -05:00
Josh Brower
704f024441 Merge pull request #2146 from Security-Onion-Solutions/bugfix/fleet-standalone
Fleet standalone - fix event
2020-11-30 10:33:05 -05:00
Josh Brower
65d8005629 Fleet standalone - fix event 2020-11-30 10:32:39 -05:00
Josh Brower
7fddf99648 Merge pull request #2128 from Security-Onion-Solutions/bugfix/fleet-standalone
Fix Fleet setup errors
2020-11-27 13:59:19 -05:00
Josh Brower
f52c30bff5 Fix Fleet setup errors 2020-11-27 13:58:41 -05:00
Josh Brower
19a33c5c2a Merge pull request #2126 from Security-Onion-Solutions/bugfix/fleet-standalone
Bugfix/fleet standalone
2020-11-27 11:45:25 -05:00
Josh Brower
19b36f0468 Fleet standalone redirect fix 2020-11-27 11:43:51 -05:00
Josh Brower
95a664e12a Merge pull request #2103 from Security-Onion-Solutions/bugfix/fleet-standalone
Fleet standalone fix
2020-11-25 14:09:27 -05:00
Josh Brower
38afd67108 Fleet standalone fix 2020-11-25 14:08:30 -05:00
Jason Ertel
979f171828 Add missing comma to sensoroni.json 2020-11-25 12:29:45 -05:00
Jason Ertel
8f9081618f Add role to sensoroni.json file 2020-11-25 11:11:46 -05:00
Jason Ertel
7fb264b4fe Use double quotes around agent key to ensure interpolation 2020-11-24 17:17:50 -05:00
Jason Ertel
d20560385f Remove /nsm/wazuh/etc subdir state since confirmed the Wazuh docker container itself 2020-11-24 16:50:46 -05:00
Jason Ertel
e1147398cc Ensure /nsm/wazuh is owned by ossec 2020-11-24 15:48:46 -05:00
Jason Ertel
8864428a00 Ensure setup output is redirected to logfile 2020-11-24 15:45:40 -05:00
Jason Ertel
ea9bbfd1aa Improve wazuh agent registration with retry logic to wait for manager to become ready 2020-11-24 13:53:20 -05:00
weslambert
0c4ee94472 Merge pull request #2077 from Security-Onion-Solutions/fix/thehive_upgrade_conf
Fix/thehive upgrade conf
2020-11-24 11:52:51 -05:00
weslambert
39bf60feb7 Add digit 2020-11-24 11:52:20 -05:00
weslambert
35653d2e66 Changes for ES7 2020-11-24 11:51:19 -05:00
weslambert
eb2364b926 Changes for ES7 2020-11-24 11:49:08 -05:00
Josh Patterson
9bb485cdc9 Merge pull request #2074 from Security-Onion-Solutions/issue/2040
Issue/2040
2020-11-24 11:45:08 -05:00
m0duspwnens
fe2662cab8 dont enable steno pillar on import node https://github.com/Security-Onion-Solutions/securityonion/issues/2040 2020-11-24 11:42:03 -05:00
m0duspwnens
995a377432 squigly comma if steno enabled https://github.com/Security-Onion-Solutions/securityonion/issues/2040 2020-11-24 11:31:41 -05:00
weslambert
e3a41c2a94 Changes for ES7 elasticsearch.yml 2020-11-24 11:20:09 -05:00
Mike Reeves
ddca9563e5 Merge branch 'mkrmerge' into escluster 2020-11-24 10:29:57 -05:00
OmerTirosh
e2ee0db727 Ignore failure for rename processor
Ignore failure for winlog.event_data.SubjectUserName rename processor.
For some event ids (for example 4688), this field already been added in winlogbeat JS processor.
Therefor, elastic throw [user.name] already exists error.
2020-11-24 17:21:47 +02:00
m0duspwnens
4dfd49ef39 add vars https://github.com/Security-Onion-Solutions/securityonion/issues/2040 2020-11-24 10:11:28 -05:00
m0duspwnens
65334d15ea https://github.com/Security-Onion-Solutions/securityonion/issues/2040 2020-11-24 09:33:38 -05:00
Jason Ertel
1e32a01657 Create symlink before registration otherwise registration script can't save it's state (.log) file into the conf subdir; add more logging output to track down registration failures 2020-11-23 18:36:19 -05:00
Jason Ertel
bafefb980b Update so-elastalert-test script for compatibility with SO 2.3 2020-11-23 10:45:56 -05:00
Mike Reeves
426769588a Merge pull request #1739 from jtgreen-cse/patch-2
fix for Windows events via osquery
2020-11-21 13:27:05 -05:00
Josh Patterson
a183be489c Merge pull request #2030 from Security-Onion-Solutions/master
Merge master to dev
2020-11-20 17:00:31 -05:00
Josh Patterson
b29ffcac92 Merge pull request #2029 from Security-Onion-Solutions/soup-ubuntu-salt
fix issue with proper salt.minion state execution for ubuntu
2020-11-20 16:55:45 -05:00
Jason Ertel
78f5727f6f Improve so-ip-update prompts 2020-11-20 15:16:07 -05:00
m0duspwnens
0d3754200f fix issue with proper salt.minion state execution for ubuntu 2020-11-20 14:27:07 -05:00
Jason Ertel
bc40a2bfc5 Correct so-import-pcap wrapping; add so-pcap-import alias for so-import-pcap; prompt to reboot after changing IP address on manager; ensure all tools have exec bit set 2020-11-20 14:14:03 -05:00
Jason Ertel
f074179656 Correct so-import-pcap wrapping; add so-pcap-import alias for so-import-pcap; prompt to reboot after changing IP address on manager; ensure all tools have exec bit set 2020-11-20 14:14:03 -05:00
William Wernert
b6e36d4d06 Merge pull request #2023 from Security-Onion-Solutions/bugfix/bug-hunt
Bugfix/bug hunt
2020-11-20 13:04:33 -05:00
William Wernert
2e6be747d9 [fix] Fixes for quiet flag in so-ssh-harden 2020-11-20 11:18:40 -05:00
William Wernert
1a11c24f03 [fix] Add newline escapes to so-ssh-harden 2020-11-20 11:13:40 -05:00
William Wernert
d15064b294 Merge branch 'dev' into bugfix/bug-hunt 2020-11-20 10:15:52 -05:00
William Wernert
d3ef46a5f6 Merge pull request #2020 from Security-Onion-Solutions/bugfix/pre-whiptail-message
[fix] Remove echo redirect at beginning of install
2020-11-20 10:15:24 -05:00
William Wernert
9d837f7b45 [fix] Reload sshd if config changes are made
Fixes #1976
2020-11-20 10:09:14 -05:00
William Wernert
e62b52da1b [fix] Add condition to zeek state during setup for ZEEKVERSION
Fixes #1990
2020-11-20 09:58:07 -05:00
William Wernert
79ec1de83a [fix] Add exit check for static ip whiptail menus
Fixes #1992
2020-11-20 09:56:48 -05:00
Jason Ertel
9fb8a6d482 Increment version to 2.3.20 2020-11-19 16:53:34 -05:00
Mike Reeves
5344d30d56 Merge pull request #2003 from Security-Onion-Solutions/dev
2.3.10
2020-11-19 16:48:53 -05:00
Mike Reeves
4051111999 Update hashes and keys 2020-11-19 16:00:40 -05:00
Mike Reeves
316a1c02f1 Update soup to display what its doing 2020-11-19 15:19:50 -05:00
Josh Patterson
c07f62f8d1 Merge pull request #2007 from Security-Onion-Solutions/fix/minon
kill salt process with soup and dont restart salt-minion service when…
2020-11-19 15:17:58 -05:00
m0duspwnens
cdc7a5cc7c kill salt process with soup and dont restart salt-minion service when salt upgrade 2020-11-19 15:17:11 -05:00
Josh Patterson
10a3e6f414 Merge pull request #2006 from Security-Onion-Solutions/fix/minon
change typo on minon to minion
2020-11-19 15:11:16 -05:00
m0duspwnens
2a3951ab36 change typo on minon to minion 2020-11-19 15:08:08 -05:00
Mike Reeves
67a8c4e8cb Update Readme 2020-11-19 11:27:15 -05:00
Mike Reeves
177819447b Update Sigs and Hashes 2020-11-19 11:26:08 -05:00
Mike Reeves
3be1c9ae32 Clean up 2.3.1 dockers 2020-11-19 09:58:08 -05:00
William Wernert
ac3b5e4f1b [fix] Remove echo redirect at beginning of install 2020-11-19 09:48:56 -05:00
Josh Brower
b79e1c3225 Merge pull request #1987 from Security-Onion-Solutions/bugfix/playbookdb-user
playbook mysqluser
2020-11-18 20:48:49 -05:00
Josh Brower
d3065005ca playbook mysqluser 2020-11-18 20:48:02 -05:00
Josh Patterson
26e97d5875 Merge pull request #1984 from Security-Onion-Solutions/salt/3002.2
upgrade from salt 3002.1 to salt 3002.2
2020-11-18 18:26:11 -05:00
m0duspwnens
d68726f6ef upgrade from salt 3002.1 to salt 3002.2 2020-11-18 18:25:02 -05:00
Josh Patterson
f81da406da Merge pull request #1983 from Security-Onion-Solutions/soup-verify-salt
dont highstate, just restart salt-minion
2020-11-18 17:40:36 -05:00
m0duspwnens
afd466cd2b dont highstate, just restart salt-minion 2020-11-18 17:27:25 -05:00
Josh Patterson
6d228a836f Merge pull request #1982 from Security-Onion-Solutions/soup-verify-salt
add -X so bootstrap doesnt try to start salt-minion during soup
2020-11-18 16:45:05 -05:00
m0duspwnens
1805effdc0 add -X so bootstrap doesnt try to start salt-minion during soup 2020-11-18 16:32:53 -05:00
Jason Ertel
1170b04a87 Update changes for 2.3.10 2020-11-18 16:18:00 -05:00
Josh Patterson
c0b43d3319 Merge pull request #1981 from Security-Onion-Solutions/soup-verify-salt
add back -s
2020-11-18 15:50:04 -05:00
m0duspwnens
6cc9d1c076 add back -s 2020-11-18 15:49:30 -05:00
William Wernert
1c55bb6db2 [fix] Only backup /nsm/mysql and /nsm/wazuh 2020-11-18 15:34:40 -05:00
Josh Brower
3d0003555a Merge pull request #1980 from Security-Onion-Solutions/bugfix/soup-regen-osquery
SOUP - Regen Osquery Packages
2020-11-18 14:56:23 -05:00
Josh Brower
0830f63c4e SOUP - Regen Osquery Packages 2020-11-18 14:55:14 -05:00
Josh Patterson
adbd8d6956 Merge pull request #1979 from Security-Onion-Solutions/soup-verify-salt
Soup verify salt
2020-11-18 14:49:03 -05:00
William Wernert
80d0080f70 [fix] Only set is_reinstall if it's needed 2020-11-18 14:47:53 -05:00
m0duspwnens
af6e14dc6f highstate , merge with dev fix conflict 2020-11-18 14:47:40 -05:00
William Wernert
8b6b7cbd11 [fix] Check if $is_reinstall is true 2020-11-18 14:46:22 -05:00
William Wernert
e65c53dbb1 [fix] Don't rename /nsm/docker-registry 2020-11-18 14:01:33 -05:00
m0duspwnens
ceef07b74b remove pkill 2020-11-18 14:00:01 -05:00
William Wernert
280cde43ff [fix] install_type -> setup_type 2020-11-18 13:51:55 -05:00
William Wernert
81b9658499 [fix] Don't remove accept_changes file 2020-11-18 13:51:55 -05:00
weslambert
04c6bed779 Merge pull request #1977 from Security-Onion-Solutions/fix/zeek_log_inode_cleanup
Change clean_removed to true to clean up tracking of Zeek logs removed fr…
2020-11-18 13:49:46 -05:00
weslambert
6b4af30fc1 Change clean_removed to true cleanup tracking of Zeek logs removed from current 2020-11-18 13:47:32 -05:00
m0duspwnens
1e2b404836 remove -s 2020-11-18 13:29:42 -05:00
m0duspwnens
276c011a4f queue state and change upgrade command https://github.com/Security-Onion-Solutions/securityonion/issues/1961 2020-11-18 13:22:11 -05:00
William Wernert
34fd80182e [fix][wip] Don't use variable for accept_changes file 2020-11-18 12:54:36 -05:00
Jason Ertel
57e9f69c97 Add new so-ip-update script (Work in progress) 2020-11-18 12:35:38 -05:00
William Wernert
0542e0aa04 [fix] info -> title 2020-11-18 12:35:16 -05:00
m0duspwnens
d0e7b5b55a only ensure salt-minion service is running if salt is on right verison https://github.com/Security-Onion-Solutions/securityonion/issues/1961 2020-11-18 12:32:21 -05:00
William Wernert
ad74b4b3e0 [refactor][fix] Update reinstall logic
* Only set reinstall flag if new accept_changes file exists
* Instead of stopping highstate from running, kill all salt processes and remove their configs
* Make end of non-reinstall logs clear in cases where user cancels (and log not rotated)
2020-11-18 12:29:54 -05:00
m0duspwnens
ce70e0a61f changes to upgradecommand https://github.com/Security-Onion-Solutions/securityonion/issues/1961 2020-11-18 11:51:28 -05:00
William Wernert
8a4defcffa [refactor] Check for setup log earlier
* Check for sosetuo.log before any scripts besides so-variables are sourced to make sure the log hasn't been created yet.
2020-11-18 11:16:36 -05:00
m0duspwnens
bddc3d6df9 kill all salt-minion again since they hang and redirect highstate to a logfile 2020-11-18 10:40:23 -05:00
m0duspwnens
4bb1ad9799 dont restart or kill salt-minon in upgrade command https://github.com/Security-Onion-Solutions/securityonion/issues/1961 2020-11-18 09:29:09 -05:00
William Wernert
bc0c395b7f Merge pull request #1963 from Security-Onion-Solutions/feature/rem-so-setup-perm-entry
Feature/rem so-setup perm entry
2020-11-18 09:12:25 -05:00
m0duspwnens
67dc71ab49 Merge remote-tracking branch 'remotes/origin/dev' into soup-verify-salt 2020-11-18 08:36:23 -05:00
m0duspwnens
c95619d335 change upgradecommand order https://github.com/Security-Onion-Solutions/securityonion/issues/1961 2020-11-18 08:35:56 -05:00
Jason Ertel
bfbc0f354c Only default to logging out to tty if tty exists as a character device 2020-11-17 22:48:40 -05:00
m0duspwnens
5c6e9e0e3a run a highstate and let that start the salt-minion back up https://github.com/Security-Onion-Solutions/securityonion/issues/1961 2020-11-17 19:40:42 -05:00
m0duspwnens
7291d64e82 pkill salt-minion before restartiong salt-minion service https://github.com/Security-Onion-Solutions/securityonion/issues/1961 2020-11-17 18:38:01 -05:00
m0duspwnens
695cce0b50 upgrad command changes https://github.com/Security-Onion-Solutions/securityonion/issues/1961 2020-11-17 17:54:56 -05:00
m0duspwnens
42126f125b change verison check to != 2020-11-17 17:00:59 -05:00
m0duspwnens
2bfc48be35 change check of salt was upgraded during soup for ubuntu and centos 2020-11-17 16:31:11 -05:00
m0duspwnens
7d1cf56160 change check of salt was upgraded during soup for ubuntu and centos 2020-11-17 16:29:35 -05:00
m0duspwnens
1fd2196dd5 fix check of salt was upgraded during soup for ubuntu and centos 2020-11-17 16:18:50 -05:00
m0duspwnens
65b84f1bd7 Merge remote-tracking branch 'remotes/origin/dev' into soup-verify-salt 2020-11-17 16:09:47 -05:00
m0duspwnens
fcfd3e3758 change location yum/apt verison locks https://github.com/Security-Onion-Solutions/securityonion/issues/1961 2020-11-17 16:09:30 -05:00
William Wernert
ee3708a428 [fix] Move sudoers check in soup to correct place + fix styling issue 2020-11-17 15:44:20 -05:00
William Wernert
b146700303 [feat] Remove so-setup permission from sudoers file after iso setup
Closes #1701
2020-11-17 15:36:25 -05:00
Jason Ertel
1ec8b52353 Replace scan.exiftool.* fields due to reduction in strelka field counts 2020-11-17 15:12:06 -05:00
Josh Patterson
f8346cde08 Merge pull request #1962 from Security-Onion-Solutions/soup-verify-salt
Soup verify salt
2020-11-17 15:08:32 -05:00
m0duspwnens
e162be2e1d change salt upgrade command https://github.com/Security-Onion-Solutions/securityonion/issues/1961 2020-11-17 14:29:39 -05:00
m0duspwnens
4f4f64a47d Merge remote-tracking branch 'remotes/origin/dev' into soup-verify-salt 2020-11-17 13:16:18 -05:00
m0duspwnens
4cd1086efa new way for soup to install and resart salt for upgrade 2020-11-17 13:15:55 -05:00
Mike Reeves
2184c3b8ee Revert "The Hive ES update"
This reverts commit 88c2ee0d36.
2020-11-17 12:51:42 -05:00
Mike Reeves
65d28f98b5 Revert "The Hive ES Update"
This reverts commit f31d459a24.
2020-11-17 12:51:13 -05:00
Jason Ertel
aa8d9c12a0 Remove yara rule update that can't succeed since the script doesn't exist at this point of the setup process 2020-11-17 12:15:27 -05:00
Mike Reeves
f31d459a24 The Hive ES Update 2020-11-17 11:59:03 -05:00
Mike Reeves
88c2ee0d36 The Hive ES update 2020-11-17 11:58:22 -05:00
Jason Ertel
d13733e716 Queue the registry state in case a highstate is already active 2020-11-17 09:59:09 -05:00
Josh Patterson
86922a2388 Merge pull request #1959 from Security-Onion-Solutions/soup-verify-salt
verify new salt version is installed during soup if not, exit before proceeding
2020-11-17 09:53:08 -05:00
m0duspwnens
65440f9aef verify new salt version is installed during soup if not, exit before proceeding 2020-11-17 09:51:28 -05:00
William Wernert
12c661101a Merge pull request #1958 from Security-Onion-Solutions/feat/require-min-nics
Feat/require min nics
2020-11-17 09:49:09 -05:00
William Wernert
79b63ed14b [fix] Use singular when needed for requirements 2020-11-17 09:47:08 -05:00
Josh Brower
cc4357d567 Merge pull request #1954 from Security-Onion-Solutions/bugfix/ingest-mappings
Cleanup & fix sysmon pid ingest
2020-11-17 09:05:31 -05:00
Jason Ertel
b9267ee015 Add missing newline after armor header 2020-11-17 09:00:02 -05:00
Jason Ertel
5c310327e4 Merge pull request #1942 from Security-Onion-Solutions/jertel/refactor-seed
Jertel/refactor seed
2020-11-16 18:46:28 -05:00
Jason Ertel
4311f66110 Remove unnecessary redirect 2020-11-16 16:58:09 -05:00
Josh Patterson
a8644478b5 Merge pull request #1939 from Security-Onion-Solutions/fix/nginx-nonmanager
fix nginx for non manaager/fleet nodes
2020-11-16 16:47:39 -05:00
m0duspwnens
4436f02f6d fix nginx for non manaager/fleet nodes 2020-11-16 16:46:22 -05:00
Jason Ertel
3cf8afc1dd Remove unused redirect descriptors and ensure gpg import output is not leaked to console 2020-11-16 16:39:54 -05:00
Josh Patterson
f1e33b6eea Merge pull request #1938 from Security-Onion-Solutions/fix/so.status-module
fix so-status to work with so.status module and change padding
2020-11-16 16:35:08 -05:00
m0duspwnens
0d9b22fe2d fix so-status to work with so.status module and change padding 2020-11-16 16:33:29 -05:00
William Wernert
a08923030b [feat] Exit setup if less than required number of NICs present 2020-11-16 16:26:38 -05:00
Jason Ertel
1ec4af1a4d Destroy the old registry before updating SO images 2020-11-16 15:41:15 -05:00
Jason Ertel
5ae78d4108 Install curl in order to test for cloud 2020-11-16 15:31:40 -05:00
Jason Ertel
3bae243915 Continued refactoring of bash 2020-11-16 15:20:00 -05:00
Jason Ertel
8234b6f835 Switch remaining containers over to new registries; Continued bash refactoring 2020-11-16 15:11:08 -05:00
Josh Patterson
55231eab25 Merge pull request #1934 from Security-Onion-Solutions/fix/so-status-in-setup
redirect output from setting up so-status stuff in so-setup
2020-11-16 14:57:58 -05:00
m0duspwnens
e956ee9324 redirect output from setting up so-status stuff in so-setup 2020-11-16 14:56:20 -05:00
Jason Ertel
a343e3f31e Save descriptors while inside the progress pipe 2020-11-16 14:10:48 -05:00
Jason Ertel
2ff738a61c Refactor docker_seed_registry to eliminate duplicate logic 2020-11-16 13:27:23 -05:00
William Wernert
c226c1d902 [fix] Redirect stderr when checking for link state 2020-11-16 11:30:47 -05:00
Josh Patterson
7a49c55ea0 Merge pull request #1930 from Security-Onion-Solutions/issue/1831
Issue/1831
2020-11-16 10:09:49 -05:00
m0duspwnens
cc50eba6cb make sure /opt/so/log/salt/so-salt-minion-check gets touched even if salt-minon verison isnt correct https://github.com/Security-Onion-Solutions/securityonion/issues/1831 2020-11-16 10:01:40 -05:00
m0duspwnens
5c25dcf192 add /opt/so/log/salt/so-salt-minion-check to log rotate https://github.com/Security-Onion-Solutions/securityonion/issues/1831 2020-11-16 09:50:10 -05:00
Jason Ertel
c744d389f7 More bash cleanup 2020-11-15 10:44:14 -05:00
Jason Ertel
76c917d977 Continued bash cleanup 2020-11-15 09:57:12 -05:00
Josh Brower
1908a68330 Cleanup & fix sysmon pid ingest 2020-11-14 16:19:23 -05:00
Jason Ertel
d22040fb5d Annual fall bash cleanup event 2020-11-14 11:53:31 -05:00
Jason Ertel
372f694cc1 Set curl type to 'features' when adding features to existing installation 2020-11-14 11:04:40 -05:00
Jason Ertel
1c079f7ff4 Remove duplicate docker pull/sigverify logic from so-features-enable; Provide current SO version to curl 2020-11-14 10:35:45 -05:00
m0duspwnens
4e6e29e7dc update logging 2020-11-13 20:26:06 -05:00
m0duspwnens
43a244e0da change log path https://github.com/Security-Onion-Solutions/securityonion/issues/1831 2020-11-13 19:37:03 -05:00
m0duspwnens
e958246457 touch file at start of highstate, just kill salt dont systemctl stop it https://github.com/Security-Onion-Solutions/securityonion/issues/1831 2020-11-13 19:34:17 -05:00
m0duspwnens
b210092534 logging changes issue/1831 2020-11-13 19:09:53 -05:00
m0duspwnens
e820c6fa42 logging changes issue/1831 2020-11-13 19:04:09 -05:00
m0duspwnens
71a409f210 fix threshold logic https://github.com/Security-Onion-Solutions/securityonion/issues/1831 2020-11-13 18:23:55 -05:00
m0duspwnens
a5823be0ac fix typo 2020-11-13 17:55:19 -05:00
Mike Reeves
13c261178a fix soup so-image-common 2020-11-13 17:26:04 -05:00
m0duspwnens
2f0eaff8b3 sbin 2020-11-13 17:25:45 -05:00
Mike Reeves
977eea131e fix soup so-image-common 2020-11-13 17:18:55 -05:00
Mike Reeves
fb9b07b0eb fix soup so-image-common 2020-11-13 17:13:05 -05:00
m0duspwnens
6a010bb3e6 change var name 2020-11-13 17:08:47 -05:00
Mike Reeves
51b3e066be fix soup so-image-common 2020-11-13 17:01:42 -05:00
Mike Reeves
7dfb8f5b12 fix soup so-image-common 2020-11-13 16:50:12 -05:00
Mike Reeves
23f2dee840 fix soup so-image-common 2020-11-13 16:30:34 -05:00
m0duspwnens
4275fcbf22 Merge remote-tracking branch 'remotes/origin/dev' into issue/1831 2020-11-13 16:28:58 -05:00
Jason Ertel
ee97f5eaac Remove unnecessary branch var; allow skipping of tag/push step 2020-11-13 16:17:09 -05:00
m0duspwnens
0a807621cc check health of salt-minion https://github.com/Security-Onion-Solutions/securityonion/issues/1831 2020-11-13 16:02:28 -05:00
Mike Reeves
8577fa63a3 fix network install download 2020-11-13 14:28:27 -05:00
Mike Reeves
50175f7e42 soup should now copy the common image functions 2020-11-13 14:25:29 -05:00
Mike Reeves
3173c6fd3c Change user agent string for docker refresh 2020-11-13 14:09:29 -05:00
Mike Reeves
069908ec56 Change user agent string for docker refresh 2020-11-13 13:55:26 -05:00
Mike Reeves
09f3199cc2 Change user agent string for docker refresh 2020-11-13 13:39:52 -05:00
Josh Brower
adec9ad48b Merge pull request #1916 from Security-Onion-Solutions/feature/so-playbook-reset
Feature/so playbook reset
2020-11-13 11:21:50 -05:00
Josh Brower
8b3262ce1b Add so-playbook-reset 2020-11-13 11:20:39 -05:00
weslambert
4fad0e3a98 Merge pull request #1914 from Security-Onion-Solutions/fix/syslog_parsing
Syslog updates
2020-11-13 11:07:53 -05:00
Wes Lambert
fddfb8eb92 Syslog updates 2020-11-13 16:06:22 +00:00
Jason Ertel
210a7bc65b Merge curator closed-delete-delete changes from the abandoned 2.3.3 release 2020-11-13 10:05:23 -05:00
William Wernert
8a7ff3260d Merge pull request #1911 from Security-Onion-Solutions/feature/ssh-harden-script
[feat] Add ssh-harden script
2020-11-13 09:00:07 -05:00
William Wernert
2f27b6f2fa [feat] Add ssh-harden script 2020-11-13 08:51:28 -05:00
Mike Reeves
52e909007f Change url and clean up sigs 2020-11-12 16:08:27 -05:00
Mike Reeves
80aeffe1ad Merge branch 'dev' of https://github.com/Security-Onion-Solutions/securityonion into dev 2020-11-12 11:53:41 -05:00
Mike Reeves
cbca2d702f Add Version back to sig files 2020-11-12 11:53:30 -05:00
Automation
af44cce423 Auto-publish so-acng image signature 2020-11-12 16:39:54 +00:00
Automation
7d81080076 Auto-publish so-grafana image signature 2020-11-12 16:39:24 +00:00
Automation
6194d85180 Auto-publish so-idstools image signature 2020-11-12 16:38:38 +00:00
Automation
88675ec2ee Auto-publish so-strelka-manager image signature 2020-11-12 16:37:53 +00:00
Automation
9c0a1bc8b9 Auto-publish so-fleet image signature 2020-11-12 16:37:24 +00:00
Automation
52babc686d Auto-publish so-fleet-launcher image signature 2020-11-12 16:36:51 +00:00
Automation
9370e5b8bc Auto-publish so-freqserver image signature 2020-11-12 16:36:01 +00:00
Automation
6c1d5451eb Auto-publish so-strelka-backend image signature 2020-11-12 16:35:16 +00:00
Automation
f50e6ab929 Auto-publish so-strelka-filestream image signature 2020-11-12 16:34:12 +00:00
Automation
67f18a02ea Auto-publish so-strelka-frontend image signature 2020-11-12 16:33:37 +00:00
Mike Reeves
7f491545fa Fix Variable for docker inspect 2020-11-12 11:31:27 -05:00
Automation
9b33201ba5 Auto-publish so-minio image signature 2020-11-12 16:30:56 +00:00
Mike Reeves
aefcb9a491 Fix Variable for docker 2020-11-12 11:28:58 -05:00
Automation
fee52f8b86 Auto-publish so-redis image signature 2020-11-12 16:28:23 +00:00
Automation
e434ccd3d3 Auto-publish so-soctopus image signature 2020-11-12 16:18:25 +00:00
Automation
70a0cbae23 Auto-publish so-telegraf image signature 2020-11-12 16:17:22 +00:00
Automation
04263101cf Auto-publish so-kibana image signature 2020-11-12 16:15:27 +00:00
Mike Reeves
312f99966e Change docker inspect to a variable to speed it up 2020-11-12 09:39:13 -05:00
Mike Reeves
667800d830 Change docker inspect to variable to speed it up 2020-11-12 09:35:19 -05:00
Mike Reeves
2fba02f71b Grab specific digest so re-installs work 2020-11-12 09:29:18 -05:00
Josh Patterson
4ce0b770a5 Merge pull request #1898 from jtgreen-cse/patch-3
fix for #1725, grafana queries use non_negative_ variants
2020-11-12 08:55:12 -05:00
Mike Reeves
1de862985c Merge pull request #1893 from Security-Onion-Solutions/gpg
GPG Docker Image Verification
2020-11-12 08:46:34 -05:00
Jason Green
4e40392c55 fix for #1725, grafana queries use non_negative_ variants 2020-11-12 07:34:51 -05:00
Automation
d1fe79b642 Auto-publish so-thehive-es image signature 2020-11-12 02:55:19 +00:00
Automation
f96cc35d37 Auto-publish so-thehive-cortex image signature 2020-11-12 02:53:56 +00:00
Automation
388f1e753d Auto-publish so-strelka-manager image signature 2020-11-12 02:52:24 +00:00
Automation
42382d00d8 Auto-publish so-strelka-frontend image signature 2020-11-12 02:51:38 +00:00
Automation
b086f5e5c1 Auto-publish so-strelka-filestream image signature 2020-11-12 02:50:51 +00:00
Automation
0b0f9854f9 Auto-publish so-strelka-backend image signature 2020-11-12 02:49:47 +00:00
Automation
3107f46940 Auto-publish so-logstash image signature 2020-11-12 02:48:28 +00:00
Automation
202c672798 Auto-publish so-kibana image signature 2020-11-12 02:47:00 +00:00
Automation
6ac1bc5623 Auto-publish so-freqserver image signature 2020-11-12 02:45:21 +00:00
Automation
e002015ce2 Auto-publish so-fleet-launcher image signature 2020-11-12 02:44:31 +00:00
Automation
61b5e009c7 Auto-publish so-filebeat image signature 2020-11-12 02:43:27 +00:00
Automation
f3aadcd553 Auto-publish so-elasticsearch image signature 2020-11-12 02:42:22 +00:00
Automation
71370d4522 Auto-publish so-elasticsearch image signature 2020-11-12 02:41:12 +00:00
Automation
c287b5f826 Auto-publish so-elastalert image signature 2020-11-12 02:39:48 +00:00
Automation
4286ac0dfd Auto-publish so-domainstats image signature 2020-11-12 02:38:46 +00:00
Automation
adc937295b Auto-publish so-tcpreplay image signature 2020-11-12 02:37:39 +00:00
Automation
96bf2c57e7 Auto-publish so-pcaptools image signature 2020-11-12 02:36:20 +00:00
Automation
5f7a28dd5d Auto-publish so-telegraf image signature 2020-11-12 02:35:22 +00:00
Automation
3560ba933b Auto-publish so-suricata image signature 2020-11-12 02:34:18 +00:00
Automation
9c20450832 Auto-publish so-soctopus image signature 2020-11-12 02:33:10 +00:00
Automation
d71daef2e9 Auto-publish so-playbook image signature 2020-11-12 02:31:59 +00:00
Automation
c3ae80e2c1 Auto-publish so-logstash image signature 2020-11-12 02:30:36 +00:00
Automation
2098dd16ff Auto-publish so-influxdb image signature 2020-11-12 02:29:02 +00:00
Automation
3b4c9e02e7 Auto-publish so-idstools image signature 2020-11-12 02:28:04 +00:00
Automation
adc99ff06d Auto-publish so-filebeat image signature 2020-11-12 02:26:57 +00:00
Automation
f9b26c9a8f Auto-publish so-thehive image signature 2020-11-12 02:25:44 +00:00
Automation
41a123c22b Auto-publish so-grafana image signature 2020-11-12 02:24:19 +00:00
Automation
966089e1d0 Auto-publish so-curator image signature 2020-11-12 02:22:56 +00:00
Automation
3034d5ef98 Auto-publish so-kratos image signature 2020-11-12 02:22:11 +00:00
Automation
5ab169ea52 Auto-publish so-kibana image signature 2020-11-12 02:21:20 +00:00
Automation
f858027da1 Auto-publish so-wazuh image signature 2020-11-12 02:19:52 +00:00
Automation
c7517b37fa Auto-publish so-steno image signature 2020-11-12 02:18:25 +00:00
Automation
2f315ba5a0 Auto-publish so-redis image signature 2020-11-12 02:17:06 +00:00
Automation
ed883f173b Auto-publish so-mysql image signature 2020-11-12 02:16:12 +00:00
Automation
a46ad6fe81 Auto-publish so-minio image signature 2020-11-12 02:15:06 +00:00
Automation
42fc0add5e Auto-publish so-fleet image signature 2020-11-12 02:14:08 +00:00
Automation
f6c2983bd1 Auto-publish so-zeek image signature 2020-11-12 02:12:58 +00:00
Automation
0b8e19bfc8 Auto-publish so-acng image signature 2020-11-12 02:11:20 +00:00
Automation
bee829697e Auto-publish so-soc image signature 2020-11-12 02:10:11 +00:00
Mike Reeves
ed025851ca Change soup for new gpg verification 2020-11-11 20:13:21 -05:00
Automation
94ab77b14d Auto-publish so-nginx image signature 2020-11-12 00:57:45 +00:00
Mike Reeves
b113dce140 remove size from gpg sig 2020-11-11 19:49:25 -05:00
Automation
a2ef12eb6a Auto-publish so-nginx image signature 2020-11-12 00:46:11 +00:00
Automation
eb0b909cd2 Auto-publish so-nginx image signature 2020-11-12 00:41:23 +00:00
Automation
7ef2056f17 Auto-publish so-steno image signature 2020-11-11 22:17:26 +00:00
Automation
b12f29d48a Auto-publish so-thehive-es image signature 2020-11-11 22:16:06 +00:00
Automation
5fd1fd9b0d Auto-publish so-thehive-cortex image signature 2020-11-11 22:14:47 +00:00
Automation
ad0ecff8c5 Auto-publish so-strelka-manager image signature 2020-11-11 22:13:19 +00:00
Automation
88b6ae1b2f Auto-publish so-strelka-frontend image signature 2020-11-11 22:12:32 +00:00
Automation
9772fd181c Auto-publish so-strelka-filestream image signature 2020-11-11 22:11:36 +00:00
Automation
cfff8319bb Auto-publish so-strelka-backend image signature 2020-11-11 22:10:44 +00:00
Automation
0dc7c8b0e7 Auto-publish so-logstash image signature 2020-11-11 22:09:47 +00:00
Automation
3ccd8b40b2 Auto-publish so-kibana image signature 2020-11-11 22:08:21 +00:00
Automation
ca94bd12cf Auto-publish so-fleet-launcher image signature 2020-11-11 22:06:47 +00:00
Automation
d650e68472 Auto-publish so-filebeat image signature 2020-11-11 22:05:38 +00:00
Automation
70f9bad827 Auto-publish so-elasticsearch image signature 2020-11-11 22:04:36 +00:00
Automation
c3d6e168ae Auto-publish so-elasticsearch image signature 2020-11-11 22:03:08 +00:00
Automation
5c9c1915f1 Auto-publish so-domainstats image signature 2020-11-11 22:01:41 +00:00
Automation
32912f2c87 Auto-publish so-freqserver image signature 2020-11-11 22:00:41 +00:00
Automation
fb70e1e40c Auto-publish so-elastalert image signature 2020-11-11 21:59:35 +00:00
Automation
4106d88338 Auto-publish so-tcpreplay image signature 2020-11-11 21:58:50 +00:00
Automation
93f57b73e2 Auto-publish so-pcaptools image signature 2020-11-11 21:57:37 +00:00
Automation
4fa0b6be0e Auto-publish so-telegraf image signature 2020-11-11 21:56:53 +00:00
Automation
7ec2d85286 Auto-publish so-suricata image signature 2020-11-11 21:56:06 +00:00
Automation
763d5425a5 Auto-publish so-soctopus image signature 2020-11-11 21:55:11 +00:00
Automation
4be594cbb9 Auto-publish so-playbook image signature 2020-11-11 21:54:12 +00:00
Automation
e6fd3160ca Auto-publish so-logstash image signature 2020-11-11 21:52:59 +00:00
Automation
07871987e4 Auto-publish so-influxdb image signature 2020-11-11 21:51:49 +00:00
Automation
3c33a38098 Auto-publish so-idstools image signature 2020-11-11 21:50:43 +00:00
Automation
b24bf9b6a9 Auto-publish so-filebeat image signature 2020-11-11 21:49:41 +00:00
Automation
373d9256f2 Auto-publish so-thehive image signature 2020-11-11 21:48:26 +00:00
Automation
dde7e0bd11 Auto-publish so-grafana image signature 2020-11-11 21:46:55 +00:00
Automation
017c9c9874 Auto-publish so-curator image signature 2020-11-11 21:45:36 +00:00
Automation
871f919c27 Auto-publish so-kratos image signature 2020-11-11 21:44:53 +00:00
Automation
f67c26a8f2 Auto-publish so-kibana image signature 2020-11-11 21:43:58 +00:00
Automation
038e8fceb7 Auto-publish so-wazuh image signature 2020-11-11 21:42:21 +00:00
weslambert
8c6adc21a8 Merge pull request #1891 from Security-Onion-Solutions/syslog_cef
Update syslog pipeline to allow for initial CEF parsing and pipeline …
2020-11-11 16:40:55 -05:00
Automation
75b26fb2af Auto-publish so-redis image signature 2020-11-11 21:39:49 +00:00
Wes Lambert
8258b782fc Update syslog pipeline to allow for initial CEF parsing and pipeline targeting 2020-11-11 21:39:40 +00:00
Automation
d73542d274 Auto-publish so-nginx image signature 2020-11-11 21:38:45 +00:00
Automation
1092aa2cb1 Auto-publish so-mysql image signature 2020-11-11 21:37:49 +00:00
Automation
8668cf9a9c Auto-publish so-minio image signature 2020-11-11 21:36:45 +00:00
Automation
b9440364f7 Auto-publish so-fleet image signature 2020-11-11 21:35:44 +00:00
Automation
4f0ebfaf1f Auto-publish so-zeek image signature 2020-11-11 21:34:50 +00:00
Automation
b090656269 Auto-publish so-acng image signature 2020-11-11 21:33:29 +00:00
Automation
16e0a26869 Auto-publish so-soc image signature 2020-11-11 21:30:17 +00:00
Automation
bc362acf82 Auto-publish so-soc image signature 2020-11-11 21:05:43 +00:00
Jason Ertel
79cbc747ea Run leaktest on any branch 2020-11-11 15:52:48 -05:00
Mike Reeves
2269695e75 Change gpg to sig 2020-11-11 15:50:52 -05:00
Jason Ertel
710afe9355 Merge pull request #1889 from Security-Onion-Solutions/leaktest
Create leaktest.yml
2020-11-11 15:46:50 -05:00
Jason Ertel
ac236a0538 Move image sigs into versioned dir 2020-11-11 15:42:25 -05:00
Jason Ertel
eb7e8079ec Create leaktest.yml 2020-11-11 15:39:06 -05:00
Mike Reeves
8512042132 Change Sig Path 2020-11-11 15:37:11 -05:00
Automation
a234e1c898 Auto-publish so-thehive-es image signature 2020-11-11 20:20:56 +00:00
Automation
25c91192a1 Auto-publish so-thehive-cortex image signature 2020-11-11 20:19:33 +00:00
Automation
22f19bbe9e Auto-publish so-strelka-manager image signature 2020-11-11 20:18:03 +00:00
Automation
3b31a8d8cb Auto-publish so-strelka-frontend image signature 2020-11-11 20:17:09 +00:00
Automation
cd868d1edb Auto-publish so-strelka-filestream image signature 2020-11-11 20:16:30 +00:00
Automation
b31ea84c00 Auto-publish so-strelka-backend image signature 2020-11-11 20:15:36 +00:00
Automation
4ed6355186 Auto-publish so-logstash image signature 2020-11-11 20:14:14 +00:00
Automation
e51c2152fa Auto-publish so-kibana image signature 2020-11-11 20:12:38 +00:00
Automation
7af1b7a539 Auto-publish so-fleet-launcher image signature 2020-11-11 20:11:29 +00:00
Automation
debbe965fe Auto-publish so-filebeat image signature 2020-11-11 20:10:27 +00:00
Automation
3bbaca41c9 Auto-publish so-elasticsearch image signature 2020-11-11 20:09:30 +00:00
Automation
f2d25439e2 Auto-publish so-elasticsearch image signature 2020-11-11 20:08:10 +00:00
Automation
472fdd935e Auto-publish so-domainstats image signature 2020-11-11 20:06:33 +00:00
Automation
14304c0f28 Auto-publish so-freqserver image signature 2020-11-11 20:05:36 +00:00
Automation
6a60890c36 Auto-publish so-elastalert image signature 2020-11-11 20:04:37 +00:00
Automation
687120ce4a Auto-publish so-tcpreplay image signature 2020-11-11 20:03:28 +00:00
Automation
5e3f99c567 Auto-publish so-pcaptools image signature 2020-11-11 20:02:05 +00:00
Automation
c2ed0a6c72 Auto-publish so-telegraf image signature 2020-11-11 20:00:55 +00:00
Automation
8ed6a3ed78 Auto-publish so-suricata image signature 2020-11-11 19:59:46 +00:00
Automation
0511c851a2 Auto-publish so-soctopus image signature 2020-11-11 19:58:35 +00:00
Automation
0c7db56053 Auto-publish so-playbook image signature 2020-11-11 19:57:18 +00:00
Automation
7fae7500e8 Auto-publish so-logstash image signature 2020-11-11 19:55:41 +00:00
Automation
25b771d36f Auto-publish so-influxdb image signature 2020-11-11 19:54:19 +00:00
Automation
6febc290a8 Auto-publish so-idstools image signature 2020-11-11 19:53:15 +00:00
Automation
9e9a023377 Auto-publish so-thehive image signature 2020-11-11 19:52:11 +00:00
Automation
f069b8cced Auto-publish so-filebeat image signature 2020-11-11 19:50:50 +00:00
Automation
0d42bfb7f4 Auto-publish so-grafana image signature 2020-11-11 19:49:26 +00:00
Automation
4ccc898054 Auto-publish so-curator image signature 2020-11-11 19:48:16 +00:00
Automation
2010712929 Auto-publish so-kratos image signature 2020-11-11 19:47:11 +00:00
Automation
0ad0255e8c Auto-publish so-kibana image signature 2020-11-11 19:46:20 +00:00
Automation
ca28cc7a17 Auto-publish so-wazuh image signature 2020-11-11 19:44:58 +00:00
Automation
0fce6823db Auto-publish so-steno image signature 2020-11-11 19:43:44 +00:00
Automation
0db072d9b2 Auto-publish so-redis image signature 2020-11-11 19:42:27 +00:00
Automation
0c3a7a6214 Auto-publish so-nginx image signature 2020-11-11 19:41:26 +00:00
Automation
a58b487a0a Auto-publish so-mysql image signature 2020-11-11 19:40:32 +00:00
Automation
061b8d5b9b Auto-publish so-minio image signature 2020-11-11 19:39:38 +00:00
Automation
ff1dab283c Auto-publish so-fleet image signature 2020-11-11 19:38:45 +00:00
Automation
319867ef10 Auto-publish so-zeek image signature 2020-11-11 19:38:01 +00:00
Automation
c21131b77a Auto-publish so-acng image signature 2020-11-11 19:36:46 +00:00
Automation
638d9ddee3 Auto-publish so-soc image signature 2020-11-11 19:35:45 +00:00
Automation
dded28a54a Auto-publish so-kibana image signature 2020-11-11 19:33:55 +00:00
Automation
7132011ece Auto-publish so-steno image signature 2020-11-11 19:32:05 +00:00
Mike Reeves
3a622ee71e Hash and sig update 2020-11-11 14:29:47 -05:00
Automation
fdc1468a11 Auto-publish so-wazuh image signature 2020-11-11 18:54:25 +00:00
Automation
691f64f8a3 Auto-publish so-nginx image signature 2020-11-11 18:53:13 +00:00
Mike Reeves
a29def504e Merge branch 'dev' of https://github.com/Security-Onion-Solutions/securityonion into gpg 2020-11-11 13:52:31 -05:00
Mike Reeves
8160ef104d Merge pull request #1887 from Security-Onion-Solutions/scriptpids
Make sure scripts don't run if they are already running
2020-11-11 13:51:51 -05:00
Automation
52ee26c334 Auto-publish so-mysql image signature 2020-11-11 18:25:23 +00:00
Automation
d2c1fed2df Auto-publish so-strelka-backend image signature 2020-11-11 18:14:28 +00:00
Automation
1521224100 Auto-publish so-strelka-filestream image signature 2020-11-11 18:12:47 +00:00
Automation
97f5f8438c Auto-publish so-thehive-es image signature 2020-11-11 18:11:17 +00:00
Mike Reeves
978ba5b3ad Update zeekloss.sh 2020-11-11 13:09:52 -05:00
Automation
80b926bc31 Auto-publish so-logstash image signature 2020-11-11 18:09:41 +00:00
Mike Reeves
a4df3623be Update zeekcaptureloss.sh 2020-11-11 13:09:31 -05:00
Mike Reeves
4a80c37167 Update suriloss.sh 2020-11-11 13:09:08 -05:00
Mike Reeves
8e88c350d5 Update stenoloss.sh 2020-11-11 13:08:43 -05:00
Mike Reeves
a6a9f03cb0 Update redis.sh 2020-11-11 13:08:28 -05:00
Automation
3a9c9e3d99 Auto-publish so-strelka-frontend image signature 2020-11-11 18:08:03 +00:00
Automation
307af1248c Auto-publish so-thehive-cortex image signature 2020-11-11 18:05:26 +00:00
Automation
0224adb7c8 Auto-publish so-strelka-manager image signature 2020-11-11 18:02:54 +00:00
Automation
f4a804b88c Auto-publish so-fleet-launcher image signature 2020-11-11 17:58:56 +00:00
Automation
ea88fa7319 Auto-publish so-soctopus image signature 2020-11-11 17:56:28 +00:00
Mike Reeves
c9bfd8a253 Update oldpcap.sh 2020-11-11 12:55:28 -05:00
Mike Reeves
ee0e1ce8d7 Update influxdbsize.sh 2020-11-11 12:55:08 -05:00
Mike Reeves
814aa85dba Update helixeps.sh 2020-11-11 12:54:48 -05:00
Mike Reeves
c5ddddda2a Update checkfiles.sh 2020-11-11 12:54:31 -05:00
Mike Reeves
c75536db6d Update so-curator-delete 2020-11-11 12:54:04 -05:00
Mike Reeves
c11d8367fa Update so-curator-closed-delete-delete 2020-11-11 12:53:36 -05:00
Mike Reeves
8320421d42 Update so-curator-closed-delete 2020-11-11 12:53:05 -05:00
Automation
33bf799b47 Auto-publish so-freqserver image signature 2020-11-11 17:52:55 +00:00
Mike Reeves
047ab95e68 Update so-curator-close 2020-11-11 12:52:38 -05:00
Mike Reeves
2eb3378b62 Update so-curator-closed-delete 2020-11-11 12:50:59 -05:00
Automation
a354a6279b Auto-publish so-idstools image signature 2020-11-11 17:49:25 +00:00
Mike Reeves
578250a994 Update so-curator-delete 2020-11-11 12:48:55 -05:00
Mike Reeves
e68f90c3b5 Update so-curator-closed-delete-delete 2020-11-11 12:48:28 -05:00
Automation
5a9211693c Auto-publish so-kratos image signature 2020-11-11 17:48:03 +00:00
Automation
1e2df983af Auto-publish so-redis image signature 2020-11-11 17:46:57 +00:00
Mike Reeves
d85c99abf3 Update so-curator-close 2020-11-11 12:46:44 -05:00
Mike Reeves
c0897c7e5a Update so-curator-close 2020-11-11 12:46:19 -05:00
Automation
b4989c6c0e Auto-publish so-minio image signature 2020-11-11 17:43:17 +00:00
Automation
7a79ef6ddb Auto-publish so-zeek image signature 2020-11-11 17:41:08 +00:00
Automation
8aa3a508fa Auto-publish so-acng image signature 2020-11-11 17:39:18 +00:00
Automation
b320a1d63e Auto-publish so-fleet image signature 2020-11-11 17:12:03 +00:00
Automation
2a119d7824 Auto-publish so-soc image signature 2020-11-11 17:08:52 +00:00
Mike Reeves
73c17b77ae Update zeekcaptureloss.sh 2020-11-11 11:43:48 -05:00
Mike Reeves
edb0d71e87 Update zeekloss.sh 2020-11-11 11:43:28 -05:00
Mike Reeves
6ff1922788 Update zeekcaptureloss.sh 2020-11-11 11:42:58 -05:00
Josh Patterson
758bee3a20 Merge pull request #1886 from Security-Onion-Solutions/issue/1681
Issue/1681
2020-11-11 11:40:08 -05:00
m0duspwnens
529da993aa Merge remote-tracking branch 'remotes/origin/dev' into issue/1681 2020-11-11 11:39:08 -05:00
m0duspwnens
5a95159ec3 just use so-status.conf for containers to fix salt warning https://github.com/Security-Onion-Solutions/securityonion/issues/1681 2020-11-11 11:38:48 -05:00
Automation
fc9c31706d Auto-publish so-acng image signature 2020-11-11 16:31:42 +00:00
Mike Reeves
9548b3df54 Update stenoloss.sh 2020-11-11 11:23:20 -05:00
Mike Reeves
d3f65ac1a8 Update redis.sh 2020-11-11 11:22:52 -05:00
Mike Reeves
cb46c13054 Update oldpcap.sh 2020-11-11 11:22:28 -05:00
Mike Reeves
a4d3e109e6 Update influxdbsize.sh 2020-11-11 11:17:18 -05:00
Mike Reeves
711f5ab38f Update helixeps.sh 2020-11-11 11:16:47 -05:00
Mike Reeves
ea1227de9d Update checkfiles.sh 2020-11-11 11:16:15 -05:00
Mike Reeves
f9b52677d7 Update suriloss.sh 2020-11-11 11:15:45 -05:00
weslambert
533a65205f Merge pull request #1885 from Security-Onion-Solutions/fix/syslog_application
Add check for field
2020-11-11 10:33:24 -05:00
weslambert
ea1f53b40c Add check for field 2020-11-11 10:29:58 -05:00
Josh Patterson
0f4f029e92 Merge pull request #1883 from Security-Onion-Solutions/issue/1857
add top change for fleet getting mysql state back
2020-11-11 09:18:06 -05:00
m0duspwnens
da9a915421 add top change for fleet getting mysql state back was reverted in https://github.com/Security-Onion-Solutions/securityonion/pull/1880/files 2020-11-11 09:15:50 -05:00
weslambert
280fc501f9 Merge pull request #1882 from Security-Onion-Solutions/fix/extra_top_var
Fix duplicate vars
2020-11-11 08:53:43 -05:00
weslambert
625307ac5f Fix duplicate vars 2020-11-11 08:52:39 -05:00
weslambert
44677ad521 Merge pull request #1880 from Security-Onion-Solutions/disable_elastic
Allow for disabling Elastic stack via pillar
2020-11-11 08:29:23 -05:00
Wes Lambert
1c326f561b Allow for disabling Elastic stack via pillar 2020-11-11 13:26:59 +00:00
Josh Patterson
7b64f93bce Merge pull request #1874 from Security-Onion-Solutions/issue/1681
Issue/1681
2020-11-10 17:57:48 -05:00
m0duspwnens
15f243f0ce change names of acng and docker registry containers https://github.com/Security-Onion-Solutions/securityonion/issues/1681 2020-11-10 17:51:00 -05:00
m0duspwnens
edb00c2058 remove redundant common from top, create so-status conf files on manager before registry state https://github.com/Security-Onion-Solutions/securityonion/issues/1681 2020-11-10 17:09:38 -05:00
m0duspwnens
9e612e98ed merge with dev 2020-11-10 15:43:40 -05:00
m0duspwnens
1fc94a8f59 change to so-acng for so-status https://github.com/Security-Onion-Solutions/securityonion/issues/1681 2020-11-10 15:37:03 -05:00
m0duspwnens
c58039ab47 rename state https://github.com/Security-Onion-Solutions/securityonion/issues/1681 2020-11-10 15:34:10 -05:00
m0duspwnens
1fca5e65df redo how containers get added to so-status https://github.com/Security-Onion-Solutions/securityonion/issues/1681 2020-11-10 15:31:47 -05:00
Mike Reeves
9a59ceee4e move to so-image-common 2020-11-10 12:16:54 -05:00
Mike Reeves
c5bf9bf90d rework soup and docker refresh 2020-11-10 12:05:08 -05:00
William Wernert
676b4f0777 [fix] Close connection in mysql_conn module 2020-11-10 11:42:40 -05:00
William Wernert
6557155a8a Merge pull request #1868 from Security-Onion-Solutions/feature/improve-mysql-dep
Feature/improve mysql dep
2020-11-10 11:04:23 -05:00
William Wernert
d3227bbcb1 [refactor] Code cleanup pt. 3 2020-11-10 11:03:43 -05:00
William Wernert
7f218e5297 [feat] Also run query against mysql to ensure queries can complete 2020-11-10 11:02:34 -05:00
William Wernert
b3c527e7a9 [refactor] Code cleanup pt. 2 2020-11-10 10:05:06 -05:00
William Wernert
54d732a060 [refactor] Code cleanup 2020-11-10 10:01:10 -05:00
William Wernert
22b7de819c [fix] Put mysql import in try,catch in case it hasn't been installed 2020-11-10 10:00:21 -05:00
William Wernert
dba30fb0ed [refactor] Split 15 min mysql startup between two wait states 2020-11-10 09:48:20 -05:00
Mike Reeves
7ca8fefded gpg sign images 2020-11-10 09:45:06 -05:00
Josh Patterson
95b24b1684 Merge pull request #1865 from Security-Onion-Solutions/issue/1864
make so-status line color same as service state
2020-11-09 18:17:05 -05:00
m0duspwnens
66cd91c0a7 make so-status line color same as service state https://github.com/Security-Onion-Solutions/securityonion/issues/1864 2020-11-09 18:16:02 -05:00
Josh Patterson
64199c81e1 Merge pull request #1863 from Security-Onion-Solutions/issue/1857
Issue/1857
2020-11-09 17:54:25 -05:00
m0duspwnens
ae5bc297dd remove extra squigly https://github.com/Security-Onion-Solutions/securityonion/issues/1857 2020-11-09 17:06:32 -05:00
m0duspwnens
f5a1bd4074 only try to get enrollsecret if fleet is already enabled https://github.com/Security-Onion-Solutions/securityonion/issues/1857 2020-11-09 16:25:28 -05:00
m0duspwnens
407a655717 merge with dev 2020-11-09 15:29:19 -05:00
m0duspwnens
0e19594c97 enable fleet in global pillars before running fleet state during setup https://github.com/Security-Onion-Solutions/securityonion/issues/1857 2020-11-09 15:25:11 -05:00
William Wernert
ff4d7a6cb6 [fix] Sync modules so states can use our modules during setup 2020-11-09 14:01:19 -05:00
William Wernert
f647a06239 [fix] Correct percentage steps 2020-11-09 13:37:42 -05:00
Josh Patterson
d122ca1ba3 Merge pull request #1861 from Security-Onion-Solutions/issue/1857
fix top logic for mysql for fleet/playbook
2020-11-09 13:16:28 -05:00
m0duspwnens
5616aa6beb fix top logic for mysql - https://github.com/Security-Onion-Solutions/securityonion/issues/1857 2020-11-09 13:12:45 -05:00
William Wernert
394fa727cb [fix] Don't overwrite mysql module 2020-11-09 13:05:29 -05:00
William Wernert
9960cf0592 [feat] Add salt module to check if mysql is accepting db connections 2020-11-09 12:05:37 -05:00
weslambert
059c4e03e1 Merge pull request #1860 from Security-Onion-Solutions/strelka-parsing
Pull out additional fields from Exif info
2020-11-09 11:54:55 -05:00
Wes Lambert
7e578d2ce0 Pull out additional fields from Exif info 2020-11-09 16:53:53 +00:00
William Wernert
12125deecb [feat] Show link state in whiptail menus 2020-11-09 11:06:08 -05:00
William Wernert
51256983da [fix] Make sure pip is installed on Ubuntu 2020-11-06 08:53:30 -05:00
William Wernert
0718dbbd4d Merge branch 'dev' of github.com:Security-Onion-Solutions/securityonion into dev 2020-11-06 08:52:42 -05:00
William Wernert
6b2ab67c58 [fix] Bump version of navigator json to 3.0 + fix booleans 2020-11-06 08:52:36 -05:00
Josh Patterson
64fd27fd78 Merge pull request #1843 from Security-Onion-Solutions/issue/1536
increase so-status padding by 1
2020-11-05 19:10:06 -05:00
m0duspwnens
7eb0dab6c7 increase padding by 1 - https://github.com/Security-Onion-Solutions/securityonion/issues/1536 2020-11-05 19:08:19 -05:00
Josh Patterson
0caf054da0 Merge pull request #1842 from Security-Onion-Solutions/issue/1764
show if disabled regardless of highstate status
2020-11-05 18:50:09 -05:00
m0duspwnens
21b284fb10 show if disabled regardless of highstate status - https://github.com/Security-Onion-Solutions/securityonion/issues/1764 2020-11-05 18:46:11 -05:00
Josh Patterson
3d1412a138 Merge pull request #1841 from Security-Onion-Solutions/issue/1764
Issue/1764
2020-11-05 18:24:51 -05:00
m0duspwnens
c7b4a5351c fix logic - https://github.com/Security-Onion-Solutions/securityonion/issues/1764 2020-11-05 18:17:11 -05:00
m0duspwnens
a95129b8c2 add color - https://github.com/Security-Onion-Solutions/securityonion/issues/1764 2020-11-05 18:03:42 -05:00
m0duspwnens
695bace3e8 https://github.com/Security-Onion-Solutions/securityonion/issues/1764 2020-11-05 17:54:10 -05:00
m0duspwnens
47cac59adb https://github.com/Security-Onion-Solutions/securityonion/issues/1764 2020-11-05 17:52:28 -05:00
m0duspwnens
1a75ebdca3 https://github.com/Security-Onion-Solutions/securityonion/issues/1764 2020-11-05 17:51:51 -05:00
m0duspwnens
8da070d511 https://github.com/Security-Onion-Solutions/securityonion/issues/1764 2020-11-05 17:46:23 -05:00
William Wernert
d2ea197ce0 [fix] Remove old entry for manager from known_hosts
Resolves #1839
2020-11-05 14:40:00 -05:00
William Wernert
b528fe1a03 [fix] Only show analyst on network installs
Closes #1682
2020-11-05 14:39:04 -05:00
weslambert
3abe8cb397 Merge pull request #1836 from Security-Onion-Solutions/fix/wazuh_agent_register
Don't sleep if not registering agent
2020-11-05 14:03:32 -05:00
weslambert
2911e37b70 Don't sleep if not registering agent 2020-11-05 14:03:08 -05:00
William Wernert
4fed5c2518 Merge pull request #1822 from Security-Onion-Solutions/feature/setup-idempotency
Feature/setup idempotency
2020-11-05 13:48:18 -05:00
William Wernert
a5833f1f77 Merge branch 'dev' into feature/setup-idempotency
# Conflicts:
#	setup/so-functions
2020-11-05 13:48:05 -05:00
William Wernert
b27b2e358b [fix] Set MSRVIP variable before hosts file is overwritten 2020-11-05 13:38:08 -05:00
William Wernert
915aaf58f2 [fix] Always set MSRVIP because /etc/hosts is wiped 2020-11-05 13:28:21 -05:00
William Wernert
f058fb460d [fix] Don't modify hosts file during whiptail menus 2020-11-05 13:25:02 -05:00
William Wernert
f7394559d4 [fix] Only add entry to /etc/hosts if unable to resolve hostname 2020-11-05 13:16:52 -05:00
Josh Patterson
ec3f35c360 Merge pull request #1832 from Security-Onion-Solutions/patch_2.3.3
Patch 2.3.3
2020-11-05 10:00:43 -05:00
Josh Patterson
fea6e6f4f9 Merge branch 'dev' into patch_2.3.3 2020-11-05 09:58:43 -05:00
William Wernert
cb75b2df65 [revert] Remove wazuh-agent package as well 2020-11-04 16:23:51 -05:00
William Wernert
4369b8d0f6 [fix] Remove wazuh-agent package as well 2020-11-04 16:14:58 -05:00
William Wernert
5cb8d0beda [fix] Add -q flag to grep 2020-11-04 14:23:24 -05:00
William Wernert
b4446cba9a [refactor][wip] Also backup directories in /nsm 2020-11-04 14:20:51 -05:00
William Wernert
1e41b9ba31 [fix] Add conditions for commands so they're less likely to fail 2020-11-04 14:20:26 -05:00
William Wernert
b2759c4c7c [fix] Uninstall launcher if installed 2020-11-04 14:19:25 -05:00
Mike Reeves
6b144903fc Update VERIFY_ISO.md 2020-11-04 13:47:37 -05:00
Mike Reeves
3825becd1b Update changes.json 2020-11-04 13:44:52 -05:00
Mike Reeves
2aa21512e5 Update soup 2020-11-04 13:40:45 -05:00
William Wernert
3150367b1d [fix] Add epoch string to /opt/so folder name 2020-11-04 12:52:37 -05:00
William Wernert
3ac9c43b7b Merge branch 'dev' into feature/setup-idempotency 2020-11-04 12:44:14 -05:00
William Wernert
b643363e82 [fix] Directories need -r flag 2020-11-04 12:07:34 -05:00
Jason Ertel
8d5c29340e Add screenshots to readme 2020-11-04 12:03:57 -05:00
Jason Ertel
1e9e156a87 Improve issue template directions 2020-11-04 11:49:22 -05:00
Jason Ertel
a364f13d24 Add issue template 2020-11-04 11:42:39 -05:00
William Wernert
3d70698647 [fix] Remove old mysql db directory 2020-11-04 11:26:56 -05:00
Mike Reeves
e989fc7041 Update map.jinja 2020-11-04 10:58:52 -05:00
William Wernert
49af35b440 [fix][wip] Add reinstall_init function (part 3)
Create a function that, if the setup log exists, puts the system into a state where
the installer can run again without issue.

This is WIP, there are most likely still issues.
2020-11-04 10:38:48 -05:00
Mike Reeves
4592e2d4d7 add airgap option to upgradecommand 2020-11-04 10:08:01 -05:00
Mike Reeves
ec64314b70 Fix soup to clear yum cache for airgap 2020-11-04 10:00:44 -05:00
Mike Reeves
cf001875c2 Update soup 2020-11-03 20:14:15 -05:00
Mike Reeves
c7367eea38 Fix AGREPO Variable 2020-11-03 19:08:58 -05:00
William Wernert
db31cf3083 [refactor][fix] Remove old so-* containers, make fs changes after whiptail menus 2020-11-03 18:10:16 -05:00
Mike Reeves
8edb1529a9 Update soup 2020-11-03 17:36:53 -05:00
Mike Reeves
e8616e4d46 Update soup 2020-11-03 17:19:55 -05:00
William Wernert
3bf57382ce [fix] Change when /opt/so is removed 2020-11-03 17:05:34 -05:00
Jason Ertel
def993f4ed Improve salt version update comment 2020-11-03 16:50:22 -05:00
William Wernert
96ec483ae4 [fix][wip] Remove /opt/so directory during reinstall 2020-11-03 16:49:00 -05:00
William Wernert
6169758f4e [fix] 0 -> root so file owner is set correctly 2020-11-03 16:47:59 -05:00
William Wernert
1c91e2d50b [fix] Add minion_config variable so sed works 2020-11-03 15:48:08 -05:00
William Wernert
57e7e61f21 [fix] Don't add proxy to yum.conf on manager nodes 2020-11-03 15:45:19 -05:00
William Wernert
93ab4b5d4f [fix][wip] Add reinstall_init function (part 2)
Create a function that, if the setup log exists, puts the system into a state where
the installer can run again without issue.

This is WIP, there are most likely still issues.
2020-11-03 15:44:37 -05:00
William Wernert
00fc256c37 [fix][wip] Add reinstall_init function
Create a function that, if the setup log exists, puts the system into a state where
the installer can run again without issue.

This is WIP, there are most likely still issues.
2020-11-03 14:51:35 -05:00
Mike Reeves
887f412e48 Remove docker_clean from docker_update function 2020-11-03 13:54:00 -05:00
Jason Ertel
aa9aa59213 Correct cheatsheetUrl for airgap installs 2020-11-03 12:27:55 -05:00
m0duspwnens
a859aa4f48 upgrade from salt 3001.1 to salt 3002.1 - https://github.com/Security-Onion-Solutions/securityonion/issues/1807 2020-11-03 11:54:28 -05:00
Jason Ertel
82a7b7e02d Upgrade to Kratos 0.5.3-alpha1 2020-11-03 11:50:25 -05:00
Mike Reeves
85ea61bf98 Update VERSION 2020-11-03 11:40:03 -05:00
Mike Reeves
7f4b8e8183 Update README.md 2020-11-03 11:39:42 -05:00
Josh Patterson
1f8b139462 Merge pull request #1806 from Security-Onion-Solutions/issue/1782
Issue/1782
2020-11-03 11:23:22 -05:00
m0duspwnens
562a016579 remove more from sosetup.log 2020-11-03 10:23:56 -05:00
weslambert
e040009d0b Merge pull request #1804 from Security-Onion-Solutions/fix/wazuh_api_creds_remove
Remove Wazuh API creds after registering initial agent
2020-11-03 09:57:58 -05:00
Wes Lambert
7dca988c11 Remove Wazuh API creds after registering intial agent 2020-11-03 14:53:50 +00:00
Mike Reeves
f007ef0ef5 Update so-functions 2020-11-02 17:00:02 -05:00
weslambert
bfe98433f6 Merge pull request #1789 from Security-Onion-Solutions/fix/zeek_intel
Add Zeek intel.dat
2020-11-02 16:38:16 -05:00
Wes Lambert
05549a2362 Add Zeek intel.dat 2020-11-02 21:36:44 +00:00
m0duspwnens
7e090b0894 dont echo salt minion config file to prevent mysql.pass from showing in sosetup.log 2020-11-02 16:23:34 -05:00
weslambert
8a645edb34 Merge pull request #1788 from Security-Onion-Solutions/feature/nids_rules
Allow for muliple files for rules
2020-11-02 16:05:53 -05:00
Wes Lambert
24a54a326c Allow for muliple files for rules 2020-11-02 21:03:45 +00:00
Jason Ertel
184d163d65 Do not persist the Cortex PID file; This allows Cortex to recover from non-graceful container shutdowns, such as a power loss event on the host machine 2020-11-02 15:04:13 -05:00
weslambert
bb0cf9b8c7 Merge pull request #1784 from Security-Onion-Solutions/fix/strelka_exif_parsing
Fix/strelka exif parsing
2020-11-02 14:32:45 -05:00
Wes Lambert
3113d5fbdb Format scan.exiftool as text 2020-11-02 19:31:14 +00:00
Wes Lambert
6420ee0310 Update parsing for scan.exiftool 2020-11-02 19:28:12 +00:00
William Wernert
033f5dbb9c [fix] Use (mostly) absolute path when adding to PATH 2020-11-02 14:25:46 -05:00
William Wernert
1c4abcef15 [fix] Kill all jobs before checking if we can reach the salt master 2020-11-02 14:25:02 -05:00
Jason Ertel
2acb930a2e fix: Remove crontab for automation installs 2020-11-02 11:08:45 -05:00
weslambert
37c630d6ab Merge pull request #1776 from Security-Onion-Solutions/bugfix/af-packet-ring-size
Match max-pending-packets size
2020-11-02 08:39:21 -05:00
weslambert
71a260a000 Match max-pending-packets size 2020-11-02 08:38:45 -05:00
jtgreen-cse
6359e03ba6 fix for Windows events via osquery
This change was required to properly let Windows events flow through their specific pipelines. Otherwise, the `temp` field stays around and gets ingested in ES.
2020-10-29 15:03:13 -04:00
William Wernert
b489fee8b5 Merge pull request #1738 from Security-Onion-Solutions/bugfix/nginx-redirect
Bugfix/nginx redirect
2020-10-29 14:33:38 -04:00
William Wernert
91221c4332 [revert] Move proxy_pass back to ip 2020-10-29 10:23:12 -04:00
Mike Reeves
57d8f25422 Create master node role in ES 2020-10-28 16:44:14 -04:00
William Wernert
3abd1c9f16 [fix] Configure soctopus to use url_base 2020-10-28 16:08:19 -04:00
Mike Reeves
b14c1d0999 Merge pull request #1713 from Security-Onion-Solutions/logstashbind
Add a place where custom logstash certs can go
2020-10-28 15:27:26 -04:00
Mike Reeves
13be0da484 Add a place where custom logstash certs can go 2020-10-28 15:26:41 -04:00
Mike Reeves
3385d98a2a Merge pull request #1712 from Security-Onion-Solutions/logstashbind
Add a place where custom logstash certs can go
2020-10-28 15:26:08 -04:00
Mike Reeves
361b13dc88 Add a place where custom logstash certs can go 2020-10-28 15:25:00 -04:00
Jason Ertel
98c669e80b Disable nginx server version and TLSv1.0/TLSv1.1 2020-10-28 14:29:29 -04:00
William Wernert
b02d434a0e [fix] Change any scripts using auth headers to url_base 2020-10-28 12:29:09 -04:00
William Wernert
3ee9f23d26 [fix] Use url_base in sensoroni.json instead of manager hostname 2020-10-28 12:28:34 -04:00
Jason Ertel
348c2feee2 Prevent usage of dollar signs in admin passwords during setup 2020-10-28 11:07:05 -04:00
Mike Reeves
b238c492e4 Update so-functions 2020-10-28 10:50:10 -04:00
Mike Reeves
97207bd006 Merge pull request #1702 from Security-Onion-Solutions/dockernet
Custom Docker IP Range
2020-10-28 10:48:56 -04:00
Mike Reeves
bed70ab6bf Update whiptail menu for docker question 2020-10-28 10:19:15 -04:00
Mike Reeves
8173cb589b Update whiptail menu for docker question 2020-10-28 10:17:53 -04:00
Mike Reeves
563a606e0e Upodate dockernet menu 2020-10-28 10:14:14 -04:00
Mike Reeves
8d952eca7e Upodate dockernet menu 2020-10-28 10:12:07 -04:00
Mike Reeves
8f7dffea4b Upodate dockernet menu 2020-10-28 10:10:43 -04:00
weslambert
7ea8dc84b6 Merge pull request #1696 from Security-Onion-Solutions/feature/wazuh-user-mods
Add Wazuh user management scripts
2020-10-28 08:24:15 -04:00
Wes Lambert
453247971e Add Wazuh user management scripts 2020-10-28 12:22:50 +00:00
Mike Reeves
741e17a637 add bip for docker 2020-10-27 18:21:53 -04:00
Mike Reeves
fedf334ee9 add bip for docker 2020-10-27 18:21:09 -04:00
Mike Reeves
8fee19ee1b add bip for docker 2020-10-27 18:01:48 -04:00
Mike Reeves
697bc53aec Dockernet Modifications 2020-10-27 15:08:34 -04:00
Jason Ertel
5a705fc0f2 Add Hunt quick action for hunted events, grouping by dataset and module 2020-10-27 12:30:33 -04:00
William Wernert
7b17b4abc7 Merge pull request #1680 from Security-Onion-Solutions/feature/setup-fixes
Feature/setup fixes
2020-10-27 12:17:21 -04:00
William Wernert
a043bc7cc4 [fix] Second if to elif 2020-10-27 12:16:19 -04:00
William Wernert
72dc267ab5 [fix] Menu sizing fixes 2020-10-27 12:14:44 -04:00
William Wernert
970be4d530 [fix] Change cd to relative
Since the script already changes to the correct dir, we can work from relative directories now.
2020-10-27 12:13:07 -04:00
Jason Ertel
474c4e54b4 Ensure labels and icons are associated with all quick actions 2020-10-27 12:04:57 -04:00
Mike Reeves
d4dd4aa416 Add missing comma in daemon.json 2020-10-27 11:25:45 -04:00
William Wernert
5054138be9 [feat] Add analyst option + add back helix option 2020-10-27 11:21:03 -04:00
William Wernert
83c23dd5de [fix] Remove old got_root call 2020-10-27 11:20:39 -04:00
Mike Reeves
42e00514f5 Adding docker net setting 2020-10-27 11:09:14 -04:00
William Wernert
e75f8ba257 [fix] Move root check to top of so-setup 2020-10-27 09:39:29 -04:00
William Wernert
564ac3a4ff Merge pull request #980 from Security-Onion-Solutions/feature/nginx-update
Feature/nginx update
2020-10-27 09:29:43 -04:00
William Wernert
c58deef2e0 Merge branch 'dev' into feature/nginx-update 2020-10-27 09:29:06 -04:00
Mike Reeves
0ad65c8cd4 Merge pull request #1568 from jtgreen-cse/patch-1
fix for rendering error >1 search node
2020-10-26 16:57:17 -04:00
William Wernert
0aaf8d6d9a [fix] Change 301 to 307 so curl requests work as intended 2020-10-26 16:37:16 -04:00
William Wernert
37ede9b993 [wip] Redirect so-user-add to separate log so ERROR isn't in main log 2020-10-26 15:03:27 -04:00
Mike Reeves
5395983fc7 Merge pull request #1580 from Security-Onion-Solutions/feature/thehive-casetemplates
Add case_template field to Playbook alerts
2020-10-26 14:13:54 -04:00
William Wernert
3648e293a1 [fix] Add -L option to curl to respect redirects 2020-10-26 14:08:52 -04:00
Mike Reeves
ecfd1bbe4d Merge remote-tracking branch 'remotes/origin/dev' into escluster 2020-10-26 13:33:05 -04:00
Mike Reeves
12acc2e123 Merge pull request #1663 from Security-Onion-Solutions/TOoSmOotH-patch-1
Update VERIFY_ISO.md
2020-10-26 13:10:18 -04:00
Mike Reeves
8d84718c91 Update VERIFY_ISO.md 2020-10-26 13:08:30 -04:00
Jason Ertel
3809573963 Correct cheatsheet URL for airgap installs 2020-10-26 12:16:55 -04:00
Jason Ertel
571550c019 Merge master into dev 2020-10-26 10:30:26 -04:00
William Wernert
e613bb3740 Merge branch 'dev' into feature/nginx-update 2020-10-26 10:28:14 -04:00
William Wernert
4662837075 [fix] Revert changes from merging dev 2020-10-26 10:25:16 -04:00
Mike Reeves
892ca294dc Merge pull request #1655 from Security-Onion-Solutions/patch_2.3.2
2.3.2
2020-10-26 10:17:23 -04:00
Mike Reeves
45fd325307 Update VERIFY_ISO.md 2020-10-26 10:11:58 -04:00
Mike Reeves
653561ad95 Update VERIFY_ISO.md 2020-10-26 10:09:25 -04:00
Mike Reeves
f75badf43a 2.3.2 ISO info 2020-10-26 09:53:26 -04:00
Doug Burks
c61199618a Update so-curator-closed-delete-delete 2020-10-24 07:15:43 -04:00
Mike Reeves
d9c021e86a Update so-curator-closed-delete-delete 2020-10-23 17:07:16 -04:00
Mike Reeves
951f6ab3e2 Update VERIFY_ISO.md 2020-10-23 16:48:05 -04:00
Mike Reeves
da488945e0 Update VERIFY_ISO.md 2020-10-23 16:47:43 -04:00
Mike Reeves
b6f1cfada6 Update changes.json 2020-10-23 16:44:02 -04:00
Jason Ertel
85e0b2cab3 Add cheatsheet URL to soc.json 2020-10-23 16:35:35 -04:00
Mike Reeves
c8a6b232d5 Fix which field we return for Elastic index 2020-10-23 15:58:35 -04:00
William Wernert
fdb7cb90e3 [wip] Test alt variable usage 2020-10-23 15:36:01 -04:00
William Wernert
73b83584e6 [fix] Remove bad '_' character 2020-10-23 14:32:43 -04:00
Mike Reeves
801f4aae8e Update README.md 2020-10-23 10:09:07 -04:00
Mike Reeves
c066cc67dc Update VERSION 2020-10-23 10:08:45 -04:00
Josh Patterson
1185e43064 Merge pull request #1614 from Security-Onion-Solutions/issue/1573
Issue/1573 and Issue/1601
2020-10-22 15:57:40 -04:00
Mike Reeves
51ca661219 update wording for USB device vs CDROM 2020-10-22 14:54:34 -04:00
m0duspwnens
50a767ca6c dont list aptcacherng in so-status if user chose open updates during setup - https://github.com/Security-Onion-Solutions/securityonion/issues/1573 2020-10-22 14:52:07 -04:00
Mike Reeves
174bbc6cd9 Update VERSION 2020-10-22 14:14:57 -04:00
William Wernert
6a08086dfa [refactor] Make variable names consistent 2020-10-22 14:10:06 -04:00
Mike Reeves
a3579b88ae Merge pull request #1604 from Security-Onion-Solutions/dev
2.3.1
2020-10-22 14:08:41 -04:00
William Wernert
6a3e921924 [fix] Fixes for fleet install 2020-10-22 13:09:26 -04:00
Mike Reeves
4a0796359b Update README.md 2020-10-22 12:54:05 -04:00
m0duspwnens
0bfdef274b update so-status to work with disabled containers - https://github.com/Security-Onion-Solutions/securityonion/issues/1601 2020-10-22 12:09:19 -04:00
Mike Reeves
92d397d573 Update ISO instructions 2020-10-22 11:59:39 -04:00
m0duspwnens
0b6b6e38fc fix map for steno 2020-10-22 11:24:18 -04:00
m0duspwnens
aa59eff1ac fix if statement 2020-10-22 10:59:03 -04:00
m0duspwnens
172ca9aa8d add option to enable or disable to steno docker container - https://github.com/Security-Onion-Solutions/securityonion/issues/1601 2020-10-22 10:52:34 -04:00
William Wernert
79c4f07ff7 [fix] Don't listen on port 80 on all installs 2020-10-22 10:43:24 -04:00
Mike Reeves
460a391460 Update changes.json 2020-10-22 10:00:20 -04:00
Mike Reeves
905fcd06a6 Remove old 2.3.0 dockers 2020-10-22 08:51:40 -04:00
Josh Patterson
0b7f1fb189 Merge pull request #1594 from Security-Onion-Solutions/issue/1593
fix grabbing soversion in so-features-enable
2020-10-21 16:51:06 -04:00
m0duspwnens
712dc6b277 fix grabbing soversion in so-features-enable 2020-10-21 16:47:48 -04:00
Josh Patterson
b93709e05f Merge pull request #1591 from Security-Onion-Solutions/issue/1590
fix arg for so-firewall addhostgroup
2020-10-21 15:48:02 -04:00
m0duspwnens
32294eb2ed fix arg for so-firewall addhostgroup 2020-10-21 15:34:35 -04:00
Josh Patterson
2da656ff95 Merge pull request #1589 from Security-Onion-Solutions/issue/1551
only allow hosts in syslog host group to connect to manager type nodes
2020-10-21 14:41:50 -04:00
m0duspwnens
ef1e05db3e only allow hosts in syslog host group to connect to manager type nodes 2020-10-21 14:41:03 -04:00
Josh Patterson
798abdbcde Merge pull request #1584 from Security-Onion-Solutions/issue/1551
firewall to allow search nodes to connect to beats on manager
2020-10-21 12:50:49 -04:00
m0duspwnens
8805fef187 firewall to allow search nodes to connect to beats on manager 2020-10-21 12:43:28 -04:00
Josh Patterson
aafd365f2b Merge pull request #1583 from Security-Onion-Solutions/issue/1551
add firewall rules for syslog
2020-10-21 11:21:18 -04:00
m0duspwnens
5f43380aa0 add firewall rules for syslog 2020-10-21 11:20:34 -04:00
Josh Brower
844ffe8fdf nest case_template 2020-10-21 09:58:31 -04:00
Josh Brower
1e14d66f54 Add case_template field to Playbook alerts 2020-10-21 08:59:26 -04:00
weslambert
e2d95e0deb Merge pull request #1576 from Security-Onion-Solutions/fix/comon_nids_rule_ruleset
Change rule_ruleset to rule.ruleset
2020-10-20 22:15:00 -04:00
weslambert
4765ef5f5c Change rule_ruleset to rule.ruleset 2020-10-20 22:14:23 -04:00
William Wernert
d63358c8f0 [fix] Correct pillar reference + nginx errors 2020-10-20 14:30:06 -04:00
Jason Ertel
d37ddf584a Correct quick action defaults 2020-10-20 14:12:23 -04:00
jtgreen-cse
eaa41266a2 fix for rendering error >1 search node
Fails rendering if you have more than one search node.
2020-10-20 13:24:53 -04:00
Mike Reeves
4a9fcfb8cf Fix missing quote 2020-10-20 13:17:40 -04:00
Mike Reeves
a119d8f27d Fix config for airgap installs 2020-10-20 11:28:49 -04:00
Mike Reeves
87adbb5f81 printf issues 2020-10-19 17:20:33 -04:00
Mike Reeves
722f2b3913 Fix pillar syntax 2020-10-19 17:08:06 -04:00
Mike Reeves
3cb419174a Fix pillar syntax 2020-10-19 17:04:06 -04:00
Mike Reeves
55b6f5ce99 Fix pillar syntax 2020-10-19 17:02:26 -04:00
Mike Reeves
4e1bff2231 Fix pillar syntax 2020-10-19 16:56:13 -04:00
Mike Reeves
7e0063d474 Fix pillar syntax 2020-10-19 16:55:11 -04:00
Mike Reeves
23bc5e303e Add clustering to ES function 2020-10-19 16:52:43 -04:00
Mike Reeves
6f703fad25 Change whiptail logic 2020-10-19 16:44:43 -04:00
Mike Reeves
c538e5f85b Change whiptail logic 2020-10-19 16:40:56 -04:00
Mike Reeves
c22e8c08a6 Change whiptail logic 2020-10-19 16:40:22 -04:00
Mike Reeves
f893cf203f Change whiptail logic 2020-10-19 16:38:17 -04:00
Mike Reeves
bbb825a207 Add cluster whiptail questions 2020-10-19 16:33:40 -04:00
Josh Patterson
ba1dfcd774 Merge pull request #1554 from Security-Onion-Solutions/issue/1551
Issue/1551
2020-10-19 16:10:50 -04:00
m0duspwnens
10e4248cfc and node that gets filebeat state now can listen for syslog - https://github.com/Security-Onion-Solutions/securityonion/issues/1551 2020-10-19 16:10:20 -04:00
Mike Reeves
bab6b151ff Add cluster whiptail questions 2020-10-19 16:07:22 -04:00
William Wernert
42e285cfbe Merge branch 'dev' into feature/nginx-update
# Conflicts:
#	salt/nginx/etc/nginx.conf
#	salt/nginx/etc/nginx.conf.so-eval
#	salt/nginx/etc/nginx.conf.so-manager
#	salt/nginx/etc/nginx.conf.so-standalone
2020-10-19 13:25:46 -04:00
Mike Reeves
97a2d91d15 Re-arrange whiptail screens 2020-10-19 12:14:30 -04:00
m0duspwnens
79854f111e add 514 tcp listener to filebeat docker and add syslog listener to fb config for manager and manager search - https://github.com/Security-Onion-Solutions/securityonion/issues/1551 2020-10-19 10:27:40 -04:00
Josh Patterson
a05329e7d8 Merge pull request #1532 from Masaya-A/patch-1
Grafana /nsm fix for eval/standalone
2020-10-16 16:48:12 -04:00
Masaya-A
47652ac080 Update eval.json 2020-10-17 04:45:12 +09:00
Masaya-A
964919109d Update standalone.json 2020-10-17 04:35:39 +09:00
Jason Ertel
a968e5c23f Increment version to 2.3.1 2020-10-16 10:57:31 -04:00
William Wernert
6f73d62400 Merge branch 'dev' into feature/nginx-update 2020-07-20 13:13:32 -04:00
William Wernert
a5c790c31e [fix] managerr -> manager 2020-07-10 17:50:53 -04:00
William Wernert
8b146aac32 Merge branch 'dev' into feature/nginx-update
# Conflicts:
#	salt/nginx/etc/nginx.conf
#	salt/nginx/etc/nginx.conf.so-eval
#	salt/nginx/etc/nginx.conf.so-manager
#	salt/nginx/etc/nginx.conf.so-managersearch
#	salt/nginx/etc/nginx.conf.so-mastersearch
#	salt/nginx/etc/nginx.conf.so-standalone
2020-07-10 17:49:34 -04:00
William Wernert
81006ebbd0 [fix] Reflect new manager syntax 2020-07-10 17:46:15 -04:00
William Wernert
49e5cb311e [fix][WIP] set ssl cert for redirect 443 server block 2020-07-08 16:05:48 -04:00
William Wernert
533ed395e7 [fix][WIP] Remove ssl and http2 from redirect server block 2020-07-08 15:59:31 -04:00
William Wernert
a0ffe26334 [fix] Only one default_server is allowed per port 2020-07-08 15:56:36 -04:00
William Wernert
0c3e35c55e [fix] correct jinja template syntax 2020-07-08 14:30:27 -04:00
William Wernert
cfd1b82e00 [refactor] Redirect to correct url_base + combine configs 2020-07-08 13:49:33 -04:00
214 changed files with 6188 additions and 5577 deletions

12
.github/ISSUE_TEMPLATE vendored Normal file
View File

@@ -0,0 +1,12 @@
PLEASE STOP AND READ THIS INFORMATION!
If you are creating an issue just to ask a question, you will likely get faster and better responses by posting to our discussions forum instead:
https://securityonion.net/discuss
If you think you have found a possible bug or are observing a behavior that you weren't expecting, use the discussion forum to start a conversation about it instead of creating an issue.
If you are very familiar with the latest version of the product and are confident you have found a bug in Security Onion, you can continue with creating an issue here, but please make sure you have done the following:
- duplicated the issue on a fresh installation of the latest version
- provide information about your system and how you installed Security Onion
- include relevant log files
- include reproduction steps

15
.github/workflows/leaktest.yml vendored Normal file
View File

@@ -0,0 +1,15 @@
name: leak-test
on: [push,pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: '0'
- name: Gitleaks
uses: zricethezav/gitleaks-action@master

1
KEYS
View File

@@ -1,4 +1,5 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBF7rzwEBEADBg87uJhnC3Ls7s60hbHGaywGrPtbz2WuYA/ev3YS3X7WS75p8
PGlzTWUCujx0pEHbK2vYfExl3zksZ8ZmLyZ9VB3oSLiWBzJgKAeB7YCFEo8te+eE
P2Z+8c+kX4eOV+2waxZyewA2TipSkhWgStSI4Ow8SyVUcUWA3hCw7mo2duNVi7KO

View File

@@ -1,7 +1,14 @@
## Security Onion 2.3.0
## Security Onion 2.3.21
Security Onion 2.3.0 is here!
Security Onion 2.3.21 is here!
## Screenshots
Alerts
![Alerts](https://raw.githubusercontent.com/security-onion-solutions/securityonion/master/screenshots/alerts-1.png)
Hunt
![Hunt](https://raw.githubusercontent.com/security-onion-solutions/securityonion/master/screenshots/hunt-1.png)
### Release Notes

View File

@@ -1,16 +1,16 @@
### 2.3.0 ISO image built on 2020/10/15
### 2.3.21 ISO image built on 2020/12/21
### Download and Verify
2.3.0 ISO image:
https://download.securityonion.net/file/securityonion/securityonion-2.3.0.iso
2.3.21 ISO image:
https://download.securityonion.net/file/securityonion/securityonion-2.3.21.iso
MD5: E05B220E4FD7C054DF5C50906EE1375B
SHA1: 55E93C6EAB140AB4A0F07873CC871EBFDC699CD6
SHA256: 57B96A6E0951143E123BFC0CD0404F7466776E69F3C115F5A0444C0C6D5A6E32
MD5: 7B8BC5B241B7220C011215BCE852FF78
SHA1: 541C9689D8F8E8D3F25E169ED34A3F683851975B
SHA256: 7647FD67BA6AC85CCB1308789FFF7DAB19A841621FDA9AE41B89A0A79618F068
Signature for ISO image:
https://github.com/Security-Onion-Solutions/securityonion/raw/master/sigs/securityonion-2.3.0.iso.sig
https://github.com/Security-Onion-Solutions/securityonion/raw/master/sigs/securityonion-2.3.21.iso.sig
Signing key:
https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/master/KEYS
@@ -24,22 +24,22 @@ wget https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/ma
Download the signature file for the ISO:
```
wget https://github.com/Security-Onion-Solutions/securityonion/raw/master/sigs/securityonion-2.3.0.iso.sig
wget https://github.com/Security-Onion-Solutions/securityonion/raw/master/sigs/securityonion-2.3.21.iso.sig
```
Download the ISO image:
```
wget https://download.securityonion.net/file/securityonion/securityonion-2.3.0.iso
wget https://download.securityonion.net/file/securityonion/securityonion-2.3.21.iso
```
Verify the downloaded ISO image using the signature file:
```
gpg --verify securityonion-2.3.0.iso.sig securityonion-2.3.0.iso
gpg --verify securityonion-2.3.21.iso.sig securityonion-2.3.21.iso
```
The output should show "Good signature" and the Primary key fingerprint should match what's shown below:
```
gpg: Signature made Thu 15 Oct 2020 08:06:28 PM EDT using RSA key ID FE507013
gpg: Signature made Mon 21 Dec 2020 06:27:53 PM EST 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 +1 @@
2.3.0
2.3.21

View File

@@ -54,7 +54,8 @@ if [ $TYPE == 'evaltab' ] || [ $TYPE == 'standalonetab' ]; then
salt-call state.apply utility queue=True
fi
fi
#if [ $TYPE == 'nodestab' ]; then
if [ $TYPE == 'nodestab' ]; then
salt-call state.apply elasticsearch queue=True
# echo " nodetype: $NODETYPE" >> $local_salt_dir/pillar/data/$TYPE.sls
# echo " hotname: $HOTNAME" >> $local_salt_dir/pillar/data/$TYPE.sls
#fi
fi

View File

@@ -1,65 +0,0 @@
firewall:
analyst:
ports:
tcp:
- 80
- 443
udp:
beats_endpoint:
ports:
tcp:
- 5044
forward_nodes:
ports:
tcp:
- 443
- 5044
- 5644
- 9822
udp:
manager:
ports:
tcp:
- 1514
- 3200
- 3306
- 4200
- 5601
- 6379
- 7788
- 8086
- 8090
- 9001
- 9200
- 9300
- 9400
- 9500
- 9595
- 9696
udp:
- 1514
minions:
ports:
tcp:
- 3142
- 4505
- 4506
- 5000
- 8080
- 8086
- 55000
osquery_endpoint:
ports:
tcp:
- 8090
search_nodes:
ports:
tcp:
- 6379
- 9300
wazuh_endpoint:
ports:
tcp:
- 1514
udp:
-1514

View File

@@ -3,7 +3,7 @@ base:
- patch.needs_restarting
- logrotate
'*_eval or *_helix or *_heavynode or *_sensor or *_standalone or *_import':
'*_eval or *_helixsensor or *_heavynode or *_sensor or *_standalone or *_import':
- match: compound
- zeek
@@ -62,7 +62,7 @@ base:
- global
- minions.{{ grains.id }}
'*_helix':
'*_helixsensor':
- fireeye
- zeeklogs
- logstash
@@ -82,6 +82,7 @@ base:
- elasticsearch.search
- global
- minions.{{ grains.id }}
- data.nodestab
'*_import':
- zeeklogs

View File

@@ -1,4 +1,64 @@
#!py
import logging
def status():
return __salt__['cmd.run']('/usr/sbin/so-status')
return __salt__['cmd.run']('/usr/sbin/so-status')
def mysql_conn(retry):
log = logging.getLogger(__name__)
from time import sleep
try:
from MySQLdb import _mysql
except ImportError as e:
log.error(e)
return False
mainint = __salt__['pillar.get']('host:mainint')
ip_arr = __salt__['grains.get']('ip4_interfaces').get(mainint)
mysql_up = False
if len(ip_arr) == 1:
mainip = ip_arr[0]
if not(retry >= 1):
log.debug('`retry` set to value below 1, resetting it to 1 to prevent errors.')
retry = 1
for i in range(0, retry):
log.debug(f'Connection attempt {i+1}')
try:
db = _mysql.connect(
host=mainip,
user='root',
passwd=__salt__['pillar.get']('secrets:mysql')
)
log.debug(f'Connected to MySQL server on {mainip} after {i+1} attempts.')
db.query("""SELECT 1;""")
log.debug(f'Successfully completed query against MySQL server on {mainip}')
db.close()
mysql_up = True
break
except _mysql.OperationalError as e:
log.debug(e)
except Exception as e:
log.error('Unexpected error occured.')
log.error(e)
break
sleep(1)
if not mysql_up:
log.error(f'Could not connect to MySQL server on {mainip} after {retry} attempts.')
else:
log.error(f'Main interface {mainint} has more than one IP address assigned to it, which is not supported.')
log.debug(f'{mainint}:')
for addr in ip_arr:
log.debug(f' - {addr}')
return mysql_up

View File

@@ -0,0 +1,12 @@
{%- set DOCKERRANGE = salt['pillar.get']('docker:range', '172.17.0.0/24') %}
{%- set DOCKERBIND = salt['pillar.get']('docker:bip', '172.17.0.1/24') %}
{
"registry-mirrors": [ "https://:5000" ],
"bip": "{{ DOCKERBIND }}",
"default-address-pools": [
{
"base" : "{{ DOCKERRANGE }}",
"size" : 24
}
]
}

View File

@@ -18,6 +18,7 @@
/opt/so/log/filebeat/*.log
/opt/so/log/telegraf/*.log
/opt/so/log/redis/*.log
/opt/so/log/salt/so-salt-minion-check
{
{{ logrotate_conf | indent(width=4) }}
}

View File

@@ -32,6 +32,18 @@ soconfperms:
- gid: 939
- dir_mode: 770
sostatusconf:
file.directory:
- name: /opt/so/conf/so-status
- uid: 939
- gid: 939
- dir_mode: 770
so-status.conf:
file.touch:
- name: /opt/so/conf/so-status/so-status.conf
- unless: ls /opt/so/conf/so-status/so-status.conf
sosaltstackperms:
file.directory:
- name: /opt/so/saltstack
@@ -99,7 +111,7 @@ heldpackages:
pkg.installed:
- pkgs:
- containerd.io: 1.2.13-2
- docker-ce: 5:19.03.12~3-0~ubuntu-bionic
- docker-ce: 5:19.03.14~3-0~ubuntu-bionic
- hold: True
- update_holds: True
@@ -135,7 +147,7 @@ heldpackages:
pkg.installed:
- pkgs:
- containerd.io: 1.2.13-3.2.el7
- docker-ce: 3:19.03.12-3.el7
- docker-ce: 3:19.03.14-3.el7
- hold: True
- update_holds: True
{% endif %}
@@ -158,8 +170,8 @@ Etc/UTC:
utilsyncscripts:
file.recurse:
- name: /usr/sbin
- user: 0
- group: 0
- user: root
- group: root
- file_mode: 755
- template: jinja
- source: salt://common/tools/sbin
@@ -232,10 +244,19 @@ commonlogrotateconf:
- dayweek: '*'
{% endif %}
# Manager daemon.json
docker_daemon:
file.managed:
- source: salt://common/files/daemon.json
- name: /etc/docker/daemon.json
- template: jinja
# Make sure Docker is always running
docker:
service.running:
- enable: True
- watch:
- file: docker_daemon
{% else %}

View File

@@ -1,5 +0,0 @@
{% set docker = {
'containers': [
'so-domainstats'
]
} %}

View File

@@ -1,20 +0,0 @@
{% set docker = {
'containers': [
'so-filebeat',
'so-nginx',
'so-telegraf',
'so-dockerregistry',
'so-soc',
'so-kratos',
'so-idstools',
'so-elasticsearch',
'so-kibana',
'so-steno',
'so-suricata',
'so-zeek',
'so-curator',
'so-elastalert',
'so-soctopus',
'so-sensoroni'
]
} %}

View File

@@ -1,10 +0,0 @@
{% set docker = {
'containers': [
'so-mysql',
'so-fleet',
'so-redis',
'so-filebeat',
'so-nginx',
'so-telegraf'
]
} %}

View File

@@ -1,7 +0,0 @@
{% set docker = {
'containers': [
'so-mysql',
'so-fleet',
'so-redis'
]
} %}

View File

@@ -1,5 +0,0 @@
{% set docker = {
'containers': [
'so-freqserver'
]
} %}

View File

@@ -1,6 +0,0 @@
{% set docker = {
'containers': [
'so-influxdb',
'so-grafana'
]
} %}

View File

@@ -1,15 +0,0 @@
{% set docker = {
'containers': [
'so-nginx',
'so-telegraf',
'so-redis',
'so-logstash',
'so-elasticsearch',
'so-curator',
'so-steno',
'so-suricata',
'so-wazuh',
'so-filebeat',
'so-sensoroni'
]
} %}

View File

@@ -1,12 +0,0 @@
{% set docker = {
'containers': [
'so-nginx',
'so-telegraf',
'so-idstools',
'so-steno',
'so-zeek',
'so-redis',
'so-logstash',
'so-filebeat
]
} %}

View File

@@ -1,9 +0,0 @@
{% set docker = {
'containers': [
'so-nginx',
'so-telegraf',
'so-logstash',
'so-elasticsearch',
'so-curator',
]
} %}

View File

@@ -1,10 +0,0 @@
{% set docker = {
'containers': [
'so-filebeat',
'so-nginx',
'so-soc',
'so-kratos',
'so-elasticsearch',
'so-kibana'
]
} %}

View File

@@ -1,18 +0,0 @@
{% set docker = {
'containers': [
'so-dockerregistry',
'so-nginx',
'so-telegraf',
'so-soc',
'so-kratos',
'so-aptcacherng',
'so-idstools',
'so-redis',
'so-elasticsearch',
'so-logstash',
'so-kibana',
'so-elastalert',
'so-filebeat',
'so-soctopus'
]
} %}

View File

@@ -1,18 +0,0 @@
{% set docker = {
'containers': [
'so-nginx',
'so-telegraf',
'so-soc',
'so-kratos',
'so-aptcacherng',
'so-idstools',
'so-redis',
'so-logstash',
'so-elasticsearch',
'so-curator',
'so-kibana',
'so-elastalert',
'so-filebeat',
'so-soctopus'
]
} %}

View File

@@ -1,5 +0,0 @@
{% set docker = {
'containers': [
'so-zeek'
]
} %}

View File

@@ -1,5 +0,0 @@
{% set docker = {
'containers': [
'so-playbook'
]
} %}

View File

@@ -1,10 +0,0 @@
{% set docker = {
'containers': [
'so-nginx',
'so-telegraf',
'so-logstash',
'so-elasticsearch',
'so-curator',
'so-filebeat'
]
} %}

View File

@@ -1,9 +0,0 @@
{% set docker = {
'containers': [
'so-telegraf',
'so-steno',
'so-suricata',
'so-filebeat',
'so-sensoroni'
]
} %}

View File

@@ -1,48 +0,0 @@
{% set role = grains.id.split('_') | last %}
{% from 'common/maps/'~ role ~'.map.jinja' import docker with context %}
# Check if the service is enabled and append it's required containers
# to the list predefined by the role / minion id affix
{% macro append_containers(pillar_name, k, compare )%}
{% if salt['pillar.get'](pillar_name~':'~k, {}) != compare %}
{% if k == 'enabled' %}
{% set k = pillar_name %}
{% endif %}
{% from 'common/maps/'~k~'.map.jinja' import docker as d with context %}
{% for li in d['containers'] %}
{{ docker['containers'].append(li) }}
{% endfor %}
{% endif %}
{% endmacro %}
{% set docker = salt['grains.filter_by']({
'*_'~role: {
'containers': docker['containers']
}
},grain='id', merge=salt['pillar.get']('docker')) %}
{% if role in ['eval', 'managersearch', 'manager', 'standalone'] %}
{{ append_containers('manager', 'grafana', 0) }}
{{ append_containers('global', 'fleet_manager', 0) }}
{{ append_containers('global', 'wazuh', 0) }}
{{ append_containers('manager', 'thehive', 0) }}
{{ append_containers('manager', 'playbook', 0) }}
{{ append_containers('manager', 'freq', 0) }}
{{ append_containers('manager', 'domainstats', 0) }}
{% endif %}
{% if role in ['eval', 'heavynode', 'sensor', 'standalone'] %}
{{ append_containers('strelka', 'enabled', 0) }}
{% endif %}
{% if role in ['heavynode', 'standalone'] %}
{{ append_containers('global', 'mdengine', 'SURICATA') }}
{% endif %}
{% if role == 'searchnode' %}
{{ append_containers('manager', 'wazuh', 0) }}
{% endif %}
{% if role == 'sensor' %}
{{ append_containers('global', 'mdengine', 'SURICATA') }}
{% endif %}

View File

@@ -1,22 +0,0 @@
{% set docker = {
'containers': [
'so-nginx',
'so-telegraf',
'so-soc',
'so-kratos',
'so-aptcacherng',
'so-idstools',
'so-redis',
'so-logstash',
'so-elasticsearch',
'so-curator',
'so-kibana',
'so-elastalert',
'so-filebeat',
'so-suricata',
'so-steno',
'so-dockerregistry',
'so-soctopus',
'so-sensoroni'
]
} %}

View File

@@ -1,9 +0,0 @@
{% set docker = {
'containers': [
'so-strelka-coordinator',
'so-strelka-gatekeeper',
'so-strelka-manager',
'so-strelka-frontend',
'so-strelka-filestream'
]
} %}

View File

@@ -1,7 +0,0 @@
{% set docker = {
'containers': [
'so-thehive',
'so-thehive-es',
'so-cortex'
]
} %}

View File

@@ -1,7 +0,0 @@
{% set docker = {
'containers': [
'so-nginx',
'so-telegraf',
'so-elasticsearch'
]
} %}

View File

@@ -1,5 +0,0 @@
{% set docker = {
'containers': [
'so-wazuh'
]
} %}

View File

@@ -1,8 +0,0 @@
#!/bin/bash
if [ ! -f /opt/so/state/dockernet.state ]; then
docker network create -d bridge so-elastic-net
touch /opt/so/state/dockernet.state
else
exit
fi

View File

@@ -84,7 +84,7 @@ while [[ $INSTALL != "yes" ]] && [[ $INSTALL != "no" ]]; do
echo "## ##"
echo "## Installing the Security Onion ##"
echo "## analyst node on this device will ##"
echo "## make permanenet changes to ##"
echo "## make permanent changes to ##"
echo "## the system. ##"
echo "## ##"
echo "###########################################"

View File

@@ -15,12 +15,10 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
IMAGEREPO=securityonion
# Check for prerequisites
if [ "$(id -u)" -ne 0 ]; then
echo "This script must be run using sudo!"
exit 1
echo "This script must be run using sudo!"
exit 1
fi
# Define a banner to separate sections
@@ -31,14 +29,43 @@ header() {
printf '%s\n' "$banner" "$*" "$banner"
}
lookup_salt_value() {
key=$1
group=$2
kind=$3
if [ -z "$kind" ]; then
kind=pillar
fi
if [ -n "$group" ]; then
group=${group}:
fi
salt-call --no-color ${kind}.get ${group}${key} --out=newline_values_only
}
lookup_pillar() {
key=$1
salt-call --no-color pillar.get global:${key} --out=newline_values_only
key=$1
pillar=$2
if [ -z "$pillar" ]; then
pillar=global
fi
lookup_salt_value "$key" "$pillar" "pillar"
}
lookup_pillar_secret() {
key=$1
salt-call --no-color pillar.get secrets:${key} --out=newline_values_only
lookup_pillar "$1" "secrets"
}
lookup_grain() {
lookup_salt_value "$1" "" "grains"
}
lookup_role() {
id=$(lookup_grain id)
pieces=($(echo $id | tr '_' ' '))
echo ${pieces[1]}
}
check_container() {
@@ -47,7 +74,69 @@ check_container() {
}
check_password() {
local password=$1
echo "$password" | egrep -v "'|\"|\\\\" > /dev/null 2>&1
return $?
local password=$1
echo "$password" | egrep -v "'|\"|\\$|\\\\" > /dev/null 2>&1
return $?
}
set_os() {
if [ -f /etc/redhat-release ]; then
OS=centos
else
OS=ubuntu
fi
}
set_minionid() {
MINIONID=$(lookup_grain id)
}
set_version() {
CURRENTVERSION=0.0.0
if [ -f /etc/soversion ]; then
CURRENTVERSION=$(cat /etc/soversion)
fi
if [ -z "$VERSION" ]; then
if [ -z "$NEWVERSION" ]; then
if [ "$CURRENTVERSION" == "0.0.0" ]; then
echo "ERROR: Unable to detect Security Onion version; terminating script."
exit 1
else
VERSION=$CURRENTVERSION
fi
else
VERSION="$NEWVERSION"
fi
fi
}
require_manager() {
# Check to see if this is a manager
MANAGERCHECK=$(cat /etc/salt/grains | grep role | awk '{print $2}')
if [ $MANAGERCHECK == 'so-eval' ] || [ $MANAGERCHECK == 'so-manager' ] || [ $MANAGERCHECK == 'so-managersearch' ] || [ $MANAGERCHECK == 'so-standalone' ] || [ $MANAGERCHECK == 'so-helix' ] || [ $MANAGERCHECK == 'so-import' ]; then
echo "This is a manager, We can proceed."
else
echo "Please run this command on the manager; the manager controls the grid."
exit 1
fi
}
is_single_node_grid() {
role=$(lookup_role)
if [ "$role" != "eval" ] && [ "$role" != "standalone" ] && [ "$role" != "import" ]; then
return 1
fi
return 0
}
fail() {
msg=$1
echo "ERROR: $msg"
echo "Exiting."
exit 1
}
get_random_value() {
length=${1:-20}
head -c 5000 /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w $length | head -n 1
}

View File

@@ -31,7 +31,7 @@ fi
USER=$1
CORTEX_KEY=$(lookup_pillar cortexkey)
CORTEX_IP=$(lookup_pillar managerip)
CORTEX_API_URL="$(lookup_pillar url_base)/cortex/api"
CORTEX_ORG_NAME=$(lookup_pillar cortexorgname)
CORTEX_USER=$USER
@@ -43,7 +43,7 @@ fi
read -rs CORTEX_PASS
# Create new user in Cortex
resp=$(curl -sk -XPOST -H "Authorization: Bearer $CORTEX_KEY" -H "Content-Type: application/json" "https://$CORTEX_IP/cortex/api/user" -d "{\"name\": \"$CORTEX_USER\",\"roles\": [\"read\",\"analyze\",\"orgadmin\"],\"organization\": \"$CORTEX_ORG_NAME\",\"login\": \"$CORTEX_USER\",\"password\" : \"$CORTEX_PASS\" }")
resp=$(curl -sk -XPOST -H "Authorization: Bearer $CORTEX_KEY" -H "Content-Type: application/json" -L "https://$CORTEX_API_URL/user" -d "{\"name\": \"$CORTEX_USER\",\"roles\": [\"read\",\"analyze\",\"orgadmin\"],\"organization\": \"$CORTEX_ORG_NAME\",\"login\": \"$CORTEX_USER\",\"password\" : \"$CORTEX_PASS\" }")
if [[ "$resp" =~ \"status\":\"Ok\" ]]; then
echo "Successfully added user to Cortex."
else

View File

@@ -31,7 +31,7 @@ fi
USER=$1
CORTEX_KEY=$(lookup_pillar cortexkey)
CORTEX_IP=$(lookup_pillar managerip)
CORTEX_API_URL="$(lookup_pillar url_base)/cortex/api"
CORTEX_USER=$USER
case "${2^^}" in
@@ -46,7 +46,7 @@ case "${2^^}" in
;;
esac
resp=$(curl -sk -XPATCH -H "Authorization: Bearer $CORTEX_KEY" -H "Content-Type: application/json" "https://$CORTEX_IP/cortex/api/user/${CORTEX_USER}" -d "{\"status\":\"${CORTEX_STATUS}\" }")
resp=$(curl -sk -XPATCH -H "Authorization: Bearer $CORTEX_KEY" -H "Content-Type: application/json" -L "https://$CORTEX_API_URL/user/${CORTEX_USER}" -d "{\"status\":\"${CORTEX_STATUS}\" }")
if [[ "$resp" =~ \"status\":\"Locked\" || "$resp" =~ \"status\":\"Ok\" ]]; then
echo "Successfully updated user in Cortex."
else

View File

@@ -16,96 +16,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
. /usr/sbin/so-common
. /usr/sbin/so-image-common
manager_check() {
# Check to see if this is a manager
MANAGERCHECK=$(cat /etc/salt/grains | grep role | awk '{print $2}')
if [ $MANAGERCHECK == 'so-eval' ] || [ $MANAGERCHECK == 'so-manager' ] || [ $MANAGERCHECK == 'so-managersearch' ] || [ $MANAGERCHECK == 'so-standalone' ] || [ $MANAGERCHECK == 'so-helix' ]; then
echo "This is a manager. We can proceed"
else
echo "Please run soup on the manager. The manager controls all updates."
exit 1
fi
}
update_docker_containers() {
# Download the containers from the interwebs
for i in "${TRUSTED_CONTAINERS[@]}"
do
# Pull down the trusted docker image
echo "Downloading $i"
docker pull --disable-content-trust=false docker.io/$IMAGEREPO/$i
# Tag it with the new registry destination
docker tag $IMAGEREPO/$i $HOSTNAME:5000/$IMAGEREPO/$i
docker push $HOSTNAME:5000/$IMAGEREPO/$i
done
}
version_check() {
if [ -f /etc/soversion ]; then
VERSION=$(cat /etc/soversion)
else
echo "Unable to detect version. I will now terminate."
exit 1
fi
}
manager_check
version_check
# Use the hostname
HOSTNAME=$(hostname)
# List all the containers
if [ $MANAGERCHECK != 'so-helix' ]; then
TRUSTED_CONTAINERS=( \
"so-acng:$VERSION" \
"so-thehive-cortex:$VERSION" \
"so-curator:$VERSION" \
"so-domainstats:$VERSION" \
"so-elastalert:$VERSION" \
"so-elasticsearch:$VERSION" \
"so-filebeat:$VERSION" \
"so-fleet:$VERSION" \
"so-fleet-launcher:$VERSION" \
"so-freqserver:$VERSION" \
"so-grafana:$VERSION" \
"so-idstools:$VERSION" \
"so-influxdb:$VERSION" \
"so-kibana:$VERSION" \
"so-kratos:$VERSION" \
"so-logstash:$VERSION" \
"so-minio:$VERSION" \
"so-mysql:$VERSION" \
"so-nginx:$VERSION" \
"so-pcaptools:$VERSION" \
"so-playbook:$VERSION" \
"so-redis:$VERSION" \
"so-soc:$VERSION" \
"so-soctopus:$VERSION" \
"so-steno:$VERSION" \
"so-strelka-frontend:$VERSION" \
"so-strelka-manager:$VERSION" \
"so-strelka-backend:$VERSION" \
"so-strelka-filestream:$VERSION" \
"so-suricata:$VERSION" \
"so-telegraf:$VERSION" \
"so-thehive:$VERSION" \
"so-thehive-es:$VERSION" \
"so-wazuh:$VERSION" \
"so-zeek:$VERSION" )
else
TRUSTED_CONTAINERS=( \
"so-filebeat:$VERSION" \
"so-idstools:$VERSION" \
"so-logstash:$VERSION" \
"so-nginx:$VERSION" \
"so-redis:$VERSION" \
"so-steno:$VERSION" \
"so-suricata:$VERSION" \
"so-telegraf:$VERSION" \
"so-zeek:$VERSION" )
fi
update_docker_containers
require_manager
update_docker_containers "refresh"

View File

@@ -19,8 +19,7 @@
#
# Purpose: This script will allow you to test your elastalert rule without entering the Docker container.
. /usr/sbin/so-elastic-common
HOST_RULE_DIR=/opt/so/rules/elastalert
OPTIONS=""
SKIP=0
RESULTS_TO_LOG="n"
@@ -29,114 +28,109 @@ FILE_SAVE_LOCATION=""
usage()
{
cat <<EOF
cat <<EOF
Test Elastalert Rule
Options:
-h This message
-a Trigger real alerts instead of the debug alert
-l <path_to_file> Write results to specified log file
-o '<options>' Specify Elastalert options ( Ex. --schema-only , --count-only, --days N )
-r <rule_name> Specify path/name of rule to test
-h This message
-a Trigger real alerts instead of the debug alert
-l <path_to_file> Write results to specified log file
-o '<options>' Specify Elastalert options ( Ex. --schema-only , --count-only, --days N )
-r <rule_name> Specify filename of rule to test (must exist in $HOST_RULE_DIR; do not include path)
EOF
}
while getopts "hal:o:r:" OPTION
do
case $OPTION in
h)
usage
exit 0
;;
a)
OPTIONS="--alert"
;;
l)
RESULTS_TO_LOG="y"
FILE_SAVE_LOCATION=$OPTARG
;;
o)
OPTIONS=$OPTARG
;;
r)
RULE_NAME=$OPTARG
SKIP=1
;;
*)
usage
exit 0
;;
esac
case $OPTION in
h)
usage
exit 0
;;
a)
OPTIONS="--alert"
;;
l)
RESULTS_TO_LOG="y"
FILE_SAVE_LOCATION=$OPTARG
;;
o)
OPTIONS=$OPTARG
;;
r)
RULE_NAME=$OPTARG
SKIP=1
;;
*)
usage
exit 0
;;
esac
done
docker_exec(){
if [ ${RESULTS_TO_LOG,,} = "y" ] ; then
docker exec -it so-elastalert bash -c "elastalert-test-rule $RULE_NAME $OPTIONS" > $FILE_SAVE_LOCATION
CMD="docker exec -it so-elastalert elastalert-test-rule /opt/elastalert/rules/$RULE_NAME --config /opt/config/elastalert_config.yaml $OPTIONS"
if [ "${RESULTS_TO_LOG,,}" = "y" ] ; then
$CMD > "$FILE_SAVE_LOCATION"
else
docker exec -it so-elastalert bash -c "elastalert-test-rule $RULE_NAME $OPTIONS"
$CMD
fi
}
rule_prompt(){
CURRENT_RULES=$(find /opt/so/rules/elastalert -name "*.yaml")
echo
echo "This script will allow you to test an Elastalert rule."
echo
echo "Below is a list of active Elastalert rules:"
echo
CURRENT_RULES=$(cd "$HOST_RULE_DIR" && find . -type f \( -name "*.yaml" -o -name "*.yml" \) | sed -e 's/^\.\///')
if [ -z "$CURRENT_RULES" ]; then
echo "There are no rules available to test. Rule files must be placed in the $HOST_RULE_DIR directory."
exit 1
fi
echo
echo "This script will allow you to test an Elastalert rule."
echo
echo "Below is a list of available Elastalert rules:"
echo
echo "-----------------------------------"
echo
echo "$CURRENT_RULES"
echo
echo
echo "$CURRENT_RULES"
echo
echo "-----------------------------------"
echo
echo "Note: To test a rule it must be accessible by the Elastalert Docker container."
echo
echo "Make sure to swap the local path (/opt/so/rules/elastalert/) for the docker path (/etc/elastalert/rules/)"
echo "Example: /opt/so/rules/elastalert/nids2hive.yaml would be /etc/elastalert/rules/nids2hive.yaml"
echo
while [ -z $RULE_NAME ]; do
echo "Please enter the file path and rule name you want to test."
read -e RULE_NAME
echo
while [ -z "$RULE_NAME" ]; do
read -p "Please enter the rule filename you want to test (filename only, no path): " -e RULE_NAME
done
}
log_save_prompt(){
RESULTS_TO_LOG=""
while [ -z $RESULTS_TO_LOG ]; do
echo "The results can be rather long. Would you like to write the results to a file? (Y/N)"
read RESULTS_TO_LOG
done
read -p "The results can be rather long. Would you like to write the results to a file? (y/N) " -e RESULTS_TO_LOG
}
log_path_prompt(){
while [ -z $FILE_SAVE_LOCATION ]; do
echo "Please enter the file path and file name."
read -e FILE_SAVE_LOCATION
done
while [ -z "$FILE_SAVE_LOCATION" ]; do
read -p "Please enter the log file path and file name: " -e FILE_SAVE_LOCATION
done
echo "Depending on the rule this may take a while."
}
if [ $SKIP -eq 0 ]; then
rule_prompt
log_save_prompt
if [ ${RESULTS_TO_LOG,,} = "y" ] ; then
log_path_prompt
fi
if [ "${RESULTS_TO_LOG,,}" = "y" ] ; then
log_path_prompt
fi
fi
echo
docker_exec
if [ $? -eq 0 ]; then
echo "Test completed successfully!"
else
echo "Something went wrong..."
fi
RESULT=$?
echo
if [ $RESULT -eq 0 ]; then
echo "Test completed successfully!"
else
echo "Test failed."
fi
echo

View File

@@ -51,9 +51,9 @@ if [ $SKIP -ne 1 ]; then
# List indices
echo
{% if grains['role'] in ['so-node','so-heavynode'] %}
curl -k https://{{ NODEIP }}:9200/_cat/indices?v
curl -k -L https://{{ NODEIP }}:9200/_cat/indices?v
{% else %}
curl {{ NODEIP }}:9200/_cat/indices?v
curl -L {{ NODEIP }}:9200/_cat/indices?v
{% endif %}
echo
# Inform user we are about to delete all data
@@ -94,16 +94,16 @@ fi
echo "Deleting data..."
{% if grains['role'] in ['so-node','so-heavynode'] %}
INDXS=$(curl -s -XGET -k https://{{ NODEIP }}:9200/_cat/indices?v | egrep 'logstash|elastalert|so-' | awk '{ print $3 }')
INDXS=$(curl -s -XGET -k -L https://{{ NODEIP }}:9200/_cat/indices?v | egrep 'logstash|elastalert|so-' | awk '{ print $3 }')
{% else %}
INDXS=$(curl -s -XGET {{ NODEIP }}:9200/_cat/indices?v | egrep 'logstash|elastalert|so-' | awk '{ print $3 }')
INDXS=$(curl -s -XGET -L {{ NODEIP }}:9200/_cat/indices?v | egrep 'logstash|elastalert|so-' | awk '{ print $3 }')
{% endif %}
for INDX in ${INDXS}
do
{% if grains['role'] in ['so-node','so-heavynode'] %}
curl -XDELETE -k https://"{{ NODEIP }}:9200/${INDX}" > /dev/null 2>&1
curl -XDELETE -k -L https://"{{ NODEIP }}:9200/${INDX}" > /dev/null 2>&1
{% else %}
curl -XDELETE "{{ NODEIP }}:9200/${INDX}" > /dev/null 2>&1
curl -XDELETE -L "{{ NODEIP }}:9200/${INDX}" > /dev/null 2>&1
{% endif %}
done

View File

@@ -0,0 +1,43 @@
#!/bin/bash
# Copyright 2014,2015,2016,2017,2018,2019,2020 Security Onion Solutions, LLC
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
. /usr/sbin/so-common
{%- if grains['role'] in ['so-eval','so-manager', 'so-managersearch', 'so-standalone', 'so-heavynode', 'so-node', 'so-import']%}
/usr/sbin/so-restart elasticsearch $1
{%- endif %}
{%- if grains['role'] in ['so-eval', 'so-manager', 'so-managersearch', 'so-standalone', 'so-import']%}
/usr/sbin/so-restart kibana $1
{%- endif %}
{%- if grains['role'] in ['so-manager', 'so-managersearch', 'so-standalone', 'so-heavynode', 'so-node']%}
/usr/sbin/so-restart logstash $1
{%- endif %}
{%- if grains['role'] in ['so-manager', 'so-managersearch', 'so-standalone', 'so-heavynode', 'so-node', 'so-sensor']%}
/usr/sbin/so-restart filebeat $1
{%- endif %}
{%- if grains['role'] in ['so-manager', 'so-managersearch', 'so-standalone', 'so-heavynode', 'so-node']%}
/usr/sbin/so-restart curator $1
{%- endif %}
{%- if grains['role'] in ['so-eval','so-manager', 'so-managersearch', 'so-standalone']%}
/usr/sbin/so-restart elastalert $1
{%- endif %}

View File

@@ -0,0 +1,43 @@
#!/bin/bash
# Copyright 2014,2015,2016,2017,2018,2019,2020 Security Onion Solutions, LLC
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
. /usr/sbin/so-common
{%- if grains['role'] in ['so-eval','so-manager', 'so-managersearch', 'so-standalone', 'so-heavynode', 'so-node', 'so-import']%}
/usr/sbin/so-start elasticsearch $1
{%- endif %}
{%- if grains['role'] in ['so-eval', 'so-manager', 'so-managersearch', 'so-standalone', 'so-import']%}
/usr/sbin/so-start kibana $1
{%- endif %}
{%- if grains['role'] in ['so-manager', 'so-managersearch', 'so-standalone', 'so-heavynode', 'so-node']%}
/usr/sbin/so-start logstash $1
{%- endif %}
{%- if grains['role'] in ['so-manager', 'so-managersearch', 'so-standalone', 'so-heavynode', 'so-node', 'so-sensor']%}
/usr/sbin/so-start filebeat $1
{%- endif %}
{%- if grains['role'] in ['so-manager', 'so-managersearch', 'so-standalone', 'so-heavynode', 'so-node']%}
/usr/sbin/so-start curator $1
{%- endif %}
{%- if grains['role'] in ['so-eval','so-manager', 'so-managersearch', 'so-standalone']%}
/usr/sbin/so-start elastalert $1
{%- endif %}

View File

@@ -0,0 +1,43 @@
#!/bin/bash
# Copyright 2014,2015,2016,2017,2018,2019,2020 Security Onion Solutions, LLC
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
. /usr/sbin/so-common
{%- if grains['role'] in ['so-eval','so-manager', 'so-managersearch', 'so-standalone', 'so-heavynode', 'so-node', 'so-import']%}
/usr/sbin/so-stop elasticsearch $1
{%- endif %}
{%- if grains['role'] in ['so-eval', 'so-manager', 'so-managersearch', 'so-standalone', 'so-import']%}
/usr/sbin/so-stop kibana $1
{%- endif %}
{%- if grains['role'] in ['so-manager', 'so-managersearch', 'so-standalone', 'so-heavynode', 'so-node']%}
/usr/sbin/so-stop logstash $1
{%- endif %}
{%- if grains['role'] in ['so-manager', 'so-managersearch', 'so-standalone', 'so-heavynode', 'so-node', 'so-sensor']%}
/usr/sbin/so-stop filebeat $1
{%- endif %}
{%- if grains['role'] in ['so-manager', 'so-managersearch', 'so-standalone', 'so-heavynode', 'so-node']%}
/usr/sbin/so-stop curator $1
{%- endif %}
{%- if grains['role'] in ['so-eval','so-manager', 'so-managersearch', 'so-standalone']%}
/usr/sbin/so-stop elastalert $1
{%- endif %}

View File

@@ -22,5 +22,5 @@ THEHIVEESPORT=9400
echo "Removing read only attributes for indices..."
echo
for p in $ESPORT $THEHIVEESPORT; do
curl -XPUT -H "Content-Type: application/json" http://$IP:$p/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}' 2>&1 | if grep -q ack; then echo "Index settings updated..."; else echo "There was any issue updating the read-only attribute. Please ensure Elasticsearch is running.";fi;
curl -XPUT -H "Content-Type: application/json" -L http://$IP:$p/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}' 2>&1 | if grep -q ack; then echo "Index settings updated..."; else echo "There was any issue updating the read-only attribute. Please ensure Elasticsearch is running.";fi;
done

View File

@@ -20,14 +20,14 @@
if [ "$1" == "" ]; then
{% if grains['role'] in ['so-node','so-heavynode'] %}
curl -s -k https://{{ NODEIP }}:9200/_nodes/stats | jq .nodes | jq ".[] | .ingest.pipelines"
curl -s -k -L https://{{ NODEIP }}:9200/_nodes/stats | jq .nodes | jq ".[] | .ingest.pipelines"
{% else %}
curl -s {{ NODEIP }}:9200/_nodes/stats | jq .nodes | jq ".[] | .ingest.pipelines"
curl -s -L {{ NODEIP }}:9200/_nodes/stats | jq .nodes | jq ".[] | .ingest.pipelines"
{% endif %}
else
{% if grains['role'] in ['so-node','so-heavynode'] %}
curl -s -k https://{{ NODEIP }}:9200/_nodes/stats | jq .nodes | jq ".[] | .ingest.pipelines.\"$1\""
curl -s -k -L https://{{ NODEIP }}:9200/_nodes/stats | jq .nodes | jq ".[] | .ingest.pipelines.\"$1\""
{% else %}
curl -s {{ NODEIP }}:9200/_nodes/stats | jq .nodes | jq ".[] | .ingest.pipelines.\"$1\""
curl -s -L {{ NODEIP }}:9200/_nodes/stats | jq .nodes | jq ".[] | .ingest.pipelines.\"$1\""
{% endif %}
fi

View File

@@ -18,14 +18,14 @@
. /usr/sbin/so-common
if [ "$1" == "" ]; then
{% if grains['role'] in ['so-node','so-heavynode'] %}
curl -s -k https://{{ NODEIP }}:9200/_ingest/pipeline/* | jq 'keys'
curl -s -k -L https://{{ NODEIP }}:9200/_ingest/pipeline/* | jq 'keys'
{% else %}
curl -s {{ NODEIP }}:9200/_ingest/pipeline/* | jq 'keys'
curl -s -L {{ NODEIP }}:9200/_ingest/pipeline/* | jq 'keys'
{% endif %}
else
{% if grains['role'] in ['so-node','so-heavynode'] %}
curl -s -k https://{{ NODEIP }}:9200/_ingest/pipeline/$1 | jq
curl -s -k -L https://{{ NODEIP }}:9200/_ingest/pipeline/$1 | jq
{% else %}
curl -s {{ NODEIP }}:9200/_ingest/pipeline/$1 | jq
curl -s -L {{ NODEIP }}:9200/_ingest/pipeline/$1 | jq
{% endif %}
fi

View File

@@ -18,14 +18,14 @@
. /usr/sbin/so-common
if [ "$1" == "" ]; then
{% if grains['role'] in ['so-node','so-heavynode'] %}
curl -s -k https://{{ NODEIP }}:9200/_template/* | jq 'keys'
curl -s -k -L https://{{ NODEIP }}:9200/_template/* | jq 'keys'
{% else %}
curl -s {{ NODEIP }}:9200/_template/* | jq 'keys'
curl -s -L {{ NODEIP }}:9200/_template/* | jq 'keys'
{% endif %}
else
{% if grains['role'] in ['so-node','so-heavynode'] %}
curl -s -k https://{{ NODEIP }}:9200/_template/$1 | jq
curl -s -k -L https://{{ NODEIP }}:9200/_template/$1 | jq
{% else %}
curl -s {{ NODEIP }}:9200/_template/$1 | jq
curl -s -L {{ NODEIP }}:9200/_template/$1 | jq
{% endif %}
fi

View File

@@ -31,9 +31,9 @@ COUNT=0
ELASTICSEARCH_CONNECTED="no"
while [[ "$COUNT" -le 240 ]]; do
{% if grains['role'] in ['so-node','so-heavynode'] %}
curl -k --output /dev/null --silent --head --fail https://"$ELASTICSEARCH_HOST":"$ELASTICSEARCH_PORT"
curl -k --output /dev/null --silent --head --fail -L https://"$ELASTICSEARCH_HOST":"$ELASTICSEARCH_PORT"
{% else %}
curl --output /dev/null --silent --head --fail http://"$ELASTICSEARCH_HOST":"$ELASTICSEARCH_PORT"
curl --output /dev/null --silent --head --fail -L http://"$ELASTICSEARCH_HOST":"$ELASTICSEARCH_PORT"
{% endif %}
if [ $? -eq 0 ]; then
ELASTICSEARCH_CONNECTED="yes"
@@ -56,9 +56,9 @@ cd ${ELASTICSEARCH_TEMPLATES}
echo "Loading templates..."
{% if grains['role'] in ['so-node','so-heavynode'] %}
for i in *; do TEMPLATE=$(echo $i | cut -d '-' -f2); echo "so-$TEMPLATE"; curl -k ${ELASTICSEARCH_AUTH} -s -XPUT https://${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}/_template/so-$TEMPLATE -H 'Content-Type: application/json' -d@$i 2>/dev/null; echo; done
for i in *; do TEMPLATE=$(echo $i | cut -d '-' -f2); echo "so-$TEMPLATE"; curl -k ${ELASTICSEARCH_AUTH} -s -XPUT -L https://${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}/_template/so-$TEMPLATE -H 'Content-Type: application/json' -d@$i 2>/dev/null; echo; done
{% else %}
for i in *; do TEMPLATE=$(echo $i | cut -d '-' -f2); echo "so-$TEMPLATE"; curl ${ELASTICSEARCH_AUTH} -s -XPUT http://${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}/_template/so-$TEMPLATE -H 'Content-Type: application/json' -d@$i 2>/dev/null; echo; done
for i in *; do TEMPLATE=$(echo $i | cut -d '-' -f2); echo "so-$TEMPLATE"; curl ${ELASTICSEARCH_AUTH} -s -XPUT -L http://${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}/_template/so-$TEMPLATE -H 'Content-Type: application/json' -d@$i 2>/dev/null; echo; done
{% endif %}
echo

View File

@@ -15,6 +15,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
. /usr/sbin/so-common
. /usr/sbin/so-image-common
local_salt_dir=/opt/so/saltstack/local
cat << EOF
@@ -39,34 +40,14 @@ fi
echo "Please wait while switching to Elastic Features."
manager_check() {
# Check to see if this is a manager
MANAGERCHECK=$(cat /etc/salt/grains | grep role | awk '{print $2}')
if [[ "$MANAGERCHECK" =~ ^('so-eval'|'so-manager'|'so-standalone'|'so-managersearch')$ ]]; then
echo "This is a manager. We can proceed"
else
echo "Please run so-features-enable on the manager."
exit 0
fi
}
require_manager
TRUSTED_CONTAINERS=( \
"so-elasticsearch" \
"so-filebeat" \
"so-kibana" \
"so-logstash" )
update_docker_containers "features" "-features"
manager_check
VERSION=$(grep soversion $local_salt_dir/pillar/global.sls | cut -d':' -f2|sed 's/ //g')
# Modify global.sls to enable Features
sed -i 's/features: False/features: True/' $local_salt_dir/pillar/global.sls
SUFFIX="-features"
TRUSTED_CONTAINERS=( \
"so-elasticsearch:$VERSION$SUFFIX" \
"so-filebeat:$VERSION$SUFFIX" \
"so-kibana:$VERSION$SUFFIX" \
"so-logstash:$VERSION$SUFFIX" )
for i in "${TRUSTED_CONTAINERS[@]}"
do
# Pull down the trusted docker image
echo "Downloading $i"
docker pull --disable-content-trust=false docker.io/$IMAGEREPO/$i
# Tag it with the new registry destination
docker tag $IMAGEREPO/$i $HOSTNAME:5000/$IMAGEREPO/$i
docker push $HOSTNAME:5000/$IMAGEREPO/$i
done

View File

@@ -116,7 +116,7 @@ def addhostgroup(args):
print('Missing host group name argument', file=sys.stderr)
showUsage(args)
name = args[1]
name = args[0]
content = loadYaml(hostgroupsFilename)
if name in content['firewall']['hostgroups']:
print('Already exists', file=sys.stderr)

View File

@@ -15,8 +15,8 @@ if [ ! "$(docker ps -q -f name=so-fleet)" ]; then
salt-call state.apply redis queue=True >> /root/fleet-setup.log
fi
docker exec so-fleet fleetctl config set --address https://localhost:8080 --tls-skip-verify --url-prefix /fleet
docker exec -it so-fleet bash -c 'while [[ "$(curl -s -o /dev/null --insecure -w ''%{http_code}'' https://localhost:8080/fleet)" != "301" ]]; do sleep 5; done'
docker exec so-fleet fleetctl config set --address https://127.0.0.1:8080 --tls-skip-verify --url-prefix /fleet
docker exec -it so-fleet bash -c 'while [[ "$(curl -s -o /dev/null --insecure -w ''%{http_code}'' https://127.0.0.1:8080/fleet)" != "301" ]]; do sleep 5; done'
docker exec so-fleet fleetctl setup --email $1 --password $2
docker exec so-fleet fleetctl apply -f /packs/palantir/Fleet/Endpoints/MacOS/osquery.yaml
@@ -26,9 +26,9 @@ docker exec so-fleet /bin/sh -c 'for pack in /packs/palantir/Fleet/Endpoints/pac
docker exec so-fleet fleetctl apply -f /packs/osquery-config.conf
# Enable Fleet
echo "Enabling Fleet..."
salt-call state.apply fleet.event_enable-fleet queue=True >> /root/fleet-setup.log
# Update the Enroll Secret
echo "Updating the Enroll Secret..."
salt-call state.apply fleet.event_update-enroll-secret queue=True >> /root/fleet-setup.log
salt-call state.apply nginx queue=True >> /root/fleet-setup.log
# Generate osquery install packages

View File

@@ -59,6 +59,6 @@ if [[ $? -eq 0 ]]; then
echo "Successfully added user to Fleet"
else
echo "Unable to add user to Fleet; user might already exist"
echo $resp
echo "$MYSQL_OUTPUT"
exit 2
fi

View File

@@ -0,0 +1,181 @@
#!/bin/bash
#
# Copyright 2014,2015,2016,2017,2018,2019,2020 Security Onion Solutions, LLC
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# NOTE: This script depends on so-common
IMAGEREPO=securityonion
container_list() {
MANAGERCHECK=$1
if [ -z "$MANAGERCHECK" ]; then
MANAGERCHECK=so-unknown
if [ -f /etc/salt/grains ]; then
MANAGERCHECK=$(cat /etc/salt/grains | grep role | awk '{print $2}')
fi
fi
if [ $MANAGERCHECK == 'so-import' ]; then
TRUSTED_CONTAINERS=(
"so-elasticsearch"
"so-filebeat"
"so-idstools"
"so-kibana"
"so-kratos"
"so-nginx"
"so-pcaptools"
"so-soc"
"so-steno"
"so-suricata"
"so-zeek"
)
elif [ $MANAGERCHECK != 'so-helix' ]; then
TRUSTED_CONTAINERS=(
"so-acng"
"so-curator"
"so-domainstats"
"so-elastalert"
"so-elasticsearch"
"so-filebeat"
"so-fleet"
"so-fleet-launcher"
"so-freqserver"
"so-grafana"
"so-idstools"
"so-influxdb"
"so-kibana"
"so-kratos"
"so-logstash"
"so-minio"
"so-mysql"
"so-nginx"
"so-pcaptools"
"so-playbook"
"so-redis"
"so-soc"
"so-soctopus"
"so-steno"
"so-strelka-backend"
"so-strelka-filestream"
"so-strelka-frontend"
"so-strelka-manager"
"so-suricata"
"so-telegraf"
"so-thehive"
"so-thehive-cortex"
"so-thehive-es"
"so-wazuh"
"so-zeek"
)
else
TRUSTED_CONTAINERS=(
"so-filebeat"
"so-idstools"
"so-elasticsearch"
"so-logstash"
"so-nginx"
"so-redis"
"so-steno"
"so-suricata"
"so-soc"
"so-telegraf"
"so-zeek"
)
fi
}
update_docker_containers() {
local CURLTYPE=$1
local IMAGE_TAG_SUFFIX=$2
local PROGRESS_CALLBACK=$3
local LOG_FILE=$4
local CONTAINER_REGISTRY=quay.io
local SIGNPATH=/root/sosigs
if [ -z "$CURLTYPE" ]; then
CURLTYPE=unknown
fi
if [ -z "$LOG_FILE" ]; then
if [ -c /dev/tty ]; then
LOG_FILE=/dev/tty
else
LOG_FILE=/dev/null
fi
fi
# Recheck the version for scenarios were the VERSION wasn't known before this script was imported
set_version
set_os
if [ -z "$TRUSTED_CONTAINERS" ]; then
container_list
fi
# Let's make sure we have the public key
curl -sSL https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/master/KEYS | gpg --import - >> "$LOG_FILE" 2>&1
rm -rf $SIGNPATH >> "$LOG_FILE" 2>&1
mkdir -p $SIGNPATH >> "$LOG_FILE" 2>&1
# Download the containers from the interwebs
for i in "${TRUSTED_CONTAINERS[@]}"
do
if [ -z "$PROGRESS_CALLBACK" ]; then
echo "Downloading $i" >> "$LOG_FILE" 2>&1
else
$PROGRESS_CALLBACK $i
fi
# Pull down the trusted docker image
local image=$i:$VERSION$IMAGE_TAG_SUFFIX
docker pull $CONTAINER_REGISTRY/$IMAGEREPO/$image >> "$LOG_FILE" 2>&1
# Get signature
curl -A "$CURLTYPE/$CURRENTVERSION/$OS/$(uname -r)" https://sigs.securityonion.net/$VERSION/$i:$VERSION$IMAGE_TAG_SUFFIX.sig --output $SIGNPATH/$image.sig >> "$LOG_FILE" 2>&1
if [[ $? -ne 0 ]]; then
echo "Unable to pull signature file for $image" >> "$LOG_FILE" 2>&1
exit 1
fi
# Dump our hash values
DOCKERINSPECT=$(docker inspect $CONTAINER_REGISTRY/$IMAGEREPO/$image)
echo "$DOCKERINSPECT" | jq ".[0].RepoDigests[] | select(. | contains(\"$CONTAINER_REGISTRY\"))" > $SIGNPATH/$image.txt
echo "$DOCKERINSPECT" | jq ".[0].Created, .[0].RootFS.Layers" >> $SIGNPATH/$image.txt
if [[ $? -ne 0 ]]; then
echo "Unable to inspect $image" >> "$LOG_FILE" 2>&1
exit 1
fi
GPGTEST=$(gpg --verify $SIGNPATH/$image.sig $SIGNPATH/$image.txt 2>&1)
if [[ $? -eq 0 ]]; then
if [[ -z "$SKIP_TAGPUSH" ]]; then
# Tag it with the new registry destination
if [ -z "$HOSTNAME" ]; then
HOSTNAME=$(hostname)
fi
docker tag $CONTAINER_REGISTRY/$IMAGEREPO/$image $HOSTNAME:5000/$IMAGEREPO/$image >> "$LOG_FILE" 2>&1
docker push $HOSTNAME:5000/$IMAGEREPO/$image >> "$LOG_FILE" 2>&1
fi
else
echo "There is a problem downloading the $image image. Details: " >> "$LOG_FILE" 2>&1
echo "" >> "$LOG_FILE" 2>&1
echo $GPGTEST >> "$LOG_FILE" 2>&1
exit 1
fi
done
}

View File

@@ -27,8 +27,7 @@ function usage {
cat << EOF
Usage: $0 <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.
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.
EOF
}
@@ -218,6 +217,6 @@ https://{{ URLBASE }}/#/hunt?q=import.id:${HASH}%20%7C%20groupby%20event.module%
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 Onion Hunt.
Please note that it may take 30 seconds or more for events to appear in Hunt.
EOF
fi

View File

@@ -16,7 +16,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
{% if grains['role'] in ['so-node','so-heavynode'] %}
curl -X GET -k https://localhost:9200/_cat/indices?v
curl -X GET -k -L https://localhost:9200/_cat/indices?v
{% else %}
curl -X GET localhost:9200/_cat/indices?v
curl -X GET -L localhost:9200/_cat/indices?v
{% endif %}

View File

@@ -0,0 +1,63 @@
#!/bin/bash
. $(dirname $0)/so-common
if [ "$FORCE_IP_UPDATE" != "1" ]; then
is_single_node_grid || fail "Cannot update the IP on a distributed grid"
fi
echo "This tool will update a manager's IP address to the new IP assigned to the management network interface."
echo
echo "WARNING: This tool is still undergoing testing, use at your own risk!"
echo
if [ -z "$OLD_IP" ]; then
OLD_IP=$(lookup_pillar "managerip")
if [ -z "$OLD_IP" ]; then
fail "Unable to find old IP; possible salt system failure"
fi
echo "Found old IP $OLD_IP."
fi
if [ -z "$NEW_IP" ]; then
iface=$(lookup_pillar "mainint" "host")
NEW_IP=$(ip -4 addr list $iface | grep inet | cut -d' ' -f6 | cut -d/ -f1)
if [ -z "$NEW_IP" ]; then
fail "Unable to detect new IP on interface $iface. "
fi
echo "Detected new IP $NEW_IP on interface $iface."
fi
if [ "$OLD_IP" == "$NEW_IP" ]; then
fail "IP address has not changed"
fi
echo "About to change old IP $OLD_IP to new IP $NEW_IP."
echo
read -n 1 -p "Would you like to continue? (y/N) " CONTINUE
echo
if [ "$CONTINUE" == "y" ]; then
for file in $(grep -rlI $OLD_IP /opt/so/saltstack /etc); do
echo "Updating file: $file"
sed -i "s|$OLD_IP|$NEW_IP|g" $file
done
echo "The IP has been changed from $OLD_IP to $NEW_IP."
echo
read -n 1 -p "The system must reboot to ensure all services have restarted with the new configuration. Reboot now? (y/N)" CONTINUE
echo
if [ "$CONTINUE" == "y" ]; then
reboot
fi
else
echo "Exiting without changes."
fi

View File

@@ -23,7 +23,7 @@
KIBANA_HOST={{ MANAGER }}
KSO_PORT=5601
OUTFILE="saved_objects.ndjson"
curl -s -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -XPOST $KIBANA_HOST:$KSO_PORT/api/saved_objects/_export -d '{ "type": [ "index-pattern", "config", "visualization", "dashboard", "search" ], "excludeExportDetails": false }' > $OUTFILE
curl -s -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -XPOST -L $KIBANA_HOST:$KSO_PORT/api/saved_objects/_export -d '{ "type": [ "index-pattern", "config", "visualization", "dashboard", "search" ], "excludeExportDetails": false }' > $OUTFILE
# Clean up using PLACEHOLDER
sed -i "s/$KIBANA_HOST/PLACEHOLDER/g" $OUTFILE

View File

@@ -0,0 +1,18 @@
#!/bin/bash
#
# Copyright 2014,2015,2016,2017,2018,2019,2020 Security Onion Solutions, LLC
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
$(dirname $0)/so-import-pcap $@

View File

@@ -0,0 +1,26 @@
#!/bin/bash
#
# Copyright 2014,2015,2016,2017,2018,2019,2020 Security Onion Solutions, LLC
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
. /usr/sbin/so-common
salt-call state.apply playbook.db_init,playbook,playbook.automation_user_create
/usr/sbin/so-soctopus-restart
echo "Importing Plays - this will take some time...."
wait 5
/usr/sbin/so-playbook-ruleupdate

View File

@@ -10,4 +10,4 @@ got_root() {
}
got_root
docker exec so-idstools /bin/bash -c 'cd /opt/so/idstools/etc && idstools-rulecat'
docker exec so-idstools /bin/bash -c "cd /opt/so/idstools/etc && idstools-rulecat $1"

View File

@@ -0,0 +1,104 @@
{% import_yaml 'salt/minion.defaults.yaml' as SALT_MINION_DEFAULTS -%}
#!/bin/bash
#
# Copyright 2014,2015,2016,2017,2018,2019,2020 Security Onion Solutions, LLC
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# this script checks the time the file /opt/so/log/salt/state-apply-test was last modified and restarts the salt-minion service if it is outside a threshold date/time
# the file is modified via file.touch using a scheduled job healthcheck.salt-minion.state-apply-test that runs a state.apply.
# by default the file should be updated every 5-8 minutes.
# this allows us to test that the minion is able apply states and communicate with the master
# if the file is unable to be touched via the state.apply, then we assume there is a possibilty that the minion is hung (though it could be possible the master is down as well)
# we then stop the service, pkill salt-minion, the start the salt-minion service back up
. /usr/sbin/so-common
QUIET=false
UPTIME_REQ=1800 #in seconds, how long the box has to be up before considering restarting salt-minion due to /opt/so/log/salt/state-apply-test not being touched
CURRENT_TIME=$(date +%s)
SYSTEM_START_TIME=$(date -d "$(</proc/uptime awk '{print $1}') seconds ago" +%s)
LAST_HIGHSTATE_END=$([ -e "/opt/so/log/salt/lasthighstate" ] && date -r /opt/so/log/salt/lasthighstate +%s || echo 0)
LAST_HEALTHCHECK_STATE_APPLY=$([ -e "/opt/so/log/salt/state-apply-test" ] && date -r /opt/so/log/salt/state-apply-test +%s || echo 0)
# SETTING THRESHOLD TO ANYTHING UNDER 600 seconds may cause a lot of salt-minion restarts since the job to touch the file occurs every 5-8 minutes by default
THRESHOLD={{SALT_MINION_DEFAULTS.salt.minion.check_threshold}} #within how many seconds the file /opt/so/log/salt/state-apply-test must have been touched/modified before the salt minion is restarted
THRESHOLD_DATE=$((LAST_HEALTHCHECK_STATE_APPLY+THRESHOLD))
logCmd() {
cmd=$1
info "Executing command: $cmd"
$cmd >> "/opt/so/log/salt/so-salt-minion-check"
}
log() {
msg=$1
level=${2:-I}
now=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
if ! $QUIET; then
echo $msg
fi
echo -e "$now | $level | $msg" >> "/opt/so/log/salt/so-salt-minion-check" 2>&1
}
error() {
log "$1" "E"
}
info() {
log "$1" "I"
}
usage()
{
cat <<EOF
Check health of salt-minion and restart it if needed
Options:
-h This message
-q Don't output to terminal
EOF
}
while getopts ":q" opt; do
case "$opt" in
q )
QUIET=true
;;
* ) usage
exit 0
;;
esac
done
log "running so-salt-minion-check"
if [ $CURRENT_TIME -ge $((SYSTEM_START_TIME+$UPTIME_REQ)) ]; then
if [ $THRESHOLD_DATE -le $CURRENT_TIME ]; then
log "salt-minion is unable to apply states" E
log "/opt/so/log/salt/healthcheck-state-apply not touched by required date: `date -d @$THRESHOLD_DATE`, last touched: `date -d @$LAST_HEALTHCHECK_STATE_APPLY`" I
log "last highstate completed at `date -d @$LAST_HIGHSTATE_END`" I
log "checking if any jobs are running" I
logCmd "salt-call --local saltutil.running" I
log "killing all salt-minion processes" I
logCmd "pkill -9 -ef /usr/bin/salt-minion" I
log "starting salt-minion service" I
logCmd "systemctl start salt-minion" I
else
log "/opt/so/log/salt/healthcheck-state-apply last touched: `date -d @$LAST_HEALTHCHECK_STATE_APPLY` must be touched by `date -d @$THRESHOLD_DATE` to avoid salt-minion restart" I
fi
else
log "system uptime only $((CURRENT_TIME-SYSTEM_START_TIME)) seconds does not meet $UPTIME_REQ second requirement." I
fi

View File

@@ -0,0 +1,93 @@
#!/bin/bash
. /usr/sbin/so-common
if [[ $1 =~ ^(-q|--quiet) ]]; then
quiet=true
fi
before=
after=
reload_required=false
print_sshd_t() {
local string=$1
local state=$2
echo "${state}:"
local grep_out
grep_out=$(sshd -T | grep "^${string}")
if [[ $state == "Before" ]]; then
before=$grep_out
else
after=$grep_out
fi
echo $grep_out
}
print_msg() {
local msg=$1
if ! [[ $quiet ]]; then
printf "%s\n" \
"----" \
"$msg" \
"----" \
""
fi
}
if ! [[ $quiet ]]; then print_sshd_t "ciphers" "Before"; fi
sshd -T | grep "^ciphers" | sed -e "s/\(3des-cbc\|aes128-cbc\|aes192-cbc\|aes256-cbc\|arcfour\|arcfour128\|arcfour256\|blowfish-cbc\|cast128-cbc\|rijndael-cbc@lysator.liu.se\)\,\?//g" >> /etc/ssh/sshd_config
if ! [[ $quiet ]]; then
print_sshd_t "ciphers" "After"
echo ""
fi
if [[ $before != $after ]]; then
reload_required=true
fi
if ! [[ $quiet ]]; then print_sshd_t "kexalgorithms" "Before"; fi
sshd -T | grep "^kexalgorithms" | sed -e "s/\(diffie-hellman-group14-sha1\|ecdh-sha2-nistp256\|diffie-hellman-group-exchange-sha256\|diffie-hellman-group1-sha1\|diffie-hellman-group-exchange-sha1\|ecdh-sha2-nistp521\|ecdh-sha2-nistp384\)\,\?//g" >> /etc/ssh/sshd_config
if ! [[ $quiet ]]; then
print_sshd_t "kexalgorithms" "After"
echo ""
fi
if [[ $before != $after ]]; then
reload_required=true
fi
if ! [[ $quiet ]]; then print_sshd_t "macs" "Before"; fi
sshd -T | grep "^macs" | sed -e "s/\(hmac-sha2-512,\|umac-128@openssh.com,\|hmac-sha2-256,\|umac-64@openssh.com,\|hmac-sha1,\|hmac-sha1-etm@openssh.com,\|umac-64-etm@openssh.com,\|hmac-sha1\)//g" >> /etc/ssh/sshd_config
if ! [[ $quiet ]]; then
print_sshd_t "macs" "After"
echo ""
fi
if [[ $before != $after ]]; then
reload_required=true
fi
if ! [[ $quiet ]]; then print_sshd_t "hostkeyalgorithms" "Before"; fi
sshd -T | grep "^hostkeyalgorithms" | sed "s|ecdsa-sha2-nistp256,||g" | sed "s|ssh-rsa,||g" >> /etc/ssh/sshd_config
if ! [[ $quiet ]]; then
print_sshd_t "hostkeyalgorithms" "After"
echo ""
fi
if [[ $before != $after ]]; then
reload_required=true
fi
if [[ $reload_required == true ]]; then
print_msg "Reloading sshd to load config changes..."
systemctl reload sshd
fi
{% if grains['os'] != 'CentOS' %}
print_msg "[ WARNING ] Any new ssh sessions will need to remove and reaccept the ECDSA key for this server before reconnecting."
{% endif %}

View File

@@ -14,8 +14,6 @@
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
{%- from 'common/maps/so-status.map.jinja' import docker with context %}
{%- set container_list = docker['containers'] | sort | unique %}
if ! [ "$(id -u)" = 0 ]; then
echo "This command must be run as root"
@@ -23,14 +21,24 @@ if ! [ "$(id -u)" = 0 ]; then
fi
# Constants
SYSTEM_START_TIME=$(date -d "$(</proc/uptime awk '{print $1}') seconds ago" +%s)
# file populated by salt.lasthighstate state at end of successful highstate run
LAST_HIGHSTATE_END=$([ -e "/opt/so/log/salt/lasthighstate" ] && date -r /opt/so/log/salt/lasthighstate +%s || echo 0)
HIGHSTATE_RUNNING=$(salt-call --local saltutil.running --out=json | jq -r '.local[].fun' | grep -q 'state.highstate' && echo $?)
ERROR_STRING="ERROR"
SUCCESS_STRING="OK"
PENDING_STRING="PENDING"
MISSING_STRING='MISSING'
DISABLED_STRING='DISABLED'
WAIT_START_STRING='WAIT_START'
STARTING_STRING='STARTING'
CALLER=$(ps -o comm= $PPID)
declare -a BAD_STATUSES=("removing" "paused" "exited" "dead")
declare -a PENDING_STATUSES=("paused" "created" "restarting")
declare -a GOOD_STATUSES=("running")
declare -a DISABLED_CONTAINERS=()
mapfile -t DISABLED_CONTAINERS < <(sort -u /opt/so/conf/so-status/so-status.conf | grep "^\s*#" | tr -d "#")
declare -a temp_container_name_list=()
declare -a temp_container_state_list=()
@@ -72,9 +80,9 @@ compare_lists() {
# {% endraw %}
create_expected_container_list() {
{% for item in container_list -%}
expected_container_list+=("{{ item }}")
{% endfor -%}
mapfile -t expected_container_list < <(sort -u /opt/so/conf/so-status/so-status.conf | tr -d "#")
}
populate_container_lists() {
@@ -104,46 +112,67 @@ populate_container_lists() {
parse_status() {
local container_state=${1}
[[ $container_state = "missing" ]] && printf $MISSING_STRING && return 1
local service_name=${2}
for state in "${GOOD_STATUSES[@]}"; do
[[ $container_state = "$state" ]] && printf $SUCCESS_STRING && return 0
done
for state in "${PENDING_STATUSES[@]}"; do
[[ $container_state = "$state" ]] && printf $PENDING_STRING && return 0
done
# This is technically not needed since the default is error state
for state in "${BAD_STATUSES[@]}"; do
[[ $container_state = "$state" ]] && printf $ERROR_STRING && return 1
[[ " ${DISABLED_CONTAINERS[@]} " =~ " ${service_name} " ]] && printf $DISABLED_STRING && return 0
done
printf $ERROR_STRING && return 1
# if a highstate has finished running since the system has started
# then the containers should be running so let's check the status
if [ $LAST_HIGHSTATE_END -ge $SYSTEM_START_TIME ]; then
[[ $container_state = "missing" ]] && printf $MISSING_STRING && return 1
for state in "${PENDING_STATUSES[@]}"; do
[[ $container_state = "$state" ]] && printf $PENDING_STRING && return 0
done
# This is technically not needed since the default is error state
for state in "${BAD_STATUSES[@]}"; do
[[ $container_state = "$state" ]] && printf $ERROR_STRING && return 1
done
printf $ERROR_STRING && return 1
# if a highstate has not run since system start time, but a highstate is currently running
# then show that the containers are STARTING
elif [[ "$HIGHSTATE_RUNNING" == 0 ]]; then
printf $STARTING_STRING && return 0
# if a highstate has not finished running since system startup and isn't currently running
# then just show that the containers are WAIT_START; waiting to be started
else
printf $WAIT_START_STRING && return 1
fi
}
# {% raw %}
print_line() {
local service_name=${1}
local service_state="$( parse_status ${2} )"
local service_state="$( parse_status ${2} ${1} )"
local columns=$(tput cols)
local state_color="\e[0m"
local PADDING_CONSTANT=14
local PADDING_CONSTANT=15
if [[ $service_state = "$ERROR_STRING" ]] || [[ $service_state = "$MISSING_STRING" ]]; then
if [[ $service_state = "$ERROR_STRING" ]] || [[ $service_state = "$MISSING_STRING" ]] || [[ $service_state = "$WAIT_START_STRING" ]]; then
state_color="\e[1;31m"
elif [[ $service_state = "$SUCCESS_STRING" ]]; then
state_color="\e[1;32m"
elif [[ $service_state = "$PENDING_STRING" ]]; then
elif [[ $service_state = "$PENDING_STRING" ]] || [[ $service_state = "$DISABLED_STRING" ]] || [[ $service_state = "$STARTING_STRING" ]]; then
state_color="\e[1;33m"
fi
printf " $service_name "
for i in $(seq 0 $(( $columns - $PADDING_CONSTANT - ${#service_name} - ${#service_state} ))); do
printf "-"
printf "${state_color}%b\e[0m" "-"
done
printf " [ "
printf "${state_color}%b\e[0m" "$service_state"
@@ -152,12 +181,10 @@ print_line() {
non_term_print_line() {
local service_name=${1}
local service_state="$( parse_status ${2} )"
local PADDING_CONSTANT=10
local service_state="$( parse_status ${2} ${1} )"
printf " $service_name "
for i in $(seq 0 $(( 40 - $PADDING_CONSTANT - ${#service_name} - ${#service_state} ))); do
for i in $(seq 0 $(( 35 - ${#service_name} - ${#service_state} ))); do
printf "-"
done
printf " [ "

View File

@@ -0,0 +1,63 @@
#!/bin/bash
#
# Copyright 2014,2015,2016,2017,2018,2019,2020 Security Onion Solutions, LLC
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
{%- set MANAGER = salt['grains.get']('master') %}
{%- set VERSION = salt['pillar.get']('global:soversion') %}
{%- set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
TESTRULE=$1
TESTPCAP=$2
. /usr/sbin/so-common
echo ""
echo "==============="
echo "Running all.rules and $TESTRULE against the following pcap: $TESTPCAP"
echo ""
sleep 3
rm -rf /tmp/nids-testing/output
mkdir -p /tmp/nids-testing/output
chown suricata:socore /tmp/nids-testing/output
mkdir -p /tmp/nids-testing/rules
cp /opt/so/conf/suricata/rules/all.rules /tmp/nids-testing/rules/all.rules
cat $TESTRULE >> /tmp/nids-testing/rules/all.rules
echo "==== Begin Suricata Output ==="
docker run --rm \
-v /opt/so/conf/suricata/suricata.yaml:/etc/suricata/suricata.yaml:ro \
-v /opt/so/conf/suricata/threshold.conf:/etc/suricata/threshold.conf:ro \
-v /tmp/nids-testing/rules:/etc/suricata/rules:ro \
-v "$TESTPCAP:/input.pcap:ro" \
-v /opt/so/conf/suricata/bpf:/etc/suricata/bpf:ro \
-v /tmp/nids-testing/output/:/nsm/:rw \
{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-suricata:{{ VERSION }} \
--runmode single -v -k none -r /input.pcap -l /tmp --init-errors-fatal
echo "==== End Suricata Output ==="
echo ""
echo "If any alerts hit, they will be displayed below:"
echo ""
cat /tmp/nids-testing/output/* | jq
echo ""
echo "End so-suricata-testrule"
echo "==============="
echo ""

View File

@@ -31,7 +31,7 @@ fi
USER=$1
THEHIVE_KEY=$(lookup_pillar hivekey)
THEHIVE_IP=$(lookup_pillar managerip)
THEHVIE_API_URL="$(lookup_pillar url_base)/thehive/api"
THEHIVE_USER=$USER
# Read password for new user from stdin
@@ -47,7 +47,7 @@ if ! check_password "$THEHIVE_PASS"; then
fi
# Create new user in TheHive
resp=$(curl -sk -XPOST -H "Authorization: Bearer $THEHIVE_KEY" -H "Content-Type: application/json" "https://$THEHIVE_IP/thehive/api/user" -d "{\"login\" : \"$THEHIVE_USER\",\"name\" : \"$THEHIVE_USER\",\"roles\" : [\"read\",\"alert\",\"write\",\"admin\"],\"preferences\" : \"{}\",\"password\" : \"$THEHIVE_PASS\"}")
resp=$(curl -sk -XPOST -H "Authorization: Bearer $THEHIVE_KEY" -H "Content-Type: application/json" -L "https://$THEHVIE_API_URL/user" -d "{\"login\" : \"$THEHIVE_USER\",\"name\" : \"$THEHIVE_USER\",\"roles\" : [\"read\",\"alert\",\"write\",\"admin\"],\"preferences\" : \"{}\",\"password\" : \"$THEHIVE_PASS\"}")
if [[ "$resp" =~ \"status\":\"Ok\" ]]; then
echo "Successfully added user to TheHive"
else

View File

@@ -31,7 +31,7 @@ fi
USER=$1
THEHIVE_KEY=$(lookup_pillar hivekey)
THEHIVE_IP=$(lookup_pillar managerip)
THEHVIE_API_URL="$(lookup_pillar url_base)/thehive/api"
THEHIVE_USER=$USER
case "${2^^}" in
@@ -46,7 +46,7 @@ case "${2^^}" in
;;
esac
resp=$(curl -sk -XPATCH -H "Authorization: Bearer $THEHIVE_KEY" -H "Content-Type: application/json" "https://$THEHIVE_IP/thehive/api/user/${THEHIVE_USER}" -d "{\"status\":\"${THEHIVE_STATUS}\" }")
resp=$(curl -sk -XPATCH -H "Authorization: Bearer $THEHIVE_KEY" -H "Content-Type: application/json" -L "https://$THEHVIE_API_URL/user/${THEHIVE_USER}" -d "{\"status\":\"${THEHIVE_STATUS}\" }")
if [[ "$resp" =~ \"status\":\"Locked\" || "$resp" =~ \"status\":\"Ok\" ]]; then
echo "Successfully updated user in TheHive"
else

View File

@@ -8,7 +8,7 @@
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
. /usr/sbin/so-common
source $(dirname $0)/so-common
if [[ $# -lt 1 || $# -gt 2 ]]; then
echo "Usage: $0 <list|add|update|enable|disable|validate|valemail|valpass> [email]"
@@ -56,14 +56,14 @@ function verifyEnvironment() {
require "openssl"
require "sqlite3"
[[ ! -f $databasePath ]] && fail "Unable to find database file; specify path via KRATOS_DB_PATH environment variable"
response=$(curl -Ss ${kratosUrl}/)
response=$(curl -Ss -L ${kratosUrl}/)
[[ "$response" != "404 page not found" ]] && fail "Unable to communicate with Kratos; specify URL via KRATOS_URL environment variable"
}
function findIdByEmail() {
email=$1
response=$(curl -Ss ${kratosUrl}/identities)
response=$(curl -Ss -L ${kratosUrl}/identities)
identityId=$(echo "${response}" | jq ".[] | select(.verifiable_addresses[0].value == \"$email\") | .id")
echo $identityId
}
@@ -113,7 +113,7 @@ function updatePassword() {
}
function listUsers() {
response=$(curl -Ss ${kratosUrl}/identities)
response=$(curl -Ss -L ${kratosUrl}/identities)
[[ $? != 0 ]] && fail "Unable to communicate with Kratos"
echo "${response}" | jq -r ".[] | .verifiable_addresses[0].value" | sort
@@ -131,7 +131,7 @@ function createUser() {
EOF
)
response=$(curl -Ss ${kratosUrl}/identities -d "$addUserJson")
response=$(curl -Ss -L ${kratosUrl}/identities -d "$addUserJson")
[[ $? != 0 ]] && fail "Unable to communicate with Kratos"
identityId=$(echo "${response}" | jq ".id")
@@ -153,7 +153,7 @@ function updateStatus() {
identityId=$(findIdByEmail "$email")
[[ ${identityId} == "" ]] && fail "User not found"
response=$(curl -Ss "${kratosUrl}/identities/$identityId")
response=$(curl -Ss -L "${kratosUrl}/identities/$identityId")
[[ $? != 0 ]] && fail "Unable to communicate with Kratos"
oldConfig=$(echo "select config from identity_credentials where identity_id=${identityId};" | sqlite3 "$databasePath")
@@ -171,7 +171,7 @@ function updateStatus() {
fi
updatedJson=$(echo "$response" | jq ".traits.status = \"$status\" | del(.verifiable_addresses) | del(.id) | del(.schema_url)")
response=$(curl -Ss -XPUT ${kratosUrl}/identities/$identityId -d "$updatedJson")
response=$(curl -Ss -XPUT -L ${kratosUrl}/identities/$identityId -d "$updatedJson")
[[ $? != 0 ]] && fail "Unable to mark user as locked"
}
@@ -191,7 +191,7 @@ function deleteUser() {
identityId=$(findIdByEmail "$email")
[[ ${identityId} == "" ]] && fail "User not found"
response=$(curl -Ss -XDELETE "${kratosUrl}/identities/$identityId")
response=$(curl -Ss -XDELETE -L "${kratosUrl}/identities/$identityId")
[[ $? != 0 ]] && fail "Unable to communicate with Kratos"
}

View File

@@ -0,0 +1,17 @@
#!/bin/bash
# Copyright 2014,2015,2016,2017,2018,2019,2020 Security Onion Solutions, LLC
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
docker exec -it so-wazuh /usr/bin/node /var/ossec/api/configuration/auth/htpasswd /var/ossec/api/configuration/auth/user $1

View File

@@ -0,0 +1,17 @@
#!/bin/bash
# Copyright 2014,2015,2016,2017,2018,2019,2020 Security Onion Solutions, LLC
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
docker exec -it so-wazuh /usr/bin/node /var/ossec/api/configuration/auth/htpasswd /var/ossec/api/configuration/auth/user $1

View File

@@ -0,0 +1,17 @@
#!/bin/bash
# Copyright 2014,2015,2016,2017,2018,2019,2020 Security Onion Solutions, LLC
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
docker exec -it so-wazuh /usr/bin/node /var/ossec/api/configuration/auth/htpasswd -D /var/ossec/api/configuration/auth/user $1

View File

@@ -16,6 +16,8 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
{%- set ISAIRGAP = salt['pillar.get']('global:airgap', 'False') %}
echo "Starting to check for yara rule updates at $(date)..."
output_dir="/opt/so/saltstack/default/salt/strelka/rules"
mkdir -p $output_dir
repos="$output_dir/repos.txt"
@@ -27,6 +29,7 @@ updatecounter=0
{% if ISAIRGAP is sameas true %}
echo "Airgap mode enabled."
clone_dir="/nsm/repo/rules/strelka"
repo_name="signature-base"
@@ -73,17 +76,17 @@ done
echo "Done!"
if [ "$newcounter" -gt 0 ];then
echo "$newcounter new rules added."
fi
if [ "$newcounter" -gt 0 ];then
echo "$newcounter new rules added."
fi
if [ "$updatecounter" -gt 0 ];then
echo "$updatecounter rules updated."
fi
if [ "$updatecounter" -gt 0 ];then
echo "$updatecounter rules updated."
fi
if [ "$deletecounter" -gt 0 ];then
echo "$deletecounter rules removed because they were deprecated or don't exist in the source repo."
fi
if [ "$deletecounter" -gt 0 ];then
echo "$deletecounter rules removed because they were deprecated or don't exist in the source repo."
fi
{% else %}
@@ -162,4 +165,6 @@ else
echo "No connectivity to Github...exiting..."
exit 1
fi
{%- endif -%}
{% endif %}
echo "Finished rule updates at $(date)..."

View File

@@ -16,24 +16,22 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
. /usr/sbin/so-common
UPDATE_DIR=/tmp/sogh/securityonion
INSTALLEDVERSION=$(cat /etc/soversion)
INSTALLEDSALTVERSION=$(salt --versions-report | grep Salt: | awk {'print $2'})
DEFAULT_SALT_DIR=/opt/so/saltstack/default
BATCHSIZE=5
SOUP_LOG=/root/soup.log
exec 3>&1 1>${SOUP_LOG} 2>&1
manager_check() {
# Check to see if this is a manager
MANAGERCHECK=$(cat /etc/salt/grains | grep role | awk '{print $2}')
if [[ "$MANAGERCHECK" =~ ^('so-eval'|'so-manager'|'so-standalone'|'so-managersearch'|'so-import')$ ]]; then
echo "This is a manager. We can proceed."
MINIONID=$(salt-call grains.get id --out=txt|awk -F: {'print $2'}|tr -d ' ')
else
echo "Please run soup on the manager. The manager controls all updates."
exit 0
fi
add_common() {
cp $UPDATE_DIR/salt/common/tools/sbin/so-common $DEFAULT_SALT_DIR/salt/common/tools/sbin/
cp $UPDATE_DIR/salt/common/tools/sbin/so-image-common $DEFAULT_SALT_DIR/salt/common/tools/sbin/
salt-call state.apply common queue=True
echo "Run soup one more time"
exit 0
}
airgap_mounted() {
@@ -47,7 +45,7 @@ airgap_mounted() {
echo "If you just copied the .iso file over you can specify the path."
echo "If you burned the ISO to a disk the standard way you can specify the device."
echo "Example: /home/user/securityonion-2.X.0.iso"
echo "Example: /dev/cdrom"
echo "Example: /dev/sdx1"
echo ""
read -p 'Enter the location of the iso: ' ISOLOC
if [ -f $ISOLOC ]; then
@@ -79,6 +77,30 @@ airgap_mounted() {
fi
}
airgap_update_dockers() {
if [ $is_airgap -eq 0 ]; then
# Let's copy the tarball
if [ ! -f $AGDOCKER/registry.tar ]; then
echo "Unable to locate registry. Exiting"
exit 1
else
echo "Stopping the registry docker"
docker stop so-dockerregistry
docker rm so-dockerregistry
echo "Copying the new dockers over"
tar xvf $AGDOCKER/registry.tar -C /nsm/docker-registry/docker
echo "Add Registry back"
docker load -i $AGDOCKER/registry_image.tar
fi
fi
}
update_registry() {
docker stop so-dockerregistry
docker rm so-dockerregistry
salt-call state.apply registry queue=True
}
check_airgap() {
# See if this is an airgap install
AIRGAP=$(cat /opt/so/saltstack/local/pillar/global.sls | grep airgap | awk '{print $2}')
@@ -92,6 +114,12 @@ check_airgap() {
fi
}
check_sudoers() {
if grep -q "so-setup" /etc/sudoers; then
echo "There is an entry for so-setup in the sudoers file, this can be safely deleted using \"visudo\"."
fi
}
clean_dockers() {
# Place Holder for cleaning up old docker images
echo "Trying to clean up old dockers."
@@ -100,7 +128,6 @@ clean_dockers() {
}
clone_to_tmp() {
# TODO Need to add a air gap option
# Clean old files
rm -rf /tmp/sogh
# Make a temp location for the files
@@ -128,21 +155,17 @@ copy_new_files() {
cd /tmp
}
detect_os() {
# Detect Base OS
echo "Determining Base OS." >> "$SOUP_LOG" 2>&1
if [ -f /etc/redhat-release ]; then
OS="centos"
elif [ -f /etc/os-release ]; then
OS="ubuntu"
fi
echo "Found OS: $OS" >> "$SOUP_LOG" 2>&1
generate_and_clean_tarballs() {
local new_version
new_version=$(cat $UPDATE_DIR/VERSION)
[ -d /opt/so/repo ] || mkdir -p /opt/so/repo
tar -cxf "/opt/so/repo/$new_version.tar.gz" "$UPDATE_DIR"
find "/opt/so/repo" -type f -not -name "$new_version.tar.gz" -exec rm -rf {} \;
}
highstate() {
# Run a highstate but first cancel a running one.
salt-call saltutil.kill_all_jobs
salt-call state.highstate -l info
# Run a highstate.
salt-call state.highstate -l info queue=True
}
masterlock() {
@@ -182,7 +205,7 @@ pillar_changes() {
[[ "$INSTALLEDVERSION" =~ rc.1 ]] && rc1_to_rc2
[[ "$INSTALLEDVERSION" =~ rc.2 ]] && rc2_to_rc3
[[ "$INSTALLEDVERSION" =~ rc.3 ]] && rc3_to_2.3.0
[[ "$INSTALLEDVERSION" == 2.3.0 ]] || [[ "$INSTALLEDVERSION" == 2.3.1 ]] || [[ "$INSTALLEDVERSION" == 2.3.2 ]] || [[ "$INSTALLEDVERSION" == 2.3.10 ]] && 2.3.0_to_2.3.20
}
rc1_to_rc2() {
@@ -198,8 +221,8 @@ rc1_to_rc2() {
sed -i "/^global:/a \\$line" /opt/so/saltstack/local/pillar/global.sls;
# Adding play values to the global.sls
local HIVEPLAYSECRET=$(tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w 20 | head -n 1)
local CORTEXPLAYSECRET=$(tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w 20 | head -n 1)
local HIVEPLAYSECRET=$(get_random_value)
local CORTEXPLAYSECRET=$(get_random_value)
sed -i "/^global:/a \\ hiveplaysecret: $HIVEPLAYSECRET" /opt/so/saltstack/local/pillar/global.sls;
sed -i "/^global:/a \\ cortexplaysecret: $CORTEXPLAYSECRET" /opt/so/saltstack/local/pillar/global.sls;
@@ -217,7 +240,7 @@ rc1_to_rc2() {
while read p; do
local NAME=$(echo $p | awk '{print $1}')
local EHOSTNAME=$(echo $p | awk -F"_" '{print $1}')
local IP=$(echo $p | awk '{print $2}')
local IP=$(echo $p | awk '{print $2}')
echo "Adding the new cross cluster config for $NAME"
curl -XPUT http://localhost:9200/_cluster/settings -H'Content-Type: application/json' -d '{"persistent": {"search": {"remote": {"'$NAME'": {"skip_unavailable": "true", "seeds": ["'$EHOSTNAME':9300"]}}}}}'
done </tmp/nodes.txt
@@ -261,9 +284,50 @@ rc3_to_2.3.0() {
sed -i 's/playbook:/playbook_db:/' /opt/so/saltstack/local/pillar/secrets.sls
{
echo "playbook_admin: $(tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w 20 | head -n 1)"
echo "playbook_automation: $(tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w 20 | head -n 1)"
echo "playbook_admin: $(get_random_value)"
echo "playbook_automation: $(get_random_value)"
} >> /opt/so/saltstack/local/pillar/secrets.sls
INSTALLEDVERSION=2.3.0
}
2.3.0_to_2.3.20(){
DOCKERSTUFFBIP=$(echo $DOCKERSTUFF | awk -F'.' '{print $1,$2,$3,1}' OFS='.')/24
# Remove PCAP from global
sed '/pcap:/d' /opt/so/saltstack/local/pillar/global.sls
sed '/sensor_checkin_interval_ms:/d' /opt/so/saltstack/local/pillar/global.sls
# Add checking interval to glbal
echo "sensoroni:" >> /opt/so/saltstack/local/pillar/global.sls
echo " node_checkin_interval_ms: 10000" >> /opt/so/saltstack/local/pillar/global.sls
# Update pillar fiels for new sensoroni functionality
for file in /opt/so/saltstack/local/pillar/minions/*; do
echo "sensoroni:" >> $file
echo " node_description:" >> $file
local SOMEADDRESS=$(cat $file | grep mainip | tail -n 1 | awk '{print $2'})
echo " node_address: $SOMEADDRESS" >> $file
done
# Remove old firewall config to reduce confusion
rm -f /opt/so/saltstack/default/pillar/firewall/ports.sls
# Fix daemon.json by managing it
echo "docker:" >> /opt/so/saltstack/local/pillar/global.sls
DOCKERGREP=$(cat /etc/docker/daemon.json | grep base | awk {'print $3'} | cut -f1 -d"," | tr -d '"')
if [ -z "$DOCKERGREP" ]; then
echo " range: '172.17.0.0/24'" >> /opt/so/saltstack/local/pillar/global.sls
echo " bip: '172.17.0.1/24'" >> /opt/so/saltstack/local/pillar/global.sls
else
DOCKERSTUFF="${DOCKERGREP//\"}"
DOCKERSTUFFBIP=$(echo $DOCKERSTUFF | awk -F'.' '{print $1,$2,$3,1}' OFS='.')/24
echo " range: '$DOCKERSTUFF/24'" >> /opt/so/saltstack/local/pillar/global.sls
echo " bip: '$DOCKERSTUFFBIP'" >> /opt/so/saltstack/local/pillar/global.sls
fi
INSTALLEDVERSION=2.3.20
}
space_check() {
@@ -278,118 +342,43 @@ space_check() {
}
thehive_maint() {
echo -n "Waiting for TheHive..."
COUNT=0
THEHIVE_CONNECTED="no"
while [[ "$COUNT" -le 240 ]]; do
curl --output /dev/null --silent --head --fail -k "https://localhost/thehive/api/alert"
if [ $? -eq 0 ]; then
THEHIVE_CONNECTED="yes"
echo "connected!"
break
else
((COUNT+=1))
sleep 1
echo -n "."
fi
done
if [ "$THEHIVE_CONNECTED" == "yes" ]; then
echo "Migrating thehive databases if needed."
curl -v -k -XPOST -L "https://localhost/thehive/api/maintenance/migrate"
curl -v -k -XPOST -L "https://localhost/cortex/api/maintenance/migrate"
fi
}
unmount_update() {
cd /tmp
umount /tmp/soagupdate
}
update_centos_repo() {
# Update the files in the repo
echo "Syncing new updates to /nsm/repo"
rsync -a $AGDOCKER/repo /nsm/repo
rsync -av $AGREPO/* /nsm/repo/
echo "Creating repo"
createrepo /nsm/repo
}
update_dockers() {
if [ $is_airgap -eq 0 ]; then
# Let's copy the tarball
if [ ! -f $AGDOCKER/registry.tar ]; then
echo "Unable to locate registry. Exiting"
exit 0
else
echo "Stopping the registry docker"
docker stop so-dockerregistry
docker rm so-dockerregistry
echo "Copying the new dockers over"
tar xvf $AGDOCKER/registry.tar -C /nsm/docker-registry/docker
fi
else
# List all the containers
if [ $MANAGERCHECK == 'so-import' ]; then
TRUSTED_CONTAINERS=( \
"so-idstools" \
"so-nginx" \
"so-filebeat" \
"so-suricata" \
"so-soc" \
"so-elasticsearch" \
"so-kibana" \
"so-kratos" \
"so-suricata" \
"so-registry" \
"so-pcaptools" \
"so-zeek" )
elif [ $MANAGERCHECK != 'so-helix' ]; then
TRUSTED_CONTAINERS=( \
"so-acng" \
"so-thehive-cortex" \
"so-curator" \
"so-domainstats" \
"so-elastalert" \
"so-elasticsearch" \
"so-filebeat" \
"so-fleet" \
"so-fleet-launcher" \
"so-freqserver" \
"so-grafana" \
"so-idstools" \
"so-influxdb" \
"so-kibana" \
"so-kratos" \
"so-logstash" \
"so-minio" \
"so-mysql" \
"so-nginx" \
"so-pcaptools" \
"so-playbook" \
"so-redis" \
"so-soc" \
"so-soctopus" \
"so-steno" \
"so-strelka-frontend" \
"so-strelka-manager" \
"so-strelka-backend" \
"so-strelka-filestream" \
"so-suricata" \
"so-telegraf" \
"so-thehive" \
"so-thehive-es" \
"so-wazuh" \
"so-zeek" )
else
TRUSTED_CONTAINERS=( \
"so-filebeat" \
"so-idstools" \
"so-logstash" \
"so-nginx" \
"so-redis" \
"so-steno" \
"so-suricata" \
"so-telegraf" \
"so-zeek" )
fi
# Download the containers from the interwebs
for i in "${TRUSTED_CONTAINERS[@]}"
do
# Pull down the trusted docker image
echo "Downloading $i:$NEWVERSION"
docker pull --disable-content-trust=false docker.io/$IMAGEREPO/$i:$NEWVERSION
# Tag it with the new registry destination
docker tag $IMAGEREPO/$i:$NEWVERSION $HOSTNAME:5000/$IMAGEREPO/$i:$NEWVERSION
docker push $HOSTNAME:5000/$IMAGEREPO/$i:$NEWVERSION
done
fi
# Cleanup on Aisle 4
clean_dockers
echo "Add Registry back if airgap"
if [ $is_airgap -eq 0 ]; then
docker load -i $AGDOCKER/registry_image.tar
fi
}
update_version() {
# Update the version to the latest
echo "Updating the Security Onion version file."
@@ -411,6 +400,10 @@ upgrade_check_salt() {
if [ "$INSTALLEDSALTVERSION" == "$NEWSALTVERSION" ]; then
echo "You are already running the correct version of Salt for Security Onion."
else
UPGRADESALT=1
fi
}
upgrade_salt() {
SALTUPGRADED=True
echo "Performing upgrade of Salt from $INSTALLEDSALTVERSION to $NEWSALTVERSION."
echo ""
@@ -421,7 +414,11 @@ upgrade_check_salt() {
yum versionlock delete "salt-*"
echo "Updating Salt packages and restarting services."
echo ""
sh $UPDATE_DIR/salt/salt/scripts/bootstrap-salt.sh -F -M -x python3 stable "$NEWSALTVERSION"
if [ $is_airgap -eq 0 ]; then
sh $UPDATE_DIR/salt/salt/scripts/bootstrap-salt.sh -r -F -M -x python3 stable "$NEWSALTVERSION"
else
sh $UPDATE_DIR/salt/salt/scripts/bootstrap-salt.sh -F -M -x python3 stable "$NEWSALTVERSION"
fi
echo "Applying yum versionlock for Salt."
echo ""
yum versionlock add "salt-*"
@@ -441,18 +438,24 @@ upgrade_check_salt() {
apt-mark hold "salt-master"
apt-mark hold "salt-minion"
fi
fi
}
verify_latest_update_script() {
# Check to see if the update scripts match. If not run the new one.
CURRENTSOUP=$(md5sum /opt/so/saltstack/default/salt/common/tools/sbin/soup | awk '{print $1}')
GITSOUP=$(md5sum $UPDATE_DIR/salt/common/tools/sbin/soup | awk '{print $1}')
if [[ "$CURRENTSOUP" == "$GITSOUP" ]]; then
CURRENTCMN=$(md5sum /opt/so/saltstack/default/salt/common/tools/sbin/so-common | awk '{print $1}')
GITCMN=$(md5sum $UPDATE_DIR/salt/common/tools/sbin/so-common | awk '{print $1}')
CURRENTIMGCMN=$(md5sum /opt/so/saltstack/default/salt/common/tools/sbin/so-image-common | awk '{print $1}')
GITIMGCMN=$(md5sum $UPDATE_DIR/salt/common/tools/sbin/so-image-common | awk '{print $1}')
if [[ "$CURRENTSOUP" == "$GITSOUP" && "$CURRENTCMN" == "$GITCMN" && "$CURRENTIMGCMN" == "$GITIMGCMN" ]]; then
echo "This version of the soup script is up to date. Proceeding."
else
echo "You are not running the latest soup version. Updating soup."
echo "You are not running the latest soup version. Updating soup and its components. Might take multiple runs to complete"
cp $UPDATE_DIR/salt/common/tools/sbin/soup $DEFAULT_SALT_DIR/salt/common/tools/sbin/
cp $UPDATE_DIR/salt/common/tools/sbin/so-common $DEFAULT_SALT_DIR/salt/common/tools/sbin/
cp $UPDATE_DIR/salt/common/tools/sbin/so-image-common $DEFAULT_SALT_DIR/salt/common/tools/sbin/
salt-call state.apply common queue=True
echo ""
echo "soup has been updated. Please run soup again."
@@ -478,53 +481,106 @@ done
echo "Checking to see if this is a manager."
echo ""
manager_check
require_manager
set_minionid
echo "Checking to see if this is an airgap install"
echo ""
check_airgap
echo "Found that Security Onion $INSTALLEDVERSION is currently installed."
echo ""
detect_os
set_os
echo ""
if [ $is_airgap -eq 0 ]; then
# Let's mount the ISO since this is airgap
airgap_mounted
else
echo "Cloning Security Onion github repo into $UPDATE_DIR."
echo "Removing previous upgrade sources."
rm -rf $UPDATE_DIR
clone_to_tmp
fi
echo ""
echo "Verifying we have the latest soup script."
verify_latest_update_script
echo ""
echo "Generating new repo archive"
generate_and_clean_tarballs
if [ -f /usr/sbin/so-image-common ]; then
. /usr/sbin/so-image-common
else
add_common
fi
echo "Let's see if we need to update Security Onion."
upgrade_check
space_check
echo "Checking for Salt Master and Minion updates."
upgrade_check_salt
echo ""
echo "Performing upgrade from Security Onion $INSTALLEDVERSION to Security Onion $NEWVERSION."
echo ""
echo "Updating dockers to $NEWVERSION."
if [ $is_airgap -eq 0 ]; then
airgap_update_dockers
else
update_registry
update_docker_containers "soup"
FEATURESCHECK=$(lookup_pillar features elastic)
if [[ "$FEATURESCHECK" == "True" ]]; then
TRUSTED_CONTAINERS=(
"so-elasticsearch"
"so-filebeat"
"so-kibana"
"so-logstash"
)
update_docker_containers "features" "-features"
fi
fi
echo ""
echo "Stopping Salt Minion service."
systemctl stop salt-minion
echo "Killing any remaining Salt Minion processes."
pkill -9 -ef /usr/bin/salt-minion
echo ""
echo "Stopping Salt Master service."
systemctl stop salt-master
echo ""
echo "Checking for Salt Master and Minion updates."
upgrade_check_salt
# Does salt need upgraded. If so update it.
if [ "$UPGRADESALT" == "1" ]; then
echo "Upgrading Salt"
# Update the repo files so it can actually upgrade
if [ $is_airgap -eq 0 ]; then
update_centos_repo
yum clean all
fi
upgrade_salt
fi
echo "Checking if Salt was upgraded."
echo ""
# Check that Salt was upgraded
if [[ $(salt --versions-report | grep Salt: | awk {'print $2'}) != "$NEWSALTVERSION" ]]; then
echo "Salt upgrade failed. Check of indicators of failure in $SOUP_LOG."
echo "Once the issue is resolved, run soup again."
echo "Exiting."
echo ""
exit 1
else
echo "Salt upgrade success."
echo ""
fi
echo "Making pillar changes."
pillar_changes
echo ""
echo ""
echo "Updating dockers to $NEWVERSION."
update_dockers
# Only update the repo if its airgap
if [ $is_airgap -eq 0 ]; then
if [[ $is_airgap -eq 0 ]] && [[ "$UPGRADESALT" != "1" ]]; then
update_centos_repo
fi
@@ -542,9 +598,19 @@ echo ""
echo "Starting Salt Master service."
systemctl start salt-master
# Only regenerate osquery packages if Fleet is enabled
FLEET_MANAGER=$(lookup_pillar fleet_manager)
FLEET_NODE=$(lookup_pillar fleet_node)
if [[ "$FLEET_MANAGER" == "True" || "$FLEET_NODE" == "True" ]]; then
echo ""
echo "Regenerating Osquery Packages.... This will take several minutes."
salt-call state.apply fleet.event_gen-packages -l info queue=True
echo ""
fi
echo ""
echo "Running a highstate to complete the Security Onion upgrade on this manager. This could take several minutes."
highstate
salt-call state.highstate -l info queue=True
echo ""
echo "Upgrade from $INSTALLEDVERSION to $NEWVERSION complete."
@@ -557,18 +623,24 @@ masterunlock
echo ""
echo "Starting Salt Master service."
systemctl start salt-master
highstate
echo "Running a highstate. This could take several minutes."
salt-call state.highstate -l info queue=True
playbook
unmount_update
thehive_maint
SALTUPGRADED="True"
if [[ "$SALTUPGRADED" == "True" ]]; then
if [ "$UPGRADESALT" == "1" ]; then
echo ""
echo "Upgrading Salt on the remaining Security Onion nodes from $INSTALLEDSALTVERSION to $NEWSALTVERSION."
salt -C 'not *_eval and not *_helix and not *_manager and not *_managersearch and not *_standalone' -b $BATCHSIZE state.apply salt.minion
if [ $is_airgap -eq 0 ]; then
salt -C 'not *_eval and not *_helixsensor and not *_manager and not *_managersearch and not *_standalone' cmd.run "yum clean all"
fi
salt -C 'not *_eval and not *_helixsensor and not *_manager and not *_managersearch and not *_standalone' -b $BATCHSIZE state.apply salt.minion queue=True
echo ""
fi
check_sudoers
}
main "$@" | tee /dev/fd/3

View File

@@ -1,2 +1,27 @@
#!/bin/bash
#
# Copyright 2014,2015,2016,2017,2018,2019,2020 Security Onion Solutions, LLC
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
APP=close
lf=/tmp/$APP-pidLockFile
# create empty lock file if none exists
cat /dev/null >> $lf
read lastPID < $lf
# if lastPID is not null and a process with that pid exists , exit
[ ! -z "$lastPID" -a -d /proc/$lastPID ] && exit
echo $$ > $lf
/usr/sbin/so-curator-closed-delete > /dev/null 2>&1; docker exec so-curator curator --config /etc/curator/config/curator.yml /etc/curator/action/so-zeek-close.yml > /dev/null 2>&1; docker exec so-curator curator --config /etc/curator/config/curator.yml /etc/curator/action/so-beats-close.yml > /dev/null 2>&1; docker exec so-curator curator --config /etc/curator/config/curator.yml /etc/curator/action/so-firewall-close.yml > /dev/null 2>&1; docker exec so-curator curator --config /etc/curator/config/curator.yml /etc/curator/action/so-ids-close.yml > /dev/null 2>&1; docker exec so-curator curator --config /etc/curator/config/curator.yml /etc/curator/action/so-import-close.yml > /dev/null 2>&1; docker exec so-curator curator --config /etc/curator/config/curator.yml /etc/curator/action/so-osquery-close.yml > /dev/null 2>&1; docker exec so-curator curator --config /etc/curator/config/curator.yml /etc/curator/action/so-ossec-close.yml > /dev/null 2>&1; docker exec so-curator curator --config /etc/curator/config/curator.yml /etc/curator/action/so-strelka-close.yml > /dev/null 2>&1; docker exec so-curator curator --config /etc/curator/config/curator.yml /etc/curator/action/so-syslog-close.yml > /dev/null 2>&1

View File

@@ -1,6 +1,6 @@
#!/bin/bash
#
# Copyright 2014,2015,2016,2017,2018 Security Onion Solutions, LLC
# Copyright 2014,2015,2016,2017,2018,2019,2020 Security Onion Solutions, LLC
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -34,6 +34,13 @@
#fi
# Avoid starting multiple instances
if ! pgrep -f "so-curator-closed-delete-delete" >/dev/null; then
/usr/sbin/so-curator-closed-delete-delete
fi
APP=closeddelete
lf=/tmp/$APP-pidLockFile
# create empty lock file if none exists
cat /dev/null >> $lf
read lastPID < $lf
# if lastPID is not null and a process with that pid exists , exit
[ ! -z "$lastPID" -a -d /proc/$lastPID ] && exit
echo $$ > $lf
/usr/sbin/so-curator-closed-delete-delete

View File

@@ -26,41 +26,36 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#. /usr/sbin/so-elastic-common
#. /etc/nsm/securityonion.conf
LOG="/opt/so/log/curator/so-curator-closed-delete.log"
overlimit() {
[[ $(du -hs --block-size=1GB /nsm/elasticsearch/nodes | awk '{print $1}' ) -gt "{{LOG_SIZE_LIMIT}}" ]]
}
closedindices() {
INDICES=$(curl -s -k {% if grains['role'] in ['so-node','so-heavynode'] %}https://{% endif %}{{ELASTICSEARCH_HOST}}:{{ELASTICSEARCH_PORT}}/_cat/indices?h=index\&expand_wildcards=closed 2> /dev/null)
[ $? -eq 1 ] && return false
echo ${INDICES} | grep -q -E "(logstash-|so-)"
}
# Check for 2 conditions:
# 1. Are Elasticsearch indices using more disk space than LOG_SIZE_LIMIT?
# 2. Are there any closed logstash- or so- indices that we can delete?
# 2. Are there any closed indices that we can delete?
# If both conditions are true, keep on looping until one of the conditions is false.
while [[ $(du -hs --block-size=1GB /nsm/elasticsearch/nodes | awk '{print $1}' ) -gt "{{LOG_SIZE_LIMIT}}" ]] &&
{% if grains['role'] in ['so-node','so-heavynode'] %}
curl -s -k https://{{ELASTICSEARCH_HOST}}:{{ELASTICSEARCH_PORT}}/_cat/indices | grep -E " close (logstash-|so-)" > /dev/null; do
{% else %}
curl -s {{ELASTICSEARCH_HOST}}:{{ELASTICSEARCH_PORT}}/_cat/indices | grep -E " close (logstash-|so-)" > /dev/null; do
{% endif %}
while overlimit && closedindices; do
# We need to determine OLDEST_INDEX.
# First, get the list of closed indices that are prefixed with "logstash-" or "so-".
# For example: logstash-ids-YYYY.MM.DD
# We need to determine OLDEST_INDEX:
# First, get the list of closed indices using _cat/indices?h=index\&expand_wildcards=closed.
# Then, sort by date by telling sort to use hyphen as delimiter and then sort on the third field.
# Finally, select the first entry in that sorted list.
{% if grains['role'] in ['so-node','so-heavynode'] %}
OLDEST_INDEX=$(curl -s -k https://{{ELASTICSEARCH_HOST}}:{{ELASTICSEARCH_PORT}}/_cat/indices | grep -E " close (logstash-|so-)" | awk '{print $2}' | sort -t- -k3 | head -1)
{% else %}
OLDEST_INDEX=$(curl -s {{ELASTICSEARCH_HOST}}:{{ELASTICSEARCH_PORT}}/_cat/indices | grep -E " close (logstash-|so-)" | awk '{print $2}' | sort -t- -k3 | head -1)
{% endif %}
OLDEST_INDEX=$(curl -s -k {% if grains['role'] in ['so-node','so-heavynode'] %}https://{% endif %}{{ELASTICSEARCH_HOST}}:{{ELASTICSEARCH_PORT}}/_cat/indices?h=index\&expand_wildcards=closed | grep -E "(logstash-|so-)" | sort -t- -k3 | head -1)
# Now that we've determined OLDEST_INDEX, ask Elasticsearch to delete it.
{% if grains['role'] in ['so-node','so-heavynode'] %}
curl -XDELETE -k https://{{ELASTICSEARCH_HOST}}:{{ELASTICSEARCH_PORT}}/${OLDEST_INDEX}
{% else %}
curl -XDELETE {{ELASTICSEARCH_HOST}}:{{ELASTICSEARCH_PORT}}/${OLDEST_INDEX}
{% endif %}
curl -XDELETE -k {% if grains['role'] in ['so-node','so-heavynode'] %}https://{% endif %}{{ELASTICSEARCH_HOST}}:{{ELASTICSEARCH_PORT}}/${OLDEST_INDEX}
# Finally, write a log entry that says we deleted it.
echo "$(date) - Used disk space exceeds LOG_SIZE_LIMIT ({{LOG_SIZE_LIMIT}} GB) - Index ${OLDEST_INDEX} deleted ..." >> ${LOG}
done
done

View File

@@ -1,2 +1,27 @@
#!/bin/bash
#
# Copyright 2014,2015,2016,2017,2018,2019,2020 Security Onion Solutions, LLC
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
APP=delete
lf=/tmp/$APP-pidLockFile
# create empty lock file if none exists
cat /dev/null >> $lf
read lastPID < $lf
# if lastPID is not null and a process with that pid exists , exit
[ ! -z "$lastPID" -a -d /proc/$lastPID ] && exit
echo $$ > $lf
docker exec so-curator curator --config /etc/curator/config/curator.yml /etc/curator/action/delete.yml > /dev/null 2>&1

View File

@@ -127,6 +127,12 @@ so-curator:
- /opt/so/conf/curator/curator.yml:/etc/curator/config/curator.yml:ro
- /opt/so/conf/curator/action/:/etc/curator/action:ro
- /opt/so/log/curator:/var/log/curator:rw
append_so-curator_so-status.conf:
file.append:
- name: /opt/so/conf/so-status/so-status.conf
- text: so-curator
# Begin Curator Cron Jobs
# Close

View File

@@ -1,6 +1,6 @@
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
{% set MANAGER = salt['grains.get']('master') %}
{% set OLDVERSIONS = ['2.0.0-rc.1','2.0.1-rc.1','2.0.2-rc.1','2.0.3-rc.1','2.1.0-rc.2','2.2.0-rc.3']%}
{% set OLDVERSIONS = ['2.0.0-rc.1','2.0.1-rc.1','2.0.2-rc.1','2.0.3-rc.1','2.1.0-rc.2','2.2.0-rc.3','2.3.0','2.3.1','2.3.2','2.3.20']%}
{% for VERSION in OLDVERSIONS %}
remove_images_{{ VERSION }}:
@@ -42,4 +42,4 @@ remove_images_{{ VERSION }}:
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-thehive-es:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-wazuh:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-zeek:{{ VERSION }}'
{% endfor %}
{% endfor %}

View File

@@ -43,19 +43,24 @@ dstatslogdir:
so-domainstatsimage:
cmd.run:
- name: docker pull --disable-content-trust=false docker.io/{{ IMAGEREPO }}/so-domainstats:HH1.0.3
- name: docker pull {{ MANAGER }}:5000/{{ IMAGEREPO }}/so-domainstats:{{ VERSION }}
so-domainstats:
docker_container.running:
- require:
- so-domainstatsimage
- image: docker.io/{{ IMAGEREPO }}/so-domainstats:HH1.0.3
- image: {{ MANAGER }}:5000/{{ IMAGEREPO }}/so-domainstats:{{ VERSION }}
- hostname: domainstats
- name: so-domainstats
- user: domainstats
- binds:
- /opt/so/log/domainstats:/var/log/domain_stats
append_so-domainstats_so-status.conf:
file.append:
- name: /opt/so/conf/so-status/so-status.conf
- text: so-domainstats
{% else %}
domainstats_state_not_allowed:

View File

@@ -16,7 +16,7 @@ class PlaybookESAlerter(Alerter):
today = strftime("%Y.%m.%d", gmtime())
timestamp = strftime("%Y-%m-%d"'T'"%H:%M:%S", gmtime())
headers = {"Content-Type": "application/json"}
payload = {"rule": { "name": self.rule['play_title'],"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}
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"http://{self.rule['elasticsearch_host']}/so-playbook-alerts-{today}/_doc/"
requests.post(url, data=json.dumps(payload), headers=headers, verify=False)

View File

@@ -121,6 +121,12 @@ so-elastalert:
- {{MANAGER_URL}}:{{MANAGER_IP}}
- require:
- module: wait_for_elasticsearch
append_so-elastalert_so-status.conf:
file.append:
- name: /opt/so/conf/so-status/so-status.conf
- text: so-elastalert
{% endif %}
{% else %}

View File

@@ -1,18 +1,19 @@
{%- set NODE_ROUTE_TYPE = salt['pillar.get']('elasticsearch:node_route_type', 'hot') %}
{%- if salt['pillar.get']('elasticsearch:hot_warm_enabled') or salt['pillar.get']('elasticsearch:true_cluster') %}
{%- set ESCLUSTERNAME = salt['pillar.get']('elasticsearch:true_cluster_name', '') %}
{%- set NODEIP = salt['pillar.get']('elasticsearch:mainip') %}
{%- set FEATURES = salt['pillar.get']('elastic:features', False) %}
{%- set TRUECLUSTER = salt['pillar.get']('elasticsearch:true_cluster', False) %}
{%- if TRUECLUSTER is sameas true %}
{%- set ESCLUSTERNAME = salt['pillar.get']('elasticsearch:true_cluster_name') %}
{%- else %}
{%- set ESCLUSTERNAME = salt['pillar.get']('elasticsearch:esclustername', '') %}
{%- set ESCLUSTERNAME = salt['pillar.get']('elasticsearch:esclustername') %}
{%- endif %}
{%- set NODEIP = salt['pillar.get']('elasticsearch:mainip', '') -%}
{% set FEATURES = salt['pillar.get']('elastic:features', False) %}
cluster.name: "{{ ESCLUSTERNAME }}"
network.host: 0.0.0.0
# minimum_master_nodes need to be explicitly set when bound on a public IP
# set to 1 to allow single node clusters
# Details: https://github.com/elastic/elasticsearch/pull/17288
discovery.zen.minimum_master_nodes: 1
#discovery.zen.minimum_master_nodes: 1
# This is a test -- if this is here, then the volume is mounted correctly.
path.logs: /var/log/elasticsearch
action.destructive_requires_name: true
@@ -37,10 +38,30 @@ cluster.routing.allocation.disk.watermark.flood_stage: 98%
#xpack.security.http.ssl.client_authentication: none
#xpack.security.authc:
# anonymous:
# username: anonymous_user
# roles: superuser
# authz_exception: true
# username: anonymous_user
# roles: superuser
# authz_exception: true
{%- endif %}
node.attr.box_type: {{ NODE_ROUTE_TYPE }}
node.name: {{ ESCLUSTERNAME }}
node.name: {{ grains.host }}
script.max_compilations_rate: 1000/1m
{%- if TRUECLUSTER is sameas true %}
{%- if grains.role == 'so-manager' %}
{%- if salt['pillar.get']('nodestab', {}) %}
node.roles: [ master, data, remote_cluster_client ]
discovery.seed_hosts:
- {{ grains.master }}
{%- for SN, SNDATA in salt['pillar.get']('nodestab', {}).items() %}
- {{ SN.split('_')|first }}
{%- endfor %}
{%- endif %}
{%- else %}
node.roles: [ data, ingest ]
node.attr.box_type: {{ NODE_ROUTE_TYPE }}
discovery.seed_hosts:
- {{ grains.master }}
{%- endif %}
{%- endif %}
{%- if TRUECLUSTER is sameas false %}
node.attr.box_type: {{ NODE_ROUTE_TYPE }}
{%- endif %}
indices.query.bool.max_clause_count: 1500

View File

@@ -6,7 +6,7 @@
{ "set": { "if": "ctx.rule?.uuid > 1999999", "field": "rule.reference", "value": "https://doc.emergingthreats.net/{{rule.uuid}}" } },
{ "convert": { "if": "ctx.rule.uuid != null", "field": "rule.uuid", "type": "string" } },
{ "dissect": { "if": "ctx.rule.name != null", "field": "rule.name", "pattern" : "%{rule_type} %{rest_of_rulename} ", "ignore_failure": true } },
{ "set": { "if": "ctx.rule_type == 'GPL'", "field": "rule_ruleset", "value": "Snort GPL" } },
{ "set": { "if": "ctx.rule_type == 'GPL'", "field": "rule.ruleset", "value": "Snort GPL" } },
{ "set": { "if": "ctx.rule_type == 'ET'", "field": "rule.ruleset", "value": "Emerging Threats" } },
{ "set": { "if": "ctx.rule.severity == 3", "field": "event.severity", "value": 1, "override": true } },
{ "set": { "if": "ctx.rule.severity == 2", "field": "event.severity", "value": 2, "override": true } },

View File

@@ -6,7 +6,7 @@
{ "gsub": { "field": "message2.columns.data", "pattern": "\\\\xC2\\\\xAE", "replacement": "", "ignore_missing": true } },
{ "rename": { "if": "ctx.message2.columns?.eventid != null", "field": "message2.columns", "target_field": "winlog", "ignore_missing": true } },
{ "json": { "field": "winlog.data", "target_field": "temp", "ignore_failure": true } },
{ "rename": { "field": "temp.Data", "target_field": "winlog.event_data", "ignore_missing": true } },
{ "rename": { "field": "temp.EventData", "target_field": "winlog.event_data", "ignore_missing": true } },
{ "rename": { "field": "winlog.source", "target_field": "winlog.channel", "ignore_missing": true } },
{ "rename": { "field": "winlog.eventid", "target_field": "winlog.event_id", "ignore_missing": true } },
{ "pipeline": { "if": "ctx.winlog?.channel == 'Microsoft-Windows-Sysmon/Operational'", "name": "sysmon" } },
@@ -22,4 +22,4 @@
{ "set": { "field": "event.dataset", "value": "{{osquery.result.name}}", "override": false} },
{ "pipeline": { "name": "common" } }
]
}
}

View File

@@ -63,7 +63,7 @@
{ "rename": { "field": "fields.module", "target_field": "event.module", "ignore_failure": true, "ignore_missing": true } },
{ "pipeline": { "if": "ctx.winlog?.channel == 'Microsoft-Windows-Sysmon/Operational'", "name": "sysmon" } },
{ "pipeline": { "if": "ctx.winlog?.channel != 'Microsoft-Windows-Sysmon/Operational'", "name":"win.eventlogs" } },
{ "set": { "if": "ctx.containsKey('rule') && ctx.rule != null", "field": "event.dataset", "value": "alert", "override": true } },
{ "set": { "if": "ctx.rule != null && ctx.rule.name != null", "field": "event.dataset", "value": "alert", "override": true } },
{ "pipeline": { "name": "common" } }
]
}

View File

@@ -6,15 +6,27 @@
{ "rename": { "field": "message2.scan", "target_field": "scan", "ignore_missing": true } },
{ "rename": { "field": "message2.request", "target_field": "request", "ignore_missing": true } },
{ "rename": { "field": "scan.hash", "target_field": "hash", "ignore_missing": true } },
{ "rename": { "field": "scan.exiftool", "target_field": "exiftool", "ignore_missing": true } },
{ "grok": { "if": "ctx.request?.attributes?.filename != null", "field": "request.attributes.filename", "patterns": ["-%{WORD:log.id.fuid}-"], "ignore_failure": true } },
{ "foreach":
{
"if": "ctx.scan?.exiftool?.keys !=null",
"field": "scan.exiftool.keys",
"processor":{
"if": "ctx.exiftool?.keys !=null",
"field": "exiftool.keys",
"processor": {
"append": {
"field": "scan.exiftool",
"value": "{{_ingest._value.key}}={{_ingest._value.value}}"
}
}
}
},
{ "foreach":
{
"if": "ctx.exiftool?.keys !=null",
"field": "exiftool.keys",
"processor": {
"set": {
"field": "scan.exiftool.{{_ingest._value.key}}",
"field": "exiftool.{{_ingest._value.key}}",
"value": "{{_ingest._value.value}}"
}
}
@@ -32,6 +44,14 @@
}
}
},
{ "set": { "if": "ctx.exiftool?.SourceFile != null", "field": "file.source", "value": "{{exiftool.SourceFile}}", "ignore_failure": true }},
{ "set": { "if": "ctx.exiftool?.FilePermissions != null", "field": "file.permissions", "value": "{{exiftool.FilePermissions}}", "ignore_failure": true }},
{ "set": { "if": "ctx.exiftool?.FileName != null", "field": "file.name", "value": "{{exiftool.FileName}}", "ignore_failure": true }},
{ "set": { "if": "ctx.exiftool?.FileModifyDate != null", "field": "file.mtime", "value": "{{exiftool.FileModifyDate}}", "ignore_failure": true }},
{ "set": { "if": "ctx.exiftool?.FileAccessDate != null", "field": "file.accessed", "value": "{{exiftool.FileAccessDate}}", "ignore_failure": true }},
{ "set": { "if": "ctx.exiftool?.FileInodeChangeDate != null", "field": "file.ctime", "value": "{{exiftool.FileInodeChangeDate}}", "ignore_failure": true }},
{ "set": { "if": "ctx.exiftool?.FileDirectory != null", "field": "file.directory", "value": "{{exiftool.FileDirectory}}", "ignore_failure": true }},
{ "set": { "if": "ctx.exiftool?.Subsystem != null", "field": "host.subsystem", "value": "{{exiftool.Subsystem}}", "ignore_failure": true }},
{ "set": { "if": "ctx.scan?.yara?.matches != null", "field": "rule.name", "value": "{{scan.yara.matches.0}}" }},
{ "set": { "if": "ctx.scan?.yara?.matches != null", "field": "dataset", "value": "alert", "override": true }},
{ "rename": { "field": "file.flavors.mime", "target_field": "file.mime_type", "ignore_missing": true }},
@@ -42,7 +62,8 @@
{ "set": { "if": "ctx.rule?.score != null && ctx.rule?.score >= 70 && ctx.rule?.score <=89", "field": "event.severity", "value": 3, "override": true } },
{ "set": { "if": "ctx.rule?.score != null && ctx.rule?.score >= 90", "field": "event.severity", "value": 4, "override": true } },
{ "set": { "field": "observer.name", "value": "{{agent.name}}" }},
{ "remove": { "field": ["host", "path", "message", "scan.exiftool.keys", "scan.yara.meta"], "ignore_missing": true } },
{ "convert" : { "field" : "scan.exiftool","type": "string", "ignore_missing":true }},
{ "remove": { "field": ["host", "path", "message", "exiftool", "scan.yara.meta"], "ignore_missing": true } },
{ "pipeline": { "name": "common" } }
]
}

View File

@@ -0,0 +1,10 @@
{
"description" : "suricata.ftp_data",
"processors" : [
{ "rename": { "field": "message2.proto", "target_field": "network.transport", "ignore_missing": true } },
{ "rename": { "field": "message2.app_proto", "target_field": "network.protocol", "ignore_missing": true } },
{ "rename": { "field": "message2.ftp_data.command", "target_field": "ftp.command", "ignore_missing": true } },
{ "rename": { "field": "message2.ftp_data.filename","target_field": "ftp.argument", "ignore_missing": true } },
{ "pipeline": { "name": "common" } }
]
}

View File

@@ -12,9 +12,25 @@
"ignore_failure": true
}
},
{ "grok": { "field": "message", "patterns": ["<%{INT:syslog.priority}>%{DATA:syslog.timestamp} %{WORD:source.application}: %{GREEDYDATA:real_message}"], "ignore_failure": false } },
{ "set": { "if": "ctx.source.application == 'filterlog'", "field": "dataset", "value": "firewall" } },
{ "pipeline": { "if": "ctx.dataset == 'firewall'", "name": "filterlog" } },
{
"grok":
{
"field": "message",
"patterns": [
"^<%{INT:syslog.priority}>%{DATA:syslog.timestamp} %{WORD:source.application}: %{GREEDYDATA:real_message}$",
"^%{SYSLOGTIMESTAMP:syslog.timestamp} %{SYSLOGHOST:syslog.host} %{SYSLOGPROG:syslog.program}: CEF:0\\|%{DATA:vendor}\\|%{DATA:product}\\|%{GREEDYDATA:message2}$"
],
"ignore_failure": true
}
},
{ "set": { "if": "ctx.source?.application == 'filterlog'", "field": "dataset", "value": "firewall", "ignore_failure": true } },
{ "set": { "if": "ctx.vendor != null", "field": "module", "value": "{{ vendor }}", "ignore_failure": true } },
{ "set": { "if": "ctx.product != null", "field": "dataset", "value": "{{ product }}", "ignore_failure": true } },
{ "set": { "field": "ingest.timestamp", "value": "{{ @timestamp }}" } },
{ "date": { "if": "ctx.syslog?.timestamp != null", "field": "syslog.timestamp", "target_field": "@timestamp", "formats": ["MMM d HH:mm:ss", "MMM dd HH:mm:ss", "ISO8601", "UNIX"], "ignore_failure": true } },
{ "remove": { "field": ["pid", "program"], "ignore_missing": true, "ignore_failure": true } },
{ "pipeline": { "if": "ctx.vendor != null && ctx.product != null", "name": "{{ vendor }}.{{ product }}", "ignore_failure": true } },
{ "pipeline": { "if": "ctx.dataset == 'firewall'", "name": "filterlog", "ignore_failure": true } },
{ "pipeline": { "name": "common" } }
]
}

View File

@@ -30,40 +30,40 @@
{ "rename": { "field": "winlog.event_data.DestinationHostname", "target_field": "destination.hostname", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.DestinationIp", "target_field": "destination.ip", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.DestinationPort", "target_field": "destination.port", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.image", "target_field": "process.executable", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.image", "target_field": "process.executable", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.Image", "target_field": "process.executable", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.processID", "target_field": "process.pid", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.ProcessID", "target_field": "process.pid", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.processGuid", "target_field": "process.entity_id", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.processID", "target_field": "process.pid", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.ProcessId", "target_field": "process.pid", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.processGuid", "target_field": "process.entity_id", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.ProcessGuid", "target_field": "process.entity_id", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.commandLine", "target_field": "process.command_line", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.commandLine", "target_field": "process.command_line", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.CommandLine", "target_field": "process.command_line", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.currentDirectory", "target_field": "process.working_directory", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.currentDirectory", "target_field": "process.working_directory", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.CurrentDirectory", "target_field": "process.working_directory", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.description", "target_field": "process.pe.description", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.description", "target_field": "process.pe.description", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.Description", "target_field": "process.pe.description", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.product", "target_field": "process.pe.product", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.product", "target_field": "process.pe.product", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.Product", "target_field": "process.pe.product", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.company", "target_field": "process.pe.company", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.company", "target_field": "process.pe.company", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.Company", "target_field": "process.pe.company", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.originalFileName", "target_field": "process.pe.original_file_name", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.originalFileName", "target_field": "process.pe.original_file_name", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.OriginalFileName", "target_field": "process.pe.original_file_name", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.fileVersion", "target_field": "process.pe.file_version", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.fileVersion", "target_field": "process.pe.file_version", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.FileVersion", "target_field": "process.pe.file_version", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.parentCommandLine", "target_field": "process.parent.command_line", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.parentCommandLine", "target_field": "process.parent.command_line", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.ParentCommandLine", "target_field": "process.parent.command_line", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.parentImage", "target_field": "process.parent.executable", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.parentImage", "target_field": "process.parent.executable", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.ParentImage", "target_field": "process.parent.executable", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.parentProcessGuid", "target_field": "process.parent.entity_id", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.parentProcessGuid", "target_field": "process.parent.entity_id", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.ParentProcessGuid", "target_field": "process.parent.entity_id", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.parentProcessId", "target_field": "process.ppid", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.parentProcessId", "target_field": "process.ppid", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.ParentProcessId", "target_field": "process.ppid", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.Protocol", "target_field": "network.transport", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.Protocol", "target_field": "network.transport", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.User", "target_field": "user.name", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.SourceHostname", "target_field": "source.hostname", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.SourceIp", "target_field": "source.ip", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.SourcePort", "target_field": "source.port", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.targetFilename", "target_field": "file.target", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.TargetFilename", "target_field": "file.target", "ignore_missing": true } }
{ "rename": { "field": "winlog.event_data.TargetFilename", "target_field": "file.target", "ignore_missing": true } }
]
}

View File

@@ -6,7 +6,7 @@
{ "set": { "if": "ctx.winlog?.computer_name != null", "field": "observer.name", "value": "{{winlog.computer_name}}", "override": true } },
{ "set": { "field": "event.code", "value": "{{winlog.event_id}}", "override": true } },
{ "set": { "field": "event.category", "value": "host", "override": true } },
{ "rename": { "field": "winlog.event_data.SubjectUserName", "target_field": "user.name", "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.SubjectUserName", "target_field": "user.name", "ignore_failure": true, "ignore_missing": true } },
{ "rename": { "field": "winlog.event_data.User", "target_field": "user.name", "ignore_missing": true } }
]
}
}

View File

@@ -18,6 +18,10 @@
{%- set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
{%- set MANAGER = salt['grains.get']('master') %}
. /usr/sbin/so-common
# Exit on errors, since all lines must succeed
set -e
# Check to see if we have extracted the ca cert.
if [ ! -f /opt/so/saltstack/local/salt/common/cacerts ]; then
docker run -v /etc/pki/ca.crt:/etc/pki/ca.crt --name so-elasticsearchca --user root --entrypoint jdk/bin/keytool {{ MANAGER }}:5000/{{ IMAGEREPO }}/so-elasticsearch:{{ VERSION }} -keystore /etc/pki/ca-trust/extracted/java/cacerts -alias SOSCA -import -file /etc/pki/ca.crt -storepass changeit -noprompt

View File

@@ -28,9 +28,9 @@ COUNT=0
ELASTICSEARCH_CONNECTED="no"
while [[ "$COUNT" -le 240 ]]; do
{% if grains['role'] in ['so-node','so-heavynode'] %}
curl ${ELASTICSEARCH_AUTH} -k --output /dev/null --silent --head --fail https://"$ELASTICSEARCH_HOST":"$ELASTICSEARCH_PORT"
curl ${ELASTICSEARCH_AUTH} -k --output /dev/null --silent --head --fail -L https://"$ELASTICSEARCH_HOST":"$ELASTICSEARCH_PORT"
{% else %}
curl ${ELASTICSEARCH_AUTH} --output /dev/null --silent --head --fail http://"$ELASTICSEARCH_HOST":"$ELASTICSEARCH_PORT"
curl ${ELASTICSEARCH_AUTH} --output /dev/null --silent --head --fail -L http://"$ELASTICSEARCH_HOST":"$ELASTICSEARCH_PORT"
{% endif %}
if [ $? -eq 0 ]; then
ELASTICSEARCH_CONNECTED="yes"
@@ -52,9 +52,9 @@ cd ${ELASTICSEARCH_INGEST_PIPELINES}
echo "Loading pipelines..."
{% if grains['role'] in ['so-node','so-heavynode'] %}
for i in *; do echo $i; RESPONSE=$(curl ${ELASTICSEARCH_AUTH} -k -XPUT https://${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}/_ingest/pipeline/$i -H 'Content-Type: application/json' -d@$i 2>/dev/null); echo $RESPONSE; if [[ "$RESPONSE" == *"error"* ]]; then RETURN_CODE=1; fi; done
for i in *; do echo $i; RESPONSE=$(curl ${ELASTICSEARCH_AUTH} -k -XPUT -L https://${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}/_ingest/pipeline/$i -H 'Content-Type: application/json' -d@$i 2>/dev/null); echo $RESPONSE; if [[ "$RESPONSE" == *"error"* ]]; then RETURN_CODE=1; fi; done
{% else %}
for i in *; do echo $i; RESPONSE=$(curl ${ELASTICSEARCH_AUTH} -XPUT http://${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}/_ingest/pipeline/$i -H 'Content-Type: application/json' -d@$i 2>/dev/null); echo $RESPONSE; if [[ "$RESPONSE" == *"error"* ]]; then RETURN_CODE=1; fi; done
for i in *; do echo $i; RESPONSE=$(curl ${ELASTICSEARCH_AUTH} -XPUT -L http://${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}/_ingest/pipeline/$i -H 'Content-Type: application/json' -d@$i 2>/dev/null); echo $RESPONSE; if [[ "$RESPONSE" == *"error"* ]]; then RETURN_CODE=1; fi; done
{% endif %}
echo

View File

@@ -21,23 +21,26 @@
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
{% set MANAGER = salt['grains.get']('master') %}
{% set FEATURES = salt['pillar.get']('elastic:features', False) %}
{%- set NODEIP = salt['pillar.get']('elasticsearch:mainip', '') -%}
{% set NODEIP = salt['pillar.get']('elasticsearch:mainip', '') -%}
{% set TRUECLUSTER = salt['pillar.get']('elasticsearch:true_cluster', False) %}
{% set MANAGERIP = salt['pillar.get']('global:managerip') %}
{%- if FEATURES is sameas true %}
{% if FEATURES is sameas true %}
{% set FEATUREZ = "-features" %}
{% else %}
{% set FEATUREZ = '' %}
{% endif %}
{% if grains['role'] in ['so-eval','so-managersearch', 'so-manager', 'so-standalone', 'so-import'] %}
{% set esclustername = salt['pillar.get']('manager:esclustername', '') %}
{% set esheap = salt['pillar.get']('manager:esheap', '') %}
{% set esclustername = salt['pillar.get']('manager:esclustername') %}
{% set esheap = salt['pillar.get']('manager:esheap') %}
{% set ismanager = True %}
{% elif grains['role'] in ['so-node','so-heavynode'] %}
{% set esclustername = salt['pillar.get']('elasticsearch:esclustername', '') %}
{% set esheap = salt['pillar.get']('elasticsearch:esheap', '') %}
{% set esclustername = salt['pillar.get']('elasticsearch:esclustername') %}
{% set esheap = salt['pillar.get']('elasticsearch:esheap') %}
{% set ismanager = False %}
{% elif grains['role'] == 'so-helix' %}
{% set ismanager = True %} {# Solely for the sake of running so-catrust #}
{% endif %}
{% set TEMPLATES = salt['pillar.get']('elasticsearch:templates', {}) %}
@@ -86,6 +89,8 @@ capemz:
- user: 939
- group: 939
{% if grains['role'] != 'so-helix' %}
# Add ES Group
elasticsearchgroup:
group.present:
@@ -188,16 +193,21 @@ so-elasticsearch:
- name: so-elasticsearch
- user: elasticsearch
- extra_hosts:
{% if ismanager %}
- {{ grains.host }}:{{ NODEIP }}
{%- if ismanager %}
{%- if salt['pillar.get']('nodestab', {}) %}
{%- for SN, SNDATA in salt['pillar.get']('nodestab', {}).items() %}
{% if salt['pillar.get']('nodestab', {}) %}
{% for SN, SNDATA in salt['pillar.get']('nodestab', {}).items() %}
- {{ SN.split('_')|first }}:{{ SNDATA.ip }}
{%- endfor %}
{%- endif %}
{%- endif %}
{% endfor %}
{% endif %}
{% else %}
- {{ grains.host }}:{{ NODEIP }}
- {{ MANAGER }}:{{ MANAGERIP }}
{% endif %}
- environment:
{% if TRUECLUSTER is sameas false or (TRUECLUSTER is sameas true and not salt['pillar.get']('nodestab', {})) %}
- discovery.type=single-node
{% endif %}
- ES_JAVA_OPTS=-Xms{{ esheap }} -Xmx{{ esheap }}
ulimits:
- memlock=-1:-1
@@ -215,13 +225,17 @@ so-elasticsearch:
- /etc/pki/ca.crt:/usr/share/elasticsearch/config/ca.crt:ro
- /etc/pki/elasticsearch.p12:/usr/share/elasticsearch/config/elasticsearch.p12:ro
- /opt/so/conf/elasticsearch/sotls.yml:/usr/share/elasticsearch/config/sotls.yml:ro
- watch:
- file: cacertz
- file: esyml
- file: esingestconf
- file: so-elasticsearch-pipelines-file
append_so-elasticsearch_so-status.conf:
file.append:
- name: /opt/so/conf/so-status/so-status.conf
- text: so-elasticsearch
so-elasticsearch-pipelines-file:
file.managed:
- name: /opt/so/conf/elasticsearch/so-elasticsearch-pipelines
@@ -247,10 +261,12 @@ so-elasticsearch-templates:
- template: jinja
{% endif %}
{% endif %} {# if grains['role'] != 'so-helix' #}
{% else %}
elasticsearch_state_not_allowed:
test.fail_without_changes:
- name: elasticsearch_state_not_allowed
{% endif %}
{% endif %} {# if 'elasticsearch' in top_states #}

View File

@@ -379,9 +379,14 @@
}
}
},
"scan":{
"scan":{
"type":"object",
"dynamic": true
"dynamic": true,
"properties":{
"exiftool":{
"type":"text"
}
}
},
"server":{
"type":"object",

View File

@@ -74,7 +74,6 @@ filebeat.modules:
# List of prospectors to fetch data.
filebeat.inputs:
#------------------------------ Log prospector --------------------------------
{%- if grains['role'] in ['so-sensor', "so-eval", "so-helix", "so-heavynode", "so-standalone", "so-import"] %}
- type: udp
enabled: true
host: "0.0.0.0:514"
@@ -100,6 +99,8 @@ filebeat.inputs:
- drop_fields:
fields: ["source", "prospector", "input", "offset", "beat"]
fields_under_root: true
{%- if grains['role'] in ['so-eval', 'so-standalone', 'so-sensor', 'so-helix', 'so-heavynode', 'so-import'] %}
{%- if ZEEKVER != 'SURICATA' %}
{%- for LOGNAME in salt['pillar.get']('zeeklogs:enabled', '') %}
- type: log
@@ -114,7 +115,7 @@ filebeat.inputs:
fields: ["source", "prospector", "input", "offset", "beat"]
fields_under_root: true
clean_removed: false
clean_removed: true
close_removed: false
- type: log

View File

@@ -58,8 +58,8 @@ filebeatconfsync:
file.managed:
- name: /opt/so/conf/filebeat/etc/filebeat.yml
- source: salt://filebeat/etc/filebeat.yml
- user: 0
- group: 0
- user: root
- group: root
- template: jinja
- defaults:
INPUTS: {{ salt['pillar.get']('filebeat:config:inputs', {}) }}
@@ -82,9 +82,15 @@ so-filebeat:
- /etc/ssl/certs/intca.crt:/usr/share/filebeat/intraca.crt:ro
- port_bindings:
- 0.0.0.0:514:514/udp
- 0.0.0.0:514:514/tcp
- watch:
- file: /opt/so/conf/filebeat/etc/filebeat.yml
append_so-filebeat_so-status.conf:
file.append:
- name: /opt/so/conf/so-status/so-status.conf
- text: so-filebeat
{% else %}
filebeat_state_not_allowed:

View File

@@ -1,6 +1,7 @@
{% set ISAIRGAP = salt['pillar.get']('global:airgap', 'False') %}
{% import_yaml 'firewall/portgroups.yaml' as portgroups %}
{% set portgroups = portgroups.firewall.aliases.ports %}
{% set TRUE_CLUSTER = salt['pillar.get']('elasticsearch:true_cluster', False) %}
role:
eval:
@@ -32,9 +33,9 @@ role:
- {{ portgroups.influxdb }}
- {{ portgroups.wazuh_api }}
- {{ portgroups.fleet_api }}
- {{ portgroups.sensoroni }}
sensor:
portgroups:
- {{ portgroups.sensoroni }}
- {{ portgroups.beats_5044 }}
- {{ portgroups.beats_5644 }}
search_node:
@@ -42,6 +43,11 @@ role:
- {{ portgroups.redis }}
- {{ portgroups.minio }}
- {{ portgroups.elasticsearch_node }}
heavy_node:
portgroups:
- {{ portgroups.redis }}
- {{ portgroups.minio }}
- {{ portgroups.elasticsearch_node }}
self:
portgroups:
- {{ portgroups.syslog}}
@@ -121,12 +127,12 @@ role:
- {{ portgroups.influxdb }}
- {{ portgroups.wazuh_api }}
- {{ portgroups.fleet_api }}
- {{ portgroups.sensoroni }}
{% if ISAIRGAP is sameas true %}
- {{ portgroups.yum }}
{% endif %}
sensor:
portgroups:
- {{ portgroups.sensoroni }}
- {{ portgroups.beats_5044 }}
- {{ portgroups.beats_5644 }}
search_node:
@@ -134,6 +140,13 @@ role:
- {{ portgroups.redis }}
- {{ portgroups.minio }}
- {{ portgroups.elasticsearch_node }}
- {{ portgroups.beats_5644 }}
heavy_node:
portgroups:
- {{ portgroups.redis }}
- {{ portgroups.minio }}
- {{ portgroups.elasticsearch_node }}
- {{ portgroups.beats_5644 }}
self:
portgroups:
- {{ portgroups.syslog}}
@@ -207,10 +220,10 @@ role:
- {{ portgroups.influxdb }}
- {{ portgroups.wazuh_api }}
- {{ portgroups.fleet_api }}
- {{ portgroups.sensoroni }}
- {{ portgroups.yum }}
sensor:
portgroups:
- {{ portgroups.sensoroni }}
- {{ portgroups.beats_5044 }}
- {{ portgroups.beats_5644 }}
search_node:
@@ -218,6 +231,11 @@ role:
- {{ portgroups.redis }}
- {{ portgroups.minio }}
- {{ portgroups.elasticsearch_node }}
heavy_node:
portgroups:
- {{ portgroups.redis }}
- {{ portgroups.minio }}
- {{ portgroups.elasticsearch_node }}
self:
portgroups:
- {{ portgroups.syslog}}
@@ -291,10 +309,10 @@ role:
- {{ portgroups.influxdb }}
- {{ portgroups.wazuh_api }}
- {{ portgroups.fleet_api }}
- {{ portgroups.sensoroni }}
- {{ portgroups.yum }}
sensor:
portgroups:
- {{ portgroups.sensoroni }}
- {{ portgroups.beats_5044 }}
- {{ portgroups.beats_5644 }}
search_node:
@@ -302,6 +320,11 @@ role:
- {{ portgroups.redis }}
- {{ portgroups.minio }}
- {{ portgroups.elasticsearch_node }}
heavy_node:
portgroups:
- {{ portgroups.redis }}
- {{ portgroups.minio }}
- {{ portgroups.elasticsearch_node }}
self:
portgroups:
- {{ portgroups.syslog}}
@@ -371,9 +394,9 @@ role:
- {{ portgroups.osquery_8080 }}
- {{ portgroups.influxdb }}
- {{ portgroups.wazuh_api }}
- {{ portgroups.sensoroni }}
sensor:
portgroups:
- {{ portgroups.sensoroni }}
- {{ portgroups.beats_5044 }}
- {{ portgroups.beats_5644 }}
search_node:
@@ -424,6 +447,14 @@ role:
elasticsearch_rest:
portgroups:
- {{ portgroups.elasticsearch_rest }}
{% if TRUE_CLUSTER %}
search_node:
portgroups:
- {{ portgroups.elasticsearch_node }}
{% endif %}
self:
portgroups:
- {{ portgroups.syslog}}
INPUT:
hostgroups:
anywhere:
@@ -437,6 +468,11 @@ role:
- {{ portgroups.all }}
sensor:
chain:
DOCKER-USER:
hostgroups:
self:
portgroups:
- {{ portgroups.syslog}}
INPUT:
hostgroups:
anywhere:
@@ -463,6 +499,9 @@ role:
elasticsearch_rest:
portgroups:
- {{ portgroups.elasticsearch_rest }}
self:
portgroups:
- {{ portgroups.syslog}}
INPUT:
hostgroups:
anywhere:
@@ -521,18 +560,15 @@ role:
minion:
portgroups:
- {{ portgroups.docker_registry }}
- {{ portgroups.sensoroni }}
sensor:
portgroups:
- {{ portgroups.beats_5044 }}
- {{ portgroups.beats_5644 }}
- {{ portgroups.sensoroni }}
search_node:
portgroups:
- {{ portgroups.redis }}
- {{ portgroups.elasticsearch_node }}
self:
portgroups:
- {{ portgroups.syslog}}
beats_endpoint:
portgroups:
- {{ portgroups.beats_5044 }}

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