2023-06-27 17:55:46 +00:00
|
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
|
|
myPACKAGES="ansible wget"
|
|
|
|
|
myINSTALLER=$(cat << "EOF"
|
|
|
|
|
_____ ____ _ ___ _ _ _
|
|
|
|
|
|_ _| | _ \ ___ | |_ |_ _|_ __ ___| |_ __ _| | | ___ _ __
|
|
|
|
|
| |_____| |_) / _ \| __| | || '_ \/ __| __/ _` | | |/ _ \ '__|
|
|
|
|
|
| |_____| __/ (_) | |_ | || | | \__ \ || (_| | | | __/ |
|
|
|
|
|
|_| |_| \___/ \__| |___|_| |_|___/\__\__,_|_|_|\___|_|
|
|
|
|
|
EOF
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# Check if running with root privileges
|
|
|
|
|
if [ $EUID -eq 0 ];
|
|
|
|
|
then
|
|
|
|
|
echo "This script should not be run as root. Please run it as a regular user."
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Check if running on a supported distribution
|
2023-06-30 09:19:49 +00:00
|
|
|
|
mySUPPORTED_DISTRIBUTIONS=("Fedora Linux" "Debian GNU/Linux" "openSUSE Tumbleweed" "Ubuntu")
|
2023-06-27 17:55:46 +00:00
|
|
|
|
myCURRENT_DISTRIBUTION=$(awk -F= '/^NAME/{print $2}' /etc/os-release | tr -d '"')
|
|
|
|
|
|
|
|
|
|
if [[ ! " ${mySUPPORTED_DISTRIBUTIONS[@]} " =~ " ${myCURRENT_DISTRIBUTION} " ]];
|
|
|
|
|
then
|
|
|
|
|
echo "### Only the following distributions are supported: Fedora, Debian, openSUSE Tumbleweed and Ubuntu."
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Begin of Installer
|
|
|
|
|
echo "$myINSTALLER"
|
|
|
|
|
echo
|
|
|
|
|
echo
|
|
|
|
|
echo "### This script will now install T-Pot and all of its dependencies."
|
|
|
|
|
while [ "$myQST" != "y" ] && [ "$myQST" != "n" ];
|
|
|
|
|
do
|
|
|
|
|
read -p "### Install? (y/n) " myQST
|
|
|
|
|
done
|
|
|
|
|
if [ "$myQST" = "n" ];
|
|
|
|
|
then
|
|
|
|
|
echo
|
|
|
|
|
echo "### Aborting!"
|
|
|
|
|
echo
|
|
|
|
|
exit 0
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Install packages based on the distribution
|
|
|
|
|
case $myCURRENT_DISTRIBUTION in
|
2023-06-30 09:22:50 +00:00
|
|
|
|
"Fedora Linux")
|
2023-06-27 17:55:46 +00:00
|
|
|
|
sudo dnf update -y
|
|
|
|
|
sudo dnf install -y ${myPACKAGES}
|
|
|
|
|
;;
|
2023-06-30 09:22:50 +00:00
|
|
|
|
"Debian GNU/Linux"|"Ubuntu")
|
2023-06-27 17:55:46 +00:00
|
|
|
|
if ! command -v sudo >/dev/null;
|
|
|
|
|
then
|
2023-06-30 11:15:30 +00:00
|
|
|
|
echo "### ‘sudo‘ is not installed. To continue you need to provide the ‘root‘ password ... "
|
|
|
|
|
echo "### ... or press CTRL-C to manually install ‘sudo‘ and add your user to the sudoers."
|
|
|
|
|
su -c "apt -y update && apt -y install sudo ${myPACKAGES}"
|
2023-06-27 17:55:46 +00:00
|
|
|
|
su -c "/usr/sbin/usermod -aG sudo $(whoami)"
|
2023-06-30 11:15:30 +00:00
|
|
|
|
# Refresh groups, so sudo is directly usable
|
|
|
|
|
newgrp sudo
|
2023-06-27 17:55:46 +00:00
|
|
|
|
else
|
|
|
|
|
sudo apt update
|
|
|
|
|
sudo apt install -y ${myPACKAGES}
|
|
|
|
|
fi
|
|
|
|
|
;;
|
|
|
|
|
"openSUSE Tumbleweed")
|
|
|
|
|
sudo zypper refresh
|
|
|
|
|
sudo zypper install -y ${myPACKAGES}
|
2023-06-29 16:43:08 +00:00
|
|
|
|
echo "export ANSIBLE_PYTHON_INTERPRETER=/bin/python3" | sudo tee /etc/profile.d/ansible.sh >/dev/null
|
2023-06-27 17:55:46 +00:00
|
|
|
|
source /etc/profile.d/ansible.sh
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
echo
|
|
|
|
|
|
2023-06-30 11:15:30 +00:00
|
|
|
|
# Check if sudo access is available
|
2023-06-27 17:55:46 +00:00
|
|
|
|
sudo -n true > /dev/null 2>&1
|
|
|
|
|
if [ $? -eq 1 ];
|
|
|
|
|
then
|
|
|
|
|
myANSIBLE_BECOME_OPTION="--ask-become-pass"
|
|
|
|
|
echo "### ‘sudo‘ is setup with password, setting ansible become option to ${myANSIBLE_BECOME_OPTION}."
|
|
|
|
|
echo
|
2023-06-30 11:15:30 +00:00
|
|
|
|
else
|
|
|
|
|
myANSIBLE_BECOME_OPTION="--become"
|
|
|
|
|
echo "### ‘sudo‘ is usable without password, setting ansible become option to ${myANSIBLE_BECOME_OPTION}."
|
|
|
|
|
echo
|
2023-06-27 17:55:46 +00:00
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Download tpot.yml if not found locally
|
|
|
|
|
if [ ! -f installer/install/tpot.yml ];
|
|
|
|
|
then
|
2023-06-27 17:59:19 +00:00
|
|
|
|
echo "### Now downloading T-Pot Ansible Installation Playbook ... "
|
2023-06-27 17:55:46 +00:00
|
|
|
|
wget -qO tpot.yml https://github.com/telekom-security/tpotce/raw/dev/installer/install/tpot.yml
|
|
|
|
|
myANSIBLE_TPOT_PLAYBOOK="tpot.yml"
|
|
|
|
|
echo
|
|
|
|
|
else
|
|
|
|
|
echo "### Using local T-Pot Ansible Installation Playbook ... "
|
|
|
|
|
myANSIBLE_TPOT_PLAYBOOK="installer/install/tpot.yml"
|
|
|
|
|
fi
|
|
|
|
|
|
2023-06-27 17:59:19 +00:00
|
|
|
|
# Run Ansible Playbook
|
|
|
|
|
echo "### Now running T-Pot Ansible Installation Playbook ..."
|
2023-06-27 17:55:46 +00:00
|
|
|
|
echo "### Ansible will ask for the ‘BECOME password‘ which is typically the password you ’sudo’ with."
|
|
|
|
|
echo
|
|
|
|
|
ANSIBLE_LOG_PATH=$PWD/install_tpot.log ansible-playbook ${myANSIBLE_TPOT_PLAYBOOK} -i 127.0.0.1, -c local ${myANSIBLE_BECOME_OPTION}
|
|
|
|
|
|
2023-06-29 16:43:08 +00:00
|
|
|
|
# Pull docker images
|
|
|
|
|
echo "### Now pulling images ..."
|
|
|
|
|
docker compose -f /home/$(whoami)/tpotce/docker-compose.yml pull
|
|
|
|
|
echo
|
|
|
|
|
|
2023-06-27 17:55:46 +00:00
|
|
|
|
# Done and show running services
|
|
|
|
|
sudo grc netstat -tulpen
|
|
|
|
|
echo "Please review for possible honeypot port conflicts."
|
|
|
|
|
echo "While SSH is taken care of, other services such as"
|
|
|
|
|
echo "SMTP, HTTP, etc. might prevent T-Pot from starting."
|
|
|
|
|
|
|
|
|
|
echo "Done. Please reboot and re-connect via SSH on tcp/64295."
|
|
|
|
|
echo
|