Implementação do conceito de acesso remoto de alta segurança.

Dando continuidade à série de artigos sobre organização VPN de Acesso Remoto de acesso, não posso deixar de compartilhar uma experiência interessante de implementação de uma configuração VPN altamente segura. Um cliente lançou um desafio não trivial (há criadores de histórias nas aldeias russas), mas Aceitei o Desafio e realizei-o de forma criativa. O resultado foi um conceito interessante com as seguintes características:

  1. Vários fatores de proteção contra falsificação do dispositivo final (com vinculação rígida ao usuário);
    • Avaliação da conformidade do PC do usuário com o UDID designado do PC permitido no banco de autenticação;
    • Com MFA, utilizando o UDID do PC do certificado para autenticação secundária através do Cisco DUO (Pode-se integrar qualquer compatível com SAML/RADIUS);
  2. Autenticação multifatorial:
    • Certificado do usuário com verificação de campos e autenticação secundária com base em um deles;
    • Login (imutável, retirado do certificado) e senha;
  3. Avaliação do estado do host conectado (Postura)

Componentes utilizados na solução:

  • Cisco ASA (Gateway VPN);
  • Cisco ISE (Autenticação / Autorização / Contabilização, Avaliação de Estado, CA);
  • Cisco DUO (Autenticação Multifatorial) (Pode-se integrar qualquer compatível com SAML/RADIUS);
  • Cisco AnyConnect (Agente multifuncional para estações de trabalho e sistemas operacionais móveis);

Comecemos pelos requisitos do cliente:

  1. O usuário deve, com sua autenticação de Login/Senha, ter a capacidade de fazer o download do cliente AnyConnect do gateway VPN, todos os módulos necessários do AnyConnect devem ser instalados automaticamente de acordo com a política do usuário;
  2. O usuário deve ter a possibilidade de emissão automática do certificado (para um dos cenários, o cenário principal é a emissão manual e upload no PC), eu implementei a emissão automática para demonstração (nunca é tarde demais para remover).
  3. A autenticação principal deve ocorrer em várias etapas, inicialmente a autenticação do certificado com análise dos campos necessários e seus valores, em seguida login/senha, mas desta vez na janela de login deve ser inserido o nome de usuário especificado no campo do certificado Nome do Assunto (CN) sem a possibilidade de edição.
  4. É necessário garantir que o dispositivo a partir do qual o acesso é realizado seja o laptop corporativo fornecido ao usuário para acesso remoto, e não qualquer outra coisa. (Vários métodos foram implementados para satisfazer este requisito)
  5. Deve ser realizada uma avaliação do estado do dispositivo conectado (nesta fase, o PC) com a verificação de toda a extensa tabela de requisitos do cliente (resumindo):
    • Arquivos e suas propriedades;
    • Entradas do registro;
    • Patches do SO da lista fornecida (futuramente integração SCCM);
    • Presença de antivírus de um fabricante específico e atualidade das assinaturas;
    • Atividade de determinados serviços;
    • Presença de certos programas instalados;

Para começar, sugiro obrigatoriamente assistir à demonstração em vídeo da implementação obtida em Youtube (5 minutos).

Por que no hosting comum a administração do PrestaShop é lenta, e no seu não é?

Agora, proponho examinar os detalhes da implementação não abordados no vídeo.

Vamos preparar o perfil AnyConnect:

Um exemplo de criação de perfil (em termos de menu no ASDM) foi anteriormente apresentado em meu artigo sobre configuração VPN Load-Balancing de cluster. Agora, quero destacar separadamente as opções que precisaremos:

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

Implementação do conceito de acesso remoto de alta segurança.

Faremos a configuração da emissão automática de certificado pelo perfil, especificando, entre outras coisas, os parâmetros do certificado e, notavelmente, prestaremos atenção ao campo Initials (I), onde um valor específico foi inserido manualmente UDID do dispositivo de teste (Identificador Único do Dispositivo, gerado pelo cliente Cisco AnyConnect).

Implementação do conceito de acesso remoto de alta segurança.

Aqui quero fazer uma digressão lírica, pois este artigo descreve a concepção; para fins de demonstração, esse UDID foi inserido no campo Initials do perfil AnyConnect. Claro que, na vida real, se você fizer isso, todos os clientes receberão um certificado com o mesmo UDID nesse campo e nada funcionará para eles, pois eles precisam do UDID específico de seu PC. Infelizmente, o AnyConnect ainda não implementa a substituição no perfil da solicitação do certificado pelo campo UDID através de variável de ambiente, como faz, por exemplo, com a variável %USER%.

Vale ressaltar que o cliente (deste cenário) inicialmente planeja emitir os certificados com o UDID especificado manualmente para esses PCs Protegidos, o que não é um problema para ele. No entanto, para a maioria de nós, a automação é desejável (bem, para mim com certeza =).

E aqui está o que eu posso oferecer em termos de automação. Se o certificado puder ser gerado automaticamente, colocando o UDID dinamicamente, ainda há outra maneira que exigirá um pouco de criatividade e mãos habilidosas – vou explicar a concepção. Para começar, vamos analisar como o UDID é gerado em diferentes sistemas operacionais pelo agente AnyConnect:

  • Windows — hash SHA-256 da combinação da chave do registro DigitalProductID e Machine SID
  • OSX — hash SHA-256 do PlatformUUID
  • Linux — hash SHA-256 do UUID da partição raiz.
  • Apple iOS — hash SHA-256 do PlatformUUID
  • Android – Veja o documento sobre link

Assim, vamos criar um script para nossos sistemas operacionais Windows corporativos, e com esse script calculamos localmente o UDID a partir das informações conhecidas e geramos um pedido para a emissão do certificado inserindo este UDID no campo correto, aliás, pode ser também o certificado de máquina emitido pelo AD (adicionando à estrutura a dupla autenticação via certificado. Multiple Certificate).

Prepararemos as configurações do lado do Cisco ASA:

Vamos criar um TrustPoint para o servidor ISE CA, que será o responsável pela emissão dos certificados para os clientes. Não falarei sobre o procedimento de importação de Key-Chain, um exemplo está descrito no meu artigo sobre configuração. VPN Load-Balancing de cluster.

crypto ca trustpoint ISE-CA
 enrollment terminal
 crl configure

Configuramos a distribuição por Tunnel-Group com base nas regras de acordo com os campos no certificado, que é utilizado para autenticação. Aqui também é configurado o perfil AnyConnect que criamos na etapa anterior. Chamo a atenção para o fato de que estou usando o valor SECUREBANK-RA, para transferir usuários com o certificado emitido para o grupo de túnel SECURE-BANK-VPN, observe que este campo está preenchido no pedido de certificado do perfil 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 os servidores de autenticação. No meu caso, este é o ISE para a primeira fase 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únel e seus componentes auxiliares:

Grupo de túnel DefaultWEBVPNGroup será usada primeiramente para baixar o cliente AnyConnect VPN e emitir o certificado do usuário usando a função SCEP-Proxy do ASA, para isso temos opções correspondentes ativadas tanto no grupo de túnel quanto na política de grupo associada AC-Download, bem como no perfil AnyConnect baixado (campos de emissão de certificado, etc.). Também nesta política de grupo, especificamos a necessidade de download ISE Posture Module.

Grupo de túnel SECURE-BANK-VPN será automaticamente usado pelo cliente na autenticação do certificado emitido na etapa anterior, pois de acordo com o Mapa de Certificados, a conexão será estabelecida exatamente neste grupo de túnel. Farei uma breve descrição das opções interessantes aqui:

  • grupo de servidor de autenticação secundária DUO # Задаем вторичную аутентификацию на сервере DUO (Radius Proxy)
  • nome de usuário do certificado CN # Используем для первичной аутентификации поле CN сертификата для наследования логина пользователя
  • nome de usuário secundário do certificado I # Для вторичной аутентификации на сервере DUO используем имя пользователя, извлеченное и поля Initials (I) сертификата.
  • preencher-nome-de-usuário cliente # делаем предзаполненным имя пользователя в окне аутентификации без возможности изменения
  • preencher-nome-de-usuário secundário cliente oculto usar-senha-comum push # Прячем окно ввода логина/пароля для вторичной аутентификации DUO и используем для запроса аутентификации вместо поля пароля метод уведомления (sms/push/phone) – дока aqui

!
lista-de-acesso posture-redirect estendida permite tcp qualquer host 72.163.1.80 
lista-de-acesso posture-redirect estendida nega ip qualquer qualquer
!
lista-de-acesso VPN-Filter estendida permite ip qualquer qualquer
!
piscina local vpn-pool 192.168.100.33-192.168.100.63 máscara 255.255.255.224
!
pólitica-de-grupo SECURE-BANK-VPN interna
pólitica-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-túnel-dividido tunnelall
 domínio-padrão valor ashes.cc
 piscinas-de-endereços valor vpn-pool
 webvpn
  anyconnect ssl dtls habilitar
  anyconnect mtu 1300
  anyconnect manter-instalador instalado
  anyconnect ssl manter-vivo 20
  anyconnect ssl rekey tempo nenhum
  anyconnect ssl rekey método ssl
  anyconnect dpd-interval cliente 30
  anyconnect dpd-interval gateway 30
  anyconnect ssl compressão lzs
  anyconnect dtls compressão lzs
  anyconnect módulos valor iseposture
  anyconnect perfis valor SECUREBANK tipo usuário
!
pólitica-de-grupo AC-DOWNLOAD interna
pólitica-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-túnel-dividido tunnelall
 domínio-padrão valor ashes.cc
 piscinas-de-endereços valor vpn-pool
 scep-forwarding-url valor http://ise.ashes.cc:9090/auth/caservice/pkiclient.exe
 webvpn
  anyconnect ssl dtls habilitar
  anyconnect mtu 1300
  anyconnect manter-instalador instalado
  anyconnect ssl manter-vivo 20
  anyconnect ssl rekey tempo nenhum
  anyconnect ssl rekey método ssl
  anyconnect dpd-interval cliente 30
  anyconnect dpd-interval gateway 30
  anyconnect ssl compressão lzs
  anyconnect dtls compressão lzs
  anyconnect módulos valor iseposture
  anyconnect perfis valor SECUREBANK tipo usuário
!
grupo-túnel DefaultWEBVPNGroup atributos-gerais
 piscina-de-endereços vpn-pool
 grupo-servidor-autenticação ISE
 grupo-servidor-contabilidade ISE
 política-grupo-padrão AC-DOWNLOAD
 scep-inscrição habilitar
grupo-túnel DefaultWEBVPNGroup atributos-webvpn
 autenticação aaa certificado
!
grupo-túnel SECURE-BANK-VPN tipo acesso-remoto
grupo-túnel SECURE-BANK-VPN atributos-gerais
 piscina-de-endereços vpn-pool
 grupo-servidor-autenticação ISE
 grupo-servidor-autenticação-secundária DUO
 grupo-servidor-contabilidade ISE
 política-grupo-padrão SECURE-BANK-VPN
 nome-de-usuário-do-certificado CN
 nome-de-usuário-secundário-do-certificado I
grupo-túnel SECURE-BANK-VPN atributos-webvpn
 autenticação aaa certificado
 preencher-nome-de-usuário cliente
 preencher-nome-de-usuário-secundário cliente oculto usar-senha-comum push
 apelido-do-grupo SECURE-BANK-VPN habilitar
 grupo-dns ASHES-DNS
!

Em seguida, vamos para o ISE:

Configuramos um usuário local (também é possível usar AD/LDAP/ODBC, etc.), para simplificar, eu criei um usuário local diretamente no ISE e atribuí no campo descrição UDID do PC a partir do qual ele está autorizado a entrar via VPN. No caso de usar autenticação local no ISE, serei limitado a apenas um dispositivo, pois não existem muitos campos, mas em bancos de autenticação externos não terei essas restrições.

Implementação do conceito de acesso remoto de alta segurança.

Vamos dar uma olhada na política de autorização, que é dividida em quatro etapas de conexão:

  • Etapa 1 — Política para download do agente AnyConnect e emissão do certificado
  • Etapa 2 — Política de autenticação primária Login (do certificado)/Senha + Certificado com validação UDID
  • Etapa 3 — Autenticação secundária via Cisco DUO (MFA) com UDID como nome de usuário + Avaliação de estado
  • Etapa 4 — Autorização final no estado:
    • Conforme;
    • validação do UDID (do certificado + vinculação ao login),
    • Cisco DUO MFA;
    • Autenticação por login;
    • Autenticação por certificado;

Implementação do conceito de acesso remoto de alta segurança.

Vamos analisar uma condição interessante UUID_VALIDATED, que verifica se o usuário autenticado realmente está vindo de um PC com o UDID permitido associado no campo Descrição da conta, a condição é a seguinte:

Implementação do conceito de acesso remoto de alta segurança.

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

Implementação do conceito de acesso remoto de alta segurança.

Podemos verificar como o UDID é recebido do cliente AnyConnect observando os detalhes da sessão do cliente no ISE. Nos detalhes, veremos que o AnyConnect usa o mecanismo ACIDEX para enviar não apenas dados sobre a plataforma, mas também o UDID do dispositivo como Cisco-AV-PAIR:

Implementação do conceito de acesso remoto de alta segurança.

Vamos prestar atenção no certificado emitido para o usuário e no campo Initials (I), que é usado para pegar esse campo como login para a autenticação secundária MFA na Cisco DUO:

Implementação do conceito de acesso remoto de alta segurança.

Do lado do Proxy RADIUS da DUO, no log, vemos claramente como ocorre a solicitação de autenticação, que é feita usando o UDID como nome de usuário:

Implementação do conceito de acesso remoto de alta segurança.

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

Implementação do conceito de acesso remoto de alta segurança.

E nas propriedades do usuário, tenho definido um ALIAS, que utilizei para o login, que por sua vez é o UDID permitido para o PC de login:

Implementação do conceito de acesso remoto de alta segurança.

Como resultado, obtivemos:

  • Autenticação multifatorial do usuário e do dispositivo;
  • Proteção contra substituição do dispositivo do usuário;
  • Avaliação do estado do dispositivo;
  • Potencial para aumentar o controle com certificado de máquina do domínio, etc.;
  • Proteção abrangente do ambiente de trabalho remoto com módulos de segurança implantáveis automaticamente;

Links para artigos da série Cisco VPN:

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster