mirror of
https://github.com/Security-Onion-Solutions/securityonion.git
synced 2025-12-06 17:22:49 +01:00
Merge pull request #8 from Security-Onion-Solutions/dev
Dev Sync 20210401
This commit is contained in:
@@ -11,7 +11,7 @@ airgap_repo:
|
|||||||
pkgrepo.managed:
|
pkgrepo.managed:
|
||||||
- humanname: Airgap Repo
|
- humanname: Airgap Repo
|
||||||
- baseurl: https://{{ MANAGER }}/repo
|
- baseurl: https://{{ MANAGER }}/repo
|
||||||
- gpgcheck: 0
|
- gpgcheck: 1
|
||||||
- sslverify: 0
|
- sslverify: 0
|
||||||
|
|
||||||
agbase:
|
agbase:
|
||||||
|
|||||||
@@ -72,11 +72,6 @@ repair_yumdb:
|
|||||||
- onlyif:
|
- onlyif:
|
||||||
- 'yum check-update 2>&1 | grep "Error: rpmdb open failed"'
|
- 'yum check-update 2>&1 | grep "Error: rpmdb open failed"'
|
||||||
|
|
||||||
epel:
|
|
||||||
pkg.installed:
|
|
||||||
- skip_suggestions: True
|
|
||||||
- pkgs:
|
|
||||||
- epel-release
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
# Install common packages
|
# Install common packages
|
||||||
|
|||||||
52
salt/common/keys/GPG-KEY-WAZUH
Normal file
52
salt/common/keys/GPG-KEY-WAZUH
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
Version: GnuPG v2.0.22 (GNU/Linux)
|
||||||
|
|
||||||
|
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
|
||||||
|
bvP0H2BRCKoelsbRENu58BkU6YhiUry7pVul
|
||||||
|
=SJij
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
29
salt/common/keys/RPM-GPG-KEY-EPEL-7
Normal file
29
salt/common/keys/RPM-GPG-KEY-EPEL-7
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
Version: GnuPG v1.4.11 (GNU/Linux)
|
||||||
|
|
||||||
|
mQINBFKuaIQBEAC1UphXwMqCAarPUH/ZsOFslabeTVO2pDk5YnO96f+rgZB7xArB
|
||||||
|
OSeQk7B90iqSJ85/c72OAn4OXYvT63gfCeXpJs5M7emXkPsNQWWSju99lW+AqSNm
|
||||||
|
jYWhmRlLRGl0OO7gIwj776dIXvcMNFlzSPj00N2xAqjMbjlnV2n2abAE5gq6VpqP
|
||||||
|
vFXVyfrVa/ualogDVmf6h2t4Rdpifq8qTHsHFU3xpCz+T6/dGWKGQ42ZQfTaLnDM
|
||||||
|
jToAsmY0AyevkIbX6iZVtzGvanYpPcWW4X0RDPcpqfFNZk643xI4lsZ+Y2Er9Yu5
|
||||||
|
S/8x0ly+tmmIokaE0wwbdUu740YTZjCesroYWiRg5zuQ2xfKxJoV5E+Eh+tYwGDJ
|
||||||
|
n6HfWhRgnudRRwvuJ45ztYVtKulKw8QQpd2STWrcQQDJaRWmnMooX/PATTjCBExB
|
||||||
|
9dkz38Druvk7IkHMtsIqlkAOQMdsX1d3Tov6BE2XDjIG0zFxLduJGbVwc/6rIc95
|
||||||
|
T055j36Ez0HrjxdpTGOOHxRqMK5m9flFbaxxtDnS7w77WqzW7HjFrD0VeTx2vnjj
|
||||||
|
GqchHEQpfDpFOzb8LTFhgYidyRNUflQY35WLOzLNV+pV3eQ3Jg11UFwelSNLqfQf
|
||||||
|
uFRGc+zcwkNjHh5yPvm9odR1BIfqJ6sKGPGbtPNXo7ERMRypWyRz0zi0twARAQAB
|
||||||
|
tChGZWRvcmEgRVBFTCAoNykgPGVwZWxAZmVkb3JhcHJvamVjdC5vcmc+iQI4BBMB
|
||||||
|
AgAiBQJSrmiEAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRBqL66iNSxk
|
||||||
|
5cfGD/4spqpsTjtDM7qpytKLHKruZtvuWiqt5RfvT9ww9GUUFMZ4ZZGX4nUXg49q
|
||||||
|
ixDLayWR8ddG/s5kyOi3C0uX/6inzaYyRg+Bh70brqKUK14F1BrrPi29eaKfG+Gu
|
||||||
|
MFtXdBG2a7OtPmw3yuKmq9Epv6B0mP6E5KSdvSRSqJWtGcA6wRS/wDzXJENHp5re
|
||||||
|
9Ism3CYydpy0GLRA5wo4fPB5uLdUhLEUDvh2KK//fMjja3o0L+SNz8N0aDZyn5Ax
|
||||||
|
CU9RB3EHcTecFgoy5umRj99BZrebR1NO+4gBrivIfdvD4fJNfNBHXwhSH9ACGCNv
|
||||||
|
HnXVjHQF9iHWApKkRIeh8Fr2n5dtfJEF7SEX8GbX7FbsWo29kXMrVgNqHNyDnfAB
|
||||||
|
VoPubgQdtJZJkVZAkaHrMu8AytwT62Q4eNqmJI1aWbZQNI5jWYqc6RKuCK6/F99q
|
||||||
|
thFT9gJO17+yRuL6Uv2/vgzVR1RGdwVLKwlUjGPAjYflpCQwWMAASxiv9uPyYPHc
|
||||||
|
ErSrbRG0wjIfAR3vus1OSOx3xZHZpXFfmQTsDP7zVROLzV98R3JwFAxJ4/xqeON4
|
||||||
|
vCPFU6OsT3lWQ8w7il5ohY95wmujfr6lk89kEzJdOTzcn7DBbUru33CQMGKZ3Evt
|
||||||
|
RjsC7FDbL017qxS+ZVA/HGkyfiu4cpgV8VUnbql5eAZ+1Ll6Dw==
|
||||||
|
=hdPa
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
31
salt/common/keys/SALTSTACK-GPG-KEY.pub
Normal file
31
salt/common/keys/SALTSTACK-GPG-KEY.pub
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
Version: GnuPG v2
|
||||||
|
|
||||||
|
mQENBFOpvpgBCADkP656H41i8fpplEEB8IeLhugyC2rTEwwSclb8tQNYtUiGdna9
|
||||||
|
m38kb0OS2DDrEdtdQb2hWCnswxaAkUunb2qq18vd3dBvlnI+C4/xu5ksZZkRj+fW
|
||||||
|
tArNR18V+2jkwcG26m8AxIrT+m4M6/bgnSfHTBtT5adNfVcTHqiT1JtCbQcXmwVw
|
||||||
|
WbqS6v/LhcsBE//SHne4uBCK/GHxZHhQ5jz5h+3vWeV4gvxS3Xu6v1IlIpLDwUts
|
||||||
|
kT1DumfynYnnZmWTGc6SYyIFXTPJLtnoWDb9OBdWgZxXfHEcBsKGha+bXO+m2tHA
|
||||||
|
gNneN9i5f8oNxo5njrL8jkCckOpNpng18BKXABEBAAG0MlNhbHRTdGFjayBQYWNr
|
||||||
|
YWdpbmcgVGVhbSA8cGFja2FnaW5nQHNhbHRzdGFjay5jb20+iQE4BBMBAgAiBQJT
|
||||||
|
qb6YAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRAOCKFJ3le/vhkqB/0Q
|
||||||
|
WzELZf4d87WApzolLG+zpsJKtt/ueXL1W1KA7JILhXB1uyvVORt8uA9FjmE083o1
|
||||||
|
yE66wCya7V8hjNn2lkLXboOUd1UTErlRg1GYbIt++VPscTxHxwpjDGxDB1/fiX2o
|
||||||
|
nK5SEpuj4IeIPJVE/uLNAwZyfX8DArLVJ5h8lknwiHlQLGlnOu9ulEAejwAKt9CU
|
||||||
|
4oYTszYM4xrbtjB/fR+mPnYh2fBoQO4d/NQiejIEyd9IEEMd/03AJQBuMux62tjA
|
||||||
|
/NwvQ9eqNgLw9NisFNHRWtP4jhAOsshv1WW+zPzu3ozoO+lLHixUIz7fqRk38q8Q
|
||||||
|
9oNR31KvrkSNrFbA3D89uQENBFOpvpgBCADJ79iH10AfAfpTBEQwa6vzUI3Eltqb
|
||||||
|
9aZ0xbZV8V/8pnuU7rqM7Z+nJgldibFk4gFG2bHCG1C5aEH/FmcOMvTKDhJSFQUx
|
||||||
|
uhgxttMArXm2c22OSy1hpsnVG68G32Nag/QFEJ++3hNnbyGZpHnPiYgej3FrerQJ
|
||||||
|
zv456wIsxRDMvJ1NZQB3twoCqwapC6FJE2hukSdWB5yCYpWlZJXBKzlYz/gwD/Fr
|
||||||
|
GL578WrLhKw3UvnJmlpqQaDKwmV2s7MsoZogC6wkHE92kGPG2GmoRD3ALjmCvN1E
|
||||||
|
PsIsQGnwpcXsRpYVCoW7e2nW4wUf7IkFZ94yOCmUq6WreWI4NggRcFC5ABEBAAGJ
|
||||||
|
AR8EGAECAAkFAlOpvpgCGwwACgkQDgihSd5Xv74/NggA08kEdBkiWWwJZUZEy7cK
|
||||||
|
WWcgjnRuOHd4rPeT+vQbOWGu6x4bxuVf9aTiYkf7ZjVF2lPn97EXOEGFWPZeZbH4
|
||||||
|
vdRFH9jMtP+rrLt6+3c9j0M8SIJYwBL1+CNpEC/BuHj/Ra/cmnG5ZNhYebm76h5f
|
||||||
|
T9iPW9fFww36FzFka4VPlvA4oB7ebBtquFg3sdQNU/MmTVV4jPFWXxh4oRDDR+8N
|
||||||
|
1bcPnbB11b5ary99F/mqr7RgQ+YFF0uKRE3SKa7a+6cIuHEZ7Za+zhPaQlzAOZlx
|
||||||
|
fuBmScum8uQTrEF5+Um5zkwC7EXTdH1co/+/V/fpOtxIg4XO4kcugZefVm5ERfVS
|
||||||
|
MA==
|
||||||
|
=dtMN
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
28
salt/common/keys/docker.pub
Normal file
28
salt/common/keys/docker.pub
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
mQINBFit5IEBEADDt86QpYKz5flnCsOyZ/fk3WwBKxfDjwHf/GIflo+4GWAXS7wJ
|
||||||
|
1PSzPsvSDATV10J44i5WQzh99q+lZvFCVRFiNhRmlmcXG+rk1QmDh3fsCCj9Q/yP
|
||||||
|
w8jn3Hx0zDtz8PIB/18ReftYJzUo34COLiHn8WiY20uGCF2pjdPgfxE+K454c4G7
|
||||||
|
gKFqVUFYgPug2CS0quaBB5b0rpFUdzTeI5RCStd27nHCpuSDCvRYAfdv+4Y1yiVh
|
||||||
|
KKdoe3Smj+RnXeVMgDxtH9FJibZ3DK7WnMN2yeob6VqXox+FvKYJCCLkbQgQmE50
|
||||||
|
uVK0uN71A1mQDcTRKQ2q3fFGlMTqJbbzr3LwnCBE6hV0a36t+DABtZTmz5O69xdJ
|
||||||
|
WGdBeePCnWVqtDb/BdEYz7hPKskcZBarygCCe2Xi7sZieoFZuq6ltPoCsdfEdfbO
|
||||||
|
+VBVKJnExqNZCcFUTEnbH4CldWROOzMS8BGUlkGpa59Sl1t0QcmWlw1EbkeMQNrN
|
||||||
|
spdR8lobcdNS9bpAJQqSHRZh3cAM9mA3Yq/bssUS/P2quRXLjJ9mIv3dky9C3udM
|
||||||
|
+q2unvnbNpPtIUly76FJ3s8g8sHeOnmYcKqNGqHq2Q3kMdA2eIbI0MqfOIo2+Xk0
|
||||||
|
rNt3ctq3g+cQiorcN3rdHPsTRSAcp+NCz1QF9TwXYtH1XV24A6QMO0+CZwARAQAB
|
||||||
|
tCtEb2NrZXIgUmVsZWFzZSAoQ0UgcnBtKSA8ZG9ja2VyQGRvY2tlci5jb20+iQI3
|
||||||
|
BBMBCgAhBQJYrep4AhsvBQsJCAcDBRUKCQgLBRYCAwEAAh4BAheAAAoJEMUv62ti
|
||||||
|
Hp816C0P/iP+1uhSa6Qq3TIc5sIFE5JHxOO6y0R97cUdAmCbEqBiJHUPNQDQaaRG
|
||||||
|
VYBm0K013Q1gcJeUJvS32gthmIvhkstw7KTodwOM8Kl11CCqZ07NPFef1b2SaJ7l
|
||||||
|
TYpyUsT9+e343ph+O4C1oUQw6flaAJe+8ATCmI/4KxfhIjD2a/Q1voR5tUIxfexC
|
||||||
|
/LZTx05gyf2mAgEWlRm/cGTStNfqDN1uoKMlV+WFuB1j2oTUuO1/dr8mL+FgZAM3
|
||||||
|
ntWFo9gQCllNV9ahYOON2gkoZoNuPUnHsf4Bj6BQJnIXbAhMk9H2sZzwUi9bgObZ
|
||||||
|
XO8+OrP4D4B9kCAKqqaQqA+O46LzO2vhN74lm/Fy6PumHuviqDBdN+HgtRPMUuao
|
||||||
|
xnuVJSvBu9sPdgT/pR1N9u/KnfAnnLtR6g+fx4mWz+ts/riB/KRHzXd+44jGKZra
|
||||||
|
IhTMfniguMJNsyEOO0AN8Tqcl0eRBxcOArcri7xu8HFvvl+e+ILymu4buusbYEVL
|
||||||
|
GBkYP5YMmScfKn+jnDVN4mWoN1Bq2yMhMGx6PA3hOvzPNsUoYy2BwDxNZyflzuAi
|
||||||
|
g59mgJm2NXtzNbSRJbMamKpQ69mzLWGdFNsRd4aH7PT7uPAURaf7B5BVp3UyjERW
|
||||||
|
5alSGnBqsZmvlRnVH5BDUhYsWZMPRQS9rRr4iGW0l+TH+O2VJ8aQ
|
||||||
|
=0Zqq
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
52
salt/common/keys/securityonion.pub
Normal file
52
salt/common/keys/securityonion.pub
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
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
|
||||||
|
=bhkm
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
@@ -162,6 +162,23 @@ get_random_value() {
|
|||||||
head -c 5000 /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w $length | head -n 1
|
head -c 5000 /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w $length | head -n 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gpg_rpm_import() {
|
||||||
|
if [[ "$OS" == "centos" ]]; then
|
||||||
|
if [[ "$WHATWOULDYOUSAYYAHDOHERE" == "setup" ]]; then
|
||||||
|
local RPMKEYSLOC="../salt/common/keys"
|
||||||
|
else
|
||||||
|
local RPMKEYSLOC="$UPDATEDIR/salt/common/keys"
|
||||||
|
fi
|
||||||
|
|
||||||
|
RPMKEYS=('RPM-GPG-KEY-EPEL-7' 'GPG-KEY-WAZUH' 'docker.pub' 'SALTSTACK-GPG-KEY.pub' 'securityonion.pub')
|
||||||
|
|
||||||
|
for RPMKEY in "${RPMKEYS[@]}"; do
|
||||||
|
rpm --import $RPMKEYSLOC/$RPMKEY
|
||||||
|
echo "Imported $RPMKEY"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
header() {
|
header() {
|
||||||
printf '%s\n' "" "$banner" " $*" "$banner"
|
printf '%s\n' "" "$banner" " $*" "$banner"
|
||||||
}
|
}
|
||||||
@@ -419,6 +436,20 @@ valid_proxy() {
|
|||||||
[[ $has_prefix == true ]] && [[ $valid_url == true ]] && return 0 || return 1
|
[[ $has_prefix == true ]] && [[ $valid_url == true ]] && return 0 || return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
valid_ntp_list() {
|
||||||
|
local string=$1
|
||||||
|
local ntp_arr
|
||||||
|
IFS="," read -r -a ntp_arr <<< "$string"
|
||||||
|
|
||||||
|
for ntp in "${ntp_arr[@]}"; do
|
||||||
|
if ! valid_ip4 "$ntp" && ! valid_hostname "$ntp" && ! valid_fqdn "$ntp"; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
valid_string() {
|
valid_string() {
|
||||||
local str=$1
|
local str=$1
|
||||||
local min_length=${2:-1}
|
local min_length=${2:-1}
|
||||||
|
|||||||
21
salt/common/tools/sbin/so-elasticsearch-indices-list
Executable file
21
salt/common/tools/sbin/so-elasticsearch-indices-list
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright 2014,2015,2016,2017,2018,2019,2020,2021 Security Onion Solutions, LLC
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
{%- set NODEIP = salt['pillar.get']('elasticsearch:mainip', '') -%}
|
||||||
|
|
||||||
|
. /usr/sbin/so-common
|
||||||
|
|
||||||
|
curl -s -k -L https://{{ NODEIP }}:9200/_cat/indices?pretty
|
||||||
25
salt/common/tools/sbin/so-elasticsearch-pipeline-view
Executable file
25
salt/common/tools/sbin/so-elasticsearch-pipeline-view
Executable file
@@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright 2014,2015,2016,2017,2018,2019,2020,2021 Security Onion Solutions, LLC
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
{%- set NODEIP = salt['pillar.get']('elasticsearch:mainip', '') -%}
|
||||||
|
|
||||||
|
. /usr/sbin/so-common
|
||||||
|
|
||||||
|
if [ "$1" == "" ]; then
|
||||||
|
curl -s -k -L https://{{ NODEIP }}:9200/_ingest/pipeline/* | jq .
|
||||||
|
else
|
||||||
|
curl -s -k -L https://{{ NODEIP }}:9200/_ingest/pipeline/$1 | jq .
|
||||||
|
fi
|
||||||
21
salt/common/tools/sbin/so-elasticsearch-shards-list
Executable file
21
salt/common/tools/sbin/so-elasticsearch-shards-list
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright 2014,2015,2016,2017,2018,2019,2020,2021 Security Onion Solutions, LLC
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
{%- set NODEIP = salt['pillar.get']('elasticsearch:mainip', '') -%}
|
||||||
|
|
||||||
|
. /usr/sbin/so-common
|
||||||
|
|
||||||
|
curl -s -k -L https://{{ NODEIP }}:9200/_cat/shards?pretty
|
||||||
21
salt/common/tools/sbin/so-elasticsearch-template-remove
Executable file
21
salt/common/tools/sbin/so-elasticsearch-template-remove
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright 2014,2015,2016,2017,2018,2019,2020,2021 Security Onion Solutions, LLC
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
{%- set NODEIP = salt['pillar.get']('elasticsearch:mainip', '') -%}
|
||||||
|
|
||||||
|
. /usr/sbin/so-common
|
||||||
|
|
||||||
|
curl -s -k -L -XDELETE https://{{ NODEIP }}:9200/_template/$1
|
||||||
25
salt/common/tools/sbin/so-elasticsearch-template-view
Executable file
25
salt/common/tools/sbin/so-elasticsearch-template-view
Executable file
@@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright 2014,2015,2016,2017,2018,2019,2020,2021 Security Onion Solutions, LLC
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
{%- set NODEIP = salt['pillar.get']('elasticsearch:mainip', '') -%}
|
||||||
|
|
||||||
|
. /usr/sbin/so-common
|
||||||
|
|
||||||
|
if [ "$1" == "" ]; then
|
||||||
|
curl -s -k -L https://{{ NODEIP }}:9200/_template/* | jq .
|
||||||
|
else
|
||||||
|
curl -s -k -L https://{{ NODEIP }}:9200/_template/$1 | jq .
|
||||||
|
fi
|
||||||
@@ -15,4 +15,4 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
curl -X GET -k -L https://localhost:9200/_cat/indices?v
|
curl -X GET -k -L "https://localhost:9200/_cat/indices?v&s=index"
|
||||||
|
|||||||
0
salt/common/tools/sbin/so-kibana-space-defaults
Normal file → Executable file
0
salt/common/tools/sbin/so-kibana-space-defaults
Normal file → Executable file
25
salt/common/tools/sbin/so-logstash-events
Executable file
25
salt/common/tools/sbin/so-logstash-events
Executable file
@@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright 2014,2015,2016,2017,2018,2019,2020,2021 Security Onion Solutions, LLC
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
{%- set NODEIP = salt['pillar.get']('elasticsearch:mainip', '') -%}
|
||||||
|
|
||||||
|
. /usr/sbin/so-common
|
||||||
|
|
||||||
|
if [ "$1" == "" ]; then
|
||||||
|
for i in $(curl -s -L http://{{ NODEIP }}:9600/_node/stats | jq .pipelines | jq '. | to_entries | .[].key' | sed 's/\"//g'); do echo ${i^}:; curl -s localhost:9600/_node/stats | jq .pipelines.$i.events; done
|
||||||
|
else
|
||||||
|
curl -s -L http://{{ NODEIP }}:9600/_node/stats | jq .pipelines.$1.events
|
||||||
|
fi
|
||||||
25
salt/common/tools/sbin/so-logstash-pipeline-stats
Executable file
25
salt/common/tools/sbin/so-logstash-pipeline-stats
Executable file
@@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright 2014,2015,2016,2017,2018,2019,2020,2021 Security Onion Solutions, LLC
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
{%- set NODEIP = salt['pillar.get']('elasticsearch:mainip', '') -%}
|
||||||
|
|
||||||
|
. /usr/sbin/so-common
|
||||||
|
|
||||||
|
if [ "$1" == "" ]; then
|
||||||
|
curl -s -L http://{{ NODEIP }}:9600/_node/stats | jq .pipelines
|
||||||
|
else
|
||||||
|
curl -s -L http://{{ NODEIP }}:9600/_node/stats | jq .pipelines.$1
|
||||||
|
fi
|
||||||
@@ -17,4 +17,8 @@
|
|||||||
|
|
||||||
. /usr/sbin/so-common
|
. /usr/sbin/so-common
|
||||||
|
|
||||||
|
# Check to see if we are already running
|
||||||
|
IS_RUNNING=$(ps aux | pgrep -f "so-playbook-sync" | wc -l)
|
||||||
|
[ "$IS_RUNNING" -gt 2 ] && echo "$(date) - Multiple Playbook Sync processes already running...exiting." && exit 0
|
||||||
|
|
||||||
docker exec so-soctopus python3 playbook_play-sync.py
|
docker exec so-soctopus python3 playbook_play-sync.py
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ clean() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Check to see if we are already running
|
# Check to see if we are already running
|
||||||
IS_RUNNING=$(ps aux | grep "so-sensor-clean" | grep -v grep | wc -l)
|
IS_RUNNING=$(ps aux | pgrep -f "so-sensor-clean" | wc -l)
|
||||||
[ "$IS_RUNNING" -gt 2 ] && echo "$(date) - $IS_RUNNING sensor clean script processes running...exiting." >>$LOG && exit 0
|
[ "$IS_RUNNING" -gt 2 ] && echo "$(date) - $IS_RUNNING sensor clean script processes running...exiting." >>$LOG && exit 0
|
||||||
|
|
||||||
if [ "$CUR_USAGE" -gt "$CRIT_DISK_USAGE" ]; then
|
if [ "$CUR_USAGE" -gt "$CRIT_DISK_USAGE" ]; then
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ INSTALLEDSALTVERSION=$(salt --versions-report | grep Salt: | awk {'print $2'})
|
|||||||
DEFAULT_SALT_DIR=/opt/so/saltstack/default
|
DEFAULT_SALT_DIR=/opt/so/saltstack/default
|
||||||
BATCHSIZE=5
|
BATCHSIZE=5
|
||||||
SOUP_LOG=/root/soup.log
|
SOUP_LOG=/root/soup.log
|
||||||
|
WHATWOULDYOUSAYYAHDOHERE=soup
|
||||||
|
|
||||||
add_common() {
|
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-common $DEFAULT_SALT_DIR/salt/common/tools/sbin/
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ class PlaybookESAlerter(Alerter):
|
|||||||
def alert(self, matches):
|
def alert(self, matches):
|
||||||
for match in matches:
|
for match in matches:
|
||||||
today = strftime("%Y.%m.%d", gmtime())
|
today = strftime("%Y.%m.%d", gmtime())
|
||||||
timestamp = strftime("%Y-%m-%d"'T'"%H:%M:%S", gmtime())
|
timestamp = strftime("%Y-%m-%d"'T'"%H:%M:%S"'.000Z', gmtime())
|
||||||
headers = {"Content-Type": "application/json"}
|
headers = {"Content-Type": "application/json"}
|
||||||
payload = {"rule": { "name": self.rule['play_title'],"case_template": self.rule['play_id'],"uuid": self.rule['play_id'],"category": self.rule['rule.category']},"event":{ "severity": self.rule['event.severity'],"module": self.rule['event.module'],"dataset": self.rule['event.dataset'],"severity_label": self.rule['sigma_level']},"kibana_pivot": self.rule['kibana_pivot'],"soc_pivot": self.rule['soc_pivot'],"play_url": self.rule['play_url'],"sigma_level": self.rule['sigma_level'],"event_data": match, "@timestamp": timestamp}
|
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"https://{self.rule['elasticsearch_host']}/so-playbook-alerts-{today}/_doc/"
|
url = f"https://{self.rule['elasticsearch_host']}/so-playbook-alerts-{today}/_doc/"
|
||||||
|
|||||||
@@ -267,7 +267,12 @@
|
|||||||
},
|
},
|
||||||
"ingest":{
|
"ingest":{
|
||||||
"type":"object",
|
"type":"object",
|
||||||
"dynamic": true
|
"dynamic": true,
|
||||||
|
"properties":{
|
||||||
|
"timestamp":{
|
||||||
|
"type":"date"
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"intel":{
|
"intel":{
|
||||||
"type":"object",
|
"type":"object",
|
||||||
|
|||||||
@@ -18,14 +18,18 @@
|
|||||||
|
|
||||||
{# This block translate the portgroups defined in the pillar to what is defined my portgroups.yaml and portgroups.local.yaml #}
|
{# This block translate the portgroups defined in the pillar to what is defined my portgroups.yaml and portgroups.local.yaml #}
|
||||||
{% if salt['pillar.get']('firewall:assigned_hostgroups:chain') %}
|
{% if salt['pillar.get']('firewall:assigned_hostgroups:chain') %}
|
||||||
|
{% set translated_pillar_assigned_hostgroups = {'chain': {}} %}
|
||||||
|
|
||||||
{% for chain, hg in salt['pillar.get']('firewall:assigned_hostgroups:chain').items() %}
|
{% for chain, hg in salt['pillar.get']('firewall:assigned_hostgroups:chain').items() %}
|
||||||
{% for pillar_hostgroup, pillar_portgroups in salt['pillar.get']('firewall:assigned_hostgroups:chain')[chain].hostgroups.items() %}
|
{% for pillar_hostgroup, pillar_portgroups in salt['pillar.get']('firewall:assigned_hostgroups:chain')[chain].hostgroups.items() %}
|
||||||
{% do translated_pillar_assigned_hostgroups.update({"chain": {chain: {"hostgroups": {pillar_hostgroup: {"portgroups": []}}}}}) %}
|
{% if translated_pillar_assigned_hostgroups.chain[chain] is defined %}
|
||||||
|
{% do translated_pillar_assigned_hostgroups.chain[chain].hostgroups.update({pillar_hostgroup: {"portgroups": []}}) %}
|
||||||
|
{% else %}
|
||||||
|
{% do translated_pillar_assigned_hostgroups.chain.update({chain: {"hostgroups": {pillar_hostgroup: {"portgroups": []}}}}) %}
|
||||||
|
{% endif %}
|
||||||
{% for pillar_portgroup in pillar_portgroups.portgroups %}
|
{% for pillar_portgroup in pillar_portgroups.portgroups %}
|
||||||
{% set pillar_portgroup = pillar_portgroup.split('.') | last %}
|
{% set pillar_portgroup = pillar_portgroup.split('.') | last %}
|
||||||
{% do translated_pillar_assigned_hostgroups.chain[chain].hostgroups[pillar_hostgroup].portgroups.append(defined_portgroups[pillar_portgroup]) %}
|
{% do translated_pillar_assigned_hostgroups.chain[chain].hostgroups[pillar_hostgroup].portgroups.append(defined_portgroups[pillar_portgroup]) %}
|
||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
@@ -39,7 +43,6 @@
|
|||||||
{% set assigned_hostgroups = default_assigned_hostgroups.role[role] %}
|
{% set assigned_hostgroups = default_assigned_hostgroups.role[role] %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
{% if translated_pillar_assigned_hostgroups %}
|
{% if translated_pillar_assigned_hostgroups %}
|
||||||
{% do salt['defaults.merge'](assigned_hostgroups, translated_pillar_assigned_hostgroups, merge_lists=True, in_place=True) %}
|
{% do salt['defaults.merge'](assigned_hostgroups, translated_pillar_assigned_hostgroups, merge_lists=True, in_place=True) %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -20,6 +20,7 @@ Remap-npm: registry.npmjs.org
|
|||||||
Remap-node: nodejs.org
|
Remap-node: nodejs.org
|
||||||
Remap-apache: file:apache_mirrors ; file:backends_apache.us
|
Remap-apache: file:apache_mirrors ; file:backends_apache.us
|
||||||
Remap-salt: repo.saltstack.com; https://repo.saltstack.com
|
Remap-salt: repo.saltstack.com; https://repo.saltstack.com
|
||||||
|
Remap-securityonion: http://repocache.securityonion.net ; file:securityonion
|
||||||
# Remap-secdeb: security.debian.org
|
# Remap-secdeb: security.debian.org
|
||||||
ReportPage: acng-report.html
|
ReportPage: acng-report.html
|
||||||
# SocketPath:/var/run/apt-cacher-ng/socket
|
# SocketPath:/var/run/apt-cacher-ng/socket
|
||||||
@@ -79,7 +80,7 @@ RedirMax: 6
|
|||||||
VfileUseRangeOps: 0
|
VfileUseRangeOps: 0
|
||||||
# PassThroughPattern: private-ppa\.launchpad\.net:443$
|
# PassThroughPattern: private-ppa\.launchpad\.net:443$
|
||||||
# PassThroughPattern: .* # this would allow CONNECT to everything
|
# PassThroughPattern: .* # this would allow CONNECT to everything
|
||||||
PassThroughPattern: (download\.docker\.com:443|mirrors\.fedoraproject\.org:443|packages\.wazuh\.com:443|repo\.saltstack\.com:443|yum\.dockerproject\.org:443|download\.docker\.com:443|registry\.npmjs\.org:443|registry\.yarnpkg\.com:443)$ # yarn/npm pkg, cant to http :/
|
PassThroughPattern: (repo\.securityonion\.net:443|download\.docker\.com:443|mirrors\.fedoraproject\.org:443|packages\.wazuh\.com:443|repo\.saltstack\.com:443|yum\.dockerproject\.org:443|download\.docker\.com:443|registry\.npmjs\.org:443|registry\.yarnpkg\.com:443)$ # yarn/npm pkg, cant to http :/
|
||||||
# ResponseFreezeDetectTime: 500
|
# ResponseFreezeDetectTime: 500
|
||||||
# ReuseConnections: 1
|
# ReuseConnections: 1
|
||||||
# PipelineDepth: 255
|
# PipelineDepth: 255
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ http {
|
|||||||
ssl_prefer_server_ciphers on;
|
ssl_prefer_server_ciphers on;
|
||||||
ssl_protocols TLSv1.2;
|
ssl_protocols TLSv1.2;
|
||||||
|
|
||||||
location ~* (^/login/|^/js/.*|^/css/.*|^/images/.*) {
|
location ~* (^/login/.*|^/js/.*|^/css/.*|^/images/.*) {
|
||||||
proxy_pass http://{{ manager_ip }}:9822;
|
proxy_pass http://{{ manager_ip }}:9822;
|
||||||
proxy_read_timeout 90;
|
proxy_read_timeout 90;
|
||||||
proxy_connect_timeout 90;
|
proxy_connect_timeout 90;
|
||||||
|
|||||||
0
salt/soc/files/soc/banner.md
Normal file
0
salt/soc/files/soc/banner.md
Normal file
@@ -18,7 +18,4 @@
|
|||||||
content placed here so that upgrading to newer version of
|
content placed here so that upgrading to newer version of
|
||||||
Security Onion do not become a burden.
|
Security Onion do not become a burden.
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
i18n.translations["en-US"].loginHeader = "Unauthorized use of this computer system is prohibited...";
|
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -44,6 +44,15 @@ socmotd:
|
|||||||
- mode: 600
|
- mode: 600
|
||||||
- template: jinja
|
- template: jinja
|
||||||
|
|
||||||
|
socbanner:
|
||||||
|
file.managed:
|
||||||
|
- name: /opt/so/conf/soc/banner.md
|
||||||
|
- source: salt://soc/files/soc/banner.md
|
||||||
|
- user: 939
|
||||||
|
- group: 939
|
||||||
|
- mode: 600
|
||||||
|
- template: jinja
|
||||||
|
|
||||||
soccustom:
|
soccustom:
|
||||||
file.managed:
|
file.managed:
|
||||||
- name: /opt/so/conf/soc/custom.js
|
- name: /opt/so/conf/soc/custom.js
|
||||||
@@ -62,6 +71,7 @@ so-soc:
|
|||||||
- /nsm/soc/jobs:/opt/sensoroni/jobs:rw
|
- /nsm/soc/jobs:/opt/sensoroni/jobs:rw
|
||||||
- /opt/so/conf/soc/soc.json:/opt/sensoroni/sensoroni.json:ro
|
- /opt/so/conf/soc/soc.json:/opt/sensoroni/sensoroni.json:ro
|
||||||
- /opt/so/conf/soc/motd.md:/opt/sensoroni/html/motd.md:ro
|
- /opt/so/conf/soc/motd.md:/opt/sensoroni/html/motd.md:ro
|
||||||
|
- /opt/so/conf/soc/banner.md:/opt/sensoroni/html/login/banner.md:ro
|
||||||
- /opt/so/conf/soc/custom.js:/opt/sensoroni/html/js/custom.js:ro
|
- /opt/so/conf/soc/custom.js:/opt/sensoroni/html/js/custom.js:ro
|
||||||
- /opt/so/log/soc/:/opt/sensoroni/logs/:rw
|
- /opt/so/log/soc/:/opt/sensoroni/logs/:rw
|
||||||
{%- if salt['pillar.get']('nodestab', {}) %}
|
{%- if salt['pillar.get']('nodestab', {}) %}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ install_type=EVAL
|
|||||||
# LSPIPELINEBATCH=
|
# LSPIPELINEBATCH=
|
||||||
# LSPIPELINEWORKERS=
|
# LSPIPELINEWORKERS=
|
||||||
MANAGERADV=BASIC
|
MANAGERADV=BASIC
|
||||||
MANAGERUPDATES=1
|
MANAGERUPDATES=0
|
||||||
# MDNS=
|
# MDNS=
|
||||||
# MGATEWAY=
|
# MGATEWAY=
|
||||||
# MIP=
|
# MIP=
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ INTERWEBS=AIRGAP
|
|||||||
# LSPIPELINEBATCH=
|
# LSPIPELINEBATCH=
|
||||||
# LSPIPELINEWORKERS=
|
# LSPIPELINEWORKERS=
|
||||||
MANAGERADV=BASIC
|
MANAGERADV=BASIC
|
||||||
MANAGERUPDATES=1
|
MANAGERUPDATES=0
|
||||||
# MDNS=
|
# MDNS=
|
||||||
# MGATEWAY=
|
# MGATEWAY=
|
||||||
# MIP=
|
# MIP=
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ install_type=IMPORT
|
|||||||
# LSPIPELINEBATCH=
|
# LSPIPELINEBATCH=
|
||||||
# LSPIPELINEWORKERS=
|
# LSPIPELINEWORKERS=
|
||||||
MANAGERADV=BASIC
|
MANAGERADV=BASIC
|
||||||
MANAGERUPDATES=1
|
MANAGERUPDATES=0
|
||||||
# MDNS=
|
# MDNS=
|
||||||
# MGATEWAY=
|
# MGATEWAY=
|
||||||
# MIP=
|
# MIP=
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ install_type=IMPORT
|
|||||||
# LSPIPELINEBATCH=
|
# LSPIPELINEBATCH=
|
||||||
# LSPIPELINEWORKERS=
|
# LSPIPELINEWORKERS=
|
||||||
MANAGERADV=BASIC
|
MANAGERADV=BASIC
|
||||||
MANAGERUPDATES=1
|
MANAGERUPDATES=0
|
||||||
# MDNS=
|
# MDNS=
|
||||||
# MGATEWAY=
|
# MGATEWAY=
|
||||||
# MIP=
|
# MIP=
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ install_type=IMPORT
|
|||||||
# LSPIPELINEBATCH=
|
# LSPIPELINEBATCH=
|
||||||
# LSPIPELINEWORKERS=
|
# LSPIPELINEWORKERS=
|
||||||
MANAGERADV=BASIC
|
MANAGERADV=BASIC
|
||||||
MANAGERUPDATES=1
|
MANAGERUPDATES=0
|
||||||
# MDNS=
|
# MDNS=
|
||||||
# MGATEWAY=
|
# MGATEWAY=
|
||||||
# MIP=
|
# MIP=
|
||||||
|
|||||||
@@ -160,11 +160,6 @@ check_network_manager_conf() {
|
|||||||
} >> "$setup_log" 2>&1
|
} >> "$setup_log" 2>&1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#if test -f "$nmconf"; then
|
|
||||||
# sed -i 's/managed=false/managed=true/g' "$nmconf" >> "$setup_log" 2>&1
|
|
||||||
# systemctl restart NetworkManager >> "$setup_log" 2>&1
|
|
||||||
# fi
|
|
||||||
|
|
||||||
if [[ ! -d "$preupdir" ]]; then
|
if [[ ! -d "$preupdir" ]]; then
|
||||||
mkdir "$preupdir" >> "$setup_log" 2>&1
|
mkdir "$preupdir" >> "$setup_log" 2>&1
|
||||||
fi
|
fi
|
||||||
@@ -400,7 +395,7 @@ collect_hostname() {
|
|||||||
|
|
||||||
if [[ $HOSTNAME == 'securityonion' ]]; then # Will only check HOSTNAME=securityonion once
|
if [[ $HOSTNAME == 'securityonion' ]]; then # Will only check HOSTNAME=securityonion once
|
||||||
if ! (whiptail_avoid_default_hostname); then
|
if ! (whiptail_avoid_default_hostname); then
|
||||||
whiptail_set_hostname
|
whiptail_set_hostname "$HOSTNAME"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -486,6 +481,22 @@ collect_node_ls_pipeline_worker_count() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
collect_ntp_servers() {
|
||||||
|
if whiptail_ntp_ask; then
|
||||||
|
[[ $is_airgap ]] && ntp_string=""
|
||||||
|
whiptail_ntp_servers "$ntp_string"
|
||||||
|
|
||||||
|
while ! valid_ntp_list "$ntp_string"; do
|
||||||
|
whiptail_invalid_input
|
||||||
|
whiptail_ntp_servers "$ntp_string"
|
||||||
|
done
|
||||||
|
|
||||||
|
IFS="," read -r -a ntp_servers <<< "$ntp_string" # Split string on commas into array
|
||||||
|
else
|
||||||
|
ntp_servers=()
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
collect_oinkcode() {
|
collect_oinkcode() {
|
||||||
whiptail_oinkcode
|
whiptail_oinkcode
|
||||||
|
|
||||||
@@ -581,7 +592,7 @@ collect_proxy_details() {
|
|||||||
else
|
else
|
||||||
so_proxy="$proxy_addr"
|
so_proxy="$proxy_addr"
|
||||||
fi
|
fi
|
||||||
export proxy
|
export so_proxy
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -702,6 +713,42 @@ configure_minion() {
|
|||||||
} >> "$setup_log" 2>&1
|
} >> "$setup_log" 2>&1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
configure_ntp() {
|
||||||
|
local chrony_conf=/etc/chrony.conf
|
||||||
|
|
||||||
|
# Install chrony if it isn't already installed
|
||||||
|
if ! command -v chronyc &> /dev/null; then
|
||||||
|
yum -y install chrony
|
||||||
|
fi
|
||||||
|
|
||||||
|
[[ -f $chrony_conf ]] && mv $chrony_conf "$chrony_conf.bak"
|
||||||
|
|
||||||
|
printf '%s\n' "# NTP server list" > $chrony_conf
|
||||||
|
|
||||||
|
# Build list of servers
|
||||||
|
for addr in "${ntp_servers[@]}"; do
|
||||||
|
echo "server $addr iburst" >> $chrony_conf
|
||||||
|
done
|
||||||
|
|
||||||
|
printf '\n%s\n' "# Config options" >> $chrony_conf
|
||||||
|
|
||||||
|
printf '%s\n' \
|
||||||
|
'driftfile /var/lib/chrony/drift' \
|
||||||
|
'makestep 1.0 3' \
|
||||||
|
'rtcsync' \
|
||||||
|
'logdir /var/log/chrony' >> $chrony_conf
|
||||||
|
|
||||||
|
systemctl enable chronyd
|
||||||
|
systemctl restart chronyd
|
||||||
|
|
||||||
|
# Tell the chrony daemon to sync time & update the system time
|
||||||
|
# Since these commands only make a call to chronyd, wait after each command to make sure the changes are made
|
||||||
|
printf "Syncing chrony time to server: "
|
||||||
|
chronyc -a 'burst 4/4' && sleep 30
|
||||||
|
printf "Forcing chrony to update the time: "
|
||||||
|
chronyc -a makestep && sleep 30
|
||||||
|
}
|
||||||
|
|
||||||
checkin_at_boot() {
|
checkin_at_boot() {
|
||||||
local minion_config=/etc/salt/minion
|
local minion_config=/etc/salt/minion
|
||||||
|
|
||||||
@@ -1054,40 +1101,11 @@ disable_ipv6() {
|
|||||||
} >> /etc/sysctl.conf
|
} >> /etc/sysctl.conf
|
||||||
}
|
}
|
||||||
|
|
||||||
#disable_misc_network_features() {
|
|
||||||
# filter_unused_nics
|
|
||||||
# if [ ${#filtered_nics[@]} -ne 0 ]; then
|
|
||||||
# for unused_nic in "${filtered_nics[@]}"; do
|
|
||||||
# if [ -n "$unused_nic" ]; then
|
|
||||||
# echo "Disabling unused NIC: $unused_nic" >> "$setup_log" 2>&1
|
|
||||||
#
|
|
||||||
# # Disable DHCPv4/v6 and autoconnect
|
|
||||||
# nmcli con mod "$unused_nic" \
|
|
||||||
# ipv4.method disabled \
|
|
||||||
# ipv6.method ignore \
|
|
||||||
# connection.autoconnect "no" >> "$setup_log" 2>&1
|
|
||||||
#
|
|
||||||
# # Flush any existing IPs
|
|
||||||
# ip addr flush "$unused_nic" >> "$setup_log" 2>&1
|
|
||||||
# fi
|
|
||||||
# done
|
|
||||||
# fi
|
|
||||||
# # Disable IPv6
|
|
||||||
# {
|
|
||||||
# echo "net.ipv6.conf.all.disable_ipv6 = 1"
|
|
||||||
# echo "net.ipv6.conf.default.disable_ipv6 = 1"
|
|
||||||
# echo "net.ipv6.conf.lo.disable_ipv6 = 1"
|
|
||||||
# } >> /etc/sysctl.conf
|
|
||||||
#}
|
|
||||||
|
|
||||||
docker_install() {
|
docker_install() {
|
||||||
|
|
||||||
if [ $OS = 'centos' ]; then
|
if [ $OS = 'centos' ]; then
|
||||||
{
|
{
|
||||||
yum clean expire-cache;
|
yum clean expire-cache;
|
||||||
if [[ ! $is_airgap ]]; then
|
|
||||||
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo;
|
|
||||||
fi
|
|
||||||
if [[ ! $is_iso ]]; then
|
if [[ ! $is_iso ]]; then
|
||||||
yum -y install docker-ce-20.10.5-3.el7 containerd.io-1.4.4-3.1.el7;
|
yum -y install docker-ce-20.10.5-3.el7 containerd.io-1.4.4-3.1.el7;
|
||||||
fi
|
fi
|
||||||
@@ -1539,8 +1557,7 @@ manager_pillar() {
|
|||||||
printf '%s\n'\
|
printf '%s\n'\
|
||||||
" kratoskey: '$KRATOSKEY'"\
|
" kratoskey: '$KRATOSKEY'"\
|
||||||
"" >> "$pillar_file"
|
"" >> "$pillar_file"
|
||||||
|
}
|
||||||
}
|
|
||||||
|
|
||||||
manager_global() {
|
manager_global() {
|
||||||
local global_pillar="$local_salt_dir/pillar/global.sls"
|
local global_pillar="$local_salt_dir/pillar/global.sls"
|
||||||
@@ -1564,7 +1581,6 @@ manager_global() {
|
|||||||
"global:"\
|
"global:"\
|
||||||
" soversion: '$SOVERSION'"\
|
" soversion: '$SOVERSION'"\
|
||||||
" hnmanager: '$HNMANAGER'"\
|
" hnmanager: '$HNMANAGER'"\
|
||||||
" ntpserver: '$NTPSERVER'"\
|
|
||||||
" dockernet: '$DOCKERNET'"\
|
" dockernet: '$DOCKERNET'"\
|
||||||
" mdengine: '$ZEEKVERSION'"\
|
" mdengine: '$ZEEKVERSION'"\
|
||||||
" ids: '$NIDS'"\
|
" ids: '$NIDS'"\
|
||||||
@@ -1719,7 +1735,6 @@ manager_global() {
|
|||||||
"redis_settings:"\
|
"redis_settings:"\
|
||||||
" redis_maxmemory: 812" >> "$global_pillar"
|
" redis_maxmemory: 812" >> "$global_pillar"
|
||||||
|
|
||||||
|
|
||||||
printf '%s\n' '----' >> "$setup_log" 2>&1
|
printf '%s\n' '----' >> "$setup_log" 2>&1
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1781,6 +1796,19 @@ network_setup() {
|
|||||||
} >> "$setup_log" 2>&1
|
} >> "$setup_log" 2>&1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ntp_pillar() {
|
||||||
|
local pillar_file="$temp_install_dir"/pillar/minions/"$MINION_ID".sls
|
||||||
|
|
||||||
|
if [[ ${#ntp_servers[@]} -gt 0 ]]; then
|
||||||
|
printf '%s\n'\
|
||||||
|
"ntp:"\
|
||||||
|
" servers:" >> "$pillar_file"
|
||||||
|
for addr in "${ntp_servers[@]}"; do
|
||||||
|
printf '%s\n' " - '$addr'" >> "$pillar_file"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
parse_install_username() {
|
parse_install_username() {
|
||||||
# parse out the install username so things copy correctly
|
# parse out the install username so things copy correctly
|
||||||
INSTALLUSERNAME=${SUDO_USER:-${USER}}
|
INSTALLUSERNAME=${SUDO_USER:-${USER}}
|
||||||
@@ -1988,11 +2016,6 @@ saltify() {
|
|||||||
|
|
||||||
# Install updates and Salt
|
# Install updates and Salt
|
||||||
if [ $OS = 'centos' ]; then
|
if [ $OS = 'centos' ]; then
|
||||||
set_progress_str 5 'Installing Salt repo'
|
|
||||||
{
|
|
||||||
sudo rpm --import https://repo.saltstack.com/py3/redhat/7/x86_64/archive/3002.5/SALTSTACK-GPG-KEY.pub;
|
|
||||||
cp ./yum_repos/saltstack.repo /etc/yum.repos.d/saltstack.repo;
|
|
||||||
} >> "$setup_log" 2>&1
|
|
||||||
set_progress_str 6 'Installing various dependencies'
|
set_progress_str 6 'Installing various dependencies'
|
||||||
if [[ ! $is_iso ]]; then
|
if [[ ! $is_iso ]]; then
|
||||||
logCmd "yum -y install wget nmap-ncat"
|
logCmd "yum -y install wget nmap-ncat"
|
||||||
@@ -2001,7 +2024,6 @@ saltify() {
|
|||||||
'MANAGER' | 'EVAL' | 'MANAGERSEARCH' | 'FLEET' | 'HELIXSENSOR' | 'STANDALONE'| 'IMPORT')
|
'MANAGER' | 'EVAL' | 'MANAGERSEARCH' | 'FLEET' | 'HELIXSENSOR' | 'STANDALONE'| 'IMPORT')
|
||||||
reserve_group_ids >> "$setup_log" 2>&1
|
reserve_group_ids >> "$setup_log" 2>&1
|
||||||
if [[ ! $is_iso ]]; then
|
if [[ ! $is_iso ]]; then
|
||||||
logCmd "yum -y install epel-release"
|
|
||||||
logCmd "yum -y install sqlite argon2 curl mariadb-devel"
|
logCmd "yum -y install sqlite argon2 curl mariadb-devel"
|
||||||
fi
|
fi
|
||||||
# Download Ubuntu Keys in case manager updates = 1
|
# Download Ubuntu Keys in case manager updates = 1
|
||||||
@@ -2010,7 +2032,6 @@ saltify() {
|
|||||||
logCmd "wget -q --inet4-only -O /opt/so/gpg/SALTSTACK-GPG-KEY.pub https://repo.saltstack.com/py3/ubuntu/18.04/amd64/archive/3002.5/SALTSTACK-GPG-KEY.pub"
|
logCmd "wget -q --inet4-only -O /opt/so/gpg/SALTSTACK-GPG-KEY.pub https://repo.saltstack.com/py3/ubuntu/18.04/amd64/archive/3002.5/SALTSTACK-GPG-KEY.pub"
|
||||||
logCmd "wget -q --inet4-only -O /opt/so/gpg/docker.pub https://download.docker.com/linux/ubuntu/gpg"
|
logCmd "wget -q --inet4-only -O /opt/so/gpg/docker.pub https://download.docker.com/linux/ubuntu/gpg"
|
||||||
logCmd "wget -q --inet4-only -O /opt/so/gpg/GPG-KEY-WAZUH https://packages.wazuh.com/key/GPG-KEY-WAZUH"
|
logCmd "wget -q --inet4-only -O /opt/so/gpg/GPG-KEY-WAZUH https://packages.wazuh.com/key/GPG-KEY-WAZUH"
|
||||||
logCmd "cp ./yum_repos/wazuh.repo /etc/yum.repos.d/wazuh.repo"
|
|
||||||
fi
|
fi
|
||||||
set_progress_str 7 'Installing salt-master'
|
set_progress_str 7 'Installing salt-master'
|
||||||
if [[ ! $is_iso ]]; then
|
if [[ ! $is_iso ]]; then
|
||||||
@@ -2019,29 +2040,14 @@ saltify() {
|
|||||||
systemctl enable salt-master >> "$setup_log" 2>&1
|
systemctl enable salt-master >> "$setup_log" 2>&1
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
if [ "$MANAGERUPDATES" = '1' ]; then
|
|
||||||
{
|
|
||||||
if [[ ! $is_airgap ]]; then
|
|
||||||
# Create the GPG Public Key for the Salt Repo
|
|
||||||
cp ./public_keys/salt.pem /etc/pki/rpm-gpg/saltstack-signing-key;
|
|
||||||
|
|
||||||
# Copy repo files over
|
|
||||||
cp ./yum_repos/saltstack.repo /etc/yum.repos.d/saltstack.repo;
|
|
||||||
else
|
|
||||||
info "This is airgap"
|
|
||||||
fi
|
|
||||||
} >> "$setup_log" 2>&1
|
|
||||||
fi
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
if [[ ! $is_airgap ]]; then
|
if [[ ! $is_airgap ]]; then
|
||||||
cp ./yum_repos/wazuh.repo /etc/yum.repos.d/wazuh.repo >> "$setup_log" 2>&1
|
|
||||||
yum clean expire-cache >> "$setup_log" 2>&1
|
yum clean expire-cache >> "$setup_log" 2>&1
|
||||||
fi
|
fi
|
||||||
set_progress_str 8 'Installing salt-minion & python modules'
|
set_progress_str 8 'Installing salt-minion & python modules'
|
||||||
{
|
{
|
||||||
if [[ ! $is_iso ]]; then
|
if [[ ! $is_iso ]]; then
|
||||||
yum -y install epel-release
|
|
||||||
yum -y install salt-minion-3002.5\
|
yum -y install salt-minion-3002.5\
|
||||||
python3\
|
python3\
|
||||||
python36-docker\
|
python36-docker\
|
||||||
@@ -2264,6 +2270,22 @@ secrets_pillar(){
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
securityonion_repo() {
|
||||||
|
# Remove all the current repos
|
||||||
|
if [[ "$OS" == "centos" ]]; then
|
||||||
|
mkdir -p /root/oldrepos
|
||||||
|
mv /etc/yum.repos.d/* /root/oldrepos/
|
||||||
|
rm -f /etc/yum.repos.d/*
|
||||||
|
if [[ ! $is_manager && "$MANAGERUPDATES" == "1" ]]; then
|
||||||
|
cp -f ./yum_repos/securityonioncache.repo /etc/yum.repos.d/
|
||||||
|
else
|
||||||
|
cp -f ./yum_repos/securityonion.repo /etc/yum.repos.d/
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "This is Ubuntu"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
set_base_heapsizes() {
|
set_base_heapsizes() {
|
||||||
es_heapsize
|
es_heapsize
|
||||||
ls_heapsize
|
ls_heapsize
|
||||||
@@ -2671,6 +2693,7 @@ update_sudoers() {
|
|||||||
|
|
||||||
update_packages() {
|
update_packages() {
|
||||||
if [ "$OS" = 'centos' ]; then
|
if [ "$OS" = 'centos' ]; then
|
||||||
|
yum repolist >> /dev/null
|
||||||
yum -y update >> "$setup_log"
|
yum -y update >> "$setup_log"
|
||||||
else
|
else
|
||||||
retry 50 10 "apt-get -y update" >> "$setup_log" 2>&1 || exit 1
|
retry 50 10 "apt-get -y update" >> "$setup_log" 2>&1 || exit 1
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ source ./so-variables
|
|||||||
# Parse command line arguments
|
# Parse command line arguments
|
||||||
setup_type=$1
|
setup_type=$1
|
||||||
automation=$2
|
automation=$2
|
||||||
|
WHATWOULDYOUSAYYAHDOHERE=setup
|
||||||
|
|
||||||
while [[ $# -gt 0 ]]; do
|
while [[ $# -gt 0 ]]; do
|
||||||
arg="$1"
|
arg="$1"
|
||||||
@@ -298,6 +299,10 @@ if ! [[ -f $install_opt_file ]]; then
|
|||||||
source "$net_init_file"
|
source "$net_init_file"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ $is_minion ]] || [[ $reinit_networking ]] || [[ $is_iso ]] && ! [[ -f $net_init_file ]]; then
|
||||||
|
whiptail_management_interface_setup
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ $reinit_networking ]] || ! [[ -f $net_init_file ]]; then
|
if [[ $reinit_networking ]] || ! [[ -f $net_init_file ]]; then
|
||||||
network_init
|
network_init
|
||||||
fi
|
fi
|
||||||
@@ -315,10 +320,6 @@ if ! [[ -f $install_opt_file ]]; then
|
|||||||
[[ -n "$so_proxy" ]] && set_proxy >> $setup_log 2>&1
|
[[ -n "$so_proxy" ]] && set_proxy >> $setup_log 2>&1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $is_minion ]] || [[ $reinit_networking ]] || [[ $is_iso ]] && ! [[ -f $net_init_file ]]; then
|
|
||||||
whiptail_management_interface_setup
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $is_minion ]]; then
|
if [[ $is_minion ]]; then
|
||||||
add_mngr_ip_to_hosts
|
add_mngr_ip_to_hosts
|
||||||
fi
|
fi
|
||||||
@@ -534,6 +535,8 @@ if [[ $is_sensor && ! $is_eval ]]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
[[ $is_iso ]] && collect_ntp_servers
|
||||||
|
|
||||||
if [[ $is_node && ! $is_eval ]]; then
|
if [[ $is_node && ! $is_eval ]]; then
|
||||||
whiptail_node_advanced
|
whiptail_node_advanced
|
||||||
if [ "$NODESETUP" == 'NODEADVANCED' ]; then
|
if [ "$NODESETUP" == 'NODEADVANCED' ]; then
|
||||||
@@ -581,6 +584,8 @@ set_redirect >> $setup_log 2>&1
|
|||||||
# Show initial progress message
|
# Show initial progress message
|
||||||
set_progress_str 0 'Running initial configuration steps'
|
set_progress_str 0 'Running initial configuration steps'
|
||||||
|
|
||||||
|
[[ ${#ntp_servers[@]} -gt 0 ]] && configure_ntp >> $setup_log 2>&1
|
||||||
|
|
||||||
reserve_ports
|
reserve_ports
|
||||||
|
|
||||||
set_path
|
set_path
|
||||||
@@ -613,6 +618,8 @@ set_redirect >> $setup_log 2>&1
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
host_pillar >> $setup_log 2>&1
|
host_pillar >> $setup_log 2>&1
|
||||||
|
ntp_pillar >> $setup_log 2>&1
|
||||||
|
|
||||||
|
|
||||||
if [[ $is_minion || $is_import ]]; then
|
if [[ $is_minion || $is_import ]]; then
|
||||||
set_updates >> $setup_log 2>&1
|
set_updates >> $setup_log 2>&1
|
||||||
@@ -630,7 +637,12 @@ set_redirect >> $setup_log 2>&1
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
set_progress_str 2 'Updating packages'
|
set_progress_str 2 'Updating packages'
|
||||||
|
# Import the gpg keys
|
||||||
|
gpg_rpm_import >> $setup_log 2>&1
|
||||||
|
if [[ ! $is_airgap ]]; then
|
||||||
|
securityonion_repo >> $setup_log 2>&1
|
||||||
update_packages >> $setup_log 2>&1
|
update_packages >> $setup_log 2>&1
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ $is_sensor || $is_helix || $is_import ]]; then
|
if [[ $is_sensor || $is_helix || $is_import ]]; then
|
||||||
set_progress_str 3 'Generating sensor pillar'
|
set_progress_str 3 'Generating sensor pillar'
|
||||||
|
|||||||
@@ -72,3 +72,6 @@ export install_opt_file
|
|||||||
|
|
||||||
net_init_file=/root/net_init
|
net_init_file=/root/net_init
|
||||||
export net_init_file
|
export net_init_file
|
||||||
|
|
||||||
|
ntp_string="0.pool.ntp.org,1.pool.ntp.org"
|
||||||
|
export ntp_string
|
||||||
|
|||||||
@@ -1105,6 +1105,22 @@ whiptail_node_ls_pipeline_worker() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
whiptail_ntp_ask() {
|
||||||
|
[ -n "$TESTING" ] && return
|
||||||
|
|
||||||
|
whiptail --title "Security Onion Setup" --yesno "Would you like to configure ntp servers?" 7 44
|
||||||
|
}
|
||||||
|
|
||||||
|
whiptail_ntp_servers() {
|
||||||
|
[ -n "$TESTING" ] && return
|
||||||
|
|
||||||
|
ntp_string=$(whiptail --title "Security Onion Setup" \
|
||||||
|
--inputbox "Input the NTP server(s) you would like to use, separated by commas:" 8 75 "$1" 3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
|
local exitstatus=$?
|
||||||
|
whiptail_check_exitstatus $exitstatus
|
||||||
|
}
|
||||||
|
|
||||||
whiptail_oinkcode() {
|
whiptail_oinkcode() {
|
||||||
|
|
||||||
[ -n "$TESTING" ] && return
|
[ -n "$TESTING" ] && return
|
||||||
@@ -1271,11 +1287,7 @@ whiptail_proxy_auth_pass() {
|
|||||||
|
|
||||||
[ -n "$TESTING" ] && return
|
[ -n "$TESTING" ] && return
|
||||||
|
|
||||||
if [[ $arg != 'confirm' ]]; then
|
|
||||||
proxy_pass=$(whiptail --title "Security Onion Setup" --passwordbox "Please input the proxy password:" 8 60 3>&1 1>&2 2>&3)
|
proxy_pass=$(whiptail --title "Security Onion Setup" --passwordbox "Please input the proxy password:" 8 60 3>&1 1>&2 2>&3)
|
||||||
else
|
|
||||||
proxy_pass_confirm=$(whiptail --title "Security Onion Setup" --passwordbox "Please confirm the proxy password:" 8 60 3>&1 1>&2 2>&3)
|
|
||||||
fi
|
|
||||||
|
|
||||||
local exitstatus=$?
|
local exitstatus=$?
|
||||||
whiptail_check_exitstatus $exitstatus
|
whiptail_check_exitstatus $exitstatus
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
[saltstack]
|
|
||||||
name=SaltStack repo for RHEL/CentOS $releasever PY3
|
|
||||||
baseurl=https://repo.saltstack.com/py3/redhat/7/x86_64/archive/3002.5/
|
|
||||||
enabled=1
|
|
||||||
gpgcheck=1
|
|
||||||
gpgkey=https://repo.saltstack.com/py3/redhat/7/x86_64/archive/3002.5/SALTSTACK-GPG-KEY.pub
|
|
||||||
64
setup/yum_repos/securityonion.repo
Normal file
64
setup/yum_repos/securityonion.repo
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
[base]
|
||||||
|
name=CentOS-$releasever - Base
|
||||||
|
baseurl=https://repo.securityonion.net/file/securityonion-repo/base/
|
||||||
|
gpgcheck=1
|
||||||
|
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
|
||||||
|
|
||||||
|
#released updates
|
||||||
|
[updates]
|
||||||
|
name=CentOS-$releasever - Updates
|
||||||
|
baseurl=https://repo.securityonion.net/file/securityonion-repo/updates/
|
||||||
|
gpgcheck=1
|
||||||
|
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
|
||||||
|
|
||||||
|
#additional packages that may be useful
|
||||||
|
[extras]
|
||||||
|
name=CentOS-$releasever - Extras
|
||||||
|
baseurl=https://repo.securityonion.net/file/securityonion-repo/extras/
|
||||||
|
gpgcheck=1
|
||||||
|
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
|
||||||
|
|
||||||
|
#additional packages that extend functionality of existing packages
|
||||||
|
[centosplus]
|
||||||
|
name=CentOS-$releasever - Plus
|
||||||
|
baseurl=https://repo.securityonion.net/file/securityonion-repo/centosplus/
|
||||||
|
gpgcheck=1
|
||||||
|
enabled=0
|
||||||
|
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
|
||||||
|
|
||||||
|
[epel]
|
||||||
|
name=Extra Packages for Enterprise Linux 7 - $basearch
|
||||||
|
baseurl=https://repo.securityonion.net/file/securityonion-repo/epel/
|
||||||
|
enabled=1
|
||||||
|
gpgcheck=1
|
||||||
|
gpgkey=https://repo.securityonion.net/file/securityonion-repo/keys/RPM-GPG-KEY-EPEL-7
|
||||||
|
|
||||||
|
[docker-ce-stable]
|
||||||
|
name=Docker CE Stable - $basearch
|
||||||
|
baseurl=https://repo.securityonion.net/file/securityonion-repo/docker-ce-stable
|
||||||
|
enabled=1
|
||||||
|
gpgcheck=1
|
||||||
|
gpgkey=https://repo.securityonion.net/file/securityonion-repo/keys/docker.pub
|
||||||
|
|
||||||
|
[saltstack]
|
||||||
|
name=SaltStack repo for RHEL/CentOS $releasever PY3
|
||||||
|
baseurl=https://repo.securityonion.net/file/securityonion-repo/saltstack/
|
||||||
|
enabled=1
|
||||||
|
gpgcheck=1
|
||||||
|
gpgkey=https://repo.securityonion.net/file/securityonion-repo/keys/SALTSTACK-GPG-KEY.pub
|
||||||
|
|
||||||
|
[wazuh_repo]
|
||||||
|
gpgcheck=1
|
||||||
|
gpgkey=https://repo.securityonion.net/file/securityonion-repo/keys/GPG-KEY-WAZUH
|
||||||
|
enabled=1
|
||||||
|
name=Wazuh repository
|
||||||
|
baseurl=https://repo.securityonion.net/file/securityonion-repo/wazuh_repo/
|
||||||
|
protect=1
|
||||||
|
|
||||||
|
[wazuh4_repo]
|
||||||
|
gpgcheck=1
|
||||||
|
gpgkey=https://repo.securityonion.net/file/securityonion-repo/keys/GPG-KEY-WAZUH
|
||||||
|
enabled=1
|
||||||
|
name=Wazuh repository
|
||||||
|
baseurl=https://repo.securityonion.net/file/securityonion-repo/wazuh4_repo/
|
||||||
|
protect=1
|
||||||
64
setup/yum_repos/securityonioncache.repo
Normal file
64
setup/yum_repos/securityonioncache.repo
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
[base]
|
||||||
|
name=CentOS-$releasever - Base
|
||||||
|
baseurl=http://repocache.securityonion.net/file/securityonion-repo/base/
|
||||||
|
gpgcheck=1
|
||||||
|
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
|
||||||
|
|
||||||
|
#released updates
|
||||||
|
[updates]
|
||||||
|
name=CentOS-$releasever - Updates
|
||||||
|
baseurl=http://repocache.securityonion.net/file/securityonion-repo/updates/
|
||||||
|
gpgcheck=1
|
||||||
|
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
|
||||||
|
|
||||||
|
#additional packages that may be useful
|
||||||
|
[extras]
|
||||||
|
name=CentOS-$releasever - Extras
|
||||||
|
baseurl=http://repocache.securityonion.net/file/securityonion-repo/extras/
|
||||||
|
gpgcheck=1
|
||||||
|
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
|
||||||
|
|
||||||
|
#additional packages that extend functionality of existing packages
|
||||||
|
[centosplus]
|
||||||
|
name=CentOS-$releasever - Plus
|
||||||
|
baseurl=http://repocache.securityonion.net/file/securityonion-repo/centosplus/
|
||||||
|
gpgcheck=1
|
||||||
|
enabled=0
|
||||||
|
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
|
||||||
|
|
||||||
|
[epel]
|
||||||
|
name=Extra Packages for Enterprise Linux 7 - $basearch
|
||||||
|
baseurl=http://repocache.securityonion.net/file/securityonion-repo/epel/
|
||||||
|
enabled=1
|
||||||
|
gpgcheck=1
|
||||||
|
gpgkey=https://repo.securityonion.net/file/securityonion-repo/keys/RPM-GPG-KEY-EPEL-7
|
||||||
|
|
||||||
|
[docker-ce-stable]
|
||||||
|
name=Docker CE Stable - $basearch
|
||||||
|
baseurl=http://repocache.securityonion.net/file/securityonion-repo/docker-ce-stable
|
||||||
|
enabled=1
|
||||||
|
gpgcheck=1
|
||||||
|
gpgkey=https://repo.securityonion.net/file/securityonion-repo/keys/docker.pub
|
||||||
|
|
||||||
|
[saltstack]
|
||||||
|
name=SaltStack repo for RHEL/CentOS $releasever PY3
|
||||||
|
baseurl=http://repocache.securityonion.net/file/securityonion-repo/saltstack/
|
||||||
|
enabled=1
|
||||||
|
gpgcheck=1
|
||||||
|
gpgkey=https://repo.securityonion.net/file/securityonion-repo/keys/SALTSTACK-GPG-KEY.pub
|
||||||
|
|
||||||
|
[wazuh_repo]
|
||||||
|
gpgcheck=1
|
||||||
|
gpgkey=https://repo.securityonion.net/file/securityonion-repo/keys/GPG-KEY-WAZUH
|
||||||
|
enabled=1
|
||||||
|
name=Wazuh repository
|
||||||
|
baseurl=http://repocache.securityonion.net/file/securityonion-repo/wazuh_repo/
|
||||||
|
protect=1
|
||||||
|
|
||||||
|
[wazuh4_repo]
|
||||||
|
gpgcheck=1
|
||||||
|
gpgkey=https://repo.securityonion.net/file/securityonion-repo/keys/GPG-KEY-WAZUH
|
||||||
|
enabled=1
|
||||||
|
name=Wazuh repository
|
||||||
|
baseurl=https://repo.securityonion.net/file/securityonion-repo/wazuh4_repo/
|
||||||
|
protect=1
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
[wazuh_repo]
|
|
||||||
gpgcheck=1
|
|
||||||
gpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH
|
|
||||||
enabled=1
|
|
||||||
name=Wazuh repository
|
|
||||||
baseurl=https://packages.wazuh.com/3.x/yum/
|
|
||||||
protect=1
|
|
||||||
Reference in New Issue
Block a user