1 00:00:00,180 --> 00:00:20,089 Buenos días. Vamos a instalar o crear una VPN y lo vamos a hacer con OpenVPN. 2 00:00:20,089 --> 00:00:43,090 Bien, lo primero que vamos a hacer, yo ya lo he hecho, pero los pasos que vamos a seguir, paso a paso, lo que vamos a hacer es crear una VPN con OpenVPN entre un servidor y un cliente usando dos máquinas virtuales, Ubuntu en VirtualBox y lo vamos a hacer desde cero. 3 00:00:43,090 --> 00:00:58,590 La creación de las máquinas, la instalación de redes, etcétera, eso ya lo he hecho, nada más que tengo aquí las dos máquinas, esta sería la VPN server y luego tengo la otra que sería la VPN cliente. 4 00:00:58,590 --> 00:01:18,890 Los he conectado mediante red interna. En la VPN server la he creado con una RAM de 2048 megas, con un disco de 20 gigas. La cliente también. Y he creado dos adaptadores, un adaptador NAT y otro de red interna. 5 00:01:18,890 --> 00:01:32,609 He hecho, el servidor va a tener la IP, en cuanto a su configuración de IPs internas, va a tener la 10.0.0.1 y la del cliente tiene la 10.0.0.2. 6 00:01:33,870 --> 00:01:40,670 Las he configurado, he hecho ping a las dos y, bueno, se están conectadas. 7 00:01:41,090 --> 00:01:45,290 Bien, una vez que están conectadas, vamos a instalar OpenVPN más EasyRSA. 8 00:01:45,290 --> 00:01:51,030 previo a eso lo que quiero es explicaros 9 00:01:51,030 --> 00:02:02,680 voy a explicaros una foto que tengo aquí 10 00:02:02,680 --> 00:02:05,659 una imagen que tengo aquí que sería esta 11 00:02:05,659 --> 00:02:17,259 esta imagen si veis aquí tenemos tanto las claves asimétricas del servidor 12 00:02:17,259 --> 00:02:20,039 las del cliente y lo que se llama el certificador 13 00:02:20,039 --> 00:02:23,099 o la autoridad de certificación. 14 00:02:24,560 --> 00:02:28,639 En el centro, esta autoridad de certificación, ¿qué es lo que va a hacer? 15 00:02:29,319 --> 00:02:33,340 Esta es la entidad que crea y firma todos los certificados. 16 00:02:33,759 --> 00:02:38,419 Estará formada por dos archivos principales, que sería el CA-Key, 17 00:02:38,960 --> 00:02:45,680 CA.Key, que es la clave privada de la autoridad de certificación, 18 00:02:45,680 --> 00:02:49,759 y la CA.CRT, que es el certificado público de la CA. 19 00:02:50,039 --> 00:03:14,139 De la autoridad de certificación. La autoridad certificadora es la responsable de qué, qué es lo que va a decir, lo que se va a encargar es de decir, este certificado pertenece realmente al servidor o este certificado pertenece realmente al cliente. Sin esta autoridad certificadora, servidor y cliente no podrán confiar uno en el otro. Por eso lo necesitamos. 20 00:03:14,139 --> 00:03:36,400 Por otro lado, en el servidor, ¿qué tenemos? Tenemos sus claves y certificados. ¿El servidor qué va a necesitar? Va a necesitar la server.key, que será la clave privada del servidor, solo la tiene él, y luego la server.crt, que será el certificado del servidor firmado por la autoridad certificadora. 21 00:03:36,400 --> 00:03:52,000 ¿El proceso cuál es? El servidor genera una clave privada, que sería la server.key, envía la clave pública a la CA, la CA firma esa clave pública y genera el server.crt, el certificado. 22 00:03:52,000 --> 00:04:08,360 El servidor usa el server.key que es la privada, el server.crt que es la pública firmada por la autoridad certificadora y el ca.crt que sería para validar los clientes. 23 00:04:08,919 --> 00:04:17,759 Luego en el cliente tiene sus claves y certificados que serían cada cliente va a generar una client.key que sea la clave privada del cliente que sería esta 24 00:04:17,759 --> 00:04:38,160 Y luego tenemos el client.crt. El client.crt es el certificado del cliente firmado por la autoridad certificadora. Digamos que su clave pública está firmada por la autoridad certificadora para decir que el cliente es quien dice ser. 25 00:04:38,160 --> 00:04:55,939 El proceso igual en el que el servidor, el cliente, genera su clave privada, la client.key, envía la clave pública a la autoridad certificadora y la autoridad certificadora firma esa clave y produce el client.crt, que es el que aparece aquí. 26 00:04:55,939 --> 00:05:09,100 Entonces, el cliente luego usa la client.key, la clave privada, la client.crt, certificado firmado por la autoridad certificadora, y la ca.crt para validar al servidor. 27 00:05:10,180 --> 00:05:19,920 Luego, además, para añadir una capa más de seguridad, tenemos la llave TLS-crypt. Es opcional, pero se recomienda. 28 00:05:19,920 --> 00:05:25,860 Aquí en la parte superior aparece la TLS-Crypt 29 00:05:25,860 --> 00:05:30,060 Esta es una clave extra para proteger contra ataques externos 30 00:05:30,060 --> 00:05:34,100 Evita que atacantes inicien sesiones VPN falsas 31 00:05:34,100 --> 00:05:37,800 Filta paquetes de handshake no deseados 32 00:05:37,800 --> 00:05:40,100 Ya lo visteis en la unidad anterior 33 00:05:40,100 --> 00:05:41,740 Lo que era el handshake 34 00:05:41,740 --> 00:05:44,459 Y protege contra ataques de denegación de servicio 35 00:05:44,459 --> 00:05:46,240 Ambas máquinas la comparten 36 00:05:46,240 --> 00:05:50,199 El servidor la usa y el cliente también la usa 37 00:05:50,199 --> 00:05:53,800 Pero es secreta, nadie más debe tenerla 38 00:05:53,800 --> 00:05:55,560 Por lo tanto, en resumen, ¿qué tenemos? 39 00:05:55,680 --> 00:06:00,800 En resumen tenemos que la autoridad certificadora crea y firma certificados 40 00:06:00,800 --> 00:06:03,079 Eso es lo que se llama la raíz de confianza 41 00:06:03,079 --> 00:06:08,100 El servidor tiene su par de claves y certificado firmado por la autoridad certificadora 42 00:06:08,100 --> 00:06:14,399 Y el cliente tiene su par de claves y certificado firmado por la autoridad certificadora 43 00:06:14,399 --> 00:06:19,860 La autoridad certificadora no participa en la conexión diaria, solo firma los certificados. 44 00:06:20,379 --> 00:06:25,480 Y luego, servidor y cliente se validan mutuamente usando esos certificados firmados. 45 00:06:26,620 --> 00:06:42,240 Bien, tras esta introducción, vamos a proceder a instalar o crear una VPN con OpenVPN. 46 00:06:42,240 --> 00:06:57,620 Bien, ya he dicho que los dos clientes y servidor ya estaban en red y lo único que vamos a hacer ahora es instalar OpenVPN e EasyRSA. 47 00:06:57,620 --> 00:07:20,860 Vamos a instalar en ambas máquinas. Empezamos con la del servidor y lo primero que vamos a hacer es poner un sudo y haremos un update. 48 00:07:20,860 --> 00:07:47,490 Una vez que hagamos el update, vamos a instalar OpenVPN e EasyRSA. 49 00:07:48,910 --> 00:07:53,550 Voy a hacerlo también en la máquina del cliente. 50 00:08:14,540 --> 00:08:19,860 Bien, limpiamos y vamos a proceder a la instalación. 51 00:08:19,860 --> 00:08:23,889 pt install 52 00:08:23,889 --> 00:08:26,110 open 53 00:08:26,110 --> 00:08:32,840 vpn 54 00:08:32,840 --> 00:08:38,620 bien, le damos 55 00:08:38,620 --> 00:08:41,980 y lo vamos a hacer también en la máquina de clientes 56 00:08:41,980 --> 00:08:42,659 si ha terminado 57 00:08:42,659 --> 00:08:57,960 le decimos que 58 00:08:57,960 --> 00:09:00,259 actualizado, se utilizarán 59 00:09:00,259 --> 00:09:01,240 le decimos que sí 60 00:09:01,240 --> 00:09:06,759 vamos con la otra máquina 61 00:09:06,759 --> 00:09:08,539 que va un poco más lenta 62 00:09:08,539 --> 00:09:13,370 bien 63 00:09:13,370 --> 00:09:15,590 limpiamos 64 00:09:15,590 --> 00:09:17,129 y le decimos 65 00:09:17,129 --> 00:09:17,970 sudo 66 00:09:17,970 --> 00:09:39,940 bien, el servidor está instalándolo 67 00:09:39,940 --> 00:10:26,279 vamos a ver cómo va 68 00:10:26,279 --> 00:10:28,899 decimos que sí 69 00:10:28,899 --> 00:10:40,039 y aquí ya está instalado, le damos a limpiar 70 00:10:40,039 --> 00:10:41,460 y ya lo tendríamos 71 00:10:41,460 --> 00:11:28,539 esperamos 72 00:11:28,539 --> 00:11:39,440 bueno, ya hemos instalado OpenVPN 73 00:11:39,440 --> 00:11:43,100 y si RSA tanto en el cliente como en el servidor 74 00:11:43,100 --> 00:11:47,059 bien, ahora vamos a crear la carpeta OpenVPN CA 75 00:11:47,059 --> 00:11:49,559 vamos a crearla 76 00:11:49,559 --> 00:12:29,980 Y la vamos a crear. Primero vamos a ver dónde estamos. Vale, ya estamos en el Home barra Paco. Vamos a ver si estamos ahí. Bien, estamos en Home Paco y aquí vamos a crear la carpeta. 77 00:12:29,980 --> 00:12:43,860 La creamos, la vamos a llamar openvpnca y una vez creada vamos a entrar en ella. 78 00:12:52,100 --> 00:13:05,940 Bien, ya estamos dentro de la carpeta, entonces a continuación vamos a inicializar el PKI. 79 00:13:06,639 --> 00:13:08,539 Vamos a iniciar el PKI. 80 00:13:08,539 --> 00:13:29,450 bien 81 00:13:29,450 --> 00:13:33,250 hemos creado primero la 82 00:13:33,250 --> 00:13:36,970 openvpn-ca 83 00:13:36,970 --> 00:13:40,789 como una carpeta donde vamos a trabajar 84 00:13:40,789 --> 00:13:42,750 con EasyRSA 85 00:13:42,750 --> 00:13:47,210 aquí vamos a tener las claves privadas, los certificadores del servidor 86 00:13:47,210 --> 00:13:49,389 los certificadores del cliente, el DC Hellman 87 00:13:49,389 --> 00:13:52,009 la clave TLS, ya vimos lo que era 88 00:13:52,009 --> 00:13:54,009 y la autoridad certificadora 89 00:13:54,009 --> 00:14:09,950 Todo lo que es relacionado con los certificados. Entonces, ya lo hemos creado, nos hemos introducido en ella y ahora lo que vamos a hacer es inicializar la infraestructura del PKI. 90 00:14:09,950 --> 00:14:29,070 ¿Qué es el PKI? Es la Public Key Infrastructure o la infraestructura de claves públicas. Al ejecutar este comando, vamos a inicializarlo, aquí lo tenemos, algo he puesto mal, sí, aquí. 91 00:14:29,070 --> 00:15:03,460 Bien, ya lo hemos inicializado. Al ejecutar, si ejecutamos PKI barra, vamos a CD, aquí tendríamos lo que es la carpeta, que sea PKI, donde van a estar las claves privadas, los certificados, el título de firma, el parámetro de DIGI Hellman y la configuración interna. 92 00:15:03,799 --> 00:15:09,500 PKI es el corazón de todos los certificados. Entonces, ahora vamos a crear la autoridad 93 00:15:09,500 --> 00:15:20,559 certificadora. Salimos de aquí, vamos a borrar y vamos a por la autoridad certificadora. 94 00:15:20,559 --> 00:15:25,659 RSA 95 00:15:25,659 --> 00:15:26,679 y 96 00:15:26,679 --> 00:15:28,159 Vuel 97 00:15:28,159 --> 00:15:29,620 CA 98 00:15:29,620 --> 00:15:33,720 lo tenemos bien, que no hay ningún problema 99 00:15:33,720 --> 00:15:35,759 y le damos 100 00:15:35,759 --> 00:15:37,840 nos pide la clave 101 00:15:37,840 --> 00:15:42,769 una nueva 102 00:15:42,769 --> 00:15:44,690 clave que vamos a poner para la 103 00:15:44,690 --> 00:15:47,210 para la autoridad de certificación 104 00:15:47,210 --> 00:15:48,929 este comando que hemos 105 00:15:48,929 --> 00:15:49,309 puesto 106 00:15:49,309 --> 00:15:53,129 va a generar una CA.KEY 107 00:15:53,129 --> 00:15:54,789 esa clave es privada 108 00:15:54,789 --> 00:15:56,190 de la autoridad certificadora 109 00:15:56,190 --> 00:15:58,590 no va a salir nunca en el servidor 110 00:15:58,590 --> 00:16:00,929 no se copia al cliente 111 00:16:00,929 --> 00:16:01,970 y no se comparte 112 00:16:01,970 --> 00:16:04,649 luego también va a generar una clave 113 00:16:04,649 --> 00:16:06,490 CA.CRT 114 00:16:06,490 --> 00:16:07,549 que es el certificado público 115 00:16:07,549 --> 00:16:09,850 de la autoridad certificadora 116 00:16:09,850 --> 00:16:12,269 este es el que se va a compartir con los clientes 117 00:16:12,269 --> 00:16:14,149 y que sirve para verificar 118 00:16:14,149 --> 00:16:15,450 que el servidor es auténtico 119 00:16:15,450 --> 00:16:19,129 nos va a pedir 120 00:16:19,129 --> 00:16:22,049 entrar 121 00:16:22,049 --> 00:16:23,649 una nueva clave 122 00:16:23,649 --> 00:16:25,929 le hemos puesto la clave 123 00:16:25,929 --> 00:16:30,029 y le damos, la ponemos de nuevo 124 00:16:30,029 --> 00:16:37,360 y ya estaría, ahora que nos va a pedir 125 00:16:37,360 --> 00:16:40,919 una vez que ya le hemos puesto 126 00:16:40,919 --> 00:16:45,379 la clave, nos va a pedir 127 00:16:45,379 --> 00:16:48,259 un nombre común, vamos a llamar a escribir 128 00:16:48,259 --> 00:16:52,259 openvpnca o vamos a poner 129 00:16:52,259 --> 00:16:57,179 openvpn-ca 130 00:16:57,179 --> 00:17:02,259 y una vez que ya escribimos el nombre 131 00:17:02,259 --> 00:17:05,099 quedaría completado 132 00:17:05,099 --> 00:17:08,579 veis que aquí aparece ya el cea.crt 133 00:17:08,579 --> 00:17:11,180 ¿por qué se necesita la autoridad certificadora? 134 00:17:11,220 --> 00:17:14,099 lo hemos dicho antes, porque es la que firma todos los certificados 135 00:17:14,099 --> 00:17:16,519 firma el del servidor, firma el del cliente 136 00:17:16,519 --> 00:17:19,740 sin ella no se puede verificar quién es quién 137 00:17:19,740 --> 00:17:23,380 entonces, ahora vamos a crear 138 00:17:23,380 --> 00:17:25,779 la clave privada del servidor 139 00:17:25,779 --> 00:17:27,180 para ello ponemos el 140 00:17:27,180 --> 00:17:33,009 RSA 141 00:17:33,009 --> 00:17:39,549 de requerimiento 142 00:17:39,549 --> 00:17:41,410 server 143 00:17:41,410 --> 00:17:44,769 no pass 144 00:17:44,769 --> 00:17:47,430 vale, esto que va a hacer 145 00:17:47,430 --> 00:17:49,809 esto nos va a generar la server key 146 00:17:49,809 --> 00:17:51,650 que sea la clave privada del servidor 147 00:17:51,650 --> 00:17:53,390 la secreta y luego la server 148 00:17:53,390 --> 00:17:55,329 request o server 149 00:17:55,329 --> 00:17:57,849 .req que es la solicitud 150 00:17:57,849 --> 00:17:59,690 de firma de certificado, vimos que tenía 151 00:17:59,690 --> 00:18:01,710 que ser firmado por la certificación 152 00:18:01,710 --> 00:18:03,930 la autoridad certificadora 153 00:18:03,930 --> 00:18:07,470 lo que nos va a decir es por favor 154 00:18:07,470 --> 00:18:09,670 que la autoridad certificadora 155 00:18:09,670 --> 00:18:11,710 me firme este certificador para que pueda ser 156 00:18:11,710 --> 00:18:13,829 un servidor VPN válido 157 00:18:13,829 --> 00:18:17,369 no se pone contraseña 158 00:18:17,369 --> 00:18:19,529 porque el servidor necesita arrancar solo sin pedir 159 00:18:19,529 --> 00:18:21,490 password, entonces le damos 160 00:18:21,490 --> 00:18:23,289 y nos lo crearía 161 00:18:23,289 --> 00:18:27,329 nos dice nombre común del 162 00:18:27,329 --> 00:18:28,890 nombre del servidor 163 00:18:28,890 --> 00:18:31,410 le vamos a poner VPN 164 00:18:31,410 --> 00:18:43,849 server que es el nombre y le damos y veis ya tenemos la server punto rec y la server punto 165 00:18:43,849 --> 00:18:59,369 key bien pasamos ahora a continuación ya hemos pasado por por este paso que hemos visto y ahora 166 00:18:59,369 --> 00:19:02,390 lo que nos quedaría es firmar el certificado del servidor. 167 00:19:02,750 --> 00:19:12,369 Para ello ponemos RSA y sería firmarlo. 168 00:19:14,109 --> 00:19:20,470 Hemos creado las claves del servidor y ya tienen que ser firmadas por la autoridad certificadora. 169 00:19:21,089 --> 00:19:28,170 Esto es con el REC de petición de que sea firmada, server, server. 170 00:19:28,170 --> 00:19:38,220 le decimos que sí 171 00:19:38,220 --> 00:19:43,740 y habrá que entrar 172 00:19:43,740 --> 00:19:47,259 esto lo que hace es que 173 00:19:47,259 --> 00:19:49,359 la autoridad certificadora 174 00:19:49,359 --> 00:19:51,279 revisa la solicitud del certificado, la firma 175 00:19:51,279 --> 00:19:54,039 y crea el archivo server.crt 176 00:19:54,039 --> 00:19:57,140 ahora tendríamos el server.key 177 00:19:57,140 --> 00:19:59,119 que es la clave privada 178 00:19:59,119 --> 00:20:01,420 y el server.crt que sería el certificado 179 00:20:01,420 --> 00:20:02,359 público firmado 180 00:20:02,359 --> 00:20:05,460 el servidor ahora será oficialmente 181 00:20:05,460 --> 00:20:07,279 un servidor VPN válido 182 00:20:07,279 --> 00:20:08,460 le damos a 183 00:20:08,460 --> 00:20:10,619 a la clave 184 00:20:10,619 --> 00:20:14,539 y ya estaría. 185 00:20:15,059 --> 00:20:16,680 Bien, veis cómo nos genera aquí 186 00:20:16,680 --> 00:20:19,099 la clave del servidor, 187 00:20:19,220 --> 00:20:20,660 pues ha sido ya también, 188 00:20:20,799 --> 00:20:22,680 además de tener nuestra propia clave del servidor, 189 00:20:23,180 --> 00:20:24,519 la tenemos certificada. 190 00:20:24,619 --> 00:20:26,220 Tenemos la clave privada, que es la server.key 191 00:20:26,220 --> 00:20:29,140 y tenemos la clave, el certificado 192 00:20:29,140 --> 00:20:30,720 público, que sería el 193 00:20:30,720 --> 00:20:32,119 server.crt. 194 00:20:32,720 --> 00:20:34,180 Vamos a generar ahora los parámetros 195 00:20:34,180 --> 00:20:36,779 Diffie-Hellman. Este método 196 00:20:36,779 --> 00:20:38,599 matemático es para negociar claves seguras 197 00:20:38,599 --> 00:20:39,640 entre cliente y servidor. 198 00:20:40,339 --> 00:21:07,019 Sin Diffie-Hellman, pues entonces tu tráfico no se cifraría correctamente. Entonces, lo que hay que entrar, lo que ahora nos va a generar es el DH.Pen. Entonces, bien, estábamos aquí y estábamos generando el Diffie-Hellman. Para generar el Diffie-Hellman, para que nos genere el DH.Pen. 199 00:21:07,019 --> 00:21:46,599 Bien, ¿cómo lo tenemos que generar? Estamos en la carpeta OpenVPN CA y le generamos DH. Vale, está correcto. Al ejecutar esto va a calcular los parámetros de Diffie-Hellman de forma segura y nos generará el DH.pen. 200 00:21:46,599 --> 00:22:14,289 Bien, si le damos al lsopenvpn-apki, aquí tendríamos que tener el divihelman.open, que sería este que aparece aquí. 201 00:22:14,289 --> 00:22:34,369 Bien, ya lo hemos creado y ahora pasaríamos a, aquí tendríamos que tener el DRIGELMAN y tendríamos que tener también PRIVATE, tendríamos que tener ISUT, muy bien, y REX. 202 00:22:34,369 --> 00:22:36,730 vale, lo tenemos todo 203 00:22:36,730 --> 00:22:38,210 aquí tenemos 204 00:22:38,210 --> 00:22:41,549 bien, lo tenemos todo 205 00:22:41,549 --> 00:22:42,170 entonces 206 00:22:42,170 --> 00:22:45,329 vamos a pasar a 207 00:22:45,329 --> 00:22:47,329 una vez que tenemos todo 208 00:22:47,329 --> 00:22:49,670 vamos a pasar a copiarlo 209 00:22:49,670 --> 00:22:51,150 al servidor 210 00:22:51,150 --> 00:22:52,190 OpenVPN 211 00:22:52,190 --> 00:22:54,009 entonces vamos a poner 212 00:23:01,009 --> 00:23:01,650 sudo