Compare commits

..

No commits in common. "0884904c51e2d02742401c26a6fc524932ac292b" and "bd7349ed34c347dc7f8e57d38c881ed69a4f7fdf" have entirely different histories.

View File

@ -2,7 +2,7 @@
title: OpenVPN - Guía de instalación
description: Guía de instalación utilizada durante la realización de la práctica
published: true
date: 2022-06-01T00:42:03.432Z
date: 2022-06-01T00:17:28.154Z
tags: vpn, servidor
editor: markdown
dateCreated: 2022-05-31T21:04:15.280Z
@ -876,221 +876,18 @@ clear && cowsay -W 76 -f ovpn 'Solo nos queda reiniciar nuestro servidor y compr
sudo systemctl restart openvpn@server && sudo systemctl status openvpn@server
```
# Panel Títulos (⌘1)
```bash
clear && echo "" && echo "" && echo "" && echo && echo "" && echo "" && echo "" && echo "" && echo "" && echo "" && figlet -w 130 -f ansi-shadow 'OPENVPN' -c | lolcat && echo "" && echo "" && echo "" && figlet -w 200 -f ansi-shadow 'TOR' -c | lolcat -a -d 1 && echo "" && echo "" && echo "" && sleep 10 && clear
```
# Panel oVPN (⌘4)
```bash
clear && cowsay -W 76 -f ovpn 'Ya que todo el tráfico de los clientes se enruta a través de la VPN, ¿Y si les damos la posibilidad de que puedan conectar a una VPN que además enrute todo su tráfico a través de nodos TOR? Sus comunicaciones quederán ocultas y podremos escoger el nodo de salida, haciendo que tanto la dirección de los clientes como del servidor queden ocultas. Para ello, comenzaremos instalando TOR.'
```
```bash
sudo apt install tor -y
```
```bash
clear && cowsay -W 76 -f ovpn 'Editaremos el fichero de configuración de TOR.'
```
```bash
sudo nano /etc/tor/torrc # sudo vim /etc/tor/torrc
```
```bash
VirtualAddrNetwork 10.192.0.0/10
AutomapHostsOnResolve 1
AutomapHostsSuffixes .onion,.exit
DNSPort 10.10.20.1:53530
TransPort 10.10.20.1:9040
ExitNodes {us} StrictNodes 1
```
```bash
clear && cowsay -W 76 -f ovpn 'Configuraremos la resolución de dominios `onion` y `exit` y la resolución DNS y HTTP a la dirección IP que tendrá nuestra futura interfaz `tun`. Por otra parte, solicitaremos que el nodo de salida de TOR sea a través de un servidor de los Estados Unidos.'
```
```bash
clear && cowsay -W 76 -f ovpn 'Levantamos nuestro servicio, comprobamos que todo funciona correctamente y habilitamos el inicio automático.'
```
```bash
sudo systemctl restart tor.service && sudo systemctl status tor.service
sudo netstat -tulpen | grep tor
sudo systemctl enable tor.service
```
```bash
clear && cowsay -W 76 -f ovpn 'Ahora deberemos modificar nuestras Net Filter Tables para que en la cadena de pre enrutamiento el tráfico de nuestra segunda VPN se redirija hacia los nodos TOR, estableciendo así un proxy transparente que redirigirá todo el tráfico de los clientes que conecten en esta modalidad.'
```
```bash
#!/usr/sbin/nft -f
flush ruleset
define vpn_port=6174
define vpn_if=tun0
define outside_if=enp0s17
define vpn_subnet=10.10.10.0/24
define vpn_port_tor=6175
define vpn_if_tor=tun1
define vpn_subnet_tor=10.10.20.0/24
table inet filter {
chain input {
# allow OpenVPN connections to the Server
udp dport $vpn_port accept
# allow OpenVPN TOR connections to the Server
udp dport $vpn_port_tor accept
}
chain forward {
#Drop forwarded packets if they are not matched
type filter hook forward priority 0; policy drop;
# allow existing connections
ct state related,established accept
# allow packets from vpn interface
iifname $vpn_if oifname $outside_if accept
# allow packets from vpn interface
iifname $vpn_if_tor oifname $outside_if accept
}
chain output {
## Transproxy leak blocked:
# https://trac.torproject.org/projects/tor/wiki/doc/TransparentProxy#WARNING
ct state invalid counter drop
oifname != "lo" ip saddr != 127.0.0.1 ip daddr != 127.0.0.1 tcp flags & (fin|ack) == fin|ack counter drop
oifname != "lo" ip saddr != 127.0.0.1 ip daddr != 127.0.0.1 tcp flags & (rst|ack) == rst|ack counter drop
}
}
# create a ipv4 table only for NAT entries (you need both chains even if they're empty)
table ip nat {
chain postrouting {
type nat hook postrouting priority 100;
# enable NAT for VPN
iifname $vpn_if oifname $outside_if ip saddr $vpn_subnet masquerade
# enable NAT for TOR VPN
iifname $vpn_if_tor oifname $outside_if ip saddr $vpn_subnet_tor masquerade
}
chain prerouting {
# Transparent proxy to TOR
type nat hook prerouting priority 0;
iifname $vpn_if_tor ip saddr $vpn_subnet_tor udp dport 53 counter dnat to 10.10.20.1:53530
iifname $vpn_if_tor ip protocol tcp ip saddr $vpn_subnet_tor counter dnat to 10.10.20.1:9040
iifname $vpn_if_tor ip protocol udp ip saddr $vpn_subnet_tor counter dnat to 10.10.20.1:9040
}
}
```
```bash
clear && cowsay -W 76 -f ovpn 'Reiniciamos nuestro servicio y comprobamos que todo funciona correctamente.'
```
```bash
sudo systemctl restart nftables.service && sudo systemctl status nftables.service
```
```bash
clear && cowsay -W 76 -f ovpn 'Crearemos copias de nuestra configuración base para clientes, servidor y del script de generación de configuración y alteraremos los valores para nuestra VPN alternativa.'
```
```bash
cp ~/client-configs/base.conf ~/client-configs/base-tor.conf
cp ~/client-configs/make_config.sh ~/client-configs/make_config_tor.sh
sudo cp /etc/openvpn/server.conf /etc/openvpn/tor.conf
```
```bash
sudo nano /etc/openvpn/tor.conf # sudo vim /etc/openvpn/tor.conf
```
```bash
port 6175
dev tun1
server 10.10.20.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp-tor.txt
push "dhcp-option DNS 10.10.20.1"
push "dhcp-option DNS 1.1.1.1"
status /var/log/openvpn/openvpn-status-tor.log
log-append /var/log/openvpn/openvpn-tor.log
```
```bash
nano ~/client-configs/base-tor.conf # vim ~/client-configs/base-tor.conf
```
```bash
remote ovpn.bastionado.es 6175
```
```bash
nano ~/client-configs/make_config_tor.sh # vim ~/client-configs/make_config_tor.sh
```
```bash
#!/bin/bash
# First argument: Client identifier
KEY_DIR=/home/ovpn/client-configs/keys
OUTPUT_DIR=/home/ovpn/client-configs/files
BASE_CONFIG=/home/ovpn/client-configs/base-tor.conf
cat ${BASE_CONFIG} \
<(echo -e '<ca>') \
${KEY_DIR}/ca.crt \
<(echo -e '</ca>\n<cert>') \
${KEY_DIR}/${1}.crt \
<(echo -e '</cert>\n<key>') \
${KEY_DIR}/${1}.key \
<(echo -e '</key>\n<tls-auth>') \
${KEY_DIR}/ta.key \
<(echo -e '</tls-auth>') \
> ${OUTPUT_DIR}/bastionado-tor-${1}.ovpn
```
```bash
clear && cowsay -W 76 -f ovpn 'Con todo configurado, es el momento de levantar nuestro servicio, comprobando también que se ha creado la interfaz virtual `tun1`.'
```
```bash
sudo systemctl restart openvpn@tor && sudo systemctl status openvpn@tor
ip addr show tun1
```
```bash
clear && cowsay -W 76 -f ovpn 'Si todo esto es correcto podemos habilitar el servicio en inicio automático.'
```
```bash
sudo systemctl enable openvpn@tor
```