Remote Access VPN + Radius
Un petit exemple de remote VPN avec authentification/Authorization via Radius.
Voici la topologie dynagen que j’utilise:
ghostios = True sparsemem = True [localhost] [[2621XM]] image = ../images/C2600-AD.BIN ram = 96 idlepc = 0x81691494 #on créé un routeur virtuel nommé R1 [[ROUTER VPNGATE]] model = 2621XM F0/0 = NIO_gen_eth:\Device\NPF_{XXXXXXX} #loopback, client vpn F0/1 = NIO_gen_eth:\Device\NPF_{XXXXXXX} #vmnet1, serveur ACS
Configuration des IP et du nom d’hôte
Router(config)#hostname VPNGATE VPNGATE(config)#int f0/1 VPNGATE(config-if)#ip address 192.168.254.1 255.255.255.0 VPNGATE(config-if)#no shut VPNGATE(config-if)#int f0/0 VPNGATE(config-if)#ip add 80.80.80.80 255.255.255.0 VPNGATE(config-if)#no shut VPNGATE(config-if)#int loop1 VPNGATE(config-if)#ip address 192.168.1.1 255.255.255.0
Ping vers le serveur radius:
VPNGATE#ping 192.168.254.10 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.254.10, timeout is 2 seconds: .!!!! Success rate is 80 percent (4/5), round-trip min/avg/max = 1/6/16 ms
Configuration du remote VPN:
Voici les différentes étapes à suivre:
- Configuration des politiques de groupes utilisée par le VPN (aaa)
- Configuration ISAKMP et IPSEC
- Configuration du client VPN Cisco
- Optionnel: Ajout de l’authentification XAuth
Configuration des politiques de groupes utilisée par le VPN (aaa)
Dans cette première partie, nous allons indiquer comment la configuration des utilisateurs va être appliquée par le VPN. Je vais créer un groupe local, et un groupe sur mon serveur radius.
Configuration AAA
VPNGATE(config)#aaa new-model VPNGATE(config)#aaa authorization network Remote_VPN_Author group radius local VPNGATE(config)#aaa authentication login Remote_VPN_Authen group radius local
Configuration du group local
Je vais créer un groupe d’administrateur de secour de manière à ce que si le serveur radius tombe en panne, le VPN soit encore accessible.
Il faut définir un pool d’adresse qui sera utilisé, puis configurer le groupe avec une clé pré partagée ainsi que les diverses options du groupe (serveur wins, DNS…).
On vas aussi créer un utilisateur LocalAdmin
VPNGATE(config)#ip local pool Remote_VPN_Pool 192.168.100.1 192.168.100.254 VPNGATE(config)#crypto isakmp client configuration group VPN_Admins VPNGATE(config-isakmp-group)#key 4dm!nVPNP4$$ VPNGATE(config-isakmp-group)#pool Remote_VPN_Pool VPNGATE(config-isakmp-group)#domain mynetwork.lan VPNGATE(config-isakmp-group)#exit
Configuration du serveur radius
Sur le routeur:
VPNGATE(config)#radius-server host 192.168.254.10 key R4d!usK3y
Sur le serveur ACS:
Note: Ne pas oublier de changer l’adresse IP dans Network Configurations / AAA Servers et redémarrez le serveur radius (CSRadius)
NOTE: Pour les groupes ISAKMP Avec radius, il faut créer un utilisateur portant le nom du groupe, et l’associer à son groupe, avec le mot de pase cisco qui est un mot de passe spécial !
Je penses qu’il faut faire cela car le protocol radius n’accepte pas que l’on lui passe un groupe en paramètre, on utilisera donc un utilisateur pour authentifier le groupe. A vérifier
Source: http://www.cisco.com/en/US/docs/ios/12_2t/12_2t8/feature/guide/ftunity.html#wp1191206 et http://www.cisco.com/en/US/docs/ios/12_2t/12_2t8/feature/guide/ftunity.html#wp1045273
Dans le menu Network configuration, dans AAA Clients, cliquez sur add entry et mettez ces paramètres:
Hostname: VPNGATE
AAA Client IP: 192.168.254.1
Shared Secret: R4d!usK3y
Authenticate using: RADIUS (CISCO IOS/PIX)
Puis cliquez sur submit+apply
Allez ensuite dans Interface configuration, puis RADIUS (Cisco IOS/PIX 6.0), et vérifiez que « 026/009/001] cisco-av-pair » est coché (première ligne), puis submit.
Dans group Setup, choisissez le groupe 1, renommez le en VPN_USERS (optionnel), puis cliquez sur edit settings.
Dans la partie « Cisco IOS/PIX 6.x RADIUS Attributes » cochez « [009\001] cisco-av-pair » et mettez ceci:
ipsec:key-exchange=ike
ipsec:key-exchange=preshared-key
addr-pool=VPN_Users_Pool
ipsec:default-domain=myNetwork.lan
Note: le pool VPN_Users_Pool Doit exister sur le router:
VPNGATE(config)#ip local pool VPN_Users_Pool 192.168.101.1 192.168.101.254
Cocher aussi ces attributs dans Radius IETF (s’ils n’apparaissent pas, aller dans Interface configuration, RADIUS IETF, puis cochez les)
- Attribute 6: Service-Type=Outbound
- Attribute 64: Tunnel-Type=IP ESP
- Attribute 69: Tunnel-Password=U$3rVPNP4$$
Cliquez sur Submit+Restart
Je n’ai pas trouvé la liste exhaustive des attributs supportés, je me suis inspiré de ceux ci:
http://www.cisco.com/en/US/docs/ios/12_2t/12_2t8/feature/guide/ftunity.html#wp1058287
AJOUT DE L’UTILISATEUR DU GROUPE !!
ajouter un utilsateur VPN_USERS avec le mot de passe cisco (cisco et pas un autre mot de passe, voir note au début de ce point). Dans la partie Client IP Address Assignment, mettez « No IP address assignment »
Ajoutez un utilisateur dans le serveur radius (cliquez sur User setup, entrez un nom d’utilisateur puis cliquez sur add/edit et mettez les paramètres sur screenshot).
j’ai créé l’utilisateur vpnuser avec le mot de passe cisco (ici le mot de passe cisco n’est pas obligatoire, vous pouvez mettre ce que vous voulez). Testons les paramètres sur le routeur:
VPNGATE#test aaa group radius vpnuser cisco legacy Attempting authentication test to server-group radius using radius User was successfully authenticated.
Configuration ISAKMP et IPSEC
Configuration ISAKMP: Hash md5, Authentification PSK, Diffie-Hellman Group 2, et encryption DES
VPNGATE(config)#crypto isakmp policy 1 VPNGATE(config-isakmp)#hash md5 VPNGATE(config-isakmp)#authentication pre-share VPNGATE(config-isakmp)#group 2 VPNGATE(config-isakmp)#encryption des VPNGATE(config-isakmp)#exit
Note: La clé pré partagée IKE sera celle du groupe.
Il faut maintenant créer un transform set, et une crypto map dynamic. Les crypto map dynamiques sont des crypto map dont l’ensemble des paramètres n’est pas connu, par exemple en l’occurence le peer distant n’est pas static, on ne connait pas les adresses IP qui vont se connecter en remote VPN.
Creation d’un transform set et d’une crypto map dynamiques. La fonction reverse-route permet d’intégrer une route /32 avec l’adresse du client dans la table de routage et donc de la propager aux autres routeurs via des mises à jour (RIP, EIGRP, OSPF…) afin qu’il soit connu des autres routeur du réseau.
Note: Les numéros 1 et 10 des crypto map correspondent au numéros de séquence, ce qui permet d’avoir plusieurs profiles. Le numero le plus petit est prioritaire, car il sera traité en premier.
VPNGATE(config)#crypto ipsec transform-set Remote_VPN_TSet esp-3des esp-Md5-hmac
VPNGATE(cfg-crypto-trans)#exit
VPNGATE(config)#crypto dynamic-map Remote_VPN_Dynmap 1
VPNGATE(config-crypto-map)#set transform-set Remote_VPN_TSet
VPNGATE(config-crypto-map)#reverse-route
Nous allons maintenant creer la crypto map qui indiquera comment est déclenchée la connexion client, ainsi que les paramètres d’authorization
VPNGATE(config)#crypto map Remote_VPN_Map isakmp authorization list Remote_VPN_Author !connexion déclenchée par le client VPNGATE(config)#crypto map Remote_VPN_Map client configuration address respond VPNGATE(config)#crypto map Remote_VPN_Map 10 ipsec-isakmp dynamic Remote_VPN_Dynmap
Note: Les numéros 1 et 10 des crypto map correspondent au numéros de séquence, ce qui permet d’avoir plusieurs profiles. Le numero le plus petit est prioritaire, car il sera traité en premier.
Il ne reste plus qu’a appliquer notre crypto map au l’interface par laquelle vont se connecter les clients et ça doit marcher (suspens)
VPNGATE(config)#interface FastEthernet 0/0 VPNGATE(config-if)#crypto map Remote_VPN_Map
Configuration du client VPN Cisco
Dans le client VPN Cisco, cliquez sur new:
Dans la fenêtre utilisez ces paramètres (ou ceux que vous avez spécifier pour votre groupe local à l’étape 1).:
Group : VPN_Admins
Password: 4dm!nVPNP4$$
Refaire la même étape avec les paramètres du serveur Radius
Group: VPN_USERS
Password:U$3rVPNP4$$
ester la connexion VPN_USERS:
Sélectionnez la connexion dans le Client VPN, puis cliquez sur connect. Cela doit marcher.
Vérification de la reverse-route (80.80.80.1 est mon l’adresse publique du client).
VPNGATE#sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
80.0.0.0/24 is subnetted, 1 subnets
C 80.80.80.0 is directly connected, FastEthernet0/0
C 192.168.254.0/24 is directly connected, FastEthernet0/1
C 192.168.1.0/24 is directly connected, Loopback1
192.168.101.0/32 is subnetted, 1 subnets
S 192.168.101.1 [1/0] via 80.80.80.1
Affichage des clients:
VPNGATE#sh crypto isakmp peers Peer: 80.80.80.1 Port: 3800 Local: 80.80.80.80 Phase1 id: VPN_USERS VPNGATE#sh crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status 80.80.80.80 80.80.80.1 QM_IDLE 1001 0 ACTIVE IPv6 Crypto ISAKMP SA VPNGATE#sh crypto session Crypto session current status Interface: FastEthernet0/0 Session status: UP-ACTIVE Peer: 80.80.80.1 port 3800 IKE SA: local 80.80.80.80/500 remote 80.80.80.1/3800 Active IPSEC FLOW: permit ip 0.0.0.0/0.0.0.0 host 192.168.101.1 Active SAs: 2, origin: dynamic crypto map
Et sur mon pc:
Carte Ethernet Connexion au réseau local 8: Suffixe DNS propre à la connexion : myNetwork.lan Adresse IP. . . . . . . . . . . . : 192.168.101.2 Masque de sous-réseau . . . . . . : 255.255.255.0 Passerelle par défaut . . . . . . : 192.168.101.1
Maintenant, désactivons le serveur radius (déconnecter, shutdown,…) pour tester le groupe admins. Si on ne faisait pas ça, le serveur radius répondrait par invalid user et on ne pourrais s’authentifier avec le groupe VPN_Admins.
Si l’on voulais que ce groupe soit quand même accessible, il aurait fallu le créer ET sur le routeur ET sur le serveur radius. Pour ma part je vais shutdown l’interface du radius.
Note: Cela ne marche pas car le temps qu’il y ait un timeout pour contacter le serveur radius, le client VPN annule la connexion. Par contre si je modifie la ligne
VPNGATE(config)#aaa authorization network Remote_VPN_Author group radius local par VPNGATE(config)#aaa authorization network Remote_VPN_Author local
Le groupe VPN_Admins fonctionne. On remarque bien un pool d’adresse différent:
Carte Ethernet Connexion au réseau local 8: Suffixe DNS propre à la connexion : mynetwork.lan Adresse IP. . . . . . . . . . . . : 192.168.100.1 Masque de sous-réseau . . . . . . : 255.255.255.0 Passerelle par défaut . . . . . . : 192.168.100.2
Il faudrait trouver un moyen d’augmenter le timeout pour le client VPN, ou de baisser celui du serveur radius sur le routeur. Bref on va plutot s’attaquer à l’XAUTH.
Ajout de l’authentification XAuth
XAuth c’est quoi? XAuth = eXtended Authentication. Oui mais encore ? Xauth est un processus entre les phase 1 et 2 IKE (parfois appelé phase IKE 1.5), permettant d’authentifier un utilisateur lorsqu’il se connecte en VPN. Les plus doué d’entre vous auront peut être remarqué que j’ai créé un utilisateur vpnuser avec le mot de passe cisco, et que j’ai ajouter une ligne dans la configuration du routeur qui ne nous a pas encore servie:
VPNGATE(config)#aaa authentication login Remote_VPN_Authen group radius local
Bref, pour activer XAuth, ajouter une authentication list à la crypto map précédemment créée:
VPNGATE(config)#crypto map Remote_VPN_Map client authentication list Remote_VPN_Authen
Maintenant, il suffit de couper la connexion, et de la relance (VPN_USERS), et l’on va être amenés à se logguer. Nous utiliseront vpnuser/cisco (ou tout autre utilisateur que vous aurez créé). Libre à vous d’ajouter d’autres utilisateurs dans ACS. Pour les groupes locaux, il suffit d’utiliser les utilisateurs créé avec la commande username. (Ne pas oublier de remettre aaa authorization network Remote_VPN_Author group radius local si vous aviez enlevé radius pour testé le group local)
Voila voila, j’espère que ceux qui sont arrivés à la fin de cet article sont des pro du remote VPN !
Configuration finale:
VPNGATE#sh run Building configuration... Current configuration : 1785 bytes ! version 12.4 service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption ! hostname VPNGATE ! boot-start-marker boot-end-marker ! ! aaa new-model ! ! aaa authentication login Remote_VPN_Authen group radius local aaa authorization network Remote_VPN_Author group radius local ! aaa session-id common ! resource policy ! memory-size iomem 15 no network-clock-participate slot 1 no network-clock-participate wic 0 ip cef ! ! ! ! ! ! ! ! username LocalAdmin privilege 15 secret 5 $1$tDWV$6NngMkxdNRufvvGGmZ68h1 ! ! ! crypto isakmp policy 1 hash md5 authentication pre-share group 2 ! crypto isakmp client configuration group VPN_Admins key 4dm!nVPNP4$$ domain mynetwork.lan pool Remote_VPN_Pool ! ! crypto ipsec transform-set Remote_VPN_TSet esp-3des esp-md5-hmac ! crypto dynamic-map Remote_VPN_Dynmap 1 set transform-set Remote_VPN_TSet reverse-route ! ! crypto map Remote_VPN_Map client authentication list Remote_VPN_Authen crypto map Remote_VPN_Map isakmp authorization list Remote_VPN_Author crypto map Remote_VPN_Map client configuration address respond crypto map Remote_VPN_Map 10 ipsec-isakmp dynamic Remote_VPN_Dynmap ! ! ! ! interface Loopback1 ip address 192.168.1.1 255.255.255.0 ! interface FastEthernet0/0 ip address 80.80.80.80 255.255.255.0 duplex auto speed auto crypto map Remote_VPN_Map ! interface FastEthernet0/1 ip address 192.168.254.1 255.255.255.0 duplex auto speed auto ! ip local pool Remote_VPN_Pool 192.168.100.1 192.168.100.254 ip local pool VPN_Users_Pool 192.168.101.1 192.168.101.254 ! ! ip http server no ip http secure-server ! ! ! ! radius-server host 192.168.254.10 auth-port 1645 acct-port 1646 key R4d!usK3y ! control-plane ! ! ! ! line con 0 line aux 0 line vty 0 4 ! ! end
Recent Entries
- Reponse tardive aux commentaires
- CCIE #43827
- VRF-Aware GETVPN, DMVPN, et FLEXVPN Spoke To Spoke
- Mes articles sur supportforums
- Définir des « handlers » personnalisés pour associer les liens d’un protocole avec une application perso.
- DMVPN over GETVPN avec KS COOP (redondance) et KS Forwarding
- EAP-TLS avec Autorité de certification autonome (Standalone CA) sous Windows 2003
- Static subnet NAT avec VRF pour monter des ‘PODs’ (LAB)
- Capture WiFi en mode monitor sous windows, et capture par process
- Comment taper un point d’interrogation ‘?’ dans un mot de passe ?
avril 6th, 2009 at 10:28
Wow !! Super tuto ! Merci encore pour ton travail, cela m’a beaucoup aider à faire avancer mon projet ! Cependant, j’ai encore de la route avant que ce dernier soit finalisé.
[quote]
« » »Il faut maintenant créer un transform set, et une crypto map dynamic. Les crypto map dynamiques sont des crypto map dont l’ensemble des paramètres n’est pas connu, par exemple en l’occurence le peer distant n’est pas static, on ne connait pas les adresses IP qui vont se connecter en remote VPN. » » »
[/quote]
Justement moi mon projet c’est d’établir des connexions avec des sites distants (routeurs), soit faire plein de Site-to-Site (dont les @IP distantes sont bien connues) mais toujours avec l’utilisation du serveur Radius (en l’occurence moi j’utilise Microsoft IAS).
Comment puis-je faire cela ?
Voici mon post qui explique plus en détail mon projet:
http://forum.labo-cisco.com/cisco-1841-vpn-ipsec-avec-authentification-radius-t10941.html
MERCI BEAUCOUP !
avril 6th, 2009 at 11:02
Salut, tu peux regarder cet article:
http://bmigette.fr/2009/03/03/easy-vpn-server-avec-dvti-dynamic-vpn-tunnel-interfaces/
en changeant les liste aaa et en mettant radius au lieu de local, cela pourrais répondre à ton problème.
Sinon, la solution DMVPN avec des certificats peut être elle aussi intéressante.
http://bmigette.fr/2009/02/08/dmvpn-certificats/
mai 31st, 2011 at 10:15
svp je veux réaliser un test comme celui là radius+vpn sous linux
j’ai un routeur d-link et deux machines.mais je sais pas comment faire car j’ai pas compris c’est quoi la topologie dynagen!!et dans quelle console travaillez vous!!!
SVP pourriez vous me donner plus d’explication c urgent!!
et Merci d’avance
juin 14th, 2011 at 13:54
Bonjour, dynagen est un outil permettant de virtualiser des routeurs cisco. concernant le dlink et radius sous linux je ne peux aider. Bonne chance