226 lines
8.5 KiB
Bash
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
|