diff --git a/vpn/openvpn/servidor.md b/vpn/openvpn/servidor.md index 21731d8..69ce3a9 100644 --- a/vpn/openvpn/servidor.md +++ b/vpn/openvpn/servidor.md @@ -2,7 +2,7 @@ title: OpenVPN - Servidor description: Tutorial de instalación del Servidor OpenVPN published: true -date: 2022-05-25T22:01:16.999Z +date: 2022-05-25T22:13:16.266Z tags: vpn, servidor, debian editor: markdown dateCreated: 2022-05-18T16:48:57.246Z @@ -293,40 +293,37 @@ cd ~/EasyRSA/ cp pki/private/{client1.key,client2.key,client3.key,client4.key} ~/client-configs/keys/ ``` -* Enviamos la solicitud de nuestra VPN a la SubCA para validarla +* Enviamos las solicitudes de nuestra VPN a la SubCA para validarlas ```bash -scp ~/EasyRSA/pki/reqs/client1.req signer@signer.bastionado.es:/tmp +scp ~/EasyRSA/pki/reqs/{client1.req,client2.req,client3.req,client4.req} signer@signer.bastionado.es:/tmp ``` * Nos situamos sobre la SubCA e importamos y firmamos las solicitudes -```bash -ssh signer@signer.bastionado.es - -cd ~/EasyRSA -``` - -* Importamos y firmamos la solicitud - ```bash ./easyrsa import-req /tmp/client1.req client1 +./easyrsa import-req /tmp/client2.req client2 +./easyrsa import-req /tmp/client3.req client3 +./easyrsa import-req /tmp/client4.req client4 ./easyrsa sign-req client client1 +./easyrsa sign-req client client2 +./easyrsa sign-req client client3 +./easyrsa sign-req client client4 ``` -* Devolvemos el certificado válido a nuestra oVPN +* Devolvemos los certificados válidos a nuestra oVPN ```bash -scp pki/issued/client1.crt ovpn@ovpn.bastionado.es:/tmp +scp pki/issued/{client1.crt,client2.crt,client3.crt,client4.crt} ovpn@ovpn.bastionado.es:/tmp ``` * Volvemos a la VPN y copiamos el certificado a nuestro directorio de configuraciones Cliente ```bash -exit -cp /tmp/client1.crt ~/client-configs/keys/ +cp /tmp/{client1.crt,client2.crt,client3.crt,client4.crt} ~/client-configs/keys/ ``` * Ahora copiamos el certificado de la SubCA y la Firma HMAC a nuestro directorio de configuraciones Cliente @@ -334,8 +331,7 @@ cp /tmp/client1.crt ~/client-configs/keys/ ```bash exit -sudo cp /etc/openvpn/ta.key ~/client-configs/keys/ -sudo cp /etc/openvpn/ca.crt ~/client-configs/keys/ +sudo cp /etc/openvpn/{ca.crt,ta.key} ~/client-configs/keys/ ``` ### Configuración de OpenVPN @@ -345,11 +341,36 @@ Ahora que ya hemos terminado completamente con la Infraestructura de Clave Públ * Comenzamos copiando la configuración de ejemplo y lo editamos ```bash -sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/ - sudo nano /etc/openvpn/server.conf # sudo vim /etc/openvpn/server.conf ``` +* Modificamos 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 + +```bash +port 6174 +proto udp +``` + +* Especificamos la interfaz de red que se creará de forma explícita como `tun0` + +```bash +dev tun0 +``` + +* Apuntaremos a nuestros certificados generados anteriormente + +```bash +ca ca.crt +cert ovpn.crt +key ovpn.key +``` + +* Establecemos la directiva `dh` con nuestra clave generada anteriormente + +```bash +dh dh.pem +``` + > La directiva `tls-auth` añade una capa adicional de autenticación HMAC sobre el canal de control TLS para mitigar los ataques DoS y los ataques a la pila TLS. En pocas palabras, --tls-auth habilita una especie de "cortafuegos HMAC" en el puerto TCP/UDP de OpenVPN, donde los paquetes del canal de control TLS que lleven una firma HMAC incorrecta pueden ser descartados inmediatamente sin respuesta. * Nos aseguramos de que `tls-auth` está habilitado (debemos eliminar el `;` inicial si existe) @@ -374,11 +395,7 @@ cipher AES-256-CBC auth SHA512 ``` -* Buscamos la directiva `dh` para modificar su nombre a `dh.pem` ya que es como se denomina nuestro fichero generado anteriormente -```bash -dh dh.pem -``` * Haremos que el servicio OpenVPN se ejecute con el usuario `nobody` y grupo `nogroup` descomentando estos valores @@ -387,12 +404,7 @@ user nobody group nogroup ``` -* Apuntaremos a nuestro certificado generado anteriormente -```bash -cert ovpn.crt -key ovpn.key -``` * Y para finalizar forzaremos que todo el tráfico de los clientes sea redirigido por la VPN. Buscaremos y descomentaremos las siguientes líneas