Mise en place de la solution AnyConnect sur un Cisco ASA

Alors le principe est le même que dans le tutoriel « Configurer un VPN SSL remote access Clientless sur un Cisco ASA » sauf que cette fois on ne va plus passer par un navigateur mais bien créer un tunnel VPN à part entière via le logiciel Cisco AnyConnect qui sera installé sur le poste de vos clients distants.

Voici la topologie utilisée :

Topologie utilisée pour l'article

Quelques informations :

  • Réseau de l’entreprise :
    • Réseau INSIDE : 192.168.0.0/24
    • Réseau OUTSIDE : 130.42.12.254/30
    • Réseau ANYCONNECT que l’on va créer pour l’adressage des clients distants : 10.0.0.0/24
  • Réseau du client distant :
    • Réseau domestique : 172.16.0.0/24

Etape 0 : Configuration existante sur le Cisco ASA

hostname asa-cisco
domain-name labcisco.ccnp
!
!
interface Vlan10
 description *** INTERFACE VLAN INTERNE ***
 nameif inside
 security-level 100
 ip address 192.168.0.254 255.255.255.0 
!
interface Vlan20
 description *** VERS GATEWAY - 130.42.12.253/30 ***
 nameif outside
 security-level 0
 ip address 130.42.12.254 255.255.255.252 
!
dns domain-lookup inside
dns server-group DefaultDNS
 name-server 192.168.0.1
 domain-name labcisco.ccnp
!
object network NETWORK-INSIDE
 subnet 192.168.0.0 255.255.255.0
!
object network NETWORK-INSIDE
 nat (inside,outside) dynamic interface
!
route outside 0.0.0.0 0.0.0.0 130.42.12.253 1
!
aaa-server SERVER-RADIUS protocol radius
aaa-server SERVER-RADIUS (inside) host linux-server.labcisco.ccnp
 key *****
 authentication-port 1812
 accounting-port 1813
 acl-netmask-convert auto-detect

Si on résume, la connectivité réseau de l’ASA est opérationnelle, notre serveur DNS est déclaré, le serveur Radius est configuré et près à être utilisé et une règle NAT (en rouge) spécifie que tous ce qui sort du réseau INSIDE vers l’extérieur sera « naté » avec l’adresse IP du réseau OUTSIDE (voir PAT).

Etape 1 : Le certificat SSL

Il faut commencer par générer un certificat SSL que nous allons auto-signer :

hostname asa-cisco
domain-name labcisco.ccnp
!
crypto key generate rsa label SSL-VPN-KEY
!
crypto ca trustpoint LOCALTRUST-ASA
 enrollment self
 fqdn asa-cisco.labcisco.ccnp
 subject-name CN=asa-cisco.labcisco.ccnp
 keypair SSL-VPN-KEY
 crypto ca enroll LOCALTRUST-ASA noconfirm
!
ssl trust-point LOCALTRUST-ASA outside

Etape 2 : Préparer la configuration AnyConnect

Il faut commencer par « uploader » les fichiers images du logiciel AnyConnect sur le Cisco ASA : voir ici.

webvpn
 enable outside
 #Utiliser des regex nous permettra de détecter l'OS de nos clients afin de lui proposer la bonne version à utiliser
 anyconnect image disk0:/anyconnect-linux-3.1.04072-k9.pkg 1 regex "Linux"
 anyconnect image disk0:/anyconnect-linux-64-3.1.04072-k9.pkg 2 regex "Linux"
 anyconnect image disk0:/anyconnect-macosx-i386-3.1.04072-k9.pkg 3 regex "Intel Mac OS X"
 anyconnect image disk0:/anyconnect-win-3.1.04072-k9.pkg 4 regex "Windows NT"
 anyconnect enable
!
sysopt connection permit-vpn
!
#Pool d'adresses alloué pour les clients AnyConnect
ip local pool ANYCONNECT-POOL 10.0.0.1-10.0.0.254 mask 255.255.255.0
!
object network NETWORK-ANYCONNECT
 subnet 10.0.0.0 255.255.255.0
!
#ACL qui sera utilisée pour le Split Tunnel
access-list ANYCONNECT-SPLIT-TUNNEL-ACL standard permit 192.168.0.0 255.255.255.0

Alors qu’est-ce que le « split tunnel » ? Tout simplement un moyen d’améliorer l’expérience de l’utilisateur. Par défaut quand le tunnel VPN est monté, tout le trafic est envoyé par le tunnel. Avec l’ACL que nous venons de configurer nous allons pouvoir spécifier que tout ce qui « match » cette ACL (c’est à dire tout ce qui est à destination de notre réseau interne) passe par le tunnel VPN et le reste par la connexion Internet de l’utilisateur. En gros il pourra continuer d’aller sur Facebook et Twitter même en étant connecté en tunnel VPN vers son entreprise :).

Etape 3 : Configurer le profil de connexion AnyConnect (tunnel-group)

group-policy ANYCONNECT-POLICY internal
group-policy ANYCONNECT-POLICY attributes
 vpn-tunnel-protocol ssl-client
 default-domain value labcisco.ccnp
 dns-server value 192.168.0.1
 #C'est ici que l'on spécifie la règle "split tunnel" à appliquer
 split-tunnel-policy tunnelspecified
 split-tunnel-network-list value ANYCONNECT-SPLIT-TUNNEL
 address-pools value ANYCONNECT-POOL
!
tunnel-group ANYCONNECT-USERS type remote-access
tunnel-group ANYCONNECT-USERS general-attributes
 authentication-server-group SERVER-RADIUS
 default-group-policy ANYCONNECT-POLICY
!
tunnel-group ANYCONNECT-USERS webvpn-attributes
 group-alias "Utilisateurs AnyConnect" enable

Etape 4 : Interdire la NAT !

nat (inside,any) source static NETWORK-INSIDE NETWORK-INSIDE destination static NETWORK-ANYCONNECT NETWORK-ANYCONNECT no-proxy-arp

Je vais vous expliquer pourquoi on entre cette commande :

Illustration du NAT exemption

Si vous vous référez à l’étape 0, on avait configuré une règle NAT pour que notre réseau INSIDE puisse aller sur Internet. Le problème c’est que cette règle empêche le VPN de fonctionner. Autrement dit, le réseau INSIDE ne peut pas répondre au client distant car il est automatiquement transformé (voir illustration n°1).

Notre nouvelle règle NAT va permettre au réseau INSIDE de répondre aux clients distants (voir illustration n°2).

Etape 5 : Connexion avec le client distant

Se connecter sur l’ASA via l’interface Web :

Catpure d'écran de connexion

Télécharger et installer le client AnyConnect :

Catpure d'écran de téléchargement du client AnyConnect

Se connecter au VPN via AnyConnect :

Catpure d'écran de connexion AnyConnect

Comme vous pouvez le constater, une nouvelle interface a fait son apparition :

Catpure d'écran vérifiant la création de la nouvelle interface

Vous pouvez maintenant accéder au réseau interne de votre entreprise depuis chez-vous :

Catpure d'écran montrant l'accès aux ressources internes