mirror of
https://github.com/Security-Onion-Solutions/securityonion.git
synced 2026-05-03 09:58:17 +02:00
Merge pull request #3466 from Security-Onion-Solutions/soup2340
Soup for 2.3.40
This commit is contained in:
@@ -86,6 +86,19 @@ add_interface_bond0() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
check_airgap() {
|
||||||
|
# See if this is an airgap install
|
||||||
|
AIRGAP=$(cat /opt/so/saltstack/local/pillar/global.sls | grep airgap: | awk '{print $2}')
|
||||||
|
if [[ "$AIRGAP" == "True" ]]; then
|
||||||
|
is_airgap=0
|
||||||
|
UPDATE_DIR=/tmp/soagupdate/SecurityOnion
|
||||||
|
AGDOCKER=/tmp/soagupdate/docker
|
||||||
|
AGREPO=/tmp/soagupdate/Packages
|
||||||
|
else
|
||||||
|
is_airgap=1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
check_container() {
|
check_container() {
|
||||||
docker ps | grep "$1:" > /dev/null 2>&1
|
docker ps | grep "$1:" > /dev/null 2>&1
|
||||||
return $?
|
return $?
|
||||||
@@ -97,6 +110,46 @@ check_password() {
|
|||||||
return $?
|
return $?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
check_elastic_license() {
|
||||||
|
|
||||||
|
[ -n "$TESTING" ] && return
|
||||||
|
|
||||||
|
# See if the user has already accepted the license
|
||||||
|
if [ ! -f /opt/so/state/yeselastic.txt ]; then
|
||||||
|
elastic_license
|
||||||
|
else
|
||||||
|
echo "Elastic License has already been accepted"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
elastic_license() {
|
||||||
|
|
||||||
|
read -r -d '' message <<- EOM
|
||||||
|
\n
|
||||||
|
Starting in Elastic Stack version 7.11, the Elastic Stack binaries are only available under the Elastic License:
|
||||||
|
https://blog.securityonion.net/2021/02/elastic-license-changes-and-security.html
|
||||||
|
|
||||||
|
Please review the Elastic License:
|
||||||
|
https://www.elastic.co/licensing/elastic-license
|
||||||
|
|
||||||
|
Do you agree to the terms of the Elastic License?
|
||||||
|
|
||||||
|
If so, type AGREE to accept the Elastic License and continue. Otherwise, press Enter to exit this program without making any changes.
|
||||||
|
EOM
|
||||||
|
|
||||||
|
AGREED=$(whiptail --title "Security Onion Setup" --inputbox \
|
||||||
|
"$message" 20 75 3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
|
if [ "$AGREED" = 'AGREE' ]; then
|
||||||
|
mkdir -p /opt/so/state
|
||||||
|
touch /opt/so/state/yeselastic.txt
|
||||||
|
else
|
||||||
|
echo "Starting in 2.3.40 you must accept the Elastic license if you want to run Security Onion."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
fail() {
|
fail() {
|
||||||
msg=$1
|
msg=$1
|
||||||
echo "ERROR: $msg"
|
echo "ERROR: $msg"
|
||||||
@@ -250,6 +303,12 @@ set_minionid() {
|
|||||||
MINIONID=$(lookup_grain id)
|
MINIONID=$(lookup_grain id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
set_palette() {
|
||||||
|
if [ "$OS" == ubuntu ]; then
|
||||||
|
update-alternatives --set newt-palette /etc/newt/palette.original
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
set_version() {
|
set_version() {
|
||||||
CURRENTVERSION=0.0.0
|
CURRENTVERSION=0.0.0
|
||||||
if [ -f /etc/soversion ]; then
|
if [ -f /etc/soversion ]; then
|
||||||
|
|||||||
+48
-42
@@ -19,13 +19,12 @@
|
|||||||
|
|
||||||
UPDATE_DIR=/tmp/sogh/securityonion
|
UPDATE_DIR=/tmp/sogh/securityonion
|
||||||
INSTALLEDVERSION=$(cat /etc/soversion)
|
INSTALLEDVERSION=$(cat /etc/soversion)
|
||||||
|
POSTVERSION=$INSTALLEDVERSION
|
||||||
INSTALLEDSALTVERSION=$(salt --versions-report | grep Salt: | awk {'print $2'})
|
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
|
||||||
|
|
||||||
exec 3>&1 1>${SOUP_LOG} 2>&1
|
|
||||||
|
|
||||||
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/
|
||||||
cp $UPDATE_DIR/salt/common/tools/sbin/so-image-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/
|
||||||
@@ -101,19 +100,6 @@ update_registry() {
|
|||||||
salt-call state.apply registry queue=True
|
salt-call state.apply registry queue=True
|
||||||
}
|
}
|
||||||
|
|
||||||
check_airgap() {
|
|
||||||
# See if this is an airgap install
|
|
||||||
AIRGAP=$(cat /opt/so/saltstack/local/pillar/global.sls | grep airgap: | awk '{print $2}')
|
|
||||||
if [[ "$AIRGAP" == "True" ]]; then
|
|
||||||
is_airgap=0
|
|
||||||
UPDATE_DIR=/tmp/soagupdate/SecurityOnion
|
|
||||||
AGDOCKER=/tmp/soagupdate/docker
|
|
||||||
AGREPO=/tmp/soagupdate/Packages
|
|
||||||
else
|
|
||||||
is_airgap=1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
check_sudoers() {
|
check_sudoers() {
|
||||||
if grep -q "so-setup" /etc/sudoers; then
|
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\"."
|
echo "There is an entry for so-setup in the sudoers file, this can be safely deleted using \"visudo\"."
|
||||||
@@ -243,22 +229,10 @@ masterunlock() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
playbook() {
|
preupgrade_changes() {
|
||||||
echo "Applying playbook settings"
|
|
||||||
if [[ "$INSTALLEDVERSION" =~ rc.1 ]]; then
|
|
||||||
salt-call state.apply playbook.OLD_db_init
|
|
||||||
rm -f /opt/so/rules/elastalert/playbook/*.yaml
|
|
||||||
so-playbook-ruleupdate >> /root/soup_playbook_rule_update.log 2>&1 &
|
|
||||||
fi
|
|
||||||
if [[ "$INSTALLEDVERSION" != 2.3.30 ]]; then
|
|
||||||
so-playbook-sigma-refresh >> /root/soup_playbook_sigma_refresh.log 2>&1 &
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
pillar_changes() {
|
|
||||||
# This function is to add any new pillar items if needed.
|
# This function is to add any new pillar items if needed.
|
||||||
echo "Checking to see if pillar changes are needed."
|
echo "Checking to see if changes are needed."
|
||||||
|
|
||||||
[[ "$INSTALLEDVERSION" =~ rc.1 ]] && rc1_to_rc2
|
[[ "$INSTALLEDVERSION" =~ rc.1 ]] && rc1_to_rc2
|
||||||
[[ "$INSTALLEDVERSION" =~ rc.2 ]] && rc2_to_rc3
|
[[ "$INSTALLEDVERSION" =~ rc.2 ]] && rc2_to_rc3
|
||||||
[[ "$INSTALLEDVERSION" =~ rc.3 ]] && rc3_to_2.3.0
|
[[ "$INSTALLEDVERSION" =~ rc.3 ]] && rc3_to_2.3.0
|
||||||
@@ -266,6 +240,26 @@ pillar_changes() {
|
|||||||
[[ "$INSTALLEDVERSION" == 2.3.20 || "$INSTALLEDVERSION" == 2.3.21 ]] && up_2.3.2X_to_2.3.30
|
[[ "$INSTALLEDVERSION" == 2.3.20 || "$INSTALLEDVERSION" == 2.3.21 ]] && up_2.3.2X_to_2.3.30
|
||||||
}
|
}
|
||||||
|
|
||||||
|
postupgrade_changes() {
|
||||||
|
# This function is to add any new pillar items if needed.
|
||||||
|
echo "Running post upgrade processes."
|
||||||
|
|
||||||
|
[[ "$POSTVERSION" =~ rc.1 ]] && post_rc1_to_rc2
|
||||||
|
[[ "$POSTVERSION" == 2.3.20 || "$POSTVERSION" == 2.3.21 ]] && post_2.3.2X_to_2.3.30
|
||||||
|
}
|
||||||
|
|
||||||
|
post_rc1_to_2.3.21() {
|
||||||
|
salt-call state.apply playbook.OLD_db_init
|
||||||
|
rm -f /opt/so/rules/elastalert/playbook/*.yaml
|
||||||
|
so-playbook-ruleupdate >> /root/soup_playbook_rule_update.log 2>&1 &
|
||||||
|
POSTVERSION=2.3.21
|
||||||
|
}
|
||||||
|
|
||||||
|
post_2.3.2X_to_2.3.30() {
|
||||||
|
so-playbook-sigma-refresh >> /root/soup_playbook_sigma_refresh.log 2>&1 &
|
||||||
|
POSTVERSION=2.3.30
|
||||||
|
}
|
||||||
|
|
||||||
rc1_to_rc2() {
|
rc1_to_rc2() {
|
||||||
|
|
||||||
# Move the static file to global.sls
|
# Move the static file to global.sls
|
||||||
@@ -410,16 +404,26 @@ up_2.3.2X_to_2.3.30() {
|
|||||||
check_log_size_limit
|
check_log_size_limit
|
||||||
}
|
}
|
||||||
|
|
||||||
space_check() {
|
verify_upgradespace() {
|
||||||
# Check to see if there is enough space
|
|
||||||
CURRENTSPACE=$(df -BG / | grep -v Avail | awk '{print $4}' | sed 's/.$//')
|
CURRENTSPACE=$(df -BG / | grep -v Avail | awk '{print $4}' | sed 's/.$//')
|
||||||
if [ "$CURRENTSPACE" -lt "10" ]; then
|
if [ "$CURRENTSPACE" -lt "10" ]; then
|
||||||
echo "You are low on disk space. Upgrade will try and clean up space.";
|
echo "You are low on disk space."
|
||||||
clean_dockers
|
return 1
|
||||||
else
|
else
|
||||||
echo "Plenty of space for upgrading"
|
return 0
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
upgrade_space() {
|
||||||
|
if ! verify_upgradespace; then
|
||||||
|
clean_dockers
|
||||||
|
if ! verify_upgradespace; then
|
||||||
|
echo "There is not enough space to perform the upgrade. Please free up space and try again"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "You have enough space for upgrade. Proceeding with soup."
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
thehive_maint() {
|
thehive_maint() {
|
||||||
@@ -548,6 +552,7 @@ verify_latest_update_script() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
main () {
|
main () {
|
||||||
|
echo "### Preparing soup at `date` ###"
|
||||||
while getopts ":b" opt; do
|
while getopts ":b" opt; do
|
||||||
case "$opt" in
|
case "$opt" in
|
||||||
b ) # process option b
|
b ) # process option b
|
||||||
@@ -573,6 +578,8 @@ check_airgap
|
|||||||
echo "Found that Security Onion $INSTALLEDVERSION is currently installed."
|
echo "Found that Security Onion $INSTALLEDVERSION is currently installed."
|
||||||
echo ""
|
echo ""
|
||||||
set_os
|
set_os
|
||||||
|
set_palette
|
||||||
|
check_elastic_license
|
||||||
echo ""
|
echo ""
|
||||||
if [ $is_airgap -eq 0 ]; then
|
if [ $is_airgap -eq 0 ]; then
|
||||||
# Let's mount the ISO since this is airgap
|
# Let's mount the ISO since this is airgap
|
||||||
@@ -599,7 +606,7 @@ fi
|
|||||||
|
|
||||||
echo "Let's see if we need to update Security Onion."
|
echo "Let's see if we need to update Security Onion."
|
||||||
upgrade_check
|
upgrade_check
|
||||||
space_check
|
upgrade_space
|
||||||
|
|
||||||
echo "Checking for Salt Master and Minion updates."
|
echo "Checking for Salt Master and Minion updates."
|
||||||
upgrade_check_salt
|
upgrade_check_salt
|
||||||
@@ -649,8 +656,7 @@ else
|
|||||||
echo ""
|
echo ""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Making pillar changes."
|
preupgrade_changes
|
||||||
pillar_changes
|
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
if [ $is_airgap -eq 0 ]; then
|
if [ $is_airgap -eq 0 ]; then
|
||||||
@@ -704,7 +710,7 @@ echo "Starting Salt Master service."
|
|||||||
systemctl start salt-master
|
systemctl start salt-master
|
||||||
echo "Running a highstate. This could take several minutes."
|
echo "Running a highstate. This could take several minutes."
|
||||||
salt-call state.highstate -l info queue=True
|
salt-call state.highstate -l info queue=True
|
||||||
playbook
|
postupgrade_changes
|
||||||
unmount_update
|
unmount_update
|
||||||
thehive_maint
|
thehive_maint
|
||||||
|
|
||||||
@@ -751,7 +757,7 @@ For more information, please see https://docs.securityonion.net/en/2.3/soup.html
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
echo "### soup has been served at `date` ###"
|
||||||
}
|
}
|
||||||
|
|
||||||
main "$@" | tee /dev/fd/3
|
main "$@" | tee -a $SOUP_LOG
|
||||||
|
|||||||
+5
-3
@@ -156,10 +156,8 @@ export PATH=$PATH:$local_sbin
|
|||||||
|
|
||||||
installer_prereq_packages && detect_cloud
|
installer_prereq_packages && detect_cloud
|
||||||
set_network_dev_status_list
|
set_network_dev_status_list
|
||||||
|
set_palette >> $setup_log 2>&1
|
||||||
|
|
||||||
if [ "$OS" == ubuntu ]; then
|
|
||||||
update-alternatives --set newt-palette /etc/newt/palette.original >> $setup_log 2>&1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Kernel messages can overwrite whiptail screen #812
|
# Kernel messages can overwrite whiptail screen #812
|
||||||
# https://github.com/Security-Onion-Solutions/securityonion/issues/812
|
# https://github.com/Security-Onion-Solutions/securityonion/issues/812
|
||||||
@@ -257,6 +255,10 @@ if [[ ( $is_manager || $is_import ) && $is_iso ]]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ $is_manager || $is_import ]]; then
|
||||||
|
check_elastic_license
|
||||||
|
fi
|
||||||
|
|
||||||
if ! [[ -f $install_opt_file ]]; then
|
if ! [[ -f $install_opt_file ]]; then
|
||||||
if [[ $is_manager && $is_sensor ]]; then
|
if [[ $is_manager && $is_sensor ]]; then
|
||||||
check_requirements "standalone"
|
check_requirements "standalone"
|
||||||
|
|||||||
Reference in New Issue
Block a user