Introduction
Este documento fornece um exemplo de configuração de autenticação SAML (Security Assertion Markup Language) no FTD gerenciado no FMC. A configuração permite que os usuários do Anyconnect estabeleçam uma sessão VPN de autenticação com um provedor de serviços de identidade SAML.
Prerequisites
Requirements
A Cisco recomenda que você tenha conhecimento destes tópicos:
- Conhecimento da configuração do Anyconnect no FMC
- Conhecimento dos valores SAML e metatada.xml
Componentes Utilizados
As informações neste documento são baseadas nestas versões de software e hardware:
- Firepower Threat Defense (FTD) versão 6.7.0
- Firepower Management Center (FMC) versão 6.7.0
- ADFS do servidor AD com SAML 2.0
Note: Se possível, use um servidor NTP para sincronizar o tempo entre o FTD e o IdP. Caso contrário, certifique-se de que o horário seja sincronizado manualmente entre eles.
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
Informações de Apoio
Algumas das limitações atuais para SAML são:
- O SAML no FTD é suportado para a Autenticação (a partir da versão 6.7) e a autorização (a partir da versão 7.0)
- Não há suporte para ter atributos de autenticação SAML disponíveis na avaliação DAP (semelhantes aos atributos RADIUS enviados na resposta de autenticação RADIUS do servidor AAA)
- O ASA oferece suporte a grupo de túnel habilitado para SAML na política de DAP. No entanto, não é possível verificar o atributo nome de usuário ao usar a autenticação SAML, pois o atributo nome de usuário é mascarado pelo provedor de identidade SAML
-
Como o AnyConnect com o navegador incorporado usa uma nova sessão do navegador em cada tentativa de VPN, os usuários devem autenticar novamente sempre, se o IdP usar cookies de sessão HTTP para controlar o estado de login. Nesse caso, a configuração Forçar Re-Authentication não tem efeito na autenticação SAML iniciada pelo AnyConnect.
- Mais limitações ou SAML estão descritas no link abaixo. Essas limitações se aplicam ao ASA e ao FTD: "Diretrizes e limitações para o SAML 2.0 "
https://www.cisco.com/c/en/us/td/docs/security/asa/asa915/configuration/vpn/asa-915-vpn-config/webvpn-configure-users.html#reference_55BA48B37D6443BEA5D2F42EC21075B5
Note: Toda a configuração SAML que precisa ser implementada no FTD pode ser encontrada no arquivo metadados.xml fornecido pelo IdP.
Configuração
Esta seção descreve como configurar o Anyconnect com autenticação SAML no FTD
Obter os parâmetros do IdP SAML
A imagem abaixo mostra um arquivo SAML IdP metadados.xml. Na saída, você pode obter todos os valores necessários para configurar o perfil do Anyconnect usando SAML:

Configuração no FTD através do FMC
Etapa 1. Instale e inscreva o certificado IdP no FMC. Navegue até Dispositivos > Certificados

Etapa 2. Clique em Add. Selecione o FTD em que deseja se inscrever neste certificado. Em Cert Enrollment (Registro de certificado), clique no sinal +
Na seção Add Cert Enrollment (Adicionar registro de certificado), use qualquer nome como rótulo para o certificado IdP. Certifique-se de clicar em Manual. Verifique os campos CA Only (Apenas CA) e Skip Check for CA flag (Ignorar verificação de CA). Em seguida, cole o certificado base64 format IdP CA. Finalmente, clique em Salvar e em Adicionar

Etapa 3. Defina as configurações do servidor SAML. Navegue até Objects > Object Management > AAA Servers > Single Sign-on Server. Em seguida, selecione Add Single Sing-on Server

Etapa 4. Com base no arquivo metadados.xml já fornecido pelo IdP, configure os valores SAML no novo servidor de logon único
SAML Provider Entity ID: entityID from metadata.xml
SSO URL: SingleSignOnService from metadata.xml.
Logout URL: SingleLogoutService from metadata.xml.
BASE URL: FQDN of your FTD SSL ID Certificate.
Identity Provider Certificate: IdP Signing Certificate.
Service Provider Certificate: FTD Signing Certificate.

Etapa 5. Configure o perfil de conexão que usa este método de autenticação. Navegue até Dispositivos > Acesso remoto e edite a configuração de acesso remoto VPN existente

Etapa 6. Clique no sinal + e adicione outro perfil de conexão

Passo 7. Crie o novo perfil de conexão e adicione o pool local de VPN ou o servidor DHCP apropriado

Etapa 8. Agora, selecione a guia AAA. Na opção Authentication Method (Método de autenticação), selecione SAML. Na opção Authentication Server, selecione o objeto SAML criado na Etapa 4

Etapa 9. Finalmente, crie um alias de grupo para mapear as conexões para esse perfil de conexão. Esta é a marca que os usuários podem ver no menu suspenso Anyconnect Software. Depois de configurada, selecione OK e salve a configuração completa da VPN de autenticação SAML

Etapa 10. Navegue até Implantar > Implantação e selecione o FTD apropriado para aplicar as alterações de VPN de autenticação SAML
Etapa 11. Agora, forneça o arquivo metadados.xml do FTD ao IdP para que eles adicionem o FTD como um dispositivo confiável. Na CLI do FTD, execute o comando: "show saml metadados SAML_TG" onde SAML_TG é o nome do nosso Perfil de Conexão criado na Etapa 7.
Como visto no suporte abaixo, esta é a saída esperada do comando mencionado acima:
> system support diagnostic-cli
Attaching to Diagnostic CLI ... Press 'Ctrl+a then d' to detach.
Type help or '?' for a list of available commands.
firepower> en
Password:
firepower# show saml metadata SAML_TG
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<EntityDescriptor entityID="https://ftd.lab.local/saml/sp/metadata/SAML_TG" xmlns="urn:oasis:names:tc:SAML:2.0:metadata">
<SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<KeyDescriptor use="signing">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>MIIF1zCCBL+gAwIBAgITYAAAABN6dX+H0cOFYwAAAAAAEzANBgkqhkiG9w0BAQsF
ADBAMRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxEzARBgoJkiaJk/IsZAEZFgNsYWIx
EjAQBgNVBAMTCU1TMjAxMi1DQTAeFw0yMDA0MTEwMTQyMTlaFw0yMjA0MTEwMTQy
MTlaMCMxCzAJBgNVBAYTAkNSMRQwEgYDVQQDDAsqLmxhYi5sb2NhbDCCASIwDQYJ
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAKfRmbCfWk+V1f+YlsIE4hyY6+Qr1yKf
g1wEqLOFHtGVM3re/WmFuD+4sCyU1VkoiJhf2+X8tG7x2WTpKKtZM3N7bHpb7oPc
uz8N4GabfAIw287soLM521h6ZM01bWGQ0vxXR+xtCAyqz6JJdK0CNjNEdEkYcaG8
PFrFUy31UPmCqQnEy+GYZipErrWTpWwbF7FWr5u7efhTtmdR6Y8vjAZqFddigXMy
EY4F8sdic7btlQQPKG9JIaWny9RvHBmLgj0px2i5Rp5k1JIECD9kHGj44O5lBEcv
OFY6ecAPv4CkZB6CloftaHjUGTSeVeBAvXBK24Ci9e/ynIUNJ/CM9pcCAwEAAaOC
AuUwggLhMBYGA1UdEQQPMA2CCyoubGFiLmxvY2FsMB0GA1UdDgQWBBROkmTIhXT/
EjkMdpc4aM6PTnyKPzAfBgNVHSMEGDAWgBTEPQVWHlHqxd11VIRYSCSCuHTa4TCB
zQYDVR0fBIHFMIHCMIG/oIG8oIG5hoG2bGRhcDovLy9DTj1NUzIwMTItQ0EsQ049
V0lOLTVBME5HNDkxQURCLENOPUNEUCxDTj1QdWJsaWMlMjBLZXklMjBTZXJ2aWNl
cyxDTj1TZXJ2aWNlcyxDTj1Db25maWd1cmF0aW9uLERDPWxhYixEQz1sb2NhbD9j
ZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0P2Jhc2U/b2JqZWN0Q2xhc3M9Y1JMRGlz
dHJpYnV0aW9uUG9pbnQwgbkGCCsGAQUFBwEBBIGsMIGpMIGmBggrBgEFBQcwAoaB
mWxkYXA6Ly8vQ049TVMyMDEyLUNBLENOPUFJQSxDTj1QdWJsaWMlMjBLZXklMjBT
ZXJ2aWNlcyxDTj1TZXJ2aWNlcyxDTj1Db25maWd1cmF0aW9uLERDPWxhYixEQz1s
b2NhbD9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2VydGlmaWNhdGlv
bkF1dGhvcml0eTAOBgNVHQ8BAf8EBAMCBaAwPQYJKwYBBAGCNxUHBDAwLgYmKwYB
BAGCNxUIgYKsboLe0U6B4ZUthLbxToW+yFILh4iaWYXgpQUCAWQCAQMwSwYDVR0l
BEQwQgYIKwYBBQUHAwEGCCsGAQUFBwMHBggrBgEFBQcDBgYIKwYBBQUIAgIGCCsG
AQUFBwMFBggrBgEFBQcDAgYEVR0lADBfBgkrBgEEAYI3FQoEUjBQMAoGCCsGAQUF
BwMBMAoGCCsGAQUFBwMHMAoGCCsGAQUFBwMGMAoGCCsGAQUFCAICMAoGCCsGAQUF
BwMFMAoGCCsGAQUFBwMCMAYGBFUdJQAwDQYJKoZIhvcNAQELBQADggEBAKQnqcaU
fZ3kdeoE8v2Qz+3Us8tXxXaXVhS3L5heiwr1IyUgsZm/+RLJL/zGE3AprEiITW2V
Lmq04X1goaAs6obHrYFtSttz/9XlTAe1KbZ0GlRVg9LblPiF17kZAxALjLJHlCTG
5EQSC1YqS31sTuarm4WPDJyMShc6hlUpswnCokGRMMgpx2GmDgv4Zf8SzJJ0NI4y
DgMozuObwkNUXuHbiLuoXwvb2Whm11ysidpl+V9kp1RYamyjFUo+agx0E+L1zp8C
i0YEwYKXgKk3CZdwJfnYQuCWjmapYwlLGt5S59Uwegwro6AsUXY335+ZOrY/kuLF
tzR3/S90jDq6dqk=
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</KeyDescriptor>
<AssertionConsumerService index="0" isDefault="true" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://ftd.lab.local/+CSCOE+/saml/sp/acs?tgname=SAML_TG" />
<SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://ftd.lab.local/+CSCOE+/saml/sp/logout"/><SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://ftd.lab.local/+CSCOE+/saml/sp/logout"/></SPSSODescriptor>
</EntityDescriptor>
Quando o arquivo metadados.xml do FTD é fornecido ao IdP e o adiciona como um dispositivo confiável, um teste na conexão VPN pode ser feito.
Verificar
Verifique se a conexão VPN Anyconnect foi estabelecida usando SAML como método de autenticação com os comandos vistos abaixo:
firepower# show vpn-sessiondb detail anyconnect
Session Type: AnyConnect Detailed
Username : josue@lab.local Index : 4
Assigned IP : 10.1.1.1 Public IP : 192.168.1.104
Protocol : AnyConnect-Parent SSL-Tunnel DTLS-Tunnel
License : AnyConnect Premium
Encryption : AnyConnect-Parent: (1)none SSL-Tunnel: (1)AES-GCM-256 DTLS-Tunnel: (1)AES-GCM-256
Hashing : AnyConnect-Parent: (1)none SSL-Tunnel: (1)SHA384 DTLS-Tunnel: (1)SHA384
Bytes Tx : 12772 Bytes Rx : 0
Pkts Tx : 10 Pkts Rx : 0
Pkts Tx Drop : 0 Pkts Rx Drop : 0
Group Policy : SAML_GP Tunnel Group : SAML_TG
Login Time : 18:19:13 UTC Tue Nov 10 2020
Duration : 0h:03m:12s
Inactivity : 0h:00m:00s
VLAN Mapping : N/A VLAN : none
Audt Sess ID : c0a80109000040005faad9a1
Security Grp : none Tunnel Zone : 0
AnyConnect-Parent Tunnels: 1
SSL-Tunnel Tunnels: 1
DTLS-Tunnel Tunnels: 1
AnyConnect-Parent:
Tunnel ID : 4.1
Public IP : 192.168.1.104
Encryption : none Hashing : none
TCP Src Port : 55130 TCP Dst Port : 443
Auth Mode : SAML
Idle Time Out: 30 Minutes Idle TO Left : 26 Minutes
Client OS : linux-64
Client OS Ver: Ubuntu 20.04.1 LTS (Focal Fossa)
Client Type : AnyConnect
Client Ver : Cisco AnyConnect VPN Agent for Linux 4.9.03047
Bytes Tx : 6386 Bytes Rx : 0
Pkts Tx : 5 Pkts Rx : 0
Pkts Tx Drop : 0 Pkts Rx Drop : 0
SSL-Tunnel:
Tunnel ID : 4.2
Assigned IP : 10.1.1.1 Public IP : 192.168.1.104
Encryption : AES-GCM-256 Hashing : SHA384
Ciphersuite : ECDHE-RSA-AES256-GCM-SHA384
Encapsulation: TLSv1.2 TCP Src Port : 55156
TCP Dst Port : 443 Auth Mode : SAML
Idle Time Out: 30 Minutes Idle TO Left : 28 Minutes
Client OS : Linux_64
Client Type : SSL VPN Client
Client Ver : Cisco AnyConnect VPN Agent for Linux 4.9.03047
Bytes Tx : 6386 Bytes Rx : 0
Pkts Tx : 5 Pkts Rx : 0
Pkts Tx Drop : 0 Pkts Rx Drop : 0
DTLS-Tunnel:
Tunnel ID : 4.3
Assigned IP : 10.1.1.1 Public IP : 192.168.1.104
Encryption : AES-GCM-256 Hashing : SHA384
Ciphersuite : ECDHE-ECDSA-AES256-GCM-SHA384
Encapsulation: DTLSv1.2 UDP Src Port : 40868
UDP Dst Port : 443 Auth Mode : SAML
Idle Time Out: 30 Minutes Idle TO Left : 28 Minutes
Client OS : Linux_64
Client Type : DTLS VPN Client
Client Ver : Cisco AnyConnect VPN Agent for Linux 4.9.03047
Bytes Tx : 0 Bytes Rx : 0
Pkts Tx : 0 Pkts Rx : 0
Pkts Tx Drop : 0 Pkts Rx Drop : 0
Troubleshoot
Alguns comandos de verificação na CLI do FTD podem ser usados para solucionar problemas de conexão SAML e VPN de acesso remoto, conforme visto no suporte:
firepower# show run webvpn
firepower# show run tunnel-group
firepower# show crypto ca certificate
firepower# debug webvpn saml 25
Note: Você também pode solucionar problemas de DART no PC do usuário do Anyconnect