informatique:cisco:ipsec
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
informatique:cisco:ipsec [2009/06/16 13:47] – créée pteu | informatique:cisco:ipsec [2013/10/14 20:44] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 3: | Line 3: | ||
======IPSec====== | ======IPSec====== | ||
+ | IPSec est un standard de l'IETF qui emploie des mécanismes de chiffrement de niveau 3 (réseau) afin d' | ||
+ | * l' | ||
+ | * la **confidentialité** (chiffrement) et | ||
+ | * l' | ||
- | =====Mise en place===== | + | |
+ | =====Théorie===== | ||
+ | |||
+ | Il existe plusieurs modes : | ||
+ | * **mode tunnel** = dans ce cas on ajoute à la fois les headers ESP mais aussi une nouvelle entête IP | ||
+ | * **mode transport** = en mode PTP, seul l' | ||
+ | |||
+ | ====IKE==== | ||
+ | |||
+ | **Internet Key Exchange** permet la négociation des paramètres de sécurité et l' | ||
+ | * **ISAKMP** : protocole de négociation d'une politique de sécurité ainsi que d' | ||
+ | * **Oakley** : protocole d' | ||
+ | * **Skeme** : protocole d' | ||
+ | |||
+ | ===Les 2 phases=== | ||
+ | |||
+ | * **phase 1** : son but est d' | ||
+ | * authentification des peers | ||
+ | * négociation de la politique de sécurité pour établir une IKE SA (association de sécurité IKE) | ||
+ | * établissement d'un canal sécurisé grâce à un échange de clé (Diffie-Hellman) | ||
+ | Il existe 2 modes pour la phase 1 : **main mode** (6 paquets) et **agressive mode** (3 paquets). | ||
+ | |||
+ | * **phase 2** : son but est de négocier les SAs pour monter le tunnel IPsec : | ||
+ | * négociation des paramètres de sécurité (comme le tranform-set) | ||
+ | * établissement d'une IPsec SA, protégée par la précédente SA de la phase 1 | ||
+ | * périodiquement renégocie la SA ; renouvellement de la clé partagée | ||
+ | Il n' | ||
+ | |||
+ | Lors de la négociation, | ||
+ | |||
+ | * **Diffie-Hellman** : protocole de génération de clé partagée. Il ne permet pas de vérifier l' | ||
+ | |||
+ | * **ESP** (Encapsulating Security Payload) permet le chiffrement, | ||
+ | * **AH** (Authentication Header) est un mécanisme d' | ||
+ | AH utilise HMAC, une fonction de hashage avec une clé secrète. | ||
+ | |||
+ | * **SA** (Security Associaion) : définit une politique d' | ||
+ | * **SPI** (Security Parameter Index) : un index SPI est associé à chaque SA par le gestionnaire de tunnel IPsec. | ||
+ | * **SPD** (Security Policy Database) : database sur chaque machine qui contient : | ||
+ | * l' | ||
+ | * l' | ||
+ | * le mode (tunnel ou transport) | ||
+ | * la durée de vie de la clé (exprimée en temps ou en volume de données transférées) | ||
+ | * **SAD** (Security Association Database) : database sur chaque machine qui contient : | ||
+ | * l'IP destination | ||
+ | * le SPI | ||
+ | * le protocole (ESP ou AH) | ||
+ | Une SA est une compilation des données de ces 2 databases. | ||
+ | |||
+ | * **RRI** (Reverse Route Injection) : une route statique est créé sur le serveur Cisco Easy VPN pour l'IP interne de chaque client VPN. Cela permet de les injecter ensuite dans l' | ||
+ | |||
+ | **Méthodes d' | ||
+ | * couple nom d' | ||
+ | * OTP (One Time Password) | ||
+ | * Biométrie | ||
+ | * clé partagée | ||
+ | * certificats numériques | ||
+ | |||
+ | **Algorithmes de chiffrements symétriques** : on utilise la même clé pour chiffrer et déchiffrer | ||
+ | * DES (Data Encryption Standard) ; vulnérable car basé sur des clés de 56 bits | ||
+ | * 3DES (3 chiffrements DES à la suite) | ||
+ | * AES (Advanced Encryption Standard) ; clés de 128, 192 ou 256 bits | ||
+ | |||
+ | **Algorithmes de chiffrement asymétriques** : paire de clés publique et privée | ||
+ | * RSA (Rivest Shamir Adleman) ; on peut utiliser différentes longueurs de clés ; il est recommandé aujourd' | ||
+ | |||
+ | **Méthodes de hashage** : | ||
+ | * HMAC (Hash-based Message Encryption Code) | ||
+ | * MD5 (Message Digest 5) | ||
+ | * SHA-1 (Secure Hash Algorithme 1) | ||
+ | |||
+ | |||
+ | ====PKI==== | ||
+ | |||
+ | **PKI** (Public Key Infrastructure) est un système servant à authentifier une clé publique d'une entité. Elle repose sur une relation de confiance entre une autorité de certification (**CA** pour // | ||
+ | |||
+ | ====NAT Traversal==== | ||
+ | |||
+ | IPSec est un protocole qui se base sur les adresses IPs de bout en bout ; il ne fonctionne donc pas si l'on modifie ces IPs. C'est le cas quand fait du NAT/PAT par exemple. | ||
+ | |||
+ | Le **NAT Traversal** est un mécanisme d' | ||
+ | |||
+ | |||
+ | =====Mise en place d' | ||
Mise en place d'un tunnel IPSec entre 2 routeurs R1 et R2. | Mise en place d'un tunnel IPSec entre 2 routeurs R1 et R2. | ||
Line 10: | Line 97: | ||
====Définition de la policy ISAKMP==== | ====Définition de la policy ISAKMP==== | ||
- | On y défini le type d' | + | (Phase 1) |
+ | Les politiques ISAKMP sont définies globalement et donc utilisables par tous les tunnels configurés sur le routeur. Leur utilisation se fait séquentiellement, | ||
+ | |||
+ | On y définit le type d' | ||
+ | |||
+ | <code bash> | ||
+ | crypto isakmp policy 1 | ||
+ | | ||
+ | hash sha | ||
+ | | ||
+ | group 2 | ||
+ | </ | ||
+ | |||
+ | Puis on indique la clé partagée ainsi que l' | ||
+ | <code bash> | ||
+ | crypto isakmp key LaCleSecrete address 172.16.171.2 | ||
+ | </ | ||
+ | |||
+ | ====Définition de la crypto map==== | ||
+ | |||
+ | Définition du '' | ||
+ | <code bash> | ||
+ | crypto ipsec transform-set TS-aes_sha | ||
+ | | ||
+ | ! | ||
+ | ! paramètre facultatifs | ||
+ | mode transport | ||
+ | </ | ||
+ | | ||
+ | Définition de la crypto map = associer un transform-set à un peer et à une ACL (cf plus bas) : | ||
+ | <code bash> | ||
+ | crypto map VPN_To_R2 10 ipsec-isakmp | ||
+ | set peer 172.16.171.2 | ||
+ | match address 101 | ||
+ | set transform-set TS-aes_sha | ||
+ | set pfs group2 | ||
+ | </ | ||
+ | |||
+ | Définition de l' | ||
+ | <code bash> | ||
+ | access-list 101 permit ip 10.1.1.0 0.0.0.255 10.2.2.0 0.0.0.255 | ||
+ | </ | ||
+ | |||
+ | ====Appliquer la crypto map sur une interface==== | ||
+ | |||
+ | <code bash> | ||
+ | interface se0/0 | ||
+ | ip address 172.16.171.1 255.255.255.0 | ||
+ | | ||
+ | </ | ||
+ | |||
+ | |||
+ | =====Tunnel GRE over IPSec===== | ||
+ | |||
+ | L' | ||
+ | |||
+ | Soient R1 et R2 2 routeurs reliés par leur interface fa0/1 (10.2.4.1 et 10.2.4.2/ | ||
+ | |||
+ | Sur R1 : | ||
crypto isakmp policy 1 | crypto isakmp policy 1 | ||
- | | + | encryption 3des |
- | hash sha | + | authentication pre-share |
- | | + | |
group 2 | group 2 | ||
+ | ! | ||
+ | crypto isakmp key secretkey address 10.2.4.2 | ||
+ | crypto ipsec transform-set ESP-3DES-SHA esp-3des esp-sha-hmac | ||
+ | ! | ||
+ | crypto map SDM_CMAP_1 1 ipsec-isakmp | ||
+ | set peer 10.2.4.2 | ||
+ | set transform-set ESP-3DES-SHA | ||
+ | match address 101 | ||
+ | ! | ||
+ | interface Tunnel0 | ||
+ | ip address 10.1.4.1 255.255.255.0 | ||
+ | ip mtu 1420 | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ! | ||
+ | interface FastEthernet0/ | ||
+ | | ||
+ | ip address 10.2.4.1 255.255.255.0 | ||
+ | | ||
+ | speed 100 | ||
+ | | ||
+ | ! | ||
+ | ip route 0.0.0.0 0.0.0.0 Tunnel0 | ||
+ | ip route 10.2.4.2 255.255.255.255 FastEthernet0/ | ||
+ | ! | ||
+ | access-list 101 remark SDM_ACL Category=4 | ||
+ | access-list 101 permit gre host 10.2.4.1 host 10.2.4.2 | ||
- | Puis on indique la clé partagée avec l' | ||
- | crypto isakmp key LaCleSecrete address 172.16.171.2 netmask 255.255.255.255 | ||
- | ====Définition de la crypto map==== | + | =====Redondance / Failover===== |
- | L' | + | Il existe plusieurs méthodes pour mettre en place une redondance en cas de perte de lien, de défaillance matérielle ou de problème sur le réseau // |
- | | + | ====DPD + IPsec Backup peer==== |
- | esp-aes 128 esp-sha-hmac | + | |
+ | * **DPD** (Dead Peer Detection) est un mécanisme natif d'IKE qui permet de détecter un problème sur le tunnel IPsec ; il est désactivé par défaut. Le DPD **on-demand** permet de ne vérifier que le peer est up que lorsque le routeur a du trafic à envoyer vers lui, ce qui réduit sa charge CPU. | ||
+ | * **Cisco IOS Keepalive Feature** est un mécanisme similaire au DPD mais propriétaire Cisco. | ||
+ | * L'IGP qui tournent sur un tunnel GRE over IPsec permet de détecter si le peer/ | ||
+ | |||
+ | On configure le DPD avec la commande suivante : '' | ||
+ | |||
+ | Les secondes vont de 10 à 3600 et indique l' | ||
+ | |||
+ | Quand le DPD détecte le peer IKE down, il va supprimer les SA IKE et IPSec de ce peer. S'il a un second peer déclaré dans la crypto map, il renégocie un tunnel avec ce dernier : | ||
+ | |||
+ | crypto isakmp keepalive 10 3 | ||
+ | |||
+ | crypto map CM 10 ipsec-isakmp | ||
+ | set peer 10.0.0.1 default | ||
+ | set peer 10.0.1.1 | ||
+ | |||
+ | Le DPD est configuré pour envoyer des keepalive toutes les 10 secondes avec 3 // | ||
+ | < | ||
+ | debug crypto isakmp | ||
+ | [...] | ||
+ | Jan 21 08:16:25: dpd enable: 0000, dpd periodic enable : 0000 | ||
+ | </ | ||
+ | |||
+ | Liens : | ||
+ | * [[http:// | ||
+ | |||
+ | ====HSRP et RRI==== | ||
+ | |||
+ | On peut mettre en place un tunnel IPsec sur une IP **HSRP** virtuelle ; pour cela on doit configurer le HSRP sur cette interface, et déclarer la crypto-map avec l' | ||
+ | |||
+ | crypto map VPN_To_R2 redundancy idHSRP | ||
+ | |||
+ | '' | ||
+ | |||
+ | standby 1 name idHSRP | ||
+ | |||
+ | Bien sur, c'est l'IP HSRP virtuelle qui doit être renseignée comme destination dans la conf du peer. | ||
+ | |||
+ | Le **RRI** consiste à l' | ||
+ | |||
+ | crypto dynamic-map DM 10 | ||
+ | | ||
| | ||
- | | + | crypto map CM 10 ipsec-isakmp |
- | | + | |
- | set peer 172.16.171.2 | + | |
- | match address 101 | + | |
- | set transform-set Aes_sha | + | |
- | ====Appliquer la configuration sur une interface==== | ||
- | interface se0/0 | + | ====HSRP + SSO==== |
- | ip address 172.16.171.1 255.255.255.0 | + | |
- | | + | |
+ | Les méthodes précédentes de failover sont sans état (stateless) car quand un peer passe down, le tunnel doit être réétabli. Il existe des solutions dites statefull qui permettent de partager un tunnel dans un environnement virtuel, partagé entre 2 machines par site. Cela permet de ne pas réétablir le tunnel et de reprendre "à chaud" la transmission des données chiffrées. | ||
+ | |||
+ | SSO est un protocole de synchronisation d' | ||
+ | |||
+ | Déclaration de la crypto map sur l' | ||
+ | crypto map CM redundoncy idHSRP stateful | ||
+ | |||
+ | Définition de la crypto map : | ||
+ | crypto dynamic-map DM 10 | ||
+ | set transform-set TS | ||
+ | | ||
+ | ! | ||
+ | crypto map CM 10 ipsec-isakmp dynamic DM | ||
+ | ! | ||
+ | redundancy inter-device | ||
+ | | ||
+ | |||
+ | Configuration du SSO avec le protocole SCTP (Steam Control Transmission Protocol) : | ||
+ | ipc zone default | ||
+ | | ||
+ | | ||
+ | local-port 12345 | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | remote-port 12345 | ||
+ | | ||
+ | |||
+ | |||
+ | ====Accélération matérielle==== | ||
+ | |||
+ | Sur certains châssis on peut utiliser des modules d' | ||
+ | <code bash> | ||
+ | ! prise en charge de la crypto par la carte SPA | ||
+ | crypto engine gre vpnblade | ||
+ | ! | ||
+ | ! prise en charge par la carte supervisor | ||
+ | crypto engine gre supervisor | ||
+ | </ | ||
=====Vérifs===== | =====Vérifs===== | ||
- | ====Etat des tunnels==== | + | show crypto isakmp key |
+ | show crypto isakmp sa | ||
+ | show crypto isakmp policy | ||
+ | show crypto session detail | ||
+ | show crypto engine connection active | ||
- | sh crypto session | + | ====État des tunnels==== |
- | Crypto session current status | + | |
- | + | <code bash> | |
- | Interface: Vlan80 | + | show crypto session |
- | Session status: UP-ACTIVE | + | Crypto session current status |
- | Peer: 192.168.0.78/ | + | |
- | IKE SA: local 192.168.0.75/ | + | Interface: Vlan80 |
- | IPSEC FLOW: permit 47 host 192.168.0.75 host 192.168.0.78 | + | Session status: UP-ACTIVE |
- | Active SAs: 2, origin: crypto map | + | Peer: 192.168.0.78/ |
+ | IKE SA: local 192.168.0.75/ | ||
+ | IPSEC FLOW: permit 47 host 192.168.0.75 host 192.168.0.78 | ||
+ | Active SAs: 2, origin: crypto map | ||
+ | </ | ||
+ | |||
+ | Session status (source : [[http:// | ||
+ | ^Tunnel Status | ||
+ | |UP-ACTIVE | ||
+ | |UP-IDLE | ||
+ | |UP-IDLE | ||
+ | |UP-NO-IKE | ||
+ | |UP-NO-IKE | ||
+ | |DOWN-NEGOTIATING|Exist, | ||
+ | |DOWN-NEGOTIATING|Exist, | ||
+ | |DOWN |None |None (flow exists)| | ||
+ | |DOWN |None |None (no flow)| | ||
+ | |||
+ | |||
+ | Plus de détails : on précise l' | ||
+ | <code bash> | ||
+ | Router1# | ||
+ | |||
+ | interface: Vlan2784 | ||
+ | Crypto map tag: cm100, local addr 10.0.0.1 | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | #pkts encaps: 2949679701, #pkts encrypt: 2949679701, #pkts digest: 2949679701 | ||
+ | #pkts decaps: 1599171374, #pkts decrypt: 1599171374, #pkts verify: 1599171374 | ||
+ | #pkts compressed: 0, #pkts decompressed: | ||
+ | #pkts not compressed: 0, #pkts compr. failed: 0 | ||
+ | #pkts not decompressed: | ||
+ | #send errors 0, #recv errors 0 | ||
+ | |||
+ | local crypto endpt.: 10.0.0.1, remote crypto endpt.: 10.1.1.1 | ||
+ | path mtu 1500, ip mtu 1500 | ||
+ | | ||
+ | PFS (Y/N): Y, DH group: group5 | ||
+ | |||
+ | | ||
+ | spi: 0x3988518B(965235083) | ||
+ | transform: esp-3des esp-sha-hmac , | ||
+ | in use settings ={Tunnel, } | ||
+ | conn id: 8079, flow_id: :6079, sibling flags 80000240, | ||
+ | sa timing: remaining key lifetime (k/sec): (911080/ | ||
+ | IV size: 8 bytes | ||
+ | replay detection support: N | ||
+ | Status: ACTIVE | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | spi: 0xDA4B403D(3662364733) | ||
+ | transform: esp-3des esp-sha-hmac , | ||
+ | in use settings ={Tunnel, } | ||
+ | conn id: 8080, flow_id: :6080, sibling flags 80000240, | ||
+ | sa timing: remaining key lifetime (k/sec): (3101942/ | ||
+ | IV size: 8 bytes | ||
+ | replay detection support: N | ||
+ | Status: ACTIVE | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | </ | ||
+ | |||
+ | Autres commandes, en vrac : | ||
+ | <code bash> | ||
+ | show crypto engine accel stat slot x/y detail et/ou | ||
+ | show crypto ipsec sa | ||
+ | ! | ||
+ | show crypto ace polo detail | ||
+ | show int tunnel351 stats | ||
+ | show crypto vlan | ||
+ | show crypto engine accelerator statistic all | ||
+ | show ip int tu351 | ||
+ | ! | ||
+ | clear crypto engine accelerator counter all | ||
+ | clear crypto session local 10.4.101.97 | ||
+ | </ | ||
====Renégocier un tunnel spécifique==== | ====Renégocier un tunnel spécifique==== | ||
Line 70: | Line 405: | ||
clear crypto session remote 192.168.0.78 | clear crypto session remote 192.168.0.78 | ||
+ | |||
+ | |||
+ | =====Liens===== | ||
+ | |||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | En vrac, des liens destinés à comprendre et debugger l' | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// |
informatique/cisco/ipsec.1245160062.txt.gz · Last modified: 2013/10/14 20:52 (external edit)