Compare commits
No commits in common. "0884904c51e2d02742401c26a6fc524932ac292b" and "bd7349ed34c347dc7f8e57d38c881ed69a4f7fdf" have entirely different histories.
0884904c51
...
bd7349ed34
@ -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
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user