2017-09-26 15:15:17 +00:00
#!/bin/bash
# T-Pot post install script
# Set TERM, DIALOGRC
export TERM = linux
export DIALOGRC = /etc/dialogrc
# Let's load dialog color theme
cp /root/installer/dialogrc /etc/
# Some global vars
myPROXYFILEPATH = "/root/installer/proxy"
myNTPCONFPATH = "/root/installer/ntp"
myPFXPATH = "/root/installer/keys/8021x.pfx"
myPFXPWPATH = "/root/installer/keys/8021x.pw"
myPFXHOSTIDPATH = "/root/installer/keys/8021x.id"
myTPOTCOMPOSE = "/opt/tpot/etc/tpot.yml"
myBACKTITLE = "T-Pot-Installer"
mySITES = "https://index.docker.io https://github.com https://pypi.python.org https://ubuntu.com"
myPROGRESSBOXCONF = " --backtitle " $myBACKTITLE " --progressbox 24 80"
fuRANDOMWORD ( ) {
local myWORDFILE = " $1 "
local myLINES = $( cat $myWORDFILE | wc -l)
local myRANDOM = $(( RANDOM % $myLINES ))
local myNUM = $(( myRANDOM * myRANDOM % $myLINES + 1 ))
echo -n $( sed -n " $myNUM p " $myWORDFILE | tr -d \' | tr A-Z a-z)
}
# Let's wait a few seconds to avoid interference with service messages
sleep 3
tput civis
dialog --no-ok --no-cancel --backtitle " $myBACKTITLE " --title "[ Wait to avoid interference with service messages ]" --pause "" 6 80 7
# Let's setup the proxy for env
if [ -f $myPROXYFILEPATH ] ;
then
dialog --title "[ Setting up the proxy ]" $myPROGRESSBOXCONF <<EOF
EOF
myPROXY = $( cat $myPROXYFILEPATH )
tee -a /etc/environment 2>& 1>/dev/null <<EOF
export http_proxy = $myPROXY
export https_proxy = $myPROXY
export HTTP_PROXY = $myPROXY
export HTTPS_PROXY = $myPROXY
export no_proxy = localhost,127.0.0.1,.sock
EOF
source /etc/environment
# Let's setup the proxy for apt
tee /etc/apt/apt.conf 2>& 1>/dev/null <<EOF
Acquire::http::Proxy " $myPROXY " ;
Acquire::https::Proxy " $myPROXY " ;
EOF
# Let's add proxy settings to docker defaults
myPROXY = $( cat $myPROXYFILEPATH )
tee -a /etc/default/docker 2>& 1>/dev/null <<EOF
http_proxy = $myPROXY
https_proxy = $myPROXY
HTTP_PROXY = $myPROXY
HTTPS_PROXY = $myPROXY
no_proxy = localhost,127.0.0.1,.sock
EOF
# Let's restart docker for proxy changes to take effect
systemctl stop docker 2>& 1 | dialog --title "[ Stop docker service ]" $myPROGRESSBOXCONF
systemctl start docker 2>& 1 | dialog --title "[ Start docker service ]" $myPROGRESSBOXCONF
fi
# Let's test the internet connection
mySITESCOUNT = $( echo $mySITES | wc -w)
j = 0
for i in $mySITES ;
do
dialog --title "[ Testing the internet connection ]" --backtitle " $myBACKTITLE " \
--gauge " \n Now checking: $i \n " 8 80 $( expr 100 \* $j / $mySITESCOUNT ) <<EOF
EOF
curl --connect-timeout 5 -IsS $i 2>& 1>/dev/null
if [ $? -ne 0 ] ;
then
dialog --backtitle " $myBACKTITLE " --title "[ Continue? ]" --yesno "\nInternet connection test failed. This might indicate some problems with your connection. You can continue, but the installation might fail." 10 50
if [ $? = 1 ] ;
then
dialog --backtitle " $myBACKTITLE " --title "[ Abort ]" --msgbox "\nInstallation aborted. Exiting the installer." 7 50
exit
else
break;
fi ;
fi ;
let j += 1
dialog --title "[ Testing the internet connection ]" --backtitle " $myBACKTITLE " \
--gauge " \n Now checking: $i \n " 8 80 $( expr 100 \* $j / $mySITESCOUNT ) <<EOF
EOF
done ;
# Let's ask user for install flavor
# Install types are TPOT, HP, INDUSTRIAL, ALL
tput cnorm
2018-06-11 14:43:36 +00:00
myFLAVOR = $( dialog --no-cancel --backtitle " $myBACKTITLE " --title "[ Choose Your T-Pot NG Edition ]" --menu \
"\nRequired: 6GB RAM, 128GB SSD\nRecommended: 8GB RAM, 256GB SSD" 15 70 7 \
"STANDARD" "Honeypots, ELK, NSM & Tools" \
"SENSOR" "Just Honeypots, EWS Poster & NSM" \
"INDUSTRIAL" "Conpot, RDPY, Vnclowpot, ELK, NSM & Tools" \
"COLLECTOR" "Heralding, ELK, NSM & Tools" \
"EXPERIMENTAL" "Experimental (Glutton instead of Honeytrap)" \
"LEGACY" "Standard Edition from previous release" 3>& 1 1>& 2 2>& 3 3>& -)
2017-09-26 15:15:17 +00:00
# Let's ask for a secure tsec password
myUSER = "tsec"
myPASS1 = "pass1"
myPASS2 = "pass2"
mySECURE = "0"
while [ " $myPASS1 " != " $myPASS2 " ] && [ " $mySECURE " = = "0" ]
do
while [ " $myPASS1 " = = "pass1" ] || [ " $myPASS1 " = = "" ]
do
myPASS1 = $( dialog --insecure --backtitle " $myBACKTITLE " \
--title "[ Enter password for console user (tsec) ]" \
--passwordbox "\nPassword" 9 60 3>& 1 1>& 2 2>& 3 3>& -)
done
myPASS2 = $( dialog --insecure --backtitle " $myBACKTITLE " \
--title "[ Repeat password for console user (tsec) ]" \
--passwordbox "\nPassword" 9 60 3>& 1 1>& 2 2>& 3 3>& -)
if [ " $myPASS1 " != " $myPASS2 " ] ;
then
dialog --backtitle " $myBACKTITLE " --title "[ Passwords do not match. ]" \
--msgbox "\nPlease re-enter your password." 7 60
myPASS1 = "pass1"
myPASS2 = "pass2"
fi
mySECURE = $( printf "%s" " $myPASS1 " | cracklib-check | grep -c "OK" )
if [ " $mySECURE " = = "0" ] && [ " $myPASS1 " = = " $myPASS2 " ] ;
then
dialog --backtitle " $myBACKTITLE " --title "[ Password is not secure ]" --defaultno --yesno "\nKeep insecure password?" 7 50
myOK = $?
if [ " $myOK " = = "1" ] ;
then
myPASS1 = "pass1"
myPASS2 = "pass2"
fi
fi
done
printf "%s" " $myUSER : $myPASS1 " | chpasswd
# Let's ask for a web username with secure password
myOK = "1"
myUSER = "tsec"
myPASS1 = "pass1"
myPASS2 = "pass2"
mySECURE = "0"
while [ 1 != 2 ]
do
myUSER = $( dialog --backtitle " $myBACKTITLE " --title "[ Enter your web user name ]" --inputbox "\nUsername (tsec not allowed)" 9 50 3>& 1 1>& 2 2>& 3 3>& -)
myUSER = $( echo $myUSER | tr -cd "[:alnum:]_.-" )
dialog --backtitle " $myBACKTITLE " --title "[ Your username is ]" --yesno " \n $myUSER " 7 50
myOK = $?
if [ " $myOK " = "0" ] && [ " $myUSER " != "tsec" ] && [ " $myUSER " != "" ] ;
then
break
fi
done
while [ " $myPASS1 " != " $myPASS2 " ] && [ " $mySECURE " = = "0" ]
do
while [ " $myPASS1 " = = "pass1" ] || [ " $myPASS1 " = = "" ]
do
myPASS1 = $( dialog --insecure --backtitle " $myBACKTITLE " \
--title "[ Enter password for your web user ]" \
--passwordbox "\nPassword" 9 60 3>& 1 1>& 2 2>& 3 3>& -)
done
myPASS2 = $( dialog --insecure --backtitle " $myBACKTITLE " \
--title "[ Repeat password for your web user ]" \
--passwordbox "\nPassword" 9 60 3>& 1 1>& 2 2>& 3 3>& -)
if [ " $myPASS1 " != " $myPASS2 " ] ;
then
dialog --backtitle " $myBACKTITLE " --title "[ Passwords do not match. ]" \
--msgbox "\nPlease re-enter your password." 7 60
myPASS1 = "pass1"
myPASS2 = "pass2"
fi
mySECURE = $( printf "%s" " $myPASS1 " | cracklib-check | grep -c "OK" )
if [ " $mySECURE " = = "0" ] && [ " $myPASS1 " = = " $myPASS2 " ] ;
then
dialog --backtitle " $myBACKTITLE " --title "[ Password is not secure ]" --defaultno --yesno "\nKeep insecure password?" 7 50
myOK = $?
if [ " $myOK " = = "1" ] ;
then
myPASS1 = "pass1"
myPASS2 = "pass2"
fi
fi
done
2018-02-16 14:42:53 +00:00
mkdir -p /data/nginx/conf 2>& 1
htpasswd -b -c /data/nginx/conf/nginxpasswd " $myUSER " " $myPASS1 " 2>& 1 | dialog --title "[ Setting up user and password ]" $myPROGRESSBOXCONF ;
2017-09-26 15:15:17 +00:00
# Let's generate a SSL self-signed certificate without interaction (browsers will see it invalid anyway)
tput civis
2018-02-16 14:42:53 +00:00
mkdir -p /data/nginx/cert 2>& 1 | dialog --title "[ Generating a self-signed-certificate for NGINX ]" $myPROGRESSBOXCONF ;
2017-09-26 15:15:17 +00:00
openssl req \
-nodes \
-x509 \
-sha512 \
-newkey rsa:8192 \
2018-02-16 14:42:53 +00:00
-keyout "/data/nginx/cert/nginx.key" \
-out "/data/nginx/cert/nginx.crt" \
2017-09-26 15:15:17 +00:00
-days 3650 \
-subj '/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd' 2>& 1 | dialog --title "[ Generating a self-signed-certificate for NGINX ]" $myPROGRESSBOXCONF ;
# Let's setup the ntp server
if [ -f $myNTPCONFPATH ] ;
then
dialog --title "[ Setting up the ntp server ]" $myPROGRESSBOXCONF <<EOF
EOF
cp $myNTPCONFPATH /etc/ntp.conf 2>& 1 | dialog --title "[ Setting up the ntp server ]" $myPROGRESSBOXCONF
fi
# Let's setup 802.1x networking
if [ -f $myPFXPATH ] ;
then
dialog --title "[ Setting 802.1x networking ]" $myPROGRESSBOXCONF <<EOF
EOF
cp $myPFXPATH /etc/wpa_supplicant/ 2>& 1 | dialog --title "[ Setting 802.1x networking ]" $myPROGRESSBOXCONF
if [ -f $myPFXPWPATH ] ;
then
dialog --title "[ Setting up 802.1x password ]" $myPROGRESSBOXCONF <<EOF
EOF
myPFXPW = $( cat $myPFXPWPATH )
fi
myPFXHOSTID = $( cat $myPFXHOSTIDPATH )
tee -a /etc/network/interfaces 2>& 1>/dev/null <<EOF
wpa-driver wired
wpa-conf /etc/wpa_supplicant/wired8021x.conf
### Example wireless config for 802.1x
### This configuration was tested with the IntelNUC series
### If problems occur you can try and change wpa-driver to "iwlwifi"
### Do not forget to enter a ssid in /etc/wpa_supplicant/wireless8021x.conf
### The Intel NUC uses wlpXsY notation instead of wlanX
#
#auto wlp2s0
#iface wlp2s0 inet dhcp
# wpa-driver wext
# wpa-conf /etc/wpa_supplicant/wireless8021x.conf
EOF
tee /etc/wpa_supplicant/wired8021x.conf 2>& 1>/dev/null <<EOF
ctrl_interface = /var/run/wpa_supplicant
ctrl_interface_group = root
eapol_version = 1
ap_scan = 1
network = {
key_mgmt = IEEE8021X
eap = TLS
identity = " host/ $myPFXHOSTID "
private_key = "/etc/wpa_supplicant/8021x.pfx"
private_key_passwd = " $myPFXPW "
}
EOF
tee /etc/wpa_supplicant/wireless8021x.conf 2>& 1>/dev/null <<EOF
ctrl_interface = /var/run/wpa_supplicant
ctrl_interface_group = root
eapol_version = 1
ap_scan = 1
network = {
ssid = "<your_ssid_here_without_brackets>"
key_mgmt = WPA-EAP
pairwise = CCMP
group = CCMP
eap = TLS
identity = " host/ $myPFXHOSTID "
private_key = "/etc/wpa_supplicant/8021x.pfx"
private_key_passwd = " $myPFXPW "
}
EOF
fi
# Let's provide a wireless example config ...
fuECHO "### Providing static ip, wireless example config."
tee -a /etc/network/interfaces 2>& 1>/dev/null <<EOF
### Example static ip config
### Replace <eth0> with the name of your physical interface name
#
#auto eth0
#iface eth0 inet static
# address 192.168.1.1
# netmask 255.255.255.0
# network 192.168.1.0
# broadcast 192.168.1.255
# gateway 192.168.1.1
# dns-nameservers 192.168.1.1
### Example wireless config without 802.1x
### This configuration was tested with the IntelNUC series
### If problems occur you can try and change wpa-driver to "iwlwifi"
#
#auto wlan0
#iface wlan0 inet dhcp
# wpa-driver wext
# wpa-ssid <your_ssid_here_without_brackets>
# wpa-ap-scan 1
# wpa-proto RSN
# wpa-pairwise CCMP
# wpa-group CCMP
# wpa-key-mgmt WPA-PSK
# wpa-psk "<your_password_here_without_brackets>"
EOF
# Let's modify the sources list
sed -i '/cdrom/d' /etc/apt/sources.list
# Let's make sure SSH roaming is turned off (CVE-2016-0777, CVE-2016-0778)
fuECHO "### Let's make sure SSH roaming is turned off."
tee -a /etc/ssh/ssh_config 2>& 1>/dev/null <<EOF
UseRoaming no
EOF
# Let's pull some updates
apt-get update -y 2>& 1 | dialog --title "[ Pulling updates ]" $myPROGRESSBOXCONF
apt-get upgrade -y 2>& 1 | dialog --title "[ Pulling updates ]" $myPROGRESSBOXCONF
# Let's clean up apt
apt-get autoclean -y 2>& 1 | dialog --title "[ Pulling updates ]" $myPROGRESSBOXCONF
apt-get autoremove -y 2>& 1 | dialog --title "[ Pulling updates ]" $myPROGRESSBOXCONF
2018-02-19 15:47:59 +00:00
# Installing ctop, elasticdump, tpot
2017-09-26 15:15:17 +00:00
pip install --upgrade pip 2>& 1 | dialog --title "[ Installing pip ]" $myPROGRESSBOXCONF
2018-02-13 11:15:58 +00:00
pip install elasticsearch-curator= = 5.4.1 2>& 1 | dialog --title "[ Installing elasticsearch-curator ]" $myPROGRESSBOXCONF
2018-03-15 10:59:27 +00:00
pip install yq = = 2.4.1 2>& 1 | dialog --title "[ Installing yq ]" $myPROGRESSBOXCONF
2018-04-19 22:38:45 +00:00
npm install https://github.com/taskrabbit/elasticsearch-dump#9fcc8cc -g 2>& 1 | dialog --title "[ Installing elasticsearch-dump ]" $myPROGRESSBOXCONF
2018-02-13 17:10:42 +00:00
wget https://github.com/bcicen/ctop/releases/download/v0.7/ctop-0.7-linux-amd64 -O ctop 2>& 1 | dialog --title "[ Installing ctop ]" $myPROGRESSBOXCONF
2017-09-26 15:15:17 +00:00
mv ctop /usr/bin/ 2>& 1 | dialog --title "[ Installing ctop ]" $myPROGRESSBOXCONF
chmod +x /usr/bin/ctop 2>& 1 | dialog --title "[ Installing ctop ]" $myPROGRESSBOXCONF
2018-02-13 17:10:42 +00:00
git clone https://github.com/dtag-dev-sec/tpotce -b 18.04 /opt/tpot 2>& 1 | dialog --title "[ Cloning T-Pot ]" $myPROGRESSBOXCONF
2017-09-28 20:00:51 +00:00
2017-09-26 15:15:17 +00:00
# Let's add a new user
addgroup --gid 2000 tpot 2>& 1 | dialog --title "[ Adding new user ]" $myPROGRESSBOXCONF
adduser --system --no-create-home --uid 2000 --disabled-password --disabled-login --gid 2000 tpot 2>& 1 | dialog --title "[ Adding new user ]" $myPROGRESSBOXCONF
# Let's set the hostname
a = $( fuRANDOMWORD /opt/tpot/host/usr/share/dict/a.txt)
n = $( fuRANDOMWORD /opt/tpot/host/usr/share/dict/n.txt)
myHOST = $a $n
hostnamectl set-hostname $myHOST 2>& 1 | dialog --title "[ Setting new hostname ]" $myPROGRESSBOXCONF
sed -i 's#127.0.1.1.*#127.0.1.1\t' " $myHOST " '#g' /etc/hosts 2>& 1 | dialog --title "[ Setting new hostname ]" $myPROGRESSBOXCONF
# Let's patch sshd_config
2018-02-13 11:15:58 +00:00
sed -i 's#\#Port 22#Port 64295#' /etc/ssh/sshd_config 2>& 1 | dialog --title "[ SSH listen on tcp/64295 ]" $myPROGRESSBOXCONF
2017-09-26 15:15:17 +00:00
sed -i 's#\#PasswordAuthentication yes#PasswordAuthentication no#' /etc/ssh/sshd_config 2>& 1 | dialog --title "[ SSH password authentication only from RFC1918 networks ]" $myPROGRESSBOXCONF
tee -a /etc/ssh/sshd_config 2>& 1>/dev/null <<EOF
Match address 127.0.0.1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
PasswordAuthentication yes
EOF
# Let's make sure only myFLAVOR images will be downloaded and started
case $myFLAVOR in
2018-06-11 14:43:36 +00:00
STANDARD)
echo "### Preparing STANDARD flavor installation."
cp /opt/tpot/etc/compose/standard.yml $myTPOTCOMPOSE 2>& 1>/dev/null
2018-03-29 21:27:20 +00:00
; ;
2018-06-11 14:43:36 +00:00
SENSOR)
echo "### Preparing SENSOR flavor installation."
cp /opt/tpot/etc/compose/sensor.yml $myTPOTCOMPOSE 2>& 1>/dev/null
2017-09-26 15:15:17 +00:00
; ;
INDUSTRIAL)
echo "### Preparing INDUSTRIAL flavor installation."
cp /opt/tpot/etc/compose/industrial.yml $myTPOTCOMPOSE 2>& 1>/dev/null
; ;
2018-06-11 14:43:36 +00:00
COLLECTOR)
echo "### Preparing COLLECTOR flavor installation."
cp /opt/tpot/etc/compose/collector.yml $myTPOTCOMPOSE 2>& 1>/dev/null
; ;
EXPERIMENTAL)
echo "### Preparing EXPERIMENTAL flavor installation."
cp /opt/tpot/etc/compose/experimental.yml $myTPOTCOMPOSE 2>& 1>/dev/null
2017-09-26 15:15:17 +00:00
; ;
2018-06-11 14:43:36 +00:00
LEGACY)
echo "### Preparing LEGACY flavor installation."
cp /opt/tpot/etc/compose/legacy.yml $myTPOTCOMPOSE 2>& 1>/dev/null
2017-09-26 15:15:17 +00:00
; ;
esac
# Let's load docker images
myIMAGESCOUNT = $( cat $myTPOTCOMPOSE | grep -v '#' | grep image | cut -d: -f2 | wc -l)
j = 0
for name in $( cat $myTPOTCOMPOSE | grep -v '#' | grep image | cut -d'"' -f2)
do
dialog --title "[ Downloading docker images, please be patient ]" --backtitle " $myBACKTITLE " \
--gauge " \n Now downloading: $name \n " 8 80 $( expr 100 \* $j / $myIMAGESCOUNT ) <<EOF
EOF
docker pull $name 2>& 1>/dev/null
let j += 1
dialog --title "[ Downloading docker images, please be patient ]" --backtitle " $myBACKTITLE " \
--gauge " \n Now downloading: $name \n " 8 80 $( expr 100 \* $j / $myIMAGESCOUNT ) <<EOF
EOF
done
# Let's add the daily update check with a weekly clean interval
dialog --title "[ Modifying update checks ]" $myPROGRESSBOXCONF <<EOF
EOF
tee /etc/apt/apt.conf.d/10periodic 2>& 1>/dev/null <<EOF
APT::Periodic::Update-Package-Lists "1" ;
APT::Periodic::Download-Upgradeable-Packages "0" ;
APT::Periodic::AutocleanInterval "7" ;
EOF
# Let's make sure to reboot the system after a kernel panic
dialog --title "[ Reboot after kernel panic ]" $myPROGRESSBOXCONF <<EOF
EOF
tee -a /etc/sysctl.conf 2>& 1>/dev/null <<EOF
# Reboot after kernel panic, check via /proc/sys/kernel/panic[_on_oops]
# Set required map count for ELK
kernel.panic = 1
kernel.panic_on_oops = 1
vm.max_map_count = 262144
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
EOF
# Let's add some cronjobs
dialog --title "[ Adding cronjobs ]" $myPROGRESSBOXCONF <<EOF
EOF
tee -a /etc/crontab 2>& 1>/dev/null <<EOF
# Check if updated images are available and download them
2017-10-17 09:03:43 +00:00
27 1 * * * root docker-compose -f /opt/tpot/etc/tpot.yml pull
2017-09-26 15:15:17 +00:00
# Delete elasticsearch logstash indices older than 90 days
2017-10-17 09:03:43 +00:00
27 4 * * * root curator --config /opt/tpot/etc/curator/curator.yml /opt/tpot/etc/curator/actions.yml
2017-09-26 15:15:17 +00:00
# Uploaded binaries are not supposed to be downloaded
*/1 * * * * root mv --backup= numbered /data/dionaea/roots/ftp/* /data/dionaea/binaries/
# Daily reboot
27 3 * * * root reboot
# Check for updated packages every sunday, upgrade and reboot
27 16 * * 0 root apt-get autoclean -y && apt-get autoremove -y && apt-get update -y && apt-get upgrade -y && sleep 10 && reboot
EOF
# Let's create some files and folders
2018-03-25 18:35:32 +00:00
mkdir -p /data/ciscoasa/log \
/data/conpot/log \
2017-09-26 15:15:17 +00:00
/data/cowrie/log/tty/ /data/cowrie/downloads/ /data/cowrie/keys/ /data/cowrie/misc/ \
/data/dionaea/log /data/dionaea/bistreams /data/dionaea/binaries /data/dionaea/rtp /data/dionaea/roots/ftp /data/dionaea/roots/tftp /data/dionaea/roots/www /data/dionaea/roots/upnp \
/data/elasticpot/log \
/data/elk/data /data/elk/log \
/data/glastopf /data/honeytrap/log/ /data/honeytrap/attacks/ /data/honeytrap/downloads/ \
2018-04-16 22:05:16 +00:00
/data/glutton/log \
2018-03-25 18:35:32 +00:00
/data/heralding/log \
2017-09-26 15:15:17 +00:00
/data/mailoney/log \
2018-02-16 14:42:53 +00:00
/data/nginx/log \
2017-09-26 15:15:17 +00:00
/data/emobility/log \
/data/ews/conf \
/data/rdpy/log \
/data/spiderfoot \
/data/suricata/log /home/tsec/.ssh/ \
2018-05-28 21:46:51 +00:00
/data/tanner/log /data/tanner/files \
2017-09-26 15:15:17 +00:00
/data/p0f/log \
/data/vnclowpot/log 2>& 1 | dialog --title "[ Creating some files and folders ]" $myPROGRESSBOXCONF
touch /data/spiderfoot/spiderfoot.db 2>& 1 | dialog --title "[ Creating some files and folders ]" $myPROGRESSBOXCONF
# Let's copy some files
2017-09-26 15:56:57 +00:00
tar xvfz /opt/tpot/etc/objects/elkbase.tgz -C / 2>& 1 | dialog --title "[ Extracting elkbase.tgz ]" $myPROGRESSBOXCONF
2017-09-26 15:15:17 +00:00
cp /opt/tpot/host/etc/systemd/* /etc/systemd/system/ 2>& 1 | dialog --title "[ Copy configs ]" $myPROGRESSBOXCONF
cp /opt/tpot/host/etc/issue /etc/ 2>& 1 | dialog --title "[ Copy configs ]" $myPROGRESSBOXCONF
cp /root/installer/keys/authorized_keys /home/tsec/.ssh/authorized_keys 2>& 1 | dialog --title "[ Copy configs ]" $myPROGRESSBOXCONF
systemctl enable tpot 2>& 1 | dialog --title "[ Enabling service for tpot ]" $myPROGRESSBOXCONF
# Let's take care of some files and permissions
chmod 760 -R /data 2>& 1 | dialog --title "[ Set permissions and ownerships ]" $myPROGRESSBOXCONF
chown tpot:tpot -R /data 2>& 1 | dialog --title "[ Set permissions and ownerships ]" $myPROGRESSBOXCONF
2018-02-16 14:42:53 +00:00
chmod 644 -R /data/nginx/conf 2>& 1 | dialog --title "[ Set permissions and ownerships ]" $myPROGRESSBOXCONF
chmod 644 -R /data/nginx/cert 2>& 1 | dialog --title "[ Set permissions and ownerships ]" $myPROGRESSBOXCONF
2017-09-26 15:15:17 +00:00
chmod 600 /home/tsec/.ssh/authorized_keys 2>& 1 | dialog --title "[ Set permissions and ownerships ]" $myPROGRESSBOXCONF
chown tsec:tsec /home/tsec/.ssh /home/tsec/.ssh/authorized_keys 2>& 1 | dialog --title "[ Set permissions and ownerships ]" $myPROGRESSBOXCONF
# Let's replace "quiet splash" options, set a console font for more screen canvas and update grub
sed -i 's#GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"#GRUB_CMDLINE_LINUX_DEFAULT="consoleblank=0"#' /etc/default/grub 2>& 1>/dev/null
sed -i 's#GRUB_CMDLINE_LINUX=""#GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"#' /etc/default/grub 2>& 1>/dev/null
update-grub 2>& 1 | dialog --title "[ Update grub ]" $myPROGRESSBOXCONF
cp /usr/share/consolefonts/Uni2-Terminus12x6.psf.gz /etc/console-setup/
gunzip /etc/console-setup/Uni2-Terminus12x6.psf.gz
sed -i 's#FONTFACE=".*#FONTFACE="Terminus"#' /etc/default/console-setup
sed -i 's#FONTSIZE=".*#FONTSIZE="12x6"#' /etc/default/console-setup
update-initramfs -u 2>& 1 | dialog --title "[ Update initramfs ]" $myPROGRESSBOXCONF
# Let's enable a color prompt and add /opt/tpot/bin to path
myROOTPROMPT = 'PS1="\[\033[38;5;8m\][\[$(tput sgr0)\]\[\033[38;5;1m\]\u\[$(tput sgr0)\]\[\033[38;5;6m\]@\[$(tput sgr0)\]\[\033[38;5;4m\]\h\[$(tput sgr0)\]\[\033[38;5;6m\]:\[$(tput sgr0)\]\[\033[38;5;5m\]\w\[$(tput sgr0)\]\[\033[38;5;8m\]]\[$(tput sgr0)\]\[\033[38;5;1m\]\\$\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]"'
myUSERPROMPT = 'PS1="\[\033[38;5;8m\][\[$(tput sgr0)\]\[\033[38;5;2m\]\u\[$(tput sgr0)\]\[\033[38;5;6m\]@\[$(tput sgr0)\]\[\033[38;5;4m\]\h\[$(tput sgr0)\]\[\033[38;5;6m\]:\[$(tput sgr0)\]\[\033[38;5;5m\]\w\[$(tput sgr0)\]\[\033[38;5;8m\]]\[$(tput sgr0)\]\[\033[38;5;2m\]\\$\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]"'
tee -a /root/.bashrc 2>& 1>/dev/null <<EOF
$myROOTPROMPT
PATH = " $PATH :/opt/tpot/bin "
EOF
tee -a /home/tsec/.bashrc 2>& 1>/dev/null <<EOF
$myUSERPROMPT
PATH = " $PATH :/opt/tpot/bin "
EOF
# Let's create ews.ip before reboot and prevent race condition for first start
/opt/tpot/bin/updateip.sh 2>& 1>/dev/null
# Final steps
cp /opt/tpot/host/etc/rc.local /etc/rc.local 2>& 1>/dev/null && \
rm -rf /root/installer 2>& 1>/dev/null && \
dialog --no-ok --no-cancel --backtitle " $myBACKTITLE " --title "[ Thanks for your patience. Now rebooting. ]" --pause "" 6 80 2 && \
reboot