Implementación del concepto de acceso remoto altamente seguro

Continuando con la serie de artículos sobre la organización VPN de Acceso Remoto del acceso, no puedo dejar de compartir una interesante experiencia en la implementación de una configuración VPN altamente segura.Una tarea no trivial fue planteada por un cliente (existen inventores en las aldeas rusas), pero reto aceptado y realizado de manera creativa. Como resultado, se obtuvo un concepto interesante con las siguientes características:

  1. Varios factores de protección contra la suplantación del dispositivo final (con un vínculo estricto al usuario);
    • Evaluación de la conformidad del PC del usuario con el UDID designado del PC permitido en la base de autenticación;
    • Con MFA, utilizando el UDID del PC del certificado para la autenticación secundaria a través de Cisco DUO. (Se puede integrar cualquier SAML/Radius compatible);
  2. Autenticación multifactor:
    • Certificado de usuario con verificación de campos y autenticación secundaria por uno de ellos;
    • Login (inmutable, extraído del certificado) y contraseña;
  3. Evaluación del estado del host que se conecta (Postura);

Componentes utilizados en la solución:

  • Cisco ASA (Puerta de enlace VPN);
  • Cisco ISE (Autenticación / Autorización / Contabilidad, Evaluación del Estado, CA);
  • Cisco DUO (Autenticación Multifactor); (Se puede integrar cualquier SAML/Radius compatible);
  • Cisco AnyConnect (Agente multifuncional para estaciones de trabajo y sistemas operativos móviles);

Comencemos con los requisitos del cliente:

  1. El usuario debe, a través de su autenticación de Login/Contraseña, poder descargar el cliente AnyConnect desde la puerta de enlace VPN, todos los módulos necesarios de AnyConnect deben instalarse automáticamente de acuerdo con la política del usuario;
  2. El usuario debe tener la posibilidad de recibir un certificado automáticamente (para uno de los escenarios, el escenario principal es la emisión manual y carga en el PC), implementé la auto-emisión para la demostración (no está mal eliminarlo nunca).
  3. La autenticación principal debe llevarse a cabo en varias etapas, primero se realiza la autenticación del certificado analizando los campos necesarios y sus valores, luego login/contraseña, pero esta vez el nombre de usuario indicado en el campo del certificado debe aparecer en la ventana de login Subject Name (CN) sin posibilidad de edición.
  4. Es necesario asegurarse de que el dispositivo desde el cual se realiza el ingreso sea el portátil corporativo asignado al usuario para acceso remoto, y no otra cosa. (Se hicieron varias variantes para satisfacer este requisito)
  5. Se debe realizar una evaluación del estado del dispositivo conectado (en esta etapa, PC) verificando toda la extensa tabla de requisitos del cliente (resumiendo):
    • Archivos y sus propiedades;
    • Entradas del registro;
    • Parches del sistema operativo de la lista proporcionada (en adelante, integración de SCCM);
    • Presencia de antivirus de un fabricante específico y actualidad de las firmas;
    • Actividad de ciertos servicios;
    • Presencia de ciertos programas instalados;

Para comenzar, propongo obligatoriamente ver la demostración en video de la implementación resultante en YouTube (5 minutos).

Reproducir video

Ahora propongo considerar los detalles de la implementación que no se mencionaron en el video.

Prepararemos el perfil de AnyConnect:

El ejemplo de creación de un perfil (en el menú de ese punto en ASDM) lo mencioné previamente en mi artículo sobre la configuración de Balanceo de carga VPN de clúster. Ahora quiero destacar especialmente las opciones que necesitaremos:

En el perfil indicaremos la puerta de enlace VPN y el nombre del perfil para la conexión en el cliente final:

Implementación del concepto de acceso remoto altamente seguro

Configuraremos la emisión automática del certificado desde el perfil, especificando, en particular, los parámetros del certificado y, lo que es característico, prestaremos atención al campo Initials (I), donde se ha introducido manualmente un valor específico UDID de la máquina de prueba (Identificador único del dispositivo que genera el cliente de Cisco AnyConnect).

Implementación del concepto de acceso remoto altamente seguro

Aquí quiero hacer una digresión lírica, ya que este artículo describe un concepto; para fines de demostración, aquí se introdujo el UDID para la emisión del certificado en el campo Initials del perfil de AnyConnect. Por supuesto, en la vida real, si haces esto, todos los clientes recibirán un certificado con el mismo UDID en este campo y no funcionará, ya que cada uno necesita el UDID de su PC específico. Lamentablemente, AnyConnect aún no implementa la sustitución en el perfil de la solicitud del certificado en el campo UDID a través de una variable de entorno, como lo hace, por ejemplo, con la variable %USER%.

Cabe destacar que el cliente (de este escenario) planea inicialmente emitir certificados con el UDID especificado manualmente para tales PCs protegidos, lo que no representa un problema para él. Sin embargo, para la mayoría de nosotros, anhelamos automatización (bueno, para mí definitivamente =).

Y esto es lo que puedo ofrecer en cuanto a automatización. Si no se puede emitir el certificado automáticamente mediante AnyConnect insertando dinámicamente el UDID, hay otra manera que requerirá un poco de pensamiento creativo y manos hábiles: explicaré el concepto. Primero, veamos cómo se forma el UDID en diferentes sistemas operativos con el agente AnyConnect:

  • Windows — Hash SHA-256 de la combinación de la clave del registro DigitalProductID y Machine SID
  • OSX — Hash SHA-256 de PlatformUUID
  • Linux — Hash SHA-256 de la UUID de la partición raíz.
  • Apple iOS — Hash SHA-256 de PlatformUUID
  • Android – Consulte el documento sobre el enlace

Por lo tanto, elaboramos un script para nuestros sistemas operativos corporativos Windows, con este script calculamos localmente el UDID a partir de los datos conocidos y generamos una solicitud para la emisión del certificado, introduciendo este UDID en el campo correspondiente. Por cierto, también se puede utilizar un certificado de máquina emitido por AD (añadiendo en el esquema una doble autenticación mediante certificado) Multiple Certificate).

Prepararemos la configuración del lado de Cisco ASA:

Crearemos un TrustPoint para el servidor CA de ISE, que se encargará de emitir certificados a los clientes. No voy a tratar el procedimiento de importación de Key-Chain, un ejemplo está descrito en mi artículo sobre la configuración. Balanceo de carga VPN de clúster.

crypto ca trustpoint ISE-CA
 enrollment terminal
 crl configure

Configuramos la distribución por Tunnel-Group basada en las reglas de acuerdo con los campos en el certificado que se utiliza para la autenticación. También se configura aquí el perfil de AnyConnect que hemos creado en la etapa anterior. Hago hincapié en que utilizo el valor SECUREBANK-RA, para transferir a los usuarios con el certificado emitido al grupo de túneles SECURE-BANK-VPN, tenga en cuenta que este campo está establecido en el campo de solicitud del certificado del perfil de AnyConnect.

tunnel-group-map enable rules
!
crypto ca certificate map OU-Map 6
 subject-name attr ou eq securebank-ra
!
webvpn
 anyconnect profiles SECUREBANK disk0:/securebank.xml
 certificate-group-map OU-Map 6 SECURE-BANK-VPN
!

Configuramos los servidores de autenticación. En mi caso, esto es ISE para la primera etapa de autenticación y DUO (Radius Proxy) como MFA.

! CISCO ISE
aaa-server ISE protocol radius
 authorize-only
 interim-accounting-update periodic 24
 dynamic-authorization
aaa-server ISE (inside) host 192.168.99.134
 key *****
!
! DUO RADIUS PROXY
aaa-server DUO protocol radius
aaa-server DUO (inside) host 192.168.99.136
 timeout 60
 key *****
 authentication-port 1812
 accounting-port 1813
 no mschapv2-capable
!

Creamos políticas grupales y grupos de túneles, así como sus componentes auxiliares:

Grupo de túnel DefaultWEBVPNGroup se utilizará principalmente para descargar el cliente AnyConnect VPN y emitir el certificado del usuario utilizando la función SCEP-Proxy de ASA, para ello hemos activado las opciones correspondientes tanto en el grupo de túneles como en la política de grupo asociada AC-Download, así como en el perfil de AnyConnect que se descarga (campos de emisión de certificados, etc.). También en esta política de grupo indicamos la necesidad de descarga ISE Posture Module.

Grupo de túnel SECURE-BANK-VPN será utilizado automáticamente por el cliente al autenticarse con el certificado emitido en la etapa anterior, dado que de acuerdo con el Mapa de Certificados, la conexión se establecerá precisamente en este grupo de túneles. Aquí hablaré sobre las opciones interesantes:

  • grupo de servidores de autenticación secundaria DUO # Задаем вторичную аутентификацию на сервере DUO (Radius Proxy)
  • nombre de usuario del certificado CN # Используем для первичной аутентификации поле CN сертификата для наследования логина пользователя
  • nombre de usuario secundario del certificado I # Для вторичной аутентификации на сервере DUO используем имя пользователя, извлеченное и поля Initials (I) сертификата.
  • nombre de usuario precargado cliente # делаем предзаполненным имя пользователя в окне аутентификации без возможности изменения
  • nombre de usuario secundario precargado cliente ocultar usar contraseña común push # Прячем окно ввода логина/пароля для вторичной аутентификации DUO и используем для запроса аутентификации вместо поля пароля метод уведомления (sms/push/phone) – дока aquí

!
lista de acceso posture-redirect extendida permite tcp any host 72.163.1.80 
lista de acceso posture-redirect extendida niega ip any any
!
lista de acceso VPN-Filter extendida permite ip any any
!
pool local vpn-pool 192.168.100.33-192.168.100.63 máscara 255.255.255.224
!
política de grupo SECURE-BANK-VPN interna
política de grupo SECURE-BANK-VPN atributos
 servidor-dns valor 192.168.99.155 192.168.99.130
 filtro-vpn valor VPN-Filter
 protocolo-túnel-vpn ssl-client 
 política-split-tunnel tunnelall
 dominio-predeterminado valor ashes.cc
 pools-de-dirección valor vpn-pool
 webvpn
  anyconnect ssl dtls habilitar
  anyconnect mtu 1300
  anyconnect mantener-instalador instalado
  anyconnect ssl mantener vivo 20
  anyconnect ssl método de rekey none
  anyconnect ssl método de rekey ssl
  anyconnect dpd-interval cliente 30
  anyconnect dpd-interval puerta de enlace 30
  anyconnect ssl compresión lzs
  anyconnect dtls compresión lzs
  anyconnect módulos valor iseposture
  anyconnect perfiles valor SECUREBANK tipo usuario
!
política de grupo AC-DOWNLOAD interna
política de grupo AC-DOWNLOAD atributos
 servidor-dns valor 192.168.99.155 192.168.99.130
 filtro-vpn valor VPN-Filter
 protocolo-túnel-vpn ssl-client 
 política-split-tunnel tunnelall
 dominio-predeterminado valor ashes.cc
 pools-de-dirección valor vpn-pool
 url-de-reenvío-scep valor http://ise.ashes.cc:9090/auth/caservice/pkiclient.exe
 webvpn
  anyconnect ssl dtls habilitar
  anyconnect mtu 1300
  anyconnect mantener-instalador instalado
  anyconnect ssl mantener vivo 20
  anyconnect ssl método de rekey none
  anyconnect ssl método de rekey ssl
  anyconnect dpd-interval cliente 30
  anyconnect dpd-interval puerta de enlace 30
  anyconnect ssl compresión lzs
  anyconnect dtls compresión lzs
  anyconnect módulos valor iseposture
  anyconnect perfiles valor SECUREBANK tipo usuario
!
grupo-de-túnel DefaultWEBVPNGroup atributos-generales
 pool-de-dirección vpn-pool
 grupo-de-servidores-de-autenticación ISE
 grupo-de-servidores-de-contabilidad ISE
 política-de-grupo-predeterminada AC-DOWNLOAD
 inscripción-scep habilitar
grupode-túnel DefaultWEBVPNGroup atributos-webvpn
 autenticación aaa certificado
!
grupode-túnel SECURE-BANK-VPN tipo acceso-remoto
grupode-túnel SECURE-BANK-VPN atributos-generales
 pool-de-dirección vpn-pool
 grupo-de-servidores-de-autenticación ISE
 grupo-de-servidores-de-autenticación-secundaria DUO
 grupo-de-servidores-de-contabilidad ISE
 política-de-grupo-predeterminada SECURE-BANK-VPN
 nombre-de-usuario-del-certificado CN
 nombre-de-usuario-secundario-del-certificado I
grupode-túnel SECURE-BANK-VPN atributos-webvpn
 autenticación aaa certificado
 nombre-de-usuario-precargado cliente
 nombre-de-usuario-secundario-precargado cliente ocultar usar-contraseña-común push
 alias-de-grupo SECURE-BANK-VPN habilitar
 grupo-dns ASHES-DNS
!

A continuación, pasamos a ISE:

Configuramos un usuario local (también se puede utilizar AD/LDAP/ODBC, etc.), para simplificar, creé un usuario local en ISE y lo asigné en el campo descripción UDID de la PC desde el cual se permite el acceso a través de VPN. En caso de usar la autenticación local en ISE, estaré limitado a un solo dispositivo, ya que no hay muchos campos, pero no tendré dichas limitaciones en bases de datos de autenticación externas.

Implementación del concepto de acceso remoto altamente seguro

Veamos la política de autorización, que se divide en cuatro etapas de conexión:

  • Etapa 1 — Política para la descarga del agente AnyConnect y la emisión de certificados
  • Etapa 2 — Política de autenticación primaria Login (del certificado)/Contraseña + Certificado con validación de UDID
  • Etapa 3 — Autenticación secundaria a través de Cisco DUO (MFA) por UDID como nombre de usuario + Evaluación del estado
  • Etapa 4 — Autorización final en estado:
    • Cumplido;
    • validación de UDID (del certificado + enlace al login),
    • Cisco DUO MFA;
    • Autenticación por login;
    • Autenticación por certificado;

Implementación del concepto de acceso remoto altamente seguro

Veamos una condición interesante UUID_VALIDATED, que verifica que el usuario que se está autenticando realmente proviene de una PC con el UDID permitido asociado en el campo Descripción de la cuenta, la condición es la siguiente:

Implementación del concepto de acceso remoto altamente seguro

El perfil de autorización que se utiliza en las etapas 1, 2 y 3 es el siguiente:

Implementación del concepto de acceso remoto altamente seguro

Para verificar cómo nos llega el UDID del cliente AnyConnect, se puede revisar en ISE los detalles de la sesión del cliente. En los detalles veremos que AnyConnect a través del mecanismo ACIDEX no solo envía datos sobre la plataforma, sino también el UDID del dispositivo como Cisco-AV-PAIR:

Implementación del concepto de acceso remoto altamente seguro

Prestemos atención al certificado emitido al usuario y al campo Initials (I), que se utiliza para tomarlo como rol de login para la autenticación secundaria MFA en Cisco DUO:

Implementación del concepto de acceso remoto altamente seguro

Del lado de DUO Radius Proxy en el registro, vemos claramente cómo se realiza la solicitud de autenticación, que va utilizando el UDID como nombre de usuario:

Implementación del concepto de acceso remoto altamente seguro

Desde el portal DUO vemos un evento de autenticación exitoso:

Implementación del concepto de acceso remoto altamente seguro

Y en las propiedades del usuario tengo establecido ALIAS, que utilicé para iniciar sesión, que a su vez es el UDID permitido para la PC de inicio de sesión:

Implementación del concepto de acceso remoto altamente seguro

Como resultado obtuvimos:

  • Autenticación multifactor para el usuario y el dispositivo;
  • Protección contra la suplantación del dispositivo del usuario;
  • Evaluación del estado del dispositivo;
  • Potencial para aumentar el control con un certificado de máquina del dominio, etc.;
  • Protección integral del lugar de trabajo remoto con módulos de seguridad que se despliegan automáticamente;

Enlaces a artículos de la serie Cisco VPN:

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster