Implementación del concepto de acceso remoto altamente seguro

Continuando con la serie de artículos sobre el tema de la organización. VPN de acceso remoto acceso No puedo evitar compartir mi interesante experiencia de implementación configuración VPN altamente segura. Un cliente presentó una tarea nada trivial (hay inventores en las aldeas rusas), pero el desafío fue aceptado y implementado de manera creativa. El resultado es un concepto interesante con las siguientes características:

  1. Varios factores de protección contra la sustitución del dispositivo terminal (con estricta vinculación al usuario);
    • Evaluar la conformidad de la PC del usuario con el UDID asignado de la PC permitida en la base de datos de autenticación;
    • Con MFA usando el UDID de la PC del certificado para autenticación secundaria a través de Cisco DUO (Puedes adjuntar cualquier compatible con SAML/Radius);
  2. Autenticación multifactor:
    • Certificado de usuario con verificación de campos y autenticación secundaria contra uno de ellos;
    • Nombre de usuario (inmutable, extraído del certificado) y contraseña;
  3. Estimación del estado del host que se conecta (Postura)

Componentes de la solución utilizados:

  • Cisco ASA (puerta de enlace VPN);
  • Cisco ISE (Autenticación/Autorización/Contabilidad, Evaluación del Estado, CA);
  • Cisco DUO (autenticación multifactor) (Puedes adjuntar cualquier compatible con SAML/Radius);
  • Cisco AnyConnect (Agente multipropósito para estaciones de trabajo y SO móviles);

Comencemos con los requisitos del cliente:

  1. El usuario debe, a través de su autenticación de inicio de sesión/contraseña, poder descargar el cliente AnyConnect desde la puerta de enlace VPN; todos los módulos AnyConnect necesarios deben instalarse automáticamente de acuerdo con la política del usuario;
  2. El usuario debería poder emitir un certificado automáticamente (para uno de los escenarios, el escenario principal es la emisión manual y la carga en una PC), pero implementé la emisión automática para demostración (nunca es demasiado tarde para eliminarlo).
  3. La autenticación básica debe realizarse en varias etapas, primero está la autenticación del certificado con el análisis de los campos necesarios y sus valores, luego el inicio de sesión/contraseña, solo que esta vez el nombre de usuario especificado en el campo del certificado debe insertarse en la ventana de inicio de sesión. Nombre del sujeto (CN) sin la posibilidad de editar.
  4. Debe asegurarse de que el dispositivo desde el que inicia sesión sea la computadora portátil corporativa entregada al usuario para acceso remoto y no otra cosa. (Se han creado varias opciones para satisfacer este requisito)
  5. El estado del dispositivo de conexión (en esta etapa, PC) debe evaluarse comprobando una tabla completa de requisitos del cliente (que resume):
    • Archivos y sus propiedades;
    • Asientos registrales;
    • Parches del sistema operativo de la lista proporcionada (posteriormente integración SCCM);
    • Disponibilidad de antivirus de un fabricante específico y relevancia de las firmas;
    • Actividad de determinados servicios;
    • Disponibilidad de ciertos programas instalados;

Para empezar, le sugiero que mire definitivamente el video de demostración de la implementación resultante en Youtube (5 minutos).

Ahora propongo considerar los detalles de implementación que no se tratan en el videoclip.

Preparemos el perfil AnyConnect:

Anteriormente di un ejemplo de creación de un perfil (en términos de un elemento de menú en ASDM) en mi artículo sobre configuración Clúster de equilibrio de carga VPN. Ahora me gustaría señalar por separado las opciones que necesitaremos:

En el perfil indicaremos la puerta de enlace VPN y el nombre del perfil para conectarnos al cliente final:

Implementación del concepto de acceso remoto altamente seguro

Configuremos la emisión automática de un certificado desde el lado del perfil, indicando, en particular, los parámetros del certificado y, como característica, prestemos atención al campo Iniciales (yo), donde se ingresa manualmente un valor específico TU HICISTE máquina de prueba (identificador de dispositivo único generado por el cliente 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 el concepto; para fines de demostración, el UDID para emitir un certificado se ingresa en el campo Iniciales del perfil AnyConnect. Por supuesto, en la vida real, si hace esto, todos los clientes recibirán un certificado con el mismo UDID en este campo y nada les funcionará, ya que necesitan el UDID de su PC específica. Desafortunadamente, AnyConnect aún no implementa la sustitución del campo UDID en el perfil de solicitud de certificado a través de una variable de entorno, como lo hace, por ejemplo, con una variable. %USUARIO%.

Vale la pena señalar que el cliente (de este escenario) inicialmente planea emitir de forma independiente certificados con un UDID determinado en modo manual para dichas PC protegidas, lo cual no es un problema para él. Sin embargo, la mayoría de nosotros queremos la automatización (bueno, para mí es cierto =)).

Y esto es lo que puedo ofrecer en términos de automatización. Si AnyConnect aún no puede emitir un certificado automáticamente sustituyendo dinámicamente el UDID, entonces hay otra forma que requerirá un poco de pensamiento creativo y manos hábiles: le contaré el concepto. Primero, veamos cómo el agente AnyConnect genera el UDID en diferentes sistemas operativos:

  • Windows — Hash SHA-256 de la combinación de la clave de registro DigitalProductID y Machine SID
  • OSX — Plataforma de hash SHA-256UUID
  • Linux — Hash SHA-256 del UUID de la partición raíz.
  • apple iOS — Plataforma de hash SHA-256UUID
  • Android – Ver documento en enlace

En consecuencia, creamos un script para nuestro sistema operativo Windows corporativo, con este script calculamos localmente el UDID utilizando entradas conocidas y formamos una solicitud para emitir un certificado ingresando este UDID en el campo requerido, por cierto, también puede usar una máquina certificado emitido por AD (agregando doble autenticación mediante un certificado al esquema Certificado múltiple).

Preparemos la configuración en el lado de Cisco ASA:

Creemos un TrustPoint para el servidor ISE CA, será el que emitirá los certificados a los clientes. No consideraré el procedimiento de importación del llavero; se describe un ejemplo en mi artículo sobre configuración Clúster de equilibrio de carga VPN.

crypto ca trustpoint ISE-CA
 enrollment terminal
 crl configure

Configuramos la distribución por Tunnel-Group en función de reglas de acuerdo con los campos del certificado que se utiliza para la autenticación. El perfil AnyConnect que creamos en la etapa anterior también se configura aquí. Tenga en cuenta que estoy usando el valor SECUREBANK-RA, para transferir usuarios con un certificado emitido a un grupo de túnel VPN-BANCO-SEGURO, tenga en cuenta que tengo este campo en la columna de solicitud de certificado de 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
!

Configuración de servidores de autenticación. En mi caso, este 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 de grupo y grupos de túneles y sus componentes auxiliares:

Grupo de túneles Grupo WEBVPN predeterminado Se utilizará principalmente para descargar el cliente VPN AnyConnect y emitir un certificado de usuario utilizando la función SCEP-Proxy del ASA, para ello tenemos activadas las opciones correspondientes tanto en el propio grupo de túneles como en la política de grupo asociada. Descarga ACy en el perfil AnyConnect cargado (campos para emitir un certificado, etc.). También en esta política de grupo indicamos la necesidad de descargar Módulo de postura ISE.

Grupo de túneles VPN-BANCO-SEGURO será utilizado automáticamente por el cliente al autenticarse con el certificado emitido en la etapa anterior, ya que, de acuerdo con el Mapa de Certificados, la conexión recaerá específicamente en este grupo de túneles. Te cuento opciones interesantes aquí:

  • grupo-de-servidor-de-autenticación-secundario DUO # Establecer autenticación secundaria en el servidor DUO (Radius Proxy)
  • nombre de usuario del certificado CN # Para la autenticación primaria, utilizamos el campo CN del certificado para heredar el inicio de sesión del usuario.
  • nombre de usuario secundario del certificado I # Para la autenticación secundaria en el servidor DUO, utilizamos el nombre de usuario extraído y los campos Iniciales (I) del certificado.
  • cliente de precompletar nombre de usuario # hacer que el nombre de usuario se complete previamente en la ventana de autenticación sin la posibilidad de cambiarlo
  • cliente secundario de pre-rellenado de nombre de usuario ocultar uso de contraseña común push # Ocultamos la ventana de ingreso de inicio de sesión/contraseña para la autenticación secundaria DUO y usamos el método de notificación (sms/push/teléfono): acoplamos para solicitar autenticación en lugar del campo de contraseña aquí

!
access-list posture-redirect extended permit tcp any host 72.163.1.80 
access-list posture-redirect extended deny ip any any
!
access-list VPN-Filter extended permit ip any any
!
ip local pool vpn-pool 192.168.100.33-192.168.100.63 mask 255.255.255.224
!
group-policy SECURE-BANK-VPN internal
group-policy SECURE-BANK-VPN attributes
 dns-server value 192.168.99.155 192.168.99.130
 vpn-filter value VPN-Filter
 vpn-tunnel-protocol ssl-client 
 split-tunnel-policy tunnelall
 default-domain value ashes.cc
 address-pools value vpn-pool
 webvpn
  anyconnect ssl dtls enable
  anyconnect mtu 1300
  anyconnect keep-installer installed
  anyconnect ssl keepalive 20
  anyconnect ssl rekey time none
  anyconnect ssl rekey method ssl
  anyconnect dpd-interval client 30
  anyconnect dpd-interval gateway 30
  anyconnect ssl compression lzs
  anyconnect dtls compression lzs
  anyconnect modules value iseposture
  anyconnect profiles value SECUREBANK type user
!
group-policy AC-DOWNLOAD internal
group-policy AC-DOWNLOAD attributes
 dns-server value 192.168.99.155 192.168.99.130
 vpn-filter value VPN-Filter
 vpn-tunnel-protocol ssl-client 
 split-tunnel-policy tunnelall
 default-domain value ashes.cc
 address-pools value vpn-pool
 scep-forwarding-url value http://ise.ashes.cc:9090/auth/caservice/pkiclient.exe
 webvpn
  anyconnect ssl dtls enable
  anyconnect mtu 1300
  anyconnect keep-installer installed
  anyconnect ssl keepalive 20
  anyconnect ssl rekey time none
  anyconnect ssl rekey method ssl
  anyconnect dpd-interval client 30
  anyconnect dpd-interval gateway 30
  anyconnect ssl compression lzs
  anyconnect dtls compression lzs
  anyconnect modules value iseposture
  anyconnect profiles value SECUREBANK type user
!
tunnel-group DefaultWEBVPNGroup general-attributes
 address-pool vpn-pool
 authentication-server-group ISE
 accounting-server-group ISE
 default-group-policy AC-DOWNLOAD
 scep-enrollment enable
tunnel-group DefaultWEBVPNGroup webvpn-attributes
 authentication aaa certificate
!
tunnel-group SECURE-BANK-VPN type remote-access
tunnel-group SECURE-BANK-VPN general-attributes
 address-pool vpn-pool
 authentication-server-group ISE
 secondary-authentication-server-group DUO
 accounting-server-group ISE
 default-group-policy SECURE-BANK-VPN
 username-from-certificate CN
 secondary-username-from-certificate I
tunnel-group SECURE-BANK-VPN webvpn-attributes
 authentication aaa certificate
 pre-fill-username client
 secondary-pre-fill-username client hide use-common-password push
 group-alias SECURE-BANK-VPN enable
 dns-group ASHES-DNS
!

A continuación pasamos a ISE:

Configuramos un usuario local (puede usar AD/LDAP/ODBC, etc.), para simplificar, creé un usuario local en el propio ISE y lo asigné en el campo descripción PC UDID desde donde se le permite iniciar sesión a través de VPN. Si uso la autenticación local en ISE, estaré limitado a un solo dispositivo, ya que no hay muchos campos, pero en bases de datos de autenticación de terceros no tendré tales restricciones.

Implementación del concepto de acceso remoto altamente seguro

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

  • etapa 1 — Política para descargar el agente AnyConnect y emitir un certificado
  • etapa 2 — Política de autenticación primaria Inicio de sesión (desde el certificado)/Contraseña + Certificado con validación UDID
  • etapa 3 — Autenticación secundaria a través de Cisco DUO (MFA) usando UDID como nombre de usuario + Evaluación de estado
  • etapa 4 — La autorización final se encuentra en el estado:
    • Obediente;
    • Validación UDID (desde certificado + enlace de inicio de sesión),
    • Cisco DUO MFA;
    • Autenticación mediante inicio de sesión;
    • Autenticación de certificados;

Implementación del concepto de acceso remoto altamente seguro

Veamos una condición interesante. UUID_VALIDADO, parece que el usuario que se autentica en realidad vino de una PC con un UDID permitido asociado en el campo Descripción cuenta, las condiciones se ven así:

Implementación del concepto de acceso remoto altamente seguro

El perfil de autorización utilizado en las etapas 1,2,3 es el siguiente:

Implementación del concepto de acceso remoto altamente seguro

Puede comprobar exactamente cómo nos llega el UDID del cliente AnyConnect consultando los detalles de la sesión del cliente en ISE. En detalle veremos que AnyConnect a través del mecanismo ACIDEX envía no sólo información 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. Iniciales (yo), que se utiliza para tomarlo como inicio de sesión para la autenticación MFA secundaria en Cisco DUO:

Implementación del concepto de acceso remoto altamente seguro

En el lado de DUO Radius Proxy en el log podemos ver claramente cómo se realiza la solicitud de autenticación, viene usando 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 de usuario lo tengo configurado. ALIAS, que utilicé para iniciar sesión; a su vez, este es el UDID de la PC permitida para iniciar sesión:

Implementación del concepto de acceso remoto altamente seguro

Como resultado obtuvimos:

  • Autenticación multifactor de usuarios y dispositivos;
  • Protección contra la suplantación de identidad del dispositivo del usuario;
  • Evaluar el estado del dispositivo;
  • Potencial para un mayor control con certificado de máquina de dominio, etc.;
  • Protección integral del lugar de trabajo remoto con módulos de seguridad implementados automáticamente;

Enlaces a artículos de la serie Cisco VPN:

Fuente: habr.com

Añadir un comentario