Usar cartões inteligentes para autenticação no WorkSpaces Personal - Amazon WorkSpaces

Usar cartões inteligentes para autenticação no WorkSpaces Personal

Os pacotes Windows e Linux WorkSpaces nos pacotes DCV permitem o uso de cartões inteligentes Common Access Card (CAC) e Personal Identity Verification (PIV) para autenticação.

O Amazon WorkSpaces é compatível ao uso de cartões inteligentes para autenticação pré-sessão e autenticação em sessão. A autenticação pré-sessão se refere à autenticação por cartão inteligente executada enquanto os usuários estão fazendo login nos WorkSpaces. A autenticação em sessão se refere à autenticação executada após o login.

Por exemplo, os usuários podem usar cartões inteligentes para autenticação em sessão enquanto trabalham com navegadores e aplicações da web. Eles também podem usar cartões inteligentes para ações que exigem permissões administrativas. Por exemplo, se o usuário tiver permissões administrativas no Linux WorkSpace, poderá usar cartões inteligentes para se autenticar ao executar os comandos sudo e sudo -i.

Requisitos

  • É necessário um diretório do Active Directory Connector (AD Connector) para a autenticação pré-sessão. O AD Connector usa autenticação mútua de Transport Layer Security (TLS mútuo) baseada em certificado para autenticar usuários no Active Directory usando um certificado de cartão inteligente baseado em hardware ou software. Para obter mais informações sobre como configurar o AD Connector e o diretório on-premises, consulte Configuração do diretório.

  • Para usar um cartão inteligente com um WorkSpace do Windows ou Linux, o usuário deve usar o cliente do Amazon WorkSpaces para Windows versão 3.1.1 ou posterior, ou usar o cliente do WorkSpaces para macOS versão 3.1.5 ou posterior. Para obter mais informações sobre o uso de cartões inteligentes com os clientes Windows e macOS, consulte Suporte ao cartão inteligente no Guia do usuário do Amazon WorkSpaces.

  • Os certificados de CA raiz e cartão inteligente devem atender a determinados requisitos. Para obter mais informações, consulte Habilitar a autenticação mTLS no AD Connector para usar com cartões inteligentes no Guia de administração do AWS Directory Service e Requisitos de certificado na documentação da Microsoft.

    Além desses requisitos, os certificados de usuário empregados para autenticação por cartão inteligente no Amazon WorkSpaces devem incluir os seguintes atributos:

    • O userPrincipalName (UPN) do usuário do AD no campo subjectAltName (SAN) do certificado. Recomendamos emitir certificados de cartão inteligente para o UPN padrão do usuário.

    • O atributo de uso estendido de chave (EKU) para autenticação de cliente (1.3.6.1.5.5.7.3.2).

    • O atributo EKU para login com cartão inteligente (1.3.6.1.4.1.311.20.2.2).

  • Para autenticação pré-sessão, o protocolo OCSP (Protocolo de status de certificado on-line) é necessário para verificação de revogação do certificado. Para autenticação em sessão, o OCSP é recomendado, mas não obrigatório.

Limitações

  • No momento, somente a aplicação cliente do WorkSpaces para Windows versão 3.1.1 ou posterior e a aplicação cliente do WorkSpaces para macOS versão 3.1.5 ou posterior são compatíveis com a autenticação por cartão inteligente.

  • A aplicação cliente do WorkSpaces para Windows versão 3.1.1 ou posterior é compatível com cartões inteligentes somente quando o cliente está sendo executado em uma versão de 64 bits do Windows.

  • Os WorkSpaces para Ubuntu ainda não são compatíveis com a autenticação por cartão inteligente.

  • Somente os diretórios do AD Connector são atualmente compatíveis com a autenticação por cartão inteligente.

  • A autenticação em sessão está disponível em todas as regiões em que o DCV é compatível. A autenticação pré-sessão está disponível nas seguintes regiões:

    • Região Ásia-Pacífico (Sydney)

    • Região Ásia-Pacífico (Tóquio)

    • Região Europa (Irlanda)

    • AWS Região GovCloud (Leste dos EUA)

    • AWS Região GovCloud (Oeste dos EUA)

    • Região Leste dos EUA (N. da Virgínia)

    • Região Oeste dos EUA (Oregon)

  • Para autenticação em sessão e autenticação pré-sessão no Linux ou no Windows WorkSpaces, atualmente, somente um cartão inteligente é permitido por vez.

  • Para a autenticação pré-sessão, não há suporte para habilitar a autenticação por cartão inteligente e a autenticação de login no mesmo diretório.

  • Somente placas CAC e PIV são compatíveis no momento. Outros tipos de cartões inteligentes baseados em hardware ou software também podem funcionar, mas não foram totalmente testados para uso com o DCV.

Configuração do diretório

Para habilitar a autenticação por cartão inteligente, você deve configurar o diretório do AD Connector e o diretório on-premises da maneira a seguir.

Configuração do diretório do AD Connector

Antes de começar, verifique se o diretório do AD Connector foi configurado conforme descrito nos Pré-requisitos do AD Connector no Guia de administração do AWS Directory Service. Especificamente, verifique se você abriu as portas necessárias no firewall.

Para concluir a configuração do diretório do AD Connector, siga as instruções em Habilitar a autenticação mTLS no AD Connector para usar com cartões inteligentes no Guia de administração do AWS Directory Service.

nota

A autenticação por cartão inteligente exige que a Delegação Restrita Kerberos (KCD) funcione corretamente. A KCD exige que a parte do nome de usuário da conta de serviço do AD Connector corresponda ao sAMAccountName do mesmo usuário. Um sAMAccountName não pode exceder 20 caracteres.

Configuração de diretórios on-premises

Além de configurar o diretório do AD Connector, você também deve garantir que os certificados emitidos para os controladores de domínio do diretório on-premises tenham o conjunto de uso estendido de chave (EKU) “Autenticação KDC”. Para fazer isso, use o modelo de certificado de autenticação Kerberos padrão dos Serviços de Domínio do Active Directory (AD DS). Não use um modelo de certificado de Controlador de domínio ou um modelo de certificado de Autenticação do controlador de domínio, pois esses modelos não contêm as configurações necessárias para a autenticação por cartão inteligente.

Habilitar cartões inteligentes para WorkSpaces do Windows

Para obter orientações gerais sobre como habilitar a autenticação por cartão inteligente no Windows, consulte Diretrizes para habilitar o logon de cartão inteligente com autoridades de certificação de terceiros na documentação da Microsoft.

Como detectar a tela de bloqueio do Windows e desconectar a sessão

Para permitir que os usuários desbloqueiem os WorkSpaces do Windows que estão habilitados para autenticação pré-sessão com cartão inteligente quando a tela está bloqueada, você pode ativar a detecção da tela de bloqueio do Windows nas sessões dos usuários. Quando a tela de bloqueio do Windows é detectada, a sessão do WorkSpace é desconectada e o usuário pode se reconectar pelo cliente do WorkSpaces usando o cartão inteligente.

Você pode habilitar a desconexão da sessão quando a tela de bloqueio do Windows for detectada usando as configurações de Política de grupo. Para ter mais informações, consulte Habilitar ou desabilitar a desconexão da sessão ao bloquear a tela para DCV.

Como habilitar a autenticação em sessão ou pré-sessão

Por padrão, os WorkSpaces do Windows não estão habilitados para oferecer suporte ao uso de cartões inteligentes para autenticação pré-sessão ou em sessão. Se necessário, você pode habilitar a autenticação em sessão e pré-sessão para o WorkSpaces do Windows usando as configurações de Política de grupo. Para ter mais informações, consulte Habilitar ou desabilitar o redirecionamento de cartão inteligente para DCV.

Para usar a autenticação pré-sessão, além de atualizar as configurações de Política de grupo, você também deve habilitar a autenticação pré-sessão por meio das configurações de diretório do AD Connector. Para obter mais informações, siga as instruções em Habilitar a autenticação mTLS no AD Connector para usar em cartões inteligentes no Guia de administração do AWS Directory Service.

Como permitir que os usuários usem cartões inteligentes em um navegador

Se os usuários estiverem usando o Chrome como navegador, nenhuma configuração especial será necessária para usar cartões inteligentes.

Se os usuários estiverem usando o Firefox como navegador, você pode permitir que eles usem cartões inteligentes no Firefox por meio da Política de grupo. Você pode usar esses modelos de Política de grupo do Firefox no GitHub.

Por exemplo, você pode instalar a versão de 64 bits do OpenSC para Windows, para oferecer suporte ao PKCS #11 e, em seguida, usar a configuração de Política de grupo a seguir, onde NAME_OF_DEVICE é o valor que você deseja usar para identificar o PKCS #11, como OpenSC, e onde PATH_TO_LIBRARY_FOR_DEVICE é o caminho para o módulo PKCS #11. Esse caminho deve apontar para uma biblioteca com uma extensão .DLL, como C:\Program Files\OpenSC Project\OpenSC\pkcs11\onepin-opensc-pkcs11.dll.

Software\Policies\Mozilla\Firefox\SecurityDevices\NAME_OF_DEVICE = PATH_TO_LIBRARY_FOR_DEVICE
dica

Se estiver usando o OpenSC, você também pode carregar o módulo OpenSC pkcs11 no Firefox executando o programa pkcs11-register.exe. Para executar esse programa, clique duas vezes no arquivo em C:\Program Files\OpenSC Project\OpenSC\tools\pkcs11-register.exe ou abra uma janela do prompt de comando e execute o seguinte comando:

"C:\Program Files\OpenSC Project\OpenSC\tools\pkcs11-register.exe"

Para verificar se o módulo OpenSC pkcs11 foi carregado no Firefox, faça o seguinte:

  1. Se o Firefox já estiver em execução, feche-o.

  2. Abra o Firefox. Selecione o botão de menu Firefox menu button no canto superior direito e, em seguida, selecione Opções.

  3. Na página about:preferences, no painel de navegação esquerdo, selecione Privacidade e segurança.

  4. Em Certificados, selecione Dispositivos de segurança.

  5. Na caixa de diálogo Gerenciador de dispositivos, você deve ver o Framework de cartão inteligente OpenSC (0.21) na navegação à esquerda, e ela deve ter os seguintes valores ao selecioná-la:

    Módulo: OpenSC smartcard framework (0.21)

    Caminho: C:\Program Files\OpenSC Project\OpenSC\pkcs11\onepin-opensc-pkcs11.dll

Solução de problemas

Para obter informações sobre como solucionar problemas de cartões inteligentes, consulte Problemas de certificado e configuração na documentação da Microsoft.

Algumas questões comuns que podem causar problemas:

  • Mapeamento incorreto dos slots para os certificados.

  • Ter vários certificados no cartão inteligente que possam corresponder ao usuário. Os certificados são correspondidos de acordo com os seguintes critérios:

    • A CA raiz para o certificado.

    • Os campos <KU> e <EKU> do certificado.

    • O UPN no assunto do certificado.

  • Ter vários certificados que tenham <EKU>msScLogin no uso de chave.

Em geral, é melhor ter apenas um certificado para autenticação por cartão inteligente que esteja mapeado no primeiro slot do cartão inteligente.

As ferramentas para gerenciar os certificados e as chaves no cartão inteligente (como remover ou remapear os certificados e as chaves) podem ser específicas do fabricante. Para obter mais informações, consulte a documentação fornecida pelo fabricante dos seus cartões inteligentes.

Habilitar cartões inteligentes para WorkSpaces do Linux

nota

Os WorkSpaces para Linux no DCV têm as seguintes limitações:

  • Área de transferência, entrada de áudio, entrada de vídeo e redirecionamento de fuso horário não são compatíveis.

  • Não há compatibilidade para vários monitores.

  • Você deve usar a aplicação cliente do WorkSpaces para Windows para se conectar ao WorkSpaces do Linux no DCV.

Para permitir o uso de cartões inteligentes no WorkSpaces do Linux, você precisa incluir um arquivo do certificado CA raiz no formato PEM na imagem do WorkSpace.

Como obter o certificado CA raiz

Você pode obter o certificado CA raiz de várias formas:

  • Você pode usar um certificado CA raiz operado por uma autoridade de certificação de terceiros.

  • Você pode exportar seu próprio certificado CA raiz usando o site de inscrição web, que é http://ip_address/certsrv ouhttp://fqdn/certsrv, onde ip_address e fqdn são o endereço IP e o nome de domínio totalmente qualificado (FQDN) do servidor de certificação CA raiz. Para obter mais informações sobre como usar o site de inscrição web, consulte Como exportar o certificado de autoridade de certificação raiz na documentação da Microsoft.

  • Você pode usar o procedimento a seguir para exportar o certificado de CA raiz de um servidor de certificação de CA raiz que esteja executando os Serviços de Certificados do Active Directory (AD CS). Para obter informações sobre a instalação do AD CS, consulte Instalar a autoridade de certificação na documentação da Microsoft.

    1. Faça login no servidor CA raiz usando uma conta de administrador.

    2. No menu Iniciar do Windows, abra uma janela do prompt de comando (Iniciar > Sistema Windows > Prompt de comando).

    3. Use o seguinte comando para exportar o certificado de CA raiz para um novo arquivo, onde rootca.cer é o nome do arquivo:

      certutil -ca.cert rootca.cer

      Para obter mais informações sobre como executar o certutil, consulte certutil na documentação da Microsoft.

    4. Use o comando OpenSSL a seguir para converter o certificado de CA raiz exportado do formato DER para o formato PEM, em que rootca é o nome do certificado. Para obter mais informações sobre OpenSSL, consulte www.openssl.org.

      openssl x509 -inform der -in rootca.cer -out /tmp/rootca.pem
Como adicionar o certificado de CA raiz ao WorkSpaces do Linux

Para ajudá-lo a habilitar cartões inteligentes, adicionamos o script enable_smartcard aos nossos pacotes Amazon Linux DCV. Esse script executa as seguintes ações:

  • Importe o certificado de CA raiz para o banco de dados Network Security Services (NSS).

  • Instala o módulo pam_pkcs11 para autenticação do módulo de autenticação conectável (PAM).

  • Executa uma configuração padrão, que inclui a ativação de pkinit durante o provisionamento do WorkSpace.

O procedimento a seguir explica como usar o script enable_smartcard para adicionar o certificado de CA raiz aos WorkSpaces do Linux e habilitar cartões inteligentes para os WorkSpaces do Linux.

  1. Crie um novo WorkSpace do Linux com o protocolo DCV ativado. Ao iniciar o WorkSpace no console do Amazon WorkSpaces, na página Selecionar pacotes, certifique-se de selecionar DCV para o protocolo e, em seguida, selecione um dos pacotes públicos do Amazon Linux 2.

  2. No novo WorkSpace, execute o comando a seguir como root, onde pem-path é o caminho para o arquivo de certificado de CA raiz no formato PEM.

    /usr/lib/skylight/enable_smartcard --ca-cert pem-path
    nota

    O WorkSpaces para Linux pressupõe que os certificados nos cartões inteligentes são emitidos para o nome de entidade principal de usuário (UPN), como sAMAccountName@domain, em que domain é um nome de domínio totalmente qualificado (FQDN).

    Para usar sufixos UPN alternativos, run /usr/lib/skylight/enable_smartcard --help para obter mais informações. O mapeamento para sufixos UPN alternativos é exclusivo para cada usuário. Portanto, esse mapeamento deve ser realizado individualmente no WorkSpace de cada usuário.

  3. (Opcional) Por padrão, todos os serviços estão habilitados para usar autenticação de cartão inteligente no WorkSpaces do Linux. Para limitar a autenticação por cartão inteligente para serviços específicos, você deve editar /etc/pam.d/system-auth. Remova o comentário da linha auth para pam_succeed_if.so e edite a lista de serviços conforme necessário.

    Depois o comentário da linha auth for removido, para permitir que um serviço use a autenticação por cartão inteligente, você deve adicioná-lo à lista. Para fazer com que um serviço use somente autenticação por senha, é necessário removê-lo da lista.

  4. Execute qualquer personalização adicional no WorkSpace. Por exemplo, talvez você queira adicionar uma política em todo o sistema para permitir que os usuários usem cartões inteligentes no Firefox. (Os usuários do Chrome devem habilitar os cartões inteligentes nos clientes por conta própria. Para obter mais informações, consulte Suporte ao cartão inteligente no Guia do usuário do Amazon WorkSpaces.)

  5. Crie uma imagem personalizada do WorkSpace e empacote a partir do WorkSpace.

  6. Use o novo pacote personalizado para ativar os WorkSpaces para os usuários.

Como permitir que os usuários usem cartões inteligentes no Firefox

Você pode permitir que os usuários usem cartões inteligentes no Firefox adicionando uma política SecurityDevices à imagem do WorkSpace do Linux. Para obter mais informações sobre como adicionar políticas para todo o sistema ao Firefox, consulte os modelos de políticas do Mozilla no GitHub.

  1. No WorkSpace que você está usando para criar a imagem do WorkSpace, crie um novo arquivo chamado policies.json em /usr/lib64/firefox/distribution/.

  2. No arquivo JSON, adicione a política SecurityDevices a seguir, onde NAME_OF_DEVICE é o valor que você deseja usar para identificar o módulo pkcs. Por exemplo, é possível usar um valor como "OpenSC":

    { "policies": { "SecurityDevices": { "NAME_OF_DEVICE": "/usr/lib64/opensc-pkcs11.so" } } }
Solução de problemas

Para solucionar problemas, recomendamos adicionar o utilitário pkcs11-tools. Esse utilitário permite que você execute as seguintes ações:

  • Liste cada cartão inteligente.

  • Liste os slots em cada cartão inteligente.

  • Liste os certificados em cada cartão inteligente.

Algumas questões comuns que podem causar problemas:

  • Mapeamento incorreto dos slots para os certificados.

  • Ter vários certificados no cartão inteligente que possam corresponder ao usuário. Os certificados são correspondidos de acordo com os seguintes critérios:

    • A CA raiz para o certificado.

    • Os campos <KU> e <EKU> do certificado.

    • O UPN no assunto do certificado.

  • Ter vários certificados que tenham <EKU>msScLogin no uso de chave.

Em geral, é melhor ter apenas um certificado para autenticação por cartão inteligente que esteja mapeado no primeiro slot do cartão inteligente.

As ferramentas para gerenciar os certificados e as chaves no cartão inteligente (como remover ou remapear os certificados e as chaves) podem ser específicas do fabricante. Ferramentas adicionais que você pode usar para trabalhar com cartões inteligentes são:

  • opensc-explorer

  • opensc-tool

  • pkcs11_inspect

  • pkcs11_listcerts

  • pkcs15-tool

Como habilitar log de depuração

Para solucionar os problemas de configuração pam_pkcs11 e pam-krb5, você pode ativar o log de depuração.

  1. No arquivo /etc/pam.d/system-auth-ac, edite a ação auth e altere o parâmetro nodebug de pam_pksc11.so para debug.

  2. No arquivo /etc/pam_pkcs11/pam_pkcs11.conf, altere debug = false; para debug = true;. A opção debug se aplica separadamente a cada módulo mapeador, portanto, talvez seja necessário alterá-la diretamente na seção pam_pkcs11 e também na seção apropriada do mapeador (por padrão, é mapper generic).

  3. No arquivo /etc/pam.d/system-auth-ac, edite a ação auth e adicione o parâmetro debug ou debug_sensitive para pam_krb5.so.

Depois de habilitar o log de depuração, o sistema imprime mensagens de depuração pam_pkcs11 diretamente no terminal ativo. As mensagens de pam_krb5 estão registradas em /var/log/secure.

Para verificar a qual nome de usuário um certificado de cartão inteligente está mapeado, use o seguinte comando pklogin_finder:

sudo pklogin_finder debug config_file=/etc/pam_pkcs11/pam_pkcs11.conf

Quando solicitado, digite o PIN do cartão inteligente. pklogin_finder gera como saída em stdout o nome de usuário no certificado do cartão inteligente no formato NETBIOS\username. Esse nome de usuário deve corresponder ao nome de usuário do WorkSpace.

Nos Serviços de Domínio do Active Directory (AD DS), o nome de domínio NetBIOS é o nome de domínio anterior ao Windows 2000. Normalmente (mas nem sempre), o nome de domínio NetBIOS é o subdomínio do nome de domínio do Sistema de Nomes de Domínio (DNS). Por exemplo, se o nome do domínio DNS for example.com, o nome de domínio NetBIOS geralmente é EXAMPLE. Se o nome do domínio DNS for corp.example.com, o nome de domínio NetBIOS geralmente é CORP.

Por exemplo, para o usuário mmajor no domínio corp.example.com, a saída de pklogin_finder é CORP\mmajor.

nota

Se você receber a mensagem "ERROR:pam_pkcs11.c:504: verify_certificate() failed", essa mensagem indica que pam_pkcs11 encontrou um certificado no cartão inteligente que corresponde aos critérios do nome de usuário, mas que não está vinculado a um certificado de CA raiz reconhecido pela máquina. Quando isso acontece, pam_pkcs11 gera a mensagem acima e, em seguida, tenta o próximo certificado. Isso permite a autenticação somente se encontrar um certificado que corresponda ao nome de usuário e esteja encadeado a um certificado de CA raiz reconhecido.

Para solucionar problemas de configuração pam_krb5, você pode invocar manualmente kinit no modo de depuração com o seguinte comando:

KRB5_TRACE=/dev/stdout kinit -V

Esse comando deve obter com sucesso um tíquete de concessão de tíquetes (TGT) Kerberos. Se isso falhar, tente adicionar explicitamente o nome de entidade principal correto do Kerberos ao comando. Por exemplo, para o usuário mmajor no domínio corp.example.com, use este comando:

KRB5_TRACE=/dev/stdout kinit -V mmajor

Se esse comando for bem-sucedido, o problema provavelmente está no mapeamento do nome de usuário do WorkSpace para o nome de entidade principal do Kerberos. Verifique a seção [appdefaults]/pam/mappings no arquivo /etc/krb5.conf.

Se esse comando não for bem-sucedido, mas um comando kinit baseado em senha tiver sucesso, verifique as configurações relacionadas a pkinit_ no arquivo /etc/krb5.conf. Por exemplo, se o cartão inteligente possuir mais de um certificado, talvez seja necessário fazer alterações no pkinit_cert_match.