zerossl.sh 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402
  1. #!/bin/bash
  2. #
  3. [[ -e /bin/ejecutar/msg ]] && source /bin/ejecutar/msg || source <(curl -sSL https://raw.githubusercontent.com/ChumoGH/ChumoGH-Script/master/msg-bar/msg)
  4. selection_fun () {
  5. local selection="null"
  6. local range
  7. for((i=0; i<=$1; i++)); do range[$i]="$i "; done
  8. while [[ ! $(echo ${range[*]}|grep -w "$selection") ]]; do
  9. echo -ne "\033[1;37m Opcion: " >&2
  10. read selection
  11. tput cuu1 >&2 && tput dl1 >&2
  12. done
  13. echo $selection
  14. }
  15. #!/bin/bash
  16. #25/01/2021 by @Kalix1
  17. clear
  18. clear
  19. SCPdir="/etc/adm-lite"
  20. SCPfrm="${SCPdir}" && [[ ! -d ${SCPfrm} ]] && exit
  21. SCPinst="${SCPdir}"&& [[ ! -d ${SCPinst} ]] && exit
  22. declare -A cor=(
  23. [0]="\033[1;37m"
  24. [1]="\033[1;34m"
  25. [2]="\033[1;31m"
  26. [3]="\033[1;33m"
  27. [4]="\033[1;32m"
  28. [5]="\e[1;36m" )
  29. mportas () {
  30. unset portas
  31. portas_var=$(lsof -V -i tcp -P -n | grep -v "ESTABLISHED" |grep -v "COMMAND" | grep "LISTEN")
  32. while read port; do
  33. var1=$(echo $port | awk '{print $1}') && var2=$(echo $port | awk '{print $9}' | awk -F ":" '{print $2}')
  34. [[ "$(echo -e $portas|grep "$var1 $var2")" ]] || portas+="$var1 $var2\n"
  35. done <<< "$portas_var"
  36. i=1
  37. echo -e "$portas"
  38. }
  39. fun_bar () {
  40. comando="$1" _=$( $comando > /dev/null 2>&1 ) & > /dev/null
  41. pid=$!
  42. while [[ -d /proc/$pid ]]; do
  43. echo -ne " \033[1;33m["
  44. for((i=0; i<20; i++)); do
  45. echo -ne "\033[1;31m##"
  46. sleep 0.5
  47. done
  48. echo -ne "\033[1;33m]"
  49. sleep 1s
  50. echo tput cuu1 tput dl1
  51. done
  52. echo -e " \033[1;33m[\033[1;31m########################################\033[1;33m] - \033[1;32m100%\033[0m"
  53. sleep 1s
  54. }
  55. ssl_stunel () {
  56. [[ $(mportas|grep stunnel4|head -1) ]] && {
  57. echo -e "\033[1;33m Deteniendo Stunnel"
  58. msg -bar
  59. service stunnel4 stop > /dev/null 2>&1
  60. rm -rf /etc/stunnel/stunnel.conf
  61. apt-get purge stunnel4 -y &>/dev/null && echo -e "\e[31m DETENIENDO SERVICIO SSL" | pv -qL 10
  62. apt-get purge stunnel4 &>/dev/null
  63. apt-get remove stunnel4 &>/dev/null
  64. msg -bar
  65. echo -e "\033[1;33m Detenido Con Exito!"
  66. msg -bar
  67. return 0
  68. }
  69. clear
  70. msg -bar
  71. echo -e "\033[1;33m Seleccione una puerta de redirección interna."
  72. echo -e "\033[1;33m Un puerto SSH/DROPBEAR/SQUID/OPENVPN/PYTHON"
  73. msg -bar
  74. while true; do
  75. echo -ne "\033[1;37m"
  76. echo " Ingresa el Puerto Local de tu VPS (Default 22) "
  77. read -p " Local-Port: " -e -i $pt portserv
  78. if [[ ! -z $portserv ]]; then
  79. if lsof -Pi :$portserv -sTCP:LISTEN -t >/dev/null ; then
  80. break
  81. else
  82. portserv="$pt"
  83. break
  84. fi
  85. fi
  86. done
  87. msg -bar
  88. DPORT="$(mportas|grep $portserv|awk '{print $2}'|head -1)"
  89. echo -e "\033[1;33m Ahora Que Puerto sera SSL"
  90. msg -bar
  91. while true; do
  92. echo -e " Ingresa el Puerto SSl/TLS "
  93. read -p " Listen-SSL: " SSLPORT
  94. tput cuu1 >&2 && tput dl1 >&2
  95. PortSSL=`netstat -tlpn | awk -F '[: ]+' '$1=="tcp"{print $5}' | grep -w $SSLPORT`
  96. [[ -n "$PortSSL" ]] || break
  97. prococup=`netstat -tlpn | awk -F '[: ]+' '$5=="$SSLPORT"{print $9}'`
  98. echo -e "\033[1;33m EL PUERTO SE ENCUENTRA OCUPADO POR $prococup"
  99. echo -e "$barra"
  100. return
  101. done
  102. msg -bar
  103. echo -e "\033[1;33m Instalando SSL"
  104. msg -bar
  105. fun_bar "apt-get install stunnel4 -y"
  106. apt-get install stunnel4 -y > /dev/null 2>&1
  107. echo -e "client = no\n[SSL]\ncert = /etc/stunnel/stunnel.pem\naccept = ${SSLPORT}\nconnect = 127.0.0.1:${DPORT}" > /etc/stunnel/stunnel.conf
  108. ####Coreccion2.0#####
  109. openssl genrsa -out stunnel.key 2048 > /dev/null 2>&1
  110. (echo "$(curl -sSL ipinfo.io > info && cat info | grep country | awk '{print $2}' | sed -e 's/[^a-z0-9 -]//ig')" ; echo "" ; echo "$(wget -qO- ifconfig.me):81" ; echo "" ; echo "" ; echo "" ; echo "@ChumoGH")|openssl req -new -key stunnel.key -x509 -days 1000 -out stunnel.crt > /dev/null 2>&1
  111. cat stunnel.crt stunnel.key > stunnel.pem
  112. mv stunnel.pem /etc/stunnel/
  113. ######-------
  114. sed -i 's/ENABLED=0/ENABLED=1/g' /etc/default/stunnel4
  115. service stunnel4 restart > /dev/null 2>&1
  116. msg -bar
  117. echo -e "\033[1;33m INSTALADO CON EXITO"
  118. msg -bar
  119. rm -rf /etc/adm-lite/stunnel.crt > /dev/null 2>&1
  120. rm -rf /etc/adm-lite/stunnel.key > /dev/null 2>&1
  121. rm -rf /root/stunnel.crt > /dev/null 2>&1
  122. rm -rf /root/stunnel.key > /dev/null 2>&1
  123. return 0
  124. }
  125. ssl_stunel_2 () {
  126. echo -e "\033[1;32m AGREGAR MAS PUERTOS SSL"
  127. msg -bar
  128. echo -e "\033[1;33m Seleccione una puerta de redirección interna."
  129. echo -e "\033[1;33m Un puerto SSH/DROPBEAR/SQUID/OPENVPN/PYTHON"
  130. msg -bar
  131. while true; do
  132. echo -ne "\033[1;37m"
  133. echo " Ingresa el Puerto Local de tu VPS (Default 22) "
  134. read -p " Local-Port: " -e -i $pt portserv
  135. if [[ ! -z $portserv ]]; then
  136. if lsof -Pi :$portserv -sTCP:LISTEN -t >/dev/null ; then
  137. break
  138. else
  139. portserv="$pt"
  140. break
  141. fi
  142. fi
  143. done
  144. msg -bar
  145. DPORT="$(mportas|grep $portserv|awk '{print $2}'|head -1)"
  146. echo -e "\033[1;33m Ahora Que Puerto sera SSL"
  147. msg -bar
  148. while true; do
  149. echo -e " Ingresa el Puerto SSl/TLS "
  150. read -p " Listen-SSL: " SSLPORT
  151. tput cuu1 >&2 && tput dl1 >&2
  152. PortSSL=`netstat -tlpn | awk -F '[: ]+' '$1=="tcp"{print $5}' | grep -w $SSLPORT`
  153. [[ -n "$PortSSL" ]] || break
  154. prococup=`netstat -tlpn | awk -F '[: ]+' '$5=="$SSLPORT"{print $9}'`
  155. echo -e "\033[1;33m EL PUERTO SE ENCUENTRA OCUPADO POR $prococup"
  156. echo -e "$barra"
  157. return
  158. done
  159. msg -bar
  160. echo -e "\033[1;33m Instalando SSL"
  161. msg -bar
  162. fun_bar "apt-get install stunnel4 -y"
  163. echo -e "client = no\n[SSL+]\ncert = /etc/stunnel/stunnel.pem\naccept = ${SSLPORT}\nconnect = 127.0.0.1:${DPORT}" >> /etc/stunnel/stunnel.conf
  164. ######-------
  165. sed -i 's/ENABLED=0/ENABLED=1/g' /etc/default/stunnel4
  166. service stunnel4 restart > /dev/null 2>&1
  167. msg -bar
  168. echo -e "${cor[4]} INSTALADO CON EXITO"
  169. msg -bar
  170. rm -rf /etc/adm-lite/stunnel.crt > /dev/null 2>&1
  171. rm -rf /etc/adm-lite/stunnel.key > /dev/null 2>&1
  172. rm -rf /root/stunnel.crt > /dev/null 2>&1
  173. rm -rf /root/stunnel.key > /dev/null 2>&1
  174. return 0
  175. }
  176. sslpython(){
  177. msg -bar
  178. echo -e "\033[1;37mSe Requiere tener el puerto 80 y el 443 libres"
  179. sleep 2
  180. install_python(){
  181. apt-get install python -y &>/dev/null && echo -e "\033[1;97m Activando Python Direc 80\n" | pv -qL 10
  182. sleep 3
  183. screen -dmS pydic-80 python ${SCPinst}/python.py 80 "@ChumoGH" && echo "80 @ChumoGH" >> /etc/adm-lite/PySSL.log
  184. msg -bar
  185. }
  186. install_ssl(){
  187. apt-get install stunnel4 -y &>/dev/null && echo -e "\033[1;97m Activando Servicios SSL 443\n" | pv -qL 12
  188. apt-get install stunnel4 -y > /dev/null 2>&1
  189. echo -e "client = no\n[SSL]\ncert = /etc/stunnel/stunnel.pem\naccept = 443\nconnect = 127.0.0.1:80" > /etc/stunnel/stunnel.conf
  190. openssl genrsa -out stunnel.key 2048 > /dev/null 2>&1
  191. (echo "$(curl -sSL ipinfo.io > info && cat info | grep country | awk '{print $2}' | sed -e 's/[^a-z0-9 -]//ig')" ; echo "" ; echo "$(wget -qO- ifconfig.me):81" ; echo "" ; echo "" ; echo "" ; echo "@ChumoGH")|openssl req -new -key stunnel.key -x509 -days 1000 -out stunnel.crt > /dev/null 2>&1
  192. cat stunnel.crt stunnel.key > stunnel.pem
  193. mv stunnel.pem /etc/stunnel/
  194. ######-------
  195. sed -i 's/ENABLED=0/ENABLED=1/g' /etc/default/stunnel4
  196. service stunnel4 restart > /dev/null 2>&1
  197. rm -rf /root/stunnel.crt > /dev/null 2>&1
  198. rm -rf /root/stunnel.key > /dev/null 2>&1
  199. }
  200. install_python
  201. install_ssl
  202. msg -bar
  203. echo -e "${cor[4]} INSTALACION COMPLETA"
  204. msg -bar
  205. }
  206. unistall(){
  207. clear
  208. msg -bar
  209. msg -ama "DETENIENDO SERVICIOS SSL Y PYTHON"
  210. msg -bar
  211. service stunnel4 stop > /dev/null 2>&1
  212. apt-get purge stunnel4 -y &>/dev/null
  213. apt-get purge stunnel -y &>/dev/null
  214. kill -9 $(ps aux |grep -v grep |grep -w "python.py"|grep dmS|awk '{print $2}') &>/dev/null
  215. rm /etc/adm-lite/PySSL.log &>/dev/null
  216. clear
  217. msg -bar
  218. msg -verd "LOS SERVICIOS SE HAN DETENIDO"
  219. msg -bar
  220. }
  221. #
  222. certif(){
  223. msg -bar
  224. msg -tit
  225. echo -e "\e[1;37m ACONTINUACION ES TENER LISTO EL LINK DEL CERTIFICADO.zip\n VERIFICADO EN ZEROSSL, DESCARGALO Y SUBELO\n EN TU GITHUB O DROPBOX"
  226. echo -ne " Desea Continuar? [S/N]: "; read seg
  227. [[ $seg = @(n|N) ]] && msg -bar && return
  228. clear
  229. ####Cerrificado ssl/tls#####
  230. msg -bar
  231. echo -e "\e[1;33m👇 LINK DEL CERTIFICADO.zip 👇 \n \e[0m"
  232. echo -e "\e[1;36m LINK \e[37m: \e[34m\c "
  233. #extraer certificado.zip
  234. read linkd
  235. wget -O /etc/stunnel/certificado.zip $linkd &>/dev/null
  236. cd /etc/stunnel/
  237. unzip certificado.zip &>/dev/null
  238. cat private.key certificate.crt ca_bundle.crt > stunnel.pem
  239. rm -rf certificado.zip
  240. sed -i 's/ENABLED=0/ENABLED=1/g' /etc/default/stunnel4
  241. service stunnel restart > /dev/null 2>&1
  242. service stunnel4 restart &>/dev/null
  243. msg -bar
  244. echo -e "${cor[4]} CERTIFICADO INSTALADO CON EXITO \e[0m"
  245. msg -bar
  246. }
  247. certificadom(){
  248. if [ -f /etc/stunnel/stunnel.conf ]; then
  249. insapa2(){
  250. for pid in $(pgrep python);do
  251. kill $pid
  252. done
  253. for pid in $(pgrep apache2);do
  254. kill $pid
  255. done
  256. service dropbear stop
  257. echo -ne " \033[1;31m[ ! ] CONFIGURANDO APACHE" # Generate CA Config
  258. apt install apache2 -y
  259. echo "Listen 80 <IfModule ssl_module>
  260. Listen 443 </IfModule>
  261. <IfModule mod_gnutls.c>
  262. Listen 443 </IfModule>
  263. " > /etc/apache2/ports.conf
  264. service apache2 restart
  265. #) && echo -e "\033[1;32m [OK]" || echo -e "\033[1;31m [FAIL]"
  266. }
  267. clear
  268. msg -bar
  269. insapa2 &>/dev/null && echo -e " \e[1;33mAGREGANDO RECURSOS " | pv -qL 10
  270. msg -bar
  271. echo -e "\e[1;37m Verificar dominio \e[0m"
  272. msg -bar
  273. read -p " LLAVE: " keyy
  274. msg -bar
  275. read -p " DATOS: " dat2w
  276. mkdir -p /var/www/html/.well-known/pki-validation/
  277. datfr1=$(echo "$dat2w"|awk '{print $1}')
  278. datfr2=$(echo "$dat2w"|awk '{print $2}')
  279. datfr3=$(echo "$dat2w"|awk '{print $3}')
  280. echo -ne "${datfr1}\n${datfr2}\n${datfr3}" >/var/www/html/.well-known/pki-validation/$keyy.txt
  281. msg -bar
  282. echo -e "\e[1;37m VERIFIQUE EN LA PÁGINA ZEROSSL \e[0m"
  283. msg -bar
  284. read -p " ENTER PARA CONTINUAR"
  285. clear
  286. msg -bar
  287. echo -e "\e[1;33m👇 LINK DEL CERTIFICADO 👇 \n \e[0m"
  288. echo -e "\e[1;36m LINK \e[37m: \e[34m\c"
  289. read link
  290. incertis(){
  291. wget $link -O /etc/stunnel/certificado.zip
  292. cd /etc/stunnel/
  293. unzip certificado.zip
  294. cat private.key certificate.crt ca_bundle.crt > stunnel.pem
  295. service stunnel restart &>/dev/null
  296. service stunnel4 restart &>/dev/null
  297. }
  298. incertis &>/dev/null && echo -e " \e[1;33mEXTRAYENDO CERTIFICADO " | pv -qL 10
  299. msg -bar
  300. echo -e "${cor[4]} CERTIFICADO INSTALADO \e[0m"
  301. msg -bar
  302. for pid in $(pgrep apache2);do
  303. kill $pid
  304. done
  305. echo -ne " \033[1;31m[ ! ] RECONFIGURANDO APACHE" # Generate CA Config
  306. apt install apache2 -y &>/dev/null
  307. echo "Listen 81 <IfModule ssl_module>
  308. Listen 443 </IfModule>
  309. <IfModule mod_gnutls.c>
  310. Listen 443 </IfModule>
  311. " > /etc/apache2/ports.conf
  312. service apache2 restart &>/dev/null
  313. #) && echo -e "\033[1;32m [OK]" || echo -e "\033[1;31m [FAIL]"
  314. service dropbear start &>/dev/null
  315. service dropbear restart &>/dev/null
  316. for port in $(cat /etc/adm-lite/PortPD.log| grep -v "nobody" |cut -d' ' -f1); do
  317. PIDVRF3="$(ps aux|grep pydic-"$port" |grep -v grep|awk '{print $2}')"
  318. if [[ -z $PIDVRF3 ]]; then
  319. screen -dmS pydic-"$port" python /etc/adm-lite/PDirect.py "$port"
  320. else
  321. for pid in $(echo $PIDVRF3); do
  322. echo ""
  323. done
  324. fi
  325. done
  326. else
  327. msg -bar
  328. echo -e "${cor[3]} SSL/TLS NO INSTALADO \e[0m"
  329. msg -bar
  330. fi
  331. }
  332. clear
  333. if netstat -tnlp |grep 'stunnel4' &>/dev/null; then
  334. stunel="\e[32m[ ON ]"
  335. else
  336. stunel="\e[31m[ OFF ]"
  337. fi
  338. [[ -e /root/name ]] && figlet -p -f smslant < /root/name | lolcat || echo -e "\033[7;49;35m =====>>►► 🐲 New ChumoGH💥VPS 🐲 ◄◄<<===== \033[0m"
  339. msg -bar
  340. msg -bar3
  341. msg -tit
  342. echo -e "${cor[3]} INSTALADOR MULTI SSL By @ChumoGH"
  343. msg -bar
  344. echo -e "${cor[1]} Escoja la opcion deseada."
  345. msg -bar
  346. echo -e " \033[0;35m [\033[0;36m1\033[0;35m]\033[0;31m ➮ $(msg -azu "INICIAR || DETENER SSL") $stunel"
  347. echo -e " \033[0;35m [\033[0;36m2\033[0;35m]\033[0;31m ➮ $(msg -azu "AGREGAR + PUERTOS SSL")"
  348. echo -e " \033[0;35m [\033[0;36m3\033[0;35m]\033[0;31m ➮ $(msg -azu "SSL+WEBSOCKET DIRECTO")"
  349. echo -e " \033[0;35m [\033[0;36m4\033[0;35m]\033[0;31m ➮ $(msg -azu "\e[1;31mDETENER SERVICIO SSL+WEBSOCKET")"
  350. msg -bar
  351. echo -e " \033[0;35m [\033[0;36m5\033[0;35m]\033[0;31m ➮ $(msg -azu "CERTIFICADO SSL/TLS")"
  352. msg -bar
  353. echo -e " \033[0;35m [\033[0;36m0\033[0;35m]\033[0;31m ➮ $(msg -bra "\033[1;41m[ REGRESAR ]\e[0m")"
  354. msg -bar
  355. echo -e "\033[1;37mSelecione Una Opcion [0/5]: "
  356. msg -bar
  357. selection=$(selection_fun 5)
  358. case ${selection} in
  359. 1) msg -bar
  360. ssl_stunel ;;
  361. 2) msg -bar
  362. ssl_stunel_2
  363. sleep 3
  364. exit ;;
  365. 3) sslpython
  366. exit ;;
  367. 4) unistall ;;
  368. 5) clear
  369. msg -bar
  370. msg -ama "?CERTIFICADO SSL/TLS"
  371. msg -bar
  372. echo -e "${cor[4]} 1).-\033[1;37m CERTIFICADO ZIP DIRECTO"
  373. echo -e "${cor[4]} 2).-\033[1;37m CERTIFICADO MANUAL ZEROSSL "
  374. msg -bar
  375. echo -ne "\033[1;37mSelecione Una Opcion [0/2]: "
  376. msg -bar
  377. selection=$(selection_fun 2)
  378. case ${selection} in
  379. 0) return 0
  380. ;;
  381. 1) certif
  382. exit
  383. ;;
  384. 2) certificadom
  385. exit
  386. ;;
  387. esac
  388. ;;
  389. esac