Compare commits

...

692 Commits

Author SHA1 Message Date
Mike Reeves
6e92e7283d Merge pull request #4411 from Security-Onion-Solutions/hotfix-0528
2.3.52
2021-06-07 13:55:51 -04:00
Mike Reeves
e3c16147ce 2.3.52 2021-06-07 09:34:22 -04:00
Mike Reeves
75ff268ecc 2.3.52 2021-06-04 11:03:08 -04:00
Mike Reeves
9f98b8ad2f 2.3.52 2021-06-04 10:59:18 -04:00
Mike Reeves
31365b266a Update so-zeek-stats 2021-06-03 13:53:11 -04:00
Mike Reeves
2f34e7eeed Update HOTFIX 2021-06-03 11:04:10 -04:00
Mike Reeves
ff10432124 Update VERSION 2021-06-03 10:57:20 -04:00
William Wernert
91c8a7c65b Use correct syntax for tar to drop directory structure 2021-06-01 12:16:56 -04:00
Mike Reeves
eac5c604bd Update packetloss.sh 2021-05-28 12:57:35 -04:00
Mike Reeves
e7d8df499c Update HOTFIX 2021-05-28 12:55:57 -04:00
Mike Reeves
c5d0286e24 Merge pull request #4254 from Security-Onion-Solutions/2.3.51
2.3.51
2021-05-21 12:15:04 -04:00
Mike Reeves
7aed01658f Sig file for 2.3.51 2021-05-20 22:10:36 -04:00
Jason Ertel
b440f73336 Truncate wait_for_web_response.log before each wait invocation 2021-05-19 18:37:08 -04:00
Jason Ertel
25e2edc6d2 Reset HOTFIX with new release 2021-05-18 12:31:33 -04:00
Jason Ertel
c207504657 Merge branch '2.3.51' of ssh://github.com/security-onion-solutions/securityonion into 2.3.51 2021-05-18 09:52:07 -04:00
Jason Ertel
fe155222c2 Introduce mixed-case sensor into distributed test 2021-05-18 09:51:54 -04:00
Josh Patterson
9b4325662b Merge pull request #4218 from Security-Onion-Solutions/issue/4207
Issue/4207
2021-05-18 09:04:26 -04:00
m0duspwnens
0de1c9a669 removing unreference pillar file docker/config.sls 2021-05-18 07:57:00 -04:00
m0duspwnens
ef32bff302 fix up soc.json 2021-05-17 18:29:27 -04:00
m0duspwnens
e50002e0ca influx and grafana default for manager nodes - https://github.com/Security-Onion-Solutions/securityonion/issues/4207 2021-05-17 16:26:12 -04:00
Mike Reeves
d001597e52 Update README.md 2021-05-17 15:56:46 -04:00
Mike Reeves
4c7cee4ebc Update VERSION 2021-05-17 15:55:49 -04:00
Mike Reeves
6eed730209 Merge pull request #4213 from Security-Onion-Solutions/zeekhotfix
Zeekhotfix
2021-05-17 15:55:17 -04:00
m0duspwnens
fb986b5cff set both log levels to error 2021-05-06 14:55:14 -04:00
m0duspwnens
a49f2e2d98 change log_level_logfile to error for /opt/so/log/salt/minion 2021-05-06 13:38:16 -04:00
Mike Reeves
90b3462ead No recurse for you 2021-05-06 13:29:15 -04:00
Mike Reeves
1de768c182 Update HOTFIX 2021-05-06 12:02:05 -04:00
Mike Reeves
96c20ea3cf Merge pull request #4080 from Security-Onion-Solutions/hotfix2
GRIDFIX Hotfix
2021-05-06 10:34:17 -04:00
Mike Reeves
10c4a7fd98 Update soup 2021-05-04 09:18:59 -04:00
Mike Reeves
ffa9001df4 Update raid.sh 2021-05-04 07:57:07 -04:00
Mike Reeves
e113e75f4d Update soup 2021-05-03 18:52:40 -04:00
Mike Reeves
9066959945 Update soup 2021-05-03 18:46:24 -04:00
Jason Ertel
6768e8ddf6 copy_new_files usage consistent across soup and hotfixapply scripts 2021-05-03 15:42:24 -04:00
Mike Reeves
a489b369d7 Jertel Compliance 2021-05-03 15:23:34 -04:00
Mike Reeves
074fe46e90 Adding airgap hotfix 2021-05-03 15:02:51 -04:00
Mike Reeves
f56244d708 Adding airgap hotfix 2021-05-03 14:39:32 -04:00
Mike Reeves
cedcf05751 Adding airgap hotfix 2021-05-03 14:38:18 -04:00
Mike Reeves
f04ed94627 Adding airgap hotfix 2021-05-03 14:33:45 -04:00
Mike Reeves
296c1c5a3c Adding airgap hotfix 2021-05-03 14:30:53 -04:00
Mike Reeves
153394356b Merge pull request #4003 from Security-Onion-Solutions/dev
2.3.50
2021-04-28 10:11:53 -04:00
Mike Reeves
bd454c7f25 Merge pull request #4016 from Security-Onion-Solutions/2350
Repo Fix
2021-04-27 16:02:15 -04:00
Mike Reeves
b6792f73e0 Repo Fix 2021-04-27 15:51:30 -04:00
Mike Reeves
03774e6270 Repo Fix 2021-04-27 15:46:45 -04:00
Mike Reeves
b23902fc2c Merge pull request #4015 from Security-Onion-Solutions/importfix
Update import install
2021-04-27 13:38:31 -04:00
Mike Reeves
458c386377 Update import install 2021-04-27 13:37:37 -04:00
Mike Reeves
79984f4808 Merge pull request #4007 from Security-Onion-Solutions/2350
Repo Fix
2021-04-26 16:40:28 -04:00
Mike Reeves
167e656abb Repo Fix 2021-04-26 16:38:12 -04:00
Josh Patterson
f2b1b9a073 Merge pull request #4006 from Security-Onion-Solutions/2350
Prompt airgap to update
2021-04-26 15:38:23 -04:00
Mike Reeves
939414aef6 Prompt airgap to update 2021-04-26 15:36:56 -04:00
Josh Patterson
6a956702df Merge pull request #4005 from Security-Onion-Solutions/2350
Repo Fix
2021-04-26 14:52:00 -04:00
Mike Reeves
df22269fc9 Repo Fix 2021-04-26 14:49:44 -04:00
Mike Reeves
d36237ee87 Merge pull request #4002 from Security-Onion-Solutions/2350
2.3.50 sig files
2021-04-26 09:32:10 -04:00
Mike Reeves
0499b141ed 2.3.50 sig files 2021-04-26 09:20:03 -04:00
Mike Reeves
0654c6511a Merge pull request #4001 from Security-Onion-Solutions/TOoSmOotH-patch-4
Update README.md
2021-04-26 09:10:56 -04:00
Mike Reeves
bbe2f81cb6 Update README.md 2021-04-26 08:53:58 -04:00
Jason Ertel
33bdd96221 Merge pull request #3996 from Security-Onion-Solutions/updateag
Prompt airgap to update
2021-04-25 12:25:45 -04:00
Mike Reeves
6135d89721 Prompt airgap to update 2021-04-25 12:19:34 -04:00
Mike Reeves
abbe0ec819 Merge pull request #3995 from Security-Onion-Solutions/updateag
Fix updates for airgap
2021-04-25 11:26:20 -04:00
Mike Reeves
4d0b06dfc7 Fix updates for airgap 2021-04-25 11:01:21 -04:00
Mike Reeves
0505664b84 Merge pull request #3987 from Security-Onion-Solutions/TOoSmOotH-patch-4
Prime the CentOS Repos
2021-04-23 12:11:01 -04:00
Mike Reeves
f2628f2e5b Prime the CentOS Repos 2021-04-23 12:09:41 -04:00
Mike Reeves
fcaabaade0 Merge pull request #3986 from Security-Onion-Solutions/grafanaeps
remove eps graph from manager and update to consumptioneps for standalone and managersearch
2021-04-23 12:08:06 -04:00
m0duspwnens
fff12b423a remove eps graph from manager and update to consumptioneps for standalone and managersearch 2021-04-23 11:56:27 -04:00
Jason Ertel
b81ac6b7bd Merge pull request #3983 from Security-Onion-Solutions/kilo
Update MOTD with training link and simplify customization commands
2021-04-23 11:03:57 -04:00
Jason Ertel
f4606828c7 Update MOTD with training link and simply customization commands 2021-04-23 10:42:14 -04:00
Josh Patterson
4e2ffbf5e5 Merge pull request #3971 from Security-Onion-Solutions/issue/3501
let remote nodes upgrade on their own time
2021-04-22 16:35:26 -04:00
m0duspwnens
7c7624c87e let remote nodes upgrade on their own time 2021-04-22 16:32:58 -04:00
Josh Patterson
7da091375e Merge pull request #3968 from Security-Onion-Solutions/issue/3501
Issue/3501
2021-04-22 15:37:59 -04:00
m0duspwnens
4f545eefc2 update preflight 2021-04-22 15:27:57 -04:00
m0duspwnens
90683a7e04 fix UPDATE_DIR var 2021-04-22 15:22:55 -04:00
m0duspwnens
36bc4f4aa8 remove by package name not wildcard 2021-04-22 15:21:36 -04:00
Mike Reeves
694c3b87fe Merge pull request #3967 from Security-Onion-Solutions/TOoSmOotH-patch-4
Update soup
2021-04-22 14:18:46 -04:00
Mike Reeves
e7d3369cef Update soup 2021-04-22 14:17:38 -04:00
Josh Patterson
fb6fa789b7 Merge pull request #3965 from Security-Onion-Solutions/soversion2
Soversion2
2021-04-22 13:45:56 -04:00
Mike Reeves
b7c6110e57 sync soversion 2021-04-22 13:41:58 -04:00
Mike Reeves
93148e4adc sync soversion 2021-04-22 13:39:33 -04:00
Mike Reeves
016837df28 sync soversion 2021-04-22 13:36:52 -04:00
Mike Reeves
4b78b114f7 Merge pull request #3964 from Security-Onion-Solutions/fix/so-playbook-sync
Fix so-playbook-sync
2021-04-22 13:28:25 -04:00
Josh Brower
94352c212f Fix so-playbook-sync 2021-04-22 13:26:41 -04:00
Mike Reeves
3a65f7875e Merge pull request #3963 from Security-Onion-Solutions/fixsaltsoup
fix SALTNOTHELD for salt.minion
2021-04-22 13:25:05 -04:00
m0duspwnens
781ac0293c fix SALTNOTHELD for salt.minion 2021-04-22 13:22:08 -04:00
Mike Reeves
a93b75af05 Merge pull request #3962 from Security-Onion-Solutions/fixsaltsoup
Fixsaltsoup
2021-04-22 11:52:05 -04:00
m0duspwnens
a49d6a8d5c apply highstate to minions instead of just salt.minion for soup if salt needs upgraded 2021-04-22 11:47:53 -04:00
m0duspwnens
440c546bb4 remove docker-ce.repo 2021-04-22 11:41:14 -04:00
Mike Reeves
8c67ec5316 Merge pull request #3961 from Security-Onion-Solutions/fix/extra-paren
Remove extra paren
2021-04-22 11:27:16 -04:00
William Wernert
41a5818bb7 Remove extra paren 2021-04-22 11:26:15 -04:00
Mike Reeves
ee48bb9b2a Merge pull request #3959 from Security-Onion-Solutions/fix/zeekpillar
Fix Zeek Setting for close-delete
2021-04-22 10:55:46 -04:00
Mike Reeves
a41c40ccbb Fix Zeek Setting for close-delete 2021-04-22 10:53:59 -04:00
Mike Reeves
3d65135993 Merge pull request #3954 from Security-Onion-Solutions/feature/vim
Make sure VIM is installed with correct settings
2021-04-22 09:52:02 -04:00
Mike Reeves
9ba7beed95 Merge pull request #3957 from Security-Onion-Solutions/fix/yum-conf
Add support for legacy grids
2021-04-22 09:44:51 -04:00
William Wernert
7176a4214b Add support for legacy grids 2021-04-22 09:42:39 -04:00
Josh Brower
8f37b6b73b Make sure VIM is installed with correct settings 2021-04-22 09:35:42 -04:00
Josh Patterson
f0e9b09d8f Merge pull request #3951 from Security-Onion-Solutions/issue/3948
fix salt retries
2021-04-22 08:50:14 -04:00
Mike Reeves
0bfe2aa6b6 Merge pull request #3950 from Security-Onion-Solutions/fix/correct-pillar
Use correct pillar value in yum.conf template
2021-04-22 08:40:09 -04:00
William Wernert
1519936e44 Use correct pillar value in yum.conf template 2021-04-22 08:37:49 -04:00
m0duspwnens
1d8e065902 fix salt retries - https://github.com/Security-Onion-Solutions/securityonion/issues/3948 2021-04-22 08:35:50 -04:00
Josh Patterson
fb3b4dc44a Merge pull request #3949 from Security-Onion-Solutions/TOoSmOotH-patch-3
Roll back cluster changes
2021-04-22 08:29:13 -04:00
Mike Reeves
fae72aa243 Roll back cluster changes 2021-04-22 08:25:01 -04:00
Mike Reeves
81581711da Merge pull request #3940 from Security-Onion-Solutions/foxtrot
Foxtrot
2021-04-21 18:44:37 -04:00
Mike Reeves
0a2d44131b Merge pull request #3939 from Security-Onion-Solutions/soupmkr
send suricata compress to dev/null
2021-04-21 18:00:03 -04:00
William Wernert
c297031f6b Surround scalar in single quotes 2021-04-21 17:58:13 -04:00
William Wernert
071e5166b4 Set package manager source in patch pillar for yum.conf 2021-04-21 17:57:02 -04:00
Mike Reeves
c337be8f4f send suricata compress to dev/null 2021-04-21 17:27:52 -04:00
Josh Patterson
22a7729fcf Merge pull request #3938 from Security-Onion-Solutions/soupmkr
soup will now ask to update packages
2021-04-21 17:20:18 -04:00
Mike Reeves
fa972ea110 soup will now ask to update packages 2021-04-21 16:37:13 -04:00
William Wernert
261e7f7fd9 sed and grep need input files 2021-04-21 16:29:24 -04:00
Mike Reeves
b5b0c262c1 soup will now ask to update packages 2021-04-21 16:25:41 -04:00
William Wernert
c1ae7ff3b6 Set proxy, replace when setting up yum for manager proxy 2021-04-21 16:18:20 -04:00
Mike Reeves
5c4be5e1cd soup will now ask to update packages 2021-04-21 16:15:40 -04:00
William Wernert
f3d663f090 Don't set yum/apt proxy if updating through manager 2021-04-21 15:59:37 -04:00
Mike Reeves
73001713e3 soup will now ask to update packages 2021-04-21 15:51:28 -04:00
Mike Reeves
13ad07cd88 soup will now ask to update packages 2021-04-21 15:41:58 -04:00
Mike Reeves
7335611166 soup will now ask to update packages 2021-04-21 15:35:05 -04:00
William Wernert
d5717b7011 Merge branch 'dev' into foxtrot 2021-04-21 14:45:11 -04:00
Josh Patterson
df2420f6fe Merge pull request #3936 from Security-Onion-Solutions/TOoSmOotH-patch-2
Fix Security onion repo
2021-04-21 14:44:50 -04:00
Mike Reeves
06ccad334b Fix Security 2021-04-21 14:43:15 -04:00
Mike Reeves
dd1fff59d7 Merge pull request #3934 from bryant-treacle/Issue-#3926
Update threading.map.jinja
2021-04-21 12:22:16 -04:00
William Wernert
428be2b8ad Merge pull request #3935 from Security-Onion-Solutions/fix/manager-check
Fix salt-master check
2021-04-21 12:10:14 -04:00
William Wernert
075ba0d83b Fix salt-master check 2021-04-21 12:01:21 -04:00
bryant-treacle
f14df24ddc Update threading.map.jinja 2021-04-21 11:49:29 -04:00
William Wernert
b618207f51 Merge branch 'dev' into foxtrot 2021-04-21 10:23:10 -04:00
Josh Patterson
86e7c0f87d Merge pull request #3927 from Security-Onion-Solutions/telefix1
Add Security Onion Repo
2021-04-20 15:47:28 -04:00
Mike Reeves
cc4c092301 Add Security Onion Repo 2021-04-20 15:44:35 -04:00
William Wernert
3f007f1026 Disable fastestmirror during setup + soup 2021-04-20 15:18:06 -04:00
William Wernert
3d90423495 Fix summary message to preserve empty line 2021-04-20 14:44:58 -04:00
William Wernert
113e558a05 Set manager early for proxy config 2021-04-20 14:32:17 -04:00
William Wernert
ca9ac46cd2 Add keypress instruction at end of summary 2021-04-20 13:27:52 -04:00
William Wernert
95bb757b03 Fix salt-master check 2021-04-20 13:12:55 -04:00
William Wernert
369c0b43f5 Further jinja fixes 2021-04-20 12:55:23 -04:00
William Wernert
cd0a115ac7 Fix acng config and don't show changes when proxy string can exist in file 2021-04-20 12:55:00 -04:00
William Wernert
bbf16d0f11 Show airgap prompt within if statement + persist variable for node installs 2021-04-20 11:34:17 -04:00
Mike Reeves
3b203b9a31 Merge pull request #3922 from Security-Onion-Solutions/telefix1
Adjust sostatus timers
2021-04-20 08:14:34 -04:00
Mike Reeves
5072c24134 Adjust sostatus timers 2021-04-20 08:12:44 -04:00
William Wernert
b449955711 Proxy whiptail fixes
* Don't try to set up proxy/manager proxy during network only flow
* Fix logic to never show new menu on airgap, set MANAGERUPDATES to 1 on airgap minions
2021-04-19 16:26:53 -04:00
Mike Reeves
e9b86388da Merge pull request #3912 from Security-Onion-Solutions/telefix1
Change telegraf scripts to new method of process detection
2021-04-19 14:40:06 -04:00
Mike Reeves
be6933e8fb Change EPS for Telegraf 2021-04-19 14:20:00 -04:00
William Wernert
6156e754c4 Merge branch 'dev' into foxtrot 2021-04-19 14:15:23 -04:00
William Wernert
d2067a42bd Don't skip new menu on airgap minions 2021-04-19 14:12:53 -04:00
William Wernert
b37da027fd ECDSA to ED25519 2021-04-19 14:08:25 -04:00
William Wernert
d8457255cb n -> z 2021-04-19 14:06:10 -04:00
William Wernert
7948906f51 Fix minion airgap logic 2021-04-19 14:04:01 -04:00
William Wernert
ba9a45bd0f Split network init + ssh copy notices 2021-04-19 14:02:00 -04:00
William Wernert
07e0ce563d Symmetrical spaces + remove useless logic 2021-04-19 13:50:30 -04:00
William Wernert
002fa99055 Fix whiptail order 2021-04-19 13:47:50 -04:00
William Wernert
59247b4579 Add exit check to new menu 2021-04-19 13:45:01 -04:00
Josh Patterson
a70b631b2c Merge pull request #3911 from Security-Onion-Solutions/issue/3501
Issue/3501
2021-04-19 13:43:34 -04:00
Mike Reeves
0c0edbaac8 Change EPS for Telegraf 2021-04-19 13:29:46 -04:00
Mike Reeves
54322f5e9d Change EPS for Telegraf 2021-04-19 13:17:02 -04:00
Mike Reeves
f5b0411772 Change EPS for Telegraf 2021-04-19 13:11:19 -04:00
Mike Reeves
31f193c397 Change EPS for Telegraf 2021-04-19 12:36:46 -04:00
William Wernert
c907d416df Set proxy for apt cacher too 2021-04-19 11:27:17 -04:00
William Wernert
e8553162a5 [refactor] Change how whiptail asks for proxy settings 2021-04-19 10:51:39 -04:00
Mike Reeves
af7b6af32f Merge pull request #3901 from Security-Onion-Solutions/TOoSmOotH-patch-1
Fix beat script location
2021-04-19 09:44:59 -04:00
m0duspwnens
9e57fd2df0 cant pipe to grep without , python_shell=True 2021-04-19 09:00:30 -04:00
Mike Reeves
ef0669aabb Fix beat script location 2021-04-17 18:24:33 -04:00
William Wernert
58febe7955 [fix] so-docker-prune breaks when multiple "so-" images share a version 2021-04-16 16:04:07 -04:00
m0duspwnens
1b15f01874 fix salt.master state 2021-04-16 13:09:01 -04:00
m0duspwnens
24b263c812 only hold/unhold packages if not already unheld/held 2021-04-16 11:37:18 -04:00
m0duspwnens
9d676efada move salt_minion_service state outside jinja if 2021-04-15 12:45:34 -04:00
m0duspwnens
9d01387a04 remove references to the common salt package 2021-04-15 11:57:25 -04:00
m0duspwnens
22edbcc111 can use SPLITCHAR before defined 2021-04-15 11:29:01 -04:00
m0duspwnens
2f198ed9fb change how salt is held and unheld from updates 2021-04-15 09:42:00 -04:00
weslambert
427dd31fcb Merge pull request #3876 from Security-Onion-Solutions/delta
FIX:Remove ESUSER/ESPASS for now to prevent issues with attempting Elasti…
2021-04-15 08:11:15 -04:00
Wes Lambert
f61bf73f97 Remove ESUSER/ESPASS for now to prevent issues with attempting Elastic Auth when connecting to ES. 2021-04-15 11:59:34 +00:00
Josh Patterson
923d50d91e Merge pull request #3875 from Security-Onion-Solutions/issue/3543
add delay for salt-minion service starting
2021-04-14 16:34:21 -04:00
m0duspwnens
71d7ca8958 only manage service file if the right salt version is installed 2021-04-14 15:48:33 -04:00
m0duspwnens
d42cd52ae1 Merge remote-tracking branch 'remotes/origin/dev' into issue/3543 2021-04-14 15:23:51 -04:00
Mike Reeves
f177819e4f Merge pull request #3871 from Security-Onion-Solutions/beatstats
Beatstats
2021-04-14 15:03:13 -04:00
m0duspwnens
f60da54ff0 remove extra lines at end 2021-04-14 11:11:13 -04:00
m0duspwnens
d003d4941b fix bad typing 2021-04-14 11:10:19 -04:00
m0duspwnens
48c531bc2c fix file defaults def 2021-04-14 11:09:13 -04:00
m0duspwnens
47aa66876d fix import 2021-04-14 11:07:16 -04:00
m0duspwnens
9bfdae9cd5 fix import 2021-04-14 11:06:06 -04:00
m0duspwnens
a50b3e8475 add delay to salt-minion service starting - https://github.com/Security-Onion-Solutions/securityonion/issues/3543 2021-04-14 10:22:06 -04:00
Mike Reeves
6fc7ed1a25 Add telegraf scripts to track eps and failures for beats 2021-04-13 20:51:27 -04:00
Mike Reeves
904d34977f Add telegraf scripts to track eps and failures for beats 2021-04-13 20:48:53 -04:00
Mike Reeves
aa66b6226f Add hostname to the listener 2021-04-13 20:22:51 -04:00
Mike Reeves
db7dcd76cd Add hostname to the listener 2021-04-13 20:21:32 -04:00
Mike Reeves
7153f58a03 Add Firewall for Beats port 2021-04-13 20:17:26 -04:00
Mike Reeves
621e5c1cf8 Enable Filebeat Stats 2021-04-13 19:18:10 -04:00
Mike Reeves
26547f4e96 Merge pull request #3864 from Security-Onion-Solutions/agauto
Fix Airgap Automation
2021-04-13 15:36:08 -04:00
Mike Reeves
989c2b23b1 Fix Airgap Automation 2021-04-13 15:34:03 -04:00
Josh Patterson
e16875da0c Merge pull request #3855 from Security-Onion-Solutions/salt3003
Salt3003
2021-04-13 13:23:21 -04:00
Josh Brower
2b06223d7c Merge pull request #3856 from Security-Onion-Solutions/feature/osquery-ingest-timestamp
Differentiate between event & ingest timestamp
2021-04-13 13:00:52 -04:00
Josh Brower
7cbeed985a Differentiate between event & ingest timestamp 2021-04-13 12:55:40 -04:00
m0duspwnens
78ff84f968 Merge remote-tracking branch 'remotes/origin/dev' into salt3003.1 2021-04-13 12:05:58 -04:00
m0duspwnens
eb94c011e2 update location of yum keys and repo files for setup 2021-04-13 11:15:15 -04:00
m0duspwnens
325264dafd point to new repo location 2021-04-12 17:44:50 -04:00
William Wernert
2392c0e2d4 Merge pull request #3846 from Security-Onion-Solutions/foxtrot
Setup changes/fixes
2021-04-12 16:39:08 -04:00
m0duspwnens
eb7bf58f30 fix issues with repo.client state 2021-04-12 16:33:32 -04:00
William Wernert
9d09e7bec3 Fix sostatus log cron job 2021-04-12 16:25:17 -04:00
William Wernert
25637b74db Add back removed testing skip 2021-04-12 16:14:47 -04:00
William Wernert
cc344d921a Skip whiptail during testing, echo error message to setup log 2021-04-12 16:13:32 -04:00
Josh Brower
2fa01c9386 Merge pull request #3845 from Security-Onion-Solutions/fix/wazuh-wel-alerts
Fix Wazuh WEL Shipping
2021-04-12 15:22:57 -04:00
Josh Brower
cf4de255ec Fix Wazuh WEL Shipping 2021-04-12 15:18:18 -04:00
m0duspwnens
9240d376f3 combine client repo management into 1 state 2021-04-12 14:31:41 -04:00
William Wernert
8cb4a75eb1 Merge branch 'dev' into feature/setup-check-manager 2021-04-12 13:14:51 -04:00
William Wernert
73a1bdd885 Send stdout to log, and actually populate error message 2021-04-12 12:59:45 -04:00
William Wernert
5d98c896a3 /opt/so/log needs 755 permissions for soremote to read sostatus log 2021-04-12 12:53:17 -04:00
Mike Reeves
03abf4d4ee Merge pull request #3828 from Security-Onion-Solutions/kilo
Do not set influxdb hostUrl if import node since import nodes don't r…
2021-04-09 21:43:25 -04:00
Jason Ertel
8facbcf18c Do not set influxdb hostUrl if import node since import nodes don't run influxdb 2021-04-09 20:40:44 -04:00
Jason Ertel
280958e298 Merge pull request #3826 from Security-Onion-Solutions/kilo
Add raid/process status to Grid
2021-04-09 16:33:14 -04:00
Jason Ertel
5cb73ced36 Add Influx module to SOC config 2021-04-09 14:58:15 -04:00
Jason Ertel
21d922c640 Merge branch 'dev' into kilo 2021-04-09 10:24:27 -04:00
William Wernert
4db20a00ff Add quotes around description, since it can contain spaces 2021-04-09 10:16:19 -04:00
William Wernert
026ce76966 Change airgap prompt to menu 2021-04-09 10:11:00 -04:00
William Wernert
764307bfa0 Reformat airgap whiptail prompt 2021-04-09 10:09:28 -04:00
William Wernert
fc9df2bbae Update airgap question to ask during minion installs too 2021-04-09 10:00:50 -04:00
William Wernert
9b5276f1ab Remove bad || statement 2021-04-09 09:59:54 -04:00
William Wernert
b2fcd438c2 Initial support for checking state of manager during setup 2021-04-09 09:39:33 -04:00
m0duspwnens
ecda46c04b Merge remote-tracking branch 'remotes/origin/dev' into salt3003.1 2021-04-09 09:37:35 -04:00
Josh Patterson
69ad3ad491 Merge pull request #3817 from Security-Onion-Solutions/saltver
Do not upgrade salt on ISO installs
2021-04-09 08:50:08 -04:00
Mike Reeves
c9feda1168 Do not upgrade salt on ISO installs 2021-04-09 08:48:29 -04:00
Jason Ertel
d5bc7ec627 Merge branch 'dev' into kilo 2021-04-08 18:43:37 -04:00
m0duspwnens
6650ad5cdd make the -r for all 2021-04-08 14:04:30 -04:00
William Wernert
0ea57b4848 Merge pull request #3805 from Security-Onion-Solutions/foxtrot
Setup option summary + proxy test fix
2021-04-08 12:00:23 -04:00
Mike Reeves
ea9103ad53 Merge pull request #3806 from Security-Onion-Solutions/saltfix
Fix Telegraf sostatus
2021-04-08 11:51:24 -04:00
Mike Reeves
b53815d04a Fix Telegraf sostatus 2021-04-08 11:42:41 -04:00
Jason Ertel
5ef336fed2 Merge branch 'dev' into kilo 2021-04-08 11:23:07 -04:00
Jason Ertel
f7f95b6c54 Add model to sensoroni agent config 2021-04-08 11:22:54 -04:00
Mike Reeves
28666e0db2 Merge pull request #3804 from Security-Onion-Solutions/saltfix
Fix Repos by forcing removal
2021-04-08 11:08:35 -04:00
Mike Reeves
09b14e6a86 Fix Repo Logic 2021-04-08 10:38:50 -04:00
Mike Reeves
4c5f373ffa Fix Repo Logic 2021-04-08 10:37:44 -04:00
Mike Reeves
fdaf251ba0 Fix Repo Logic 2021-04-08 10:36:52 -04:00
Mike Reeves
951369c2d6 Fix Repo Logic 2021-04-08 10:25:36 -04:00
Mike Reeves
ce9f781d81 Fix Repo Logic 2021-04-08 10:24:04 -04:00
Mike Reeves
725320ebc8 Fix Repo Logic 2021-04-08 10:02:11 -04:00
m0duspwnens
dce476b604 change back to saltstack3003 repo 2021-04-08 09:54:41 -04:00
Mike Reeves
b609f250c3 Merge pull request #3798 from Security-Onion-Solutions/saltfix
Fix so repo for salt
2021-04-08 08:48:57 -04:00
Mike Reeves
d4a3bc4550 Fix so repo for salt 2021-04-08 08:43:20 -04:00
William Wernert
a5f5888913 Summary order change 2021-04-07 17:03:08 -04:00
Mike Reeves
9a7a7a3b12 Merge pull request #3795 from Security-Onion-Solutions/telemetric
Add raid bind
2021-04-07 16:33:14 -04:00
Mike Reeves
3caaf06820 Add sostatus for telegraf 2021-04-07 16:30:16 -04:00
Mike Reeves
8ab4dd10d4 Add sostatus for telegraf 2021-04-07 16:29:44 -04:00
Mike Reeves
9baa9767ca Add raid bind 2021-04-07 16:12:51 -04:00
William Wernert
3c69c0c24c Correct patch schedule name logic in summary 2021-04-07 14:15:02 -04:00
William Wernert
3a4cf8aa26 Add proxy url/user to summary 2021-04-07 13:54:01 -04:00
m0duspwnens
c4f0119276 fix check if repo file exists 2021-04-07 13:51:40 -04:00
William Wernert
ec076bba4a MTU is not always set by the user, so don't always show in summary 2021-04-07 13:42:18 -04:00
William Wernert
f83ac5a278 Print install summary to file and setup log after user confirms 2021-04-07 13:38:47 -04:00
m0duspwnens
425e5bc4c3 add some quotes 2021-04-07 13:31:43 -04:00
William Wernert
5e5df4d65a Merge branch 'feature/setup-end-screen' into foxtrot 2021-04-07 13:23:45 -04:00
William Wernert
377b14ccb1 ESCLUSTERNAME is empty for standalone, so check if it's set before listing 2021-04-07 13:20:55 -04:00
William Wernert
ceb1ea61dc Summary screen changes 2021-04-07 13:15:49 -04:00
m0duspwnens
249fa06fc7 echo when performing the repo actions for 2.3.50 2021-04-07 13:03:27 -04:00
m0duspwnens
5578206bf1 need to make the repo changes before we try to upgrade sa;t 2021-04-07 12:41:01 -04:00
Josh Patterson
ceb4d4ace4 Merge pull request #3790 from Security-Onion-Solutions/airgapfix
Fix Logic for Airgap distributed
2021-04-07 12:37:11 -04:00
Mike Reeves
c8c1553247 Fix Logic for Airgap distributed 2021-04-07 12:36:50 -04:00
Mike Reeves
ed0cd97de5 Fix Logic for Airgap distributed 2021-04-07 12:34:23 -04:00
m0duspwnens
b7aa9ddaa3 run preupgrade changes if 2.3.40 2021-04-07 11:37:55 -04:00
m0duspwnens
54e0394776 change from saltstack3003 to just saltstack for repo 2021-04-07 10:57:09 -04:00
m0duspwnens
080ecba8e6 change delrepos 2021-04-07 10:54:46 -04:00
William Wernert
5b3014496b Proxy fixes
* Adjust proxy test timeout
* Don't show proxy on error
* Add echo statement so user knows what setup is doing
2021-04-07 10:35:59 -04:00
Mike Reeves
95b440de43 Merge pull request #3783 from Security-Onion-Solutions/airgapfix
Fix Logic for Airgap distributed
2021-04-07 10:18:07 -04:00
William Wernert
88c565feae Fix proxy test logic 2021-04-07 10:14:16 -04:00
Mike Reeves
5cd7d65b3f Fix Logic for Airgap distributed 2021-04-07 10:03:33 -04:00
m0duspwnens
8f208728dd change delete repos 2021-04-07 09:10:16 -04:00
William Wernert
099ac2ff19 Minor formatting changes to whiptail end screen 2021-04-07 09:06:22 -04:00
Jason Ertel
fb02a10bfb Merge pull request #3781 from Security-Onion-Solutions/waagent
Detect if running in an Azure VM
2021-04-07 08:35:36 -04:00
Jason Ertel
ee079f1132 Merge from dev 2021-04-07 08:09:24 -04:00
m0duspwnens
9b19f93ad0 Merge remote-tracking branch 'remotes/origin/soup2350' into salt3003.1 2021-04-06 16:46:12 -04:00
Mike Reeves
6f7e6cee80 Force it 2021-04-06 16:43:42 -04:00
m0duspwnens
a95ead1ec8 Merge remote-tracking branch 'remotes/origin/soup2350' into salt3003.1 2021-04-06 16:31:16 -04:00
Mike Reeves
51bf988d31 Add .repo extension 2021-04-06 16:21:19 -04:00
m0duspwnens
73e00dbe30 change salt upgrade in soup 2021-04-06 16:07:08 -04:00
m0duspwnens
f522799b36 Merge remote-tracking branch 'remotes/origin/soup2350' into salt3003.1 2021-04-06 15:58:21 -04:00
Mike Reeves
b50700114c Add the do 2021-04-06 15:58:08 -04:00
m0duspwnens
9c7309797a Merge remote-tracking branch 'remotes/origin/soup2350' into salt3003.1 2021-04-06 15:48:36 -04:00
Mike Reeves
92768ecd08 Add upgrade function 2021-04-06 15:47:50 -04:00
Mike Reeves
af6403f874 soup salt and repos ohh my 2021-04-06 15:45:05 -04:00
William Wernert
6d6829ba34 Remove duplicate variable assignment 2021-04-06 13:21:07 -04:00
William Wernert
b70d9c0892 Add end summary and warning about SSH host key change 2021-04-06 13:20:56 -04:00
m0duspwnens
80509fbbc6 fix -R repo option 2021-04-06 12:23:11 -04:00
m0duspwnens
914a01e321 Merge remote-tracking branch 'remotes/origin/dev' into salt3003.1 2021-04-06 12:02:22 -04:00
m0duspwnens
6da84c7c87 strip trailing / 2021-04-06 12:00:36 -04:00
m0duspwnens
521dbbd90a change repo path 2021-04-06 11:45:59 -04:00
m0duspwnens
01f95c846c remove trailing / 2021-04-06 11:41:06 -04:00
m0duspwnens
049001d572 set repo url for salt upgrade for centos 2021-04-06 09:48:21 -04:00
m0duspwnens
1ea0be0097 remove references to 3003.1 change to 3003 2021-04-06 09:15:22 -04:00
William Wernert
b6dba26e2c Merge pull request #3767 from Security-Onion-Solutions/foxtrot
Move function call using nmcli to prevent error during setup
2021-04-06 09:11:23 -04:00
m0duspwnens
5525b9e97d point to new salt repo 2021-04-06 08:30:57 -04:00
Jason Ertel
919eec497d Merge branch 'dev' into waagent 2021-04-05 20:19:30 -04:00
Josh Patterson
8dc915e965 Merge pull request #3770 from Security-Onion-Solutions/newrepo
Fix Spelling issue
2021-04-05 18:53:19 -04:00
Mike Reeves
168d0bcaf4 Fix Spelling issue 2021-04-05 18:30:07 -04:00
Mike Reeves
08a857239c Merge pull request #3769 from Security-Onion-Solutions/newrepo
Add some manager logic
2021-04-05 17:50:05 -04:00
Mike Reeves
a38015bd98 Add some manager logic 2021-04-05 17:28:04 -04:00
m0duspwnens
3a1c478d9a compare the new var 2021-04-05 16:56:34 -04:00
Jason Ertel
5f6770925d speculative commit 2021-04-05 16:52:12 -04:00
m0duspwnens
89f72bb6ed check if . in new version, append .1 if not 2021-04-05 16:44:51 -04:00
Jason Ertel
4d9f928aed Merge branch 'dev' into kilo 2021-04-05 15:57:59 -04:00
m0duspwnens
83bf709290 use -r for salt boostrap in soup as well 2021-04-05 15:12:53 -04:00
Mike Reeves
d62ab60d48 Merge pull request #3768 from Security-Onion-Solutions/newrepo
Newrepo
2021-04-05 15:03:44 -04:00
Mike Reeves
fc88634159 Set the Repo for airgap during install 2021-04-05 15:01:21 -04:00
m0duspwnens
ae83fa61f3 Merge remote-tracking branch 'remotes/origin/dev' into salt3003.1 2021-04-05 14:36:21 -04:00
Josh Patterson
3adc2a8e63 Merge pull request #3766 from Security-Onion-Solutions/newrepo
Newrepo
2021-04-05 14:35:46 -04:00
Mike Reeves
97503bc35d Merge pull request #3761 from Security-Onion-Solutions/newraid
Newraid
2021-04-05 14:31:51 -04:00
m0duspwnens
9b8b5e6173 use -r by default to disable salt bootstrap from doing repo things 2021-04-05 14:12:24 -04:00
m0duspwnens
ba3c65d49f Merge remote-tracking branch 'remotes/origin/issue/3501' into salt3003.1 2021-04-05 12:52:48 -04:00
William Wernert
1dc45541eb Merge branch 'dev' into foxtrot 2021-04-05 12:41:08 -04:00
William Wernert
6f784565d4 Merge branch 'fix/nmcli-ami-error' into foxtrot 2021-04-05 12:41:02 -04:00
William Wernert
c864936c15 Merge pull request #3762 from Security-Onion-Solutions/foxtrot
Refactor so-ssh-harden
2021-04-05 12:39:51 -04:00
Mike Reeves
a824813cdb Add model to sensoroni config 2021-04-05 12:10:29 -04:00
Mike Reeves
bad22ab541 Add model to sensoroni config 2021-04-05 12:08:38 -04:00
Mike Reeves
f41ee1457b Merge pull request #3755 from Security-Onion-Solutions/issue/3753
FIX: Hunt query for HTTP EXE downloads should work for both Zeek and …
2021-04-05 11:42:45 -04:00
Mike Reeves
5aefa2a024 Fix Raid for Jertel compliance 2021-04-05 11:41:19 -04:00
Mike Reeves
f9dc040c7f Fix Raid 2021-04-05 11:38:39 -04:00
m0duspwnens
1c3a7094bd upgrade salt to 3003.1 2021-04-05 11:05:48 -04:00
Mike Reeves
d43cb3e133 Merge remote-tracking branch 'remotes/origin/dev' into newrepo 2021-04-05 10:48:01 -04:00
m0duspwnens
534dbf9761 change the upgrade command - https://github.com/Security-Onion-Solutions/securityonion/issues/3501 2021-04-05 09:07:00 -04:00
Doug Burks
8ca0626387 FIX: Hunt query for HTTP EXE downloads should work for both Zeek and Suricata #3753 2021-04-05 06:55:40 -04:00
Jason Ertel
e430be1017 Enable Flux compatibility mode to prepare for eventual migration to 2.0 2021-04-02 16:36:29 -04:00
William Wernert
d19c03efef Refactor search of config lines
* Create arrays for each line and loop through them for better code readability
* Add more host key algorithms for removal
* Update regex to look for a comma or EOL at the end of the search term, to avoid missing last item in list
2021-04-02 14:49:22 -04:00
William Wernert
8b8086b91a Update wording, as the new key tends to be ED25519, not ECDSA 2021-04-02 10:20:28 -04:00
William Wernert
fd57996bc6 Change behavior of adding lines to sshd config
* Replace existing lines in cases where a change has already been made
2021-04-02 10:00:27 -04:00
William Wernert
43c31b4e66 Fix script so changes are actually made 2021-04-01 14:56:05 -04:00
William Wernert
fa373e9db0 Merge branch 'fix/ssh-harden-setup' into foxtrot 2021-04-01 11:04:10 -04:00
William Wernert
58989398e0 Merge pull request #3721 from Security-Onion-Solutions/foxtrot
Allow user to enter a description during setup
2021-04-01 11:02:23 -04:00
Mike Reeves
c60d4aca16 Merge pull request #3724 from Masaya-A/Fix-https
Fix: Connection to ES is "https" from 2.3.40
2021-04-01 10:36:02 -04:00
Mike Reeves
234dec3f63 Merge pull request #3734 from Security-Onion-Solutions/zeekports
Reserve ports for Zeek
2021-04-01 10:35:16 -04:00
Mike Reeves
7d489ea34f Merge pull request #3735 from Security-Onion-Solutions/kilo
For hunt quick actions, pipe value to 'escape' operator to escape bac…
2021-04-01 10:35:01 -04:00
Mike Reeves
7c6b037ae5 Reserve ports for Zeek 2021-04-01 10:30:52 -04:00
Mike Reeves
40313fc2f5 Reserve ports for Zeek 2021-04-01 10:29:58 -04:00
Mike Reeves
0d05612393 Reserve ports for Zeek 2021-04-01 10:00:55 -04:00
Masaya-A
bc04cae918 Fix: Connection to ES is "https" from 2.3.40 2021-04-01 16:59:47 +09:00
Masaya-A
908c5f8ef6 Merge pull request #8 from Security-Onion-Solutions/dev
Dev Sync 20210401
2021-04-01 16:55:41 +09:00
Mike Reeves
88eab86528 Manage the repo files 2021-03-31 17:07:30 -04:00
Mike Reeves
9645988555 Manage the repo files 2021-03-31 17:06:26 -04:00
Mike Reeves
1509722185 Manage the repo files 2021-03-31 17:04:56 -04:00
Mike Reeves
bfc5bb011f Manage the repo files 2021-03-31 17:03:52 -04:00
Mike Reeves
13421bb04b Manage the repo files 2021-03-31 16:59:15 -04:00
Josh Patterson
6cebc41353 Merge pull request #3720 from Security-Onion-Solutions/issue/3709
https://github.com/Security-Onion-Solutions/securityonion/issues/3709
2021-03-31 16:54:15 -04:00
Mike Reeves
f387c4327a Manage the repo files 2021-03-31 16:53:20 -04:00
Mike Reeves
358f397535 Manage the repo files 2021-03-31 16:50:43 -04:00
Mike Reeves
9b84a92ced Manage the repo files 2021-03-31 16:47:04 -04:00
William Wernert
a8483cb30e Merge branch 'dev' into foxtrot 2021-03-31 16:02:26 -04:00
William Wernert
dfe5e73608 Merge branch 'feature/node-description' into foxtrot 2021-03-31 16:02:12 -04:00
William Wernert
3de980e4a1 Move function call to run after Network Manager is installed 2021-03-31 16:00:37 -04:00
Josh Brower
2b86241450 Merge pull request #3717 from Security-Onion-Solutions/fix/playbook-timestamps
Fix Playbook Alert timestamps
2021-03-31 15:47:11 -04:00
Josh Brower
ef98445560 Fix Playbook Alert timestamps 2021-03-31 15:44:41 -04:00
m0duspwnens
f7e99b4961 https://github.com/Security-Onion-Solutions/securityonion/issues/3709 2021-03-31 15:17:15 -04:00
Jason Ertel
820b01405f For hunt quick actions, pipe value to 'escape' operator to escape backslashes and double quotes 2021-03-31 14:57:36 -04:00
William Wernert
2a595f03b7 Merge pull request #3630 from Security-Onion-Solutions/foxtrot
Add option to configure chrony as an ntp service
2021-03-31 13:41:06 -04:00
William Wernert
761a12ebbb Fix variable name 2021-03-31 13:32:49 -04:00
William Wernert
1c4ba28336 [fix] host_pillar overwrites the file, so run ntp_pillar after it 2021-03-31 13:28:42 -04:00
Mike Reeves
f8d7241354 Fix repo file path 2021-03-31 12:55:46 -04:00
Mike Reeves
89922a439e Move repo files 2021-03-31 12:37:33 -04:00
Josh Brower
209d348108 Merge pull request #3688 from Security-Onion-Solutions/fix/playbook-sync
Fix sensor cleanup & playbook sync scripts
2021-03-31 11:59:27 -04:00
Jason Ertel
cdf3254485 Merge pull request #3708 from Security-Onion-Solutions/newrepo
Add Wazuh 4 repo
2021-03-31 09:29:50 -04:00
Mike Reeves
5e25d762c4 Merge remote-tracking branch 'remotes/origin/dev' into newrepo 2021-03-31 09:28:18 -04:00
Mike Reeves
46865809ed Fix Automation Testing round 2 2021-03-31 09:28:02 -04:00
Mike Reeves
bb39ccc1aa Fix Automation Testing 2021-03-31 09:25:21 -04:00
Mike Reeves
0d077b0d49 Merge pull request #3704 from gebhard73/patch-2
Update so-index-list
2021-03-31 09:18:29 -04:00
William Wernert
04920dcbed Merge branch 'dev' into foxtrot 2021-03-31 09:15:17 -04:00
William Wernert
c03e2b2c11 Move ntp server array to its own pillar in the minion sls file 2021-03-31 09:14:40 -04:00
Mike Reeves
5203c25971 Add Wazuh 4 Repo 2021-03-31 09:13:38 -04:00
Mike Reeves
b485531bd8 Merge remote-tracking branch 'remotes/origin/dev' into newrepo 2021-03-31 09:12:56 -04:00
weslambert
5eb0137c21 Merge pull request #3705 from Security-Onion-Solutions/delta
Enforce date type for ingest.timestamp
2021-03-31 08:40:41 -04:00
Wes Lambert
942de130ca Enforce date type for ingest.timestamp 2021-03-31 12:24:51 +00:00
gebhard73
0b9cf57b5f Update so-index-list
Sort by index name.
2021-03-31 14:22:06 +02:00
Mike Reeves
e92f5c122c Merge pull request #3689 from Security-Onion-Solutions/kilo
Remove incompatible example
2021-03-30 16:08:16 -04:00
William Wernert
177989269f Better formatting of chrony.conf 2021-03-30 15:50:37 -04:00
William Wernert
fd51b327ee Add messaging to explain chronyc output to log 2021-03-30 15:23:57 -04:00
William Wernert
be6eb3ed6c Restart chrony in case it's already running 2021-03-30 14:17:05 -04:00
Josh Brower
679925ebd9 Fix sensor cleanup & playbook sync scripts 2021-03-30 13:29:56 -04:00
weslambert
ff317cdcf1 Merge pull request #3684 from Security-Onion-Solutions/delta
Add Elastic scripts
2021-03-30 12:06:00 -04:00
Wes Lambert
7049383ba6 Add Elastic scripts 2021-03-30 15:47:05 +00:00
Mike Reeves
2534ca7eb7 Merge pull request #3633 from Security-Onion-Solutions/newrepo
Attempt to use so repo for network install
2021-03-30 11:37:46 -04:00
Mike Reeves
b2138045c0 Merge remote-tracking branch 'remotes/origin/dev' into newrepo 2021-03-30 11:29:22 -04:00
Mike Reeves
fc3fd00216 Fix formatting 2021-03-30 11:28:47 -04:00
Mike Reeves
09064baf71 Update so-common 2021-03-30 11:21:19 -04:00
Mike Reeves
5f5a53b8bb Push repolist to dev null 2021-03-30 11:14:58 -04:00
William Wernert
25eca39428 Always ask for ntp setup on iso installs, don't ask on network installs 2021-03-30 09:54:21 -04:00
William Wernert
0e9ffe033d Show message about setting up network earlier during setup 2021-03-30 09:30:06 -04:00
Jason Ertel
e98f3e54c0 Merge branch 'dev' into kilo 2021-03-29 17:37:18 -04:00
Mike Reeves
3fce63e0c5 Fix Repo Again 2021-03-29 16:43:44 -04:00
Mike Reeves
f73bf947bc Fix repo url 2021-03-29 15:42:26 -04:00
Mike Reeves
1a58479f39 Fix acng passthrough 2021-03-29 15:15:34 -04:00
William Wernert
d81d4e7474 Merge branch 'dev' into foxtrot 2021-03-29 09:36:38 -04:00
William Wernert
2ff790699f [fix] Set ntp_string to empty, not ntp_servers 2021-03-29 09:36:24 -04:00
Jason Ertel
6bce8e8e2c Remove incompatible example 2021-03-29 07:30:26 -04:00
Mike Reeves
d889bd2694 Fix Security Onio Pub Key 2021-03-28 22:32:03 -04:00
Mike Reeves
5882642c32 fixpath for GPG Keys for real 2021-03-28 22:10:02 -04:00
Mike Reeves
362bf55526 fixpath for GPG keys 2021-03-28 22:01:58 -04:00
Jason Ertel
0945747a70 Merge pull request #3649 from Security-Onion-Solutions/kilo
Support custom login banner
2021-03-26 22:33:36 -04:00
Mike Reeves
bab062e52b Fix acng to actually cache 2021-03-26 16:21:03 -04:00
Mike Reeves
955d41abde Fix acng to actually cache 2021-03-26 16:18:49 -04:00
Mike Reeves
26f8ae87c5 Fix acng to actually cache 2021-03-26 16:10:00 -04:00
Mike Reeves
8819cc1371 Fix acng to actually cache 2021-03-26 16:01:22 -04:00
Jason Ertel
9d6c2a5f15 Merge branch 'dev' into kilo 2021-03-26 15:58:05 -04:00
Jason Ertel
0195d366cc Add custom banner to login page 2021-03-26 14:44:31 -04:00
William Wernert
eb674b3b93 Validate list of ntp servers (ip4, hostname, or fqdn) 2021-03-25 14:45:33 -04:00
William Wernert
150e724a4a Fix chrony install logic + add sleep for chrony to finish sync 2021-03-25 13:37:54 -04:00
Mike Reeves
af3951e1ad Attempt to use so repo for network install 2021-03-25 11:51:55 -04:00
Masaya-A
16f88c38de Merge pull request #7 from Security-Onion-Solutions/dev
Dev Sync
2021-03-25 09:09:38 +09:00
Jason Ertel
909a1badcb Merge pull request #3622 from Security-Onion-Solutions/kilo
Correct local online docs link to release notes
2021-03-24 15:01:35 -04:00
Jason Ertel
7fc2467951 Correct local online docs link to release notes 2021-03-24 15:00:02 -04:00
William Wernert
c6a257bc50 Merge branch 'dev' into feature/ntp-service 2021-03-24 11:50:47 -04:00
Mike Reeves
f0c19cf2af Merge pull request #3616 from Security-Onion-Solutions/kilo 2021-03-24 11:48:31 -04:00
Jason Ertel
08f46a779a Remove freqserver, minio, and domainstats from image list 2021-03-24 11:32:29 -04:00
William Wernert
982f2de33c [fix] Refactor so-ssh-harden
* Create a temp file to make changes, and only copy back over if any changes are made
* Test changes as they're made, and exit if the test fails
* Only add lines if they don't already exist in the config
2021-03-24 09:48:00 -04:00
Jason Ertel
79ad87f83c Remove freqserver, minio, and domainstats from image list 2021-03-23 21:16:17 -04:00
Jason Ertel
887920e7c5 Implement customizable overview page 2021-03-23 16:44:08 -04:00
Jason Ertel
2d8c73d317 Merge branch 'dev' into kilo 2021-03-23 16:31:44 -04:00
Jason Ertel
5ade0b9f40 Implement customizable overview page 2021-03-23 16:31:41 -04:00
William Wernert
23cd006724 so-ssh-harden fixes
* Change when script is run during setup
* Add newlines to sshd config for legibility
2021-03-23 14:06:10 -04:00
William Wernert
3287a777a2 [fix] Pre-fill hostname re-enter on default 2021-03-23 11:41:12 -04:00
William Wernert
9f0afd90f1 [fix] Add missing backslash 2021-03-23 11:27:37 -04:00
William Wernert
2d873b92fa Fix ntp logic elsewhere 2021-03-23 10:22:41 -04:00
William Wernert
0e9c81c145 Fix logic around ntp prompt 2021-03-23 09:44:44 -04:00
William Wernert
884343b299 Merge branch 'dev' into feature/ntp-service 2021-03-23 09:36:41 -04:00
William Wernert
184c763b02 [fix] Export correct variable to check later in setup 2021-03-23 09:36:08 -04:00
William Wernert
ace30c07ea [fix] Also sync time before updating system clock 2021-03-23 09:22:09 -04:00
William Wernert
b3f558a1f8 [fix] Also check if proxy is set before asking for ntp servers 2021-03-23 09:14:34 -04:00
Masaya-A
151376a18f Merge pull request #5 from Security-Onion-Solutions/dev
Dev Sync
2021-03-23 14:27:29 +09:00
Jason Ertel
197693df4e Merge pull request #3580 from Security-Onion-Solutions/kilo
Upgrade to version 2.3.50
2021-03-22 21:10:05 -04:00
William Wernert
449e0d853c Initial support for ntp service via chronyd 2021-03-22 15:52:51 -04:00
Jason Ertel
8448588809 Upgrade to version 2.3.50 2021-03-22 15:04:02 -04:00
Mike Reeves
cdb16e3e5a Merge pull request #3579 from Security-Onion-Solutions/kilo
Revert upgrade to version 2.3.50
2021-03-22 14:55:21 -04:00
Jason Ertel
86cb59d5ae Revert upgrade to version 2.3.50 2021-03-22 14:53:36 -04:00
Mike Reeves
b4172565e8 Merge pull request #3578 from Security-Onion-Solutions/kilo
Upgrade to version 2.3.50
2021-03-22 14:50:27 -04:00
Jason Ertel
b83ae4bded Upgrade to version 2.3.50 2021-03-22 14:49:14 -04:00
Mike Reeves
afed0b70eb Merge pull request #3572 from Security-Onion-Solutions/dev
2.3.40
2021-03-22 14:43:34 -04:00
William Wernert
50fa0dc81a Allow user to enter a description during setup
Resolves #2404
2021-03-22 11:32:37 -04:00
Jason Ertel
e9bd3888c4 Merge pull request #3571 from Security-Onion-Solutions/2340sigrtd
Verify ISO and update gpg
2021-03-22 10:03:42 -04:00
Mike Reeves
ea5624b4bf Update date 2021-03-22 10:02:04 -04:00
Mike Reeves
11cb843fb4 Verify ISO and update gpg 2021-03-22 09:59:48 -04:00
Mike Reeves
57664a3c8a Merge pull request #3570 from Security-Onion-Solutions/Update-Readme
Update README.md
2021-03-22 09:14:34 -04:00
Mike Reeves
71d4d7ee8f Update README.md 2021-03-22 09:03:47 -04:00
Mike Reeves
25c9e70658 Merge pull request #3564 from Security-Onion-Solutions/fix/dash
Fix Dashboard Placeholder
2021-03-20 16:10:07 -04:00
Mike Reeves
e06e023d8e Fix Dashboard Placeholder 2021-03-20 14:05:55 -04:00
Mike Reeves
4fe14dbfd8 Merge pull request #3558 from Security-Onion-Solutions/fix/https-playbook-alerter
Fix https Playbook Alerter
2021-03-19 16:39:35 -04:00
Josh Brower
2425355680 Fix https Playbook Alerter 2021-03-19 16:38:33 -04:00
Josh Patterson
30b948f6b8 Merge pull request #3557 from Security-Onion-Solutions/suri-eve-file-mode
prevent salt warning about file mode
2021-03-19 16:24:26 -04:00
m0duspwnens
e87fb013dc prevent salt warning - The 'file_mode' argument will be ignored. Please use 'mode' instead to set file permissions. 2021-03-19 16:21:18 -04:00
Mike Reeves
908a9c2c06 Merge pull request #3550 from Security-Onion-Solutions/issue/3493
fix docker-ce holds
2021-03-19 15:18:45 -04:00
m0duspwnens
d0f938a600 fix docker-ce holds 2021-03-19 15:16:58 -04:00
Mike Reeves
ee2a6f8be9 Merge pull request #3549 from Security-Onion-Solutions/saved_objects
Update saved objects and remove index patterns because this is now handled by Field Caps API
2021-03-19 14:32:55 -04:00
Wes Lambert
b481cf885b Update saved objects and remove index patterns because this is now handled by Field Caps API 2021-03-19 18:30:42 +00:00
Mike Reeves
890c0da81a Merge pull request #3546 from Security-Onion-Solutions/kilo
Update release notes for 2.3.40
2021-03-19 11:25:15 -04:00
Jason Ertel
e69f6270f9 Merge branch 'dev' into kilo 2021-03-19 11:15:47 -04:00
Jason Ertel
83a3488a06 Update changes.json to reflect 2.3.40 changes 2021-03-19 11:15:27 -04:00
Mike Reeves
de61886441 Merge pull request #3544 from Security-Onion-Solutions/feature/setup-kibana-space
Configure default Space in Kibana during setup
2021-03-19 09:02:18 -04:00
Josh Brower
9d533e5db0 Merge pull request #3542 from Security-Onion-Solutions/fix/fleet-custom-hostname
Fix Fleet Custom Hostname Reactor
2021-03-19 08:21:30 -04:00
Josh Brower
d020f1d1a1 Fix Fleet Custom Hostname Reactor 2021-03-19 08:15:47 -04:00
William Wernert
b595c6ddf7 Configure default Space in Kibana during setup 2021-03-18 16:00:13 -04:00
Mike Reeves
28999af493 Merge pull request #3539 from Security-Onion-Solutions/fix/postsoup
Fix/postsoup
2021-03-18 15:46:36 -04:00
Josh Brower
77b8aecfd9 add so-kibana-space-defaults 2021-03-18 15:40:12 -04:00
Mike Reeves
2e84af621e Add postloop for 2.3.40 2021-03-18 15:14:10 -04:00
William Wernert
6b2947ca6a Merge pull request #3535 from Security-Onion-Solutions/fix/cloud-var
Set is_cloud variable in the main shell process
2021-03-18 14:00:58 -04:00
Mike Reeves
2bd3a6418d Merge pull request #3536 from Security-Onion-Solutions/kilo
Refresh fieldcaps every 5 minutes
2021-03-18 13:57:24 -04:00
Jason Ertel
cc30abfe1b Refresh fieldcaps every 5 minutes 2021-03-18 13:48:57 -04:00
William Wernert
0edf419bcb Remove redundant message 2021-03-18 13:16:45 -04:00
William Wernert
360f0d4dfd Also print stdout message to log 2021-03-18 13:12:16 -04:00
William Wernert
27ff823bc0 [fix] Don't set is_cloud in a subshell 2021-03-18 13:09:46 -04:00
Mike Reeves
1f85506fb1 Merge pull request #3532 from Security-Onion-Solutions/fix/packaging
Also add python packaging lib package to common state
2021-03-18 11:30:56 -04:00
William Wernert
cb0fb93f77 Also add python packaging lib package to common state 2021-03-18 11:28:25 -04:00
William Wernert
fcf0417fbf Merge pull request #3528 from Security-Onion-Solutions/fix/default-no-proxy
Change proxy prompt to default to no
2021-03-18 09:57:03 -04:00
William Wernert
c910a2d2a0 Change proxy prompt to default to no 2021-03-18 09:52:11 -04:00
William Wernert
066a8598a6 Merge pull request #3523 from Security-Onion-Solutions/issue/3493
fix docker versions in setup
2021-03-18 09:31:35 -04:00
William Wernert
b5770964c4 Merge pull request #3522 from Security-Onion-Solutions/fix/install-network-manager
[fix] CentOS ami does not include NetworkManager, so install it
2021-03-18 09:10:41 -04:00
William Wernert
31725ac627 [fix] Indent 2021-03-18 09:09:29 -04:00
m0duspwnens
dbe54708ef fix docker versions in setup https://github.com/Security-Onion-Solutions/securityonion/issues/3493 2021-03-18 09:09:28 -04:00
William Wernert
163cb8f3ca [fix] Typo 2021-03-18 09:08:31 -04:00
William Wernert
4f104c860e [fix] CentOS ami does not include NetworkManager, so install it 2021-03-18 09:00:02 -04:00
Mike Reeves
db605adaf6 Merge pull request #3517 from Security-Onion-Solutions/fix/restarting-docker-message 2021-03-17 21:15:37 -04:00
Mike Reeves
308f10fbdd Merge pull request #3510 from Security-Onion-Solutions/kilo 2021-03-17 21:14:45 -04:00
William Wernert
6e3d951b01 [fix] Show message in terminal when restarting Docker to avoid confusion 2021-03-17 20:17:23 -04:00
Mike Reeves
9a2b5fa301 Merge pull request #3516 from Security-Onion-Solutions/add_suricata_eve_clean
https://github.com/Security-Onion-Solutions/securityonion/issues/3515
2021-03-17 18:50:23 -04:00
m0duspwnens
ec179f8e9b https://github.com/Security-Onion-Solutions/securityonion/issues/3515 2021-03-17 18:44:25 -04:00
Jason Ertel
bc002cb9fb Merge branch 'dev' into kilo 2021-03-17 18:29:52 -04:00
Jason Ertel
4e9f629231 Reformat inactiveTools list in JSON format 2021-03-17 18:25:05 -04:00
Mike Reeves
75f9138a40 Merge pull request #3514 from Security-Onion-Solutions/fix/accept-hostname-proxy
[fix] Also accept a hostname in the proxy URL
2021-03-17 17:51:59 -04:00
William Wernert
96ac742b69 [fix] Also accept a hostname in the proxy URL 2021-03-17 17:31:47 -04:00
Jason Ertel
42809083e8 Merge branch 'dev' into kilo 2021-03-17 17:14:29 -04:00
Mike Reeves
a3b7388aba Merge pull request #3511 from Security-Onion-Solutions/fix/elastic-license-agree
Make the Elastic license prompt case insensitive
2021-03-17 16:57:32 -04:00
William Wernert
7da027abc1 Make the Elastic license prompt case insensitive 2021-03-17 16:55:34 -04:00
Jason Ertel
4de809ecbd Automatically hide SOC tools that are not installed. Resolves #1643. 2021-03-17 16:13:50 -04:00
Josh Brower
8fd3f102f1 Merge pull request #3509 from Security-Onion-Solutions/fix/kibana-space-defaults
Add space defaults script
2021-03-17 15:55:11 -04:00
Josh Brower
7583593152 Add space defaults scripot 2021-03-17 15:47:36 -04:00
Jason Ertel
dc0d989942 Merge pull request #3504 from Security-Onion-Solutions/issue/3493
UPGRADE: docker-ce, docker-ce-cli, containerd to latest
2021-03-17 13:51:31 -04:00
William Wernert
46d346aa62 Merge pull request #3503 from Security-Onion-Solutions/foxtrot
Foxtrot
2021-03-17 12:07:40 -04:00
William Wernert
16d6e116fa Merge branch 'dev' into foxtrot
# Conflicts:
#	salt/idstools/init.sls
2021-03-17 11:52:54 -04:00
Mike Reeves
52b836d456 Merge pull request #3498 from Security-Onion-Solutions/fix/so-rule-apply
Fix so-rule apply - manually tested
2021-03-17 11:28:16 -04:00
William Wernert
8aac9d6bea Reorder states in sync_files.sls 2021-03-17 10:46:17 -04:00
William Wernert
99a37a56a9 [fix] Change the commands so-rule uses to apply changes 2021-03-17 10:36:43 -04:00
m0duspwnens
f63cc10602 https://github.com/Security-Onion-Solutions/securityonion/issues/3493 2021-03-17 10:26:52 -04:00
William Wernert
c0163108ab Merge branch 'dev' into foxtrot
# Conflicts:
#	salt/common/tools/sbin/soup
2021-03-17 10:23:51 -04:00
m0duspwnens
aa14dda155 https://github.com/Security-Onion-Solutions/securityonion/issues/3493 2021-03-17 10:20:20 -04:00
Mike Reeves
fbdb627ab7 Merge pull request #3488 from Security-Onion-Solutions/issue/3288
insert instead of append
2021-03-17 09:17:20 -04:00
m0duspwnens
68ce7a902d insert instead of append 2021-03-17 09:14:19 -04:00
Doug Burks
2ba130b44c Merge pull request #3487 from Security-Onion-Solutions/issue/3486
FEATURE: soup should provide some initial information and then prompt…
2021-03-17 09:02:29 -04:00
Doug Burks
d32c1de411 FEATURE: soup should provide some initial information and then prompt the user to continue #3486 2021-03-17 09:00:46 -04:00
Josh Brower
d21abd9693 Merge pull request #3482 from Security-Onion-Solutions/feature/revert-livequery-hunt
Temp revert Fleet Live Query to Hunt
2021-03-17 08:29:28 -04:00
Josh Brower
bba9913be1 Temp revert Fleet Live Query to Hunt 2021-03-17 08:25:25 -04:00
Jason Ertel
1b6f681ae1 Merge pull request #3477 from Security-Onion-Solutions/esheap
Esheap
2021-03-17 08:14:13 -04:00
Mike Reeves
137e1a699d Fix the math 2021-03-16 19:01:10 -04:00
Mike Reeves
2f3488b134 Merge pull request #3476 from Security-Onion-Solutions/issue/3288
Issue/3288
2021-03-16 18:56:07 -04:00
Mike Reeves
7719a26a96 Change ES Heap calculation 2021-03-16 18:53:41 -04:00
m0duspwnens
53c3b19a08 Merge remote-tracking branch 'remotes/origin/dev' into issue/3288 2021-03-16 16:46:32 -04:00
Doug Burks
065f1c2927 Merge pull request #3473 from Security-Onion-Solutions/fix/shorten-elastic-license-url
Shorten Elastic License URL to avoid line wrap
2021-03-16 16:43:38 -04:00
Doug Burks
388524ec4e Shorten Elastic License URL to avoid line wrap 2021-03-16 16:39:14 -04:00
m0duspwnens
38a497932c https://github.com/Security-Onion-Solutions/securityonion/issues/3288 2021-03-16 16:36:35 -04:00
weslambert
8d29f757b1 Merge pull request #3471 from Security-Onion-Solutions/kilo
Reverse Zeek index close/delete count for Curator
2021-03-16 14:34:46 -04:00
Josh Brower
b56434aea1 Merge pull request #3470 from Security-Onion-Solutions/feature/disable-features-ui
Feature/disable certain features in Kibana UI
2021-03-16 14:00:21 -04:00
Josh Brower
abd4f92088 Cleanup curl output 2021-03-16 13:53:28 -04:00
Josh Brower
c855e0a55a Disable certain Features within the default space 2021-03-16 13:48:13 -04:00
Wes Lambert
7a02150389 Reverse Zeek index close/delete count for Curator 2021-03-16 17:16:55 +00:00
weslambert
5fd483a99d Merge pull request #3466 from Security-Onion-Solutions/soup2340
Soup for 2.3.40
2021-03-16 13:03:33 -04:00
Mike Reeves
d92c1c11aa Merge pull request #3463 from Security-Onion-Solutions/kilo
Ignore TIME_WAIT when checking for Strelka frontend port reservation
2021-03-16 12:59:16 -04:00
Mike Reeves
71c6bb71c1 Merge remote-tracking branch 'remotes/origin/dev' into soup2340 2021-03-16 12:56:24 -04:00
Mike Reeves
e528d84ebe Update Elastic License Text 2021-03-16 12:56:06 -04:00
William Wernert
129db23062 Move interface message to later in setup 2021-03-16 12:34:44 -04:00
William Wernert
1e7aaf9ffb Collect manager info before showing message about copying ssh key 2021-03-16 12:32:37 -04:00
Mike Reeves
2851840e76 Fix Logging 2021-03-16 12:18:01 -04:00
Josh Brower
7b748128ea Merge pull request #3462 from Security-Onion-Solutions/delta
Fixes IP & Port mappings
2021-03-16 12:05:23 -04:00
Josh Brower
4d6cac4a2a Merge remote-tracking branch 'remotes/origin/dev' into delta 2021-03-16 11:57:17 -04:00
William Wernert
c8bbe078a6 Use more lines on proxy error message 2021-03-16 11:42:15 -04:00
William Wernert
6a48d7f478 Print curl error to populate variable 2021-03-16 11:34:36 -04:00
Wes Lambert
038c58f3d5 Ignore TIME_WAIT when checking for Strelka frontend port reservation 2021-03-16 14:51:16 +00:00
William Wernert
59c62393b5 Change back to validating proxy, show user error message from curl 2021-03-16 10:18:02 -04:00
Mike Reeves
00025e5c74 Fix Syntax Error 2021-03-16 09:34:53 -04:00
Josh Brower
71ae5b60ea Update Sigmac mappings and config for IPs and ports 2021-03-16 09:32:40 -04:00
Josh Brower
44c75122ed Update Sigmac mappings and config for IPs and ports 2021-03-16 09:05:35 -04:00
Mike Reeves
8d23518f90 Update Elastic Link 2021-03-15 17:50:06 -04:00
Mike Reeves
9a4c4448f3 Fix whiptail display 2021-03-15 17:45:44 -04:00
Mike Reeves
12501e0079 Add check license to its own logic 2021-03-15 17:41:45 -04:00
Mike Reeves
72759de97f Fix so-common syntax 2021-03-15 17:37:44 -04:00
Mike Reeves
67e0d450e4 Add Elastic License Prompts 2021-03-15 17:32:36 -04:00
Mike Reeves
05ec7dba21 Merge pull request #3452 from Security-Onion-Solutions/Telegraf-Fix
Turn off SSL Verification in Telegraf
2021-03-15 16:47:27 -04:00
Mike Reeves
674bb342ea Turn off SSL Verification in Telegraf 2021-03-15 16:39:43 -04:00
Josh Brower
5fe025318b Update Sigmac mappings and config for IPs and ports 2021-03-15 15:53:00 -04:00
William Wernert
086f2b3437 Change when prereq packages are installed to follow new order 2021-03-15 14:59:24 -04:00
Mike Reeves
c93aab7a85 Merge pull request #3448 from Security-Onion-Solutions/kilo
Allow for moving Strelka files to processed directory after scanning
2021-03-15 14:51:04 -04:00
William Wernert
efc0463201 Change when proxy + variables are set so strings are built correctly 2021-03-15 14:45:23 -04:00
William Wernert
55aee69a74 Merge branch 'dev' into foxtrot 2021-03-15 12:34:24 -04:00
William Wernert
6ae3a26cbe Revert all proxy changes on reinstall 2021-03-15 12:34:13 -04:00
Wes Lambert
f142b754dc Add Strelka files.processed directory so files will be moved from staging to processed 2021-03-15 15:43:31 +00:00
Wes Lambert
b6a785395d Add Strelka staging directory for state 2021-03-15 15:42:13 +00:00
Mike Reeves
ab75d0e563 soup for 2.3.40 2021-03-15 10:51:31 -04:00
Mike Reeves
79c7af9a31 soup for 2.3.40 2021-03-15 10:48:24 -04:00
Masaya-A
236373cda2 Merge pull request #2 from Security-Onion-Solutions/dev
Dev Sync
2021-03-14 20:27:50 +09:00
Mike Reeves
d931e57fd8 Merge pull request #3428 from Security-Onion-Solutions/kilo 2021-03-12 17:03:48 -05:00
Doug Burks
cfdf9703ab Merge pull request #3427 from Security-Onion-Solutions/issue/3340
FEATURE: soup should output more guidance for distributed deployments at the end #3340
2021-03-12 15:27:26 -05:00
Doug Burks
da7adab566 FEATURE: soup should output more guidance for distributed deployments at the end #3340 2021-03-12 12:59:17 -05:00
William Wernert
f80dfda60b Only run initial installer progress to 98 to avoid sitting at 100 2021-03-12 11:39:44 -05:00
William Wernert
302d6e03be Merge branch 'dev' into foxtrot 2021-03-12 11:36:26 -05:00
Mike Reeves
4ac408ad38 Merge pull request #3423 from Security-Onion-Solutions/issue/3422
FIX: Improve Setup verbiage #3422
2021-03-12 11:04:25 -05:00
doug
edb88ac09a FIX: Improve Setup verbiage #3422 2021-03-12 10:54:44 -05:00
Jason Ertel
747f387936 Replace salt's http.wait_for_successful_query with so-common's wait_for_web_response due to issues with salt 2021-03-12 10:42:18 -05:00
Jason Ertel
8cddfeb47d Provide pillar for each client param 2021-03-12 07:42:10 -05:00
Doug Burks
555f9b5091 Merge pull request #3417 from Security-Onion-Solutions/issue/3413
FIX: SMTP shoud read SNMP on Kibana SNMP view #3413
2021-03-12 06:52:21 -05:00
doug
a5779a520c FIX: SMTP shoud read SNMP on Kibana SNMP view #3413 2021-03-12 06:48:57 -05:00
Jason Ertel
a7ea0808c3 Merge pull request #3399 from Security-Onion-Solutions/kilo
feature: Show job owner/submitter. Resolves #2775
2021-03-12 06:45:34 -05:00
Jason Ertel
462f76e2bb Remove client params block in favor in individual settings that will go into the pillar 2021-03-12 06:38:53 -05:00
Jason Ertel
b5cf9ae820 Merge branch 'dev' into kilo 2021-03-11 18:01:17 -05:00
Jason Ertel
80987dfd1d Support overrides of client params 2021-03-11 18:01:04 -05:00
William Wernert
6842204981 Ask for hostname earlier in setup 2021-03-11 16:55:06 -05:00
Doug Burks
ab1c84afca Merge pull request #3409 from Security-Onion-Solutions/issue/3408
FIX: Populate http.status_message field #3408
2021-03-11 16:45:53 -05:00
doug
adbc7436b6 FIX: Populate http.status_message field #3408 2021-03-11 16:42:20 -05:00
William Wernert
6d431c0bda Add more info to comment 2021-03-11 16:36:56 -05:00
William Wernert
b14b9e8e17 [fix] Fix dependency install progress bar 2021-03-11 16:34:54 -05:00
William Wernert
b35e65190e [fix] Fix dependency install progress bar 2021-03-11 16:30:14 -05:00
William Wernert
8e8bb1489b Redirect output of kill command 2021-03-11 16:13:52 -05:00
William Wernert
e2fc1b0b39 Redirect output of kill command 2021-03-11 16:06:49 -05:00
William Wernert
3306ffa792 Only collect proxy once, include manager in no_proxy value on minions 2021-03-11 16:03:43 -05:00
William Wernert
a86b2ab653 [fix] Remove additional collect_proxy call 2021-03-11 15:54:46 -05:00
William Wernert
5612fc10d4 [feat] Remove setup dependency on bc 2021-03-11 15:53:04 -05:00
Jason Ertel
286351f424 Merge branch 'dev' into kilo 2021-03-11 15:32:38 -05:00
Jason Ertel
908720592a Upgrade saved objects to 7.11.2 2021-03-11 15:32:22 -05:00
William Wernert
66da3e380f [fix] Set percentage value when needed 2021-03-11 15:25:38 -05:00
William Wernert
e60bc87ffa Install setup required packages later so that also uses the proxy 2021-03-11 15:20:39 -05:00
William Wernert
0d01f63e3b [fix] Confirm proxy password 2021-03-11 11:46:46 -05:00
Jason Ertel
79dd0d1809 Fix indentation 2021-03-11 11:13:14 -05:00
Mike Reeves
cdd95986a8 Merge pull request #3398 from Security-Onion-Solutions/issue/3397
FIX: Improve Suricata DHCP logging and parsing #3397
2021-03-11 11:07:53 -05:00
doug
b4ad7e7359 FIX: Improve Suricata DHCP logging and parsing #3397 2021-03-11 11:01:51 -05:00
William Wernert
0434ffac38 Merge branch 'dev' into foxtrot 2021-03-11 10:52:36 -05:00
William Wernert
506162bfcc Use auth for automated proxy test 2021-03-11 10:52:17 -05:00
Doug Burks
adb25d63d2 Merge pull request #3396 from Security-Onion-Solutions/issue/3295
FIX: Improve DHCP leases query in Hunt #3395
2021-03-11 08:22:48 -05:00
Doug Burks
85aaa71006 FIX: Improve DHCP leases query in Hunt #3395 2021-03-11 08:01:27 -05:00
William Wernert
750de6333d [fix] Remove last bad usage of cortexkey 2021-03-10 16:24:21 -05:00
William Wernert
9ffbb9d37e [fix] Use update so-cortex-user-enable with correct pillar
Fixes #3388
2021-03-10 16:17:10 -05:00
William Wernert
157badf448 [fix] Use correct pillar value for api key
Fixes #3388
2021-03-10 16:12:59 -05:00
Jason Ertel
eefa6bb949 feature: Show job owner/submitter. Resolves #2775 2021-03-10 14:44:21 -05:00
William Wernert
19ccd0c9a2 Merge branch 'dev' into foxtrot 2021-03-10 09:33:42 -05:00
Mike Reeves
6bbcc7a5e9 Merge pull request #3382 from Security-Onion-Solutions/kilo
Ensure MTU is defined for advanced sensor automation
2021-03-10 09:27:20 -05:00
Jason Ertel
3eb4a37c76 Expose zeek and suri pins for automation 2021-03-10 09:26:46 -05:00
Jason Ertel
180bba782e Expose zeek and suri pins for automation 2021-03-10 09:26:11 -05:00
Jason Ertel
b1531cc75e Merge pull request #3384 from Security-Onion-Solutions/Eval/Import-Fix
Update cert location for eval.import
2021-03-10 09:15:53 -05:00
Mike Reeves
18203513ab Update cert location for eval.import 2021-03-10 09:14:14 -05:00
Jason Ertel
46af6a5c84 Ensure MTU is defined for advanced sensor automation 2021-03-10 08:14:25 -05:00
Mike Reeves
2e74cb6abf Merge pull request #3377 from Security-Onion-Solutions/kilo 2021-03-09 21:40:43 -05:00
Jason Ertel
a496b03de7 Add missing MTU var for automation of advanced sensor 2021-03-09 20:52:34 -05:00
William Wernert
60f40163aa Merge branch 'dev' into foxtrot 2021-03-09 13:51:13 -05:00
Jason Ertel
46288802d1 Merge pull request #3368 from Security-Onion-Solutions/TOoSmOotH-patch-1
Update 9101_output_osquery_livequery.conf.jinja
2021-03-09 13:16:17 -05:00
Mike Reeves
2e01330e1b Update 9101_output_osquery_livequery.conf.jinja 2021-03-09 13:15:04 -05:00
William Wernert
f0e089b6bf Merge branch 'dev' into foxtrot 2021-03-09 10:11:04 -05:00
Mike Reeves
734d25b1ac Merge pull request #3361 from Security-Onion-Solutions/nomorefeatures
Make saved objects less hacky
2021-03-09 10:05:23 -05:00
Mike Reeves
49258a13a3 Make saved objects less hacky 2021-03-09 10:03:29 -05:00
Josh Brower
00da549430 Merge pull request #3358 from Security-Onion-Solutions/delta
FEATURE: Initial support for viewing Osquery Live Query results in Hunt
2021-03-09 09:18:57 -05:00
Jason Ertel
b1777ff10f Merge pull request #3357 from Security-Onion-Solutions/nomorefeatures
SSL with Elastic Security
2021-03-08 21:22:30 -05:00
Mike Reeves
3967e581cf Merge pull request #3356 from Security-Onion-Solutions/kilo
fix: Sensors can temporarily show offline while processing large PCAP…
2021-03-08 19:14:54 -05:00
William Wernert
ba71b2fbc8 Change proxy Jinja logic (none and empty string are falsy) 2021-03-08 17:36:34 -05:00
Mike Reeves
1ecb079066 Fix Kibana Script for loading dashboards 2021-03-08 17:36:07 -05:00
William Wernert
f85f86ccdd [fix] Check for empty proxy string everywhere 2021-03-08 17:25:23 -05:00
William Wernert
8c4e66f7bb [fix] Print error to stderr 2021-03-08 15:52:21 -05:00
William Wernert
5ee6856a07 Strip the last substring following a hyphen for automated branches
Also don't show the user a stack trace on invalid version strings, just alert on the bad string and exit
2021-03-08 15:43:54 -05:00
William Wernert
ed4f8025be [fix] Also check for proxy to be empty string 2021-03-08 13:57:24 -05:00
Josh Brower
fe8788c09a Merge remote-tracking branch 'remotes/origin/dev' into delta 2021-03-08 12:56:47 -05:00
William Wernert
5c7d3656dd [fix] Don't try to create so_proxy during automated installs, just set it 2021-03-08 12:26:17 -05:00
Jason Ertel
84c152e233 fix: Sensors can temporarily show offline while processing large PCAP jobs. Resolves #3279. 2021-03-08 12:05:44 -05:00
Mike Reeves
bf4ac2a312 Fix some merge conflicts 2021-03-08 11:43:24 -05:00
William Wernert
368b04b24e Add back accidentally removed code 2021-03-08 09:04:17 -05:00
William Wernert
ca2766511b Revert "[wip] Change when proxy is set up so main ip is known"
This reverts commit 1ea3cb1c61.

# Conflicts:
#	setup/so-functions
2021-03-08 09:02:53 -05:00
William Wernert
06c584910c Merge branch 'dev' into foxtrot 2021-03-08 08:58:31 -05:00
Josh Brower
19b3c7bb07 Merge pull request #3339 from Security-Onion-Solutions/feature/live_query-hunt
Feature/live query hunt
2021-03-08 08:31:25 -05:00
William Wernert
49db2a016a Merge pull request #3341 from Security-Onion-Solutions/kilo
Kilo
2021-03-08 08:17:29 -05:00
Jason Ertel
94610307b3 Merge branch 'dev' into kilo 2021-03-08 07:56:48 -05:00
William Wernert
35ae9363f5 [fix] Log gateway error, and don't show whiptail msg on automated installs 2021-03-05 20:15:37 -05:00
William Wernert
9c49cef2de Merge branch 'feature/docker-prune-rework' into foxtrot 2021-03-05 14:18:57 -05:00
William Wernert
f537b3c7f7 Merge branch 'feature/setup-ssh-harden' into foxtrot 2021-03-05 14:18:35 -05:00
William Wernert
e5110dc3fc [fix] None -> none 2021-03-05 14:08:03 -05:00
William Wernert
50fcdb65a6 [fix] Modify the proxy automated test
* It makes more sense to test the proxy using a network install, not via the iso
2021-03-05 13:53:48 -05:00
William Wernert
32e7afdc5f Merge branch 'feature/setup' into foxtrot 2021-03-05 12:53:31 -05:00
William Wernert
245902326f [wip] Add automation support for proxy settings 2021-03-05 12:53:20 -05:00
Jason Ertel
7234353476 Merge pull request #3319 from Security-Onion-Solutions/foxtrot
fix: syntax error in reserved ports configuration #3308
2021-03-05 12:51:50 -05:00
William Wernert
ec04145d15 [fix] Set proxy for idstools container manually 2021-03-05 11:34:31 -05:00
Jason Ertel
61a7efeeab fix: syntax error in reserved ports configuration; ensure ports are reserved prior to setup 2021-03-05 10:54:01 -05:00
Josh Brower
548f67ca6f Initial support for Live Queries in Hunt 2021-03-04 18:21:13 -05:00
William Wernert
33b2bd33fe [fix] Also create config.json so containers use proxy 2021-03-04 17:12:10 -05:00
William Wernert
e0d0baafcc [fix] Permanently set proxy for yum using template 2021-03-04 16:40:32 -05:00
William Wernert
b3c7760ad4 [fix] Use correct variable in so-proxy.sh 2021-03-04 14:08:21 -05:00
Mike Reeves
39d4f077b4 Merge pull request #3290 from Security-Onion-Solutions/foxtrot
Foxtrot
2021-03-04 13:44:00 -05:00
William Wernert
a435ea77e8 [fix] Also add hostname to no_proxy list 2021-03-04 12:43:42 -05:00
William Wernert
2ee8c7ad1c [fix] Always pass $proxy_addr since we retry the surrounding function 2021-03-04 12:16:23 -05:00
William Wernert
ac0a4f4a13 Merge branch 'dev' into feature/setup 2021-03-04 12:11:17 -05:00
William Wernert
b265854644 [wip] Move proxy config to separate file 2021-03-04 12:10:42 -05:00
William Wernert
4339ded17f [wip][fix] Don't add logic to so-setup, create wrapper function in so-functions 2021-03-04 12:10:14 -05:00
William Wernert
d19ca943cc [fix][wip] Only setup proxy early on configure network setup 2021-03-04 11:57:16 -05:00
William Wernert
2e56252f54 [wip] Syntax fixes 2021-03-04 11:54:21 -05:00
William Wernert
13dc822197 [wip] Ask user if they want to re-enter the proxy 2021-03-04 11:53:08 -05:00
William Wernert
5a97341d33 [wip] Fix how collect_proxy function works on retry 2021-03-04 11:41:36 -05:00
William Wernert
7ee0fd6375 [wip] Specify setup log location to user when directing them to it 2021-03-04 11:31:22 -05:00
Mike Reeves
05c7bd5789 Merge pull request #3285 from Security-Onion-Solutions/elastic
Elastic
2021-03-04 10:57:06 -05:00
Mike Reeves
c2b347e4bb Security Enable for only nodes and heavy 2021-03-04 10:52:01 -05:00
Mike Reeves
a0a8d12526 Enable SSL and Features 2021-03-04 10:08:28 -05:00
Mike Reeves
8c474cc7df Merge pull request #3268 from Security-Onion-Solutions/issue/3254
FIX: Custom Kibana settings are not being applied properly on upgrades #3254
2021-03-04 08:39:50 -05:00
William Wernert
3d5cf128ae [wip] Test proxy before using it 2021-03-03 15:02:21 -05:00
Mike Reeves
49371a1d6a fix elastic output for ssl 2021-03-03 14:30:45 -05:00
William Wernert
1ea3cb1c61 [wip] Change when proxy is set up so main ip is known
* Also only restart docker if the command exists (i.e. docker is installed)
2021-03-03 14:20:26 -05:00
Mike Reeves
bf4249d28b fix elastalert verification 2021-03-03 14:16:10 -05:00
William Wernert
4ffa0fbc13 [wip] Fix proxy validation 2021-03-03 14:09:59 -05:00
Mike Reeves
e0538417f1 fix http.wait 2021-03-03 14:06:35 -05:00
doug
d39b3280c8 FIX: Custom Kibana settings are not being applied properly on upgrades #3254 2021-03-03 14:04:32 -05:00
Mike Reeves
6c7111cd0a turn off verification mode for ES 2021-03-03 13:42:04 -05:00
Mike Reeves
4de62c878c turn on elastic security 2021-03-03 12:51:29 -05:00
William Wernert
e951e9d9c5 [wip] Further proxy changes
* Remove unused docker.conf template
* Rename proxy variable to avoid name collision
* Reword address prompt to specify users should not include user:pass in their input
* Actually call the collect_proxy function
2021-03-03 12:19:14 -05:00
William Wernert
26b1da744c [wip] Reword proxy yesno prompt 2021-03-03 12:01:15 -05:00
William Wernert
83791d87c7 [wip][fix] Use passwordbox for proxy password 2021-03-03 11:58:45 -05:00
William Wernert
279a5b60b8 Soup indent fixes 2021-03-03 11:58:10 -05:00
Mike Reeves
4f34eca5b9 remove unused script 2021-03-03 10:32:23 -05:00
Mike Reeves
07b5cc3d1d Fix https for rw indicies script 2021-03-03 10:29:41 -05:00
Mike Reeves
d7451dcd75 Merge remote-tracking branch 'origin/foxtrot' into nomorefeatures 2021-03-03 10:04:38 -05:00
Mike Reeves
4f867e5375 Fix all scripts for ssl elastic 2021-03-03 10:02:23 -05:00
William Wernert
82018a206c [wip] Don't validate user+pass for proxy, use new variable 2021-03-03 09:56:14 -05:00
William Wernert
2b94fa366e [wip] Add auth inputs for proxy settings, fix some broken logic 2021-03-03 09:51:38 -05:00
William Wernert
de77d3ebc9 [wip] Initial work for setting up proxy on manager 2021-03-02 17:41:49 -05:00
William Wernert
4df53b3c70 Unify log_size_limit variable value in so-curator-closed-delete-delete 2021-03-02 17:38:17 -05:00
William Wernert
497938460a [fix] manager:log_size_limit is no longer used, remove generation 2021-03-02 16:47:49 -05:00
Mike Reeves
e0d9212e55 Make https default for all things 2021-03-02 14:01:05 -05:00
Mike Reeves
80574d3c20 Make https default for all things 2021-03-02 13:59:43 -05:00
Mike Reeves
bfd05a8cfc Change to https for elastic connections 2021-03-02 11:32:29 -05:00
Mike Reeves
3219f4cd12 Remove Features Option 2021-03-02 11:04:50 -05:00
William Wernert
a18dd869c4 Merge branch 'dev' into feature/setup 2021-03-02 10:23:33 -05:00
William Wernert
61611b8de2 Fix Elasticsearch disk space prompt
Resolves #3205
2021-03-02 10:23:04 -05:00
William Wernert
0db9991307 Reword/remove some comments 2021-03-02 10:20:33 -05:00
Jason Ertel
4014dbbc3d Revert "Move version to 2.3.31"
This reverts commit cf21200a36.
2021-03-02 10:14:45 -05:00
William Wernert
35f5c7fb4b Merge branch 'dev' into feature/docker-prune-rework 2021-03-02 09:48:41 -05:00
Jason Ertel
cf21200a36 Move version to 2.3.31 2021-03-02 09:11:49 -05:00
Mike Reeves
bff446543a Merge pull request #3215 from Security-Onion-Solutions/foxtrot
Foxtrot
2021-03-01 15:58:41 -05:00
Jason Ertel
53a45e1c97 Merge branch 'dev' into foxtrot 2021-03-01 15:54:41 -05:00
Jason Ertel
b37d5ae15f Enable advanced setup for some search/sensor installs 2021-03-01 15:54:29 -05:00
Mike Reeves
85204dbb14 Merge pull request #3210 from Security-Onion-Solutions/dev2340
Update VERSION
2021-03-01 15:28:45 -05:00
Mike Reeves
2c75cb74db Update VERSION 2021-03-01 15:17:38 -05:00
William Wernert
1834e07aad Merge branch 'dev' into feature/docker-prune-rework 2021-03-01 09:37:47 -05:00
William Wernert
33696398eb Add new so-docker-prune script
* Script will pull list of so- images and prune any older than most recent + last version
2021-02-26 18:06:07 -05:00
Josh Brower
b8137214e4 Initial Support - Live Query to Hunt 2021-02-26 08:08:09 -05:00
Josh Patterson
dc673eef77 Merge pull request #3148 from Security-Onion-Solutions/salt-3002.5
Salt 3002.5
2021-02-25 23:00:35 -05:00
Josh Patterson
18365ed87d Merge pull request #3140 from Security-Onion-Solutions/issue/3130
Issue/3130
2021-02-25 11:27:46 -05:00
Josh Patterson
81331264e7 Merge pull request #3117 from Security-Onion-Solutions/issue/3115
logfile is 1 word
2021-02-24 11:57:33 -05:00
Josh Patterson
a9066f491d Merge pull request #3116 from Security-Onion-Solutions/issue/3115
Issue/3115
2021-02-24 11:51:42 -05:00
Josh Patterson
988ad5f8fc Merge pull request #3086 from Security-Onion-Solutions/issue/3056
Issue/3056
2021-02-23 14:53:42 -05:00
William Wernert
d205fff3ba Run ssh-harden in setup per #1932 2021-02-19 13:45:23 -05:00
200 changed files with 4449 additions and 2792 deletions

1
HOTFIX Normal file
View File

@@ -0,0 +1 @@

View File

@@ -1,6 +1,6 @@
## Security Onion 2.3.30
## Security Onion 2.3.52
Security Onion 2.3.30 is here!
Security Onion 2.3.52 is here!
## Screenshots

View File

@@ -1,16 +1,17 @@
### 2.3.30 ISO image built on 2021/03/01
### 2.3.52 ISO image built on 2021/04/27
### Download and Verify
2.3.30 ISO image:
https://download.securityonion.net/file/securityonion/securityonion-2.3.30.iso
2.3.52 ISO image:
https://download.securityonion.net/file/securityonion/securityonion-2.3.52.iso
MD5: 65202BA0F7661A5E27087F097B8E571E
SHA1: 14E842E39EDBB55A104263281CF25BF88A2E9D67
SHA256: 210B37B9E3DFC827AFE2940E2C87B175ADA968EDD04298A5926F63D9269847B7
MD5: DF0CCCB0331780F472CC167AEAB55652
SHA1: 71FAE87E6C0AD99FCC27C50A5E5767D3F2332260
SHA256: 30E7C4206CC86E94D1657CBE420D2F41C28BC4CC63C51F27C448109EBAF09121
Signature for ISO image:
https://github.com/Security-Onion-Solutions/securityonion/raw/master/sigs/securityonion-2.3.30.iso.sig
https://github.com/Security-Onion-Solutions/securityonion/raw/master/sigs/securityonion-2.3.52.iso.sig
Signing key:
https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/master/KEYS
@@ -24,22 +25,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.30.iso.sig
wget https://github.com/Security-Onion-Solutions/securityonion/raw/master/sigs/securityonion-2.3.52.iso.sig
```
Download the ISO image:
```
wget https://download.securityonion.net/file/securityonion/securityonion-2.3.30.iso
wget https://download.securityonion.net/file/securityonion/securityonion-2.3.52.iso
```
Verify the downloaded ISO image using the signature file:
```
gpg --verify securityonion-2.3.30.iso.sig securityonion-2.3.30.iso
gpg --verify securityonion-2.3.52.iso.sig securityonion-2.3.52.iso
```
The output should show "Good signature" and the Primary key fingerprint should match what's shown below:
```
gpg: Signature made Mon 01 Mar 2021 02:15:28 PM EST using RSA key ID FE507013
gpg: Signature made Sat 05 Jun 2021 06:56:04 PM EDT using RSA key ID FE507013
gpg: Good signature from "Security Onion Solutions, LLC <info@securityonionsolutions.com>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.

View File

@@ -1 +1 @@
2.3.30
2.3.52

View File

@@ -1,208 +0,0 @@
{%- set FLEETMANAGER = salt['pillar.get']('global:fleet_manager', False) -%}
{%- set FLEETNODE = salt['pillar.get']('global:fleet_node', False) -%}
{% set WAZUH = salt['pillar.get']('manager:wazuh', '0') %}
{% set THEHIVE = salt['pillar.get']('manager:thehive', '0') %}
{% set PLAYBOOK = salt['pillar.get']('manager:playbook', '0') %}
{% set FREQSERVER = salt['pillar.get']('manager:freq', '0') %}
{% set DOMAINSTATS = salt['pillar.get']('manager:domainstats', '0') %}
{% set ZEEKVER = salt['pillar.get']('global:mdengine', 'COMMUNITY') %}
{% set GRAFANA = salt['pillar.get']('manager:grafana', '0') %}
eval:
containers:
- so-nginx
- so-telegraf
{% if GRAFANA == '1' %}
- so-influxdb
- so-grafana
{% endif %}
- so-dockerregistry
- so-soc
- so-kratos
- so-idstools
{% if FLEETMANAGER %}
- so-mysql
- so-fleet
- so-redis
{% endif %}
- so-elasticsearch
- so-logstash
- so-kibana
- so-steno
- so-suricata
- so-zeek
- so-curator
- so-elastalert
{% if WAZUH != '0' %}
- so-wazuh
{% endif %}
- so-soctopus
{% if THEHIVE != '0' %}
- so-thehive
- so-thehive-es
- so-cortex
{% endif %}
{% if PLAYBOOK != '0' %}
- so-playbook
{% endif %}
{% if FREQSERVER != '0' %}
- so-freqserver
{% endif %}
{% if DOMAINSTATS != '0' %}
- so-domainstats
{% endif %}
heavy_node:
containers:
- so-nginx
- so-telegraf
- so-redis
- so-logstash
- so-elasticsearch
- so-curator
- so-steno
- so-suricata
- so-wazuh
- so-filebeat
{% if ZEEKVER != 'SURICATA' %}
- so-zeek
{% endif %}
helix:
containers:
- so-nginx
- so-telegraf
- so-idstools
- so-steno
- so-zeek
- so-redis
- so-logstash
- so-filebeat
hot_node:
containers:
- so-nginx
- so-telegraf
- so-logstash
- so-elasticsearch
- so-curator
manager_search:
containers:
- so-nginx
- so-telegraf
- so-soc
- so-kratos
- so-acng
- so-idstools
- so-redis
- so-logstash
- so-elasticsearch
- so-curator
- so-kibana
- so-elastalert
- so-filebeat
- so-soctopus
{% if FLEETMANAGER %}
- so-mysql
- so-fleet
- so-redis
{% endif %}
{% if WAZUH != '0' %}
- so-wazuh
{% endif %}
- so-soctopus
{% if THEHIVE != '0' %}
- so-thehive
- so-thehive-es
- so-cortex
{% endif %}
{% if PLAYBOOK != '0' %}
- so-playbook
{% endif %}
{% if FREQSERVER != '0' %}
- so-freqserver
{% endif %}
{% if DOMAINSTATS != '0' %}
- so-domainstats
{% endif %}
manager:
containers:
- so-dockerregistry
- so-nginx
- so-telegraf
{% if GRAFANA == '1' %}
- so-influxdb
- so-grafana
{% endif %}
- so-soc
- so-kratos
- so-acng
- so-idstools
- so-redis
- so-elasticsearch
- so-logstash
- so-kibana
- so-elastalert
- so-filebeat
{% if FLEETMANAGER %}
- so-mysql
- so-fleet
- so-redis
{% endif %}
{% if WAZUH != '0' %}
- so-wazuh
{% endif %}
- so-soctopus
{% if THEHIVE != '0' %}
- so-thehive
- so-thehive-es
- so-cortex
{% endif %}
{% if PLAYBOOK != '0' %}
- so-playbook
{% endif %}
{% if FREQSERVER != '0' %}
- so-freqserver
{% endif %}
{% if DOMAINSTATS != '0' %}
- so-domainstats
{% endif %}
parser_node:
containers:
- so-nginx
- so-telegraf
- so-logstash
search_node:
containers:
- so-nginx
- so-telegraf
- so-logstash
- so-elasticsearch
- so-curator
- so-filebeat
{% if WAZUH != '0' %}
- so-wazuh
{% endif %}
sensor:
containers:
- so-nginx
- so-telegraf
- so-steno
- so-suricata
{% if ZEEKVER != 'SURICATA' %}
- so-zeek
{% endif %}
- so-wazuh
- so-filebeat
warm_node:
containers:
- so-nginx
- so-telegraf
- so-elasticsearch
fleet:
containers:
{% if FLEETNODE %}
- so-mysql
- so-fleet
- so-redis
- so-filebeat
- so-nginx
- so-telegraf
{% endif %}

View File

@@ -7,7 +7,7 @@ logstash:
- so/9000_output_zeek.conf.jinja
- so/9002_output_import.conf.jinja
- so/9034_output_syslog.conf.jinja
- so/9100_output_osquery.conf.jinja
- so/9100_output_osquery.conf.jinja
- so/9400_output_suricata.conf.jinja
- so/9500_output_beats.conf.jinja
- so/9600_output_ossec.conf.jinja

View File

@@ -1,71 +0,0 @@
{% from 'allowed_states.map.jinja' import allowed_states %}
{% if sls in allowed_states %}
{% set MANAGER = salt['grains.get']('master') %}
airgapyum:
file.managed:
- name: /etc/yum/yum.conf
- source: salt://airgap/files/yum.conf
airgap_repo:
pkgrepo.managed:
- humanname: Airgap Repo
- baseurl: https://{{ MANAGER }}/repo
- gpgcheck: 0
- sslverify: 0
agbase:
file.absent:
- name: /etc/yum.repos.d/CentOS-Base.repo
agcr:
file.absent:
- name: /etc/yum.repos.d/CentOS-CR.repo
agdebug:
file.absent:
- name: /etc/yum.repos.d/CentOS-Debuginfo.repo
agfasttrack:
file.absent:
- name: /etc/yum.repos.d/CentOS-fasttrack.repo
agmedia:
file.absent:
- name: /etc/yum.repos.d/CentOS-Media.repo
agsources:
file.absent:
- name: /etc/yum.repos.d/CentOS-Sources.repo
agvault:
file.absent:
- name: /etc/yum.repos.d/CentOS-Vault.repo
agkernel:
file.absent:
- name: /etc/yum.repos.d/CentOS-x86_64-kernel.repo
agepel:
file.absent:
- name: /etc/yum.repos.d/epel.repo
agtesting:
file.absent:
- name: /etc/yum.repos.d/epel-testing.repo
agssrepo:
file.absent:
- name: /etc/yum.repos.d/saltstack.repo
agwazrepo:
file.absent:
- name: /etc/yum.repos.d/wazuh.repo
{% else %}
{{sls}}_state_not_allowed:
test.fail_without_changes:
- name: {{sls}}_state_not_allowed
{% endif %}

View File

@@ -43,8 +43,9 @@ pki_private_key:
- require:
- file: /etc/pki
- timeout: 30
- retry: 5
- interval: 30
- retry:
attempts: 5
interval: 30
x509_pem_entries:
module.run:

View File

@@ -1 +1 @@
net.ipv4.ip_local_reserved_ports="55000,57314"
net.ipv4.ip_local_reserved_ports=55000,57314,47760-47860

View File

@@ -0,0 +1,2 @@
{%- set VERSION = salt['pillar.get']('global:soversion') -%}
{{ VERSION }}

6
salt/common/files/vimrc Normal file
View File

@@ -0,0 +1,6 @@
" Activates filetype detection
filetype plugin indent on
" Sets .sls files to use YAML syntax highlighting
autocmd BufNewFile,BufRead *.sls set syntax=yaml
set number

View File

@@ -49,6 +49,11 @@ sosaltstackperms:
- gid: 939
- dir_mode: 770
so_log_perms:
file.directory:
- name: /opt/so/log
- dir_mode: 755
# Create a state directory
statedir:
file.directory:
@@ -64,20 +69,12 @@ salttmp:
- group: 939
- makedirs: True
# Install epel
{% if grains['os'] == 'CentOS' %}
repair_yumdb:
cmd.run:
- name: 'mv -f /var/lib/rpm/__db* /tmp && yum clean all'
- onlyif:
- 'yum check-update 2>&1 | grep "Error: rpmdb open failed"'
epel:
pkg.installed:
- skip_suggestions: True
- pkgs:
- epel-release
{% endif %}
# VIM config
vimconfig:
file.managed:
- name: /root/.vimrc
- source: salt://common/files/vimrc
- replace: False
# Install common packages
{% if grains['os'] != 'CentOS' %}
@@ -90,7 +87,6 @@ commonpkgs:
- ntpdate
- jq
- python3-docker
- docker-ce
- curl
- ca-certificates
- software-properties-common
@@ -104,12 +100,17 @@ commonpkgs:
- python3-dateutil
- python3-m2crypto
- python3-mysqldb
- python3-packaging
- git
- vim
heldpackages:
pkg.installed:
- pkgs:
- containerd.io: 1.2.13-2
- docker-ce: 5:19.03.14~3-0~ubuntu-bionic
- containerd.io: 1.4.4-1
- docker-ce: 5:20.10.5~3-0~ubuntu-bionic
- docker-ce-cli: 5:20.10.5~3-0~ubuntu-bionic
- docker-ce-rootless-extras: 5:20.10.5~3-0~ubuntu-bionic
- hold: True
- update_holds: True
@@ -135,17 +136,21 @@ commonpkgs:
- python36-dateutil
- python36-m2crypto
- python36-mysql
- python36-packaging
- yum-utils
- device-mapper-persistent-data
- lvm2
- openssl
- git
- vim-enhanced
heldpackages:
pkg.installed:
- pkgs:
- containerd.io: 1.2.13-3.2.el7
- docker-ce: 3:19.03.14-3.el7
- containerd.io: 1.4.4-3.1.el7
- docker-ce: 3:20.10.5-3.el7
- docker-ce-cli: 1:20.10.5-3.el7
- docker-ce-rootless-extras: 20.10.5-3.el7
- hold: True
- update_holds: True
{% endif %}
@@ -230,6 +235,30 @@ commonlogrotateconf:
- month: '*'
- dayweek: '*'
# Create the status directory
sostatusdir:
file.directory:
- name: /opt/so/log/sostatus
- user: 0
- group: 0
- makedirs: True
sostatus_log:
file.managed:
- name: /opt/so/log/sostatus/status.log
- mode: 644
# Install sostatus check cron
'/usr/sbin/so-status -q; echo $? > /opt/so/log/sostatus/status.log 2>&1':
cron.present:
- user: root
- minute: '*/1'
- hour: '*'
- daymonth: '*'
- month: '*'
- dayweek: '*'
{% if role in ['eval', 'manager', 'managersearch', 'standalone'] %}
# Lock permissions on the backup directory
backupdir:
@@ -249,6 +278,14 @@ backupdir:
- daymonth: '*'
- month: '*'
- dayweek: '*'
{% else %}
soversionfile:
file.managed:
- name: /etc/soversion
- source: salt://common/files/soversion
- mode: 644
- template: jinja
{% endif %}
# Manager daemon.json
@@ -266,9 +303,10 @@ docker:
- file: docker_daemon
# Reserve OS ports for Docker proxy in case boot settings are not already applied/present
# 55000 = Wazuh, 57314 = Strelka, 47760-47860 = Zeek
dockerapplyports:
cmd.run:
- name: if [ ! -s /etc/sysctl.d/99-reserved-ports.conf ]; then sysctl -w net.ipv4.ip_local_reserved_ports="55000,57314"; fi
- name: if [ ! -s /etc/sysctl.d/99-reserved-ports.conf ]; then sysctl -w net.ipv4.ip_local_reserved_ports="55000,57314,47760-47860"; fi
# Reserve OS ports for Docker proxy
dockerreserveports:

View File

@@ -0,0 +1,64 @@
#!/bin/bash
# Copyright 2014,2015,2016,2017,2018,2019,2020,2021 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
UPDATE_DIR=/tmp/sohotfixapply
if [ -z "$1" ]; then
echo "No tarball given. Please provide the filename so I can run the hotfix"
echo "so-airgap-hotfixapply /path/to/sohotfix.tar"
exit 1
else
if [ ! -f "$1" ]; then
echo "Unable to find $1. Make sure your path is correct and retry."
exit 1
else
echo "Determining if we need to apply this hotfix"
rm -rf $UPDATE_DIR
mkdir -p $UPDATE_DIR
tar xvf $1 -C $UPDATE_DIR
# Compare some versions
NEWVERSION=$(cat $UPDATE_DIR/VERSION)
HOTFIXVERSION=$(cat $UPDATE_DIR/HOTFIX)
CURRENTHOTFIX=$(cat /etc/sohotfix)
INSTALLEDVERSION=$(cat /etc/soversion)
if [ "$INSTALLEDVERSION" == "$NEWVERSION" ]; then
echo "Checking to see if there are hotfixes needed"
if [ "$HOTFIXVERSION" == "$CURRENTHOTFIX" ]; then
echo "You are already running the latest version of Security Onion."
rm -rf $UPDATE_DIR
exit 1
else
echo "We need to apply a hotfix"
copy_new_files
echo $HOTFIXVERSION > /etc/sohotfix
salt-call state.highstate -l info queue=True
echo "The Hotfix $HOTFIXVERSION has been applied"
# Clean up
rm -rf $UPDATE_DIR
exit 0
fi
else
echo "This hotfix is not compatible with your current version. Download the latest ISO and run soup"
rm -rf $UPDATE_DIR
fi
fi
fi

View File

@@ -0,0 +1,33 @@
#!/bin/bash
# Copyright 2014,2015,2016,2017,2018,2019,2020,2021 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/>.
# Get the latest code
rm -rf /tmp/sohotfix
mkdir -p /tmp/sohotfix
cd /tmp/sohotfix
git clone https://github.com/Security-Onion-Solutions/securityonion
if [ ! -d "/tmp/sohotfix/securityonion" ]; then
echo "I was unable to get the latest code. Check your internet and try again."
exit 1
else
echo "Looks like we have the code lets create the tarball."
cd /tmp/sohotfix/securityonion
tar cvf /tmp/sohotfix/sohotfix.tar HOTFIX VERSION salt pillar
echo ""
echo "Copy /tmp/sohotfix/sohotfix.tar to portable media and then copy it to your airgap manager."
exit 0
fi

View File

@@ -15,6 +15,8 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
DEFAULT_SALT_DIR=/opt/so/saltstack/default
# Check for prerequisites
if [ "$(id -u)" -ne 0 ]; then
echo "This script must be run using sudo!"
@@ -86,6 +88,19 @@ add_interface_bond0() {
fi
}
check_airgap() {
# See if this is an airgap install
AIRGAP=$(cat /opt/so/saltstack/local/pillar/global.sls | grep airgap: | awk '{print $2}')
if [[ "$AIRGAP" == "True" ]]; then
is_airgap=0
UPDATE_DIR=/tmp/soagupdate/SecurityOnion
AGDOCKER=/tmp/soagupdate/docker
AGREPO=/tmp/soagupdate/Packages
else
is_airgap=1
fi
}
check_container() {
docker ps | grep "$1:" > /dev/null 2>&1
return $?
@@ -97,6 +112,60 @@ check_password() {
return $?
}
check_elastic_license() {
[ -n "$TESTING" ] && return
# See if the user has already accepted the license
if [ ! -f /opt/so/state/yeselastic.txt ]; then
elastic_license
else
echo "Elastic License has already been accepted"
fi
}
copy_new_files() {
# Copy new files over to the salt dir
cd $UPDATE_DIR
rsync -a salt $DEFAULT_SALT_DIR/
rsync -a pillar $DEFAULT_SALT_DIR/
chown -R socore:socore $DEFAULT_SALT_DIR/
chmod 755 $DEFAULT_SALT_DIR/pillar/firewall/addfirewall.sh
cd /tmp
}
disable_fastestmirror() {
sed -i 's/enabled=1/enabled=0/' /etc/yum/pluginconf.d/fastestmirror.conf
}
elastic_license() {
read -r -d '' message <<- EOM
\n
Starting in Elastic Stack version 7.11, the Elastic Stack binaries are only available under the Elastic License:
https://securityonion.net/elastic-license
Please review the Elastic License:
https://www.elastic.co/licensing/elastic-license
Do you agree to the terms of the Elastic License?
If so, type AGREE to accept the Elastic License and continue. Otherwise, press Enter to exit this program without making any changes.
EOM
AGREED=$(whiptail --title "Security Onion Setup" --inputbox \
"$message" 20 75 3>&1 1>&2 2>&3)
if [ "${AGREED^^}" = 'AGREE' ]; then
mkdir -p /opt/so/state
touch /opt/so/state/yeselastic.txt
else
echo "Starting in 2.3.40 you must accept the Elastic license if you want to run Security Onion."
exit 1
fi
}
fail() {
msg=$1
echo "ERROR: $msg"
@@ -109,6 +178,23 @@ get_random_value() {
head -c 5000 /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w $length | head -n 1
}
gpg_rpm_import() {
if [[ "$OS" == "centos" ]]; then
if [[ "$WHATWOULDYOUSAYYAHDOHERE" == "setup" ]]; then
local RPMKEYSLOC="../salt/repo/client/files/centos/keys"
else
local RPMKEYSLOC="$UPDATE_DIR/salt/repo/client/files/centos/keys"
fi
RPMKEYS=('RPM-GPG-KEY-EPEL-7' 'GPG-KEY-WAZUH' 'docker.pub' 'SALTSTACK-GPG-KEY.pub' 'securityonion.pub')
for RPMKEY in "${RPMKEYS[@]}"; do
rpm --import $RPMKEYSLOC/$RPMKEY
echo "Imported $RPMKEY"
done
fi
}
header() {
printf '%s\n' "" "$banner" " $*" "$banner"
}
@@ -250,6 +336,12 @@ set_minionid() {
MINIONID=$(lookup_grain id)
}
set_palette() {
if [ "$OS" == ubuntu ]; then
update-alternatives --set newt-palette /etc/newt/palette.original
fi
}
set_version() {
CURRENTVERSION=0.0.0
if [ -f /etc/soversion ]; then
@@ -340,6 +432,40 @@ valid_int() {
# {% raw %}
valid_proxy() {
local proxy=$1
local url_prefixes=( 'http://' 'https://' )
local has_prefix=false
for prefix in "${url_prefixes[@]}"; do
echo "$proxy" | grep -q "$prefix" && has_prefix=true && proxy=${proxy#"$prefix"} && break
done
local url_arr
mapfile -t url_arr <<< "$(echo "$proxy" | tr ":" "\n")"
local valid_url=true
if ! valid_ip4 "${url_arr[0]}" && ! valid_fqdn "${url_arr[0]}" && ! valid_hostname "${url_arr[0]}"; then
valid_url=false
fi
[[ $has_prefix == true ]] && [[ $valid_url == true ]] && return 0 || return 1
}
valid_ntp_list() {
local string=$1
local ntp_arr
IFS="," read -r -a ntp_arr <<< "$string"
for ntp in "${ntp_arr[@]}"; do
if ! valid_ip4 "$ntp" && ! valid_hostname "$ntp" && ! valid_fqdn "$ntp"; then
return 1
fi
done
return 0
}
valid_string() {
local str=$1
local min_length=${2:-1}
@@ -361,6 +487,7 @@ wait_for_web_response() {
expected=$2
maxAttempts=${3:-300}
logfile=/root/wait_for_web_response.log
truncate -s 0 "$logfile"
attempt=0
while [[ $attempt -lt $maxAttempts ]]; do
attempt=$((attempt+1))

View File

@@ -30,7 +30,7 @@ fi
USER=$1
CORTEX_KEY=$(lookup_pillar cortexkey)
CORTEX_KEY=$(lookup_pillar cortexorguserkey)
CORTEX_API_URL="$(lookup_pillar url_base)/cortex/api"
CORTEX_ORG_NAME=$(lookup_pillar cortexorgname)
CORTEX_USER=$USER

View File

@@ -30,7 +30,7 @@ fi
USER=$1
CORTEX_KEY=$(lookup_pillar cortexkey)
CORTEX_KEY=$(lookup_pillar cortexorguserkey)
CORTEX_API_URL="$(lookup_pillar url_base)/cortex/api"
CORTEX_USER=$USER

View File

@@ -0,0 +1,89 @@
#!/usr/bin/env python3
# Copyright 2014,2015,2016,2017,2018,2019,2020,2021 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/>.
import sys, argparse, re, docker
from packaging.version import Version, InvalidVersion
from itertools import groupby, chain
def get_image_name(string) -> str:
return ':'.join(string.split(':')[:-1])
def get_so_image_basename(string) -> str:
return get_image_name(string).split('/so-')[-1]
def get_image_version(string) -> str:
ver = string.split(':')[-1]
if ver == 'latest':
# Version doesn't like "latest", so use a high semver
return '999999.9.9'
else:
try:
Version(ver)
except InvalidVersion:
# Strip the last substring following a hyphen for automated branches
ver = '-'.join(ver.split('-')[:-1])
return ver
def main(quiet):
client = docker.from_env()
image_list = client.images.list(filters={ 'dangling': False })
# Map list of image objects to flattened list of tags (format: "name:version")
tag_list = list(chain.from_iterable(list(map(lambda x: x.attrs.get('RepoTags'), image_list))))
# Filter to only SO images (base name begins with "so-")
tag_list = list(filter(lambda x: re.match(r'^.*\/so-[^\/]*$', get_image_name(x)), tag_list))
# Group tags into lists by base name (sort by same projection first)
tag_list.sort(key=lambda x: get_so_image_basename(x))
grouped_tag_lists = [ list(it) for _, it in groupby(tag_list, lambda x: get_so_image_basename(x)) ]
no_prunable = True
for t_list in grouped_tag_lists:
try:
# Group tags by version, in case multiple images exist with the same version string
t_list.sort(key=lambda x: Version(get_image_version(x)), reverse=True)
grouped_t_list = [ list(it) for _,it in groupby(t_list, lambda x: get_image_version(x)) ]
# Keep the 2 most current version groups
if len(grouped_t_list) <= 2:
continue
else:
no_prunable = False
for group in grouped_t_list[2:]:
for tag in group:
if not quiet: print(f'Removing image {tag}')
client.images.remove(tag)
except InvalidVersion as e:
print(f'so-{get_so_image_basename(t_list[0])}: {e.args[0]}', file=sys.stderr)
exit(1)
if no_prunable and not quiet:
print('No Security Onion images to prune')
if __name__ == "__main__":
main_parser = argparse.ArgumentParser(add_help=False)
main_parser.add_argument('-q', '--quiet', action='store_const', const=True, required=False)
args = main_parser.parse_args(sys.argv[1:])
main(args.quiet)

View File

@@ -50,11 +50,7 @@ done
if [ $SKIP -ne 1 ]; then
# List indices
echo
{% if grains['role'] in ['so-node','so-heavynode'] %}
curl -k -L https://{{ NODEIP }}:9200/_cat/indices?v
{% else %}
curl -L {{ NODEIP }}:9200/_cat/indices?v
{% endif %}
echo
# Inform user we are about to delete all data
echo
@@ -93,18 +89,10 @@ fi
# Delete data
echo "Deleting data..."
{% if grains['role'] in ['so-node','so-heavynode'] %}
INDXS=$(curl -s -XGET -k -L https://{{ NODEIP }}:9200/_cat/indices?v | egrep 'logstash|elastalert|so-' | awk '{ print $3 }')
{% else %}
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 -L https://"{{ NODEIP }}:9200/${INDX}" > /dev/null 2>&1
{% else %}
curl -XDELETE -L "{{ NODEIP }}:9200/${INDX}" > /dev/null 2>&1
{% endif %}
done
#Start Logstash/Filebeat

View File

@@ -0,0 +1,21 @@
#!/bin/bash
#
# Copyright 2014,2015,2016,2017,2018,2019,2020,2021 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 NODEIP = salt['pillar.get']('elasticsearch:mainip', '') -%}
. /usr/sbin/so-common
curl -s -k -L https://{{ NODEIP }}:9200/_cat/indices?pretty

View File

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

View File

@@ -19,15 +19,7 @@
. /usr/sbin/so-common
if [ "$1" == "" ]; then
{% if grains['role'] in ['so-node','so-heavynode'] %}
curl -s -k -L https://{{ NODEIP }}:9200/_nodes/stats | jq .nodes | jq ".[] | .ingest.pipelines"
{% else %}
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 -L https://{{ NODEIP }}:9200/_nodes/stats | jq .nodes | jq ".[] | .ingest.pipelines.\"$1\""
{% else %}
curl -s -L {{ NODEIP }}:9200/_nodes/stats | jq .nodes | jq ".[] | .ingest.pipelines.\"$1\""
{% endif %}
fi

View File

@@ -0,0 +1,25 @@
#!/bin/bash
#
# Copyright 2014,2015,2016,2017,2018,2019,2020,2021 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 NODEIP = salt['pillar.get']('elasticsearch:mainip', '') -%}
. /usr/sbin/so-common
if [ "$1" == "" ]; then
curl -s -k -L https://{{ NODEIP }}:9200/_ingest/pipeline/* | jq .
else
curl -s -k -L https://{{ NODEIP }}:9200/_ingest/pipeline/$1 | jq .
fi

View File

@@ -17,15 +17,7 @@
{%- set NODEIP = salt['pillar.get']('elasticsearch:mainip', '') -%}
. /usr/sbin/so-common
if [ "$1" == "" ]; then
{% if grains['role'] in ['so-node','so-heavynode'] %}
curl -s -k -L https://{{ NODEIP }}:9200/_ingest/pipeline/* | jq 'keys'
{% else %}
curl -s -L {{ NODEIP }}:9200/_ingest/pipeline/* | jq 'keys'
{% endif %}
else
{% if grains['role'] in ['so-node','so-heavynode'] %}
curl -s -k -L https://{{ NODEIP }}:9200/_ingest/pipeline/$1 | jq
{% else %}
curl -s -L {{ NODEIP }}:9200/_ingest/pipeline/$1 | jq
{% endif %}
fi

View File

@@ -0,0 +1,21 @@
#!/bin/bash
#
# Copyright 2014,2015,2016,2017,2018,2019,2020,2021 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 NODEIP = salt['pillar.get']('elasticsearch:mainip', '') -%}
. /usr/sbin/so-common
curl -s -k -L https://{{ NODEIP }}:9200/_cat/shards?pretty

View File

@@ -0,0 +1,21 @@
#!/bin/bash
#
# Copyright 2014,2015,2016,2017,2018,2019,2020,2021 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 NODEIP = salt['pillar.get']('elasticsearch:mainip', '') -%}
. /usr/sbin/so-common
curl -s -k -L -XDELETE https://{{ NODEIP }}:9200/_template/$1

View File

@@ -0,0 +1,25 @@
#!/bin/bash
#
# Copyright 2014,2015,2016,2017,2018,2019,2020,2021 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 NODEIP = salt['pillar.get']('elasticsearch:mainip', '') -%}
. /usr/sbin/so-common
if [ "$1" == "" ]; then
curl -s -k -L https://{{ NODEIP }}:9200/_template/* | jq .
else
curl -s -k -L https://{{ NODEIP }}:9200/_template/$1 | jq .
fi

View File

@@ -17,15 +17,7 @@
{%- set NODEIP = salt['pillar.get']('elasticsearch:mainip', '') -%}
. /usr/sbin/so-common
if [ "$1" == "" ]; then
{% if grains['role'] in ['so-node','so-heavynode'] %}
curl -s -k -L https://{{ NODEIP }}:9200/_template/* | jq 'keys'
{% else %}
curl -s -L {{ NODEIP }}:9200/_template/* | jq 'keys'
{% endif %}
else
{% if grains['role'] in ['so-node','so-heavynode'] %}
curl -s -k -L https://{{ NODEIP }}:9200/_template/$1 | jq
{% else %}
curl -s -L {{ NODEIP }}:9200/_template/$1 | jq
{% endif %}
fi

View File

@@ -30,11 +30,7 @@ echo -n "Waiting for ElasticSearch..."
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 -L https://"$ELASTICSEARCH_HOST":"$ELASTICSEARCH_PORT"
{% else %}
curl --output /dev/null --silent --head --fail -L http://"$ELASTICSEARCH_HOST":"$ELASTICSEARCH_PORT"
{% endif %}
if [ $? -eq 0 ]; then
ELASTICSEARCH_CONNECTED="yes"
echo "connected!"
@@ -55,11 +51,7 @@ 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 -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 -L http://${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}/_template/so-$TEMPLATE -H 'Content-Type: application/json' -d@$i 2>/dev/null; echo; done
{% endif %}
echo
cd - >/dev/null

View File

@@ -1,53 +0,0 @@
#!/bin/bash
# Copyright 2014,2015,2016,2017,2018,2019,2020,2021 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
. /usr/sbin/so-image-common
local_salt_dir=/opt/so/saltstack/local
cat << EOF
This program will switch from the open source version of the Elastic Stack to the Features version licensed under the Elastic license.
If you proceed, then we will download new Docker images and restart services.
Please review the Elastic license:
https://raw.githubusercontent.com/elastic/elasticsearch/master/licenses/ELASTIC-LICENSE.txt
Please also note that, if you have a distributed deployment and continue with this change, Elastic traffic between nodes will change from encrypted to cleartext!
(We expect to support Elastic Features Security at some point in the future.)
Do you agree to the terms of the Elastic license and understand the note about encryption?
If so, type AGREE to accept the Elastic license and continue. Otherwise, just press Enter to exit this program without making any changes.
EOF
read INPUT
if [ "$INPUT" != "AGREE" ]; then
exit
fi
echo "Please wait while switching to Elastic Features."
require_manager
TRUSTED_CONTAINERS=( \
"so-elasticsearch" \
"so-filebeat" \
"so-kibana" \
"so-logstash" )
update_docker_containers "features" "-features"
# Modify global.sls to enable Features
sed -i 's/features: False/features: True/' $local_salt_dir/pillar/global.sls

View File

@@ -47,20 +47,17 @@ container_list() {
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"

View File

@@ -15,8 +15,4 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
{% if grains['role'] in ['so-node','so-heavynode'] %}
curl -X GET -k -L https://localhost:9200/_cat/indices?v
{% else %}
curl -X GET -L localhost:9200/_cat/indices?v
{% endif %}
curl -X GET -k -L "https://localhost:9200/_cat/indices?v&s=index"

View File

@@ -0,0 +1,13 @@
. /usr/sbin/so-common
wait_for_web_response "http://localhost:5601/app/kibana" "Elastic"
## This hackery will be removed if using Elastic Auth ##
# Let's snag a cookie from Kibana
THECOOKIE=$(curl -c - -X GET http://localhost:5601/ | grep sid | awk '{print $7}')
# Disable certain Features from showing up in the Kibana UI
echo
echo "Setting up default Space:"
curl -b "sid=$THECOOKIE" -L -X PUT "localhost:5601/api/spaces/space/default" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d' {"id":"default","name":"Default","disabledFeatures":["ml","enterpriseSearch","siem","logs","infrastructure","apm","uptime","monitoring","stackAlerts","actions","fleet"]} ' >> /opt/so/log/kibana/misc.log
echo

View File

@@ -0,0 +1,25 @@
#!/bin/bash
#
# Copyright 2014,2015,2016,2017,2018,2019,2020,2021 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 NODEIP = salt['pillar.get']('elasticsearch:mainip', '') -%}
. /usr/sbin/so-common
if [ "$1" == "" ]; then
for i in $(curl -s -L http://{{ NODEIP }}:9600/_node/stats | jq .pipelines | jq '. | to_entries | .[].key' | sed 's/\"//g'); do echo ${i^}:; curl -s localhost:9600/_node/stats | jq .pipelines.$i.events; done
else
curl -s -L http://{{ NODEIP }}:9600/_node/stats | jq .pipelines.$1.events
fi

View File

@@ -0,0 +1,25 @@
#!/bin/bash
#
# Copyright 2014,2015,2016,2017,2018,2019,2020,2021 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 NODEIP = salt['pillar.get']('elasticsearch:mainip', '') -%}
. /usr/sbin/so-common
if [ "$1" == "" ]; then
curl -s -L http://{{ NODEIP }}:9600/_node/stats | jq .pipelines
else
curl -s -L http://{{ NODEIP }}:9600/_node/stats | jq .pipelines.$1
fi

0
salt/common/tools/sbin/so-monitor-add Normal file → Executable file
View File

0
salt/common/tools/sbin/so-playbook-sigma-refresh Normal file → Executable file
View File

View File

@@ -17,4 +17,8 @@
. /usr/sbin/so-common
# Check to see if we are already running
IS_RUNNING=$(ps aux | pgrep -f "so-playbook-sync" | wc -l)
[ "$IS_RUNNING" -gt 3 ] && echo "$(date) - Multiple Playbook Sync processes already running...exiting." && exit 0
docker exec so-soctopus python3 playbook_play-sync.py

6
salt/common/tools/sbin/so-raid-status Normal file → Executable file
View File

@@ -66,11 +66,13 @@ mkdir -p /opt/so/log/raid
{%- if grains['sosmodel'] in ['SOSMN', 'SOSSNNV'] %}
#check_boss_raid
check_software_raid
echo "osraid=$BOSSRAID nsmraid=$SWRAID" > /opt/so/log/raid/status.log
#echo "osraid=$BOSSRAID nsmraid=$SWRAID" > /opt/so/log/raid/status.log
echo "osraid=1 nsmraid=$SWRAID" > /opt/so/log/raid/status.log
{%- elif grains['sosmodel'] in ['SOS1000F', 'SOS1000', 'SOSSN7200', 'SOS10K', 'SOS4000'] %}
#check_boss_raid
check_lsi_raid
echo "osraid=$BOSSRAID nsmraid=$LSIRAID" > /opt/so/log/raid/status.log
#echo "osraid=$BOSSRAID nsmraid=$LSIRAID" > /opt/so/log/raid/status.log
echo "osraid=1 nsmraid=$LSIRAID" > /opt/so/log/raid/status.log
{%- else %}
exit 0
{%- endif %}

27
salt/common/tools/sbin/so-rule Normal file → Executable file
View File

@@ -37,11 +37,9 @@ def print_err(string: str):
def check_apply(args: dict, prompt: bool = True):
cmd_arr = ['salt-call', 'state.apply', 'idstools', 'queue=True']
if args.apply:
print('Configuration updated. Applying idstools state...')
return subprocess.run(cmd_arr)
print('Configuration updated. Applying changes:')
return apply()
else:
if prompt:
message = 'Configuration updated. Would you like to apply your changes now? (y/N) '
@@ -51,12 +49,24 @@ def check_apply(args: dict, prompt: bool = True):
if answer.lower() in [ 'n', '' ]:
return 0
else:
print('Applying idstools state...')
return subprocess.run(cmd_arr)
print('Applying changes:')
return apply()
else:
return 0
def apply():
salt_cmd = ['salt-call', 'state.apply', '-l', 'quiet', 'idstools.sync_files', 'queue=True']
update_cmd = ['so-rule-update']
print('Syncing config files...')
cmd = subprocess.run(salt_cmd, stdout=subprocess.DEVNULL)
if cmd.returncode == 0:
print('Updating rules...')
return subprocess.run(update_cmd).returncode
else:
return cmd.returncode
def find_minion_pillar() -> str:
regex = '^.*_(manager|managersearch|standalone|import|eval)\.sls$'
@@ -442,10 +452,7 @@ def main():
modify.print_help()
sys.exit(0)
if isinstance(exit_code, subprocess.CompletedProcess):
sys.exit(exit_code.returncode)
else:
sys.exit(exit_code)
sys.exit(exit_code)
if __name__ == '__main__':

View File

@@ -115,8 +115,8 @@ clean() {
}
# Check to see if we are already running
IS_RUNNING=$(ps aux | grep "so-sensor-clean" | grep -v grep | wc -l)
[ "$IS_RUNNING" -gt 2 ] && echo "$(date) - $IS_RUNNING sensor clean script processes running...exiting." >>$LOG && exit 0
IS_RUNNING=$(ps aux | pgrep -f "so-sensor-clean" | wc -l)
[ "$IS_RUNNING" -gt 3 ] && echo "$(date) - $IS_RUNNING sensor clean script processes running...exiting." >>$LOG && exit 0
if [ "$CUR_USAGE" -gt "$CRIT_DISK_USAGE" ]; then
while [ "$CUR_USAGE" -gt "$CRIT_DISK_USAGE" ]; do

View File

@@ -4,90 +4,184 @@
if [[ $1 =~ ^(-q|--quiet) ]]; then
quiet=true
elif [[ $1 =~ ^(-v|--verbose) ]]; then
verbose=true
fi
sshd_config=/etc/ssh/sshd_config
temp_config=/tmp/sshd_config
before=
after=
reload_required=false
change_header_printed=false
print_sshd_t() {
check_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
before=$grep_out
}
print_diff() {
local diff
diff=$(diff -dbB <(echo $before) <(echo $after) | awk 'NR>1')
if [[ -n $diff ]]; then
if [[ $change_header_printed == false ]]; then
printf '%s\n' '' "Changes" '-------' ''
change_header_printed=true
fi
echo -e "$diff\n"
fi
}
replace_or_add() {
local type=$1
local string=$2
if grep -q "$type" $temp_config; then
sed -i "/$type .*/d" $temp_config
fi
printf "%s\n\n" "$string" >> $temp_config
reload_required=true
}
test_config() {
local msg
msg=$(sshd -t -f $temp_config)
local ret=$?
if [[ -n $msg ]]; then
echo "Error found in temp sshd config:"
echo $msg
fi
return $ret
}
main() {
if ! [[ $quiet ]]; then echo "Copying current config to $temp_config"; fi
cp $sshd_config $temp_config
# Add newline to ssh for legibility
echo "" >> $temp_config
# Ciphers
check_sshd_t "ciphers"
local bad_ciphers=(
"3des-cbc"
"aes128-cbc"
"aes192-cbc"
"aes256-cbc"
"arcfour"
"arcfour128"
"arcfour256"
"blowfish-cbc"
"cast128-cbc"
)
local cipher_string=$before
for cipher in "${bad_ciphers[@]}"; do
cipher_string=$(echo "$cipher_string" | sed "s/${cipher}\(,\|\$\)//g" | sed 's/,$//')
done
after=$cipher_string
if [[ $verbose ]]; then print_diff; fi
if [[ $before != "$after" ]]; then
replace_or_add "ciphers" "$cipher_string" && test_config || exit 1
fi
# KexAlgorithms
check_sshd_t "kexalgorithms"
local bad_kexalgs=(
"diffie-hellman-group-exchange-sha1"
"diffie-hellman-group-exchange-sha256"
"diffie-hellman-group1-sha1"
"diffie-hellman-group14-sha1"
"ecdh-sha2-nistp256"
"ecdh-sha2-nistp521"
"ecdh-sha2-nistp384"
)
local kexalg_string=$before
for kexalg in "${bad_kexalgs[@]}"; do
kexalg_string=$(echo "$kexalg_string" | sed "s/${kexalg}\(,\|\$\)//g" | sed 's/,$//')
done
after=$kexalg_string
if [[ $verbose ]]; then print_diff; fi
if [[ $before != "$after" ]]; then
replace_or_add "kexalgorithms" "$kexalg_string" && test_config || exit 1
fi
# Macs
check_sshd_t "macs"
local bad_macs=(
"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"
)
local macs_string=$before
for mac in "${bad_macs[@]}"; do
macs_string=$(echo "$macs_string" | sed "s/${mac}\(,\|\$\)//g" | sed 's/,$//')
done
after=$macs_string
if [[ $verbose ]]; then print_diff; fi
if [[ $before != "$after" ]]; then
replace_or_add "macs" "$macs_string" && test_config || exit 1
fi
# HostKeyAlgorithms
check_sshd_t "hostkeyalgorithms"
local optional_suffix_regex_hka="\(-cert-v01@openssh.com\)\?"
local bad_hostkeyalg_list=(
"ecdsa-sha2-nistp256"
"ecdsa-sha2-nistp384"
"ecdsa-sha2-nistp521"
"ssh-rsa"
"ssh-dss"
)
local hostkeyalg_string=$before
for alg in "${bad_hostkeyalg_list[@]}"; do
hostkeyalg_string=$(echo "$hostkeyalg_string" | sed "s/${alg}${optional_suffix_regex_hka}\(,\|\$\)//g" | sed 's/,$//')
done
after=$hostkeyalg_string
if [[ $verbose ]]; then print_diff; fi
if [[ $before != "$after" ]]; then
replace_or_add "hostkeyalgorithms" "$hostkeyalg_string" && test_config || exit 1
fi
if [[ $reload_required == true ]]; then
mv -f $temp_config $sshd_config
if ! [[ $quiet ]]; then echo "Reloading sshd to load config changes"; fi
systemctl reload sshd
echo "[ WARNING ] Any new ssh sessions will need to remove and reaccept the host key fingerprint for this server before reconnecting."
else
after=$grep_out
fi
echo $grep_out
}
print_msg() {
local msg=$1
if ! [[ $quiet ]]; then
printf "%s\n" \
"----" \
"$msg" \
"----" \
""
if ! [[ $quiet ]]; then echo "No changes made to temp file, cleaning up"; fi
rm -f $temp_config
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 %}
main

0
salt/common/tools/sbin/so-suricata-testrule Normal file → Executable file
View File

View File

@@ -24,11 +24,11 @@ show_stats() {
echo
echo "Average throughput:"
echo
docker exec so-zeek env -i PATH=/bin:/usr/bin:/sbin:/usr/sbin:/opt/bin:/usr/local/bin:/usr/local/sbin runuser -l zeek -c '/opt/zeek/bin/zeekctl capstats'
docker exec so-zeek env -i PATH=/bin:/usr/bin:/sbin:/usr/sbin:/opt/bin:/usr/local/bin:/usr/local/sbin /opt/zeek/bin/zeekctl capstats
echo
echo "Average packet loss:"
echo
docker exec so-zeek env -i PATH=/bin:/usr/bin:/sbin:/usr/sbin:/opt/bin:/usr/local/bin:/usr/local/sbin runuser -l zeek -c '/opt/zeek/bin/zeekctl netstats'
docker exec so-zeek env -i PATH=/bin:/usr/bin:/sbin:/usr/sbin:/opt/bin:/usr/local/bin:/usr/local/sbin /opt/zeek/bin/zeekctl netstats
echo
}

View File

@@ -19,12 +19,11 @@
UPDATE_DIR=/tmp/sogh/securityonion
INSTALLEDVERSION=$(cat /etc/soversion)
POSTVERSION=$INSTALLEDVERSION
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
WHATWOULDYOUSAYYAHDOHERE=soup
add_common() {
cp $UPDATE_DIR/salt/common/tools/sbin/so-common $DEFAULT_SALT_DIR/salt/common/tools/sbin/
@@ -101,19 +100,6 @@ update_registry() {
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}')
if [[ "$AIRGAP" == "True" ]]; then
is_airgap=0
UPDATE_DIR=/tmp/soagupdate/SecurityOnion
AGDOCKER=/tmp/soagupdate/docker
AGREPO=/tmp/soagupdate/Packages
else
is_airgap=1
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\"."
@@ -174,6 +160,34 @@ check_log_size_limit() {
fi
}
check_os_updates() {
# Check to see if there are OS updates
NEEDUPDATES="We have detected missing operating system (OS) updates. Do you want to install these OS updates now? This could take a while depending on the size of your grid and how many packages are missing, but it is recommended to keep your system updated."
if [[ $OS == 'ubuntu' ]]; then
OSUPDATES=$(apt list --upgradeable | grep -v "^Listing..." | grep -v "^docker-ce" | grep -v "^wazuh-" | grep -v "^salt-" | wc -l)
else
OSUPDATES=$(yum -q list updates | wc -l)
fi
if [[ "$OSUPDATES" -gt 0 ]]; then
echo $NEEDUPDATES
echo ""
read -p "Press U to update OS packages (recommended), C to continue without updates, or E to exit: " confirm
if [[ "$confirm" == [cC] ]]; then
echo "Continuing without updating packages"
elif [[ "$confirm" == [uU] ]]; then
echo "Applying Grid Updates"
salt \* -b 5 state.apply patch.os queue=True
else
echo "Exiting soup"
exit 0
fi
else
echo "Looks like you have an updated OS"
fi
}
clean_dockers() {
# Place Holder for cleaning up old docker images
echo "Trying to clean up old dockers."
@@ -199,21 +213,11 @@ clone_to_tmp() {
fi
}
copy_new_files() {
# Copy new files over to the salt dir
cd $UPDATE_DIR
rsync -a salt $DEFAULT_SALT_DIR/
rsync -a pillar $DEFAULT_SALT_DIR/
chown -R socore:socore $DEFAULT_SALT_DIR/
chmod 755 $DEFAULT_SALT_DIR/pillar/firewall/addfirewall.sh
cd /tmp
}
generate_and_clean_tarballs() {
local new_version
new_version=$(cat $UPDATE_DIR/VERSION)
[ -d /opt/so/repo ] || mkdir -p /opt/so/repo
tar -czf "/opt/so/repo/$new_version.tar.gz" "$UPDATE_DIR"
tar -czf "/opt/so/repo/$new_version.tar.gz" -C "$UPDATE_DIR" .
find "/opt/so/repo" -type f -not -name "$new_version.tar.gz" -exec rm -rf {} \;
}
@@ -243,29 +247,53 @@ masterunlock() {
fi
}
playbook() {
echo "Applying playbook settings"
if [[ "$INSTALLEDVERSION" =~ rc.1 ]]; then
salt-call state.apply playbook.OLD_db_init
rm -f /opt/so/rules/elastalert/playbook/*.yaml
so-playbook-ruleupdate >> /root/soup_playbook_rule_update.log 2>&1 &
fi
if [[ "$INSTALLEDVERSION" != 2.3.30 ]]; then
so-playbook-sigma-refresh >> /root/soup_playbook_sigma_refresh.log 2>&1 &
fi
preupgrade_changes_2.3.50_repo() {
# We made repo changes in 2.3.50 and this prepares for that on upgrade
echo "Checking to see if 2.3.50 repo changes are needed."
[[ "$INSTALLEDVERSION" == 2.3.30 || "$INSTALLEDVERSION" == 2.3.40 ]] && up_2.3.3X_to_2.3.50_repo
}
pillar_changes() {
preupgrade_changes() {
# This function is to add any new pillar items if needed.
echo "Checking to see if pillar changes are needed."
echo "Checking to see if changes are needed."
[[ "$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 ]] && up_2.3.0_to_2.3.20
[[ "$INSTALLEDVERSION" == 2.3.20 || "$INSTALLEDVERSION" == 2.3.21 ]] && up_2.3.2X_to_2.3.30
[[ "$INSTALLEDVERSION" == 2.3.30 || "$INSTALLEDVERSION" == 2.3.40 ]] && up_2.3.3X_to_2.3.50
}
postupgrade_changes() {
# This function is to add any new pillar items if needed.
echo "Running post upgrade processes."
[[ "$POSTVERSION" =~ rc.1 ]] && post_rc1_to_rc2
[[ "$POSTVERSION" == 2.3.20 || "$POSTVERSION" == 2.3.21 ]] && post_2.3.2X_to_2.3.30
[[ "$POSTVERSION" == 2.3.30 ]] && post_2.3.30_to_2.3.40
}
post_rc1_to_2.3.21() {
salt-call state.apply playbook.OLD_db_init
rm -f /opt/so/rules/elastalert/playbook/*.yaml
so-playbook-ruleupdate >> /root/soup_playbook_rule_update.log 2>&1 &
POSTVERSION=2.3.21
}
post_2.3.2X_to_2.3.30() {
so-playbook-sigma-refresh >> /root/soup_playbook_sigma_refresh.log 2>&1 &
POSTVERSION=2.3.30
}
post_2.3.30_to_2.3.40() {
so-playbook-sigma-refresh >> /root/soup_playbook_sigma_refresh.log 2>&1 &
so-kibana-space-defaults
POSTVERSION=2.3.40
}
rc1_to_rc2() {
# Move the static file to global.sls
@@ -296,15 +324,14 @@ rc1_to_rc2() {
done </tmp/nodes.txt
# Add the nodes back using hostname
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}')
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"]}}}}}'
local NAME=$(echo $p | awk '{print $1}')
local EHOSTNAME=$(echo $p | awk -F"_" '{print $1}')
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
INSTALLEDVERSION=rc.2
}
rc2_to_rc3() {
@@ -334,10 +361,10 @@ rc3_to_2.3.0() {
fi
{
echo "redis_settings:"
echo " redis_maxmemory: 827"
echo "playbook:"
echo " api_key: de6639318502476f2fa5aa06f43f51fb389a3d7f"
echo "redis_settings:"
echo " redis_maxmemory: 827"
echo "playbook:"
echo " api_key: de6639318502476f2fa5aa06f43f51fb389a3d7f"
} >> /opt/so/saltstack/local/pillar/global.sls
sed -i 's/playbook:/playbook_db:/' /opt/so/saltstack/local/pillar/secrets.sls
@@ -385,7 +412,6 @@ up_2.3.0_to_2.3.20(){
fi
INSTALLEDVERSION=2.3.20
}
up_2.3.2X_to_2.3.30() {
@@ -395,11 +421,11 @@ up_2.3.2X_to_2.3.30() {
sed -i -r "s/ (\{\{.*}})$/ '\1'/g" "$pillar"
done
# Change the IMAGEREPO
# Change the IMAGEREPO
sed -i "/ imagerepo: 'securityonion'/c\ imagerepo: 'security-onion-solutions'" /opt/so/saltstack/local/pillar/global.sls
sed -i "/ imagerepo: securityonion/c\ imagerepo: 'security-onion-solutions'" /opt/so/saltstack/local/pillar/global.sls
# Strelka rule repo pillar addition
# Strelka rule repo pillar addition
if [ $is_airgap -eq 0 ]; then
# Add manager as default Strelka YARA rule repo
sed -i "/^strelka:/a \\ repos: \n - https://$HOSTNAME/repo/rules/strelka" /opt/so/saltstack/local/pillar/global.sls;
@@ -408,18 +434,86 @@ up_2.3.2X_to_2.3.30() {
sed -i "/^strelka:/a \\ repos: \n - https://github.com/Neo23x0/signature-base" /opt/so/saltstack/local/pillar/global.sls;
fi
check_log_size_limit
INSTALLEDVERSION=2.3.30
}
space_check() {
# Check to see if there is enough space
up_2.3.3X_to_2.3.50_repo() {
echo "Performing 2.3.50 repo actions."
if [[ "$OS" == "centos" ]]; then
# Import GPG Keys
gpg_rpm_import
echo "Disabling fastestmirror."
disable_fastestmirror
echo "Deleting unneeded repo files."
DELREPOS=('CentOS-Base' 'CentOS-CR' 'CentOS-Debuginfo' 'docker-ce' 'CentOS-fasttrack' 'CentOS-Media' 'CentOS-Sources' 'CentOS-Vault' 'CentOS-x86_64-kernel' 'epel' 'epel-testing' 'saltstack' 'wazuh')
for DELREPO in "${DELREPOS[@]}"; do
if [[ -f "/etc/yum.repos.d/$DELREPO.repo" ]]; then
echo "Deleting $DELREPO.repo"
rm -f "/etc/yum.repos.d/$DELREPO.repo"
fi
done
if [ $is_airgap -eq 1 ]; then
# Copy the new repo file if not airgap
cp $UPDATE_DIR/salt/repo/client/files/centos/securityonion.repo /etc/yum.repos.d/
yum clean all
yum repolist
fi
fi
}
up_2.3.3X_to_2.3.50() {
cat <<EOF > /tmp/supersed.txt
/so-zeek:/ {
p;
n;
/shards:/ {
p;
n;
/warm:/ {
p;
n;
/close:/ {
s/close: 365/close: 45/;
p;
n;
/delete:/ {
s/delete: 45/delete: 365/;
p;
d;
}
}
}
}
}
p;
EOF
sed -n -i -f /tmp/supersed.txt /opt/so/saltstack/local/pillar/global.sls
rm /tmp/supersed.txt
INSTALLEDVERSION=2.3.50
}
verify_upgradespace() {
CURRENTSPACE=$(df -BG / | grep -v Avail | awk '{print $4}' | sed 's/.$//')
if [ "$CURRENTSPACE" -lt "10" ]; then
echo "You are low on disk space. Upgrade will try and clean up space.";
clean_dockers
echo "You are low on disk space."
return 1
else
echo "Plenty of space for upgrading"
return 0
fi
}
upgrade_space() {
if ! verify_upgradespace; then
clean_dockers
if ! verify_upgradespace; then
echo "There is not enough space to perform the upgrade. Please free up space and try again"
exit 1
fi
else
echo "You have enough space for upgrade. Proceeding with soup."
fi
}
thehive_maint() {
@@ -427,16 +521,16 @@ thehive_maint() {
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
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."
@@ -467,87 +561,96 @@ update_version() {
# Update the version to the latest
echo "Updating the Security Onion version file."
echo $NEWVERSION > /etc/soversion
echo $HOTFIXVERSION > /etc/sohotfix
sed -i "/ soversion:/c\ soversion: $NEWVERSION" /opt/so/saltstack/local/pillar/global.sls
}
upgrade_check() {
# Let's make sure we actually need to update.
NEWVERSION=$(cat $UPDATE_DIR/VERSION)
if [ "$INSTALLEDVERSION" == "$NEWVERSION" ]; then
# Let's make sure we actually need to update.
NEWVERSION=$(cat $UPDATE_DIR/VERSION)
HOTFIXVERSION=$(cat $UPDATE_DIR/HOTFIX)
CURRENTHOTFIX=$(cat /etc/sohotfix 2>/dev/null)
if [ "$INSTALLEDVERSION" == "$NEWVERSION" ]; then
echo "Checking to see if there are hotfixes needed"
if [ "$HOTFIXVERSION" == "$CURRENTHOTFIX" ]; then
echo "You are already running the latest version of Security Onion."
exit 0
fi
else
echo "We need to apply a hotfix"
is_hotfix=true
fi
else
is_hotfix=false
fi
}
upgrade_check_salt() {
NEWSALTVERSION=$(grep version: $UPDATE_DIR/salt/salt/master.defaults.yaml | awk {'print $2'})
if [ "$INSTALLEDSALTVERSION" == "$NEWSALTVERSION" ]; then
echo "You are already running the correct version of Salt for Security Onion."
else
UPGRADESALT=1
fi
NEWSALTVERSION=$(grep version: $UPDATE_DIR/salt/salt/master.defaults.yaml | awk {'print $2'})
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 ""
# If CentOS
if [ "$OS" == "centos" ]; then
echo "Removing yum versionlock for Salt."
echo ""
yum versionlock delete "salt-*"
echo "Updating Salt packages and restarting services."
echo ""
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-*"
# Else do Ubuntu things
elif [ "$OS" == "ubuntu" ]; then
echo "Removing apt hold for Salt."
echo ""
apt-mark unhold "salt-common"
apt-mark unhold "salt-master"
apt-mark unhold "salt-minion"
echo "Updating Salt packages and restarting services."
echo ""
sh $UPDATE_DIR/salt/salt/scripts/bootstrap-salt.sh -F -M -x python3 stable "$NEWSALTVERSION"
echo "Applying apt hold for Salt."
echo ""
apt-mark hold "salt-common"
apt-mark hold "salt-master"
apt-mark hold "salt-minion"
fi
SALTUPGRADED=True
echo "Performing upgrade of Salt from $INSTALLEDSALTVERSION to $NEWSALTVERSION."
echo ""
# If CentOS
if [[ $OS == 'centos' ]]; then
echo "Removing yum versionlock for Salt."
echo ""
yum versionlock delete "salt-*"
echo "Updating Salt packages and restarting services."
echo ""
sh $UPDATE_DIR/salt/salt/scripts/bootstrap-salt.sh -r -F -M -x python3 stable "$NEWSALTVERSION"
echo "Applying yum versionlock for Salt."
echo ""
yum versionlock add "salt-*"
# Else do Ubuntu things
elif [[ $OS == 'ubuntu' ]]; then
echo "Removing apt hold for Salt."
echo ""
apt-mark unhold "salt-common"
apt-mark unhold "salt-master"
apt-mark unhold "salt-minion"
echo "Updating Salt packages and restarting services."
echo ""
sh $UPDATE_DIR/salt/salt/scripts/bootstrap-salt.sh -F -M -x python3 stable "$NEWSALTVERSION"
echo "Applying apt hold for Salt."
echo ""
apt-mark hold "salt-common"
apt-mark hold "salt-master"
apt-mark hold "salt-minion"
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}')
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}')
# 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}')
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 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."
exit 0
fi
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 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."
exit 0
fi
}
main () {
echo "### Preparing soup at `date` ###"
while getopts ":b" opt; do
case "$opt" in
b ) # process option b
@@ -557,9 +660,10 @@ while getopts ":b" opt; do
echo "Batch size must be a number greater than 0."
exit 1
fi
;;
\? ) echo "Usage: cmd [-b]"
;;
;;
\? )
echo "Usage: cmd [-b]"
;;
esac
done
@@ -573,6 +677,8 @@ check_airgap
echo "Found that Security Onion $INSTALLEDVERSION is currently installed."
echo ""
set_os
set_palette
check_elastic_license
echo ""
if [ $is_airgap -eq 0 ]; then
# Let's mount the ISO since this is airgap
@@ -583,7 +689,7 @@ else
rm -rf $UPDATE_DIR
clone_to_tmp
fi
check_os_updates
echo ""
echo "Verifying we have the latest soup script."
verify_latest_update_script
@@ -599,153 +705,190 @@ fi
echo "Let's see if we need to update Security Onion."
upgrade_check
space_check
upgrade_space
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 ""
# 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_hotfix" == "true" ]; then
echo "Applying $HOTFIXVERSION"
copy_new_files
echo ""
update_version
salt-call state.highstate -l info queue=True
else
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
update_centos_repo
yum clean all
check_os_updates
else
update_registry
update_docker_containers "soup"
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 "Stopping Salt Minion service."
systemctl stop salt-minion
echo "Killing any remaining Salt Minion processes."
pkill -9 -ef /usr/bin/salt-minion
echo ""
fi
echo "Making pillar changes."
pillar_changes
echo ""
if [ $is_airgap -eq 0 ]; then
echo "Updating Rule Files to the Latest."
update_airgap_rules
fi
# Only update the repo if its airgap
if [[ $is_airgap -eq 0 ]] && [[ "$UPGRADESALT" != "1" ]]; then
update_centos_repo
fi
echo ""
echo "Copying new Security Onion code from $UPDATE_DIR to $DEFAULT_SALT_DIR."
copy_new_files
echo ""
update_version
echo ""
echo "Locking down Salt Master for upgrade"
masterlock
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 "Stopping Salt Master service."
systemctl stop salt-master
echo ""
echo "Regenerating Osquery Packages.... This will take several minutes."
salt-call state.apply fleet.event_gen-packages -l info queue=True
preupgrade_changes_2.3.50_repo
# Does salt need upgraded. If so update it.
if [ "$UPGRADESALT" == "1" ]; then
echo "Upgrading Salt"
# Update the repo files so it can actually upgrade
upgrade_salt
fi
echo "Checking if Salt was upgraded."
echo ""
fi
# Check that Salt was upgraded
SALTVERSIONPOSTUPGRADE=$(salt --versions-report | grep Salt: | awk {'print $2'})
if [[ "$SALTVERSIONPOSTUPGRADE" != "$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 ""
echo "Running a highstate to complete the Security Onion upgrade on this manager. This could take several minutes."
salt-call state.highstate -l info queue=True
echo ""
echo "Upgrade from $INSTALLEDVERSION to $NEWVERSION complete."
echo ""
echo "Stopping Salt Master to remove ACL"
systemctl stop salt-master
masterunlock
echo ""
echo "Starting Salt Master service."
systemctl start salt-master
echo "Running a highstate. This could take several minutes."
salt-call state.highstate -l info queue=True
playbook
unmount_update
thehive_maint
if [ "$UPGRADESALT" == "1" ]; then
preupgrade_changes
echo ""
echo "Upgrading Salt on the remaining Security Onion nodes from $INSTALLEDSALTVERSION to $NEWSALTVERSION."
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"
echo "Updating Rule Files to the Latest."
update_airgap_rules
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
# Only update the repo if its airgap
if [[ $is_airgap -eq 0 ]] && [[ "$UPGRADESALT" != "1" ]]; then
update_centos_repo
fi
echo ""
echo "Copying new Security Onion code from $UPDATE_DIR to $DEFAULT_SALT_DIR."
copy_new_files
echo ""
update_version
echo ""
echo "Locking down Salt Master for upgrade"
masterlock
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."
salt-call state.highstate -l info queue=True
echo ""
echo "Upgrade from $INSTALLEDVERSION to $NEWVERSION complete."
echo ""
echo "Stopping Salt Master to remove ACL"
systemctl stop salt-master
masterunlock
echo ""
echo "Starting Salt Master service."
systemctl start salt-master
echo "Running a highstate. This could take several minutes."
salt-call state.highstate -l info queue=True
postupgrade_changes
unmount_update
thehive_maint
if [ "$UPGRADESALT" == "1" ]; then
if [ $is_airgap -eq 0 ]; then
echo ""
echo "Cleaning repos on remote Security Onion nodes."
salt -C 'not *_eval and not *_helixsensor and not *_manager and not *_managersearch and not *_standalone and G@os:CentOS' cmd.run "yum clean all"
echo ""
fi
fi
check_sudoers
if [[ -n $lsl_msg ]]; then
case $lsl_msg in
'distributed')
echo "[INFO] The value of log_size_limit in any heavy node minion pillars may be incorrect."
echo " -> We recommend checking and adjusting the values as necessary."
echo " -> Minion pillar directory: /opt/so/saltstack/local/pillar/minions/"
;;
'single-node')
# We can assume the lsl_details array has been set if lsl_msg has this value
echo "[WARNING] The value of log_size_limit (${lsl_details[0]}) does not match the recommended value of ${lsl_details[1]}."
echo " -> We recommend checking and adjusting the value as necessary."
echo " -> File: /opt/so/saltstack/local/pillar/minions/${lsl_details[2]}.sls"
;;
esac
fi
NUM_MINIONS=$(ls /opt/so/saltstack/local/pillar/minions/*_*.sls | wc -l)
if [ $NUM_MINIONS -gt 1 ]; then
cat << EOF
This appears to be a distributed deployment. Other nodes should update themselves at the next Salt highstate (typically within 15 minutes). Do not manually restart anything until you know that all the search/heavy nodes in your deployment are updated. This is especially important if you are using true clustering for Elasticsearch.
Each minion is on a random 15 minute check-in period and things like network bandwidth can be a factor in how long the actual upgrade takes. If you have a heavy node on a slow link, it is going to take a while to get the containers to it. Depending on what changes happened between the versions, Elasticsearch might not be able to talk to said heavy node until the update is complete.
If it looks like youre missing data after the upgrade, please avoid restarting services and instead make sure at least one search node has completed its upgrade. The best way to do this is to run 'sudo salt-call state.highstate' from a search node and make sure there are no errors. Typically if it works on one node it will work on the rest. Forward nodes are less complex and will update as they check in so you can monitor those from the Grid section of SOC.
For more information, please see https://docs.securityonion.net/en/2.3/soup.html#distributed-deployments.
EOF
fi
fi
check_sudoers
if [[ -n $lsl_msg ]]; then
case $lsl_msg in
'distributed')
echo "[INFO] The value of log_size_limit in any heavy node minion pillars may be incorrect."
echo " -> We recommend checking and adjusting the values as necessary."
echo " -> Minion pillar directory: /opt/so/saltstack/local/pillar/minions/"
;;
'single-node')
# We can assume the lsl_details array has been set if lsl_msg has this value
echo "[WARNING] The value of log_size_limit (${lsl_details[0]}) does not match the recommended value of ${lsl_details[1]}."
echo " -> We recommend checking and adjusting the value as necessary."
echo " -> File: /opt/so/saltstack/local/pillar/minions/${lsl_details[2]}.sls"
;;
esac
fi
echo "### soup has been served at `date` ###"
}
main "$@" | tee /dev/fd/3
cat << EOF
SOUP - Security Onion UPdater
Please review the following for more information about the update process and recent updates:
https://docs.securityonion.net/soup
https://blog.securityonion.net
Press Enter to continue or Ctrl-C to cancel.
EOF
read input
main "$@" | tee -a $SOUP_LOG

View File

@@ -4,12 +4,11 @@
{%- if grains['role'] in ['so-node', 'so-heavynode'] %}
{%- set ELASTICSEARCH_HOST = salt['pillar.get']('elasticsearch:mainip', '') -%}
{%- set ELASTICSEARCH_PORT = salt['pillar.get']('elasticsearch:es_port', '') -%}
{%- set LOG_SIZE_LIMIT = salt['pillar.get']('elasticsearch:log_size_limit', '') -%}
{%- elif grains['role'] in ['so-eval', 'so-managersearch', 'so-standalone'] %}
{%- set ELASTICSEARCH_HOST = salt['pillar.get']('manager:mainip', '') -%}
{%- set ELASTICSEARCH_PORT = salt['pillar.get']('manager:es_port', '') -%}
{%- set LOG_SIZE_LIMIT = salt['pillar.get']('manager:log_size_limit', '') -%}
{%- endif -%}
{%- set LOG_SIZE_LIMIT = salt['pillar.get']('elasticsearch:log_size_limit', '') -%}
# Copyright 2014,2015,2016,2017,2018,2019,2020,2021 Security Onion Solutions, LLC
#
@@ -35,7 +34,7 @@ overlimit() {
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)
INDICES=$(curl -s -k https://{{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-)"
}
@@ -50,12 +49,12 @@ while overlimit && closedindices; do
# 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.
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)
OLDEST_INDEX=$(curl -s -k https://{{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.
curl -XDELETE -k {% if grains['role'] in ['so-node','so-heavynode'] %}https://{% endif %}{{ELASTICSEARCH_HOST}}:{{ELASTICSEARCH_PORT}}/${OLDEST_INDEX}
curl -XDELETE -k https://{{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

@@ -12,11 +12,11 @@ client:
- {{elasticsearch}}
port: 9200
url_prefix:
{% if grains['role'] in ['so-node', 'so-heavynode'] %} use_ssl: True{% else %} use_ssl: False{% endif %}
use_ssl: True
certificate:
client_cert:
client_key:
{% if grains['role'] in ['so-node', 'so-heavynode'] %} ssl_no_validate: True{% else %} ssl_no_validate: False{% endif %}
ssl_no_validate: True
http_auth:
timeout: 30
master_only: False

View File

@@ -1,86 +1,9 @@
{% from 'allowed_states.map.jinja' import allowed_states %}
{% if sls in allowed_states %}
{% 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','2.3.0','2.3.1','2.3.2','2.3.10','2.3.20']%}
{% for VERSION in OLDVERSIONS %}
remove_images_{{ VERSION }}:
docker_image.absent:
- force: True
- images:
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-acng:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-thehive-cortex:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-curator:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-domainstats:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-elastalert:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-elasticsearch:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-filebeat:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-fleet:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-fleet-launcher:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-freqserver:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-grafana:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-idstools:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-influxdb:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-kibana:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-kratos:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-logstash:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-minio:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-mysql:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-nginx:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-pcaptools:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-playbook:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-redis:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-soc:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-soctopus:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-steno:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-strelka-frontend:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-strelka-manager:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-strelka-backend:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-strelka-filestream:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-suricata:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-telegraf:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-thehive:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-thehive-es:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-wazuh:{{ VERSION }}'
- '{{ MANAGER }}:5000/{{ IMAGEREPO }}/so-zeek:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-acng:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-thehive-cortex:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-curator:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-domainstats:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-elastalert:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-elasticsearch:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-filebeat:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-fleet:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-fleet-launcher:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-freqserver:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-grafana:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-idstools:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-influxdb:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-kibana:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-kratos:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-logstash:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-minio:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-mysql:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-nginx:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-pcaptools:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-playbook:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-redis:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-soc:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-soctopus:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-steno:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-strelka-frontend:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-strelka-manager:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-strelka-backend:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-strelka-filestream:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-suricata:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-telegraf:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-thehive:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-thehive-es:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-wazuh:{{ VERSION }}'
- '{{ MANAGER }}:5000/securityonion/so-zeek:{{ VERSION }}'
{% endfor %}
prune_images:
cmd.run:
- name: so-docker-prune
{% else %}

View File

@@ -16,8 +16,8 @@ elastalert:
#aws_region: us-east-1
#profile: test
#es_url_prefix: elasticsearch
#use_ssl: True
#verify_certs: True
use_ssl: true
verify_certs: false
#es_send_get_body_as: GET
#es_username: someusername
#es_password: somepassword

View File

@@ -4,6 +4,9 @@ from time import gmtime, strftime
import requests,json
from elastalert.alerts import Alerter
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
class PlaybookESAlerter(Alerter):
"""
Use matched data to create alerts in elasticsearch
@@ -14,10 +17,10 @@ class PlaybookESAlerter(Alerter):
def alert(self, matches):
for match in matches:
today = strftime("%Y.%m.%d", gmtime())
timestamp = strftime("%Y-%m-%d"'T'"%H:%M:%S", gmtime())
timestamp = strftime("%Y-%m-%d"'T'"%H:%M:%S"'.000Z', gmtime())
headers = {"Content-Type": "application/json"}
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/"
url = f"https://{self.rule['elasticsearch_host']}/so-playbook-alerts-{today}/_doc/"
requests.post(url, data=json.dumps(payload), headers=headers, verify=False)
def get_info(self):

View File

@@ -104,8 +104,9 @@ elastaconf:
wait_for_elasticsearch:
module.run:
- http.wait_for_successful_query:
- url: 'http://{{MANAGER}}:9200/_cat/indices/.kibana*'
- url: 'https://{{MANAGER}}:9200/_cat/indices/.kibana*'
- wait_for: 180
- verify_ssl: False
so-elastalert:
docker_container.running:

View File

@@ -1,6 +1,5 @@
{%- set NODE_ROUTE_TYPE = salt['pillar.get']('elasticsearch:node_route_type', 'hot') %}
{%- 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') %}
@@ -10,12 +9,6 @@
{%- set NODE_ROLES = salt['pillar.get']('elasticsearch:node_roles', ['data', 'ingest']) %}
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
# This is a test -- if this is here, then the volume is mounted correctly.
path.logs: /var/log/elasticsearch
action.destructive_requires_name: true
transport.bind_host: 0.0.0.0
@@ -25,27 +18,23 @@ cluster.routing.allocation.disk.threshold_enabled: true
cluster.routing.allocation.disk.watermark.low: 95%
cluster.routing.allocation.disk.watermark.high: 98%
cluster.routing.allocation.disk.watermark.flood_stage: 98%
{%- if FEATURES is sameas true %}
xpack.ml.enabled: false
#xpack.security.enabled: false
#xpack.security.transport.ssl.enabled: true
#xpack.security.transport.ssl.verification_mode: none
#xpack.security.transport.ssl.key: /usr/share/elasticsearch/config/elasticsearch.key
#xpack.security.transport.ssl.certificate: /usr/share/elasticsearch/config/elasticsearch.crt
#xpack.security.transport.ssl.certificate_authorities: [ "/usr/share/elasticsearch/config/ca.crt" ]
#{%- if grains['role'] in ['so-node','so-heavynode'] %}
#xpack.security.http.ssl.enabled: true
#xpack.security.http.ssl.client_authentication: none
#xpack.security.http.ssl.key: /usr/share/elasticsearch/config/elasticsearch.key
#xpack.security.http.ssl.certificate: /usr/share/elasticsearch/config/elasticsearch.crt
#xpack.security.http.ssl.certificate_authorities: /usr/share/elasticsearch/config/ca.crt
#{%- endif %}
#xpack.security.authc:
# anonymous:
# username: anonymous_user
# roles: superuser
# authz_exception: true
{%- endif %}
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: none
xpack.security.transport.ssl.key: /usr/share/elasticsearch/config/elasticsearch.key
xpack.security.transport.ssl.certificate: /usr/share/elasticsearch/config/elasticsearch.crt
xpack.security.transport.ssl.certificate_authorities: [ "/usr/share/elasticsearch/config/ca.crt" ]
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.client_authentication: none
xpack.security.http.ssl.key: /usr/share/elasticsearch/config/elasticsearch.key
xpack.security.http.ssl.certificate: /usr/share/elasticsearch/config/elasticsearch.crt
xpack.security.http.ssl.certificate_authorities: /usr/share/elasticsearch/config/ca.crt
xpack.security.authc:
anonymous:
username: anonymous_user
roles: superuser
authz_exception: true
node.name: {{ grains.host }}
script.max_compilations_rate: 1000/1m
{%- if TRUECLUSTER is sameas true %}

View File

@@ -32,8 +32,6 @@
{ "rename": { "field": "category", "target_field": "event.category", "ignore_failure": true, "ignore_missing": true } },
{ "rename": { "field": "message2.community_id", "target_field": "network.community_id", "ignore_failure": true, "ignore_missing": true } },
{ "lowercase": { "field": "event.dataset", "ignore_failure": true, "ignore_missing": true } },
{ "convert": { "field": "destination.port", "type": "integer", "ignore_failure": true, "ignore_missing": true } },
{ "convert": { "field": "source.port", "type": "integer", "ignore_failure": true, "ignore_missing": true } },
{ "convert": { "field": "log.id.uid", "type": "string", "ignore_failure": true, "ignore_missing": true } },
{ "convert": { "field": "agent.id", "type": "string", "ignore_failure": true, "ignore_missing": true } },
{ "convert": { "field": "event.severity", "type": "integer", "ignore_failure": true, "ignore_missing": true } },

View File

@@ -0,0 +1,70 @@
{
"description" : "http.status",
"processors" : [
{ "set": { "if": "ctx.http.status_code == 100", "field": "http.status_message", "value": "Continue" } },
{ "set": { "if": "ctx.http.status_code == 101", "field": "http.status_message", "value": "Switching Protocols" } },
{ "set": { "if": "ctx.http.status_code == 102", "field": "http.status_message", "value": "Processing" } },
{ "set": { "if": "ctx.http.status_code == 103", "field": "http.status_message", "value": "Early Hints" } },
{ "set": { "if": "ctx.http.status_code == 200", "field": "http.status_message", "value": "OK" } },
{ "set": { "if": "ctx.http.status_code == 201", "field": "http.status_message", "value": "Created" } },
{ "set": { "if": "ctx.http.status_code == 202", "field": "http.status_message", "value": "Accepted" } },
{ "set": { "if": "ctx.http.status_code == 203", "field": "http.status_message", "value": "Non-Authoritative Information" } },
{ "set": { "if": "ctx.http.status_code == 204", "field": "http.status_message", "value": "No Content" } },
{ "set": { "if": "ctx.http.status_code == 205", "field": "http.status_message", "value": "Reset Content" } },
{ "set": { "if": "ctx.http.status_code == 206", "field": "http.status_message", "value": "Partial Content" } },
{ "set": { "if": "ctx.http.status_code == 207", "field": "http.status_message", "value": "Multi-Status" } },
{ "set": { "if": "ctx.http.status_code == 208", "field": "http.status_message", "value": "Already Reported" } },
{ "set": { "if": "ctx.http.status_code == 226", "field": "http.status_message", "value": "IM Used" } },
{ "set": { "if": "ctx.http.status_code == 300", "field": "http.status_message", "value": "Multiple Choices" } },
{ "set": { "if": "ctx.http.status_code == 301", "field": "http.status_message", "value": "Moved Permanently" } },
{ "set": { "if": "ctx.http.status_code == 302", "field": "http.status_message", "value": "Found" } },
{ "set": { "if": "ctx.http.status_code == 303", "field": "http.status_message", "value": "See Other" } },
{ "set": { "if": "ctx.http.status_code == 304", "field": "http.status_message", "value": "Not Modified" } },
{ "set": { "if": "ctx.http.status_code == 305", "field": "http.status_message", "value": "Use Proxy" } },
{ "set": { "if": "ctx.http.status_code == 306", "field": "http.status_message", "value": "(Unused)" } },
{ "set": { "if": "ctx.http.status_code == 307", "field": "http.status_message", "value": "Temporary Redirect" } },
{ "set": { "if": "ctx.http.status_code == 308", "field": "http.status_message", "value": "Permanent Redirect" } },
{ "set": { "if": "ctx.http.status_code == 400", "field": "http.status_message", "value": "Bad Request" } },
{ "set": { "if": "ctx.http.status_code == 401", "field": "http.status_message", "value": "Unauthorized" } },
{ "set": { "if": "ctx.http.status_code == 402", "field": "http.status_message", "value": "Payment Required" } },
{ "set": { "if": "ctx.http.status_code == 403", "field": "http.status_message", "value": "Forbidden" } },
{ "set": { "if": "ctx.http.status_code == 404", "field": "http.status_message", "value": "Not Found" } },
{ "set": { "if": "ctx.http.status_code == 405", "field": "http.status_message", "value": "Method Not Allowed" } },
{ "set": { "if": "ctx.http.status_code == 406", "field": "http.status_message", "value": "Not Acceptable" } },
{ "set": { "if": "ctx.http.status_code == 407", "field": "http.status_message", "value": "Proxy Authentication Required" } },
{ "set": { "if": "ctx.http.status_code == 408", "field": "http.status_message", "value": "Request Timeout" } },
{ "set": { "if": "ctx.http.status_code == 409", "field": "http.status_message", "value": "Conflict" } },
{ "set": { "if": "ctx.http.status_code == 410", "field": "http.status_message", "value": "Gone" } },
{ "set": { "if": "ctx.http.status_code == 411", "field": "http.status_message", "value": "Length Required" } },
{ "set": { "if": "ctx.http.status_code == 412", "field": "http.status_message", "value": "Precondition Failed" } },
{ "set": { "if": "ctx.http.status_code == 413", "field": "http.status_message", "value": "Payload Too Large" } },
{ "set": { "if": "ctx.http.status_code == 414", "field": "http.status_message", "value": "URI Too Long" } },
{ "set": { "if": "ctx.http.status_code == 415", "field": "http.status_message", "value": "Unsupported Media Type" } },
{ "set": { "if": "ctx.http.status_code == 416", "field": "http.status_message", "value": "Range Not Satisfiable" } },
{ "set": { "if": "ctx.http.status_code == 417", "field": "http.status_message", "value": "Expectation Failed" } },
{ "set": { "if": "ctx.http.status_code == 421", "field": "http.status_message", "value": "Misdirected Request" } },
{ "set": { "if": "ctx.http.status_code == 422", "field": "http.status_message", "value": "Unprocessable Entity" } },
{ "set": { "if": "ctx.http.status_code == 423", "field": "http.status_message", "value": "Locked" } },
{ "set": { "if": "ctx.http.status_code == 424", "field": "http.status_message", "value": "Failed Dependency" } },
{ "set": { "if": "ctx.http.status_code == 425", "field": "http.status_message", "value": "Too Early" } },
{ "set": { "if": "ctx.http.status_code == 426", "field": "http.status_message", "value": "Upgrade Required" } },
{ "set": { "if": "ctx.http.status_code == 427", "field": "http.status_message", "value": "Unassigned" } },
{ "set": { "if": "ctx.http.status_code == 428", "field": "http.status_message", "value": "Precondition Required" } },
{ "set": { "if": "ctx.http.status_code == 429", "field": "http.status_message", "value": "Too Many Requests" } },
{ "set": { "if": "ctx.http.status_code == 430", "field": "http.status_message", "value": "Unassigned" } },
{ "set": { "if": "ctx.http.status_code == 431", "field": "http.status_message", "value": "Request Header Fields Too Large" } },
{ "set": { "if": "ctx.http.status_code == 451", "field": "http.status_message", "value": "Unavailable For Legal Reasons" } },
{ "set": { "if": "ctx.http.status_code == 500", "field": "http.status_message", "value": "Internal Server Error" } },
{ "set": { "if": "ctx.http.status_code == 501", "field": "http.status_message", "value": "Not Implemented" } },
{ "set": { "if": "ctx.http.status_code == 502", "field": "http.status_message", "value": "Bad Gateway" } },
{ "set": { "if": "ctx.http.status_code == 503", "field": "http.status_message", "value": "Service Unavailable" } },
{ "set": { "if": "ctx.http.status_code == 504", "field": "http.status_message", "value": "Gateway Timeout" } },
{ "set": { "if": "ctx.http.status_code == 505", "field": "http.status_message", "value": "HTTP Version Not Supported" } },
{ "set": { "if": "ctx.http.status_code == 506", "field": "http.status_message", "value": "Variant Also Negotiates" } },
{ "set": { "if": "ctx.http.status_code == 507", "field": "http.status_message", "value": "Insufficient Storage" } },
{ "set": { "if": "ctx.http.status_code == 508", "field": "http.status_message", "value": "Loop Detected" } },
{ "set": { "if": "ctx.http.status_code == 509", "field": "http.status_message", "value": "Unassigned" } },
{ "set": { "if": "ctx.http.status_code == 510", "field": "http.status_message", "value": "Not Extended" } },
{ "set": { "if": "ctx.http.status_code == 511", "field": "http.status_message", "value": "Network Authentication Required" } }
]
}

View File

@@ -0,0 +1,16 @@
{
"description" : "osquery live query",
"processors" : [
{
"script": {
"lang": "painless",
"source": "def dict = ['columns': new HashMap()]; for (entry in ctx['rows'].entrySet()) { dict['columns'][entry.getKey()] = entry.getValue(); } ctx['result'] = dict; "
}
},
{ "remove": { "field": [ "rows" ], "ignore_missing": true, "ignore_failure": true } },
{ "rename": { "field": "distributed_query_execution_id", "target_field": "result.query_id", "ignore_missing": true } },
{ "rename": { "field": "computer_name", "target_field": "host.hostname", "ignore_missing": true } },
{ "pipeline": { "name": "osquery.normalize" } },
{ "pipeline": { "name": "common" } }
]
}

View File

@@ -0,0 +1,14 @@
{
"description" : "osquery normalize",
"processors" : [
{ "rename": { "field": "result.columns.cmdline", "target_field": "process.command_line", "ignore_missing": true } },
{ "rename": { "field": "result.columns.cwd", "target_field": "process.working_directory", "ignore_missing": true } },
{ "rename": { "field": "result.columns.name", "target_field": "process.name", "ignore_missing": true } },
{ "rename": { "field": "result.columns.path", "target_field": "process.executable", "ignore_missing": true } },
{ "rename": { "field": "result.columns.pid", "target_field": "process.pid", "ignore_missing": true } },
{ "rename": { "field": "result.columns.parent", "target_field": "process.ppid", "ignore_missing": true } },
{ "rename": { "field": "result.columns.uid", "target_field": "user.id", "ignore_missing": true } },
{ "rename": { "field": "result.columns.username", "target_field": "user.name", "ignore_missing": true } },
{ "rename": { "field": "result.columns.gid", "target_field": "group.id", "ignore_missing": true } }
]
}

View File

@@ -1,24 +1,20 @@
{
"description" : "osquery",
"processors" : [
{ "json": { "field": "message", "target_field": "message2", "ignore_failure": true } },
{ "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": "message", "target_field": "result", "ignore_failure": true } },
{ "gsub": { "field": "result.columns.data", "pattern": "\\\\xC2\\\\xAE", "replacement": "", "ignore_missing": true } },
{ "rename": { "if": "ctx.result.columns?.eventid != null", "field": "result.columns", "target_field": "winlog", "ignore_missing": true } },
{ "json": { "field": "winlog.data", "target_field": "unparsed", "ignore_failure": true} },
{ "set": { "if": "!(ctx.unparsed?.EventData instanceof Map)", "field": "error.eventdata_parsing", "value": true, "ignore_failure": true } },
{ "rename": { "if": "!(ctx.error?.eventdata_parsing == true)", "field": "unparsed.EventData", "target_field": "winlog.event_data", "ignore_missing": true, "ignore_failure": true } },
{ "rename": { "field": "winlog.source", "target_field": "winlog.channel", "ignore_missing": true } },
{ "rename": { "field": "winlog.eventid", "target_field": "winlog.event_id", "ignore_missing": true } },
{ "rename": { "field": "winlog.datetime", "target_field": "winlog.systemTime", "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" } },
{
"script": {
"lang": "painless",
"source": "def dict = ['result': new HashMap()]; for (entry in ctx['message2'].entrySet()) { dict['result'][entry.getKey()] = entry.getValue(); } ctx['osquery'] = dict; "
}
},
{ "pipeline": { "if": "ctx.winlog?.channel != 'Microsoft-Windows-Sysmon/Operational' && ctx.containsKey('winlog')", "name":"win.eventlogs" } },
{ "set": { "field": "event.module", "value": "osquery", "override": false } },
{ "set": { "field": "event.dataset", "value": "{{osquery.result.name}}", "override": false} },
{ "set": { "field": "event.dataset", "value": "{{result.name}}", "override": false} },
{ "pipeline": { "if": "!(ctx.containsKey('winlog'))", "name": "osquery.normalize" } },
{ "pipeline": { "name": "common" } }
]
}

View File

@@ -1,13 +1,14 @@
{
"description" : "suricata.dhcp",
"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.dhcp.assigned_ip", "target_field": "dhcp.assigned_ip", "ignore_missing": true } },
{ "rename": { "field": "message2.dhcp.client_mac", "target_field": "host.mac", "ignore_missing": true } },
{ "rename": { "field": "message2.dhcp.dhcp_type", "target_field": "dhcp.message_types", "ignore_missing": true } },
{ "rename": { "field": "message2.dhcp.assigned_ip", "target_field": "dhcp.assigned_ip", "ignore_missing": true } },
{ "rename": { "field": "message2.dhcp.type", "target_field": "dhcp.type", "ignore_missing": true } },
{ "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.dhcp.assigned_ip", "target_field": "dhcp.assigned_ip", "ignore_missing": true } },
{ "rename": { "field": "message2.dhcp.client_ip", "target_field": "client.address", "ignore_missing": true } },
{ "rename": { "field": "message2.dhcp.client_mac", "target_field": "host.mac", "ignore_missing": true } },
{ "rename": { "field": "message2.dhcp.dhcp_type", "target_field": "dhcp.message_types", "ignore_missing": true } },
{ "rename": { "field": "message2.dhcp.hostname", "target_field": "host.hostname", "ignore_missing": true } },
{ "rename": { "field": "message2.dhcp.type", "target_field": "dhcp.type", "ignore_missing": true } },
{ "rename": { "field": "message2.dhcp.id", "target_field": "dhcp.id", "ignore_missing": true } },
{ "pipeline": { "name": "common" } }
]

View File

@@ -1,17 +1,18 @@
{
"description" : "suricata.http",
"processors" : [
{ "rename": { "field": "message2.proto", "target_field": "network.transport", "ignore_missing": true } },
{ "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.http.hostname", "target_field": "http.virtual_host", "ignore_missing": true } },
{ "rename": { "field": "message2.http.http_user_agent", "target_field": "http.useragent", "ignore_missing": true } },
{ "rename": { "field": "message2.http.url", "target_field": "http.uri", "ignore_missing": true } },
{ "rename": { "field": "message2.http.http_content_type", "target_field": "file.resp_mime_types", "ignore_missing": true } },
{ "rename": { "field": "message2.http.http_user_agent", "target_field": "http.useragent", "ignore_missing": true } },
{ "rename": { "field": "message2.http.url", "target_field": "http.uri", "ignore_missing": true } },
{ "rename": { "field": "message2.http.http_content_type", "target_field": "file.resp_mime_types", "ignore_missing": true } },
{ "rename": { "field": "message2.http.http_refer", "target_field": "http.referrer", "ignore_missing": true } },
{ "rename": { "field": "message2.http.http_method", "target_field": "http.method", "ignore_missing": true } },
{ "rename": { "field": "message2.http.protocol", "target_field": "http.version", "ignore_missing": true } },
{ "rename": { "field": "message2.http.http_method", "target_field": "http.method", "ignore_missing": true } },
{ "rename": { "field": "message2.http.protocol", "target_field": "http.version", "ignore_missing": true } },
{ "rename": { "field": "message2.http.status", "target_field": "http.status_code", "ignore_missing": true } },
{ "rename": { "field": "message2.http.length", "target_field": "http.request.body.length", "ignore_missing": true } },
{ "rename": { "field": "message2.http.length", "target_field": "http.request.body.length", "ignore_missing": true } },
{ "pipeline": { "if": "ctx.http?.status_code != null", "name": "http.status" } },
{ "pipeline": { "name": "common" } }
]
}
}

View File

@@ -4,8 +4,8 @@
{ "set": { "if": "ctx.winlog?.channel != null", "field": "event.module", "value": "windows_eventlog", "override": false, "ignore_failure": true } },
{ "set": { "if": "ctx.winlog?.channel != null", "field": "event.dataset", "value": "{{winlog.channel}}", "override": true } },
{ "set": { "if": "ctx.winlog?.computer_name != null", "field": "observer.name", "value": "{{winlog.computer_name}}", "override": true } },
{ "rename": { "if": "ctx.winlog?.systemTime != null", "field": "@timestamp", "target_field": "ingest.timestamp", "ignore_missing": true } },
{ "set": { "if": "ctx.winlog?.systemTime != null", "field": "@timestamp", "value": "{{winlog.systemTime}}", "override": true } },
{ "rename": { "if": "ctx.winlog?.systemTime != null", "field": "@timestamp", "target_field": "event.ingested", "ignore_missing": true } },
{ "date": { "if": "ctx.winlog?.systemTime != null", "field": "winlog.systemTime", "formats": ["yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS'Z'","yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'Z'"] } },
{ "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_failure": true, "ignore_missing": true } },

View File

@@ -27,11 +27,7 @@ echo -n "Waiting for ElasticSearch..."
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 -L https://"$ELASTICSEARCH_HOST":"$ELASTICSEARCH_PORT"
{% else %}
curl ${ELASTICSEARCH_AUTH} --output /dev/null --silent --head --fail -L http://"$ELASTICSEARCH_HOST":"$ELASTICSEARCH_PORT"
{% endif %}
curl ${ELASTICSEARCH_AUTH} -k --output /dev/null --silent --head --fail -L https://"$ELASTICSEARCH_HOST":"$ELASTICSEARCH_PORT"
if [ $? -eq 0 ]; then
ELASTICSEARCH_CONNECTED="yes"
echo "connected!"
@@ -51,11 +47,7 @@ fi
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 -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 -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
cd - >/dev/null

View File

@@ -1,17 +0,0 @@
keystore.path: /usr/share/elasticsearch/config/sokeys
keystore.password: changeit
keystore.algorithm: SunX509
truststore.path: /etc/pki/java/cacerts
truststore.password: changeit
truststore.algorithm: PKIX
protocols:
- TLSv1.2
ciphers:
- TLS_RSA_WITH_AES_128_CBC_SHA256
- TLS_RSA_WITH_AES_256_GCM_SHA384
transport.encrypted: true
{%- if grains['role'] in ['so-node','so-heavynode'] %}
http.encrypted: true
{%- else %}
http.encrypted: false
{%- endif %}

View File

@@ -18,17 +18,10 @@
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
{% 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 TRUECLUSTER = salt['pillar.get']('elasticsearch:true_cluster', False) %}
{% set MANAGERIP = salt['pillar.get']('global:managerip') %}
{% 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') %}
@@ -147,14 +140,6 @@ esyml:
- group: 939
- template: jinja
sotls:
file.managed:
- name: /opt/so/conf/elasticsearch/sotls.yml
- source: salt://elasticsearch/files/sotls.yml
- user: 930
- group: 939
- template: jinja
#sync templates to /opt/so/conf/elasticsearch/templates
{% for TEMPLATE in TEMPLATES %}
es_template_{{TEMPLATE.split('.')[0] | replace("/","_") }}:
@@ -186,7 +171,7 @@ eslogdir:
so-elasticsearch:
docker_container.running:
- image: {{ MANAGER }}:5000/{{ IMAGEREPO }}/so-elasticsearch:{{ VERSION }}{{ FEATUREZ }}
- image: {{ MANAGER }}:5000/{{ IMAGEREPO }}/so-elasticsearch:{{ VERSION }}
- hostname: elasticsearch
- name: so-elasticsearch
- user: elasticsearch
@@ -206,7 +191,7 @@ so-elasticsearch:
{% 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 }}
- ES_JAVA_OPTS=-Xms{{ esheap }} -Xmx{{ esheap }} -Des.transport.cname_in_publish_address=true
ulimits:
- memlock=-1:-1
- nofile=65536:65536
@@ -228,7 +213,6 @@ so-elasticsearch:
- /etc/pki/elasticsearch.crt:/usr/share/elasticsearch/config/elasticsearch.crt:ro
- /etc/pki/elasticsearch.key:/usr/share/elasticsearch/config/elasticsearch.key: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

View File

@@ -51,16 +51,29 @@
"match_mapping_type": "string",
"path_match": "*.ip",
"mapping": {
"type": "ip"
"type": "ip",
"fields" : {
"keyword" : {
"ignore_above" : 45,
"type" : "keyword"
}
}
}
}
},
{
"port": {
"match_mapping_type": "string",
"path_match": "*.port",
"mapping": {
"type": "integer"
"type": "integer",
"fields" : {
"keyword" : {
"ignore_above" : 6,
"type" : "keyword"
}
}
}
}
},
@@ -254,9 +267,14 @@
},
"ingest":{
"type":"object",
"dynamic": true
"dynamic": true,
"properties":{
"timestamp":{
"type":"date"
}
}
},
"intel":{
"intel":{
"type":"object",
"dynamic": true,
"properties":{
@@ -365,6 +383,10 @@
"request":{
"type":"object",
"dynamic": true
},
"result":{
"type":"object",
"dynamic": true
},
"rfb":{
"type":"object",

View File

@@ -260,7 +260,8 @@ output.{{ type }}:
{%- if grains['role'] in ["so-eval", "so-import"] %}
output.elasticsearch:
enabled: true
hosts: ["{{ MANAGER }}:9200"]
hosts: ["https://{{ MANAGER }}:9200"]
ssl.certificate_authorities: ["/usr/share/filebeat/intraca.crt"]
pipelines:
- pipeline: "%{[module]}.%{[dataset]}"
indices:
@@ -492,12 +493,13 @@ setup.template.enabled: false
# append ?pretty to the URL.
# Defines if the HTTP endpoint is enabled.
#http.enabled: false
http.enabled: true
# The HTTP endpoint will bind to this hostname or IP address. It is recommended to use only localhost.
#http.host: localhost
http.host: 0.0.0.0
# Port on which the HTTP endpoint will bind. Default is 5066.
http.port: 5066
queue.mem.events: {{ FBMEMEVENTS }}
queue.mem.flush.min_events: {{ FBMEMFLUSHMINEVENTS }}

View File

@@ -13,7 +13,6 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
{% from 'allowed_states.map.jinja' import allowed_states %}
{% if sls in allowed_states %}
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
{% set LOCALHOSTNAME = salt['grains.get']('host') %}
@@ -21,12 +20,6 @@
{% set LOCALHOSTIP = salt['grains.get']('ip_interfaces').get(MAININT)[0] %}
{% set MANAGER = salt['grains.get']('master') %}
{% set MANAGERIP = salt['pillar.get']('global:managerip', '') %}
{% set FEATURES = salt['pillar.get']('elastic:features', False) %}
{%- if FEATURES is sameas true %}
{% set FEATURES = "-features" %}
{% else %}
{% set FEATURES = '' %}
{% endif %}
filebeatetcdir:
file.directory:
- name: /opt/so/conf/filebeat/etc
@@ -64,7 +57,7 @@ filebeatconfsync:
OUTPUT: {{ salt['pillar.get']('filebeat:config:output', {}) }}
so-filebeat:
docker_container.running:
- image: {{ MANAGER }}:5000/{{ IMAGEREPO }}/so-filebeat:{{ VERSION }}{{ FEATURES }}
- image: {{ MANAGER }}:5000/{{ IMAGEREPO }}/so-filebeat:{{ VERSION }}
- hostname: so-filebeat
- user: root
- extra_hosts: {{ MANAGER }}:{{ MANAGERIP }},{{ LOCALHOSTNAME }}:{{ LOCALHOSTIP }}
@@ -81,6 +74,7 @@ so-filebeat:
- port_bindings:
- 0.0.0.0:514:514/udp
- 0.0.0.0:514:514/tcp
- 0.0.0.0:5066:5066/tcp
- watch:
- file: /opt/so/conf/filebeat/etc/filebeat.yml

View File

@@ -26,15 +26,6 @@ iptables_fix_fwd:
- position: 1
- target: DOCKER-USER
# Allow related/established sessions
iptables_allow_established:
iptables.append:
- table: filter
- chain: INPUT
- jump: ACCEPT
- match: conntrack
- ctstate: 'RELATED,ESTABLISHED'
# I like pings
iptables_allow_pings:
iptables.append:
@@ -77,17 +68,6 @@ enable_docker_user_fw_policy:
- out-interface: docker0
- position: 1
enable_docker_user_established:
iptables.insert:
- table: filter
- chain: DOCKER-USER
- jump: ACCEPT
- in-interface: '!docker0'
- out-interface: docker0
- position: 1
- match: conntrack
- ctstate: 'RELATED,ESTABLISHED'
{% set count = namespace(value=0) %}
{% for chain, hg in assigned_hostgroups.chain.items() %}
{% for hostgroup, portgroups in assigned_hostgroups.chain[chain].hostgroups.items() %}
@@ -120,6 +100,27 @@ enable_docker_user_established:
{% endfor %}
{% endfor %}
# Allow related/established sessions
iptables_allow_established:
iptables.insert:
- table: filter
- chain: INPUT
- jump: ACCEPT
- position: 1
- match: conntrack
- ctstate: 'RELATED,ESTABLISHED'
enable_docker_user_established:
iptables.insert:
- table: filter
- chain: DOCKER-USER
- jump: ACCEPT
- in-interface: '!docker0'
- out-interface: docker0
- position: 1
- match: conntrack
- ctstate: 'RELATED,ESTABLISHED'
# Block icmp timestamp response
block_icmp_timestamp_reply:
iptables.append:

View File

@@ -18,14 +18,18 @@
{# This block translate the portgroups defined in the pillar to what is defined my portgroups.yaml and portgroups.local.yaml #}
{% if salt['pillar.get']('firewall:assigned_hostgroups:chain') %}
{% set translated_pillar_assigned_hostgroups = {'chain': {}} %}
{% for chain, hg in salt['pillar.get']('firewall:assigned_hostgroups:chain').items() %}
{% for pillar_hostgroup, pillar_portgroups in salt['pillar.get']('firewall:assigned_hostgroups:chain')[chain].hostgroups.items() %}
{% do translated_pillar_assigned_hostgroups.update({"chain": {chain: {"hostgroups": {pillar_hostgroup: {"portgroups": []}}}}}) %}
{% if translated_pillar_assigned_hostgroups.chain[chain] is defined %}
{% do translated_pillar_assigned_hostgroups.chain[chain].hostgroups.update({pillar_hostgroup: {"portgroups": []}}) %}
{% else %}
{% do translated_pillar_assigned_hostgroups.chain.update({chain: {"hostgroups": {pillar_hostgroup: {"portgroups": []}}}}) %}
{% endif %}
{% for pillar_portgroup in pillar_portgroups.portgroups %}
{% set pillar_portgroup = pillar_portgroup.split('.') | last %}
{% do translated_pillar_assigned_hostgroups.chain[chain].hostgroups[pillar_hostgroup].portgroups.append(defined_portgroups[pillar_portgroup]) %}
{% endfor %}
{% endfor %}
{% endfor %}
@@ -39,7 +43,6 @@
{% set assigned_hostgroups = default_assigned_hostgroups.role[role] %}
{% endif %}
{% if translated_pillar_assigned_hostgroups %}
{% do salt['defaults.merge'](assigned_hostgroups, translated_pillar_assigned_hostgroups, merge_lists=True, in_place=True) %}
{% endif %}

View File

@@ -18,6 +18,9 @@ firewall:
beats_5644:
tcp:
- 5644
beats_5066:
tcp:
- 5066
cortex:
tcp:
- 9001

View File

@@ -4322,139 +4322,6 @@
"align": false,
"alignLevel": null
}
},
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "InfluxDB",
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 6,
"w": 8,
"x": 16,
"y": 31
},
"hiddenSeries": false,
"id": 76,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": false,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"nullPointMode": "connected",
"options": {
"alertThreshold": true
},
"percentage": false,
"pluginVersion": "7.3.4",
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "EPS",
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "esteps",
"orderByTime": "ASC",
"policy": "default",
"queryType": "randomWalk",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"eps"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": [
{
"key": "host",
"operator": "=",
"value": "{{ SERVERNAME }}"
}
]
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "{{ SERVERNAME }} - Estimated EPS",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"label": "EPS",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": false
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
}
],
"refresh": false,

View File

@@ -5157,7 +5157,7 @@
"type": "fill"
}
],
"measurement": "esteps",
"measurement": "consumptioneps",
"orderByTime": "ASC",
"policy": "default",
"queryType": "randomWalk",

View File

@@ -5562,7 +5562,7 @@
"type": "fill"
}
],
"measurement": "esteps",
"measurement": "consumptioneps",
"orderByTime": "ASC",
"policy": "default",
"queryType": "randomWalk",

View File

@@ -11,7 +11,7 @@
{% set GRAFANA_SETTINGS = salt['grains.filter_by'](default_settings, default='grafana', merge=salt['pillar.get']('grafana', {})) %}
{% if grains['role'] in ['so-manager', 'so-managersearch', 'so-eval', 'so-standalone'] and GRAFANA == 1 %}
{% if grains['role'] in ['so-manager', 'so-managersearch', 'so-standalone'] or (grains.role == 'so-eval' and GRAFANA == 1) %}
# Grafana all the things
grafanadir:

View File

@@ -19,13 +19,12 @@
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
{% set MANAGER = salt['grains.get']('master') %}
{% set ENGINE = salt['pillar.get']('global:mdengine', '') %}
{% set proxy = salt['pillar.get']('manager:proxy') %}
include:
- idstools.sync_files
# IDSTools Setup
idstoolsdir:
file.directory:
- name: /opt/so/conf/idstools/etc
- user: 939
- group: 939
- makedirs: True
idstoolslogdir:
file.directory:
@@ -34,14 +33,6 @@ idstoolslogdir:
- group: 939
- makedirs: True
idstoolsetcsync:
file.recurse:
- name: /opt/so/conf/idstools/etc
- source: salt://idstools/etc
- user: 939
- group: 939
- template: jinja
so-ruleupdatecron:
cron.present:
- name: /usr/sbin/so-rule-update > /opt/so/log/idstools/download.log 2>&1
@@ -49,28 +40,17 @@ so-ruleupdatecron:
- minute: '1'
- hour: '7'
rulesdir:
file.directory:
- name: /opt/so/rules/nids
- user: 939
- group: 939
- makedirs: True
# Don't show changes because all.rules can be large
synclocalnidsrules:
file.recurse:
- name: /opt/so/rules/nids/
- source: salt://idstools/
- user: 939
- group: 939
- show_changes: False
- include_pat: 'E@.rules'
so-idstools:
docker_container.running:
- image: {{ MANAGER }}:5000/{{ IMAGEREPO }}/so-idstools:{{ VERSION }}
- hostname: so-idstools
- user: socore
{% if proxy %}
- environment:
- http_proxy={{ proxy }}
- https_proxy={{ proxy }}
- no_proxy={{ salt['pillar.get']('manager:no_proxy') }}
{% endif %}
- binds:
- /opt/so/conf/idstools/etc:/opt/so/idstools/etc:ro
- /opt/so/rules/nids:/opt/so/rules/nids:rw

View File

@@ -0,0 +1,46 @@
# Copyright 2014,2015,2016,2017,2018 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/>.
idstoolsdir:
file.directory:
- name: /opt/so/conf/idstools/etc
- user: 939
- group: 939
- makedirs: True
idstoolsetcsync:
file.recurse:
- name: /opt/so/conf/idstools/etc
- source: salt://idstools/etc
- user: 939
- group: 939
- template: jinja
rulesdir:
file.directory:
- name: /opt/so/rules/nids
- user: 939
- group: 939
- makedirs: True
# Don't show changes because all.rules can be large
synclocalnidsrules:
file.recurse:
- name: /opt/so/rules/nids/
- source: salt://idstools/
- user: 939
- group: 939
- show_changes: False
- include_pat: 'E@.rules'

View File

@@ -233,7 +233,7 @@
# enabled = true
# Determines whether the Flux query endpoint is enabled.
# flux-enabled = false
flux-enabled = true
# The bind address used by the HTTP service.
# bind-address = ":8086"

View File

@@ -6,7 +6,7 @@
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
{% if grains['role'] in ['so-manager', 'so-managersearch', 'so-eval', 'so-standalone'] and GRAFANA == 1 %}
{% if grains['role'] in ['so-manager', 'so-managersearch', 'so-standalone'] or (grains.role == 'so-eval' and GRAFANA == 1) %}
# Influx DB
influxconfdir:

View File

@@ -1,53 +0,0 @@
{%- set ES = salt['pillar.get']('manager:mainip', '') -%}
# Wait for ElasticSearch to come up, so that we can query for version infromation
echo -n "Waiting for ElasticSearch..."
COUNT=0
ELASTICSEARCH_CONNECTED="no"
while [[ "$COUNT" -le 30 ]]; do
curl --output /dev/null --silent --head --fail -L http://{{ ES }}:9200
if [ $? -eq 0 ]; then
ELASTICSEARCH_CONNECTED="yes"
echo "connected!"
break
else
((COUNT+=1))
sleep 1
echo -n "."
fi
done
if [ "$ELASTICSEARCH_CONNECTED" == "no" ]; then
echo
echo -e "Connection attempt timed out. Unable to connect to ElasticSearch. \nPlease try: \n -checking log(s) in /var/log/elasticsearch/\n -running 'sudo docker ps' \n -running 'sudo so-elastic-restart'"
echo
exit
fi
# Make sure Kibana is running
MAX_WAIT=240
# Check to see if Kibana is available
wait_step=0
until curl -s -XGET -L http://{{ ES }}:5601 > /dev/null ; do
wait_step=$(( ${wait_step} + 1 ))
echo "Waiting on Kibana...Attempt #$wait_step"
if [ ${wait_step} -gt ${MAX_WAIT} ]; then
echo "ERROR: Kibana not available for more than ${MAX_WAIT} seconds."
exit 5
fi
sleep 1s;
done
# Apply Kibana template
echo
echo "Applying Kibana template..."
curl -s -XPUT -L http://{{ ES }}:9200/_template/kibana \
-H 'Content-Type: application/json' \
-d'{"index_patterns" : ".kibana", "settings": { "number_of_shards" : 1, "number_of_replicas" : 0 }, "mappings" : { "search": {"properties": {"hits": {"type": "integer"}, "version": {"type": "integer"}}}}}'
echo
curl -s -XPUT -L "{{ ES }}:9200/.kibana/_settings" \
-H 'Content-Type: application/json' \
-d'{"index" : {"number_of_replicas" : 0}}'
echo

View File

@@ -3,6 +3,8 @@
# {%- set FLEET_NODE = salt['pillar.get']('global:fleet_node', False) -%}
# {%- set MANAGER = salt['pillar.get']('global:url_base', '') %}
. /usr/sbin/so-common
# Copy template file
cp /opt/so/conf/kibana/saved_objects.ndjson.template /opt/so/conf/kibana/saved_objects.ndjson
@@ -14,5 +16,11 @@ cp /opt/so/conf/kibana/saved_objects.ndjson.template /opt/so/conf/kibana/saved_o
# SOCtopus and Manager
sed -i "s/PLACEHOLDER/{{ MANAGER }}/g" /opt/so/conf/kibana/saved_objects.ndjson
wait_for_web_response "http://localhost:5601/app/kibana" "Elastic"
## This hackery will be removed if using Elastic Auth ##
# Let's snag a cookie from Kibana
THECOOKIE=$(curl -c - -X GET http://localhost:5601/ | grep sid | awk '{print $7}')
# Load saved objects
curl -X POST "localhost:5601/api/saved_objects/_import?overwrite=true" -H "kbn-xsrf: true" --form file=@/opt/so/conf/kibana/saved_objects.ndjson > /dev/null 2>&1
curl -b "sid=$THECOOKIE" -L -X POST "localhost:5601/api/saved_objects/_import?overwrite=true" -H "kbn-xsrf: true" --form file=@/opt/so/conf/kibana/saved_objects.ndjson >> /opt/so/log/kibana/misc.log

View File

@@ -1,11 +1,11 @@
---
# Default Kibana configuration from kibana-docker.
{%- set ES = salt['pillar.get']('manager:mainip', '') -%}
{%- set FEATURES = salt['pillar.get']('elastic:features', False) %}
server.name: kibana
server.host: "0"
server.basePath: /kibana
elasticsearch.hosts: [ "http://{{ ES }}:9200" ]
elasticsearch.hosts: [ "https://{{ ES }}:9200" ]
elasticsearch.ssl.verificationMode: none
#kibana.index: ".kibana"
#elasticsearch.username: elastic
#elasticsearch.password: changeme
@@ -14,3 +14,7 @@ elasticsearch.requestTimeout: 90000
logging.dest: /var/log/kibana/kibana.log
telemetry.enabled: false
security.showInsecureClusterWarning: false
xpack.security.authc.providers:
anonymous.anonymous1:
order: 0
credentials: "elasticsearch_anonymous_user"

File diff suppressed because one or more lines are too long

View File

@@ -4,12 +4,6 @@
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
{% set MANAGER = salt['grains.get']('master') %}
{% set FEATURES = salt['pillar.get']('elastic:features', False) %}
{%- if FEATURES is sameas true %}
{% set FEATURES = "-features" %}
{% else %}
{% set FEATURES = '' %}
{% endif %}
# Add ES Group
kibanasearchgroup:
@@ -73,7 +67,7 @@ kibanabin:
# Start the kibana docker
so-kibana:
docker_container.running:
- image: {{ MANAGER }}:5000/{{ IMAGEREPO }}/so-kibana:{{ VERSION }}{{ FEATURES }}
- image: {{ MANAGER }}:5000/{{ IMAGEREPO }}/so-kibana:{{ VERSION }}
- hostname: kibana
- user: kibana
- environment:
@@ -100,21 +94,10 @@ kibanadashtemplate:
- user: 932
- group: 939
wait_for_kibana:
module.run:
- http.wait_for_successful_query:
- url: "http://{{MANAGER}}:5601/api/saved_objects/_find?type=config"
- wait_for: 900
- onchanges:
- file: kibanadashtemplate
so-kibana-config-load:
cmd.run:
- name: /usr/sbin/so-kibana-config-load
- cwd: /opt/so
- onchanges:
- wait_for_kibana
# Keep the setting correct
#KibanaHappy:

View File

@@ -19,13 +19,6 @@
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
{% set MANAGER = salt['grains.get']('master') %}
{% set MANAGERIP = salt['pillar.get']('global:managerip') %}
{% set FEATURES = salt['pillar.get']('elastic:features', False) %}
{%- if FEATURES is sameas true %}
{% set FEATURES = "-features" %}
{% else %}
{% set FEATURES = '' %}
{% endif %}
# Logstash Section - Decide which pillar to use
{% set lsheap = salt['pillar.get']('logstash_settings:lsheap', '') %}
@@ -146,7 +139,7 @@ lslogdir:
so-logstash:
docker_container.running:
- image: {{ MANAGER }}:5000/{{ IMAGEREPO }}/so-logstash:{{ VERSION }}{{ FEATURES }}
- image: {{ MANAGER }}:5000/{{ IMAGEREPO }}/so-logstash:{{ VERSION }}
- hostname: so-logstash
- name: so-logstash
- user: logstash

View File

@@ -0,0 +1,19 @@
{%- set MANAGER = salt['grains.get']('master') %}
{%- set THREADS = salt['pillar.get']('logstash_settings:ls_input_threads', '') %}
{% set BATCH = salt['pillar.get']('logstash_settings:ls_pipeline_batch_size', 125) %}
input {
redis {
host => '{{ MANAGER }}'
port => 6379
data_type => 'pattern_channel'
key => 'results_*'
type => 'live_query'
add_field => {
"module" => "osquery"
"dataset" => "live_query"
}
threads => {{ THREADS }}
batch_count => {{ BATCH }}
}
}

View File

@@ -3,7 +3,6 @@
{%- else %}
{%- set ES = salt['pillar.get']('elasticsearch:mainip', '') -%}
{%- endif %}
{% set FEATURES = salt['pillar.get']('elastic:features', False) %}
output {
if [module] =~ "zeek" and "import" not in [tags] {
elasticsearch {
@@ -13,10 +12,8 @@ output {
template_name => "so-zeek"
template => "/templates/so-zeek-template.json"
template_overwrite => true
{%- if grains['role'] in ['so-node','so-heavynode'] %}
ssl => true
ssl_certificate_verification => false
{%- endif %}
}
}
}

View File

@@ -3,7 +3,6 @@
{%- else %}
{%- set ES = salt['pillar.get']('elasticsearch:mainip', '') -%}
{%- endif %}
{% set FEATURES = salt['pillar.get']('elastic:features', False) %}
output {
if "import" in [tags] {
elasticsearch {
@@ -13,10 +12,8 @@ output {
template_name => "so-import"
template => "/templates/so-import-template.json"
template_overwrite => true
{%- if grains['role'] in ['so-node','so-heavynode'] %}
ssl => true
ssl_certificate_verification => false
{%- endif %}
}
}
}

View File

@@ -3,7 +3,6 @@
{%- else %}
{%- set ES = salt['pillar.get']('elasticsearch:mainip', '') -%}
{%- endif %}
{% set FEATURES = salt['pillar.get']('elastic:features', False) %}
output {
if [event_type] == "sflow" {
elasticsearch {
@@ -12,10 +11,8 @@ output {
template_name => "so-flow"
template => "/templates/so-flow-template.json"
template_overwrite => true
{%- if grains['role'] in ['so-node','so-heavynode'] %}
ssl => true
ssl_certificate_verification => false
{%- endif %}
}
}
}

View File

@@ -3,7 +3,6 @@
{%- else %}
{%- set ES = salt['pillar.get']('elasticsearch:mainip', '') -%}
{%- endif %}
{% set FEATURES = salt['pillar.get']('elastic:features', False) %}
output {
if [event_type] == "ids" and "import" not in [tags] {
elasticsearch {
@@ -12,10 +11,8 @@ output {
template_name => "so-ids"
template => "/templates/so-ids-template.json"
template_overwrite => true
{%- if grains['role'] in ['so-node','so-heavynode'] %}
ssl => true
ssl_certificate_verification => false
{%- endif %}
}
}
}

View File

@@ -3,7 +3,6 @@
{%- else %}
{%- set ES = salt['pillar.get']('elasticsearch:mainip', '') -%}
{%- endif %}
{% set FEATURES = salt['pillar.get']('elastic:features', False) %}
output {
if [module] =~ "syslog" {
elasticsearch {
@@ -13,10 +12,8 @@ output {
template_name => "so-syslog"
template => "/templates/so-syslog-template.json"
template_overwrite => true
{%- if grains['role'] in ['so-node','so-heavynode'] %}
ssl => true
ssl_certificate_verification => false
{%- endif %}
}
}
}

View File

@@ -3,9 +3,8 @@
{%- else %}
{%- set ES = salt['pillar.get']('elasticsearch:mainip', '') -%}
{%- endif %}
{% set FEATURES = salt['pillar.get']('elastic:features', False) %}
output {
if [module] =~ "osquery" {
if [module] =~ "osquery" and "live_query" not in [dataset] {
elasticsearch {
pipeline => "%{module}.%{dataset}"
hosts => "{{ ES }}"
@@ -13,10 +12,8 @@ output {
template_name => "so-osquery"
template => "/templates/so-osquery-template.json"
template_overwrite => true
{%- if grains['role'] in ['so-node','so-heavynode'] %}
ssl => true
ssl_certificate_verification => false
{%- endif %}
}
}
}

View File

@@ -0,0 +1,41 @@
{%- if grains['role'] == 'so-eval' -%}
{%- set ES = salt['pillar.get']('manager:mainip', '') -%}
{%- else %}
{%- set ES = salt['pillar.get']('elasticsearch:mainip', '') -%}
{%- endif %}
{% set FEATURES = salt['pillar.get']('elastic:features', False) %}
filter {
if [type] =~ "live_query" {
mutate {
rename => {
"[host][hostname]" => "computer_name"
}
}
prune {
blacklist_names => ["host"]
}
split {
field => "rows"
}
}
}
output {
if [type] =~ "live_query" {
elasticsearch {
pipeline => "osquery.live_query"
hosts => "{{ ES }}"
index => "so-osquery"
template_name => "so-osquery"
template => "/templates/so-osquery-template.json"
template_overwrite => true
ssl => true
ssl_certificate_verification => false
}
}
}

View File

@@ -3,7 +3,6 @@
{%- else %}
{%- set ES = salt['pillar.get']('elasticsearch:mainip', '') -%}
{%- endif %}
{% set FEATURES = salt['pillar.get']('elastic:features', False) %}
output {
if [dataset] =~ "firewall" {
elasticsearch {
@@ -12,10 +11,8 @@ output {
template_name => "so-firewall"
template => "/templates/so-firewall-template.json"
template_overwrite => true
{%- if grains['role'] in ['so-node','so-heavynode'] %}
ssl => true
ssl_certificate_verification => false
{%- endif %}
}
}
}

View File

@@ -3,7 +3,6 @@
{%- else %}
{%- set ES = salt['pillar.get']('elasticsearch:mainip', '') -%}
{%- endif %}
{% set FEATURES = salt['pillar.get']('elastic:features', False) %}
output {
if [module] =~ "suricata" and "import" not in [tags] {
elasticsearch {
@@ -12,10 +11,8 @@ output {
index => "so-ids"
template_name => "so-ids"
template => "/templates/so-ids-template.json"
{%- if grains['role'] in ['so-node','so-heavynode'] %}
ssl => true
ssl_certificate_verification => false
{%- endif %}
}
}
}

View File

@@ -3,7 +3,6 @@
{%- else %}
{%- set ES = salt['pillar.get']('elasticsearch:mainip', '') -%}
{%- endif %}
{% set FEATURES = salt['pillar.get']('elastic:features', False) %}
output {
if "beat-ext" in [tags] and "import" not in [tags] {
elasticsearch {
@@ -13,10 +12,8 @@ output {
template_name => "so-beats"
template => "/templates/so-beats-template.json"
template_overwrite => true
{%- if grains['role'] in ['so-node','so-heavynode'] %}
ssl => true
ssl_certificate_verification => false
{%- endif %}
}
}
}

View File

@@ -3,7 +3,6 @@
{%- else %}
{%- set ES = salt['pillar.get']('elasticsearch:mainip', '') -%}
{%- endif %}
{% set FEATURES = salt['pillar.get']('elastic:features', False) %}
output {
if [module] =~ "ossec" {
elasticsearch {
@@ -13,10 +12,8 @@ output {
template_name => "so-ossec"
template => "/templates/so-ossec-template.json"
template_overwrite => true
{%- if grains['role'] in ['so-node','so-heavynode'] %}
ssl => true
ssl_certificate_verification => false
{%- endif %}
}
}
}

View File

@@ -3,7 +3,6 @@
{%- else %}
{%- set ES = salt['pillar.get']('elasticsearch:mainip', '') -%}
{%- endif %}
{% set FEATURES = salt['pillar.get']('elastic:features', False) %}
output {
if [module] =~ "strelka" {
elasticsearch {
@@ -13,10 +12,8 @@ output {
template_name => "so-strelka"
template => "/templates/so-strelka-template.json"
template_overwrite => true
{%- if grains['role'] in ['so-node','so-heavynode'] %}
ssl => true
ssl_certificate_verification => false
{%- endif %}
}
}
}

View File

@@ -20,6 +20,7 @@ Remap-npm: registry.npmjs.org
Remap-node: nodejs.org
Remap-apache: file:apache_mirrors ; file:backends_apache.us
Remap-salt: repo.saltstack.com; https://repo.saltstack.com
Remap-securityonion: http://repocache.securityonion.net ; file:securityonion
# Remap-secdeb: security.debian.org
ReportPage: acng-report.html
# SocketPath:/var/run/apt-cacher-ng/socket
@@ -79,7 +80,7 @@ RedirMax: 6
VfileUseRangeOps: 0
# PassThroughPattern: private-ppa\.launchpad\.net:443$
# PassThroughPattern: .* # this would allow CONNECT to everything
PassThroughPattern: (download\.docker\.com:443|mirrors\.fedoraproject\.org:443|packages\.wazuh\.com:443|repo\.saltstack\.com:443|yum\.dockerproject\.org:443|download\.docker\.com:443|registry\.npmjs\.org:443|registry\.yarnpkg\.com:443)$ # yarn/npm pkg, cant to http :/
PassThroughPattern: (repo\.securityonion\.net:443|download\.docker\.com:443|mirrors\.fedoraproject\.org:443|packages\.wazuh\.com:443|repo\.saltstack\.com:443|yum\.dockerproject\.org:443|download\.docker\.com:443|registry\.npmjs\.org:443|registry\.yarnpkg\.com:443)$ # yarn/npm pkg, cant to http :/
# ResponseFreezeDetectTime: 500
# ReuseConnections: 1
# PipelineDepth: 255
@@ -89,3 +90,7 @@ PassThroughPattern: (download\.docker\.com:443|mirrors\.fedoraproject\.org:443|p
# MaxDlSpeed: 500
# MaxInresponsiveDlSize: 64000
# BadRedirDetectMime: text/html
{% set proxy = salt['pillar.get']('manager:proxy') -%}
{% if proxy -%}
Proxy: {{ proxy }}
{% endif -%}

View File

@@ -18,7 +18,6 @@
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
{% set MANAGER = salt['grains.get']('master') %}
{% set managerproxy = salt['pillar.get']('global:managerupdate', '0') %}
{% set STRELKA_RULES = salt['pillar.get']('strelka:rules', '1') %}
socore_own_saltstack:
@@ -35,8 +34,6 @@ socore_own_saltstack:
- mode: 750
- replace: False
{% if managerproxy == 1 %}
# Create the directories for apt-cacher-ng
aptcacherconfdir:
file.directory:
@@ -60,11 +57,12 @@ aptcacherlogdir:
- makedirs: true
# Copy the config
acngcopyconf:
file.managed:
- name: /opt/so/conf/aptcacher-ng/etc/acng.conf
- source: salt://manager/files/acng/acng.conf
- template: jinja
- show_changes: False
# Install the apt-cacher-ng container
so-aptcacherng:
@@ -84,8 +82,6 @@ append_so-aptcacherng_so-status.conf:
- name: /opt/so/conf/so-status/so-status.conf
- text: so-aptcacherng
{% endif %}
strelka_yara_update_old_1:
cron.absent:
- user: root

View File

@@ -25,8 +25,8 @@ events {
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
@@ -157,7 +157,7 @@ http {
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1.2;
location ~* (^/login/|^/js/.*|^/css/.*|^/images/.*) {
location ~* (^/login/.*|^/js/.*|^/css/.*|^/images/.*) {
proxy_pass http://{{ manager_ip }}:9822;
proxy_read_timeout 90;
proxy_connect_timeout 90;
@@ -172,6 +172,8 @@ http {
location / {
auth_request /auth/sessions/whoami;
auth_request_set $userid $upstream_http_x_kratos_authenticated_identity_id;
proxy_set_header x-user-id $userid;
proxy_pass http://{{ manager_ip }}:9822/;
proxy_read_timeout 90;
proxy_connect_timeout 90;
@@ -231,15 +233,15 @@ http {
}
{%- if airgap is sameas true %}
location /repo/ {
allow all;
sendfile on;
sendfile_max_chunk 1m;
autoindex on;
autoindex_exact_size off;
autoindex_format html;
autoindex_localtime on;
}
location /repo/ {
allow all;
sendfile on;
sendfile_max_chunk 1m;
autoindex on;
autoindex_exact_size off;
autoindex_format html;
autoindex_localtime on;
}
{%- endif %}
location /grafana/ {

File diff suppressed because one or more lines are too long

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