Pessoal,
Após um bom tempo sem postar, estou aqui para contribuir com um tutorial rápido e interessante sobre VPN com AAA no ISE. Neste cenário, o usuário irá conectar-se via VPN terminada no Cisco ASA, utilizando o cliente AnyConnect. O ASA irá autenticar o usuário via ISE e este irá aplicar os atributos de autorização de acordo com as definições que receber do ISE via RADIUS.
Este post é direcionado a leitores com conhecimentos de Cisco ISE, VPN com cliente AnyConnect no Cisco ASA e AAA.
Os componentes utilizados são:
Servidor AAA: Cisco ISE versão 1.4.0.253 – 10.3.160.99
Autenticador: Cisco ASA versão 9.4(2) – 10.3.160.201
Suplicante: Cisco AnyConnect versão 4.1 – 10.1.150.104
Active Directory: Windows Server 2008 R2 SP1. – 10.3.160.14
Cenário
Serão definidas duas Group Policies no ISE: EXT-GP-DEV e EXT-GP-CORP. Estas policies serão atribuídas ao usuário de acordo com o grupo a que pertence no AD no domínio ISELAB. Dois grupos estão definidos: ACVPN-Dev e ACVPN-Corp.
Configurando o ASA:
-
Pool
O Pool de endereçamento para o cliente AnyConnect será definido no ASA. Este pool é compartilhado para todos os clientes, independente do perfil de autorização:
ip local pool SSL-AC-POOL01 10.29.0.1-10.29.0.10 mask 255.255.255.0
-
Split-Tunnel
A ACL de split-tunneling será definida localmente no ASA, pois não é possível definí-las no ISE:
access-list SPLIT-CORP standard permit 10.3.160.0 255.255.255.0
access-list SPLIT-DEV standard permit 10.3.160.0 255.255.255.0
-
CoA
No ASA, é definido o ISE como cliente RADIUS para CoA (Change of Authorization), ou autorização dinâmica:
aaa-server ISELAB protocol radius
dynamic-authorization
-
AAA Server
Definição do ISE como servidor AAA:
aaa-server ISELAB (inside) host 10.3.160.99
key *****
-
Cliente AnyConnect
O conjunto de comandos a seguir compõem as configurações do cliente AnyConnect:
webvpn
enable outside
anyconnect image disk0:/anyconnect-win-4.1.08005-k9.pkg 1
anyconnect enable
tunnel-group-list enable
error-recovery disable
-
DfltGrpPolicy
Na group-policy DfltGrpPolicy, padrão do sistema, estão o conjunto de atributos de autorização inerentes às configuradas no ISE. Ou seja, o ISE não precisa atribuir todos os atributos à sessão VPN do usuário. Estes não atribuídos pelo ISE são aplicados por esta política.
group-policy DfltGrpPolicy attributes
dns-server value 10.3.160.14
vpn-tunnel-protocol ikev1 ikev2 l2tp-ipsec ssl-client ssl-clientless
default-domain value iselab.com
address-pools value SSL-AC-POOL01
-
External Group-Policies
Em sua configuração, o parâmetro external diz que a group-policy é externa e o comando server-group define o AAA server externo onde está definida. A validação da group-policy no ISE é feita através de processo de autenticação de usuário, portanto, deve ser definida no ASA com credenciais válidas.
group-policy EXT-GP-DEV external server-group ISELAB password *****
group-policy EXT-GP-CORP external server-group ISELAB password *****
-
Connection-Profile
Quando o usuário inicia uma sessão de VPN com o ASA via AnyConnect, ele está sendo autenticado no Connection Profile padrão, pois não tem permissão para escolher um no prompt de login. Neste profile, é indicado o ISE como servidor de autenticação.
tunnel-group DefaultWEBVPNGroup general-attributes
authentication-server-group ISELAB
Configurando o ISE:
Agora vamos às configurações do ISE:
-
Identidade para Group-Policy:
Primeiro, definimos as identidades que irão autenticar as group-policies definidas no ASA. Estas identidades são criadas como usuários normais, se for utilizada a base local do ISE, como neste cenário.
-
Mapear os Grupos do AD
Os grupos do AD, atributo do usuário que será checado para definir quais permissões serão aplicadas, deverão ser mapeados no ISE.
-
Definição de Protocolo de Tunelamento
No ISE, as pré-definições de tunneling-protocol para o ISE não contém o valor correspondente ao AnyConnect. Este componente é fundamental e é validado na transação RADIUS entre ASA e ISE. Para definir este parâmetro, o caminho do ISE é Policy > Policy Elements > Dictionaries > System > RADIUS > RADIUS Vendors > Cisco-VPN3000 > CVPN3000/ASA/PIX7x-Tunneling-Protocols. Ao dicionário de atributos RADIUS do ASA, adiciona-se o SSL Client com valor 32 (link de referência dos atributos RADIUS para o ASA).
- dACL
A downloadable ACL é um dos elementos que comporão o conjunto de permissões aplicadas ao usuário. É definida em linguagem de IOS. Nas configurações do ASA, é o atributo vpn-filter. A imagem a seguir traz a configuração da ACL para o perfil CORP (neste cenário, as regras são as mesmas, apenas a título de exemplo).
-
Authorization Profiles
Os authz profiles são o conjunto de permissões aplicadas aos usuários que, no ASA, seria a group-policy.
A primeira definição é a dACL, definida na etapa anterior. As imagens a seguir mostram a configuração do perfil de autorização para usuários corporativos, nomeada AUTHZ-ACVPN-CORP:
Em seguida, definimos o parâmetro ASA-VPN, que é a group-policy externa definida no ASA:
Em advanced attribute settings, ainda na configuração do authz profile, são definidos:
PIX7x-IPSec-Split-Tunnel-List: ACL de Split-Tunnel definida no ASA (o nome deve estar idêntico)
PIX7x-IPSec-Banner1: Banner de login
PIX7x-IPSec-Split-Tunneling-Policy: valor que define a policy de split-tunneling. O valor 1, no ASA, significa “tunnel-specified”, ou seja, incluir as redes definidas na ACL à lista de redes de destino que o usuário acessará via cliente AnyConnect.
PIX7x-Tunneling-Protocols: valor do protocolo de tunelamento VPN permitido na conexão. O valor definido como 32 é aquele customizado, adicionado ao dicionário RADIUS.
PIX7x-Simultaneous-Logins: valor decimal de logins simultâneos de um único usuário.
As imagens a seguir mostram as definições do authZ profile para o grupo “Desenvolvimento“. Lembrando que os atributos não definidos aqui tem os valores inerentes da DfltGrpPolicy herdados.
-
Authorization Policy
A etapa final do ISE são as políticas de autorização. Elas irão checar os atributos da conexão VPN e aplicar as respectivas permissões.
Na primeira política, o ISE checa se o usuário, já autenticado, está no grupo do AD ACVPN-Dev e irá aplicar as permissões definidas na authZ policy AUTHZ-ACVPN-DEV.
Na segunda política, o ISE checa se o usuário, já autenticado, está no grupo do AD ACVPN-Corp e irá aplicar as permissões definidas na authZ policy AUTHZ-ACVPN-CORP.
Na terceira política, o ISE irá checar se o usuário começa com EXT-GP, o nome do dispositivo, já incluido na base de Network Devices é igual a ISELABASA e se o endereço IP do dispositivo é igual a 10.3.160.201. A permissão aplicadaé simples ACCESS_ACCEPT, definida na authZ policy PermitAccess, que é padrão do ISE. Esta é a política de authZ para o ASA.
Configurações do AD:
No AD, os usuários devem estar em seus respectivos grupos:
Validando as Configurações:
-
VPN Corporativa
O usuário user-corp que é membro do grupo ACVPN-Corp efetua login:
O ASA mostra o banner de login definido no ISE:
O comando show vpn-sessiondb anyconnect mostra os atributos aplicados à sessão do usuário, contendo a group policy aplicada:
O comando show vpn-sessiondb anyconnect detail mostra mais detalhes das configurações aplicadas:
Validação da ACL aplicada:
No ISE, em Operations > Authentications podemos ver o resumo das transações de AAA para esta sessão, onde há a validação da identidade do usuário e da respectiva group-policy no ASA:
As imagens a seguir mostram a validação da conexão do usuário user-dev:
Espero que tenha sido útil para você! Qualquer dúvida ou consideração, deixe um comentário. Até a próxima 😉