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:
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);
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;
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:
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;
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).
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.
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)
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:
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).
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
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.
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 DescriptionPC 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.
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;
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:
O perfil de autorización utilizado nas fases 1,2,3, XNUMX, XNUMX é o seguinte:
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:
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:
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:
Desde o portal DUO vemos un evento de autenticación exitoso:
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:
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;