2025-05-26 15:48:09 -06:00

226 lines
8.5 KiB
Bash

#!/bin/bash
blanco='\033[38;5;231m'
amarillo='\033[38;5;228m'
azul='\033[38;5;14m'
morado='\033[38;5;147m'
rojo='\033[0;31m'
verde='\033[38;5;148m'
yellow='\033[0;33m'
rosa='\033[38;5;213m'
melon='\033[38;5;208m'
guinda='\033[38;5;161m'
cierre='\033[0m'
bar1="\e[1;30m◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚◚\e[0m"
bar2="\033[38;5;183m--------------------------------------------------------------------\033[0m"
#DIRECTORIOS
dir_bases="/etc/default"
dir_puertos="/etc/default/ports-sslh"
dir_conf="/etc/default/sslh"
dir_ports="/etc/default/sslh-ports"
dir_service="/etc/init.d/sslh"
dir_info="/etc/default/sslh-info"
#VARIABLES
arch_serv="/root/servicios.txts"
plantilla_service="--anyprot 127.0.0.1:000"
#DIRECTORIOS mkdir-touch
dir_base(){
if [ -f $dir_ports ]; then
echo
else
touch $dir_ports
chmod 777 $dir_ports
fi
if [ -d $dir_bases/ports-sslh ]; then
echo
else
mkdir $dir_bases/ports-sslh
fi
if [ -f $dir_info ]; then
echo
else
touch $dir_info
chmod 777 $dir_info
fi
}
back_menu(){
echo -e "$bar1"
read -p "$(echo -e "${morado}Enter Para Continuar${cierre}")" enter
source <(curl -sSL https://gitea.com/drowkid01/scriptdk1/raw/branch/main/Recursos/menu_inst/sslh-back3.sh)
}
t_port () {
t_node=$(lsof -V -i tcp -P -n | grep -v "ESTABLISHED" |grep -v "COMMAND" | grep "LISTEN")
while read port_t; do
test1=$(echo $port_t | awk '{print $1}') && test2=$(echo $port_t | awk '{print $9}' | awk -F ":" '{print $2}')
[[ "$(echo -e $nodet|grep "$test1 $test2")" ]] || nodet+="$test1 $test2\n"
done <<< "$t_node"
i=1
echo -e "$nodet"
}
#REGLAS SSLH
reglas_sslh () {
[[ -e "/etc/stunnel/stunnel.conf" ]] && ptssl="$(netstat -nplt | grep 'stunnel' | awk {'print $4'} | cut -d: -f2 | xargs)" || ptssl='444'
[[ -e "/etc/openvpn/server.conf" ]] && ptvpn="$(netstat -nplt | grep 'openvpn' | awk {'print $4'} | cut -d: -f2 | xargs)" || ptvpn='460'
[[ -e "/etc/default/dropbear" ]] && ptfrop="$(netstat -nplt | grep 'dropbear' | awk {'print $4'} | cut -d: -f2 | xargs)" || ptfrop='143'
DEBIAN_FRONTEND=noninteractive apt-get -y install sslh 1> /dev/null 2> /dev/null
echo -e " Ingresa Un puerto Libre, Para activar SSLH\n"
read -p " Ingresa Puerto SSLH : " psshl
echo -e "#Modo autónomo\n\nRUN=yes\n\nDAEMON=/usr/sbin/sslh\n\nDAEMON_OPTS='--user sslh --listen 0.0.0.0:$psshl --ssh 127.0.0.1:22 --ssl 127.0.0.1:$ptssl --http 127.0.0.1:$ptfrop --openvpn 127.0.0.1:$ptvpn --pidfile /var/run/sslh/sslh.pid'" > /etc/default/sslh
## echo -e "#Modo autónomo\n\nRUN=yes\n\nDAEMON=/usr/sbin/sslh\n\nDAEMON_OPTS='--user sslh --listen 0.0.0.0:3128 --ssh 0.0.0.0:22 --ssl 0.0.0.0:$ptssl --http 0.0.0.0:80 --openvpn 127.0.0.1:$ptvpn --pidfile /var/run/sslh/sslh.pid'" >/etc/default/sslh
/etc/init.d/sslh start && service sslh start
}
msg(){
echo -e "$bar1"
echo -e "${blanco}#######################################################${cierre}"
echo -e "${blanco}# ❗️ Protocolos reconocidos ${azul}ssl, https, openvpn, ${blanco}# ${cierre}"
echo -e "${blanco}# ❗️ ${azul}Openconnect, http, sslh; ssh,${cierre} ${blanco}si su servicio es ${blanco}# ${cierre}"
echo -e "${blanco}# ❗️ Diferente porfavor en nombre establezca ${guinda}anyprot ${blanco}# ${cierre}"
echo -e "${blanco}# ----------------------------------------------- #${cierre}"
echo -e "${blanco}# ${amarillo} SCRIPT Modo Beta, Creditos a @drowkid01 ${blanco}#${cierre}"
echo -e "${blanco}# ${melon}----------------------------------------------- ${blanco}#${cierre}"
echo -e "${blanco}# dev: ${verde}@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ${blanco}#${cierre}"
echo -e "${blanco}#######################################################${cierre}"
echo -e "$bar1"
echo ""
}
capturar_servicio(){
echo -e "${azul}Escriba el nombre de servicio que de desea agregar${cierre}"
echo -e "$bar2"
read -p "$(echo -e "${amarillo}ingrese: ${cierre}")" -e -i anyprot service
}
capturar_puerto(){
echo -e "$bar2"
echo -e "${blanco}Escriba el numero de PUERTO${cierre}"
echo -e "$bar1"
read -p "$(echo -e "${amarillo}ingrese: ${cierre}")" puerto_i
if [[ $(t_port| grep "$puerto_i") ]]; then
echo
else
echo -e "$bar1"
echo -e "${guinda}⚠️ EL Puerto ${blanco} ${puerto_i} ${guinda}No existe ${cierre}"
echo -e "${guinda}⚠️ Utilice puertos existentes ${cierre}"
echo -e "$bar1"
capturar_puerto
fi
if [ -f $dir_puertos/$puerto_i ]; then
echo -e "$bar2"
echo -e "${guinda}⚠️ EL Puerto ${blanco} ${puerto_i} ${guinda}Ya se encuentra en USO ${cierre}"
echo -e "${guinda}⚠️ Intente con otro puerto ${cierre}"
capturar_puerto
else
echo -e "$bar2"
echo -e "${blanco}REGISTRO EXITOSO !! ${cierre}"
echo -e "$bar2"
fi
touch $dir_puertos/$puerto_i
}
instalar_sslh(){
dir_base
reglas_sslh
if [ $? -eq 0 ]; then
echo -e "$bar2"
echo -e "${blanco}INICIO EXITOSO!! , ACTUALMETE ESTA HABILITADO EL SERVICIO OPENSSH ${cierre}"
echo -e "${blanco}AGREGUE MAS SERVICIO EN EL MENU ${melon}SSLH - MULTIPLEXOR ${cierre}"
service sslh start
echo -e "$bar2"
else
echo -e "$bar2"
echo -e "${rojo}⚠️ ERROR INESPERADO, POR FAVOR REVISE SUS SERVICIOS${cierre}"
echo -e "${rojo}⚠️ Y VUELVA A INTERNTARLO ${cierre}"
echo -e "$bar2"
service sslh start
fi
back_menu
}
agregar_servicos(){
echo -e "$bar1"
capturar_servicio
capturar_puerto
sed -i "s;anyprot;${service};g" $dir_conf
sed -i "s;000;$puerto_i $plantilla_service;g" $dir_conf
if [ $? -eq 0 ]; then
echo -e "${blanco}SERVICIO ${verde}${service_f}${cierre} ${blanco}AGREGADO CON EXITO ${cierre}"
echo -e "${blanco}AGREGUE MAS SERVICIO EN EL MENU ${melon}SSLH - MULTIPLEXOR ${cierre}"
service sslh start
else
echo -e "${rojo}⚠️ ERROR INESPERADO, POR FAVOR REVISE SUS SERVICIOS${cierre}"
echo -e "${rojo}⚠️ Y VUELVA A INTERNTARLO ${cierre}"
fi
echo -e "${blanco}${service} ${guinda}${puerto_i}${cierre}" >> $dir_info
echo -e "${puerto_i}" >> $dir_ports
service sslh restart
back_menu
}
eliminar_servicio(){
unset service
unset puerto_i
echo -e "$bar1"
cat $dir_info | awk -v OFS='\t\t' '{print $1,$2}'
echo -e "$bar1"
echo -e "${azul}Escriba el nombre de servicio que de desea Eliminar${cierre}"
echo -e "$bar2"
read -p "$(echo -e "${amarillo}ingrese: ${cierre}")" -e -i anyprot service
echo -e "${azul}Escriba el numero de puerto que de desea Eliminar${cierre}"
echo -e "$bar2"
read -p "$(echo -e "${amarillo}ingrese: ${cierre}")" puerto_i
rm_service="--$service 127.0.0.1:$puerto_i"
sed -i "s;$rm_service;proto;g" $dir_conf
sed -i 's/proto//g' $dir_conf
grep -Ev "$puerto_i" $dir_info > temp
mv -f temp $dir_info
service sslh restart
rm -rf temp
rm -rf $dir_puertos/$puerto_i
back_menu
}
informacion_puertos(){
echo -e "${verde}SERVICIO ${blanco}/ ${verde}PUERTO${cierre}"
echo -e "$bar1"
cat $dir_info | awk -v OFS='\t\t' '{print $1,$2}'
echo -e "$bar1"
back_menu
}
desinstalar(){
service sslh stop
rm -rf $dir_info
rm -rf $dir_ports
rm -rf $dir_conf
rm -rf $dir_base
rm -rf $dir_service
rm -rf $arch_serv
rm -rf $dir_puertos
apt purge sslh -y
}
sslh_onoff=`if netstat -tunlp |grep sslh 1> /dev/null 2> /dev/null; then
echo -e "\033[1;32m🟢"
else
echo -e "\033[1;31m🔴"
fi`
total_p=$(cat $dir_info)
menu_sslh(){
clear
msg
echo -e "${melon} SSLH - MULTIPLEXOR
${bar1}
${morado}ESTADO DE SERVICIO: ${blanco}>${cierre} ${guinda}SSLH: $sslh_onoff ${cierre}
${bar2}
${azul}[1]${cierre} ${rojo}>${cierre} ${amarillo}INSTALAR ${verde}SSLH${cierre}
${azul}[2]${cierre} ${rojo}>${cierre} ${amarillo}AGREGAR SERVICIOS${cierre}
${azul}[3]${cierre} ${rojo}>${cierre} ${amarillo}ELIMINAR ${guinda}SERVICIOS${cierre}
${azul}[4]${cierre} ${rojo}>${cierre} ${amarillo}INFORMACION DE PUERTOS${cierre}
${azul}[5]${cierre} ${rojo}>${cierre} ${guinda}DESINSTALAR SSLH${cierre}
${azul}[0]${cierre} ${rojo}>${cierre} ${blanco}SALIR${cierre}
${bar2}"
read -p "$(echo -e "${blanco}seleccione [0-5]:${cierre}")" selection
case "$selection" in
1)instalar_sslh ;;
2)agregar_servicos ;;
3)eliminar_servicio ;;
4)informacion_puertos ;;
5)desinstalar ;;
0)cd $HOME && menu;;
*)
echo -e "${rojo} Porfavor seleccione del [0-5]${cierre}"
;;
esac
}
menu_sslh