diff --git a/salt/common/tools/sbin/so-common b/salt/common/tools/sbin/so-common index e59345886..635910638 100755 --- a/salt/common/tools/sbin/so-common +++ b/salt/common/tools/sbin/so-common @@ -34,4 +34,9 @@ header() { lookup_pillar() { key=$1 cat /opt/so/saltstack/local/pillar/global.sls | grep $key | awk '{print $2}' +} + +lookup_pillar_secret() { + key=$1 + cat /opt/so/saltstack/local/pillar/secrets.sls | grep $key | awk '{print $2}' } \ No newline at end of file diff --git a/salt/common/tools/sbin/so-cortex-user-add b/salt/common/tools/sbin/so-cortex-user-add new file mode 100644 index 000000000..1acfdfa45 --- /dev/null +++ b/salt/common/tools/sbin/so-cortex-user-add @@ -0,0 +1,53 @@ +#!/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 . + +. /usr/sbin/so-common + +usage() { + echo "Usage: $0 " + echo "" + echo "Adds a new user to Cortex. The new password will be read from STDIN." + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +USER=$1 + +CORTEX_KEY=$(lookup_pillar cortexkey) +CORTEX_IP=$(lookup_pillar managerip) +CORTEX_ORG_NAME=$(lookup_pillar cortexorgname) +CORTEX_USER=$USER + +# Read password for new user from stdin +test -t 0 +if [[ $? == 0 ]]; then + echo "Enter new password:" +fi +read -s 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_PASSWORD\" }") +if [[ "$resp" =~ \"status\":\"Ok\" ]]; then + echo "Successfully added user to Cortex." +else + echo "Failed to add user to Cortex. See API response below." + exit 2 +fi + \ No newline at end of file diff --git a/salt/common/tools/sbin/so-fleet-user-add b/salt/common/tools/sbin/so-fleet-user-add new file mode 100644 index 000000000..bb6d756cd --- /dev/null +++ b/salt/common/tools/sbin/so-fleet-user-add @@ -0,0 +1,58 @@ +#!/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 . + +. /usr/sbin/so-common + +usage() { + echo "Usage: $0 " + echo "" + echo "Adds a new user to Fleet. The new password will be read from STDIN." + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +USER=$1 + +MYSQL_PASS=$(lookup_pillar_secret mysql) +FLEET_IP=$(lookup_pillar fleet_ip) +FLEET_USER=$USER + +# Read password for new user from stdin +test -t 0 +if [[ $? == 0 ]]; then + echo "Enter new password:" +fi +read -s FLEET_PASS + +FLEET_HASH=$(docker exec so-soctopus python -c "import bcrypt; print(bcrypt.hashpw('$FLEET_PASS'.encode('utf-8'), bcrypt.gensalt()).decode('utf-8'));" 2>&1) +if [[ $? -ne 0 ]]; then + echo "Failed to generate Fleet password hash." + exit 2 +fi + +MYSQL_OUTPUT=$(docker exec so-mysql mysql -u root --password=$MYSQL_PASS fleet -e \ + "INSERT INTO users (password,salt,username,email,admin,enabled) VALUES ('$FLEET_HASH','','$FLEET_USER','$FLEET_USER',1,1)" 2>&1) + +if [[ $? -eq 0 ]]; then + echo "Successfully added user to Fleet." +else + echo "Failed to add user to Fleet." + exit 2 +fi \ No newline at end of file diff --git a/salt/common/tools/sbin/so-thehive-user-add b/salt/common/tools/sbin/so-thehive-user-add new file mode 100644 index 000000000..91f54ee8e --- /dev/null +++ b/salt/common/tools/sbin/so-thehive-user-add @@ -0,0 +1,52 @@ +#!/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 . + +. /usr/sbin/so-common + +usage() { + echo "Usage: $0 " + echo "" + echo "Adds a new user to TheHive. The new password will be read from STDIN." + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +USER=$1 + +THEHIVE_KEY=$(lookup_pillar thehivekey) +THEHIVE_IP=$(lookup_pillar managerip) +THEHIVE_USER=$USER + +# Read password for new user from stdin +test -t 0 +if [[ $? == 0 ]]; then + echo "Enter new password:" +fi +read -s PASS + +# 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_PASSWORD\"}") +if [[ "$resp" =~ \"status\":\"Ok\" ]]; then + echo "Successfully added user to TheHive." +else + echo "Failed to add user to TheHive. See API response below." + echo $resp + exit 2 +fi