1 00:00:07,730 --> 00:00:14,390 Buenas tardes. Hoy, día 22, a las 16.30, estamos convocados a través de Jefatura de Departamento 2 00:00:14,390 --> 00:00:19,649 para la defensa del módulo profesional del proyecto de ciclo formativo de grado superior de ASIR. 3 00:00:20,329 --> 00:00:28,010 Te informo de que esta defensa está siendo grabada y que dicha grabación se utilizará en el entorno cerrado de EducaMadrid 4 00:00:28,010 --> 00:00:33,590 con fines educativos y sólo estará a disposición de los profesores evaluadores en el aula virtual 5 00:00:33,590 --> 00:00:37,689 para llevar a cabo la evaluación y calificación de la defensa del proyecto. 6 00:00:37,729 --> 00:01:01,710 En el aula virtual de proyectos habéis sido informados de los criterios y de la rúbrica de calificación. El orden de la presentación del proyecto es el siguiente. 15 minutos máximo para la defensa del proyecto, 15 minutos máximo para las preguntas por parte del tribunal. Dicho esto, su tiempo de exposición comienza a partir de este momento. Adelante y mucha suerte. 7 00:01:02,710 --> 00:01:23,049 Buenas tardes, soy Adrián Álvarez. Voy a presentaros este TPC en el cual hemos, perdón, he implementado un servicio de OpenVPN con Active Directory, con un servidor de dominio de Windows y hemos añadido, perdón, he añadido una capa extra de seguridad con verificación en dos pasos y Google Authenticator, ¿vale? 8 00:01:23,049 --> 00:01:41,829 Bueno, mi principal motivación para llevar a cabo y dar este servicio es el auge del teletrabajo, que como bien sabéis, desde el año 2020, desde la época de pandemia, son muchas las empresas que quieren incorporar o que incorporan de dos a tres días de trabajo remoto en sus jornadas laborales, ¿vale? 9 00:01:41,829 --> 00:02:05,920 El departamento de estas propias empresas se puede ver comprometido, se puede ver con varios desafíos a la hora de querer o necesitar trasladar la seguridad que podrían tener los sitios desde los cuales se puedan conectar los usuarios o clientes que vayan a utilizar esta VPN, ¿vale? 10 00:02:05,920 --> 00:02:26,840 Este tema de la seguridad ha sido solucionado mediante un cifrado de la conexión VPN, es decir, que si se hubiera comprometido la red de algún cliente o de algún usuario y se realizara una captura de paquetes que puedan viajar a través de esta VPN, no se va a haber comprometido los datos de la empresa por un tema de cifrado, ¿vale? 11 00:02:26,840 --> 00:02:39,840 Y también se va a estipular o se va a definir una complejidad mínima para las contraseñas del directorio activo, en las cuales no se van a permitir contraseñas de menos de 8 caracteres o contraseñas que no incluyan caracteres especiales. 12 00:02:41,400 --> 00:02:58,379 Bien, 4 objetivos que tendríamos para este proyecto, porque hemos elegido estos 2 productos, los cuales son open source, no tendrían ningún tipo de licencia. 13 00:02:58,379 --> 00:03:06,599 también necesitamos tener una gestión centralizada de los usuarios en el directorio activo esto es 14 00:03:06,599 --> 00:03:10,960 importante sobre todo en empresas que puedan llegar a ser un poquito más grande de 15 a 20 15 00:03:10,960 --> 00:03:15,759 usuarios las cuales ya necesitamos tener una gestión una organización con estos usuarios 16 00:03:15,759 --> 00:03:22,699 para prevenir errores de seguridad o errores en un momento dado se puede dar de baja un usuario 17 00:03:22,699 --> 00:03:26,620 en una máquina VPN que no se dé baja en el dominio o al revés, ¿vale? 18 00:03:26,680 --> 00:03:30,620 Y necesitamos implementar también la verificación en dos pasos 19 00:03:30,620 --> 00:03:33,719 que veremos más adelante porque es tan importante, ¿vale? 20 00:03:34,699 --> 00:03:38,060 En cuanto a la arquitectura del sistema, tenemos una arquitectura bastante sencilla 21 00:03:38,060 --> 00:03:40,979 compuesta por tres puntos. En un extremo tenemos un cliente 22 00:03:40,979 --> 00:03:44,259 que se va a conectar por el cliente de OpenVPN GUI, ¿vale? 23 00:03:45,939 --> 00:03:51,319 En el medio tenemos la máquina Debian que va a definir un poco la seguridad 24 00:03:51,319 --> 00:04:04,330 de lo que viene a ser el perímetro de la red interna, es decir, el perímetro extremo de la arquitectura. 25 00:04:04,729 --> 00:04:09,969 Aquí tendríamos tanto el servidor de dominio, que en este caso podría llegar a tener carpetas compartidas con datos, 26 00:04:10,409 --> 00:04:13,689 o distintos servicios que puedan dar en esta red interna. 27 00:04:15,949 --> 00:04:21,810 Bien, cuatro de las tecnologías que hemos utilizado en este proyecto, perdón, que he utilizado, 28 00:04:21,810 --> 00:04:27,389 Vamos a hacer especial hincapié en esta diapositiva en Debian y en OpenVPN 29 00:04:27,389 --> 00:04:32,589 Más adelante veremos el tema de SSD y el LDAP y el PAM de Google Authenticator 30 00:04:32,589 --> 00:04:40,769 Bien, hemos decidido utilizar Debian porque se trata de una solución bastante sencilla 31 00:04:40,769 --> 00:04:45,810 En la cual no hace falta tener unos grandes recursos de hardware 32 00:04:45,810 --> 00:05:10,889 No hace falta tener una buena máquina física que puede disparar un poco los costes económicos en cuanto a montar el proyecto. También pasa un poco lo mismo con OpenVPN. Son los dos open source, no requieren de licencias y esto para llegar a implementarlo quizás en pequeñas y medianas empresas puede hacer bastante más amigable el proyecto en cuanto a costes. 33 00:05:10,889 --> 00:05:20,790 Vale, OpenVPN hemos utilizado UDP para montarlo, se podría utilizar también TCP, pero por cómo funciona el protocolo TCP, daría problemas en cuanto a la entidad. 34 00:05:27,459 --> 00:05:40,839 El servicio SSD, vale, aquí lo vamos a utilizar para la integración de la máquina Linux con el servidor de dominio, para que podamos leer tanto los usuarios y podamos realizar ciertas configuraciones relevantes. 35 00:05:40,839 --> 00:06:06,720 En este caso, SSD, si no me equivoco, son las islas de System Security Service. Lo hemos utilizado junto con el directorio activo para configurar un ADAC filter. Esto lo que nos va a permitir va a ser que puedan acceder a la máquina de VPN, que solo se pueden autenticar los usuarios que estén dentro del grupo de dominio de usuarios de VPN. 36 00:06:06,720 --> 00:06:30,540 Esto nos permite gestionar qué usuarios de nuestro dominio van a poder utilizar la VPN y en un momento dado podríamos darles acceso solo los días en los que estos vayan a teletrabajar o simplemente nos permite quitarle el acceso a un usuario a la VPN sin necesidad de tener que deshabilitar o dar de baja el usuario del dominio. 37 00:06:30,540 --> 00:06:47,259 El otro punto que tenemos es la autenticación en doble factor. Esto lo consideramos muy importante. Hoy en día se ven muchos casos de phishing en los cuales se sustrae directamente la contraseña de directorio activo o similar de los usuarios. 38 00:06:47,259 --> 00:07:11,259 Y por eso hemos querido implementar tanto una cosa que sabemos, que en este caso sería la contraseña de nuestro dominio de Windows, como una cosa que tenemos que sería el código de Google Authenticator. Va a ir cambiando cada 30 segundos y no va a permitir que en un momento dado, si se nos pinta la contraseña del directorio activo, se nos pueda suplantar la identidad y acceder a los datos de la empresa. 39 00:07:11,259 --> 00:07:32,540 Aquí es donde entra sobre todo la validación en cadena que va a hacer el protocolo de PAM, perdón, el servicio de PAM, el cual lo que va a hacer va a ser, primero, verificar contra el directorio activo que tenemos bien, tanto la contraseña que hemos introducido de dominio como que pertenecemos al grupo de usuarios de VPN. 40 00:07:32,540 --> 00:07:45,540 Si considera que estos dos valores son correctos, va a pasar la cadena de texto que hemos introducido, en la cual vendría nuestra contraseña de dominio por un lado y los últimos seis dígitos del módulo de Google Authenticator. 41 00:07:46,620 --> 00:07:53,959 Lo va a pasar al módulo de Google Authenticator, que va a verificar que estos seis últimos dígitos sean correctos. 42 00:07:54,500 --> 00:07:56,879 En ese caso ya tendríamos acceso a la red interna. 43 00:07:56,879 --> 00:08:14,019 Una vez dentro de esta red interna, hemos configurado un poco la máquina Debian a modo de router NAT, por así decirlo, ¿vale? Esta máquina lo que nos va a hacer va a ser repartirnos una IP dentro de la red 10, ¿vale? 44 00:08:14,019 --> 00:08:32,960 De esta manera, a los servidores o servicios que tengamos dentro de la red interna, ¿vale? Se va a encargar un poco de gestionar los accesos y demás. 45 00:08:32,960 --> 00:08:37,379 Bien, antes de proceder con el vídeo 46 00:08:37,379 --> 00:08:40,860 Un par de retos, problemas que he podido encontrar 47 00:08:40,860 --> 00:08:45,159 A lo largo de montar el proyecto 48 00:08:45,159 --> 00:08:47,620 Que considero que son importantes a tener en cuenta 49 00:08:47,620 --> 00:08:49,980 Son los problemas con los NTPs 50 00:08:49,980 --> 00:08:51,379 Con algunos servidores de tiempo 51 00:08:51,379 --> 00:08:54,899 He visto casos en los que el cliente que se va a conectar 52 00:08:54,899 --> 00:08:56,500 No se encuentra en la misma franja horaria 53 00:08:56,500 --> 00:08:58,860 O tiene problemas simplemente con la sincronización de la hora 54 00:08:58,860 --> 00:09:02,480 Lo cual compromete el uso del propio Google Authenticator 55 00:09:02,480 --> 00:09:18,799 En este caso, hemos configurado Google Authenticator para que nos facilite 5 códigos de emergencia que se puedan utilizar en un momento dado si no tenemos acceso a este teléfono o si no tenemos la hora configurada, ¿vale? 56 00:09:18,799 --> 00:09:22,159 si te parece bien, antes de ver las conclusiones 57 00:09:22,159 --> 00:09:23,419 vamos a pasar a ver el vídeo 58 00:09:23,419 --> 00:09:25,379 lo voy a poner aquí, no sé si 59 00:09:25,379 --> 00:09:26,940 Raquel puede escuchar 60 00:09:26,940 --> 00:09:29,440 si no se escucha 61 00:09:29,440 --> 00:09:31,200 confirmas 62 00:09:31,200 --> 00:09:35,889 no se ve 63 00:09:35,889 --> 00:09:37,649 vale, no hay problema 64 00:09:37,649 --> 00:09:38,570 lo comentamos por encima 65 00:09:38,570 --> 00:09:41,409 bueno, vamos a crearlo primero 66 00:09:41,409 --> 00:09:43,409 en nuestro servidor 67 00:09:43,409 --> 00:09:53,399 tenemos que poner 68 00:09:53,399 --> 00:09:56,399 bueno, ciertos 69 00:09:56,399 --> 00:10:03,600 caracteres especiales y demás vamos a hacer el usuario miembro del grupo usuarios de vpn para 70 00:10:03,600 --> 00:10:16,500 poder así una vez esté dentro del grupo ya podemos pasar si si está todo correcto a la 71 00:10:16,500 --> 00:10:22,000 configuración que hacerla dentro de la máquina vpn vale bueno estamos viendo ahora mismo una 72 00:10:22,000 --> 00:10:28,779 consola conectada por ssh a esta máquina vpn en la cual vamos a utilizar el módulo de google 73 00:10:28,779 --> 00:10:34,559 autenticator nos va a hacer varias preguntas según vayamos a configurar el usuario lo primero que nos 74 00:10:34,559 --> 00:10:52,049 va a preguntar en este caso es si queremos un módulo basado y nos vamos a cambiarlo con el 75 00:10:52,049 --> 00:11:09,549 el teléfono, en este caso, perdón, en caso de no tener cámara no hay problema, ¿vale? Porque tenemos esta clave secreta, este número que nos genera debajo del código QR que nos va a permitir añadir la mano también, ¿vale? Pues si no tuviésemos cámara en el dispositivo que queremos usar para la configuración. 76 00:11:09,549 --> 00:11:22,789 Nos va a generar también estos cinco códigos de emergencia, que son los que comentaba antes. También nos pueden funcionar a modo de verificación. Si no tuviésemos acceso, por lo que sea, al teléfono, podríamos usar estos códigos. Lo ideal sería almacenarlos, ¿vale? 77 00:11:22,789 --> 00:11:35,730 Bueno, nos va a preguntar también si queremos diferentes patrullas de seguridad, como puede ser que los tokens vayan cambiando segundos y no se permita más que una única autorización. 78 00:11:35,730 --> 00:11:45,600 hemos autenticado nosotros, ¿vale? 79 00:11:47,080 --> 00:11:50,759 He configurado para la máquina también para evitar problemas con la diferencia de tiempo 80 00:11:50,759 --> 00:11:57,220 que permita usar el código que se ha generado anteriormente o el código que viene después, 81 00:11:57,220 --> 00:12:01,659 por si estamos metiendo el código y quedan pocos segundos para introducirlo 82 00:12:01,659 --> 00:12:06,960 o si hay un pequeño rebaso de 10 o 20 segundos en la configuración 83 00:12:06,960 --> 00:12:09,860 que no se vea comprometido el acceso de los usuarios, ¿vale? 84 00:12:09,860 --> 00:12:23,179 Bueno, esto nos va a generar un filtro de Google Authenticator. Vamos a moverlos a una ruta general. En este caso, está dentro de la carta de Google Authenticator. 85 00:12:23,179 --> 00:12:50,340 Y, por lo tanto, tiene el usuario el dominio. Es importante para llevar una gestión correcta, por tener solo permisos de lectura, que si son permisos excesivos en el archivo, la máquina no lo coge correctamente, ¿vale? 86 00:12:50,340 --> 00:13:06,519 Bueno, vamos a abrir por aquí que tenía preparado ya el cliente de conexión de la VPN en el cual vamos a tener que importar previamente el certificado que nos genera la máquina cuando la configuramos y vamos a acceder con nuestro usuario que acabamos de crear, ¿vale? 87 00:13:06,519 --> 00:13:14,460 En este caso, ponemos en un primer momento la contraseña y luego a posteriori vamos a añadir los seis dígitos que nos ha quitado el PPD. 88 00:13:18,120 --> 00:13:21,940 Si es que no nos va a dar ningún error. 89 00:13:33,429 --> 00:13:36,409 Por aquí nos ha sido la... 90 00:13:45,200 --> 00:13:51,039 ...pueda auditar de alguna manera qué usuarios hay conectados en qué momento o qué usuarios se han llegado a conectar. 91 00:13:51,039 --> 00:14:17,279 Para esto tenemos este fichero de Dolo, que va a registrar varios datos de los usuarios que ha conectado, que nos registra el usuario que acabamos de crear, que conecta desde la IP real de su máquina, la 1.38, le asigna la IP interna de la VPN, la 806 y la hora de conexión, que es bastante importante, sobre todo para hacer auditorías o revisión de usuarios conectados. 92 00:14:17,279 --> 00:14:32,779 ¿Vale? Bueno, sería un poco el funcionamiento, dentro ya de la VPN se podrían acceder a las carpetas compartidas que tenemos en el servidor y podríamos trabajar con normalidad como si estuviéramos dentro de la red interna de la empresa, ¿vale? 93 00:14:32,779 --> 00:14:50,539 Bueno, conclusiones un poco que hemos sacado, perdón, que he sacado al finalizar el proyecto. Considero que hemos levantado, por así decirlo, un entorno que es bastante seguro, que es bastante estable. En un momento dado, si llegara a fallar la máquina, como debían, es una máquina que apenas requiere recursos de discos. 94 00:14:50,539 --> 00:15:05,220 Si hubiera que levantar la máquina de un backup o de una copia de seguridad, no tardaríamos apenas 10 minutos, que puede tardar en restaurar una copia de la máquina, o incluso si tuviéramos la de una, en cosas de dos horas tendríamos la máquina funcionando. 95 00:15:05,220 --> 00:15:11,539 Es un tema que en entornos reales es importante tener una disponibilidad bastante alta. 96 00:15:11,539 --> 00:15:30,860 ¿Qué es lo que hemos hecho con Linux y Windows? Funciona bastante bien para auditar tanto los usuarios con esta máquina Linux como con los propios registros que puede dejar el Windows Server y que gestiona mucho los usuarios de forma centralizada. 97 00:15:30,860 --> 00:15:58,960 Y hemos utilizado, yo considero, una estructura bastante barata en cuanto a costes económicos por haber utilizado dos paquetes que son open source, en este caso Debian y VPN, que facilita mucho, que hace un poco más amigable el proyecto para pequeñas y medianas empresas, incluso para grandes empresas con muchos empleados que no quieran gastarse el dinero que pueden pedir otras marcas reconocidas. 98 00:16:00,860 --> 00:16:03,320 para montar estos servicios, ¿vale? 99 00:16:16,970 --> 00:16:19,470 Vamos a la esta o que mantenga la presentación en pantalla. 100 00:16:20,330 --> 00:16:21,330 ¿Has terminado? 101 00:16:22,509 --> 00:16:22,990 Sí. 102 00:16:23,730 --> 00:16:27,610 A ver, te comento, es que se ha ido un montón de veces la conexión, ¿vale? 103 00:16:27,649 --> 00:16:30,350 Entonces, te voy a hacer una serie de preguntas 104 00:16:30,350 --> 00:16:34,309 porque me he perdido algunas cosas de la presentación, ¿vale? 105 00:16:34,309 --> 00:16:40,450 A lo mejor algunas las has explicado, pero no se han visto en el vídeo, ¿vale? 106 00:16:40,970 --> 00:16:41,470 Vale, vale. 107 00:16:41,470 --> 00:16:49,570 Entonces, por ejemplo, ¿por qué elegiste OpenVPN frente a otras soluciones como, por ejemplo, WebWare? 108 00:16:49,570 --> 00:17:06,549 Pues mira, OpenVPN ofrece estas facilidades que hemos visto de poder integrarlo con usuarios de directorio activo de Windows. 109 00:17:06,549 --> 00:17:24,710 Sí que es verdad que es una solución con la que he trabajado bastante, trabajo prácticamente día a día con ella y no requiere muchos recursos a nivel de hardware, además es open source. Desconozco WireWare, no sé si requiere de licencia, no sé si requiere de algún tipo de hardware específico. 110 00:17:24,710 --> 00:17:28,710 OpenVPN sí que la conocía, ya digo, había trabajado bastante con ella 111 00:17:28,710 --> 00:17:32,329 y es muy cómoda a la hora de generar estos certificados 112 00:17:32,329 --> 00:17:35,069 porque permite, que ya digo que no sé si WordBar lo permite 113 00:17:35,069 --> 00:17:39,430 pero permite generar un único certificado privado para distintos usuarios 114 00:17:39,430 --> 00:17:44,849 es decir, que si tienes que integrarlo en una red, por ejemplo, de 50 usuarios 115 00:17:44,849 --> 00:17:50,970 puedes simplemente compartir el fichero de certificado privado, por así decirlo, con todos 116 00:17:50,970 --> 00:17:54,029 y cada uno de ellos puede iniciar sesión con sus credenciales 117 00:17:54,029 --> 00:17:58,490 Si no me equivoco, con WireGuard y con la VPN de Windows esto no es posible. 118 00:18:00,569 --> 00:18:02,109 Certificado por cada usuario. 119 00:18:02,289 --> 00:18:07,549 A la hora de integrarlo un poco en entornos no reales es un poco más labor. 120 00:18:09,630 --> 00:18:11,990 Vale, se ha cortado la conexión otra vez. 121 00:18:16,829 --> 00:18:18,849 Vale, vamos con otra pregunta. 122 00:18:18,849 --> 00:18:26,849 A ver, ¿qué aporta el doble factor de autentificación frente a una VPN tradicional con solo usuario y contraseña? 123 00:18:29,390 --> 00:18:37,630 Aporta un factor muy, muy importante. Como he comentado, está a la orden del día todo el tema del phishing y todo el tema de la sustracción de contraseñas. 124 00:18:38,430 --> 00:18:44,130 Entonces, en un momento dado en el cual se pueda sustraer la contraseña de un usuario o en el día a día, 125 00:18:44,130 --> 00:19:06,509 que vemos usuarios que directamente apuntan las credenciales en distintos sitios, en un propio blog de notas o sitios que claramente no son seguros, aporta una capa extra de seguridad de la cual si se ve comprometida la contraseña del usuario, no se van a ver aceptados los datos de la empresa porque no se va a ver comprometido este código de doble verificación que va a cambiar cada 30 segundos. 126 00:19:06,509 --> 00:19:21,250 En el sentido de que si se filtrara también uno de los códigos, a los 30 segundos se dejaría de ser válido, ¿no? Entonces, no tendríamos esta facilidad para sustraer datos de la empresa, ¿no? Es un tema importante. 127 00:19:22,809 --> 00:19:34,410 Vale. Y otra cosa que no se ha visto muy bien en la presentación porque se ha ido la esto es, ¿por qué es necesario activar el IP forwarding, vale, y configurar el NAT en el servidor VPN? 128 00:19:34,410 --> 00:19:51,839 No hay problemas. La presentación te diría que está hecha, entonces no recuerdo si queda activado el IP forwarding. Tendría que mirarlo y a esa pregunta no te lo podría contestar con la claridad que me gustaría. 129 00:19:51,839 --> 00:20:19,240 La máquina en ese sentido, ya digo, tendría que revisar un poco toda la configuración de red que quedó configurada en la máquina para la VPN y la gestión de las redes. El plan inicial cuando se empezó a preparar el proyecto era separar varias redes con distintas VPNs montadas y por tema de tiempo al final se montó solo una. Entonces no sabría contestarte con claridad. 130 00:20:19,240 --> 00:20:35,460 Vale. Y ahora imagínate que un usuario consigue conectarse con la VPN, pero no puede acceder al recurso del dominio, ¿vale? O sea, no puede acceder a carpetas ni a nada. ¿Qué habría que comprobar? 131 00:20:35,460 --> 00:21:01,839 A ver, lo primero comprobar que si ya está dentro del VPN, ya asumimos que está dentro de la red de la empresa, yo verificaría en un primer momento que no le haya caducado la contraseña del dominio y alguna cosa así, las credenciales que tenga en su equipo que estén bien para acceso y los permisos de las carpetas a las que quiera acceder, que tenga permisos, que tenga acceso. 132 00:21:01,839 --> 00:21:06,200 Miraríamos también los logs que nos va a facilitar el AD 133 00:21:06,200 --> 00:21:09,660 En los cuales si, por ejemplo, vemos en el registro del AD 134 00:21:09,660 --> 00:21:12,559 Que se está intentando acceder con un usuario incorrecto 135 00:21:12,559 --> 00:21:14,259 Podría ser el tema de caducidad 136 00:21:14,259 --> 00:21:17,799 O podría ser que en el gestor de credenciales de Windows 137 00:21:17,799 --> 00:21:20,779 Se ha guardado unas credenciales que no son las correctas 138 00:21:20,779 --> 00:21:24,279 O no son las que tiene el usuario de dominio de la propia máquina 139 00:21:24,279 --> 00:21:27,259 Probablemente sea un tema de credenciales o de permisos 140 00:21:27,259 --> 00:21:28,099 Una vez ya dentro de la 141 00:21:28,099 --> 00:21:30,220 Vale 142 00:21:30,220 --> 00:21:33,559 Pues con esto yo creo que ya está todo 143 00:21:33,559 --> 00:21:35,759 Voy a terminar la grabación 144 00:21:35,759 --> 00:21:37,359 Muchas gracias Adrián 145 00:21:37,359 --> 00:21:38,799 Muchas gracias a ti 146 00:21:38,799 --> 00:21:40,680 Y paro de grabar