Vamos a ver como podemos crear una guía de implementación de Microsoft Tunnel.
Microsoft Tunnel es una solución de puerta de enlace VPN para Microsoft Intune. El túnel permite el acceso a las instalaciones
recursos de dispositivos iOS / iPadOS y Android Enterprise que utilizan autenticación moderna y condicional
Acceso.
Microsoft Tunnel Gateway se instala en un contenedor Docker que se ejecuta en un servidor Linux. El servidor Linux puede ser un
caja física en su entorno local, o una máquina virtual que se ejecuta localmente o en la nube.
Nota: La guía de implementación se centrará en el uso de RedHat Enterprise Linux 7.4 como host del servidor Linux para
Túnel de Microsoft. Tengamos en cuenta que podemos hacer el procedimiento con otras distribuciones de Linux.
• CentOS 7.4+ (CentOS 8+ no es compatible)
• Red Hat (RHEL) 7.4+ (RHEL 8+ no es compatible)
• Ubuntu 18.04
• Ubuntu 20.04
A continuación se muestra una lista ordenada de tareas para ejecutar en Azure, Intune, OnPrem Active Directory, OnPrem
Autoridad de certificación de Microsoft, proveedores de certificados públicos, servicios de DNS internos y externos:
Implementación básica (mínima):
- Aprovisione un servidor Linux para alojar Microsoft Tunnel: cree una máquina virtual de Azure con RHEL 7.4
- Cree un registro CNAME de DNS para el servidor Linux.
- Conexión a la máquina virtual de Linux a través de SSH
- Instalación de Docker en RHEL 7.4
- Cree un certificado TLS para Microsoft Tunnel
- Configure Microsoft Tunnel en la consola MEM
- Instale el contenedor Microsoft Tunnel Gateway en RHEL 7.4
- Implemente la aplicación MS Tunnel y cree el perfil VPN de MS Tunnel en la consola MEM
- Ejemplo de conexión de cliente usando un dispositivo iOS
Implementación avanzada: - Agregar un 2
nd NIC para el servidor-host Linux - Configurar el equilibrador de carga de red de Azure
- Notas para ExpressRoute
- Configuración del acceso condicional para MS Tunnel
Para comenzar con el procedimiento vamos a crear una nueva maquina virtual desde el portal de azure https://portal.azure.com y escogemos desde marketplace RedHat.
debemos agregar todas las opciones para la creación de la imagen.
Con respecto a la «Cuenta de administrador», según sus preferencias, puedes optar por utilizar
una clave SSH o contraseña SSH para conectar, gestionar y administrar la máquina virtual. En esto
En la guía le mostramos el uso de un par de claves SSH, sin embargo, se puede elegir el método preferido.
• Para los «puertos de entrada», necesitaremos 443 y 22 (SSH). Nota: la captura de pantalla muestra el puerto 80 como
bueno, pero esto NO es obligatorio.
• Nuestro “Nombre de usuario” de muestra es “factura” y el “nombre de VM” es “RedHat-Server”. Haremos referencia
estos a lo largo de la guía.
Cuando termines con la configuración «Básica», presiona «Siguiente: Discos>» para continuar con la configuración. Hacer cualquier
cambios necesarios o simplemente mantener los valores predeterminados.
En la configuración de «Redes», seleccione la «Red virtual» adecuada que tendrá línea de visión para
sus recursos locales (en una implementación del mundo real, esto se puede lograr con Azure
ExpressRoute). En nuestra implementación de ejemplo, emulamos nuestros recursos locales utilizando IaaS Azure
Las máquinas virtuales proporcionan un controlador de dominio, una autoridad de certificación y un servidor web para acceder mediante un MS
Cliente de túnel en iOS. Veamos el ejemplo a continuación:
Revisa las siguientes secciones restantes: “Administración, Avanzado, Etiquetas”. Simplemente puedes tomar los
valores predeterminados o realizar cambios personalizados. Una vez que llegues a la sección «Revisar + crear», asegúrate de que
las selecciones están en su lugar y presione «Crear». Ve el ejemplo a continuación …
En este punto, verás mensajes de «Implementación en curso» en la consola. Cuando el despliegue
está completa, verás un mensaje «Su implementación está completa». Hacer clic en «Ir al recurso». Ver ejemplo
abajo:
Aquí haremos algunos cambios relacionados con el «nombre DNS», hacemos clic en «Configurar». Ver ejemplo:
Te recomiendo usar una dirección «estática» e ingresar el nombre de la VM en la «etiqueta de nombre DNS». Por favor
toma nota del dominio azul en el que se encuentra su máquina virtual según la región de Azure seleccionada al crear el
VM. Presiona «Guardar» para completar. Ve el ejemplo a continuación:
Resolución de nombres DNS públicos
Se requiere una dirección IP pública o FQDN para MS Tunnel. Esta dirección se utiliza como punto de conexión para
dispositivos que utilizan el túnel. Si deseas utilizar un nombre DNS en lugar de una dirección IP para identificar tu MS
Servidor de túnel, debes configurar un registro «CNAME» de DNS en tu proveedor de servicios de DNS público.
Aquí el ejemplo:
La acción anterior crea efectivamente una entrada DNS que resuelve RedHat-Server.deployment.mx -> red-hat-server.eastus.cloudapp.azure.com
Conexión a la máquina virtual de Linux a través de SSH:
Ahora nos conectaremos a nuestra máquina virtual RHEL74 Linux usando SSH. En Azure Portal> Máquinas virtuales> nombre de la VM, puedes hacer clic en «Conectar» en «Configuración» para ver un ejemplo de cómo conectarse mediante SSH. Ver
captura de pantalla a continuación:
Tienes algunas opciones para que un cliente SSH se conecte. Puedes usar PuTTY, un popular cliente SSH y Telnet para
Windows o puedes utilizar las herramientas OpenSSH disponibles con Windows 10 en Funciones opcionales.
En nuestros ejemplos usamos el cliente SSH incluido con OpenSSH en Windows 10.
Aquí una guía para utilizar con Windows 10
Dentro del simbolo del sistema con privilegios de administrador nos ubicamos en la siguiente ruta: c:\windows\system32\Openssh
ejecutamos la siguiente linea incluyendo el certificado .pem que hemos descargado con anterioridad seguido del recuerso cloud app, veamos el ejemplo.
ssh -i yourLinuxAdminAccount@your_linux_vm_name.azure_dns_region
ssh -i .\RedHat-Server_key.pem deploymentmx@red-hat-server.eastus.cloudapp.azure.com
NOTA: Si ya tienes otros clientes Linux en tu entorno, simplemente puede usar SSH en estos
plataformas para conectar.
Ahora que nos hemos conectado correctamente, estamos listos para comenzar nuestra instalación.
Unas breves palabras sobre el comando sudo
Antes de comenzar, unas palabras sobre «sudo». El comando sudo te permite ejecutar programas con el
privilegios de seguridad de otro usuario (por defecto, como superusuario).
Para usar el comando sudo, en el símbolo del sistema, ingresa:
sudo command
Ten en cuenta: en los ejemplos que siguen, muchas de las capturas de pantalla muestran comandos que se ejecutan directamente como root.
No se recomienda. Cuando ejecutes estos comandos en el servidor Linux, usa sudo.
Instalación de Docker en RHEL 7.4
Una vez que nos conectamos a través de SSH a nuestro servidor Linux, es hora de instalar Docker Community Edition (CE), un requisito previo para instalar MS Tunnel.
Nota: cuando instales Docker CE en las otras versiones compatibles de Linux, consulte el
Documentación en línea de instalación de Docker.
sudo yum-config-manager --add-repo=http://mirror.centos.org/centos/7/os/x86_64/
sudo yum-config-manager --add-repo=http://mirror.centos.org/centos/7/extras/x86_64/
Importar la clave GPG para los paquetes espejo de CentOS …
A continuación, necesitamos agregar las claves GNU para estos repositorios. Las claves GPG o GNU Privacy Guard se utilizan para hacer
seguro que estamos obteniendo el paquete correcto de un repositorio confiable.
La clave GPG de CentOS 7 está disponible aquí:
• CentOS GPG Keys — descargar clave de firma para CentOS 7 – CentOS GPG Keys
Ejecuta el siguiente comando para importar la clave CentOS GPG en el almacén de claves rpm:
sudo rpm --import https://www.centos.org/keys/RPM-GPG-KEY-CentOS-7
Verificamos la key con el siguiente comando.
sudo rpm -q gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{SUMMARY}\n'
Agregar repositorio estable de Docker CE (Community Edition)
Ahora agreguemos el repositorio de docker ce usando el siguiente comando:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Instalar Docker CE
El comando para instalar docker ce es:
sudo yum install docker-ce docker-ce-cli containerd.io
NOTA: En caso de marcar erro error 404 docker repo not found cuando
instalación de Docker CE en RHEL 7.4. Existe un problema en el que yum install no puede instalar docker-ce desde el
repositorio proporcionado en «http://download.docker.com/linux/centos/docker-ce.repo» cuando la variable $ releasever
está configurado en 7server.
Vea abajo:
Para resolver este error, realiza lo siguiente:
sudo vi /etc/yum.repos.d/docker-ce.repo
Habilita el modo «Insertar» presionando la tecla «i» en el teclado. Comenta la siguiente línea
colocando un “#” al frente. Ve la línea modificada a continuación:
debemos colocar el siguiente comando
baseurl=https://download.docker.com/linux/centos/7/$basearch/stable
para salir de modo INSERT precionamos ESC y volvemos a ejecutar sudo.
así se veria la linea final.
Ahora volvemos a correr Docker, para salir de editor vamos a escribir «:wq«
sudo yum install docker-ce docker-ce-cli containerd.io
Cuando se solicite, escribe «y» y presiona Intro para continuar. Ver ejemplo:
Cuando se complete la instalación, deberías ver algo como la captura de pantalla siguiente. Podemos hacer un Hello World para corroborar que esta funcionando.
sudo systemctl start docker
sudo docker run hello-world
Certificado MS Tunnel TLS:
El servidor Linux requiere un certificado TLS confiable para asegurar la conexión entre los dispositivos y el túnel.
Servidor de puerta de enlace. Deberás agregar el certificado TLS, incluida la cadena de certificados de confianza completa, al
servidor durante la instalación de Tunnel Gateway.
• El certificado TLS utilizado para proteger el punto final de Tunnel Gateway debes tener la dirección IP o FQDN de
el servidor Tunnel Gateway en la SAN.
• El certificado TLS no puede tener una fecha de vencimiento superior a dos años. Si la fecha es mayor de dos
años, no se aceptará en dispositivos iOS.
• El uso de comodines tiene un soporte limitado. Por ejemplo, se admite * .contoso.com. cont * .com no es
soportado.
• Durante la instalación del servidor Tunnel Gateway, debes copiar toda la cadena de certificados de confianza
al servidor Linux. El script de instalación proporciona la ubicación donde copia los archivos del certificado.
y le pide que lo hagas.
• Si usas un certificado TLS que no es de confianza pública, es decir, si usa una autoridad de certificación local.
Debes enviar toda la cadena de confianza a los dispositivos mediante un perfil de certificado de confianza de Intune.
NOTA: El proceso de obtención de un certificado TLS emitido por una CA pública está fuera del alcance de este documento.
La guía de implementación mostrará 2 opciones para el certificado TLS:
- Usando un certificado TLS emitido por un proveedor de autoridad de certificación pública (en nuestro ejemplo usaremos
DigiCert Inc. Como nota al margen: existe un servicio llamado «Lets Encrypt» que proporciona SSL / TLS gratuito
certificados gratis. Puede consultarlos aquí: https://letsencrypt.org/) - o un certificado TLS emitido por una autoridad de certificación empresarial de Microsoft local.
Para este caso he utilizado un certificado publico por Digicert.
Ahora, debemos copiar este archivo de certificado PFX en nuestro servidor Linux. Logramos esto usando un OpenSSH
utilidad llamada SCP.
Primero, copia el PFX a la máquina de Windows donde instaló las herramientas de Windows OpenSSH. A partir de una
símbolo del sistema ejecuta lo siguiente:
scp -i <your_VM_SSH_PrivateKey> <exported_PFX_file>
LinuxAdmin@vm_name.azuredns_region:\home\LinuxAdmin
scp -i .\RedHat-Server_key.pem .\vpn_deployment_mx.pfx deploymentmx@red-hat-server.eastus.cloudapp.azure.com:\home\deploymentmx
Microsoft Tunnel readiness tool
Ejecución de la herramienta de preparación de Microsoft Tunnel
Usaremos la herramienta de preparación de MS para garantizar los requisitos previos para «red» y «cuenta» al instalar
Túnel MS.
Nota: ejecutamos los siguientes comandos mientras estamos en el siguiente directorio de trabajo en el servidor Linux (en este
ejemplo, este es el directorio de inicio del administrador de Linux llamado «deploymentmx»):
Antes de ejecutar el script de preparación, necesitamos instalar un paquete de procesador JSON de línea de comandos llamado
«Jq». En el servidor Linux, ejecute los siguientes comandos para instalar «jq»:
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install jq -y
sudo wget --output-document=mst-readiness https://aka.ms/microsofttunnelready
Para ejecutar el script, necesitamos hacerlo ejecutable. Ejecutemos el siguiente conjunto de comandos para obtener esto
hecho:
Run “ls -l” to show a list of files in the current directory. Confirm “mst-readiness” is
listed.
Run “chmod u+x ./mst-readiness” to make the script executable
Ahora ejecuta ./mst-readiness account
El codigo que aparece en seguida se copia al login.
Entramos a este enlace: https://login.microsoftonline.com/common/oauth2/deviceauth
Debemos asegurarnos tener en el mismo directorio los siguientes archivos para poder ser ejecutados de manera correcta.
Conectando Mobile Device
Hay algunos pasos necesarios para conectar sus dispositivos móviles a MS Tunnel:
- Cree un perfil de VPN para Microsoft Tunnel
- Implemente la «aplicación Microsoft Tunnel» desde la tienda de aplicaciones de Apple o Google Play.
Crea un perfil de VPN de MS Tunnel
Usando la consola MEM, siga la documentación en línea para crear un perfil VPN basado en la plataforma
(Android Enterprise, iOS / iPadOS)
• Perfil VPN de Android Enterprise MS Tunnel
• Perfil VPN de túnel MS para iOS / iPad OS
Implementar la aplicación MS Tunnel
Para usar Microsoft Tunnel, los dispositivos necesitan acceso a la aplicación Microsoft Tunnel. Puede implementar la aplicación para
dispositivos asignándolo a los usuarios. Están disponibles las siguientes aplicaciones:
• Para Android, descarga la aplicación “Microsoft Tunnel” de la tienda Google Play. Ver Agregar Android
almacenar aplicaciones en Microsoft Intune.
• Para iOS / iPadOS, descarga la aplicación “Microsoft Tunnel” de Apple App Store. Ver Agregar tienda iOS
aplicaciones a Microsoft Intune.
Sigue la guía de documentación en línea para implementar aplicaciones de la tienda:
Vamos a realizar este procedimiento usando Android.
Vamos a entrar a https://endpoint.microsoft.com
Damos clic en dispositivos, crear perfil de configuración, VPN para Android.
Expande «Base VPN» y proporciona un «Nombre de conexión» (este será el nombre del perfil de VPN que
aparece en el dispositivo móvil), y seleccione un «sitio de túnel de Microsoft», esto mostrará una lista de «sitios»
que haz creado.
A continuación, expande «VPN por aplicación» y decide si este perfil proporcionará una «VPN por aplicación».
conexión o no. En mi ejemplo, he habilitado VPN por aplicación. Más adelante cubro cómo habilitar el
Activador de VPN «por aplicación» para la aplicación móvil Edge en mi inquilino.
Paso a “Asignaciones” y asocio el perfil a un grupo de usuarios de AAD. Siguiente, debajo
“Revisar + crear”, hago clic en “Crear” para terminar.
Proxy lo dejo por default.
Ahora agremos la aplicacion de Microsoft Tunnel.
VPN por aplicación de iOS con Edge Mobile
Dado que habilité «VPN por aplicación» en el «perfil de VPN de MS Tunnel», debo habilitar una aplicación para activar la VPN. voy a
utilizar Edge Mobile.
Ahora debemos agregar el servidor y el site desde nuestro endpoint Manager.
Para mas detalles podemos ver la guía de referencia de Microsoft en este enlace.
Una vez confirmado la conexion podemos ver nuestra app de tunel funcionando correctamente.