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,13 +2,13 @@
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-05-31T22:00:59.968Z
date: 2022-05-31T22:52:00.260Z
tags: vpn, servidor
editor: markdown
dateCreated: 2022-05-31T21:04:15.280Z
---
# Panel Títulos (⌘ 1)
# Panel Títulos (⌘1)
```bash
unimatrix -f -n -s 96 -w && clear && echo "" && echo "" && echo "" && echo "" && echo "" && echo "" && echo "" && echo "" && echo "" && perl -pe "system 'sleep .06'" openvpn.txt && echo "" && echo "" && echo "" && sleep 10 && clear
@ -26,7 +26,7 @@ unimatrix -f -n -s 96 -w && clear && perl -pe "system 'sleep .06'" ovpn-scheme.t
clear && echo "" && echo "" && echo "" && echo && echo "" && echo "" && echo "" && echo "" && echo "" && echo "" && figlet -w 130 -f ansi-shadow 'Instalacion de ' -c | lolcat && echo "" && echo "" && echo "" && figlet -w 220 -f ansi-shadow 'EasyRSA' -c | lolcat -a -d 1 && echo "" && echo "" && echo "" && sleep 10 && clear
```
# Panel CA (⌘ 2), Luego Panel Signer (⌘ 3), luego Panel oVPN (⌘ 4)
# Panel CA (⌘2), Luego Panel Signer (⌘3), luego Panel oVPN (⌘4)
```bash
clear && cowsay -W 76 -f ovpn 'Para comenzar con la instalación de "OpenVPN" será necesario realizar la instalación de EasyRSA, para ello se descargará la última versión de esta aplicación en nuestro CA y nuestro signer, y luego simplemente habrá que descomprimirlo'
@ -95,13 +95,13 @@ set_var EASYRSA_CURVE ed25519
clear && cowsay -W 220 -f ovpn 'Repetiremos este proceso en Signer y Ovpn'
```
# Panel Títulos (⌘ 1)
# Panel Títulos (⌘1)
```bash
clear && echo "" && echo "" && echo "" && echo && echo "" && echo "" && echo "" && echo "" && echo "" && echo "" && figlet -w 140 -f ansi-shadow 'Creacion de CA' -c | lolcat -a -d 1 && echo "" && echo "" && echo "" && sleep 10 && clear
```
# Panel CA (⌘ 2)
# Panel CA (⌘2)
```bash
clear && cowsay -W 76 -f ovpn 'Para poder realizar la creación de la CA será necesario inicialzar nuestra Infreaestructura de Clave Pública en la propia CA. Se informará de que el fichero vars, anteriormente modificado se ha movido a la PKI, por lo que se borra el inicial, y finalemnte creamos nuestra CA'
@ -115,13 +115,13 @@ mv vars pki/vars
./easyrsa build-ca # Podríamos añadir 'nopass' para no establecer una Passphrase
```
# Panel Títulos (⌘ 1)
# Panel Títulos (⌘1)
```bash
clear && echo "" && echo "" && echo "" && echo && echo "" && echo "" && echo "" && echo "" && echo "" && echo "" && figlet -w 150 -f ansi-shadow 'Creacion de SubCA ' -c | lolcat && echo "" && echo "" && echo "" && figlet -w 240 -f ansi-shadow 'en Signer' -c | lolcat -a -d 1 && echo "" && echo "" && echo "" && sleep 10 && clear
```
# Panel Signer (⌘ 3)
# Panel Signer (⌘3)
```bash
clear && cowsay -W 76 -f ovpn 'Primero se inicializa la infraestructura de Clave Pública en el SubCA, y como anteriormente, se informa que el fichero var ha sido movido a la PKI, por lo que se elimina. Se genera una solicitud de nuestra SubCA y se envía a la CA para que sea validada'
@ -137,7 +137,7 @@ mv vars pki/vars
scp ~/EasyRSA/pki/reqs/ca.req ca@ca.bastionado.es:/tmp
```
# Panel CA (⌘ 2)
# Panel CA (⌘2)
```bash
clear && cowsay -W 76 -f ovpn 'Nos situamos sobre la CA e importamos y firmamos la solicitud, después devolvemos el certificado encadenado de la CA con la SubCA válido a nuestra SubCA, y se regresa a la SubCA y se mueve el certificado a la ruta del puesto PKI'
@ -157,19 +157,19 @@ scp /tmp/signer.crt signer@signer.bastionado.es:/tmp
rm -rf /tmp/signer.crt
```
# Panel Signer (⌘ 3)
# Panel Signer (⌘3)
```bash
mv /tmp/signer.crt ~/EasyRSA/pki/ca.crt
```
# Panel Títulos (⌘ 1)
# Panel Títulos (⌘1)
```bash
clear && echo "" && echo "" && echo "" && echo && echo "" && echo "" && echo "" && echo "" && echo "" && echo "" && figlet -w 170 -f ansi-shadow 'Creacion de Certificado ' -c | lolcat && echo "" && echo "" && echo "" && figlet -w 220 -f ansi-shadow 'en oPVN' -c | lolcat -a -d 1 && echo "" && echo "" && echo "" && sleep 10 && clear
```
# Panel oVPN (⌘ 4)
# Panel oVPN (⌘4)
```bash
clear && cowsay -W 76 -f ovpn 'Primero inicializamos nuestra infraestructura de Clave Pública en oVPN, como se informa que el fichero vars se ha movido a la PKI, se procede a mover el fichero personalizado, luego generamos la solicitud de nuesta VPN, y enviamos la solicitud de nuestra VPN a la SubCA para validarla'
@ -185,7 +185,7 @@ mv vars pki/vars
scp ~/EasyRSA/pki/reqs/ovpn.req signer@signer.bastionado.es:/tmp
```
# Panel Signer (⌘ 3)
# Panel Signer (⌘3)
```bash
clear && cowsay -W 76 -f ovpn 'Nos situamos sobre la SubCA e importamos y firmamos la solicitud, y devolvemos el certificado válido a nuestro oVPN junto con el certificado de la SubCA'
@ -202,14 +202,13 @@ scp pki/issued/ovpn.crt ovpn@ovpn.bastionado.es:/tmp
# Panel Títulos (⌘ 1)
# Panel Títulos (⌘1)
```bash
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
clear && cowsay -W 76 -f ovpn 'Comenzamos actualizando nuestro repositorio apt para después realizar la instalación de unas dependencias previas'
@ -284,17 +283,33 @@ sudo mv ~/EasyRSA/ta.key /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'
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.'
# Panel oVPN (⌘4)
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
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/
./easyrsa gen-req client1 nopass
@ -303,11 +318,23 @@ cd ~/EasyRSA/
./easyrsa gen-req client4 nopass
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
```
# 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/client2.req client2
./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
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/
exit
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'
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 '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
clear && cowsay -W 76 -f ovpn 'Crearemos un fichero de configuración desde cero para conocer detalladamente todas las características que utilizaremos.'
```
```bash
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
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
```
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
cert ovpn.crt
key ovpn.key
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
```
```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