Compare commits

...

564 Commits

Author SHA1 Message Date
Mike Reeves
5344d30d56 Merge pull request #2003 from Security-Onion-Solutions/dev
2.3.10
2020-11-19 16:48:53 -05:00
Mike Reeves
4051111999 Update hashes and keys 2020-11-19 16:00:40 -05:00
Mike Reeves
316a1c02f1 Update soup to display what its doing 2020-11-19 15:19:50 -05:00
Josh Patterson
c07f62f8d1 Merge pull request #2007 from Security-Onion-Solutions/fix/minon
kill salt process with soup and dont restart salt-minion service when…
2020-11-19 15:17:58 -05:00
m0duspwnens
cdc7a5cc7c kill salt process with soup and dont restart salt-minion service when salt upgrade 2020-11-19 15:17:11 -05:00
Josh Patterson
10a3e6f414 Merge pull request #2006 from Security-Onion-Solutions/fix/minon
change typo on minon to minion
2020-11-19 15:11:16 -05:00
m0duspwnens
2a3951ab36 change typo on minon to minion 2020-11-19 15:08:08 -05:00
Mike Reeves
67a8c4e8cb Update Readme 2020-11-19 11:27:15 -05:00
Mike Reeves
177819447b Update Sigs and Hashes 2020-11-19 11:26:08 -05:00
Mike Reeves
3be1c9ae32 Clean up 2.3.1 dockers 2020-11-19 09:58:08 -05:00
Josh Brower
b79e1c3225 Merge pull request #1987 from Security-Onion-Solutions/bugfix/playbookdb-user
playbook mysqluser
2020-11-18 20:48:49 -05:00
Josh Brower
d3065005ca playbook mysqluser 2020-11-18 20:48:02 -05:00
Josh Patterson
26e97d5875 Merge pull request #1984 from Security-Onion-Solutions/salt/3002.2
upgrade from salt 3002.1 to salt 3002.2
2020-11-18 18:26:11 -05:00
m0duspwnens
d68726f6ef upgrade from salt 3002.1 to salt 3002.2 2020-11-18 18:25:02 -05:00
Josh Patterson
f81da406da Merge pull request #1983 from Security-Onion-Solutions/soup-verify-salt
dont highstate, just restart salt-minion
2020-11-18 17:40:36 -05:00
m0duspwnens
afd466cd2b dont highstate, just restart salt-minion 2020-11-18 17:27:25 -05:00
Josh Patterson
6d228a836f Merge pull request #1982 from Security-Onion-Solutions/soup-verify-salt
add -X so bootstrap doesnt try to start salt-minion during soup
2020-11-18 16:45:05 -05:00
m0duspwnens
1805effdc0 add -X so bootstrap doesnt try to start salt-minion during soup 2020-11-18 16:32:53 -05:00
Jason Ertel
1170b04a87 Update changes for 2.3.10 2020-11-18 16:18:00 -05:00
Josh Patterson
c0b43d3319 Merge pull request #1981 from Security-Onion-Solutions/soup-verify-salt
add back -s
2020-11-18 15:50:04 -05:00
m0duspwnens
6cc9d1c076 add back -s 2020-11-18 15:49:30 -05:00
William Wernert
1c55bb6db2 [fix] Only backup /nsm/mysql and /nsm/wazuh 2020-11-18 15:34:40 -05:00
Josh Brower
3d0003555a Merge pull request #1980 from Security-Onion-Solutions/bugfix/soup-regen-osquery
SOUP - Regen Osquery Packages
2020-11-18 14:56:23 -05:00
Josh Brower
0830f63c4e SOUP - Regen Osquery Packages 2020-11-18 14:55:14 -05:00
Josh Patterson
adbd8d6956 Merge pull request #1979 from Security-Onion-Solutions/soup-verify-salt
Soup verify salt
2020-11-18 14:49:03 -05:00
William Wernert
80d0080f70 [fix] Only set is_reinstall if it's needed 2020-11-18 14:47:53 -05:00
m0duspwnens
af6e14dc6f highstate , merge with dev fix conflict 2020-11-18 14:47:40 -05:00
William Wernert
8b6b7cbd11 [fix] Check if $is_reinstall is true 2020-11-18 14:46:22 -05:00
William Wernert
e65c53dbb1 [fix] Don't rename /nsm/docker-registry 2020-11-18 14:01:33 -05:00
m0duspwnens
ceef07b74b remove pkill 2020-11-18 14:00:01 -05:00
William Wernert
280cde43ff [fix] install_type -> setup_type 2020-11-18 13:51:55 -05:00
William Wernert
81b9658499 [fix] Don't remove accept_changes file 2020-11-18 13:51:55 -05:00
weslambert
04c6bed779 Merge pull request #1977 from Security-Onion-Solutions/fix/zeek_log_inode_cleanup
Change clean_removed to true to clean up tracking of Zeek logs removed fr…
2020-11-18 13:49:46 -05:00
weslambert
6b4af30fc1 Change clean_removed to true cleanup tracking of Zeek logs removed from current 2020-11-18 13:47:32 -05:00
m0duspwnens
1e2b404836 remove -s 2020-11-18 13:29:42 -05:00
m0duspwnens
276c011a4f queue state and change upgrade command https://github.com/Security-Onion-Solutions/securityonion/issues/1961 2020-11-18 13:22:11 -05:00
William Wernert
34fd80182e [fix][wip] Don't use variable for accept_changes file 2020-11-18 12:54:36 -05:00
Jason Ertel
57e9f69c97 Add new so-ip-update script (Work in progress) 2020-11-18 12:35:38 -05:00
William Wernert
0542e0aa04 [fix] info -> title 2020-11-18 12:35:16 -05:00
m0duspwnens
d0e7b5b55a only ensure salt-minion service is running if salt is on right verison https://github.com/Security-Onion-Solutions/securityonion/issues/1961 2020-11-18 12:32:21 -05:00
William Wernert
ad74b4b3e0 [refactor][fix] Update reinstall logic
* Only set reinstall flag if new accept_changes file exists
* Instead of stopping highstate from running, kill all salt processes and remove their configs
* Make end of non-reinstall logs clear in cases where user cancels (and log not rotated)
2020-11-18 12:29:54 -05:00
m0duspwnens
ce70e0a61f changes to upgradecommand https://github.com/Security-Onion-Solutions/securityonion/issues/1961 2020-11-18 11:51:28 -05:00
William Wernert
8a4defcffa [refactor] Check for setup log earlier
* Check for sosetuo.log before any scripts besides so-variables are sourced to make sure the log hasn't been created yet.
2020-11-18 11:16:36 -05:00
m0duspwnens
bddc3d6df9 kill all salt-minion again since they hang and redirect highstate to a logfile 2020-11-18 10:40:23 -05:00
m0duspwnens
4bb1ad9799 dont restart or kill salt-minon in upgrade command https://github.com/Security-Onion-Solutions/securityonion/issues/1961 2020-11-18 09:29:09 -05:00
William Wernert
bc0c395b7f Merge pull request #1963 from Security-Onion-Solutions/feature/rem-so-setup-perm-entry
Feature/rem so-setup perm entry
2020-11-18 09:12:25 -05:00
m0duspwnens
67dc71ab49 Merge remote-tracking branch 'remotes/origin/dev' into soup-verify-salt 2020-11-18 08:36:23 -05:00
m0duspwnens
c95619d335 change upgradecommand order https://github.com/Security-Onion-Solutions/securityonion/issues/1961 2020-11-18 08:35:56 -05:00
Jason Ertel
bfbc0f354c Only default to logging out to tty if tty exists as a character device 2020-11-17 22:48:40 -05:00
m0duspwnens
5c6e9e0e3a run a highstate and let that start the salt-minion back up https://github.com/Security-Onion-Solutions/securityonion/issues/1961 2020-11-17 19:40:42 -05:00
m0duspwnens
7291d64e82 pkill salt-minion before restartiong salt-minion service https://github.com/Security-Onion-Solutions/securityonion/issues/1961 2020-11-17 18:38:01 -05:00
m0duspwnens
695cce0b50 upgrad command changes https://github.com/Security-Onion-Solutions/securityonion/issues/1961 2020-11-17 17:54:56 -05:00
m0duspwnens
42126f125b change verison check to != 2020-11-17 17:00:59 -05:00
m0duspwnens
2bfc48be35 change check of salt was upgraded during soup for ubuntu and centos 2020-11-17 16:31:11 -05:00
m0duspwnens
7d1cf56160 change check of salt was upgraded during soup for ubuntu and centos 2020-11-17 16:29:35 -05:00
m0duspwnens
1fd2196dd5 fix check of salt was upgraded during soup for ubuntu and centos 2020-11-17 16:18:50 -05:00
m0duspwnens
65b84f1bd7 Merge remote-tracking branch 'remotes/origin/dev' into soup-verify-salt 2020-11-17 16:09:47 -05:00
m0duspwnens
fcfd3e3758 change location yum/apt verison locks https://github.com/Security-Onion-Solutions/securityonion/issues/1961 2020-11-17 16:09:30 -05:00
William Wernert
ee3708a428 [fix] Move sudoers check in soup to correct place + fix styling issue 2020-11-17 15:44:20 -05:00
William Wernert
b146700303 [feat] Remove so-setup permission from sudoers file after iso setup
Closes #1701
2020-11-17 15:36:25 -05:00
Jason Ertel
1ec8b52353 Replace scan.exiftool.* fields due to reduction in strelka field counts 2020-11-17 15:12:06 -05:00
Josh Patterson
f8346cde08 Merge pull request #1962 from Security-Onion-Solutions/soup-verify-salt
Soup verify salt
2020-11-17 15:08:32 -05:00
m0duspwnens
e162be2e1d change salt upgrade command https://github.com/Security-Onion-Solutions/securityonion/issues/1961 2020-11-17 14:29:39 -05:00
m0duspwnens
4f4f64a47d Merge remote-tracking branch 'remotes/origin/dev' into soup-verify-salt 2020-11-17 13:16:18 -05:00
m0duspwnens
4cd1086efa new way for soup to install and resart salt for upgrade 2020-11-17 13:15:55 -05:00
Mike Reeves
2184c3b8ee Revert "The Hive ES update"
This reverts commit 88c2ee0d36.
2020-11-17 12:51:42 -05:00
Mike Reeves
65d28f98b5 Revert "The Hive ES Update"
This reverts commit f31d459a24.
2020-11-17 12:51:13 -05:00
Jason Ertel
aa8d9c12a0 Remove yara rule update that can't succeed since the script doesn't exist at this point of the setup process 2020-11-17 12:15:27 -05:00
Mike Reeves
f31d459a24 The Hive ES Update 2020-11-17 11:59:03 -05:00
Mike Reeves
88c2ee0d36 The Hive ES update 2020-11-17 11:58:22 -05:00
Jason Ertel
d13733e716 Queue the registry state in case a highstate is already active 2020-11-17 09:59:09 -05:00
Josh Patterson
86922a2388 Merge pull request #1959 from Security-Onion-Solutions/soup-verify-salt
verify new salt version is installed during soup if not, exit before proceeding
2020-11-17 09:53:08 -05:00
m0duspwnens
65440f9aef verify new salt version is installed during soup if not, exit before proceeding 2020-11-17 09:51:28 -05:00
William Wernert
12c661101a Merge pull request #1958 from Security-Onion-Solutions/feat/require-min-nics
Feat/require min nics
2020-11-17 09:49:09 -05:00
William Wernert
79b63ed14b [fix] Use singular when needed for requirements 2020-11-17 09:47:08 -05:00
Josh Brower
cc4357d567 Merge pull request #1954 from Security-Onion-Solutions/bugfix/ingest-mappings
Cleanup & fix sysmon pid ingest
2020-11-17 09:05:31 -05:00
Jason Ertel
b9267ee015 Add missing newline after armor header 2020-11-17 09:00:02 -05:00
Jason Ertel
5c310327e4 Merge pull request #1942 from Security-Onion-Solutions/jertel/refactor-seed
Jertel/refactor seed
2020-11-16 18:46:28 -05:00
Jason Ertel
4311f66110 Remove unnecessary redirect 2020-11-16 16:58:09 -05:00
Josh Patterson
a8644478b5 Merge pull request #1939 from Security-Onion-Solutions/fix/nginx-nonmanager
fix nginx for non manaager/fleet nodes
2020-11-16 16:47:39 -05:00
m0duspwnens
4436f02f6d fix nginx for non manaager/fleet nodes 2020-11-16 16:46:22 -05:00
Jason Ertel
3cf8afc1dd Remove unused redirect descriptors and ensure gpg import output is not leaked to console 2020-11-16 16:39:54 -05:00
Josh Patterson
f1e33b6eea Merge pull request #1938 from Security-Onion-Solutions/fix/so.status-module
fix so-status to work with so.status module and change padding
2020-11-16 16:35:08 -05:00
m0duspwnens
0d9b22fe2d fix so-status to work with so.status module and change padding 2020-11-16 16:33:29 -05:00
William Wernert
a08923030b [feat] Exit setup if less than required number of NICs present 2020-11-16 16:26:38 -05:00
Jason Ertel
1ec4af1a4d Destroy the old registry before updating SO images 2020-11-16 15:41:15 -05:00
Jason Ertel
5ae78d4108 Install curl in order to test for cloud 2020-11-16 15:31:40 -05:00
Jason Ertel
3bae243915 Continued refactoring of bash 2020-11-16 15:20:00 -05:00
Jason Ertel
8234b6f835 Switch remaining containers over to new registries; Continued bash refactoring 2020-11-16 15:11:08 -05:00
Josh Patterson
55231eab25 Merge pull request #1934 from Security-Onion-Solutions/fix/so-status-in-setup
redirect output from setting up so-status stuff in so-setup
2020-11-16 14:57:58 -05:00
m0duspwnens
e956ee9324 redirect output from setting up so-status stuff in so-setup 2020-11-16 14:56:20 -05:00
Jason Ertel
a343e3f31e Save descriptors while inside the progress pipe 2020-11-16 14:10:48 -05:00
Jason Ertel
2ff738a61c Refactor docker_seed_registry to eliminate duplicate logic 2020-11-16 13:27:23 -05:00
William Wernert
c226c1d902 [fix] Redirect stderr when checking for link state 2020-11-16 11:30:47 -05:00
Josh Patterson
7a49c55ea0 Merge pull request #1930 from Security-Onion-Solutions/issue/1831
Issue/1831
2020-11-16 10:09:49 -05:00
m0duspwnens
cc50eba6cb make sure /opt/so/log/salt/so-salt-minion-check gets touched even if salt-minon verison isnt correct https://github.com/Security-Onion-Solutions/securityonion/issues/1831 2020-11-16 10:01:40 -05:00
m0duspwnens
5c25dcf192 add /opt/so/log/salt/so-salt-minion-check to log rotate https://github.com/Security-Onion-Solutions/securityonion/issues/1831 2020-11-16 09:50:10 -05:00
Jason Ertel
c744d389f7 More bash cleanup 2020-11-15 10:44:14 -05:00
Jason Ertel
76c917d977 Continued bash cleanup 2020-11-15 09:57:12 -05:00
Josh Brower
1908a68330 Cleanup & fix sysmon pid ingest 2020-11-14 16:19:23 -05:00
Jason Ertel
d22040fb5d Annual fall bash cleanup event 2020-11-14 11:53:31 -05:00
Jason Ertel
372f694cc1 Set curl type to 'features' when adding features to existing installation 2020-11-14 11:04:40 -05:00
Jason Ertel
1c079f7ff4 Remove duplicate docker pull/sigverify logic from so-features-enable; Provide current SO version to curl 2020-11-14 10:35:45 -05:00
m0duspwnens
4e6e29e7dc update logging 2020-11-13 20:26:06 -05:00
m0duspwnens
43a244e0da change log path https://github.com/Security-Onion-Solutions/securityonion/issues/1831 2020-11-13 19:37:03 -05:00
m0duspwnens
e958246457 touch file at start of highstate, just kill salt dont systemctl stop it https://github.com/Security-Onion-Solutions/securityonion/issues/1831 2020-11-13 19:34:17 -05:00
m0duspwnens
b210092534 logging changes issue/1831 2020-11-13 19:09:53 -05:00
m0duspwnens
e820c6fa42 logging changes issue/1831 2020-11-13 19:04:09 -05:00
m0duspwnens
71a409f210 fix threshold logic https://github.com/Security-Onion-Solutions/securityonion/issues/1831 2020-11-13 18:23:55 -05:00
m0duspwnens
a5823be0ac fix typo 2020-11-13 17:55:19 -05:00
Mike Reeves
13c261178a fix soup so-image-common 2020-11-13 17:26:04 -05:00
m0duspwnens
2f0eaff8b3 sbin 2020-11-13 17:25:45 -05:00
Mike Reeves
977eea131e fix soup so-image-common 2020-11-13 17:18:55 -05:00
Mike Reeves
fb9b07b0eb fix soup so-image-common 2020-11-13 17:13:05 -05:00
m0duspwnens
6a010bb3e6 change var name 2020-11-13 17:08:47 -05:00
Mike Reeves
51b3e066be fix soup so-image-common 2020-11-13 17:01:42 -05:00
Mike Reeves
7dfb8f5b12 fix soup so-image-common 2020-11-13 16:50:12 -05:00
Mike Reeves
23f2dee840 fix soup so-image-common 2020-11-13 16:30:34 -05:00
m0duspwnens
4275fcbf22 Merge remote-tracking branch 'remotes/origin/dev' into issue/1831 2020-11-13 16:28:58 -05:00
Jason Ertel
ee97f5eaac Remove unnecessary branch var; allow skipping of tag/push step 2020-11-13 16:17:09 -05:00
m0duspwnens
0a807621cc check health of salt-minion https://github.com/Security-Onion-Solutions/securityonion/issues/1831 2020-11-13 16:02:28 -05:00
Mike Reeves
8577fa63a3 fix network install download 2020-11-13 14:28:27 -05:00
Mike Reeves
50175f7e42 soup should now copy the common image functions 2020-11-13 14:25:29 -05:00
Mike Reeves
3173c6fd3c Change user agent string for docker refresh 2020-11-13 14:09:29 -05:00
Mike Reeves
069908ec56 Change user agent string for docker refresh 2020-11-13 13:55:26 -05:00
Mike Reeves
09f3199cc2 Change user agent string for docker refresh 2020-11-13 13:39:52 -05:00
Josh Brower
adec9ad48b Merge pull request #1916 from Security-Onion-Solutions/feature/so-playbook-reset
Feature/so playbook reset
2020-11-13 11:21:50 -05:00
Josh Brower
8b3262ce1b Add so-playbook-reset 2020-11-13 11:20:39 -05:00
weslambert
4fad0e3a98 Merge pull request #1914 from Security-Onion-Solutions/fix/syslog_parsing
Syslog updates
2020-11-13 11:07:53 -05:00
Wes Lambert
fddfb8eb92 Syslog updates 2020-11-13 16:06:22 +00:00
Jason Ertel
210a7bc65b Merge curator closed-delete-delete changes from the abandoned 2.3.3 release 2020-11-13 10:05:23 -05:00
William Wernert
8a7ff3260d Merge pull request #1911 from Security-Onion-Solutions/feature/ssh-harden-script
[feat] Add ssh-harden script
2020-11-13 09:00:07 -05:00
William Wernert
2f27b6f2fa [feat] Add ssh-harden script 2020-11-13 08:51:28 -05:00
Mike Reeves
52e909007f Change url and clean up sigs 2020-11-12 16:08:27 -05:00
Mike Reeves
80aeffe1ad Merge branch 'dev' of https://github.com/Security-Onion-Solutions/securityonion into dev 2020-11-12 11:53:41 -05:00
Mike Reeves
cbca2d702f Add Version back to sig files 2020-11-12 11:53:30 -05:00
Automation
af44cce423 Auto-publish so-acng image signature 2020-11-12 16:39:54 +00:00
Automation
7d81080076 Auto-publish so-grafana image signature 2020-11-12 16:39:24 +00:00
Automation
6194d85180 Auto-publish so-idstools image signature 2020-11-12 16:38:38 +00:00
Automation
88675ec2ee Auto-publish so-strelka-manager image signature 2020-11-12 16:37:53 +00:00
Automation
9c0a1bc8b9 Auto-publish so-fleet image signature 2020-11-12 16:37:24 +00:00
Automation
52babc686d Auto-publish so-fleet-launcher image signature 2020-11-12 16:36:51 +00:00
Automation
9370e5b8bc Auto-publish so-freqserver image signature 2020-11-12 16:36:01 +00:00
Automation
6c1d5451eb Auto-publish so-strelka-backend image signature 2020-11-12 16:35:16 +00:00
Automation
f50e6ab929 Auto-publish so-strelka-filestream image signature 2020-11-12 16:34:12 +00:00
Automation
67f18a02ea Auto-publish so-strelka-frontend image signature 2020-11-12 16:33:37 +00:00
Mike Reeves
7f491545fa Fix Variable for docker inspect 2020-11-12 11:31:27 -05:00
Automation
9b33201ba5 Auto-publish so-minio image signature 2020-11-12 16:30:56 +00:00
Mike Reeves
aefcb9a491 Fix Variable for docker 2020-11-12 11:28:58 -05:00
Automation
fee52f8b86 Auto-publish so-redis image signature 2020-11-12 16:28:23 +00:00
Automation
e434ccd3d3 Auto-publish so-soctopus image signature 2020-11-12 16:18:25 +00:00
Automation
70a0cbae23 Auto-publish so-telegraf image signature 2020-11-12 16:17:22 +00:00
Automation
04263101cf Auto-publish so-kibana image signature 2020-11-12 16:15:27 +00:00
Mike Reeves
312f99966e Change docker inspect to a variable to speed it up 2020-11-12 09:39:13 -05:00
Mike Reeves
667800d830 Change docker inspect to variable to speed it up 2020-11-12 09:35:19 -05:00
Mike Reeves
2fba02f71b Grab specific digest so re-installs work 2020-11-12 09:29:18 -05:00
Josh Patterson
4ce0b770a5 Merge pull request #1898 from jtgreen-cse/patch-3
fix for #1725, grafana queries use non_negative_ variants
2020-11-12 08:55:12 -05:00
Mike Reeves
1de862985c Merge pull request #1893 from Security-Onion-Solutions/gpg
GPG Docker Image Verification
2020-11-12 08:46:34 -05:00
Jason Green
4e40392c55 fix for #1725, grafana queries use non_negative_ variants 2020-11-12 07:34:51 -05:00
Automation
d1fe79b642 Auto-publish so-thehive-es image signature 2020-11-12 02:55:19 +00:00
Automation
f96cc35d37 Auto-publish so-thehive-cortex image signature 2020-11-12 02:53:56 +00:00
Automation
388f1e753d Auto-publish so-strelka-manager image signature 2020-11-12 02:52:24 +00:00
Automation
42382d00d8 Auto-publish so-strelka-frontend image signature 2020-11-12 02:51:38 +00:00
Automation
b086f5e5c1 Auto-publish so-strelka-filestream image signature 2020-11-12 02:50:51 +00:00
Automation
0b0f9854f9 Auto-publish so-strelka-backend image signature 2020-11-12 02:49:47 +00:00
Automation
3107f46940 Auto-publish so-logstash image signature 2020-11-12 02:48:28 +00:00
Automation
202c672798 Auto-publish so-kibana image signature 2020-11-12 02:47:00 +00:00
Automation
6ac1bc5623 Auto-publish so-freqserver image signature 2020-11-12 02:45:21 +00:00
Automation
e002015ce2 Auto-publish so-fleet-launcher image signature 2020-11-12 02:44:31 +00:00
Automation
61b5e009c7 Auto-publish so-filebeat image signature 2020-11-12 02:43:27 +00:00
Automation
f3aadcd553 Auto-publish so-elasticsearch image signature 2020-11-12 02:42:22 +00:00
Automation
71370d4522 Auto-publish so-elasticsearch image signature 2020-11-12 02:41:12 +00:00
Automation
c287b5f826 Auto-publish so-elastalert image signature 2020-11-12 02:39:48 +00:00
Automation
4286ac0dfd Auto-publish so-domainstats image signature 2020-11-12 02:38:46 +00:00
Automation
adc937295b Auto-publish so-tcpreplay image signature 2020-11-12 02:37:39 +00:00
Automation
96bf2c57e7 Auto-publish so-pcaptools image signature 2020-11-12 02:36:20 +00:00
Automation
5f7a28dd5d Auto-publish so-telegraf image signature 2020-11-12 02:35:22 +00:00
Automation
3560ba933b Auto-publish so-suricata image signature 2020-11-12 02:34:18 +00:00
Automation
9c20450832 Auto-publish so-soctopus image signature 2020-11-12 02:33:10 +00:00
Automation
d71daef2e9 Auto-publish so-playbook image signature 2020-11-12 02:31:59 +00:00
Automation
c3ae80e2c1 Auto-publish so-logstash image signature 2020-11-12 02:30:36 +00:00
Automation
2098dd16ff Auto-publish so-influxdb image signature 2020-11-12 02:29:02 +00:00
Automation
3b4c9e02e7 Auto-publish so-idstools image signature 2020-11-12 02:28:04 +00:00
Automation
adc99ff06d Auto-publish so-filebeat image signature 2020-11-12 02:26:57 +00:00
Automation
f9b26c9a8f Auto-publish so-thehive image signature 2020-11-12 02:25:44 +00:00
Automation
41a123c22b Auto-publish so-grafana image signature 2020-11-12 02:24:19 +00:00
Automation
966089e1d0 Auto-publish so-curator image signature 2020-11-12 02:22:56 +00:00
Automation
3034d5ef98 Auto-publish so-kratos image signature 2020-11-12 02:22:11 +00:00
Automation
5ab169ea52 Auto-publish so-kibana image signature 2020-11-12 02:21:20 +00:00
Automation
f858027da1 Auto-publish so-wazuh image signature 2020-11-12 02:19:52 +00:00
Automation
c7517b37fa Auto-publish so-steno image signature 2020-11-12 02:18:25 +00:00
Automation
2f315ba5a0 Auto-publish so-redis image signature 2020-11-12 02:17:06 +00:00
Automation
ed883f173b Auto-publish so-mysql image signature 2020-11-12 02:16:12 +00:00
Automation
a46ad6fe81 Auto-publish so-minio image signature 2020-11-12 02:15:06 +00:00
Automation
42fc0add5e Auto-publish so-fleet image signature 2020-11-12 02:14:08 +00:00
Automation
f6c2983bd1 Auto-publish so-zeek image signature 2020-11-12 02:12:58 +00:00
Automation
0b8e19bfc8 Auto-publish so-acng image signature 2020-11-12 02:11:20 +00:00
Automation
bee829697e Auto-publish so-soc image signature 2020-11-12 02:10:11 +00:00
Mike Reeves
ed025851ca Change soup for new gpg verification 2020-11-11 20:13:21 -05:00
Automation
94ab77b14d Auto-publish so-nginx image signature 2020-11-12 00:57:45 +00:00
Mike Reeves
b113dce140 remove size from gpg sig 2020-11-11 19:49:25 -05:00
Automation
a2ef12eb6a Auto-publish so-nginx image signature 2020-11-12 00:46:11 +00:00
Automation
eb0b909cd2 Auto-publish so-nginx image signature 2020-11-12 00:41:23 +00:00
Automation
7ef2056f17 Auto-publish so-steno image signature 2020-11-11 22:17:26 +00:00
Automation
b12f29d48a Auto-publish so-thehive-es image signature 2020-11-11 22:16:06 +00:00
Automation
5fd1fd9b0d Auto-publish so-thehive-cortex image signature 2020-11-11 22:14:47 +00:00
Automation
ad0ecff8c5 Auto-publish so-strelka-manager image signature 2020-11-11 22:13:19 +00:00
Automation
88b6ae1b2f Auto-publish so-strelka-frontend image signature 2020-11-11 22:12:32 +00:00
Automation
9772fd181c Auto-publish so-strelka-filestream image signature 2020-11-11 22:11:36 +00:00
Automation
cfff8319bb Auto-publish so-strelka-backend image signature 2020-11-11 22:10:44 +00:00
Automation
0dc7c8b0e7 Auto-publish so-logstash image signature 2020-11-11 22:09:47 +00:00
Automation
3ccd8b40b2 Auto-publish so-kibana image signature 2020-11-11 22:08:21 +00:00
Automation
ca94bd12cf Auto-publish so-fleet-launcher image signature 2020-11-11 22:06:47 +00:00
Automation
d650e68472 Auto-publish so-filebeat image signature 2020-11-11 22:05:38 +00:00
Automation
70f9bad827 Auto-publish so-elasticsearch image signature 2020-11-11 22:04:36 +00:00
Automation
c3d6e168ae Auto-publish so-elasticsearch image signature 2020-11-11 22:03:08 +00:00
Automation
5c9c1915f1 Auto-publish so-domainstats image signature 2020-11-11 22:01:41 +00:00
Automation
32912f2c87 Auto-publish so-freqserver image signature 2020-11-11 22:00:41 +00:00
Automation
fb70e1e40c Auto-publish so-elastalert image signature 2020-11-11 21:59:35 +00:00
Automation
4106d88338 Auto-publish so-tcpreplay image signature 2020-11-11 21:58:50 +00:00
Automation
93f57b73e2 Auto-publish so-pcaptools image signature 2020-11-11 21:57:37 +00:00
Automation
4fa0b6be0e Auto-publish so-telegraf image signature 2020-11-11 21:56:53 +00:00
Automation
7ec2d85286 Auto-publish so-suricata image signature 2020-11-11 21:56:06 +00:00
Automation
763d5425a5 Auto-publish so-soctopus image signature 2020-11-11 21:55:11 +00:00
Automation
4be594cbb9 Auto-publish so-playbook image signature 2020-11-11 21:54:12 +00:00
Automation
e6fd3160ca Auto-publish so-logstash image signature 2020-11-11 21:52:59 +00:00
Automation
07871987e4 Auto-publish so-influxdb image signature 2020-11-11 21:51:49 +00:00
Automation
3c33a38098 Auto-publish so-idstools image signature 2020-11-11 21:50:43 +00:00
Automation
b24bf9b6a9 Auto-publish so-filebeat image signature 2020-11-11 21:49:41 +00:00
Automation
373d9256f2 Auto-publish so-thehive image signature 2020-11-11 21:48:26 +00:00
Automation
dde7e0bd11 Auto-publish so-grafana image signature 2020-11-11 21:46:55 +00:00
Automation
017c9c9874 Auto-publish so-curator image signature 2020-11-11 21:45:36 +00:00
Automation
871f919c27 Auto-publish so-kratos image signature 2020-11-11 21:44:53 +00:00
Automation
f67c26a8f2 Auto-publish so-kibana image signature 2020-11-11 21:43:58 +00:00
Automation
038e8fceb7 Auto-publish so-wazuh image signature 2020-11-11 21:42:21 +00:00
weslambert
8c6adc21a8 Merge pull request #1891 from Security-Onion-Solutions/syslog_cef
Update syslog pipeline to allow for initial CEF parsing and pipeline …
2020-11-11 16:40:55 -05:00
Automation
75b26fb2af Auto-publish so-redis image signature 2020-11-11 21:39:49 +00:00
Wes Lambert
8258b782fc Update syslog pipeline to allow for initial CEF parsing and pipeline targeting 2020-11-11 21:39:40 +00:00
Automation
d73542d274 Auto-publish so-nginx image signature 2020-11-11 21:38:45 +00:00
Automation
1092aa2cb1 Auto-publish so-mysql image signature 2020-11-11 21:37:49 +00:00
Automation
8668cf9a9c Auto-publish so-minio image signature 2020-11-11 21:36:45 +00:00
Automation
b9440364f7 Auto-publish so-fleet image signature 2020-11-11 21:35:44 +00:00
Automation
4f0ebfaf1f Auto-publish so-zeek image signature 2020-11-11 21:34:50 +00:00
Automation
b090656269 Auto-publish so-acng image signature 2020-11-11 21:33:29 +00:00
Automation
16e0a26869 Auto-publish so-soc image signature 2020-11-11 21:30:17 +00:00
Automation
bc362acf82 Auto-publish so-soc image signature 2020-11-11 21:05:43 +00:00
Jason Ertel
79cbc747ea Run leaktest on any branch 2020-11-11 15:52:48 -05:00
Mike Reeves
2269695e75 Change gpg to sig 2020-11-11 15:50:52 -05:00
Jason Ertel
710afe9355 Merge pull request #1889 from Security-Onion-Solutions/leaktest
Create leaktest.yml
2020-11-11 15:46:50 -05:00
Jason Ertel
ac236a0538 Move image sigs into versioned dir 2020-11-11 15:42:25 -05:00
Jason Ertel
eb7e8079ec Create leaktest.yml 2020-11-11 15:39:06 -05:00
Mike Reeves
8512042132 Change Sig Path 2020-11-11 15:37:11 -05:00
Automation
a234e1c898 Auto-publish so-thehive-es image signature 2020-11-11 20:20:56 +00:00
Automation
25c91192a1 Auto-publish so-thehive-cortex image signature 2020-11-11 20:19:33 +00:00
Automation
22f19bbe9e Auto-publish so-strelka-manager image signature 2020-11-11 20:18:03 +00:00
Automation
3b31a8d8cb Auto-publish so-strelka-frontend image signature 2020-11-11 20:17:09 +00:00
Automation
cd868d1edb Auto-publish so-strelka-filestream image signature 2020-11-11 20:16:30 +00:00
Automation
b31ea84c00 Auto-publish so-strelka-backend image signature 2020-11-11 20:15:36 +00:00
Automation
4ed6355186 Auto-publish so-logstash image signature 2020-11-11 20:14:14 +00:00
Automation
e51c2152fa Auto-publish so-kibana image signature 2020-11-11 20:12:38 +00:00
Automation
7af1b7a539 Auto-publish so-fleet-launcher image signature 2020-11-11 20:11:29 +00:00
Automation
debbe965fe Auto-publish so-filebeat image signature 2020-11-11 20:10:27 +00:00
Automation
3bbaca41c9 Auto-publish so-elasticsearch image signature 2020-11-11 20:09:30 +00:00
Automation
f2d25439e2 Auto-publish so-elasticsearch image signature 2020-11-11 20:08:10 +00:00
Automation
472fdd935e Auto-publish so-domainstats image signature 2020-11-11 20:06:33 +00:00
Automation
14304c0f28 Auto-publish so-freqserver image signature 2020-11-11 20:05:36 +00:00
Automation
6a60890c36 Auto-publish so-elastalert image signature 2020-11-11 20:04:37 +00:00
Automation
687120ce4a Auto-publish so-tcpreplay image signature 2020-11-11 20:03:28 +00:00
Automation
5e3f99c567 Auto-publish so-pcaptools image signature 2020-11-11 20:02:05 +00:00
Automation
c2ed0a6c72 Auto-publish so-telegraf image signature 2020-11-11 20:00:55 +00:00
Automation
8ed6a3ed78 Auto-publish so-suricata image signature 2020-11-11 19:59:46 +00:00
Automation
0511c851a2 Auto-publish so-soctopus image signature 2020-11-11 19:58:35 +00:00
Automation
0c7db56053 Auto-publish so-playbook image signature 2020-11-11 19:57:18 +00:00
Automation
7fae7500e8 Auto-publish so-logstash image signature 2020-11-11 19:55:41 +00:00
Automation
25b771d36f Auto-publish so-influxdb image signature 2020-11-11 19:54:19 +00:00
Automation
6febc290a8 Auto-publish so-idstools image signature 2020-11-11 19:53:15 +00:00
Automation
9e9a023377 Auto-publish so-thehive image signature 2020-11-11 19:52:11 +00:00
Automation
f069b8cced Auto-publish so-filebeat image signature 2020-11-11 19:50:50 +00:00
Automation
0d42bfb7f4 Auto-publish so-grafana image signature 2020-11-11 19:49:26 +00:00
Automation
4ccc898054 Auto-publish so-curator image signature 2020-11-11 19:48:16 +00:00
Automation
2010712929 Auto-publish so-kratos image signature 2020-11-11 19:47:11 +00:00
Automation
0ad0255e8c Auto-publish so-kibana image signature 2020-11-11 19:46:20 +00:00
Automation
ca28cc7a17 Auto-publish so-wazuh image signature 2020-11-11 19:44:58 +00:00
Automation
0fce6823db Auto-publish so-steno image signature 2020-11-11 19:43:44 +00:00
Automation
0db072d9b2 Auto-publish so-redis image signature 2020-11-11 19:42:27 +00:00
Automation
0c3a7a6214 Auto-publish so-nginx image signature 2020-11-11 19:41:26 +00:00
Automation
a58b487a0a Auto-publish so-mysql image signature 2020-11-11 19:40:32 +00:00
Automation
061b8d5b9b Auto-publish so-minio image signature 2020-11-11 19:39:38 +00:00
Automation
ff1dab283c Auto-publish so-fleet image signature 2020-11-11 19:38:45 +00:00
Automation
319867ef10 Auto-publish so-zeek image signature 2020-11-11 19:38:01 +00:00
Automation
c21131b77a Auto-publish so-acng image signature 2020-11-11 19:36:46 +00:00
Automation
638d9ddee3 Auto-publish so-soc image signature 2020-11-11 19:35:45 +00:00
Automation
dded28a54a Auto-publish so-kibana image signature 2020-11-11 19:33:55 +00:00
Automation
7132011ece Auto-publish so-steno image signature 2020-11-11 19:32:05 +00:00
Mike Reeves
3a622ee71e Hash and sig update 2020-11-11 14:29:47 -05:00
Automation
fdc1468a11 Auto-publish so-wazuh image signature 2020-11-11 18:54:25 +00:00
Automation
691f64f8a3 Auto-publish so-nginx image signature 2020-11-11 18:53:13 +00:00
Mike Reeves
a29def504e Merge branch 'dev' of https://github.com/Security-Onion-Solutions/securityonion into gpg 2020-11-11 13:52:31 -05:00
Mike Reeves
8160ef104d Merge pull request #1887 from Security-Onion-Solutions/scriptpids
Make sure scripts don't run if they are already running
2020-11-11 13:51:51 -05:00
Automation
52ee26c334 Auto-publish so-mysql image signature 2020-11-11 18:25:23 +00:00
Automation
d2c1fed2df Auto-publish so-strelka-backend image signature 2020-11-11 18:14:28 +00:00
Automation
1521224100 Auto-publish so-strelka-filestream image signature 2020-11-11 18:12:47 +00:00
Automation
97f5f8438c Auto-publish so-thehive-es image signature 2020-11-11 18:11:17 +00:00
Mike Reeves
978ba5b3ad Update zeekloss.sh 2020-11-11 13:09:52 -05:00
Automation
80b926bc31 Auto-publish so-logstash image signature 2020-11-11 18:09:41 +00:00
Mike Reeves
a4df3623be Update zeekcaptureloss.sh 2020-11-11 13:09:31 -05:00
Mike Reeves
4a80c37167 Update suriloss.sh 2020-11-11 13:09:08 -05:00
Mike Reeves
8e88c350d5 Update stenoloss.sh 2020-11-11 13:08:43 -05:00
Mike Reeves
a6a9f03cb0 Update redis.sh 2020-11-11 13:08:28 -05:00
Automation
3a9c9e3d99 Auto-publish so-strelka-frontend image signature 2020-11-11 18:08:03 +00:00
Automation
307af1248c Auto-publish so-thehive-cortex image signature 2020-11-11 18:05:26 +00:00
Automation
0224adb7c8 Auto-publish so-strelka-manager image signature 2020-11-11 18:02:54 +00:00
Automation
f4a804b88c Auto-publish so-fleet-launcher image signature 2020-11-11 17:58:56 +00:00
Automation
ea88fa7319 Auto-publish so-soctopus image signature 2020-11-11 17:56:28 +00:00
Mike Reeves
c9bfd8a253 Update oldpcap.sh 2020-11-11 12:55:28 -05:00
Mike Reeves
ee0e1ce8d7 Update influxdbsize.sh 2020-11-11 12:55:08 -05:00
Mike Reeves
814aa85dba Update helixeps.sh 2020-11-11 12:54:48 -05:00
Mike Reeves
c5ddddda2a Update checkfiles.sh 2020-11-11 12:54:31 -05:00
Mike Reeves
c75536db6d Update so-curator-delete 2020-11-11 12:54:04 -05:00
Mike Reeves
c11d8367fa Update so-curator-closed-delete-delete 2020-11-11 12:53:36 -05:00
Mike Reeves
8320421d42 Update so-curator-closed-delete 2020-11-11 12:53:05 -05:00
Automation
33bf799b47 Auto-publish so-freqserver image signature 2020-11-11 17:52:55 +00:00
Mike Reeves
047ab95e68 Update so-curator-close 2020-11-11 12:52:38 -05:00
Mike Reeves
2eb3378b62 Update so-curator-closed-delete 2020-11-11 12:50:59 -05:00
Automation
a354a6279b Auto-publish so-idstools image signature 2020-11-11 17:49:25 +00:00
Mike Reeves
578250a994 Update so-curator-delete 2020-11-11 12:48:55 -05:00
Mike Reeves
e68f90c3b5 Update so-curator-closed-delete-delete 2020-11-11 12:48:28 -05:00
Automation
5a9211693c Auto-publish so-kratos image signature 2020-11-11 17:48:03 +00:00
Automation
1e2df983af Auto-publish so-redis image signature 2020-11-11 17:46:57 +00:00
Mike Reeves
d85c99abf3 Update so-curator-close 2020-11-11 12:46:44 -05:00
Mike Reeves
c0897c7e5a Update so-curator-close 2020-11-11 12:46:19 -05:00
Automation
b4989c6c0e Auto-publish so-minio image signature 2020-11-11 17:43:17 +00:00
Automation
7a79ef6ddb Auto-publish so-zeek image signature 2020-11-11 17:41:08 +00:00
Automation
8aa3a508fa Auto-publish so-acng image signature 2020-11-11 17:39:18 +00:00
Automation
b320a1d63e Auto-publish so-fleet image signature 2020-11-11 17:12:03 +00:00
Automation
2a119d7824 Auto-publish so-soc image signature 2020-11-11 17:08:52 +00:00
Mike Reeves
73c17b77ae Update zeekcaptureloss.sh 2020-11-11 11:43:48 -05:00
Mike Reeves
edb0d71e87 Update zeekloss.sh 2020-11-11 11:43:28 -05:00
Mike Reeves
6ff1922788 Update zeekcaptureloss.sh 2020-11-11 11:42:58 -05:00
Josh Patterson
758bee3a20 Merge pull request #1886 from Security-Onion-Solutions/issue/1681
Issue/1681
2020-11-11 11:40:08 -05:00
m0duspwnens
529da993aa Merge remote-tracking branch 'remotes/origin/dev' into issue/1681 2020-11-11 11:39:08 -05:00
m0duspwnens
5a95159ec3 just use so-status.conf for containers to fix salt warning https://github.com/Security-Onion-Solutions/securityonion/issues/1681 2020-11-11 11:38:48 -05:00
Automation
fc9c31706d Auto-publish so-acng image signature 2020-11-11 16:31:42 +00:00
Mike Reeves
9548b3df54 Update stenoloss.sh 2020-11-11 11:23:20 -05:00
Mike Reeves
d3f65ac1a8 Update redis.sh 2020-11-11 11:22:52 -05:00
Mike Reeves
cb46c13054 Update oldpcap.sh 2020-11-11 11:22:28 -05:00
Mike Reeves
a4d3e109e6 Update influxdbsize.sh 2020-11-11 11:17:18 -05:00
Mike Reeves
711f5ab38f Update helixeps.sh 2020-11-11 11:16:47 -05:00
Mike Reeves
ea1227de9d Update checkfiles.sh 2020-11-11 11:16:15 -05:00
Mike Reeves
f9b52677d7 Update suriloss.sh 2020-11-11 11:15:45 -05:00
weslambert
533a65205f Merge pull request #1885 from Security-Onion-Solutions/fix/syslog_application
Add check for field
2020-11-11 10:33:24 -05:00
weslambert
ea1f53b40c Add check for field 2020-11-11 10:29:58 -05:00
Josh Patterson
0f4f029e92 Merge pull request #1883 from Security-Onion-Solutions/issue/1857
add top change for fleet getting mysql state back
2020-11-11 09:18:06 -05:00
m0duspwnens
da9a915421 add top change for fleet getting mysql state back was reverted in https://github.com/Security-Onion-Solutions/securityonion/pull/1880/files 2020-11-11 09:15:50 -05:00
weslambert
280fc501f9 Merge pull request #1882 from Security-Onion-Solutions/fix/extra_top_var
Fix duplicate vars
2020-11-11 08:53:43 -05:00
weslambert
625307ac5f Fix duplicate vars 2020-11-11 08:52:39 -05:00
weslambert
44677ad521 Merge pull request #1880 from Security-Onion-Solutions/disable_elastic
Allow for disabling Elastic stack via pillar
2020-11-11 08:29:23 -05:00
Wes Lambert
1c326f561b Allow for disabling Elastic stack via pillar 2020-11-11 13:26:59 +00:00
Josh Patterson
7b64f93bce Merge pull request #1874 from Security-Onion-Solutions/issue/1681
Issue/1681
2020-11-10 17:57:48 -05:00
m0duspwnens
15f243f0ce change names of acng and docker registry containers https://github.com/Security-Onion-Solutions/securityonion/issues/1681 2020-11-10 17:51:00 -05:00
m0duspwnens
edb00c2058 remove redundant common from top, create so-status conf files on manager before registry state https://github.com/Security-Onion-Solutions/securityonion/issues/1681 2020-11-10 17:09:38 -05:00
m0duspwnens
9e612e98ed merge with dev 2020-11-10 15:43:40 -05:00
m0duspwnens
1fc94a8f59 change to so-acng for so-status https://github.com/Security-Onion-Solutions/securityonion/issues/1681 2020-11-10 15:37:03 -05:00
m0duspwnens
c58039ab47 rename state https://github.com/Security-Onion-Solutions/securityonion/issues/1681 2020-11-10 15:34:10 -05:00
m0duspwnens
1fca5e65df redo how containers get added to so-status https://github.com/Security-Onion-Solutions/securityonion/issues/1681 2020-11-10 15:31:47 -05:00
Mike Reeves
9a59ceee4e move to so-image-common 2020-11-10 12:16:54 -05:00
Mike Reeves
c5bf9bf90d rework soup and docker refresh 2020-11-10 12:05:08 -05:00
William Wernert
676b4f0777 [fix] Close connection in mysql_conn module 2020-11-10 11:42:40 -05:00
William Wernert
6557155a8a Merge pull request #1868 from Security-Onion-Solutions/feature/improve-mysql-dep
Feature/improve mysql dep
2020-11-10 11:04:23 -05:00
William Wernert
d3227bbcb1 [refactor] Code cleanup pt. 3 2020-11-10 11:03:43 -05:00
William Wernert
7f218e5297 [feat] Also run query against mysql to ensure queries can complete 2020-11-10 11:02:34 -05:00
William Wernert
b3c527e7a9 [refactor] Code cleanup pt. 2 2020-11-10 10:05:06 -05:00
William Wernert
54d732a060 [refactor] Code cleanup 2020-11-10 10:01:10 -05:00
William Wernert
22b7de819c [fix] Put mysql import in try,catch in case it hasn't been installed 2020-11-10 10:00:21 -05:00
William Wernert
dba30fb0ed [refactor] Split 15 min mysql startup between two wait states 2020-11-10 09:48:20 -05:00
Mike Reeves
7ca8fefded gpg sign images 2020-11-10 09:45:06 -05:00
Josh Patterson
95b24b1684 Merge pull request #1865 from Security-Onion-Solutions/issue/1864
make so-status line color same as service state
2020-11-09 18:17:05 -05:00
m0duspwnens
66cd91c0a7 make so-status line color same as service state https://github.com/Security-Onion-Solutions/securityonion/issues/1864 2020-11-09 18:16:02 -05:00
Josh Patterson
64199c81e1 Merge pull request #1863 from Security-Onion-Solutions/issue/1857
Issue/1857
2020-11-09 17:54:25 -05:00
m0duspwnens
ae5bc297dd remove extra squigly https://github.com/Security-Onion-Solutions/securityonion/issues/1857 2020-11-09 17:06:32 -05:00
m0duspwnens
f5a1bd4074 only try to get enrollsecret if fleet is already enabled https://github.com/Security-Onion-Solutions/securityonion/issues/1857 2020-11-09 16:25:28 -05:00
m0duspwnens
407a655717 merge with dev 2020-11-09 15:29:19 -05:00
m0duspwnens
0e19594c97 enable fleet in global pillars before running fleet state during setup https://github.com/Security-Onion-Solutions/securityonion/issues/1857 2020-11-09 15:25:11 -05:00
William Wernert
ff4d7a6cb6 [fix] Sync modules so states can use our modules during setup 2020-11-09 14:01:19 -05:00
William Wernert
f647a06239 [fix] Correct percentage steps 2020-11-09 13:37:42 -05:00
Josh Patterson
d122ca1ba3 Merge pull request #1861 from Security-Onion-Solutions/issue/1857
fix top logic for mysql for fleet/playbook
2020-11-09 13:16:28 -05:00
m0duspwnens
5616aa6beb fix top logic for mysql - https://github.com/Security-Onion-Solutions/securityonion/issues/1857 2020-11-09 13:12:45 -05:00
William Wernert
394fa727cb [fix] Don't overwrite mysql module 2020-11-09 13:05:29 -05:00
William Wernert
9960cf0592 [feat] Add salt module to check if mysql is accepting db connections 2020-11-09 12:05:37 -05:00
weslambert
059c4e03e1 Merge pull request #1860 from Security-Onion-Solutions/strelka-parsing
Pull out additional fields from Exif info
2020-11-09 11:54:55 -05:00
Wes Lambert
7e578d2ce0 Pull out additional fields from Exif info 2020-11-09 16:53:53 +00:00
William Wernert
12125deecb [feat] Show link state in whiptail menus 2020-11-09 11:06:08 -05:00
William Wernert
51256983da [fix] Make sure pip is installed on Ubuntu 2020-11-06 08:53:30 -05:00
William Wernert
0718dbbd4d Merge branch 'dev' of github.com:Security-Onion-Solutions/securityonion into dev 2020-11-06 08:52:42 -05:00
William Wernert
6b2ab67c58 [fix] Bump version of navigator json to 3.0 + fix booleans 2020-11-06 08:52:36 -05:00
Josh Patterson
64fd27fd78 Merge pull request #1843 from Security-Onion-Solutions/issue/1536
increase so-status padding by 1
2020-11-05 19:10:06 -05:00
m0duspwnens
7eb0dab6c7 increase padding by 1 - https://github.com/Security-Onion-Solutions/securityonion/issues/1536 2020-11-05 19:08:19 -05:00
Josh Patterson
0caf054da0 Merge pull request #1842 from Security-Onion-Solutions/issue/1764
show if disabled regardless of highstate status
2020-11-05 18:50:09 -05:00
m0duspwnens
21b284fb10 show if disabled regardless of highstate status - https://github.com/Security-Onion-Solutions/securityonion/issues/1764 2020-11-05 18:46:11 -05:00
Josh Patterson
3d1412a138 Merge pull request #1841 from Security-Onion-Solutions/issue/1764
Issue/1764
2020-11-05 18:24:51 -05:00
m0duspwnens
c7b4a5351c fix logic - https://github.com/Security-Onion-Solutions/securityonion/issues/1764 2020-11-05 18:17:11 -05:00
m0duspwnens
a95129b8c2 add color - https://github.com/Security-Onion-Solutions/securityonion/issues/1764 2020-11-05 18:03:42 -05:00
m0duspwnens
695bace3e8 https://github.com/Security-Onion-Solutions/securityonion/issues/1764 2020-11-05 17:54:10 -05:00
m0duspwnens
47cac59adb https://github.com/Security-Onion-Solutions/securityonion/issues/1764 2020-11-05 17:52:28 -05:00
m0duspwnens
1a75ebdca3 https://github.com/Security-Onion-Solutions/securityonion/issues/1764 2020-11-05 17:51:51 -05:00
m0duspwnens
8da070d511 https://github.com/Security-Onion-Solutions/securityonion/issues/1764 2020-11-05 17:46:23 -05:00
William Wernert
d2ea197ce0 [fix] Remove old entry for manager from known_hosts
Resolves #1839
2020-11-05 14:40:00 -05:00
William Wernert
b528fe1a03 [fix] Only show analyst on network installs
Closes #1682
2020-11-05 14:39:04 -05:00
weslambert
3abe8cb397 Merge pull request #1836 from Security-Onion-Solutions/fix/wazuh_agent_register
Don't sleep if not registering agent
2020-11-05 14:03:32 -05:00
weslambert
2911e37b70 Don't sleep if not registering agent 2020-11-05 14:03:08 -05:00
William Wernert
4fed5c2518 Merge pull request #1822 from Security-Onion-Solutions/feature/setup-idempotency
Feature/setup idempotency
2020-11-05 13:48:18 -05:00
William Wernert
a5833f1f77 Merge branch 'dev' into feature/setup-idempotency
# Conflicts:
#	setup/so-functions
2020-11-05 13:48:05 -05:00
William Wernert
b27b2e358b [fix] Set MSRVIP variable before hosts file is overwritten 2020-11-05 13:38:08 -05:00
William Wernert
915aaf58f2 [fix] Always set MSRVIP because /etc/hosts is wiped 2020-11-05 13:28:21 -05:00
William Wernert
f058fb460d [fix] Don't modify hosts file during whiptail menus 2020-11-05 13:25:02 -05:00
William Wernert
f7394559d4 [fix] Only add entry to /etc/hosts if unable to resolve hostname 2020-11-05 13:16:52 -05:00
Josh Patterson
ec3f35c360 Merge pull request #1832 from Security-Onion-Solutions/patch_2.3.3
Patch 2.3.3
2020-11-05 10:00:43 -05:00
Josh Patterson
fea6e6f4f9 Merge branch 'dev' into patch_2.3.3 2020-11-05 09:58:43 -05:00
William Wernert
cb75b2df65 [revert] Remove wazuh-agent package as well 2020-11-04 16:23:51 -05:00
William Wernert
4369b8d0f6 [fix] Remove wazuh-agent package as well 2020-11-04 16:14:58 -05:00
William Wernert
5cb8d0beda [fix] Add -q flag to grep 2020-11-04 14:23:24 -05:00
William Wernert
b4446cba9a [refactor][wip] Also backup directories in /nsm 2020-11-04 14:20:51 -05:00
William Wernert
1e41b9ba31 [fix] Add conditions for commands so they're less likely to fail 2020-11-04 14:20:26 -05:00
William Wernert
b2759c4c7c [fix] Uninstall launcher if installed 2020-11-04 14:19:25 -05:00
Mike Reeves
6b144903fc Update VERIFY_ISO.md 2020-11-04 13:47:37 -05:00
Mike Reeves
3825becd1b Update changes.json 2020-11-04 13:44:52 -05:00
Mike Reeves
2aa21512e5 Update soup 2020-11-04 13:40:45 -05:00
William Wernert
3150367b1d [fix] Add epoch string to /opt/so folder name 2020-11-04 12:52:37 -05:00
William Wernert
3ac9c43b7b Merge branch 'dev' into feature/setup-idempotency 2020-11-04 12:44:14 -05:00
William Wernert
b643363e82 [fix] Directories need -r flag 2020-11-04 12:07:34 -05:00
Jason Ertel
8d5c29340e Add screenshots to readme 2020-11-04 12:03:57 -05:00
Jason Ertel
1e9e156a87 Improve issue template directions 2020-11-04 11:49:22 -05:00
Jason Ertel
a364f13d24 Add issue template 2020-11-04 11:42:39 -05:00
William Wernert
3d70698647 [fix] Remove old mysql db directory 2020-11-04 11:26:56 -05:00
Mike Reeves
e989fc7041 Update map.jinja 2020-11-04 10:58:52 -05:00
William Wernert
49af35b440 [fix][wip] Add reinstall_init function (part 3)
Create a function that, if the setup log exists, puts the system into a state where
the installer can run again without issue.

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

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

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

12
.github/ISSUE_TEMPLATE vendored Normal file
View File

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

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

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

1
KEYS
View File

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

View File

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

View File

@@ -1,16 +1,16 @@
### 2.3.1 ISO image built on 2020/10/22
### 2.3.10 ISO image built on 2020/11/19
### Download and Verify
2.3.1 ISO image:
https://download.securityonion.net/file/securityonion/securityonion-2.3.1.iso
2.3.10 ISO image:
https://download.securityonion.net/file/securityonion/securityonion-2.3.10.iso
MD5: EF2DEBCCBAE0B0BCCC906552B5FF918A
SHA1: 16AFCACB102BD217A038044D64E7A86DA351640E
SHA256: 7125F90B6323179D0D29F5745681BE995BD2615E64FA1E0046D94888A72C539E
MD5: 55E10BAE3D90DF47CA4D5DCCDCB67A96
SHA1: 01361123F35CEACE077803BC8074594D57EE653A
SHA256: 772EA4EFFFF12F026593F5D1CC93DB538CC17B9BA5F60308F1976B6ED7032A8D
Signature for ISO image:
https://github.com/Security-Onion-Solutions/securityonion/raw/master/sigs/securityonion-2.3.1.iso.sig
https://github.com/Security-Onion-Solutions/securityonion/raw/master/sigs/securityonion-2.3.10.iso.sig
Signing key:
https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/master/KEYS
@@ -24,22 +24,22 @@ wget https://raw.githubusercontent.com/Security-Onion-Solutions/securityonion/ma
Download the signature file for the ISO:
```
wget https://github.com/Security-Onion-Solutions/securityonion/raw/master/sigs/securityonion-2.3.1.iso.sig
wget https://github.com/Security-Onion-Solutions/securityonion/raw/master/sigs/securityonion-2.3.10.iso.sig
```
Download the ISO image:
```
wget https://download.securityonion.net/file/securityonion/securityonion-2.3.1.iso
wget https://download.securityonion.net/file/securityonion/securityonion-2.3.10.iso
```
Verify the downloaded ISO image using the signature file:
```
gpg --verify securityonion-2.3.1.iso.sig securityonion-2.3.1.iso
gpg --verify securityonion-2.3.10.iso.sig securityonion-2.3.10.iso
```
The output should show "Good signature" and the Primary key fingerprint should match what's shown below:
```
gpg: Signature made Thu 22 Oct 2020 10:34:27 AM EDT using RSA key ID FE507013
gpg: Signature made Thu 19 Nov 2020 03:38:54 PM EST using RSA key ID FE507013
gpg: Good signature from "Security Onion Solutions, LLC <info@securityonionsolutions.com>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.

View File

@@ -1 +1 @@
2.3.1
2.3.10

View File

@@ -1,4 +1,51 @@
#!py
import logging
def status():
return __salt__['cmd.run']('/usr/sbin/so-status')
return __salt__['cmd.run']('/usr/sbin/so-status')
def mysql_conn(retry):
log = logging.getLogger(__name__)
from time import sleep
try:
from MySQLdb import _mysql
except ImportError as e:
log.error(e)
return False
mainint = __salt__['pillar.get']('sensor:mainint', __salt__['pillar.get']('manager:mainint'))
mainip = __salt__['grains.get']('ip_interfaces').get(mainint)[0]
mysql_up = False
for i in range(0, retry):
log.debug(f'Connection attempt {i+1}')
try:
db = _mysql.connect(
host=mainip,
user='root',
passwd=__salt__['pillar.get']('secrets:mysql')
)
log.debug(f'Connected to MySQL server on {mainip} after {i} attempts.')
db.query("""SELECT 1;""")
log.debug(f'Successfully completed query against MySQL server on {mainip}')
db.close()
mysql_up = True
break
except _mysql.OperationalError as e:
log.debug(e)
except Exception as e:
log.error('Unexpected error occured.')
log.error(e)
break
sleep(1)
if not mysql_up:
log.error(f'Could not connect to MySQL server on {mainip} after {retry} attempts.')
return mysql_up

View File

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

View File

@@ -32,6 +32,18 @@ soconfperms:
- gid: 939
- dir_mode: 770
sostatusconf:
file.directory:
- name: /opt/so/conf/so-status
- uid: 939
- gid: 939
- dir_mode: 770
so-status.conf:
file.touch:
- name: /opt/so/conf/so-status/so-status.conf
- unless: ls /opt/so/conf/so-status/so-status.conf
sosaltstackperms:
file.directory:
- name: /opt/so/saltstack
@@ -158,8 +170,8 @@ Etc/UTC:
utilsyncscripts:
file.recurse:
- name: /usr/sbin
- user: 0
- group: 0
- user: root
- group: root
- file_mode: 755
- template: jinja
- source: salt://common/tools/sbin

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -136,7 +136,4 @@ else
echo "Something went wrong..."
fi
echo
echo

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,49 @@
#!/bin/bash
. /usr/sbin/so-common
if [[ $1 =~ ^(q|--quiet) ]]; then
quiet=true
fi
print_sshd_t() {
local string=$1
local state=$2
echo "${state}:"
sshd -T | grep "^${string}"
}
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 ! [[ $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 ! [[ $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 ! [[ $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 grains['os'] != 'CentOS' %}
echo "----"
echo "[ WARNING ] Any new ssh sessions will need to remove and reaccept the ECDSA key for this server before reconnecting."
echo "----"
{% endif %}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -16,24 +16,22 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
. /usr/sbin/so-common
UPDATE_DIR=/tmp/sogh/securityonion
INSTALLEDVERSION=$(cat /etc/soversion)
INSTALLEDSALTVERSION=$(salt --versions-report | grep Salt: | awk {'print $2'})
DEFAULT_SALT_DIR=/opt/so/saltstack/default
BATCHSIZE=5
SOUP_LOG=/root/soup.log
exec 3>&1 1>${SOUP_LOG} 2>&1
manager_check() {
# Check to see if this is a manager
MANAGERCHECK=$(cat /etc/salt/grains | grep role | awk '{print $2}')
if [[ "$MANAGERCHECK" =~ ^('so-eval'|'so-manager'|'so-standalone'|'so-managersearch'|'so-import')$ ]]; then
echo "This is a manager. We can proceed."
MINIONID=$(salt-call grains.get id --out=txt|awk -F: {'print $2'}|tr -d ' ')
else
echo "Please run soup on the manager. The manager controls all updates."
exit 0
fi
add_common() {
cp $UPDATE_DIR/salt/common/tools/sbin/so-common $DEFAULT_SALT_DIR/salt/common/tools/sbin/
cp $UPDATE_DIR/salt/common/tools/sbin/so-image-common $DEFAULT_SALT_DIR/salt/common/tools/sbin/
salt-call state.apply common queue=True
echo "Run soup one more time"
exit 0
}
airgap_mounted() {
@@ -47,7 +45,7 @@ airgap_mounted() {
echo "If you just copied the .iso file over you can specify the path."
echo "If you burned the ISO to a disk the standard way you can specify the device."
echo "Example: /home/user/securityonion-2.X.0.iso"
echo "Example: /dev/cdrom"
echo "Example: /dev/sdx1"
echo ""
read -p 'Enter the location of the iso: ' ISOLOC
if [ -f $ISOLOC ]; then
@@ -79,6 +77,30 @@ airgap_mounted() {
fi
}
airgap_update_dockers() {
if [ $is_airgap -eq 0 ]; then
# Let's copy the tarball
if [ ! -f $AGDOCKER/registry.tar ]; then
echo "Unable to locate registry. Exiting"
exit 1
else
echo "Stopping the registry docker"
docker stop so-dockerregistry
docker rm so-dockerregistry
echo "Copying the new dockers over"
tar xvf $AGDOCKER/registry.tar -C /nsm/docker-registry/docker
echo "Add Registry back"
docker load -i $AGDOCKER/registry_image.tar
fi
fi
}
update_registry() {
docker stop so-dockerregistry
docker rm so-dockerregistry
salt-call state.apply registry queue=True
}
check_airgap() {
# See if this is an airgap install
AIRGAP=$(cat /opt/so/saltstack/local/pillar/global.sls | grep airgap | awk '{print $2}')
@@ -92,6 +114,12 @@ check_airgap() {
fi
}
check_sudoers() {
if grep -q "so-setup" /etc/sudoers; then
echo "There is an entry for so-setup in the sudoers file, this can be safely deleted using \"visudo\"."
fi
}
clean_dockers() {
# Place Holder for cleaning up old docker images
echo "Trying to clean up old dockers."
@@ -100,7 +128,6 @@ clean_dockers() {
}
clone_to_tmp() {
# TODO Need to add a air gap option
# Clean old files
rm -rf /tmp/sogh
# Make a temp location for the files
@@ -128,21 +155,9 @@ copy_new_files() {
cd /tmp
}
detect_os() {
# Detect Base OS
echo "Determining Base OS." >> "$SOUP_LOG" 2>&1
if [ -f /etc/redhat-release ]; then
OS="centos"
elif [ -f /etc/os-release ]; then
OS="ubuntu"
fi
echo "Found OS: $OS" >> "$SOUP_LOG" 2>&1
}
highstate() {
# Run a highstate but first cancel a running one.
salt-call saltutil.kill_all_jobs
salt-call state.highstate -l info
# Run a highstate.
salt-call state.highstate -l info queue=True
}
masterlock() {
@@ -182,7 +197,6 @@ pillar_changes() {
[[ "$INSTALLEDVERSION" =~ rc.1 ]] && rc1_to_rc2
[[ "$INSTALLEDVERSION" =~ rc.2 ]] && rc2_to_rc3
[[ "$INSTALLEDVERSION" =~ rc.3 ]] && rc3_to_2.3.0
}
rc1_to_rc2() {
@@ -283,113 +297,15 @@ unmount_update() {
umount /tmp/soagupdate
}
update_centos_repo() {
# Update the files in the repo
echo "Syncing new updates to /nsm/repo"
rsync -a $AGDOCKER/repo /nsm/repo
rsync -av $AGREPO/* /nsm/repo/
echo "Creating repo"
createrepo /nsm/repo
}
update_dockers() {
if [ $is_airgap -eq 0 ]; then
# Let's copy the tarball
if [ ! -f $AGDOCKER/registry.tar ]; then
echo "Unable to locate registry. Exiting"
exit 0
else
echo "Stopping the registry docker"
docker stop so-dockerregistry
docker rm so-dockerregistry
echo "Copying the new dockers over"
tar xvf $AGDOCKER/registry.tar -C /nsm/docker-registry/docker
fi
else
# List all the containers
if [ $MANAGERCHECK == 'so-import' ]; then
TRUSTED_CONTAINERS=( \
"so-idstools" \
"so-nginx" \
"so-filebeat" \
"so-suricata" \
"so-soc" \
"so-elasticsearch" \
"so-kibana" \
"so-kratos" \
"so-suricata" \
"so-registry" \
"so-pcaptools" \
"so-zeek" )
elif [ $MANAGERCHECK != 'so-helix' ]; then
TRUSTED_CONTAINERS=( \
"so-acng" \
"so-thehive-cortex" \
"so-curator" \
"so-domainstats" \
"so-elastalert" \
"so-elasticsearch" \
"so-filebeat" \
"so-fleet" \
"so-fleet-launcher" \
"so-freqserver" \
"so-grafana" \
"so-idstools" \
"so-influxdb" \
"so-kibana" \
"so-kratos" \
"so-logstash" \
"so-minio" \
"so-mysql" \
"so-nginx" \
"so-pcaptools" \
"so-playbook" \
"so-redis" \
"so-soc" \
"so-soctopus" \
"so-steno" \
"so-strelka-frontend" \
"so-strelka-manager" \
"so-strelka-backend" \
"so-strelka-filestream" \
"so-suricata" \
"so-telegraf" \
"so-thehive" \
"so-thehive-es" \
"so-wazuh" \
"so-zeek" )
else
TRUSTED_CONTAINERS=( \
"so-filebeat" \
"so-idstools" \
"so-logstash" \
"so-nginx" \
"so-redis" \
"so-steno" \
"so-suricata" \
"so-telegraf" \
"so-zeek" )
fi
# Download the containers from the interwebs
for i in "${TRUSTED_CONTAINERS[@]}"
do
# Pull down the trusted docker image
echo "Downloading $i:$NEWVERSION"
docker pull --disable-content-trust=false docker.io/$IMAGEREPO/$i:$NEWVERSION
# Tag it with the new registry destination
docker tag $IMAGEREPO/$i:$NEWVERSION $HOSTNAME:5000/$IMAGEREPO/$i:$NEWVERSION
docker push $HOSTNAME:5000/$IMAGEREPO/$i:$NEWVERSION
done
fi
# Cleanup on Aisle 4
clean_dockers
echo "Add Registry back if airgap"
if [ $is_airgap -eq 0 ]; then
docker load -i $AGDOCKER/registry_image.tar
fi
}
update_version() {
# Update the version to the latest
echo "Updating the Security Onion version file."
@@ -411,6 +327,10 @@ upgrade_check_salt() {
if [ "$INSTALLEDSALTVERSION" == "$NEWSALTVERSION" ]; then
echo "You are already running the correct version of Salt for Security Onion."
else
UPGRADESALT=1
fi
}
upgrade_salt() {
SALTUPGRADED=True
echo "Performing upgrade of Salt from $INSTALLEDSALTVERSION to $NEWSALTVERSION."
echo ""
@@ -421,7 +341,11 @@ upgrade_check_salt() {
yum versionlock delete "salt-*"
echo "Updating Salt packages and restarting services."
echo ""
sh $UPDATE_DIR/salt/salt/scripts/bootstrap-salt.sh -F -M -x python3 stable "$NEWSALTVERSION"
if [ $is_airgap -eq 0 ]; then
sh $UPDATE_DIR/salt/salt/scripts/bootstrap-salt.sh -r -F -M -x python3 stable "$NEWSALTVERSION"
else
sh $UPDATE_DIR/salt/salt/scripts/bootstrap-salt.sh -F -M -x python3 stable "$NEWSALTVERSION"
fi
echo "Applying yum versionlock for Salt."
echo ""
yum versionlock add "salt-*"
@@ -441,7 +365,6 @@ upgrade_check_salt() {
apt-mark hold "salt-master"
apt-mark hold "salt-minion"
fi
fi
}
verify_latest_update_script() {
@@ -478,13 +401,14 @@ done
echo "Checking to see if this is a manager."
echo ""
manager_check
require_manager
set_minionid
echo "Checking to see if this is an airgap install"
echo ""
check_airgap
echo "Found that Security Onion $INSTALLEDVERSION is currently installed."
echo ""
detect_os
set_os
echo ""
if [ $is_airgap -eq 0 ]; then
# Let's mount the ISO since this is airgap
@@ -493,6 +417,12 @@ else
echo "Cloning Security Onion github repo into $UPDATE_DIR."
clone_to_tmp
fi
if [ -f /usr/sbin/so-image-common ]; then
. /usr/sbin/so-image-common
else
add_common
fi
echo ""
echo "Verifying we have the latest soup script."
verify_latest_update_script
@@ -502,29 +432,60 @@ echo "Let's see if we need to update Security Onion."
upgrade_check
space_check
echo "Checking for Salt Master and Minion updates."
upgrade_check_salt
echo ""
echo "Performing upgrade from Security Onion $INSTALLEDVERSION to Security Onion $NEWVERSION."
echo ""
echo "Updating dockers to $NEWVERSION."
if [ $is_airgap -eq 0 ]; then
airgap_update_dockers
else
update_registry
update_docker_containers "soup"
fi
echo ""
echo "Stopping Salt Minion service."
systemctl stop salt-minion
echo "Killing any remaining Salt Minion processes."
pkill -9 -ef /usr/bin/salt-minion
echo ""
echo "Stopping Salt Master service."
systemctl stop salt-master
echo ""
echo "Checking for Salt Master and Minion updates."
upgrade_check_salt
# Does salt need upgraded. If so update it.
if [ "$UPGRADESALT" == "1" ]; then
echo "Upgrading Salt"
# Update the repo files so it can actually upgrade
if [ $is_airgap -eq 0 ]; then
update_centos_repo
yum clean all
fi
upgrade_salt
fi
echo "Checking if Salt was upgraded."
echo ""
# Check that Salt was upgraded
if [[ $(salt --versions-report | grep Salt: | awk {'print $2'}) != "$NEWSALTVERSION" ]]; then
echo "Salt upgrade failed. Check of indicators of failure in $SOUP_LOG."
echo "Once the issue is resolved, run soup again."
echo "Exiting."
echo ""
exit 1
else
echo "Salt upgrade success."
echo ""
fi
echo "Making pillar changes."
pillar_changes
echo ""
echo ""
echo "Updating dockers to $NEWVERSION."
update_dockers
# Only update the repo if its airgap
if [ $is_airgap -eq 0 ]; then
if [[ $is_airgap -eq 0 ]] && [[ "$UPGRADESALT" != "1" ]]; then
update_centos_repo
fi
@@ -542,9 +503,19 @@ echo ""
echo "Starting Salt Master service."
systemctl start salt-master
# Only regenerate osquery packages if Fleet is enabled
FLEET_MANAGER=$(lookup_pillar fleet_manager)
FLEET_NODE=$(lookup_pillar fleet_node)
if [[ "$FLEET_MANAGER" == "True" || "$FLEET_NODE" == "True" ]]; then
echo ""
echo "Regenerating Osquery Packages.... This will take several minutes."
salt-call state.apply fleet.event_gen-packages -l info queue=True
echo ""
fi
echo ""
echo "Running a highstate to complete the Security Onion upgrade on this manager. This could take several minutes."
highstate
salt-call state.highstate -l info queue=True
echo ""
echo "Upgrade from $INSTALLEDVERSION to $NEWVERSION complete."
@@ -557,18 +528,23 @@ masterunlock
echo ""
echo "Starting Salt Master service."
systemctl start salt-master
highstate
echo "Running a highstate. This could take several minutes."
salt-call state.highstate -l info queue=True
playbook
unmount_update
SALTUPGRADED="True"
if [[ "$SALTUPGRADED" == "True" ]]; then
if [ "$UPGRADESALT" == "1" ]; then
echo ""
echo "Upgrading Salt on the remaining Security Onion nodes from $INSTALLEDSALTVERSION to $NEWSALTVERSION."
salt -C 'not *_eval and not *_helix and not *_manager and not *_managersearch and not *_standalone' -b $BATCHSIZE state.apply salt.minion
if [ $is_airgap -eq 0 ]; then
salt -C 'not *_eval and not *_helix and not *_manager and not *_managersearch and not *_standalone' cmd.run "yum clean all"
fi
salt -C 'not *_eval and not *_helix and not *_manager and not *_managersearch and not *_standalone' -b $BATCHSIZE state.apply salt.minion queue=True
echo ""
fi
check_sudoers
}
main "$@" | tee /dev/fd/3

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,6 +1,6 @@
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
{% set MANAGER = salt['grains.get']('master') %}
{% set OLDVERSIONS = ['2.0.0-rc.1','2.0.1-rc.1','2.0.2-rc.1','2.0.3-rc.1','2.1.0-rc.2','2.2.0-rc.3','2.3.0']%}
{% 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']%}
{% for VERSION in OLDVERSIONS %}
remove_images_{{ VERSION }}:

View File

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

View File

@@ -16,7 +16,7 @@ class PlaybookESAlerter(Alerter):
today = strftime("%Y.%m.%d", gmtime())
timestamp = strftime("%Y-%m-%d"'T'"%H:%M:%S", gmtime())
headers = {"Content-Type": "application/json"}
payload = {"rule": { "name": self.rule['play_title'],"uuid": self.rule['play_id'],"category": self.rule['rule.category']},"event":{ "severity": self.rule['event.severity'],"module": self.rule['event.module'],"dataset": self.rule['event.dataset'],"severity_label": self.rule['sigma_level']},"kibana_pivot": self.rule['kibana_pivot'],"soc_pivot": self.rule['soc_pivot'],"play_url": self.rule['play_url'],"sigma_level": self.rule['sigma_level'],"event_data": match, "@timestamp": timestamp}
payload = {"rule": { "name": self.rule['play_title'],"case_template": self.rule['play_id'],"uuid": self.rule['play_id'],"category": self.rule['rule.category']},"event":{ "severity": self.rule['event.severity'],"module": self.rule['event.module'],"dataset": self.rule['event.dataset'],"severity_label": self.rule['sigma_level']},"kibana_pivot": self.rule['kibana_pivot'],"soc_pivot": self.rule['soc_pivot'],"play_url": self.rule['play_url'],"sigma_level": self.rule['sigma_level'],"event_data": match, "@timestamp": timestamp}
url = f"http://{self.rule['elasticsearch_host']}/so-playbook-alerts-{today}/_doc/"
requests.post(url, data=json.dumps(payload), headers=headers, verify=False)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -215,13 +215,17 @@ so-elasticsearch:
- /etc/pki/ca.crt:/usr/share/elasticsearch/config/ca.crt:ro
- /etc/pki/elasticsearch.p12:/usr/share/elasticsearch/config/elasticsearch.p12:ro
- /opt/so/conf/elasticsearch/sotls.yml:/usr/share/elasticsearch/config/sotls.yml:ro
- watch:
- file: cacertz
- file: esyml
- file: esingestconf
- file: so-elasticsearch-pipelines-file
append_so-elasticsearch_so-status.conf:
file.append:
- name: /opt/so/conf/so-status/so-status.conf
- text: so-elasticsearch
so-elasticsearch-pipelines-file:
file.managed:
- name: /opt/so/conf/elasticsearch/so-elasticsearch-pipelines

View File

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

View File

@@ -115,7 +115,7 @@ filebeat.inputs:
fields: ["source", "prospector", "input", "offset", "beat"]
fields_under_root: true
clean_removed: false
clean_removed: true
close_removed: false
- type: log

View File

@@ -58,8 +58,8 @@ filebeatconfsync:
file.managed:
- name: /opt/so/conf/filebeat/etc/filebeat.yml
- source: salt://filebeat/etc/filebeat.yml
- user: 0
- group: 0
- user: root
- group: root
- template: jinja
- defaults:
INPUTS: {{ salt['pillar.get']('filebeat:config:inputs', {}) }}
@@ -86,6 +86,11 @@ so-filebeat:
- watch:
- file: /opt/so/conf/filebeat/etc/filebeat.yml
append_so-filebeat_so-status.conf:
file.append:
- name: /opt/so/conf/so-status/so-status.conf
- text: so-filebeat
{% else %}
filebeat_state_not_allowed:

View File

@@ -1,3 +1,4 @@
{%- set DNET = salt['pillar.get']('global:dockernet', '172.17.0.0') %}
firewall:
hostgroups:
anywhere:
@@ -9,7 +10,7 @@ firewall:
ips:
delete:
insert:
- 172.17.0.0/24
- {{ DNET }}/24
localhost:
ips:
delete:

View File

@@ -1,4 +1,10 @@
{% set ENROLLSECRET = salt['cmd.run']('docker exec so-fleet fleetctl get enroll-secret default') %}
{% set FLEETMANAGER = salt['pillar.get']('global:fleet_manager', False) %}
{% set FLEETNODE = salt['pillar.get']('global:fleet_node', False) %}
{% if FLEETNODE or FLEETMANAGER %}
{% set ENROLLSECRET = salt['cmd.run']('docker exec so-fleet fleetctl get enroll-secret default') %}
{% else %}
{% set ENROLLSECRET = '' %}
{% endif %}
{% set MAININT = salt['pillar.get']('host:mainint') %}
{% set MAINIP = salt['grains.get']('ip_interfaces').get(MAININT)[0] %}

View File

@@ -12,6 +12,8 @@
{% else %}
{% set MAINIP = salt['pillar.get']('global:managerip') %}
{% endif %}
{% set DNET = salt['pillar.get']('global:dockernet', '172.17.0.0') %}
include:
- mysql
@@ -71,7 +73,7 @@ fleetdb:
fleetdbuser:
mysql_user.present:
- host: 172.17.0.0/255.255.0.0
- host: {{ DNET }}/255.255.0.0
- password: {{ FLEETPASS }}
- connection_host: {{ MAINIP }}
- connection_port: 3306
@@ -85,7 +87,7 @@ fleetdbpriv:
- grant: all privileges
- database: fleet.*
- user: fleetdbuser
- host: 172.17.0.0/255.255.0.0
- host: {{ DNET }}/255.255.0.0
- connection_host: {{ MAINIP }}
- connection_port: 3306
- connection_user: root
@@ -132,4 +134,9 @@ so-fleet:
- watch:
- /opt/so/conf/fleet/etc
append_so-fleet_so-status.conf:
file.append:
- name: /opt/so/conf/so-status/so-status.conf
- text: so-fleet
{% endif %}

View File

@@ -43,19 +43,24 @@ freqlogdir:
so-freqimage:
cmd.run:
- name: docker pull --disable-content-trust=false docker.io/{{ IMAGEREPO }}/so-freqserver:HH1.0.3
- name: docker pull {{ MANAGER }}:5000/{{ IMAGEREPO }}/so-freqserver:{{ VERSION }}
so-freq:
docker_container.running:
- require:
- so-freqimage
- image: docker.io/{{ IMAGEREPO }}/so-freqserver:HH1.0.3
- image: {{ MANAGER }}:5000/{{ IMAGEREPO }}/so-freqserver:{{ VERSION }}
- hostname: freqserver
- name: so-freqserver
- user: freqserver
- binds:
- /opt/so/log/freq_server:/var/log/freq_server:rw
append_so-freq_so-status.conf:
file.append:
- name: /opt/so/conf/so-status/so-status.conf
- text: so-freq
{% else %}
freqserver_state_not_allowed:

View File

@@ -3565,7 +3565,7 @@
"aliasColors": {
"InBound": "#629E51",
"OutBound": "#5195CE",
"net.derivative": "#1F78C1"
"net.non_negative_derivative": "#1F78C1"
},
"bars": false,
"dashLength": 10,
@@ -3636,7 +3636,7 @@
"measurement": "net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "A",
"resultFormat": "time_series",
@@ -3656,7 +3656,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -4036,7 +4036,7 @@
},
{
"params": [],
"type": "difference"
"type": "non_negative_difference"
}
]
],
@@ -4084,7 +4084,7 @@
},
{
"params": [],
"type": "difference"
"type": "non_negative_difference"
}
]
],
@@ -4143,7 +4143,7 @@
"aliasColors": {
"InBound": "#629E51",
"OutBound": "#5195CE",
"net.derivative": "#1F78C1"
"net.non_negative_derivative": "#1F78C1"
},
"bars": false,
"dashLength": 10,
@@ -4214,7 +4214,7 @@
"measurement": "net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "A",
"resultFormat": "time_series",
@@ -4234,7 +4234,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -4278,7 +4278,7 @@
"measurement": "net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_sent\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_sent\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "B",
"resultFormat": "time_series",
@@ -4298,7 +4298,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [

View File

@@ -1795,7 +1795,7 @@
"aliasColors": {
"InBound": "#629E51",
"OutBound": "#5195CE",
"net.derivative": "#1F78C1"
"net.non_negative_derivative": "#1F78C1"
},
"bars": false,
"dashLength": 10,
@@ -1860,7 +1860,7 @@
"measurement": "net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "A",
"resultFormat": "time_series",
@@ -1880,7 +1880,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -1924,7 +1924,7 @@
"measurement": "net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_sent\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_sent\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "B",
"resultFormat": "time_series",
@@ -1944,7 +1944,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -2459,7 +2459,7 @@
"aliasColors": {
"InBound": "#629E51",
"OutBound": "#5195CE",
"net.derivative": "#1F78C1"
"net.non_negative_derivative": "#1F78C1"
},
"bars": false,
"dashLength": 10,
@@ -2524,7 +2524,7 @@
"measurement": "docker_container_net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "A",
"resultFormat": "time_series",
@@ -2544,7 +2544,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -2588,7 +2588,7 @@
"measurement": "docker_container_net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_sent\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_sent\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "B",
"resultFormat": "time_series",
@@ -2608,7 +2608,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -3168,7 +3168,7 @@
"aliasColors": {
"InBound": "#629E51",
"OutBound": "#5195CE",
"net.derivative": "#1F78C1"
"net.non_negative_derivative": "#1F78C1"
},
"bars": false,
"dashLength": 10,
@@ -3233,7 +3233,7 @@
"measurement": "docker_container_net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "A",
"resultFormat": "time_series",
@@ -3253,7 +3253,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -3297,7 +3297,7 @@
"measurement": "docker_container_net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_sent\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_sent\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "B",
"resultFormat": "time_series",
@@ -3317,7 +3317,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -3463,7 +3463,7 @@
},
{
"params": [],
"type": "difference"
"type": "non_negative_difference"
}
]
],
@@ -3510,7 +3510,7 @@
},
{
"params": [],
"type": "difference"
"type": "non_negative_difference"
}
]
],
@@ -3700,7 +3700,7 @@
"aliasColors": {
"InBound": "#629E51",
"OutBound": "#5195CE",
"net.derivative": "#1F78C1"
"net.non_negative_derivative": "#1F78C1"
},
"bars": false,
"dashLength": 10,
@@ -3765,7 +3765,7 @@
"measurement": "docker_container_net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "A",
"resultFormat": "time_series",
@@ -3785,7 +3785,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -3829,7 +3829,7 @@
"measurement": "docker_container_net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_sent\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_sent\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "B",
"resultFormat": "time_series",
@@ -3849,7 +3849,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [

View File

@@ -1799,7 +1799,7 @@
"aliasColors": {
"InBound": "#629E51",
"OutBound": "#5195CE",
"net.derivative": "#1F78C1"
"net.non_negative_derivative": "#1F78C1"
},
"bars": false,
"dashLength": 10,
@@ -1864,7 +1864,7 @@
"measurement": "net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "A",
"resultFormat": "time_series",
@@ -1884,7 +1884,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -1928,7 +1928,7 @@
"measurement": "net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_sent\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_sent\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "B",
"resultFormat": "time_series",
@@ -1948,7 +1948,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -2546,7 +2546,7 @@
"aliasColors": {
"InBound": "#629E51",
"OutBound": "#5195CE",
"net.derivative": "#1F78C1"
"net.non_negative_derivative": "#1F78C1"
},
"bars": false,
"dashLength": 10,
@@ -2611,7 +2611,7 @@
"measurement": "docker_container_net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "A",
"resultFormat": "time_series",
@@ -2631,7 +2631,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -2675,7 +2675,7 @@
"measurement": "docker_container_net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_sent\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_sent\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "B",
"resultFormat": "time_series",
@@ -2695,7 +2695,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -3299,7 +3299,7 @@
"measurement": "docker_container_net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT derivative(mean(\"rx_bytes\"), 1s) *8 FROM \"docker_container_net\" WHERE (\"host\" = '{{ SERVERNAME }}' AND \"container_name\" = 'so-influxdb') AND $timeFilter GROUP BY time($__interval) fill(null)",
"query": "SELECT non_negative_derivative(mean(\"rx_bytes\"), 1s) *8 FROM \"docker_container_net\" WHERE (\"host\" = '{{ SERVERNAME }}' AND \"container_name\" = 'so-influxdb') AND $timeFilter GROUP BY time($__interval) fill(null)",
"rawQuery": false,
"refId": "A",
"resultFormat": "time_series",
@@ -3319,7 +3319,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -3380,7 +3380,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -3785,7 +3785,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -3846,7 +3846,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -4164,7 +4164,7 @@
},
{
"params": [],
"type": "difference"
"type": "non_negative_difference"
}
]
],
@@ -4211,7 +4211,7 @@
},
{
"params": [],
"type": "difference"
"type": "non_negative_difference"
}
]
],

View File

@@ -2135,7 +2135,7 @@
},
{
"params": [],
"type": "difference"
"type": "non_negative_difference"
}
]
],
@@ -2182,7 +2182,7 @@
},
{
"params": [],
"type": "difference"
"type": "non_negative_difference"
}
]
],
@@ -2781,7 +2781,7 @@
"aliasColors": {
"InBound": "#629E51",
"OutBound": "#5195CE",
"net.derivative": "#1F78C1"
"net.non_negative_derivative": "#1F78C1"
},
"bars": false,
"dashLength": 10,
@@ -2846,7 +2846,7 @@
"measurement": "net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "A",
"resultFormat": "time_series",
@@ -2866,7 +2866,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -2910,7 +2910,7 @@
"measurement": "net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_sent\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_sent\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "B",
"resultFormat": "time_series",
@@ -2930,7 +2930,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -3353,7 +3353,7 @@
"aliasColors": {
"InBound": "#629E51",
"OutBound": "#5195CE",
"net.derivative": "#1F78C1"
"net.non_negative_derivative": "#1F78C1"
},
"bars": false,
"dashLength": 10,
@@ -3418,7 +3418,7 @@
"measurement": "docker_container_net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "A",
"resultFormat": "time_series",
@@ -3438,7 +3438,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -3482,7 +3482,7 @@
"measurement": "docker_container_net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_sent\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_sent\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "B",
"resultFormat": "time_series",
@@ -3502,7 +3502,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [

View File

@@ -2729,7 +2729,7 @@
"aliasColors": {
"InBound": "#629E51",
"OutBound": "#5195CE",
"net.derivative": "#1F78C1"
"net.non_negative_derivative": "#1F78C1"
},
"bars": false,
"dashLength": 10,
@@ -2800,7 +2800,7 @@
"measurement": "net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "A",
"resultFormat": "time_series",
@@ -2820,7 +2820,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -2864,7 +2864,7 @@
"measurement": "net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_sent\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_sent\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "B",
"resultFormat": "time_series",
@@ -2884,7 +2884,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -3311,7 +3311,7 @@
},
{
"params": [],
"type": "difference"
"type": "non_negative_difference"
}
]
],
@@ -3359,7 +3359,7 @@
},
{
"params": [],
"type": "difference"
"type": "non_negative_difference"
}
]
],
@@ -3418,7 +3418,7 @@
"aliasColors": {
"InBound": "#629E51",
"OutBound": "#5195CE",
"net.derivative": "#1F78C1"
"net.non_negative_derivative": "#1F78C1"
},
"bars": false,
"dashLength": 10,
@@ -3489,7 +3489,7 @@
"measurement": "net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "A",
"resultFormat": "time_series",
@@ -3509,7 +3509,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -4085,7 +4085,7 @@
"aliasColors": {
"InBound": "#629E51",
"OutBound": "#5195CE",
"net.derivative": "#1F78C1"
"net.non_negative_derivative": "#1F78C1"
},
"bars": false,
"dashLength": 10,
@@ -4156,7 +4156,7 @@
"measurement": "docker_container_net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "A",
"resultFormat": "time_series",
@@ -4176,7 +4176,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -4220,7 +4220,7 @@
"measurement": "docker_container_net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_sent\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_sent\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "B",
"resultFormat": "time_series",
@@ -4240,7 +4240,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [

View File

@@ -2010,7 +2010,7 @@
"aliasColors": {
"InBound": "#629E51",
"OutBound": "#5195CE",
"net.derivative": "#1F78C1"
"net.non_negative_derivative": "#1F78C1"
},
"bars": false,
"dashLength": 10,
@@ -2081,7 +2081,7 @@
"measurement": "net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "A",
"resultFormat": "time_series",
@@ -2101,7 +2101,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -2145,7 +2145,7 @@
"measurement": "net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_sent\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_sent\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "B",
"resultFormat": "time_series",
@@ -2165,7 +2165,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -2794,7 +2794,7 @@
"aliasColors": {
"InBound": "#629E51",
"OutBound": "#5195CE",
"net.derivative": "#1F78C1"
"net.non_negative_derivative": "#1F78C1"
},
"bars": false,
"dashLength": 10,
@@ -2865,7 +2865,7 @@
"measurement": "net",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT 8 * derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"query": "SELECT 8 * non_negative_derivative(mean(\"bytes_recv\"),1s) FROM \"net\" WHERE \"host\" = 'JumpHost' AND \"interface\" = 'eth0' AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "A",
"resultFormat": "time_series",
@@ -2885,7 +2885,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -3466,7 +3466,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -3527,7 +3527,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -4102,7 +4102,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -4163,7 +4163,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -4854,7 +4854,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -4915,7 +4915,7 @@
"params": [
"1s"
],
"type": "derivative"
"type": "non_negative_derivative"
},
{
"params": [
@@ -5202,7 +5202,7 @@
},
{
"params": [],
"type": "difference"
"type": "non_negative_difference"
}
]
],
@@ -5250,7 +5250,7 @@
},
{
"params": [],
"type": "difference"
"type": "non_negative_difference"
}
]
],

View File

@@ -236,6 +236,11 @@ so-grafana:
- watch:
- file: /opt/so/conf/grafana/*
append_so-grafana_so-status.conf:
file.append:
- name: /opt/so/conf/so-status/so-status.conf
- text: so-grafana
{% endif %}
{% else %}

View File

@@ -58,11 +58,12 @@ rulesdir:
- makedirs: True
synclocalnidsrules:
file.managed:
- name: /opt/so/rules/nids/local.rules
- source: salt://idstools/local.rules
file.recurse:
- name: /opt/so/rules/nids/
- source: salt://idstools/
- user: 939
- group: 939
- include_pat: 'E@.rules'
so-idstools:
docker_container.running:
@@ -75,10 +76,15 @@ so-idstools:
- watch:
- file: idstoolsetcsync
append_so-idstools_so-status.conf:
file.append:
- name: /opt/so/conf/so-status/so-status.conf
- text: so-idstools
{% else %}
idstools_state_not_allowed:
test.fail_without_changes:
- name: idstools_state_not_allowed
{% endif%}
{% endif%}

View File

@@ -54,6 +54,11 @@ so-influxdb:
- watch:
- file: influxdbconf
append_so-influxdb_so-status.conf:
file.append:
- name: /opt/so/conf/so-status/so-status.conf
- text: so-influxdb
{% endif %}
{% else %}

View File

@@ -4,7 +4,7 @@ echo -n "Waiting for ElasticSearch..."
COUNT=0
ELASTICSEARCH_CONNECTED="no"
while [[ "$COUNT" -le 30 ]]; do
curl --output /dev/null --silent --head --fail http://{{ ES }}:9200
curl --output /dev/null --silent --head --fail -L http://{{ ES }}:9200
if [ $? -eq 0 ]; then
ELASTICSEARCH_CONNECTED="yes"
echo "connected!"
@@ -28,7 +28,7 @@ MAX_WAIT=240
# Check to see if Kibana is available
wait_step=0
until curl -s -XGET http://{{ ES }}:5601 > /dev/null ; do
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
@@ -42,12 +42,12 @@ wait_step=0
# Apply Kibana template
echo
echo "Applying Kibana template..."
curl -s -XPUT http://{{ ES }}:9200/_template/kibana \
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 "{{ ES }}:9200/.kibana/_settings" \
curl -s -XPUT -L "{{ ES }}:9200/.kibana/_settings" \
-H 'Content-Type: application/json' \
-d'{"index" : {"number_of_replicas" : 0}}'
echo

View File

@@ -90,6 +90,11 @@ so-kibana:
- port_bindings:
- 0.0.0.0:5601:5601
append_so-kibana_so-status.conf:
file.append:
- name: /opt/so/conf/so-status/so-status.conf
- text: so-kibana
kibanadashtemplate:
file.managed:
- name: /opt/so/conf/kibana/saved_objects.ndjson.template

View File

@@ -173,6 +173,7 @@ so-logstash:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
- /etc/pki/filebeat.crt:/usr/share/logstash/filebeat.crt:ro
- /etc/pki/filebeat.p8:/usr/share/logstash/filebeat.key:ro
- /opt/so/conf/logstash/etc/certs:/usr/share/logstash/certs:ro
{% if grains['role'] == 'so-heavynode' %}
- /etc/ssl/certs/intca.crt:/usr/share/filebeat/ca.crt:ro
{% else %}
@@ -201,6 +202,11 @@ so-logstash:
- file: es_template_{{TEMPLATE.split('.')[0] | replace("/","_") }}
{% endfor %}
append_so-logstash_so-status.conf:
file.append:
- name: /opt/so/conf/so-status/so-status.conf
- text: so-logstash
{% else %}
logstash_state_not_allowed:

View File

@@ -81,6 +81,11 @@ so-aptcacherng:
- /opt/so/log/aptcacher-ng:/var/log/apt-cacher-ng:rw
- /opt/so/conf/aptcacher-ng/etc/acng.conf:/etc/apt-cacher-ng/acng.conf:ro
append_so-aptcacherng_so-status.conf:
file.append:
- name: /opt/so/conf/so-status/so-status.conf
- text: so-aptcacherng
{% endif %}
strelka_yara_update:

View File

@@ -62,6 +62,11 @@ so-minio:
- /etc/pki/minio.crt:/.minio/certs/public.crt:ro
- entrypoint: "/usr/bin/docker-entrypoint.sh server --certs-dir /.minio/certs --address :9595 /data"
append_so-minio_so-status.conf:
file.append:
- name: /opt/so/conf/so-status/so-status.conf
- text: so-minio
{% else %}
minio_state_not_allowed:

View File

@@ -94,9 +94,20 @@ so-mysql:
- /opt/so/conf/mysql/etc
cmd.run:
- name: until nc -z {{ MAINIP }} 3306; do sleep 1; done
- timeout: 900
- timeout: 600
- onchanges:
- docker_container: so-mysql
module.run:
- so.mysql_conn:
- retry: 300
- onchanges:
- cmd: so-mysql
append_so-mysql_so-status.conf:
file.append:
- name: /opt/so/conf/so-status/so-status.conf
- text: so-mysql
{% endif %}
{% else %}

View File

@@ -1,22 +1,26 @@
{%- set managerip = salt['pillar.get']('manager:mainip', '') %}
{%- set FLEET_MANAGER = salt['pillar.get']('global:fleet_manager') %}
{%- set FLEET_NODE = salt['pillar.get']('global:fleet_node') %}
{%- set FLEET_IP = salt['pillar.get']('global:fleet_ip', None) %}
{%- set ISAIRGAP = salt['pillar.get']('global:airgap', 'False') %}
{%- set role = grains.id.split('_') | last %}
{%- if role == 'fleet' %}
{% set mainint = salt['pillar.get']('host:mainint') %}
{% set main_ip = salt['grains.get']('ip_interfaces:' ~ mainint)[0] %}
{%- endif %}
{%- set manager_ip = salt['pillar.get']('manager:mainip', '') %}
{%- set url_base = salt['pillar.get']('global:url_base') %}
{%- set fleet_manager = salt['pillar.get']('global:fleet_manager') %}
{%- set fleet_node = salt['pillar.get']('global:fleet_node') %}
{%- set fleet_ip = salt['pillar.get']('global:fleet_ip', None) %}
{%- set airgap = salt['pillar.get']('global:airgap', 'False') %}
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
worker_connections 1024;
}
http {
@@ -33,62 +37,19 @@ http {
types_hash_max_size 2048;
client_max_body_size 2500M;
server_tokens off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
#server {
# listen 80 default_server;
# listen [::]:80 default_server;
# server_name _;
# root /opt/socore/html;
# index index.html;
{%- if role in ['eval', 'managersearch', 'manager', 'standalone', 'fleet', 'import'] %}
# Load configuration files for the default server block.
#include /etc/nginx/default.d/*.conf;
# location / {
# }
# error_page 404 /404.html;
# location = /40x.html {
# }
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
#}
server {
listen 80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
{%- if ISAIRGAP is sameas true %}
server {
listen 7788;
server_name _;
root /opt/socore/html/repo;
location /rules/ {
allow all;
sendfile on;
sendfile_max_chunk 1m;
autoindex on;
autoindex_exact_size off;
autoindex_format html;
autoindex_localtime on;
}
}
{%- endif %}
{% if FLEET_MANAGER %}
{%- if (fleet_manager or role == 'fleet') and role != 'import' %}
server {
listen 8090 ssl http2 default_server;
server_name _;
server_name {{ url_base }};
root /opt/socore/html;
index blank.html;
@@ -100,20 +61,44 @@ http {
ssl_prefer_server_ciphers on;
location ~ ^/kolide.agent.Api/(RequestEnrollment|RequestConfig|RequestQueries|PublishLogs|PublishResults|CheckHealth)$ {
grpc_pass grpcs://{{ managerip }}:8080;
{%- if role == 'fleet' %}
grpc_pass grpcs://{{ main_ip }}:8080;
{%- else %}
grpc_pass grpcs://{{ manager_ip }}:8080;
{%- endif %}
grpc_set_header Host $host;
grpc_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
}
}
{% endif %}
# Settings for a TLS enabled server.
{%- endif %}
server {
listen 443 ssl http2 default_server;
#listen [::]:443 ssl http2 default_server;
server_name _;
listen 80 default_server;
server_name _;
return 307 https://{{ url_base }}$request_uri;
}
server {
listen 443 ssl http2 default_server;
server_name _;
return 307 https://{{ url_base }}$request_uri;
ssl_certificate "/etc/pki/nginx/server.crt";
ssl_certificate_key "/etc/pki/nginx/server.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1.2;
}
{%- endif %}
{%- if role == 'fleet' %}
server {
listen 443 ssl http2;
server_name {{ url_base }};
root /opt/socore/html;
index index.html;
@@ -123,12 +108,57 @@ http {
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1.2;
# Load configuration files for the default server block.
#include /etc/nginx/default.d/*.conf;
location /fleet/ {
proxy_pass https://{{ main_ip }}:8080;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Proxy "";
proxy_set_header X-Forwarded-Proto $scheme;
}
error_page 500 502 503 504 /50x.html;
location = /usr/share/nginx/html/50x.html {
}
}
{%- elif role in ['eval', 'managersearch', 'manager', 'standalone', 'import'] %}
{%- if airgap is sameas true %}
server {
listen 7788;
server_name {{ url_base }};
root /opt/socore/html/repo;
location /rules/ {
allow all;
sendfile on;
sendfile_max_chunk 1m;
autoindex on;
autoindex_exact_size off;
autoindex_format html;
autoindex_localtime on;
}
}
{%- endif %}
server {
listen 443 ssl http2;
server_name {{ url_base }};
root /opt/socore/html;
index index.html;
ssl_certificate "/etc/pki/nginx/server.crt";
ssl_certificate_key "/etc/pki/nginx/server.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1.2;
location ~* (^/login/|^/js/.*|^/css/.*|^/images/.*) {
proxy_pass http://{{ managerip }}:9822;
proxy_pass http://{{ manager_ip }}:9822;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_set_header Host $host;
@@ -142,7 +172,7 @@ http {
location / {
auth_request /auth/sessions/whoami;
proxy_pass http://{{ managerip }}:9822/;
proxy_pass http://{{ manager_ip }}:9822/;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_set_header Host $host;
@@ -156,7 +186,7 @@ http {
location ~ ^/auth/.*?(whoami|login|logout|settings) {
rewrite /auth/(.*) /$1 break;
proxy_pass http://{{ managerip }}:4433;
proxy_pass http://{{ manager_ip }}:4433;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_set_header Host $host;
@@ -200,7 +230,7 @@ http {
proxy_set_header X-Forwarded-Proto $scheme;
}
{%- if ISAIRGAP is sameas true %}
{%- if airgap is sameas true %}
location /repo/ {
allow all;
sendfile on;
@@ -210,13 +240,12 @@ http {
autoindex_format html;
autoindex_localtime on;
}
{%- endif %}
location /grafana/ {
auth_request /auth/sessions/whoami;
rewrite /grafana/(.*) /$1 break;
proxy_pass http://{{ managerip }}:3000/;
proxy_pass http://{{ manager_ip }}:3000/;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_set_header Host $host;
@@ -229,7 +258,7 @@ http {
location /kibana/ {
auth_request /auth/sessions/whoami;
rewrite /kibana/(.*) /$1 break;
proxy_pass http://{{ managerip }}:5601/;
proxy_pass http://{{ manager_ip }}:5601/;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_set_header Host $host;
@@ -240,7 +269,7 @@ http {
}
location /nodered/ {
proxy_pass http://{{ managerip }}:1880/;
proxy_pass http://{{ manager_ip }}:1880/;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_set_header Host $host;
@@ -253,7 +282,7 @@ http {
}
location /playbook/ {
proxy_pass http://{{ managerip }}:3200/playbook/;
proxy_pass http://{{ manager_ip }}:3200/playbook/;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_set_header Host $host;
@@ -263,13 +292,16 @@ http {
proxy_set_header X-Forwarded-Proto $scheme;
}
{%- if FLEET_NODE %}
{%- if fleet_node %}
location /fleet/ {
return 301 https://{{ FLEET_IP }}/fleet;
return 307 https://{{ fleet_ip }}/fleet;
}
{%- else %}
{%- else %}
location /fleet/ {
proxy_pass https://{{ managerip }}:8080;
proxy_pass https://{{ manager_ip }}:8080;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_set_header Host $host;
@@ -278,10 +310,11 @@ http {
proxy_set_header Proxy "";
proxy_set_header X-Forwarded-Proto $scheme;
}
{%- endif %}
{%- endif %}
location /thehive/ {
proxy_pass http://{{ managerip }}:9000/thehive/;
proxy_pass http://{{ manager_ip }}:9000/thehive/;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_http_version 1.1; # this is essential for chunked responses to work
@@ -293,7 +326,7 @@ http {
}
location /cortex/ {
proxy_pass http://{{ managerip }}:9001/cortex/;
proxy_pass http://{{ manager_ip }}:9001/cortex/;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_http_version 1.1; # this is essential for chunked responses to work
@@ -305,7 +338,7 @@ http {
}
location /soctopus/ {
proxy_pass http://{{ managerip }}:7000/;
proxy_pass http://{{ manager_ip }}:7000/;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_set_header Host $host;
@@ -331,7 +364,7 @@ http {
if ($http_authorization = "") {
return 403;
}
proxy_pass http://{{ managerip }}:9822/;
proxy_pass http://{{ manager_ip }}:9822/;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_set_header Host $host;
@@ -345,16 +378,12 @@ http {
location @error401 {
add_header Set-Cookie "AUTH_REDIRECT=$request_uri;Path=/;Max-Age=14400";
return 302 /auth/self-service/browser/flows/login;
return 302 /auth/self-service/login/browser;
}
#error_page 404 /404.html;
# location = /40x.html {
#}
error_page 500 502 503 504 /50x.html;
location = /usr/share/nginx/html/50x.html {
}
}
{%- endif %}
}

View File

@@ -1,361 +0,0 @@
{%- set managerip = salt['pillar.get']('manager:mainip', '') %}
{%- set FLEET_MANAGER = salt['pillar.get']('global:fleet_manager') %}
{%- set FLEET_NODE = salt['pillar.get']('global:fleet_node') %}
{%- set FLEET_IP = salt['pillar.get']('global:fleet_ip', None) %}
{%- set ISAIRGAP = salt['pillar.get']('global:airgap', 'False') %}
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
client_max_body_size 2500M;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
#server {
# listen 80 default_server;
# listen [::]:80 default_server;
# server_name _;
# root /opt/socore/html;
# index index.html;
# Load configuration files for the default server block.
#include /etc/nginx/default.d/*.conf;
# location / {
# }
# error_page 404 /404.html;
# location = /40x.html {
# }
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
#}
server {
listen 80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
{%- if ISAIRGAP is sameas true %}
server {
listen 7788;
server_name _;
root /opt/socore/html/repo;
location /rules/ {
allow all;
sendfile on;
sendfile_max_chunk 1m;
autoindex on;
autoindex_exact_size off;
autoindex_format html;
autoindex_localtime on;
}
}
{%- endif %}
{% if FLEET_MANAGER %}
server {
listen 8090 ssl http2 default_server;
server_name _;
root /opt/socore/html;
index blank.html;
ssl_certificate "/etc/pki/nginx/server.crt";
ssl_certificate_key "/etc/pki/nginx/server.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location ~ ^/kolide.agent.Api/(RequestEnrollment|RequestConfig|RequestQueries|PublishLogs|PublishResults|CheckHealth)$ {
grpc_pass grpcs://{{ managerip }}:8080;
grpc_set_header Host $host;
grpc_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
}
}
{% endif %}
# Settings for a TLS enabled server.
server {
listen 443 ssl http2 default_server;
#listen [::]:443 ssl http2 default_server;
server_name _;
root /opt/socore/html;
index index.html;
ssl_certificate "/etc/pki/nginx/server.crt";
ssl_certificate_key "/etc/pki/nginx/server.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
#include /etc/nginx/default.d/*.conf;
location ~* (^/login/|^/js/.*|^/css/.*|^/images/.*) {
proxy_pass http://{{ managerip }}:9822;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Proxy "";
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-Forwarded-Proto $scheme;
}
location / {
auth_request /auth/sessions/whoami;
proxy_pass http://{{ managerip }}:9822/;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Proxy "";
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-Forwarded-Proto $scheme;
}
location ~ ^/auth/.*?(whoami|login|logout|settings) {
rewrite /auth/(.*) /$1 break;
proxy_pass http://{{ managerip }}:4433;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Proxy "";
proxy_set_header X-Forwarded-Proto $scheme;
}
location /cyberchef/ {
auth_request /auth/sessions/whoami;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Proxy "";
proxy_set_header X-Forwarded-Proto $scheme;
}
location /navigator/ {
auth_request /auth/sessions/whoami;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Proxy "";
proxy_set_header X-Forwarded-Proto $scheme;
}
location /packages/ {
try_files $uri =206;
auth_request /auth/sessions/whoami;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Proxy "";
proxy_set_header X-Forwarded-Proto $scheme;
}
{%- if ISAIRGAP 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;
}
{%- endif %}
location /grafana/ {
auth_request /auth/sessions/whoami;
rewrite /grafana/(.*) /$1 break;
proxy_pass http://{{ managerip }}:3000/;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Proxy "";
proxy_set_header X-Forwarded-Proto $scheme;
}
location /kibana/ {
auth_request /auth/sessions/whoami;
rewrite /kibana/(.*) /$1 break;
proxy_pass http://{{ managerip }}:5601/;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Proxy "";
proxy_set_header X-Forwarded-Proto $scheme;
}
location /nodered/ {
proxy_pass http://{{ managerip }}:1880/;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Proxy "";
proxy_set_header X-Forwarded-Proto $scheme;
}
location /playbook/ {
proxy_pass http://{{ managerip }}:3200/playbook/;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Proxy "";
proxy_set_header X-Forwarded-Proto $scheme;
}
{%- if FLEET_NODE %}
location /fleet/ {
return 301 https://{{ FLEET_IP }}/fleet;
}
{%- else %}
location /fleet/ {
proxy_pass https://{{ managerip }}:8080;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Proxy "";
proxy_set_header X-Forwarded-Proto $scheme;
}
{%- endif %}
location /thehive/ {
proxy_pass http://{{ managerip }}:9000/thehive/;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_http_version 1.1; # this is essential for chunked responses to work
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Proxy "";
proxy_set_header X-Forwarded-Proto $scheme;
}
location /cortex/ {
proxy_pass http://{{ managerip }}:9001/cortex/;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_http_version 1.1; # this is essential for chunked responses to work
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Proxy "";
proxy_set_header X-Forwarded-Proto $scheme;
}
location /soctopus/ {
proxy_pass http://{{ managerip }}:7000/;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Proxy "";
proxy_set_header X-Forwarded-Proto $scheme;
}
location /kibana/app/soc/ {
rewrite ^/kibana/app/soc/(.*) /soc/$1 permanent;
}
location /kibana/app/fleet/ {
rewrite ^/kibana/app/fleet/(.*) /fleet/$1 permanent;
}
location /kibana/app/soctopus/ {
rewrite ^/kibana/app/soctopus/(.*) /soctopus/$1 permanent;
}
location /sensoroniagents/ {
if ($http_authorization = "") {
return 403;
}
proxy_pass http://{{ managerip }}:9822/;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Proxy "";
proxy_set_header X-Forwarded-Proto $scheme;
}
error_page 401 = @error401;
location @error401 {
add_header Set-Cookie "AUTH_REDIRECT=$request_uri;Path=/;Max-Age=14400";
return 302 /auth/self-service/browser/flows/login;
}
#error_page 404 /404.html;
# location = /usr/share/nginx/html/40x.html {
#}
error_page 500 502 503 504 /50x.html;
location = /usr/share/nginx/html/50x.html {
}
}
}

View File

@@ -1,100 +0,0 @@
{% set MAININT = salt['pillar.get']('host:mainint') %}
{% set MAINIP = salt['grains.get']('ip_interfaces').get(MAININT)[0] %}
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
server {
listen 80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
server {
listen 8090 ssl http2 default_server;
server_name _;
root /opt/socore/html;
index blank.html;
ssl_certificate "/etc/pki/nginx/server.crt";
ssl_certificate_key "/etc/pki/nginx/server.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location ~ ^/kolide.agent.Api/(RequestEnrollment|RequestConfig|RequestQueries|PublishLogs|PublishResults|CheckHealth)$ {
grpc_pass grpcs://{{ MAINIP }}:8080;
grpc_set_header Host $host;
grpc_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
}
}
server {
listen 443 ssl http2 default_server;
server_name _;
root /opt/socore/html/packages;
index index.html;
ssl_certificate "/etc/pki/nginx/server.crt";
ssl_certificate_key "/etc/pki/nginx/server.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location /fleet/ {
proxy_pass https://{{ MAINIP }}:8080;
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Proxy "";
proxy_set_header X-Forwarded-Proto $scheme;
}
#error_page 404 /404.html;
# location = /40x.html {
#}
error_page 500 502 503 504 /50x.html;
location = /usr/share/nginx/html/50x.html {
}
}
}

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