
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 :
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 :
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 :
Télécharger et installer le client AnyConnect :
Se connecter au VPN via AnyConnect :
Comme vous pouvez le constater, une nouvelle interface a fait son apparition :
Vous pouvez maintenant accéder au réseau interne de votre entreprise depuis chez-vous :