Implantación do concepto de acceso remoto altamente seguro

Continuando a serie de artigos sobre o tema da organización VPN de acceso remoto acceso Non podo evitar compartir a miña interesante experiencia de implementación configuración VPN altamente segura. Un cliente presentou unha tarefa non trivial (hai inventores nas aldeas rusas), pero o Desafío foi aceptado e implementado de forma creativa. O resultado é un concepto interesante coas seguintes características:

  1. Varios factores de protección contra a substitución do dispositivo terminal (con estrita vinculación ao usuario);
    • Valorar o cumprimento do PC do usuario co UDID asignado do PC permitido na base de datos de autenticación;
    • Con MFA usando o PC UDID do certificado para a autenticación secundaria a través de Cisco DUO (Podes anexar calquera compatible con SAML/Radius);
  2. Autenticación multifactor:
    • Certificado de usuario con verificación de campo e autenticación secundaria contra un deles;
    • Login (inmutable, extraído do certificado) e contrasinal;
  3. Estimación do estado do host de conexión (Posture)

Compoñentes da solución empregados:

  • Cisco ASA (VPN Gateway);
  • Cisco ISE (Autenticación / Autorización / Contabilidade, Avaliación do Estado, CA);
  • Cisco DUO (autenticación multifactor) (Podes anexar calquera compatible con SAML/Radius);
  • Cisco AnyConnect (axente multiusos para estacións de traballo e SO móbil);

Comecemos cos requisitos do cliente:

  1. O usuario debe, mediante a súa autenticación de inicio de sesión/contrasinal, poder descargar o cliente AnyConnect desde a pasarela VPN; todos os módulos AnyConnect necesarios deben instalarse automaticamente de acordo coa política do usuario;
  2. O usuario debería poder emitir un certificado automaticamente (para un dos escenarios, o escenario principal é a emisión manual e a carga nun PC), pero eu implementei a emisión automática para a demostración (nunca é demasiado tarde para eliminalo).
  3. A autenticación básica debe levarse a cabo en varias etapas, primeiro hai a autenticación do certificado coa análise dos campos necesarios e os seus valores, logo inicio de sesión/contrasinal, só que nesta ocasión hai que inserir na xanela de inicio de sesión o nome de usuario especificado no campo do certificado. Nome da materia (CN) sen a posibilidade de editar.
  4. Debes asegurarte de que o dispositivo desde o que estás iniciando sesión é o portátil corporativo que se enviou ao usuario para o acceso remoto, e non outra cousa. (Formáronse varias opcións para satisfacer este requisito)
  5. O estado do dispositivo de conexión (nesta fase PC) debe ser avaliado coa comprobación dunha táboa completa de requisitos do cliente (resumo):
    • Ficheiros e as súas propiedades;
    • as entradas do rexistro;
    • Parches do sistema operativo da lista proporcionada (máis tarde integración con SCCM);
    • Dispoñibilidade de antivirus dun fabricante específico e relevancia das sinaturas;
    • Actividade de determinados servizos;
    • Dispoñibilidade de certos programas instalados;

Para comezar, suxiro que mire definitivamente o vídeo de demostración da implementación resultante Youtube (5 minutos).

Agora propoño considerar os detalles de implementación non contemplados no videoclip.

Imos preparar o perfil de AnyConnect:

Anteriormente dei un exemplo de creación dun perfil (en termos dun elemento de menú en ASDM) no meu artigo sobre a configuración Clúster de equilibrio de carga VPN. Agora gustaríame sinalar por separado as opcións que necesitaremos:

No perfil, indicaremos a pasarela VPN e o nome do perfil para conectarse ao cliente final:

Implantación do concepto de acceso remoto altamente seguro

Configuramos a emisión automática dun certificado desde o lado do perfil, indicando, en particular, os parámetros do certificado e, de forma característica, prestemos atención ao campo Iniciais (I), onde se introduce manualmente un valor específico UID máquina de proba (identificador único de dispositivo que xera o cliente Cisco AnyConnect).

Implantación do concepto de acceso remoto altamente seguro

Aquí quero facer unha digresión lírica, xa que este artigo describe o concepto; para efectos de demostración, o UDID para emitir un certificado introdúcese no campo Iniciais do perfil AnyConnect. Por suposto, na vida real, se fai isto, todos os clientes recibirán un certificado co mesmo UDID neste campo e nada lles funcionará, xa que necesitan o UDID do seu PC específico. AnyConnect, desafortunadamente, aínda non implementa a substitución do campo UDID no perfil de solicitude de certificado mediante unha variable de ambiente, como fai, por exemplo, cunha variable %USER%.

Cómpre sinalar que o cliente (deste escenario) planea inicialmente emitir certificados de forma independente cun determinado UDID en modo manual a tales PCs protexidos, o que non é un problema para el. Non obstante, para a maioría de nós queremos automatización (ben, para min é verdade =)).

E isto é o que podo ofrecer en termos de automatización. Se AnyConnect aínda non pode emitir un certificado automaticamente substituíndo dinámicamente o UDID, entón hai outra forma que requirirá un pouco de pensamento creativo e mans hábiles: contareiche o concepto. En primeiro lugar, vexamos como o axente AnyConnect xera o UDID en diferentes sistemas operativos:

  • Windows — Hash SHA-256 da combinación da clave de rexistro DigitalProductID e Machine SID
  • OSX — SHA-256 hash PlatformUUID
  • Linux — Hash SHA-256 do UUID da partición raíz.
  • Apple iOS — SHA-256 hash PlatformUUID
  • androide - Ver documento sobre Ligazón

En consecuencia, creamos un script para os nosos sistemas operativos Windows corporativos, con este script calculamos localmente o UDID utilizando entradas coñecidas e formamos unha solicitude para emitir un certificado introducindo este UDID no campo obrigatorio, por certo, tamén podes usar un certificado de máquina emitido por AD (engadindo dobre autenticación mediante un certificado ao esquema Certificado múltiple).

Imos preparar a configuración do lado de Cisco ASA:

Imos crear un TrustPoint para o servidor ISE CA, será o que emitirá os certificados aos clientes. Non vou considerar o procedemento de importación da cadea de chaves; un exemplo descríbese no meu artigo de configuración Clúster de equilibrio de carga VPN.

crypto ca trustpoint ISE-CA
 enrollment terminal
 crl configure

Configuramos a distribución por Tunnel-Group en función de regras de acordo cos campos do certificado que se usa para a autenticación. O perfil AnyConnect que fixemos na fase anterior tamén se configura aquí. Teña en conta que estou usando o valor SECUREBANK-RA, para transferir usuarios cun certificado emitido a un grupo de túneles SEGURO-BANCO-VPN, teña en conta que teño este campo na columna de solicitude 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
!

Configurar servidores de autenticación. No meu caso, este é ISE para a primeira etapa de autenticación e 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 e grupos de túneles e os seus compoñentes auxiliares:

Grupo túnel Grupo WEBVPNG por defecto utilizarase principalmente para descargar o cliente VPN AnyConnect e emitir un certificado de usuario mediante a función SCEP-Proxy do ASA; para iso temos activadas as opcións correspondentes tanto no propio grupo de túnel como na política de grupo asociada. AC-Descarga, e no perfil AnyConnect cargado (campos para emitir un certificado, etc.). Tamén nesta política de grupo indicamos a necesidade de descargar Módulo Postura ISE.

Grupo túnel SEGURO-BANCO-VPN será utilizado automaticamente polo cliente ao autenticarse co certificado emitido na fase anterior, xa que, de acordo co Mapa de Certificados, a conexión recaerá especificamente neste grupo de túneles. Vouche falar de opcións interesantes aquí:

  • grupo de servidores de autenticación secundaria DUO # Establecer a autenticación secundaria no servidor DUO (Radius Proxy)
  • nome de usuario-desde-certificadoCN # Para a autenticación primaria, usamos o campo CN do certificado para herdar o inicio de sesión do usuario
  • nome-de-usuario-secundario-desde-certificado I # Para a autenticación secundaria no servidor DUO, usamos o nome de usuario extraído e os campos Iniciais (I) do certificado.
  • cliente de pre-completo de nome de usuario # facer que o nome de usuario se enche previamente na xanela de autenticación sen poder cambiar
  • secundario-pre-fill-username cliente ocultar use-common-password push # Ocultamos a xanela de entrada de inicio de sesión/contrasinal para a autenticación secundaria DUO e usamos o método de notificación (sms/push/teléfono): acoplamos para solicitar a autenticación en lugar do campo do contrasinal 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 (podes usar AD/LDAP/ODBC, etc.), para simplificar, creei un usuario local no propio ISE e asignino no campo Description PC UDID desde o que se lle permite iniciar sesión mediante VPN. Se uso a autenticación local en ISE, estarei limitado a un só dispositivo, xa que non hai moitos campos, pero nas bases de datos de autenticación de terceiros non terei tales restricións.

Implantación do concepto de acceso remoto altamente seguro

Vexamos a política de autorización, divídese en catro etapas de conexión:

  • Etapa 1 — Política para descargar o axente AnyConnect e emitir un certificado
  • Etapa 2 — Política de autenticación principal Inicio de sesión (desde o certificado)/Contrasinal + Certificado con validación UDID
  • Etapa 3 — Autenticación secundaria mediante Cisco DUO (MFA) usando UDID como nome de usuario + avaliación do estado
  • Etapa 4 - A autorización definitiva está no estado:
    • Conforme;
    • Validación UDID (desde certificado + vinculación de inicio de sesión),
    • Cisco DUO MFA;
    • Autenticación mediante inicio de sesión;
    • Certificado de autenticación;

Implantación do concepto de acceso remoto altamente seguro

Vexamos unha condición interesante UUID_VALIDAD, parece que o usuario autenticador en realidade procedía dun PC cun UDID permitido asociado no campo descrición conta, as condicións son as seguintes:

Implantación do concepto de acceso remoto altamente seguro

O perfil de autorización utilizado nas fases 1,2,3, XNUMX, XNUMX é o seguinte:

Implantación do concepto de acceso remoto altamente seguro

Podes comprobar exactamente como nos chega o UDID do cliente AnyConnect mirando os detalles da sesión do cliente en ISE. En detalle veremos que AnyConnect a través do mecanismo ACIDEX envía non só información sobre a plataforma, senón tamén o UDID do dispositivo como Cisco-AV-PAIR:

Implantación do concepto de acceso remoto altamente seguro

Prestemos atención ao certificado emitido ao usuario e ao campo Iniciais (I), que se usa para tomalo como inicio de sesión para a autenticación MFA secundaria en Cisco DUO:

Implantación do concepto de acceso remoto altamente seguro

No lado de DUO Radius Proxy no rexistro podemos ver claramente como se fai a solicitude de autenticación, vén usando UDID como nome de usuario:

Implantación do concepto de acceso remoto altamente seguro

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

Implantación do concepto de acceso remoto altamente seguro

E nas propiedades do usuario téñoo configurado ALIAS, que usei para iniciar sesión, á súa vez, este é o UDID do PC permitido para o inicio de sesión:

Implantación do concepto de acceso remoto altamente seguro

Como resultado obtivemos:

  • Autenticación de usuarios e dispositivos multifactor;
  • Protección contra a suplantación do dispositivo do usuario;
  • Avaliación do estado do dispositivo;
  • Potencial para un maior control con certificado de máquina de dominio, etc.;
  • Protección completa do lugar de traballo remoto con módulos de seguridade despregados automaticamente;

Ligazóns a artigos da serie Cisco VPN:

Fonte: www.habr.com

Engadir un comentario