595 lines
18 KiB
Bash
595 lines
18 KiB
Bash
#!/bin/bash
|
|
#19/12/2019
|
|
clear&&clear
|
|
enter () {
|
|
read -p "Enter para Continuar"
|
|
}
|
|
# Funcoes Globais
|
|
msg () {
|
|
local colors="/etc/new-adm-color"
|
|
if [[ ! -e $colors ]]; then
|
|
COLOR[0]='\033[1;37m' #BRAN='\033[1;37m'
|
|
COLOR[1]='\e[31m' #VERMELHO='\e[31m'
|
|
COLOR[2]='\e[32m' #VERDE='\e[32m'
|
|
COLOR[3]='\e[33m' #AMARELO='\e[33m'
|
|
COLOR[4]='\e[34m' #AZUL='\e[34m'
|
|
COLOR[5]='\e[91m' #MAGENTA='\e[35m'
|
|
COLOR[6]='\033[1;97m' #MAG='\033[1;36m'
|
|
else
|
|
local COL=0
|
|
for number in $(cat $colors); do
|
|
case $number in
|
|
1) COLOR[$COL]='\033[1;37m';;
|
|
2) COLOR[$COL]='\e[31m';;
|
|
3) COLOR[$COL]='\e[32m';;
|
|
4) COLOR[$COL]='\e[33m';;
|
|
5) COLOR[$COL]='\e[34m';;
|
|
6) COLOR[$COL]='\033[0;35m';;
|
|
7) COLOR[$COL]='\033[1;36m';;
|
|
esac
|
|
let COL++
|
|
done
|
|
fi
|
|
NEGRITO='\e[1m'
|
|
SEMCOR='\e[0m'
|
|
case $1 in
|
|
-ne) cor="${COLOR[1]}${NEGRITO}" && echo -ne "${cor}${2}${SEMCOR}";;
|
|
-ama) cor="${COLOR[3]}${NEGRITO}" && echo -e "${cor}${2}${SEMCOR}";;
|
|
-verm) cor="${COLOR[3]}${NEGRITO}[!] ${COLOR[1]}" && echo -e "${cor}${2}${SEMCOR}";;
|
|
-verm2) cor="${COLOR[1]}${NEGRITO}" && echo -e "${cor}${2}${SEMCOR}";;
|
|
-azu) cor="${COLOR[6]}${NEGRITO}" && echo -e "${cor}${2}${SEMCOR}";;
|
|
-verd) cor="${COLOR[2]}${NEGRITO}" && echo -e "${cor}${2}${SEMCOR}";;
|
|
-bra) cor="${COLOR[0]}${SEMCOR}" && echo -e "${cor}${2}${SEMCOR}";;
|
|
"-bar2"|"-bar") cor="${COLOR[6]}•••••••••••••••••••••••••••••••••••••••••••••••••" && echo -e "${SEMCOR}${cor}${SEMCOR}";;
|
|
esac
|
|
}
|
|
|
|
mportas () {
|
|
unset portas
|
|
portas_var=$(lsof -V -i tcp -P -n | grep -v "ESTABLISHED" |grep -v "COMMAND" | grep "LISTEN")
|
|
while read port; do
|
|
var1=$(echo $port | awk '{print $1}') && var2=$(echo $port | awk '{print $9}' | awk -F ":" '{print $2}')
|
|
[[ "$(echo -e $portas|grep "$var1 $var2")" ]] || portas+="$var1 $var2\n"
|
|
done <<< "$portas_var"
|
|
i=1
|
|
echo -e "$portas"
|
|
}
|
|
|
|
print_center(){
|
|
local x
|
|
local y
|
|
text="$*"
|
|
x=$(( ($(tput cols) - ${#text}) / 2))
|
|
echo -ne "\E[6n";read -sdR y; y=$(echo -ne "${y#*[}" | cut -d';' -f1)
|
|
echo -ne "\033[${y};${x}f$*"
|
|
echo ""
|
|
}
|
|
|
|
msg -bar
|
|
|
|
# MENU FLUTUANTE
|
|
menu_func () {
|
|
local options=${#@}
|
|
local array
|
|
for((num=1; num<=$options; num++)); do
|
|
echo -ne " $(msg -verd "[$num]") $(msg -verm2 "➮") "
|
|
array=(${!num})
|
|
case ${array[0]} in
|
|
"-vd") msg -verd "\033[1;33m[!]\033[1;32m ${array[@]:1}" | sed ':a;N;$!ba;s/\n/ /g';;
|
|
"-vm") msg -verm2 "\033[1;33m[!]\033[1;31m ${array[@]:1}" | sed ':a;N;$!ba;s/\n/ /g';;
|
|
"-fi") msg -azu "${array[@]:2} ${array[1]}" | sed ':a;N;$!ba;s/\n/ /g';;
|
|
*) msg -azu "${array[@]}" | sed ':a;N;$!ba;s/\n/ /g';;
|
|
esac
|
|
done
|
|
}
|
|
|
|
|
|
meu_ip () {
|
|
[[ -e /etc/catIPlocal && -e /etc/catIP ]] && {
|
|
MEU_IP=$(cat < /etc/catIPlocal)
|
|
MEU_IP2=$(cat < /etc/catIP)
|
|
[[ "$MEU_IP" != "$MEU_IP2" ]] && IP="$MEU_IP2" || IP="$MEU_IP"
|
|
} || {
|
|
MEU_IP=$(ip addr | grep 'inet' | grep -v inet6 | grep -vE '127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -o -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1) && echo $MEU_IP > /etc/catIPlocal
|
|
MEU_IP2=$(wget -qO- ipv4.icanhazip.com) && echo $MEU_IP2 > /etc/catIP
|
|
[[ "$MEU_IP" != "$MEU_IP2" ]] && IP="$MEU_IP2" || IP="$MEU_IP"
|
|
}
|
|
}
|
|
|
|
# Detect Debian users running the script with "sh" instead of bash
|
|
if readlink /proc/$$/exe | grep -q "dash"; then
|
|
print_center "Este script se utiliza con bash"
|
|
enter
|
|
fi
|
|
|
|
if [[ "$EUID" -ne 0 ]]; then
|
|
print_center "Sorry, solo funciona como root"
|
|
enter
|
|
fi
|
|
|
|
if [[ ! -e /dev/net/tun ]]; then
|
|
print_center "El TUN device no esta disponible"
|
|
print_center "Necesitas habilitar TUN antes de usar este script"
|
|
enter
|
|
fi
|
|
|
|
if [[ -e /etc/debian_version ]]; then
|
|
OS=debian
|
|
GROUPNAME=nogroup
|
|
RCLOCAL='/etc/rc.local'
|
|
elif [[ -e /etc/centos-release || -e /etc/redhat-release ]]; then
|
|
OS=centos
|
|
GROUPNAME=nobody
|
|
RCLOCAL='/etc/rc.d/rc.local'
|
|
else
|
|
print_center "Sistema no compatible para este script"
|
|
enter
|
|
fi
|
|
del(){
|
|
for (( i = 0; i < $1; i++ )); do
|
|
tput cuu1 && tput dl1
|
|
done
|
|
}
|
|
|
|
agrega_dns(){
|
|
msg -ama " Escriba el HOST DNS que desea Agregar"
|
|
read -p " [NewDNS]: " SDNS
|
|
cat /etc/hosts|grep -v "$SDNS" > /etc/hosts.bak && mv -f /etc/hosts.bak /etc/hosts
|
|
if [[ -e /etc/opendns ]]; then
|
|
cat /etc/opendns > /tmp/opnbak
|
|
mv -f /tmp/opnbak /etc/opendns
|
|
echo "$SDNS" >> /etc/opendns
|
|
else
|
|
echo "$SDNS" > /etc/opendns
|
|
fi
|
|
[[ -z $NEWDNS ]] && NEWDNS="$SDNS" || NEWDNS="$NEWDNS $SDNS"
|
|
unset SDNS
|
|
}
|
|
|
|
dns_fun(){
|
|
case $1 in
|
|
1)
|
|
if grep -q "127.0.0.53" "/etc/resolv.conf"; then
|
|
RESOLVCONF='/run/systemd/resolve/resolv.conf'
|
|
else
|
|
RESOLVCONF='/etc/resolv.conf'
|
|
fi
|
|
grep -v '#' $RESOLVCONF | grep 'nameserver' | grep -E -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | while read line; do
|
|
echo "push \"dhcp-option DNS $line\"" >> /etc/openvpn/server.conf
|
|
done;;
|
|
2) #cloudflare
|
|
echo 'push "dhcp-option DNS 1.1.1.1"' >> /etc/openvpn/server.conf
|
|
echo 'push "dhcp-option DNS 1.0.0.1"' >> /etc/openvpn/server.conf;;
|
|
3) #google
|
|
echo 'push "dhcp-option DNS 8.8.8.8"' >> /etc/openvpn/server.conf
|
|
echo 'push "dhcp-option DNS 8.8.4.4"' >> /etc/openvpn/server.conf;;
|
|
4) #OpenDNS
|
|
echo 'push "dhcp-option DNS 208.67.222.222"' >> /etc/openvpn/server.conf
|
|
echo 'push "dhcp-option DNS 208.67.220.220"' >> /etc/openvpn/server.conf;;
|
|
5) #Verisign
|
|
echo 'push "dhcp-option DNS 64.6.64.6"' >> /etc/openvpn/server.conf
|
|
echo 'push "dhcp-option DNS 64.6.65.6"' >> /etc/openvpn/server.conf;;
|
|
6) #Quad9
|
|
echo 'push "dhcp-option DNS 9.9.9.9"' >> /etc/openvpn/server.conf
|
|
echo 'push "dhcp-option DNS 149.112.112.112"' >> /etc/openvpn/server.conf;;
|
|
7) #UncensoredDNS
|
|
echo 'push "dhcp-option DNS 91.239.100.100"' >> /etc/openvpn/server.conf
|
|
echo 'push "dhcp-option DNS 89.233.43.71"' >> /etc/openvpn/server.conf;;
|
|
esac
|
|
}
|
|
|
|
meu_ip
|
|
|
|
|
|
|
|
|
|
instala_ovpn(){
|
|
clear
|
|
msg -bar
|
|
print_center "INSTALADOR DE OPENVPN"
|
|
msg -bar
|
|
# OpenVPN setup and first user creation
|
|
msg -ama " Algunos ajustes son necesario para conf OpenVPN"
|
|
msg -bar
|
|
# Autodetect IP address and pre-fill for the user
|
|
IP=$(ip addr | grep 'inet' | grep -v inet6 | grep -vE '127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1)
|
|
if echo "$IP" | grep -qE '^(10\.|172\.1[6789]\.|172\.2[0-9]\.|172\.3[01]\.|192\.168)'; then
|
|
PUBLICIP=$(wget -qO- ipv4.icanhazip.com)
|
|
fi
|
|
msg -ama " Seleccione el protocolo de conexiones OpenVPN"
|
|
msg -bar
|
|
menu_func "UDP" "TCP"
|
|
msg -bar
|
|
while [[ -z $PROTOCOL ]]; do
|
|
msg -ne " opcion: "
|
|
read PROTOCOL
|
|
case $PROTOCOL in
|
|
1) PROTOCOL=udp; del "6"; msg -nazu " PROTOCOLO: "; msg -verd "UDP";;
|
|
2) PROTOCOL=tcp; del "6"; msg -nazu " PROTOCOLO: "; msg -verd "TCP";;
|
|
*) tput cuu1 && tput dl1; print_center -verm2 "selecciona una opcion entre 1 y 2"; sleep 2s; tput cuu1 && tput dl1; unset PROTOCOL;;
|
|
esac
|
|
done
|
|
msg -bar
|
|
print_center "Ingresa un puerto OpenVPN (Default 1194)"
|
|
msg -bar
|
|
while [[ -z $PORT ]]; do
|
|
msg -ne " Puerto: "
|
|
read PORT
|
|
if [[ -z $PORT ]]; then
|
|
PORT="1194"
|
|
elif [[ ! $PORT =~ $numero ]]; then
|
|
tput cuu1 && tput dl1
|
|
print_center -verm2 "ingresa solo numeros"
|
|
sleep 2s
|
|
tput cuu1 && tput dl1
|
|
unset PORT
|
|
fi
|
|
|
|
[[ $(mportas|grep -w "${PORT}") ]] && {
|
|
tput cuu1 && tput dl1
|
|
print_center -verm2 "Puerto en uso"
|
|
sleep 2s
|
|
tput cuu1 && tput dl1
|
|
unset PORT
|
|
}
|
|
done
|
|
del "3"
|
|
msg -nazu " PUERTO: "; msg -verd "$PORT"
|
|
msg -bar
|
|
print_center "Seleccione DNS (default VPS)"
|
|
msg -bar
|
|
menu_func "DNS del Sistema" "Cloudflare" "Google" "OpenDNS" "Verisign" "Quad9" "UncensoredDNS"
|
|
msg -bar
|
|
while [[ -z $DNS ]]; do
|
|
msg -ne " opcion: "
|
|
read DNS
|
|
if [[ -z $DNS ]]; then
|
|
DNS="1"
|
|
elif [[ ! $DNS =~ $numero ]]; then
|
|
tput cuu1 && tput dl1
|
|
print_center -verm2 "ingresa solo numeros"
|
|
sleep 2s
|
|
tput cuu1 && tput dl1
|
|
unset DNS
|
|
elif [[ $DNS != @([1-7]) ]]; then
|
|
tput cuu1 && tput dl1
|
|
print_center "solo numeros entre 1 y 7"
|
|
sleep 2s
|
|
tput cuu1 && tput dl1
|
|
unset DNS
|
|
fi
|
|
done
|
|
case $DNS in
|
|
1) P_DNS="DNS del Sistema";;
|
|
2) P_DNS="Cloudflare";;
|
|
3) P_DNS="Google";;
|
|
4) P_DNS="OpenDNS";;
|
|
5) P_DNS="Verisign";;
|
|
6) P_DNS="Quad9";;
|
|
7) P_DNS="UncensoredDNS";;
|
|
esac
|
|
del "11"
|
|
msg -nazu " DNS: "; msg -verd "$P_DNS"
|
|
msg -bar
|
|
print_center " Seleccione la codificacion para el canal de datos"
|
|
msg -bar
|
|
menu_func "AES-128-CBC" "AES-192-CBC" "AES-256-CBC" "CAMELLIA-128-CBC" "CAMELLIA-192-CBC" "CAMELLIA-256-CBC" "SEED-CBC" "NONE"
|
|
msg -bar
|
|
while [[ -z $CIPHER ]]; do
|
|
msg -ne " opcion: "
|
|
read CIPHER
|
|
if [[ -z $CIPHER ]]; then
|
|
CIPHER="1"
|
|
elif [[ ! $CIPHER =~ $numero ]]; then
|
|
tput cuu1 && tput dl1
|
|
print_center -verm2 "ingresa solo numeros"
|
|
sleep 2s
|
|
tput cuu1 && tput dl1
|
|
unset CIPHER
|
|
elif [[ $CIPHER != @([1-8]) ]]; then
|
|
tput cuu1 && tput dl1
|
|
print_center "solo numeros entre 1 y 8"
|
|
sleep 2s
|
|
tput cuu1 && tput dl1
|
|
unset CIPHER
|
|
fi
|
|
done
|
|
case $CIPHER in
|
|
1) CIPHER="cipher AES-128-CBC";;
|
|
2) CIPHER="cipher AES-192-CBC";;
|
|
3) CIPHER="cipher AES-256-CBC";;
|
|
4) CIPHER="cipher CAMELLIA-128-CBC";;
|
|
5) CIPHER="cipher CAMELLIA-192-CBC";;
|
|
6) CIPHER="cipher CAMELLIA-256-CBC";;
|
|
7) CIPHER="cipher SEED-CBC";;
|
|
8) CIPHER="cipher none";;
|
|
esac
|
|
del "12"
|
|
codi=$(echo $CIPHER|awk -F ' ' '{print $2}')
|
|
msg -nazu " CODIFICACION: "; msg -verd "$codi"
|
|
msg -bar
|
|
msg -ama " Estamos listos para configurar su servidor OpenVPN"
|
|
enter
|
|
if [[ "$OS" = 'debian' ]]; then
|
|
apt-get update
|
|
apt-get install openvpn iptables openssl ca-certificates -y
|
|
else
|
|
#
|
|
yum install epel-release -y
|
|
yum install openvpn iptables openssl ca-certificates -y
|
|
fi
|
|
# Get easy-rsa
|
|
EASYRSAURL='https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.7/EasyRSA-3.0.7.tgz'
|
|
wget -O ~/easyrsa.tgz "$EASYRSAURL" 2>/dev/null || curl -Lo ~/easyrsa.tgz "$EASYRSAURL"
|
|
tar xzf ~/easyrsa.tgz -C ~/
|
|
mv ~/EasyRSA-3.0.7/ /etc/openvpn/
|
|
mv /etc/openvpn/EasyRSA-3.0.7/ /etc/openvpn/easy-rsa/
|
|
chown -R root:root /etc/openvpn/easy-rsa/
|
|
rm -f ~/easyrsa.tgz
|
|
cd /etc/openvpn/easy-rsa/
|
|
#
|
|
./easyrsa init-pki
|
|
./easyrsa --batch build-ca nopass
|
|
./easyrsa gen-dh
|
|
./easyrsa build-server-full server nopass
|
|
EASYRSA_CRL_DAYS=3650 ./easyrsa gen-crl
|
|
#
|
|
cp pki/ca.crt pki/private/ca.key pki/dh.pem pki/issued/server.crt pki/private/server.key pki/crl.pem /etc/openvpn
|
|
#
|
|
chown nobody:$GROUPNAME /etc/openvpn/crl.pem
|
|
#
|
|
openvpn --genkey --secret /etc/openvpn/ta.key
|
|
#
|
|
echo "port $PORT
|
|
proto $PROTOCOL
|
|
dev tun
|
|
sndbuf 0
|
|
rcvbuf 0
|
|
ca ca.crt
|
|
cert server.crt
|
|
key server.key
|
|
dh dh.pem
|
|
auth SHA512
|
|
tls-auth ta.key 0
|
|
topology subnet
|
|
server 10.8.0.0 255.255.255.0
|
|
ifconfig-pool-persist ipp.txt" > /etc/openvpn/server.conf
|
|
echo 'push "redirect-gateway def1 bypass-dhcp"' >> /etc/openvpn/server.conf
|
|
# DNS
|
|
|
|
dns_fun "$DNS"
|
|
|
|
echo "keepalive 10 120
|
|
${CIPHER}
|
|
user nobody
|
|
group $GROUPNAME
|
|
persist-key
|
|
persist-tun
|
|
status openvpn-status.log
|
|
verb 3
|
|
crl-verify crl.pem" >> /etc/openvpn/server.conf
|
|
updatedb
|
|
PLUGIN=$(locate openvpn-plugin-auth-pam.so | head -1)
|
|
[[ ! -z $(echo ${PLUGIN}) ]] && {
|
|
echo "client-to-client
|
|
client-cert-not-required
|
|
username-as-common-name
|
|
plugin $PLUGIN login" >> /etc/openvpn/server.conf
|
|
}
|
|
#
|
|
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/30-openvpn-forward.conf
|
|
#
|
|
echo 1 > /proc/sys/net/ipv4/ip_forward
|
|
if pgrep firewalld; then
|
|
#
|
|
#
|
|
#
|
|
#
|
|
firewall-cmd --zone=public --add-port=$PORT/$PROTOCOL
|
|
firewall-cmd --zone=trusted --add-source=10.8.0.0/24
|
|
firewall-cmd --permanent --zone=public --add-port=$PORT/$PROTOCOL
|
|
firewall-cmd --permanent --zone=trusted --add-source=10.8.0.0/24
|
|
#
|
|
firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to $IP
|
|
firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to $IP
|
|
else
|
|
#
|
|
if [[ "$OS" = 'debian' && ! -e $RCLOCAL ]]; then
|
|
echo '#!/bin/sh -e
|
|
exit 0' > $RCLOCAL
|
|
fi
|
|
chmod +x $RCLOCAL
|
|
#
|
|
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to $IP
|
|
sed -i "1 a\iptables -t nat -A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to $IP" $RCLOCAL
|
|
if iptables -L -n | grep -qE '^(REJECT|DROP)'; then
|
|
#
|
|
#
|
|
#
|
|
iptables -I INPUT -p $PROTOCOL --dport $PORT -j ACCEPT
|
|
iptables -I FORWARD -s 10.8.0.0/24 -j ACCEPT
|
|
iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
|
|
sed -i "1 a\iptables -I INPUT -p $PROTOCOL --dport $PORT -j ACCEPT" $RCLOCAL
|
|
sed -i "1 a\iptables -I FORWARD -s 10.8.0.0/24 -j ACCEPT" $RCLOCAL
|
|
sed -i "1 a\iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT" $RCLOCAL
|
|
fi
|
|
fi
|
|
#
|
|
if sestatus 2>/dev/null | grep "Current mode" | grep -q "enforcing" && [[ "$PORT" != '1194' ]]; then
|
|
#
|
|
if ! hash semanage 2>/dev/null; then
|
|
yum install policycoreutils-python -y
|
|
fi
|
|
semanage port -a -t openvpn_port_t -p $PROTOCOL $PORT
|
|
fi
|
|
#
|
|
if [[ "$OS" = 'debian' ]]; then
|
|
#
|
|
if pgrep systemd-journal; then
|
|
systemctl restart openvpn@server.service
|
|
else
|
|
/etc/init.d/openvpn restart
|
|
fi
|
|
else
|
|
if pgrep systemd-journal; then
|
|
systemctl restart openvpn@server.service
|
|
systemctl enable openvpn@server.service
|
|
else
|
|
service openvpn restart
|
|
chkconfig openvpn on
|
|
fi
|
|
fi
|
|
#
|
|
if [[ "$PUBLICIP" != "" ]]; then
|
|
IP=$PUBLICIP
|
|
fi
|
|
#
|
|
echo "# OVPN_ACCESS_SERVER_PROFILE=ChumoGH_ADM
|
|
client
|
|
dev tun
|
|
proto $PROTOCOL
|
|
sndbuf 0
|
|
rcvbuf 0
|
|
remote $IP $PORT
|
|
resolv-retry infinite
|
|
nobind
|
|
persist-key
|
|
persist-tun
|
|
remote-cert-tls server
|
|
auth SHA512
|
|
${CIPHER}
|
|
setenv opt block-outside-dns
|
|
key-direction 1
|
|
verb 3
|
|
auth-user-pass" > /etc/openvpn/client-common.txt
|
|
clear
|
|
msg -bar
|
|
print_center -verd "Configuracion Finalizada!"
|
|
msg -bar
|
|
print_center " Crear un usuario SSH para generar el (.ovpn)!"
|
|
enter
|
|
}
|
|
|
|
edit_ovpn_host(){
|
|
msg -ama " CONFIGURACION HOST DNS OPENVPN"
|
|
msg -bar
|
|
while [[ $DDNS != @(n|N) ]]; do
|
|
echo -ne "\033[1;33m"
|
|
read -p " Agregar host [S/N]: " -e -i n DDNS
|
|
[[ $DDNS = @(s|S|y|Y) ]] && agrega_dns
|
|
done
|
|
[[ ! -z $NEWDNS ]] && sed -i "/127.0.0.1[[:blank:]]\+localhost/a 127.0.0.1 $NEWDNS" /etc/hosts
|
|
msg -bar
|
|
msg -ama " Es Necesario el Reboot del Servidor Para"
|
|
msg -ama " Para que las configuraciones sean efectudas"
|
|
enter
|
|
}
|
|
|
|
fun_openvpn(){
|
|
[[ -e /etc/openvpn/server.conf ]] && {
|
|
unset OPENBAR
|
|
[[ $(mportas|grep -w "openvpn") ]] && OPENBAR="\033[1;32m [ONLINE]" || OPENBAR="\033[1;31m [OFFLINE]"
|
|
clear
|
|
msg -bar
|
|
echo -e "CONFIGURACION OPENVPN"
|
|
msg -bar
|
|
echo -e " \033[0;35m[\033[0;36m1\033[0;35m] \033[0;34m➮\033[0;33m $(msg -verd 'INICIAR O PARAR OPENVPN') $OPENBAR"
|
|
echo -e " \033[0;35m[\033[0;36m2\033[0;35m] \033[0;34m➮\033[0;33m EDITAR CONFIGURACION CLIENTE $(msg -ama "(MEDIANTE NANO)")"
|
|
echo -e " \033[0;35m[\033[0;36m3\033[0;35m] \033[0;34m➮\033[0;33m EDITAR CONFIGURACION SERVIDOR $(msg -ama "(MEDIANTE NANO)")"
|
|
echo -e " \033[0;35m[\033[0;36m4\033[0;35m] \033[0;34m➮\033[0;33m CAMBIAR HOST DE OPENVPN"
|
|
echo -e " \033[0;35m[\033[0;36m5\033[0;35m] \033[0;34m➮\033[0;33m $(msg -verm2 "DESINSTALAR OPENVPN")"
|
|
msg -bar
|
|
while [[ $xption != @([0-5]) ]]; do
|
|
echo -ne "\033[1;33m Opcion : " && read xption
|
|
tput cuu1 && tput dl1
|
|
done
|
|
case $xption in
|
|
5)
|
|
clear
|
|
msg -bar
|
|
echo -ne "\033[1;97m"
|
|
read -p "QUIERES DESINTALAR OPENVPN? [Y/N]: " -e REMOVE
|
|
msg -bar
|
|
if [[ "$REMOVE" = 'y' || "$REMOVE" = 'Y' ]]; then
|
|
PORT=$(grep '^port ' /etc/openvpn/server.conf | cut -d " " -f 2)
|
|
PROTOCOL=$(grep '^proto ' /etc/openvpn/server.conf | cut -d " " -f 2)
|
|
if pgrep firewalld; then
|
|
IP=$(firewall-cmd --direct --get-rules ipv4 nat POSTROUTING | grep '\-s 10.8.0.0/24 '"'"'!'"'"' -d 10.8.0.0/24 -j SNAT --to ' | cut -d " " -f 10)
|
|
#
|
|
firewall-cmd --zone=public --remove-port=$PORT/$PROTOCOL
|
|
firewall-cmd --zone=trusted --remove-source=10.8.0.0/24
|
|
firewall-cmd --permanent --zone=public --remove-port=$PORT/$PROTOCOL
|
|
firewall-cmd --permanent --zone=trusted --remove-source=10.8.0.0/24
|
|
firewall-cmd --direct --remove-rule ipv4 nat POSTROUTING 0 -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to $IP
|
|
firewall-cmd --permanent --direct --remove-rule ipv4 nat POSTROUTING 0 -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to $IP
|
|
else
|
|
IP=$(grep 'iptables -t nat -A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to ' $RCLOCAL | cut -d " " -f 14)
|
|
iptables -t nat -D POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to $IP
|
|
sed -i '/iptables -t nat -A POSTROUTING -s 10.8.0.0\/24 ! -d 10.8.0.0\/24 -j SNAT --to /d' $RCLOCAL
|
|
if iptables -L -n | grep -qE '^ACCEPT'; then
|
|
iptables -D INPUT -p $PROTOCOL --dport $PORT -j ACCEPT
|
|
iptables -D FORWARD -s 10.8.0.0/24 -j ACCEPT
|
|
iptables -D FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
|
|
sed -i "/iptables -I INPUT -p $PROTOCOL --dport $PORT -j ACCEPT/d" $RCLOCAL
|
|
sed -i "/iptables -I FORWARD -s 10.8.0.0\/24 -j ACCEPT/d" $RCLOCAL
|
|
sed -i "/iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT/d" $RCLOCAL
|
|
fi
|
|
fi
|
|
if sestatus 2>/dev/null | grep "Current mode" | grep -q "enforcing" && [[ "$PORT" != '1194' ]]; then
|
|
semanage port -d -t openvpn_port_t -p $PROTOCOL $PORT
|
|
fi
|
|
if [[ "$OS" = 'debian' ]]; then
|
|
apt-get remove --purge -y openvpn
|
|
else
|
|
yum remove openvpn -y
|
|
fi
|
|
rm -rf /etc/openvpn
|
|
rm -f /etc/sysctl.d/30-openvpn-forward.conf
|
|
clear
|
|
msg -bar
|
|
print_center -verd "OpenVPN removido!"
|
|
enter
|
|
else
|
|
clear
|
|
msg -bar
|
|
print_center -verm2 "Desinstalacion abortada!"
|
|
enter
|
|
fi
|
|
return 1;;
|
|
2)
|
|
nano /etc/openvpn/client-common.txt;;
|
|
3)
|
|
nano /etc/openvpn/server.conf;;
|
|
4)
|
|
edit_ovpn_host;;
|
|
1)
|
|
[[ $(mportas|grep -w openvpn) ]] && {
|
|
/etc/init.d/openvpn stop > /dev/null 2>&1
|
|
killall openvpn &>/dev/null
|
|
systemctl stop openvpn@server.service &>/dev/null
|
|
service openvpn stop &>/dev/null
|
|
#ps x |grep openvpn |grep -v grep|awk '{print $1}' | while read pid; do kill -9 $pid; done
|
|
} || {
|
|
cd /etc/openvpn
|
|
screen -dmS ovpnscr openvpn --config "server.conf" > /dev/null 2>&1
|
|
touch /etc/openvpn/openvpn-status.log &
|
|
cd $HOME
|
|
}
|
|
print_center "Procedimiento con Exito"
|
|
enter;;
|
|
0)
|
|
return 1;;
|
|
esac
|
|
return 0
|
|
}
|
|
[[ -e /etc/squid/squid.conf ]] && instala_ovpn && return 0
|
|
[[ -e /etc/squid3/squid.conf ]] && instala_ovpn && return 0
|
|
instala_ovpn || return 1
|
|
}
|
|
|
|
while [[ ! $rec = 1 ]]; do
|
|
fun_openvpn
|
|
rec="$?"
|
|
unset xption
|
|
done
|
|
exit |