SSLVPN (Web VPN)

Un article sur la configuration du SSL VPN:

Topologie

Topologie

L’avantage du WebVPN est d’être très simple au niveau de la configuration pour l’utilisateur car il permet de se connecter via un applet java sur son navigateur web, et est compatible mac, linux et windows.

Configuration préalable:

VPNGate

!
hostname VPNGate
!
interface FastEthernet0/0
 ip address 100.0.0.1 255.255.255.0
 ip nat outside
!
interface FastEthernet0/1
 ip address 192.168.1.1 255.255.255.0
 ip nat inside
!
ip nat inside source list 1 interface FastEthernet0/0 overload
ip nat inside source static tcp 100.0.0.1 80 100.0.0.1 80 !pour l'accès au server web du routeur
ip nat inside source static tcp 100.0.0.1 443 100.0.0.1 443 !pour l'accès au server web du routeur
!
access-list 1 permit any
!
ip route 0.0.0.0 0.0.0.0 100.0.0.2
!

CPE

hostname CPE
!
interface FastEthernet0/0
 ip address 100.0.0.2 255.255.255.0
 ip nat outside
!
interface FastEthernet0/1
 ip address 192.168.0.1 255.255.255.0
 ip nat inside
!
ip nat inside source list 1 interface FastEthernet0/0 overload
!
access-list 1 permit any
!
ip dhcp pool lan
   network 192.168.0.0 255.255.255.0
   default-router 192.168.0.1
!
ip route 0.0.0.0 0.0.0.0 100.0.0.1
!

Le webVPN Fonctionne sous 3 mode:

  1. Clientless: accès uniquement aux services HTTP de l’enteprise
  2. Thin-client: redirection de ports tcp (par exemple smtp, pop…). Nécessite des droits d’admin pour installer l’applet java. Supportent uniquement les protocoles avec un port statique (pas de FTP par exemple). Les ports doivent être pré-configuré par l’admin
  3. Tunnel-mode: Tunnel SSL Complet: Nécessite des droits d’admins. L’avantage est d’avoir un tunnel complet très simple installer pour le client. Le client pèse moins de 250Ko et agit comme un remote VPN Complet.

La configuration va se faire en 4 étapes:

  1. Configurer la passerelle virtuelle du WebVPN, c’est à dire activer le serveur HTTPS, configurer les certificats, définir l’ip d’écoute du webvpn ainsi que son nom…
  2. Configurer le contexte virtuel, qui contiendra les options des différents composants utilisés pour le WebVPN
  3. Configurer les lien rapide du WebVPN (optionnel). Cela est utilisé pour avoir des liens rapide vers les ressources les plus utilisée. Configuré dans un context WebVPN.
  4. Configuré la politique de groupe, c’est ce qui relieras tous les éléments déclarés dans le contexte entre eux, ainsi que les paramètres de timeout …

Mode Clientless/Thin

Pré configuration

Hostname, aaa, DNS, PKI…

VPNGate(config)#aaa new-model
VPNGate(config)#aaa authentication login WebVPN local
VPNGate(config)#username webvpnuser pass password

Configuration de la gateway

Dans l’ordre:

  • Creation d’une gateway
  • Définition du nom d’hôte de la gateway
  • Définition de l’ip d’écoute
  • Redirection du traffic http vers https
  • activation de la gateway (ceci va crééer un certificat, si nous voulions en utiliser un déjà présent sur le routeur, nous aurions pu utiliser la commande ssl trustpoint)

Si vous voulez utiliser un certificat dans une architecture PKI, utilisez la commande:

VPNGate(config)#webvpn gateway WEBVPNGATEWAY
% Generating 1024 bit RSA keys, keys will be non-exportable...[OK]
VPNGate(config-webvpn-gateway)#
*Mar  3 22:58:12.135: %SSH-5-ENABLED: SSH 1.99 has been enabled
*Mar  3 22:58:12.295: %PKI-4-NOAUTOSAVE: Configuration was modified.  Issue "write memory" to save new certificate
VPNGate(config-webvpn-gateway)#hostname VPNGate
VPNGate(config-webvpn-gateway)#ip address 100.0.0.1
VPNGate(config-webvpn-gateway)#http-redirect
VPNGate(config-webvpn-gateway)#inservice
VPNGate(config-webvpn-gateway)#^Z
VPNGate#sh webvpn gateway WEBVPNGATEWAY
Admin Status: up
Operation Status: up
IP: 100.0.0.1, port: 443
HTTP Redirect port: 80
SSL Trustpoint: TP-self-signed-4294967295
Mangling Hostame: VPNGate

Configuration du context:

Ici, nous allons:

  • Créer un context
  • Y associer la gateway précédemment créée
  • Définir un titre et un message de login qui seront affiché sur la page de connexion
  • Spécifier la liste AAA pour identifier les utilisateurs
  • Définir les racourcis qui seront présent sur la page du webvpn (ils pourront aussi être saisi par l’utilisateur)
  • Configurer la redirection de port (thin mode). Cela va faire que la client VPN va modifier automatiquement le fichier host de la machine cliente afin de faire correspondre les bon port. Les port local sont donc arbitraire
  • créer le policy group qui relie tout et l’associer au context
  • Activer le context

Il faut voir un context comme un ensemble d’objets pouvant être utilisés dans le webvpn, ces objets étant ensuite spécifié dans une policy group elle même appliquée au context.

VPNGate(config)#webvpn context thincontext
VPNGate(config-webvpn-context)#gateway WEBVPNGATEWAY
VPNGate(config-webvpn-context)#login-message "Merci de vous logguer"
VPNGate(config-webvpn-context)#title "Mon beau WebVPN"
VPNGate(config-webvpn-context)#aaa authentication list WebVPN
VPNGate(config-webvpn-context)#url-list "mes liens"
VPNGate(config-webvpn-url)#heading "liens favoris"
VPNGate(config-webvpn-url)#url-text "mon blog" url-value "http://bmigette.fr"
VPNGate(config-webvpn-url)#heading "autres"
VPNGate(config-webvpn-url)#url-text "RTFM" url-value "http://google.fr"
VPNGate(config-webvpn-url)#exit
VPNGate(config-webvpn-context)#port-forward mail
VPNGate(config-webvpn-port-fwd)#local-port 60000 remote-server smtp.free.fr remote-port 25 description "smtp free"
VPNGate(config-webvpn-port-fwd)#exit
VPNGate(config-webvpn-context)#policy group webvpnpolicy
VPNGate(config-webvpn-group)#port-forward mail
VPNGate(config-webvpn-group)#url-list "mes liens"
VPNGate(config-webvpn-group)#exit
VPNGate(config-webvpn-context)#default-group-policy webvpnpolicy
VPNGate(config-webvpn-context)#inservice
*Mar  3 23:31:56.407: %SSLVPN-5-UPDOWN: sslvpn context : thincontext changed state to UP
VPNGate(config-webvpn-context)#exit

Login

Il vous suffit d’aller en http sur la page du routeur: (acceptez le certificat)

Login

Login

Si l’on cliques sur « Start application access », cela lance le thinclient pour l’accès aux applications pré configurée.

Web vpn

Web vpn

Note: Avec le nat sut VPNGate j’ai eu quelques erreurs sous dynamips (il fallait refresh la page souvent, car elle ne chargeais jamais du premier coup…)

Mode tunnel

Installation des packages

Tout d’abord, il faut copier les fichiers de déploiement du client sur le routeur ( http://www.cisco.com/en/US/docs/ios/security/configuration/guide/sec_ssl_vpn.html#wp1055905 – nécessite un compte cco ):

VPNGate#copy tftp://192.168.1.10/anyconnect-linux-2.3.0254-k9.pkg disk0:
VPNGate#copy tftp://192.168.1.10/anyconnect-macosx-i386-2.3.0254-k9.pkg disk0:
VPNGate#copy tftp://192.168.1.10/anyconnect-win-2.3.0254-k9.pkg disk0:
VPNGate(config)#webvpn install svc disk0:/anyconnect-win-2.3.0254-k9.pkg
SSLVPN Package SSL-VPN-Client : installed successfully

VPNGate(config)#webvpn install svc disk0:/anyconnect-win-2.3.0254-k9.pkg ?
  <cr>

VPNGate(config)#$all svc disk0:/anyconnect-macosx-i386-2.3.0254-k9.pkg
SSLVPN Package SSL-VPN-Client : installed successfully

VPNGate(config)#webvpn install svc disk0:/anyconnect-linux-2.3.0254-k9.pkg
SSLVPN Package SSL-VPN-Client : installed successfully

VPNGate(config)#

Note: Un seul package est possible sur ma version IOS. Sur des versions plus récentes, on peut utiliser le mot clé séquence à la fin de la commande webvpn install pour installer plusieurs packages. Je vais installer la version windows pour l’exemple.

Creation de la passerelle et configuration du context

Creation d’une gateway avec le port 8888. Nous ne pourrons pas mettre le HTTP Redirect car il est déjà utilisé par notre précédente gateway. Ici, lorsque nous nous connecterons sur l’ip 100.0.0.1:8888 nous pourrons établir une connexion tunnel.

VPNGate(config)#webvpn gateway TUNNELGATEWAY
VPNGate(config-webvpn-gateway)#hostname VPNGate
VPNGate(config-webvpn-gateway)#ip address 100.0.0.1 port 8888
VPNGate(config-webvpn-gateway)#inservice
VPNGate(config-webvpn-gateway)#exit

Il nous faut ensuite:

  • spécifier le pool d’adresse qui va être utilisé par les client du VPN
  • Créer le context
  • Mettre la bonne gateway dans le context
  • Créér le contexte avec le group policy adéquat
    -Activer les fonctions SVC (on aurait pu mettre svc-enabled ce qui aurait permis, si le client ne pouvais accéder au mode tunnel, de revenir au mode classic)
    -Configurer le SVC
  • Activer la policy dans le context
  • Spécifier la liste AAA à utiliser (créée précédemment)
  • Activer le context
VPNGate(config)#ip local pool webvpn 192.168.1.100 192.168.1.254 ! Les adresses du pool doivent faire parti d'un des réseau directement connecté !!
VPNGate(config)#webvpn context tunnelcontext
VPNGate(config-webvpn-context)#gateway TUNNELGATEWAY
VPNGate(config-webvpn-context)#policy group tunnelpolicy
VPNGate(config-webvpn-group)#function svc-required
VPNGate(config-webvpn-group)#svc address-pool webvpn
VPNGate(config-webvpn-group)#svc default-domain labo.lan
VPNGate(config-webvpn-context)#default-group-policy tunnelpolicy
VPNGate(config-webvpn-context)#aaa authentication list WebVPN
VPNGate(config-webvpn-context)#inservice
VPNGate(config-webvpn-context)#exit
VPNGate(config)#
*Mar  4 15:19:30.111: %SSLVPN-5-UPDOWN: sslvpn context : tunnelcontext changed state to UP

Maintenant j’accède à la page via https://100.0.0.1:8888

Accepter le certificat, logguez vous, et vous devriez voir cela:

Login screen

Login screen

WebVPN

WebVPN

Le client VPN vas ensuite être téléchargé et installé (accepter les avertissements)

Installation

Installation

Connecté

Connecté

VPNGate#sh webvpn session context all
WebVPN context name: thincontext
Client_Login_Name  Client_IP_Address  No_of_Connections  Created  Last_Used
WebVPN context name: tunnelcontext
Client_Login_Name  Client_IP_Address  No_of_Connections  Created  Last_Used
webvpnuser         100.0.0.2                  1         00:11:32  00:01:40
VPNGate#

Voilà, reste plus qu’a acheter une beau ISR et faire son vpn à la maison 🙂

Recent Entries

3 Responses to “SSLVPN (Web VPN)”

  1. jarjarbinz Says:

    Salut et merci pour cet article.
    Sais-tu si le mode tunnel est compatible avec DTLS ?
    Je souhaite faire passer de la voix dans mon tunnel, le TLS n’est donc pas approprié (sensible aux temps de latence).

    Merci !

  2. Bastien Migette Says:

    Salut, je ne connais pas ces protocoles, mais le principe du tunnel est justement de pouvoir y faire transiter n’importe quel type de trafic.

  3. kouamé marius Says:

    bonjour

    ravi d avoir suivi cette demonstration qui m a convaincu,

    est ce que vous pouvez me transmettre une demo concernant la configuration d un webvpn sur un ASA.

    MERCI!

Leave a Reply

Le temps imparti est dépassé. Merci de recharger le CAPTCHA.