Implementação do conceito de acesso remoto altamente seguro

Continuando a série de artigos sobre o tema organização VPN de acesso remoto acesso, não posso deixar de compartilhar minha interessante experiência de implantação configuração VPN altamente segura. Uma tarefa nada trivial foi apresentada por um cliente (há inventores nas aldeias russas), mas o Desafio foi aceito e implementado de forma criativa. O resultado é um conceito interessante com as seguintes características:

  1. Diversos factores de protecção contra substituição do dispositivo terminal (com estrita vinculação ao utilizador);
    • Avaliar a conformidade do PC do usuário com o UDID atribuído do PC permitido no banco de dados de autenticação;
    • Com MFA usando o UDID do PC do certificado para autenticação secundária via Cisco DUO (Você pode anexar qualquer compatível com SAML/Radius);
  2. Autenticação multifator:
    • Certificado de usuário com verificação de campo e autenticação secundária contra um deles;
    • Login (inalterável, retirado do certificado) e senha;
  3. Estimando o estado do host de conexão (Postura)

Componentes da solução usados:

  • Cisco ASA (Gateway VPN);
  • Cisco ISE (Autenticação/Autorização/Contabilidade, Avaliação de Estado, CA);
  • Cisco DUO (autenticação multifator) (Você pode anexar qualquer compatível com SAML/Radius);
  • Cisco AnyConnect (agente multifuncional para estações de trabalho e sistemas operacionais móveis);

Vamos começar com os requisitos do cliente:

  1. O usuário deve, através de sua autenticação Login/Senha, ser capaz de baixar o cliente AnyConnect do gateway VPN; todos os módulos AnyConnect necessários devem ser instalados automaticamente de acordo com a política do usuário;
  2. O usuário deveria ser capaz de emitir automaticamente um certificado (para um dos cenários, o cenário principal é a emissão manual e o upload em um PC), mas implementei a emissão automática para demonstração (nunca é tarde para removê-lo).
  3. A autenticação básica deve ocorrer em várias etapas, primeiro há a autenticação do certificado com análise dos campos necessários e seus valores, depois login/senha, só que desta vez o nome de usuário especificado no campo do certificado deve ser inserido na janela de login Nome do Assunto (CN) sem a capacidade de editar.
  4. Você precisa ter certeza de que o dispositivo a partir do qual você está fazendo login é o laptop corporativo fornecido ao usuário para acesso remoto, e não outra coisa. (Várias opções foram feitas para satisfazer este requisito)
  5. O estado do dispositivo de conexão (neste estágio, PC) deve ser avaliado verificando toda uma tabela robusta de requisitos do cliente (resumindo):
    • Arquivos e suas propriedades;
    • Entradas de registro;
    • Patches de sistema operacional da lista fornecida (integração posterior do SCCM);
    • Disponibilidade de Antivírus de fabricante específico e relevância das assinaturas;
    • Atividade de determinados serviços;
    • Disponibilidade de determinados programas instalados;

Para começar, sugiro que você assista definitivamente ao vídeo de demonstração da implementação resultante em Youtube (5 minutos).

Agora proponho considerar os detalhes de implementação não abordados no videoclipe.

Vamos preparar o perfil AnyConnect:

Anteriormente dei um exemplo de criação de um perfil (em termos de um item de menu no ASDM) em meu artigo sobre configuração Cluster de balanceamento de carga VPN. Agora gostaria de observar separadamente as opções que precisaremos:

No perfil indicaremos o gateway VPN e o nome do perfil para conexão com o cliente final:

Implementação do conceito de acesso remoto altamente seguro

Vamos configurar a emissão automática de um certificado do lado do perfil, indicando, em particular, os parâmetros do certificado e, caracteristicamente, ficar atento ao campo Iniciais (EU), onde um valor específico é inserido manualmente VOCE FEZ máquina de teste (identificador de dispositivo exclusivo gerado pelo cliente Cisco AnyConnect).

Implementação do conceito de acesso remoto altamente seguro

Aqui quero fazer uma digressão lírica, pois este artigo descreve o conceito; para fins de demonstração, o UDID para emissão de certificado é inserido no campo Iniciais do perfil AnyConnect. Claro que na vida real, se você fizer isso, todos os clientes receberão um certificado com o mesmo UDID neste campo e nada funcionará para eles, pois precisam do UDID do seu PC específico. O AnyConnect, infelizmente, ainda não implementa a substituição do campo UDID no perfil de solicitação de certificado por meio de uma variável de ambiente, como faz, por exemplo, com uma variável %DO UTILIZADOR%.

É importante notar que o cliente (neste cenário) planeja inicialmente emitir certificados de forma independente com um determinado UDID em modo manual para esses PCs protegidos, o que não é um problema para ele. No entanto, para a maioria de nós queremos automação (bem, para mim é verdade =)).

E é isso que posso oferecer em termos de automação. Se o AnyConnect ainda não for capaz de emitir um certificado automaticamente substituindo dinamicamente o UDID, há outra maneira que exigirá um pouco de pensamento criativo e mãos habilidosas - vou lhe contar o conceito. Primeiro, vejamos como o UDID é gerado em diferentes sistemas operacionais pelo agente AnyConnect:

  • Windows — Hash SHA-256 da combinação da chave de registro DigitalProductID e Machine SID
  • OSX — Plataforma de hash SHA-256UUID
  • Linux — Hash SHA-256 do UUID da partição raiz.
  • apple iOS — Plataforma de hash SHA-256UUID
  • Android – Ver documento em link

Dessa forma, criamos um script para nosso sistema operacional Windows corporativo, com este script calculamos localmente o UDID usando entradas conhecidas e formamos uma solicitação de emissão de certificado inserindo este UDID no campo obrigatório, aliás, você também pode usar uma máquina certificado emitido pelo AD (adicionando autenticação dupla usando um certificado ao esquema Certificado múltiplo).

Vamos preparar as configurações do lado Cisco ASA:

Vamos criar um TrustPoint para o servidor ISE CA, será ele que emitirá os certificados aos clientes. Não considerarei o procedimento de importação do Key-Chain; um exemplo está descrito em meu artigo sobre configuração Cluster de balanceamento de carga VPN.

crypto ca trustpoint ISE-CA
 enrollment terminal
 crl configure

Configuramos a distribuição por Tunnel-Group com base em regras de acordo com os campos do certificado que é utilizado para autenticação. O perfil AnyConnect que criamos na etapa anterior também é configurado aqui. Observe que estou usando o valor SECUREBANK-RA, para transferir usuários com um certificado emitido para um grupo de túneis BANCO SEGURO-VPN, observe que tenho esse campo na coluna de solicitação de certificado de perfil do 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
!

Configurando servidores de autenticação. No meu caso, é ISE para o primeiro estágio de autenticação 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
!

Criamos políticas de grupo e grupos de túneis e seus componentes auxiliares:

Grupo de túneis Grupo WEBVPN padrão será usado principalmente para baixar o cliente VPN AnyConnect e emitir um certificado de usuário usando a função SCEP-Proxy do ASA; para isso temos as opções correspondentes ativadas tanto no próprio grupo de túneis quanto na política de grupo associada AC-Downloade no perfil AnyConnect carregado (campos para emissão de certificado, etc.). Também nesta política de grupo indicamos a necessidade de download Módulo de Postura ISE.

Grupo de túneis BANCO SEGURO-VPN será utilizado automaticamente pelo cliente ao se autenticar com o certificado emitido na etapa anterior, pois, de acordo com o Mapa de Certificados, a conexão recairá especificamente sobre este grupo de túneis. Vou falar sobre opções interessantes aqui:

  • grupo de servidores de autenticação secundária DUO # Defina a autenticação secundária no servidor DUO (Radius Proxy)
  • nome de usuário do certificadoCN # Para autenticação primária, utilizamos o campo CN do certificado para herdar o login do usuário
  • nome de usuário secundário do certificado I # Para autenticação secundária no servidor DUO, utilizamos o nome de usuário extraído e os campos Iniciais (I) do certificado.
  • cliente de pré-preenchimento de nome de usuário # torna o nome de usuário pré-preenchido na janela de autenticação sem a possibilidade de alteração
  • cliente de pré-preenchimento de nome de usuário secundário ocultar uso de senha comum push # Escondemos a janela de entrada de login/senha para autenticação secundária DUO e usamos o método de notificação (sms/push/telefone) - dock para solicitar autenticação em vez do campo de senha aqui

!
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
!

Em seguida, passamos para o ISE:

Configuramos um usuário local (você pode usar AD/LDAP/ODBC, etc.), para simplificar, criei um usuário local no próprio ISE e atribuí-lo no campo descrição PC UDID a partir do qual ele tem permissão para fazer login via VPN. Se eu utilizar autenticação local no ISE, ficarei limitado a apenas um dispositivo, pois não existem muitos campos, mas em bancos de dados de autenticação de terceiros não terei tais restrições.

Implementação do conceito de acesso remoto altamente seguro

Vejamos a política de autorização, ela está dividida em quatro etapas de conexão:

  • estágio 1 — Política para baixar o agente AnyConnect e emitir um certificado
  • estágio 2 — Política de autenticação primária Login (do certificado)/Senha + Certificado com validação UDID
  • estágio 3 — Autenticação secundária via Cisco DUO (MFA) usando UDID como nome de usuário + avaliação de estado
  • estágio 4 — A autorização final está no estado:
    • Compatível;
    • Validação UDID (de certificado + ligação de login),
    • Cisco DUO MFA;
    • Autenticação por login;
    • Autenticação de certificado;

Implementação do conceito de acesso remoto altamente seguro

Vejamos uma condição interessante UUID_VALIDADO, parece que o usuário autenticado veio de um PC com um UDID permitido associado no campo Descrição conta, as condições são assim:

Implementação do conceito de acesso remoto altamente seguro

O perfil de autorização utilizado nas etapas 1,2,3 é o seguinte:

Implementação do conceito de acesso remoto altamente seguro

Você pode verificar exatamente como o UDID do cliente AnyConnect chega até nós observando os detalhes da sessão do cliente no ISE. Em detalhes veremos que AnyConnect através do mecanismo ÁCIDO envia não apenas informações sobre a plataforma, mas também o UDID do dispositivo conforme Cisco-AV-PAIR:

Implementação do conceito de acesso remoto altamente seguro

Vamos ficar atentos ao certificado emitido para o usuário e ao campo Iniciais (EU), que é usado para considerá-lo um login para autenticação MFA secundária no Cisco DUO:

Implementação do conceito de acesso remoto altamente seguro

No lado do DUO Radius Proxy no log podemos ver claramente como é feita a solicitação de autenticação, ela vem usando UDID como nome de usuário:

Implementação do conceito de acesso remoto altamente seguro

No portal DUO vemos um evento de autenticação bem-sucedido:

Implementação do conceito de acesso remoto altamente seguro

E nas propriedades do usuário eu configurei ALIAS, que utilizei para login, por sua vez, esse é o UDID do PC permitido para login:

Implementação do conceito de acesso remoto altamente seguro

Como resultado obtivemos:

  • Autenticação multifatorial de usuários e dispositivos;
  • Proteção contra falsificação do dispositivo do usuário;
  • Avaliar o estado do dispositivo;
  • Potencial para maior controle com certificado de máquina de domínio, etc.;
  • Proteção abrangente do local de trabalho remoto com módulos de segurança implantados automaticamente;

Links para artigos da série Cisco VPN:

Fonte: habr.com

Adicionar um comentário