Compare commits

..

665 Commits

Author SHA1 Message Date
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
192 changed files with 4413 additions and 2574 deletions
+1
View File
@@ -0,0 +1 @@
GRIDFIX
+2 -2
View File
@@ -1,6 +1,6 @@
## Security Onion 2.3.30
## Security Onion 2.3.50
Security Onion 2.3.30 is here!
Security Onion 2.3.50 is here!
## Screenshots
+12 -11
View File
@@ -1,16 +1,17 @@
### 2.3.30 ISO image built on 2021/03/01
### 2.3.50 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.50 ISO image:
https://download.securityonion.net/file/securityonion/securityonion-2.3.50.iso
MD5: 65202BA0F7661A5E27087F097B8E571E
SHA1: 14E842E39EDBB55A104263281CF25BF88A2E9D67
SHA256: 210B37B9E3DFC827AFE2940E2C87B175ADA968EDD04298A5926F63D9269847B7
MD5: C39CEA68B5A8AFC5CFFB2481797C0374
SHA1: 00AD9F29ABE3AB495136989E62EBB8FA00DA82C6
SHA256: D77AE370D7863837A989F6735413D1DD46B866D8D135A4C363B0633E3990387E
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.50.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.50.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.50.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.50.iso.sig securityonion-2.3.50.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 Tue 27 Apr 2021 02:17:25 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.
+1 -1
View File
@@ -1 +1 @@
2.3.30
2.3.50
+1 -1
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
-71
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 %}
+3 -2
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:
+1 -1
View File
@@ -1 +1 @@
net.ipv4.ip_local_reserved_ports="55000,57314"
net.ipv4.ip_local_reserved_ports=55000,57314,47760-47860
+2
View File
@@ -0,0 +1,2 @@
{%- set VERSION = salt['pillar.get']('global:soversion') -%}
{{ VERSION }}
+6
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
+58 -20
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:
@@ -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
@@ -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
+126
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}
+1 -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
+1 -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_USER=$USER
+89
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)
-12
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
+21
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
@@ -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;
@@ -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
+25
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
@@ -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
+21
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
+21
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
+25
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
@@ -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
@@ -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
-53
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
-3
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"
+1 -5
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"
+13
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
+25
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
+25
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
View File
View File
+4
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
+4 -2
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 %}
Regular → Executable
+17 -10
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__':
+2 -2
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
+166 -72
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
View File
+405 -262
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,16 +213,6 @@ 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)
@@ -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
@@ -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
+2 -2
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
+3 -80
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 %}
+2 -2
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
@@ -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):
+2 -1
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:
+16 -27
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 %}
-2
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 } },
@@ -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" } }
]
}
@@ -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" } }
]
}
@@ -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 } }
]
}
@@ -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" } }
]
}
@@ -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" } }
]
@@ -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" } }
]
}
}
@@ -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 } },
@@ -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
-17
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 %}
+2 -18
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
@@ -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",
+5 -3
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 }}
+2 -8
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
+21 -20
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:
+6 -3
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 %}
+3
View File
@@ -18,6 +18,9 @@ firewall:
beats_5644:
tcp:
- 5644
beats_5066:
tcp:
- 5066
cortex:
tcp:
- 9001
@@ -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,
@@ -5157,7 +5157,7 @@
"type": "fill"
}
],
"measurement": "esteps",
"measurement": "consumptioneps",
"orderByTime": "ASC",
"policy": "default",
"queryType": "randomWalk",
@@ -5562,7 +5562,7 @@
"type": "fill"
}
],
"measurement": "esteps",
"measurement": "consumptioneps",
"orderByTime": "ASC",
"policy": "default",
"queryType": "randomWalk",
+11 -31
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
+46
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'
+1 -1
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"
-53
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
+9 -1
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
+6 -2
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
+1 -18
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:
+1 -8
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
@@ -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 }}
}
}
@@ -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 %}
}
}
}
@@ -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 %}
}
}
}
@@ -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 %}
}
}
}
@@ -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 %}
}
}
}
@@ -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 %}
}
}
}
@@ -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 %}
}
}
}
@@ -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
}
}
}
@@ -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 %}
}
}
}
@@ -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 %}
}
}
}
@@ -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 %}
}
}
}
@@ -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 %}
}
}
}
@@ -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 %}
}
}
}
+6 -1
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 -%}
+2 -6
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
+14 -12
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
+1 -1
View File
@@ -89,7 +89,7 @@ def run():
# Update the Fleet host in the static pillar
for line in fileinput.input(STATICFILE, inplace=True):
line = re.sub(r'fleet_custom_hostname:.*\n', f"fleet_custom_hostname: {CUSTOMHOSTNAME}", line.rstrip())
line = re.sub(r'fleet_custom_hostname:.*$', f"fleet_custom_hostname: {CUSTOMHOSTNAME}", line.rstrip())
print(line)
return {}
@@ -0,0 +1,52 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.22 (GNU/Linux)
mQINBFeeyYwBEACyf4VwV8c2++J5BmCl6ofLCtSIW3UoVrF4F+P19k/0ngnSfjWb
8pSWB11HjZ3Mr4YQeiD7yY06UZkrCXk+KXDlUjMK3VOY7oNPkqzNaP6+8bDwj4UA
hADMkaXBvWooGizhCoBtDb1bSbHKcAnQ3PTdiuaqF5bcyKk8hv939CHulL2xH+BP
mmTBi+PM83pwvR+VRTOT7QSzf29lW1jD79v4rtXHJs4KCz/amT/nUm/tBpv3q0sT
9M9rH7MTQPdqvzMl122JcZST75GzFJFl0XdSHd5PAh2mV8qYak5NYNnwA41UQVIa
+xqhSu44liSeZWUfRdhrQ/Nb01KV8lLAs11Sz787xkdF4ad25V/Rtg/s4UXt35K3
klGOBwDnzPgHK/OK2PescI5Ve1z4x1C2bkGze+gk/3IcfGJwKZDfKzTtqkZ0MgpN
7RGghjkH4wpFmuswFFZRyV+s7jXYpxAesElDSmPJ0O07O4lQXQMROE+a2OCcm0eF
3+Cr6qxGtOp1oYMOVH0vOLYTpwOkAM12/qm7/fYuVPBQtVpTojjV5GDl2uGq7p0o
h9hyWnLeNRbAha0px6rXcF9wLwU5n7mH75mq5clps3sP1q1/VtP/Fr84Lm7OGke4
9eD+tPNCdRx78RNWzhkdQxHk/b22LCn1v6p1Q0qBco9vw6eawEkz1qwAjQARAQAB
tDFXYXp1aC5jb20gKFdhenVoIFNpZ25pbmcgS2V5KSA8c3VwcG9ydEB3YXp1aC5j
b20+iQI9BBMBCAAnAhsDBQsJCAcDBRUKCQgLBRYCAwEAAh4BAheABQJZHNOBBQkU
SgzvAAoJEJaz7l8pERFF6xUP/3SbcmrI/u7a2EqZ0GxwQ/LRkPzWkJRnozCtNYHD
ZjiZgSB/+77hkPS0tsBK/GXFLKfJAuf13XFrCvEuI4Q/pLOCCKIGumKXItUIwJBD
HiEmVt/XxIijmlF7O1jcWqE/5CQXofjr03WMx+qzNabIwU/6dTKZN4FrR1jDk7yS
6FYBsbhVcSoqSpGYx7EcuK3c3sKKtnbacK2Sw3K9n8Wdj+EK83cbpMg8D/efVRqv
xypeCeojtY10y4bmugEwMYPgFkrSbicuiZc8NA8qhvFp6JFRq/uL0PGACyg05wB3
S9U4wvSkmlo2/G74awna22UlaoYmSSz3UZdpWd2zBxflx17948QfTqyhO6bM8qLz
dSyR6/6olAcR1N+PBup8PoMdBte4ul/hJp8WIviW0AxJUTZSbVj5v/t43QAKEpCE
IMHvkK8PRHz/9kMd/2xN7LgMtihCrGZOnzErkjhlZvmiJ6kcJoD7ywzFnfJrntOU
DjNb3eqUFSEwmhD60Hd2OCkfmiV7NEE/YTd9B72NSwzj4Za/JUdlF64LMeIiHbYp
Lh7P+mR+lMJf/SWsQmlyuiQ2u8SY2aDFvzBS9WtpwiznuUdrbRN87+TYLSVqDifj
Ea3zOnzLaLYbOr6LHz1xbhAvInv7KLobgiw1E4WnBNWN8xVwVJLKNE7wV88k43XV
3L/RuQINBFeeyYwBEADD1Y3zW5OrnYZ6ghTd5PXDAMB8Z1ienmnb2IUzLM+i0yE2
TpKSP/XYCTBhFa390rYgFO2lbLDVsiz7Txd94nHrdWXGEQfwrbxsvdlLLWk7iN8l
Fb4B60OfRi3yoR96a/kIPNa0x26+n79LtDuWZ/DTq5JSHztdd9F1sr3h8i5zYmtv
luj99ZorpwYejbBVUm0+gP0ioaXM37uO56UFVQk3po9GaS+GtLnlgoE5volgNYyO
rkeIua4uZVsifREkHCKoLJip6P7S3kTyfrpiSLhouEZ7kV1lbMbFgvHXyjm+/AIx
HIBy+H+e+HNt5gZzTKUJsuBjx44+4jYsOR67EjOdtPOpgiuJXhedzShEO6rbu/O4
wM1rX45ZXDYa2FGblHCQ/VaS0ttFtztk91xwlWvjTR8vGvp5tIfCi+1GixPRQpbN
Y/oq8Kv4A7vB3JlJscJCljvRgaX0gTBzlaF6Gq0FdcWEl5F1zvsWCSc/Fv5WrUPY
5mG0m69YUTeVO6cZS1aiu9Qh3QAT/7NbUuGXIaAxKnu+kkjLSz+nTTlOyvbG7BVF
a6sDmv48Wqicebkc/rCtO4g8lO7KoA2xC/K/6PAxDrLkVyw8WPsAendmezNfHU+V
32pvWoQoQqu8ysoaEYc/j9fN4H3mEBCN3QUJYCugmHP0pu7VtpWwwMUqcGeUVwAR
AQABiQIlBBgBCAAPAhsMBQJZHNOaBQkUSg0HAAoJEJaz7l8pERFFhpkQAJ09mjjp
n9f18JGSMzP41fVucPuLBZ5XJL/hy2boII1FvgfmOETzNxLPblHdkJVjZS5iMrhL
EJ1jv+GQDtf68/0jO+HXuQIBmUJ53YwbuuQlLWH7CI2AxlSAKAn2kOApWMKsjnAv
JwS3eNGukOKWRfEKTqz2Vwi1H7M7ppypZ9keoyAoSIWb61gm7rXbfT+tVBetHfrU
EM5vz3AS3pJk6Yfqn10IZfiexXmsBD+SpJBNzMBsznCcWO2y4qZNLjFferBoizvV
34UnZyd1bkSN0T/MKp8sgJwqDJBS72tH6ZIM8NNoy29aPDkeaa8XlhkWiBdRizqL
BcxrV/1n3xdzfY9FX6s4KGudo+gYsVpY0mrpZU8jG8YUNLDXQTXnRo4CQOtRJJbA
RFDoZfsDqToZftuEhIsk+MaKlyXoA0eIYqGe6lXa/jEwvViqLYubCNLu0+kgNQ3v
hKF8Pf7eXFDAePw7guuvDvBOMQqBCaKCxsz1HoKRNYBEdUYrEQBJnX235Q4IsdI/
GcQ/dvERJXaDCG8EPhnwc517EMUJDiJ1CxT4+VMHphmFbiVqmctz0upIj+D037Xk
CcgxNte6LZorGRZ/l1MYINliGJKtCCFK7XGVPKiJ8zyGSyPj1FfwtBy5hUX3aQtm
bvP0H2BRCKoelsbRENu58BkU6YhiUry7pVul
=SJij
-----END PGP PUBLIC KEY BLOCK-----
@@ -0,0 +1,29 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (GNU/Linux)
mQINBFKuaIQBEAC1UphXwMqCAarPUH/ZsOFslabeTVO2pDk5YnO96f+rgZB7xArB
OSeQk7B90iqSJ85/c72OAn4OXYvT63gfCeXpJs5M7emXkPsNQWWSju99lW+AqSNm
jYWhmRlLRGl0OO7gIwj776dIXvcMNFlzSPj00N2xAqjMbjlnV2n2abAE5gq6VpqP
vFXVyfrVa/ualogDVmf6h2t4Rdpifq8qTHsHFU3xpCz+T6/dGWKGQ42ZQfTaLnDM
jToAsmY0AyevkIbX6iZVtzGvanYpPcWW4X0RDPcpqfFNZk643xI4lsZ+Y2Er9Yu5
S/8x0ly+tmmIokaE0wwbdUu740YTZjCesroYWiRg5zuQ2xfKxJoV5E+Eh+tYwGDJ
n6HfWhRgnudRRwvuJ45ztYVtKulKw8QQpd2STWrcQQDJaRWmnMooX/PATTjCBExB
9dkz38Druvk7IkHMtsIqlkAOQMdsX1d3Tov6BE2XDjIG0zFxLduJGbVwc/6rIc95
T055j36Ez0HrjxdpTGOOHxRqMK5m9flFbaxxtDnS7w77WqzW7HjFrD0VeTx2vnjj
GqchHEQpfDpFOzb8LTFhgYidyRNUflQY35WLOzLNV+pV3eQ3Jg11UFwelSNLqfQf
uFRGc+zcwkNjHh5yPvm9odR1BIfqJ6sKGPGbtPNXo7ERMRypWyRz0zi0twARAQAB
tChGZWRvcmEgRVBFTCAoNykgPGVwZWxAZmVkb3JhcHJvamVjdC5vcmc+iQI4BBMB
AgAiBQJSrmiEAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRBqL66iNSxk
5cfGD/4spqpsTjtDM7qpytKLHKruZtvuWiqt5RfvT9ww9GUUFMZ4ZZGX4nUXg49q
ixDLayWR8ddG/s5kyOi3C0uX/6inzaYyRg+Bh70brqKUK14F1BrrPi29eaKfG+Gu
MFtXdBG2a7OtPmw3yuKmq9Epv6B0mP6E5KSdvSRSqJWtGcA6wRS/wDzXJENHp5re
9Ism3CYydpy0GLRA5wo4fPB5uLdUhLEUDvh2KK//fMjja3o0L+SNz8N0aDZyn5Ax
CU9RB3EHcTecFgoy5umRj99BZrebR1NO+4gBrivIfdvD4fJNfNBHXwhSH9ACGCNv
HnXVjHQF9iHWApKkRIeh8Fr2n5dtfJEF7SEX8GbX7FbsWo29kXMrVgNqHNyDnfAB
VoPubgQdtJZJkVZAkaHrMu8AytwT62Q4eNqmJI1aWbZQNI5jWYqc6RKuCK6/F99q
thFT9gJO17+yRuL6Uv2/vgzVR1RGdwVLKwlUjGPAjYflpCQwWMAASxiv9uPyYPHc
ErSrbRG0wjIfAR3vus1OSOx3xZHZpXFfmQTsDP7zVROLzV98R3JwFAxJ4/xqeON4
vCPFU6OsT3lWQ8w7il5ohY95wmujfr6lk89kEzJdOTzcn7DBbUru33CQMGKZ3Evt
RjsC7FDbL017qxS+ZVA/HGkyfiu4cpgV8VUnbql5eAZ+1Ll6Dw==
=hdPa
-----END PGP PUBLIC KEY BLOCK-----

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