docs: update vpn/openvpn/guide

This commit is contained in:
José Antonio Yáñez Jiménez 2022-05-31 22:52:03 +00:00 committed by José Antonio Yáñez Jiménez
parent b6b33debbd
commit 855b540cdd

View File

@ -2,7 +2,7 @@
title: OpenVPN - Guía de instalación title: OpenVPN - Guía de instalación
description: Guía de instalación utilizada durante la realización de la práctica description: Guía de instalación utilizada durante la realización de la práctica
published: true published: true
date: 2022-05-31T22:00:59.968Z date: 2022-05-31T22:52:00.260Z
tags: vpn, servidor tags: vpn, servidor
editor: markdown editor: markdown
dateCreated: 2022-05-31T21:04:15.280Z dateCreated: 2022-05-31T21:04:15.280Z
@ -208,7 +208,6 @@ scp pki/issued/ovpn.crt ovpn@ovpn.bastionado.es:/tmp
clear && echo "" && echo "" && echo "" && echo && echo "" && echo "" && echo "" && echo "" && echo "" && echo "" && figlet -w 170 -f ansi-shadow 'INSTALACION DE' -c | lolcat && echo "" && echo "" && echo "" && figlet -w 220 -f ansi-shadow 'OPEN VPN' -c | lolcat -a -d 1 && echo "" && echo "" && echo "" && sleep 10 && clear clear && echo "" && echo "" && echo "" && echo && echo "" && echo "" && echo "" && echo "" && echo "" && echo "" && figlet -w 170 -f ansi-shadow 'INSTALACION DE' -c | lolcat && echo "" && echo "" && echo "" && figlet -w 220 -f ansi-shadow 'OPEN VPN' -c | lolcat -a -d 1 && echo "" && echo "" && echo "" && sleep 10 && clear
``` ```
# Panel oVPN (⌘4) # Panel oVPN (⌘4)
```bash ```bash
@ -284,17 +283,33 @@ sudo mv ~/EasyRSA/ta.key /etc/openvpn/
sudo mv ~/EasyRSA/pki/dh.pem /etc/openvpn/ sudo mv ~/EasyRSA/pki/dh.pem /etc/openvpn/
``` ```
# Panel Títulos (⌘1)
```bash
clear && echo "" && echo "" && echo "" && echo && echo "" && echo "" && echo "" && echo "" && echo "" && echo "" && figlet -w 170 -f ansi-shadow 'CERTIFICADOS DE' -c | lolcat && echo "" && echo "" && echo "" && figlet -w 220 -f ansi-shadow 'CLIENTE' -c | lolcat -a -d 1 && echo "" && echo "" && echo "" && sleep 10 && clear
```
-'Certificados cliente' # Panel oVPN (⌘4)
clear && cowsay -W 76 -f ovpn 'Cona la estructura propuesta las solicitudes de certificados cliente serán generadas desde el servidor de OpenVPN oVPN y firmadas desde la SubCA Signer, de tal modo que, posteriormente, el cliente simplemente recibirá un fichero de configuración para conectar a la VPN junto con sus certificados sin tener que estar intercambiando certificados inicialmente si fuera el propio cliente el que realizara la solicitud de creación de certificado.'
clear && cowsay -W 76 -f ovpn 'Crearemos un directorio en nuestra VPN para almacenar las configuraciones de cliente y restringiremos los permisos, después, volvemos a la ruta EasyRSA para generar la solicitud de certificado cliente, copiamos la clave privada generada a nuestro directorio de configuraciones Cliente' ```bash
clear && cowsay -W 76 -f ovpn 'Con la estructura propuesta las solicitudes de certificados cliente serán generadas desde el servidor de OpenVPN `oVPN` y firmadas desde la SubCA `Signer`, de tal modo que, posteriormente, el cliente simplemente recibirá un fichero de configuración para conectar a la VPN junto con sus certificados sin tener que estar intercambiando certificados inicialmente si fuera el propio cliente el que realizara la solicitud de creación de certificado.'
```
```bash
clear && cowsay -W 76 -f ovpn 'Crearemos un directorio en `oVPN` para almacenar las configuraciones de cliente y restringiremos los permisos'
```
```bash
mkdir -p ~/client-configs/keys mkdir -p ~/client-configs/keys
chmod -R 700 ~/client-configs chmod -R 700 ~/client-configs
```
```bash
clear && cowsay -W 76 -f ovpn 'Volvemos a la ruta EasyRSA para generar las solicitudes de certificado cliente. Crearemos múltiples solicitudes para distintos clientes. Después copiaremos las claves privadas a nuestra ruta de configuración de clientes.'
```
```bash
cd ~/EasyRSA/ cd ~/EasyRSA/
./easyrsa gen-req client1 nopass ./easyrsa gen-req client1 nopass
@ -303,11 +318,23 @@ cd ~/EasyRSA/
./easyrsa gen-req client4 nopass ./easyrsa gen-req client4 nopass
cp pki/private/{client1.key,client2.key,client3.key,client4.key} ~/client-configs/keys/ cp pki/private/{client1.key,client2.key,client3.key,client4.key} ~/client-configs/keys/
```
clear && cowsay -W 76 -f ovpn 'Enviamos las solicitudes de nuestra VPN a la SubCA para validarlas y nos situamos sobre la SubCA e importamos y firmamos las solicitudes, se devuelven los certificacdos válidos a nuestra oVPN, luego regresamos a la VPN y copiamos el certificado a nuestro directorio de configuraciones Cliente, luego copiamos el certificado de la SubCA y la firma HMAC a nuestro directorio de configuraciones Cliente' ```bash
clear && cowsay -W 76 -f ovpn 'Enviamos las solicitudes de nuestra VPN a la SubCA para validarlas.'
```
```bash
scp ~/EasyRSA/pki/reqs/{client1.req,client2.req,client3.req,client4.req} signer@signer.bastionado.es:/tmp scp ~/EasyRSA/pki/reqs/{client1.req,client2.req,client3.req,client4.req} signer@signer.bastionado.es:/tmp
```
# Panel Signer (⌘3)
```bash
clear && cowsay -W 76 -f ovpn 'Nos situamos sobre `Signer` e importamos y firmamos las solicitudes, después devolveremos los certificacdos válidos a nuestra oVPN.'
```
```bash
./easyrsa import-req /tmp/client1.req client1 ./easyrsa import-req /tmp/client1.req client1
./easyrsa import-req /tmp/client2.req client2 ./easyrsa import-req /tmp/client2.req client2
./easyrsa import-req /tmp/client3.req client3 ./easyrsa import-req /tmp/client3.req client3
@ -319,40 +346,80 @@ scp ~/EasyRSA/pki/reqs/{client1.req,client2.req,client3.req,client4.req} signer@
./easyrsa sign-req client client4 ./easyrsa sign-req client client4
scp pki/issued/{client1.crt,client2.crt,client3.crt,client4.crt} ovpn@ovpn.bastionado.es:/tmp scp pki/issued/{client1.crt,client2.crt,client3.crt,client4.crt} ovpn@ovpn.bastionado.es:/tmp
```
# Panel oVPN (⌘4)
```bash
clear && cowsay -W 76 -f ovpn 'Copiamos los certificados firmados a nuestra ruta de configuración de clientes. También copiaremos dos ficheros clave: `ca.crt` y ta.key`. En el fichero que tendrá el cliente para conectar a nuestra VPN estará la cadena de certificados (es decir, de claves públicas) de la autoridad de certificación ya que el proceso de autenticación es recíproco, los clientes también validan la identidad del servidor. Por otra parte, también incluimos la clave precompartida que se utilizará para la derivación de las claves simétricas y de autenticación.'
```
```bash
cp /tmp/{client1.crt,client2.crt,client3.crt,client4.crt} ~/client-configs/keys/ cp /tmp/{client1.crt,client2.crt,client3.crt,client4.crt} ~/client-configs/keys/
exit
sudo cp /etc/openvpn/{ca.crt,ta.key} ~/client-configs/keys/ sudo cp /etc/openvpn/{ca.crt,ta.key} ~/client-configs/keys/
```
# Panel Títulos (⌘1)
```bash
clear && echo "" && echo "" && echo "" && echo && echo "" && echo "" && echo "" && echo "" && echo "" && echo "" && figlet -w 170 -f ansi-shadow 'CONFIGURACION DE' -c | lolcat && echo "" && echo "" && echo "" && figlet -w 220 -f ansi-shadow 'OPEN VPN' -c | lolcat -a -d 1 && echo "" && echo "" && echo "" && sleep 10 && clear
```
# Panel oVPN (⌘4)
```bash
clear && cowsay -W 76 -f ovpn 'Una vez hemos finalizado completamente la infraestructura de Clave Pública es el momento de configurar el servicio OpenVPN.'
```
-'Configuración de OpenVPN' ```bash
clear && cowsay -W 76 -f ovpn 'Una vez ya se tiene la terminada completamente la infraestructura de Clave Pública es el momento de configurar el servicio OpenVPN' clear && cowsay -W 76 -f ovpn 'Crearemos un fichero de configuración desde cero para conocer detalladamente todas las características que utilizaremos.'
```
clear && cowsay -W 76 -f ovpn 'Comenzamos copiando la configuración de ejemplo y lo editamos, se modifica el puerto por defecto y mantenemos el uso del protocolo UDP, más rápido y resistente frente a ataques de denegación de servicio, especificamos la interfaz de red que se creará de forma explícita como tun0'
```bash
sudo nano /etc/openvpn/server.conf # sudo vim /etc/openvpn/server.conf sudo nano /etc/openvpn/server.conf # sudo vim /etc/openvpn/server.conf
```
```bash
clear && cowsay -W 76 -f ovpn 'No utilizaremos el puerto estándar, 1194, para reducir la superficie de exposición. Por otra parte, utilizaremos el protocolo UDP para reducir los tiempos de latencia.'
```
```bash
port 6174 port 6174
proto udp proto udp
```
```bash
clear && cowsay -W 76 -f ovpn 'Trabajaremos con una interfaz tipo `tun`. OpenVPN puede trabajar con interfaces tipo `tun` a nivel de red (Capa 3 OSI) y tipo `tap`, a nivel de enlace (Capa 2 OSI). Si utilizarámos una interfaz de tipo `tap` tendríamos acceso automáticamente a la subred completa del servidor, ya que la interfaz estaría actuando como un `switch`, pero también generaríamos grandes problemas de enrutamiento. Utilizando `tun` estaremos realizando un enlace punto a punto, por lo que, si queremos tener visibilidad de otras redes deberemos añadir otras opciones. Hablaremos más adelante de ellas.'
```
```bash
dev tun0 dev tun0
```
clear && cowsay -W 76 -f ovpn 'Ahora apuntaremos a nuestros certificados que se han generado anteriormente, se establece la directiva dh con nuestra clave generada anteriormente' ```bash
clear && cowsay -W 76 -f ovpn 'Ahora apuntaremos a nuestros certificados que hemos generado anteriormente y establecemos la directiva Diffie-Hellman con nuestra clave generada anteriormente.'
```
```bash
ca ca.crt ca ca.crt
cert ovpn.crt cert ovpn.crt
key ovpn.key key ovpn.key
dh dh.pem dh dh.pem
```
clear && cowsay -W 76 -f ovpn 'Establecemos la subred que se establecerá en las conexiones. Teniendo en cuenta que el servidor tendrá automáticamente la IP 10.10.10.1 y establecemos un fichero de persistencia para que los clientes vuelvan a tener la misma asignación de IP en caso de una caída del servicio' ```bash
clear && cowsay -W 76 -f ovpn 'Establecemos la subred que se establecerá en las conexiones, teniendo en cuenta que el servidor tendrá automáticamente la primera IP de está subred, es decir, 10.10.10.1.'
```
```bash
server 10.10.10.0 255.255.255.0 server 10.10.10.0 255.255.255.0
```
```bash
clear && cowsay -W 76 -f ovpn 'Establecemos la subred que se establecerá en las conexiones. Teniendo en cuenta que el servidor tendrá automáticamente la IP 10.10.10.1 y establecemos un fichero de persistencia para que los clientes vuelvan a tener la misma asignación de IP en caso de una caída del servicio'
```
ifconfig-pool-persist /var/log/openvpn/ipp.txt ifconfig-pool-persist /var/log/openvpn/ipp.txt