En una nota anterior, expliqué lo que eran los Servicios de Escritorio Remoto pero si bien recuerdan, solo hablamos de como implementarlo en un solo servidor (Standalone), en esta nota veremos como implementar los Servicios de Escritorio Remoto en Alta Disponibilidad (RDS HA)
Voy a ir separando con títulos cada accion dado que será una nota bastante larga. Así que empecemos!
REQUISITOS
Para este escenario requeriremos:
- Un controlador de Dominio (en mi caso será DC01)
- Un servidor de CA (en mi caso también será DC01)
- Dos servidores que tendrán los roles de Session Host (utilizaré RDSSH y RDSSH2)
- Dos servidores que tendrán los roles de Connection Broker y Web Access (utilizaré RDSGW y RDSGW2)
- Un servidor de SQL (en mi caso el servidor se llama SQL)
*Todos los servidores ejecutan Windows Server 2022*
Para lo que es SQL, utilizaré SQL Express 2019, el mismo lo pueden descargar desde AQUI
También vamos a requerir que en el servidor donde esté el motor de SQL tengamos SMSS, el mismo lo pueden descargar desde AQUI
CONFIGURANDO AD
- Ya teniendo todos nuestros equipos unidos al dominio, debemos asegurarnos que tenemos habilitado DNS Round Robin (algo que suele venir habilitado por default en la mayoria de los casos pero no estaría de mas revisarlo) verificado esto, agregaremos dos DNS nuevos, los mismos tienen que apuntar hacia las IPs de nuestros dos equipos de Broker en mi caso son estos:
- Crearé los DNS con el nombre “rds” obviamente el fqdn será rds.ojedaleonardo.local:
- Crearemos un grupo de seguridad, en el mismo tendremos que agregar los equipos de Broker:
INSTALACION DE ROLES RDS
- Iremos a uno de nuestros servidores de RDS del cual llevaremos la mayor parte de configuración (yo recomiendo usar uno de los dos que dedicaremos para Session Host, en mi caso como mencioné será RDSSH), en el Server Manager daremos click en “Create a server group“:
- Seleccionaremos nuestros cuatros servidores que llevarán los roles de RDS y le daremos click en OK (recuerden ponerle un nombre al grupo):
- Una vez creado nuestro grupo de servidores, daremos click en el panel de la izquierda sobre el nombre del grupo:
- Iremos hacia Manage->Add Roles and Features:
- Daremos click en Next:
- Seleccionaremos Remote Desktop Services installation y daremos click en Next:
- Seleccionaremos Standard deployment y daremos click en Next:
- Tildaremos Session-based desktop deployment y Next:
- Nos informa de que credenciales utilizará para realizar el despliegue, daremos click en Next:
- Agregaremos el primer servidor para el Connection Broker (el segundo lo agregaremos cuando configuremos la Alta Disponibilidad):
- Tildaremos la opción de que se instale el Web Access en el mismo servidor que el Connection Broker y daremos click en Next:
- Agregaremos los dos servidores que funcionarán con Session Host y daremos click en Next:
- Nos dará un resumen de los equipos, tildaremos la opción de reiniciar y daremos click en Deploy:
- Y comenzará el despliegue…paciencia
- Una vez que finalice de forma correcta, daremos click en Close:
- Iremos al Server Manager y haremos click sobre Remote Desktop Services:
- Seleccionaremos Collections:
- Iremos a Tasks->Create Session Collection:
- Daremos click en Next:
- Elegiremos un nombre para nuestra colección y daremos click en Next:
- Agregaremos nuestros dos equipos de Session Host y daremos click en Next:
- Especificaremos un grupo de usuario que tendrá acceso a la colección, luego daremos click en Next:
- Podemos configurar UPD, en este caso lo omitiremos y daremos click en Next:
- Nos pide confirmación, está todo correcto así que daremos click en Create:
- Una vez finalizado, daremos click en Close:
- Ya tendremos nuestra colección creada en donde podremos agregar las aplicaciones que necesitemos para que los usuarios accedan:
CONFIGURANDO SQL
- Iremos a nuestro servidor de SQL, en la consola de SMSS desplegaremos Security->Click derecho en Logins y click en New Login:
- Daremos click en Search:
- Buscaremos el grupo de seguridad que habíamos creado en AD y daremos click en OK:
- Iremos a la parte de Server Roles y tildaremos la opcion de dbcreator, luego click en OK:
- Podemos observar que ya se creó nuestro Login para el grupo de seguridad:
- Sobre Databases daremos click derecho->New Database:
- Pondremos un nombre a nuestra nueva DB, en mi caso será RDSHA, luego daremos click en OK:
- Iremos nuevamente a Logins->el login que habiamos creado previamente->Properties:
- En el apartado de User Mapping->tildaremos sobre nuestra nueva DB y en los roles marcaremos db_owner. Luego click en OK:
- En el apartado de Usuarios y Grupos de nuestro servidor SQL, debemos ir al grupo Remote Management Users:
- Dentro del grupo daremos click en Add:
- Agregaremos los dos Servidores de Connection Broker y luego click en Apply:
- Terminando con SQL, en la ruta de instalación (como se vé en la imagen) debemos copiar el instalador de SQLNCLI, el mismo debemos instalarlo en nuestros cuatro servidores de RDS (en mi caso serán RDSSH, RDSSH2, RDSGW y RDSGW2 (no mostraré el proceso de instalación dado que es sumamente simple realizarlo y no requiere ningun parametro en especial):
CONFIGURANDO RDS
- Volviendo a la configuración de RDS, haremos click derecho sobre RD Connection Broker->Configure High Availability:
- Se nos abrirá el asistente, daremos click en Next:
- Seleccionaremos Dedicated database server y daremos click en Next:
- Debemos poner el nombre de DNS que creamos en AD (en mi caso será rds.ojedaleonardo.local), y agregar una cadena de conexion contra nuestro SQL, la linea es:
DRIVER=SQL Server Native Client 11.0;SERVER=NOMBRESQL;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;DATABASE=NOMBREDB
- Una vez configurado los valores, daremos click en Next:
- Nos puede ocurrir que nos devuelva este error al cual le daremos click en OK para que se cierre:
- Tenemos que ir a nuestro servidor de SQL, específicamente al administrador de configuración de SQL, allí debemos asegurarnos de que el protocolo TCP/IP se encuentre en el status Enabled y que en el puerto de escucha esté configurado el 1433. En el caso de que no tuvieran bien estos valores, luego de aplicarlos deben reiniciar el servicio de SQL para que aplique.
- Volviendo a donde nos habíamos quedado, volveremos a darle Next en la parte de configurar alta disponibilidad, en este caso ya nos debería dejar continuar (en el caso de que sigan presentando problemas, revisen que los equipos de RDS lleguen hacia el puerto 1433 del servidor SQL), por lo cual daremos click en Configure:
- Una vez que finalice correctamente la configuración, daremos click en Close:
- Volveremos a dar click sobre RD Connection Broker, pero esta vez sobre Add RD Connection Broker Server:
- Nos abrirá el asistente, daremos click en Next:
- Agregaremos nuestro segundo servidor (en mi caso será RDSGW2), luego daremos click en Next:
- Daremos click en Add:
- Les puede ocurrir que les devuelva este error:
Pero… porque ocurre esto? recuerdan que cuando estuvimos configurando los permisos de Login en nuestra nueva base de datos seteamos los permisos de Owner para el grupo de seguridad? por alguna razón que desconozco sobre SQL Express, puede ocurrir que se desconfigure ese permiso, por lo cual tenemos que volver a nuestro SQL y volver a setearle el permiso:
- Volviendo al RDS, volvemos a intentar agregar el segundo servidor y está vez si nos dejará, una vez agregado le daremos click en Close:
Como vieron en la imagen anterior (si le prestaron atención) en la parte de abajo nos dice “Configure certificate” hay varias formas de hacerlo, creo que la mas simple es generándolo desde el IIS de uno de los dos servidores de Bróker, pero la realidad es que al dia de hoy eso tiene una limitante, y es que no podemos generarle un SAN cuando hacemos el request desde el IIS, esto se traduce a que si intentan abrir RDS desde un navegador que no sea Internet Explorer les va a decir que el certificado no es seguro.
Bien! vamos a hacerlo como realmente quedaria bien, iremos a nuestra CA (como mencioné en mi caso será DC01) abriremos una consola de mmc->certificates, una vez allí daremos click derecho sobre el store de Personal->All Tasks->Advanced Operations->Create Custom Request:
- Daremos click en Next:
- Seleccionaremos la opción de Proceed without enrollment policy y daremos click en Next:
- Nos aseguramos de que en Template se encuentre como (No template) CNG key y en el request format en PKCS #10. Daremos click en Next:
- Desplegaremos Details->Properties:
- En General especificaremos un nombre amigable y una descripción de nuestro certificado:
- Si vamos a Subject podemos agregar los valores que consideremos necesarios, en este caso solo usaré el CN y el DNS:
- Y en Private Key nos aseguraremos que el CSP sea RSA, que el tamaño de la clave sea 2048 y que esté marcado el tilde de exportar la clave privada, luego daremos click en Apply:
- Daremos click en Next:
- Marcaremos la ubicación y el nombre de nuestro request, asegurarse que el formato de archivo esté en Base 64 luego daremos click en Finish:
- Abriremos un CMD como Administrador y ejecutaremos el siguiente comando, esto nos devolverá el certificado emitido:
- Nos mostrará las CA disponibles, como solo cuento con una le daré click en OK (si ustedes cuentan con mas de un dominio asegúrense de que marcan la CA correcta):
- Nos tiene que aparecer de la siguiente forma para que estemos seguros de que fue emitido correctamente:
- Volviendo a nuestra mmc en la CA, daremos click en All tasks->Import:
- Daremos click en Next:
- Seleccionaremos nuestro certificado en .cer y daremos click en Next:
- Nos aseguramos de que el almacén sea Personal luego daremos click en Next:
- Daremos click en Finish:
- Nos mostrará de que el certificado se importó de forma correcta:
- Bien…ahora el certificado que importamos (recuerdan que era .cer) debemos convertirlo a .pfx, para ello daremos click derecho sobre nuestro certificado->All Tasks->Export:
- Daremos Next:
- Tildaremos que Si, exporte la clave privada, luego click en Next:
- Ya viene marcado por omisión .pfx, así que daremos click en Next:
- Tildaremos Password (podemos poner una clave simple) y en Encryption seleccionaremos en SHA256, click en Next:
- Seleccionamos ubicación y nombre para nuestro archivo, luego click en Next:
- Por ultimo click en Finish:
- Nos llevaremos nuestro certificado .pfx a nuestro servidor de RDS donde estabamos realizando la administración. Iremos a la parte de Deployment Overview->Tasks->Edit Deployment Properties:
- Nos desplazaremos hasta Certificates allí marcaremos el primero que es RD Connection Broker – Enable Single, daremos click sobre Select existing certificate:
- Seleccionaremos la ubicación de nuestro certificado y la clave que habíamos puesto. Tildamos la opción de que permita agregar el certificado a Trusted Root en los equipos de destino y damos click en OK:
- Daremos click en Apply:
- Nos tiene que quedar en estado OK y correcto:
- Repetimos los pasos con los dos roles restantes hasta que nos quede de esta forma:
- Una vez que tenemos ok el certificado en los 3 roles. Procederemos a verificar el acceso a nuestro RDS. Haré la primer prueba con Internet Explorer, ingresaremos a https://rds.ojedaleonardo.local/rdweb:
- Como podemos observar, nos muestra que el certificado es valido, si vemos las propiedades del mismo, podemos observar para quien fué emitido, quién lo emitió y la validez del mismo:
- Si verificamos desde otro navegador (en este caso lo realizaré con Microsoft Edge) vemos que tambien nos muestra que el sitio es seguro y si verificamos las propiedades del certificado son las mismas:
Ahora, que pasa si en vez de escribir: https://rds.ojedaleonardo.local/rdweb escribiera solo https://rds.ojedaleonardo.local:
Se puede observar que nos lleva a la raiz de IIS, y la verdad que muchas veces no queremos decirles a nuestros usuarios que agreguen a un sitio de internet mas de lo normal (mientras mas facil se lo hagamos mejor), así que para esto vamos a crear un redirect en IIS.
- Iremos a nuestro servidor de Broker->IIS> y daremos doble click sobre HTTP Redirect:
- Marcaremos el tilde de redirect request y pondremos nuestro dns de rds con el /rdweb, luego daremos click en Apply:
- Recuerden que está en alta disponibilidad, por lo cual requieren hacer el mismo paso en el otro servidor de Broker.
- Una vez que lo realicen, pueden probar ingresando directamente a su dns: https://rds.nombredominio y los va a redireccionar automáticamente a /rdweb sin necesidad de que nosotros tengamos que ponérselo.
En esta nota omitiré lo que es la instalación de RD Licensing (dado que no cuento con licencias CAL para realizarlo) y también omitiré RD Gateway dado que no lo publicaremos hacia internet.
!Saludos!