Migración de IKEv1 a IKEv2 en el ASA versión 8.4

Migración de IKEv1 a IKEv2 en el ASA versión 8.4

Documento original de Gori Dawodu

Introducción

Razones para realizar la migración

1. IKEv2 proporciona una mejor resistencia a los ataques. IKEv2 puede mitigar ataques de DoS (Denegación de Servicio) mediante la validación del iniciador de IPSEC.

Para hacer esta vulnerabilidad díficil de explotar, el que responde puede pedir una cookie al iniciador para asegurarse que es una conexión normal.

En IKEv2 las cookies del respondedor mitigan el ataque de DoS, ya que este no guarda al estado de la conexión de IKE ni tampoco realiza la operación de D-H  a menos que el iniciador devuelva la cookie enviada por el respondedor.

El respondedor usa un mínimo de CPU y no creará una SA (Asociación de Seguridad) hasta que valide al iniciador.

2. IKEv2 reduce la complejidad en la creación de IPSEC entre diferentes equipos  VPN. Aumenta la interoperabilidad y permite tener una forma estándar para metodos de autenticación existentes.

IKEv2 provee interoperabilidad de IPSEC entre diferentes vendedores al ofrecer tecnologías como Dead Peer Detection (DPD), NAT Traversal (NAT-T), contacto inicial,etc.

3. IKEv2 contiene menos encabezado, con esto mejora el tiempo de respuesta en el establecimiento del SA. Multiples peticiones son permitidas (por ejemplo: se crean en paralelo SA subordinadas).

4. IKEv2 reduce el tiempo de SA. En IKEv1, el retraso de la SA, aumenta conforme el volumen del paquete aumenta. IKEv2 mantiene el mismo tiempo aunque el volumen aumente.  La creación de SA en IKEv2 tardan menos que en IKEv1.

5. IKEv2 requiere de un menor tiempo para realizar el rekey (regeneración de la llave). IKEv1 toma más tiempo para realizar el rekey que IKEv2. Debido a la redefinición de ciertos mecanismos de IKEv1 (como son, tamaño de ToS, tiempo de vida del SA y singularidad del SPI), en IKEv2 menos paquetes son perdidos o duplicados. Por lo tanto hay menos necesidad de realizar un rekey.

Precaución

IKEv2 no interopera con IKEv1. IPSEC no se puede establecer entre un dispositivo de cifrado utilizando IKEv2 y otro utilizando IKEv1. IKEv2 está destinado a mitigar la exposición que tiene IKEv1. Si algún proveedor con IKEv2 puede interoperar con IKEv1, es posible que el atacante force al equipo con IKEV2 para operar en IKEv1 y explotar las vulnerabilidades de este.

Vista General de la Migración

En el Cisco ASA corriendo la versión 8.4 se puede ejecutar el comando "migrate l2l" para migrar la configuración de  VPN IKEv1 a VPN IKEv2. Al correr este comando, las configuraciones de IKEV1 cambiarán, agregando nuevas líneas de configuración relacionada a IKEv2. La sección posterior muestra el proceso de migración.

En este ejemplo, IKEv1 usa autenticación por medio de llaves predefinidas PSK (pre-shared keys). Cabe notar que cuando se utiliza IKEv2 la autenticación puede realizarse por llave simétrica o  asimétrica.  Cuando el comando de "migration" es utilizado en el ASA, este crea automáticamente una llave simétrica PSK. Después de correr el comando, la configuración de IKEv1 no es removida, en lugar de esto ambas configuraciones IKEv1 e IKEv2 corren en paralelo en el mismo crypto mapa.

Al correr IKEv1 e IKEv2 en paralelo permite al iniciador del VPN regresar de IKEv2 a IKEv1 cuando existen problemas de configuración existente con IKEv2. También al tener ambos IKE en paralelo, el ASA usa un módulo llamado tunnel manager/IKE en el iniciador para determinar que crypto mapa y versión de IKE debe usar para una conexión.

El ASA siempre preferirá iniciar con IKEv2, si no puede, lo intentará con IKEv1.

Precaución

  • Se tiene la opción de ejecturar el parámetro de "overwrite" después del comando de "migrate l2l" para sobreescribir la configuración de IKEv2 en lugar de tener ambas.
  • En IKEv1, para tener redundancia se puede especificar otra dirección IP para colocar otro "peer" en el crypto mapa. La primera ip será utilizada, en caso de que no responda tratará de conectarse con la siguiente.

     Esta función de multiples "peers" no está soportada en IKEv2.

Configuración del ASA con VPN IKEv1 (Antes de la migración)

ASA-2(config)# sh run

ASA Version 8.4(2)

!

hostname ASA-2

enable password 8Ry2YjIyt7RRXU24 encrypted

passwd 2KFQnbNIdI.2KYOU encrypted

names

!

interface Ethernet0/0

nameif outside

security-level 0

ip address 2.2.2.2 255.255.255.0

!

interface Ethernet0/1

nameif inside

security-level 100

ip address 20.20.20.20 255.255.255.0

!

interface Ethernet0/2

shutdown

no nameif

no security-level

no ip address

!

interface Ethernet0/3

shutdown

no nameif

no security-level

no ip address

!

interface Management0/0

shutdown

no nameif

no security-level

no ip address

!

boot system disk0:/asa842-k8.bin

ftp mode passive

same-security-traffic permit intra-interface

access-list in extended permit ip any any

access-list in extended permit icmp any any

access-list in extended permit icmp any any echo-reply

access-list in extended permit icmp any any time-exceeded

access-list in extended permit icmp any any unreachable

access-list NEWARK extended permit ip 20.20.20.0 255.255.255.0 10.10.10.0 255.255.255.0

no pager

logging enable

mtu outside 1500

mtu inside 1500

no failover

icmp unreachable rate-limit 1 burst-size 1

icmp permit any outside

icmp permit any inside

no asdm history enable

arp timeout 14400

access-group in in interface outside

route outside 0.0.0.0 0.0.0.0 1.1.1.1 2

route outside 1.1.1.0 255.255.255.0 2.2.2.3 1

route outside 10.10.10.0 255.255.255.0 2.2.2.3 1

timeout xlate 3:00:00

timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02

timeout sunrpc 0:10:00 h323 0:05:00 h225 1:00:00 mgcp 0:05:00 mgcp-pat 0:05:00

timeout sip 0:30:00 sip_media 0:02:00 sip-invite 0:03:00 sip-disconnect 0:02:00

timeout sip-provisional-media 0:02:00 uauth 0:05:00 absolute

timeout tcp-proxy-reassembly 0:01:00

timeout floating-conn 0:00:00

dynamic-access-policy-record DfltAccessPolicy

user-identity default-domain LOCAL

no snmp-server location

no snmp-server contact

snmp-server enable traps snmp authentication linkup linkdown coldstart

crypto ipsec IKEv1 transform-set goset esp-3des esp-sha-hmac

crypto map vpn 12 match address NEWARK

crypto map vpn 12 set pfs group5

crypto map vpn 12 set peer 1.1.1.1

crypto map vpn 12 set IKEv1 transform-set goset

crypto map vpn interface outside

crypto isakmp disconnect-notify

crypto IKEv1 enable outside

crypto IKEv1 policy 1

authentication pre-share

encryption 3des

hash sha

group 5

lifetime 86400

telnet timeout 5

ssh timeout 5

console timeout 0

management-access inside

threat-detection basic-threat

threat-detection statistics access-list

no threat-detection statistics tcp-intercept

tunnel-group 1.1.1.1 type ipsec-l2l

tunnel-group 1.1.1.1 ipsec-attributes

IKEv1 pre-shared-key *****

isakmp keepalive threshold 10 retry 3

!

class-map inspection_default

match default-inspection-traffic

!

policy-map type inspect dns preset_dns_map

parameters

  message-length maximum 512

policy-map global_policy

class inspection_default

  inspect dns preset_dns_map

  inspect ftp

  inspect h323 h225

  inspect h323 ras

  inspect netbios

  inspect rsh

  inspect rtsp

  inspect skinny

  inspect esmtp

  inspect sqlnet

  inspect sunrpc

  inspect tftp

  inspect sip

  inspect xdmcp

  inspect ip-options

  inspect icmp

!

service-policy global_policy global

prompt hostname context

no call-home reporting anonymous

call-home

profile CiscoTAC-1

  no active

  destination address http https://tools.cisco.com/its/service/oddce/services/DDCEService

  destination address email callhome@cisco.com

  destination transport-method http

  subscribe-to-alert-group diagnostic

  subscribe-to-alert-group environment

  subscribe-to-alert-group inventory periodic monthly

  subscribe-to-alert-group configuration periodic monthly

  subscribe-to-alert-group telemetry periodic daily

Configuración del ASA después de correr el comando de "migration l2l"

ASA-2(config)# migrate l2l

ASA-2(config)# sh run

ASA Version 8.4(2)

!

hostname ASA-2

enable password 8Ry2YjIyt7RRXU24 encrypted

passwd 2KFQnbNIdI.2KYOU encrypted

names

!

interface Ethernet0/0

nameif outside

security-level 0

ip address 2.2.2.2 255.255.255.0

!

interface Ethernet0/1

nameif inside

security-level 100

ip address 20.20.20.20 255.255.255.0

!

interface Ethernet0/2

shutdown

no nameif

no security-level

no ip address

!

interface Ethernet0/3

shutdown

no nameif

no security-level

no ip address

!

interface Management0/0

shutdown

no nameif

no security-level

no ip address

!

boot system disk0:/asa842-k8.bin

ftp mode passive

same-security-traffic permit intra-interface

access-list in extended permit ip any any

access-list in extended permit icmp any any

access-list in extended permit icmp any any echo-reply

access-list in extended permit icmp any any time-exceeded

access-list in extended permit icmp any any unreachable

access-list NEWARK extended permit ip 20.20.20.0 255.255.255.0 10.10.10.0 255.255.255.0

no pager

logging enable

mtu outside 1500

mtu inside 1500

no failover

icmp unreachable rate-limit 1 burst-size 1

icmp permit any outside

icmp permit any inside

no asdm history enable

arp timeout 14400

access-group in in interface outside

route outside 0.0.0.0 0.0.0.0 1.1.1.1 2

route outside 1.1.1.0 255.255.255.0 2.2.2.3 1

route outside 10.10.10.0 255.255.255.0 2.2.2.3 1

timeout xlate 3:00:00

timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02

timeout sunrpc 0:10:00 h323 0:05:00 h225 1:00:00 mgcp 0:05:00 mgcp-pat 0:05:00

timeout sip 0:30:00 sip_media 0:02:00 sip-invite 0:03:00 sip-disconnect 0:02:00

timeout sip-provisional-media 0:02:00 uauth 0:05:00 absolute

timeout tcp-proxy-reassembly 0:01:00

timeout floating-conn 0:00:00

dynamic-access-policy-record DfltAccessPolicy

user-identity default-domain LOCAL

no snmp-server location

no snmp-server contact

snmp-server enable traps snmp authentication linkup linkdown coldstart

crypto ipsec IKEv1 transform-set goset esp-3des esp-sha-hmac

crypto ipsec IKEv2 ipsec-proposal goset

protocol esp encryption 3des

protocol esp integrity sha-1

crypto map vpn 12 match address NEWARK

crypto map vpn 12 set pfs group5

crypto map vpn 12 set peer 1.1.1.1

crypto map vpn 12 set IKEv1 transform-set goset

crypto map vpn 12 set IKEv2 ipsec-proposal goset

crypto map vpn interface outside

crypto isakmp disconnect-notify

crypto IKEv2 policy 1

encryption 3des

integrity sha

group 5

prf sha

lifetime seconds 86400

crypto IKEv2 enable outside

crypto IKEv1 enable outside

crypto IKEv1 policy 1

authentication pre-share

encryption 3des

hash sha

group 5

lifetime 86400

telnet timeout 5

ssh timeout 5

console timeout 0

management-access inside

threat-detection basic-threat

threat-detection statistics access-list

no threat-detection statistics tcp-intercept

tunnel-group 1.1.1.1 type ipsec-l2l

tunnel-group 1.1.1.1 ipsec-attributes

IKEv1 pre-shared-key *****

isakmp keepalive threshold 10 retry 3

IKEv2 remote-authentication pre-shared-key *****

IKEv2 local-authentication pre-shared-key *****

!

class-map inspection_default

match default-inspection-traffic

!

policy-map type inspect dns preset_dns_map

parameters

  message-length maximum 512

policy-map global_policy

class inspection_default

  inspect dns preset_dns_map

  inspect ftp

  inspect h323 h225

  inspect h323 ras

  inspect netbios

  inspect rsh

  inspect rtsp

  inspect skinny

  inspect esmtp

  inspect sqlnet

  inspect sunrpc

  inspect tftp

  inspect sip

  inspect xdmcp

  inspect ip-options

  inspect icmp

!

service-policy global_policy global

prompt hostname context

no call-home reporting anonymous

call-home

profile CiscoTAC-1

  no active

  destination address http https://tools.cisco.com/its/service/oddce/services/DDCEService

  destination address email callhome@cisco.com

  destination transport-method http

  subscribe-to-alert-group diagnostic

  subscribe-to-alert-group environment

  subscribe-to-alert-group inventory periodic monthly

  subscribe-to-alert-group configuration periodic monthly

  subscribe-to-alert-group telemetry periodic daily

Cuando se ejecuta IKEv1 e IKEv2 en paralelo. el ASA utiliza un módulo común llamado "tunnel manager/IKE" en el iniciador,  para determinar el crypto mapa y el protocolo de IKE a utilizar. Este módulo controla el uso de "debug crypto ike <nivel>".

En la salida que se muestra a continuación, se tiene un ASA que  intenta establecer la conexión a traves de IKEv1. Ambos ASAs fueron migrados con el procedimieno mencionado arriba. Para demostrar el proceso de Tunnel Manager e IKEv2, se generó tráfico interesante  (basado en el crypto ACL), El debug, log y comandos de show fueron ejecutados en el ASa iniciador.

Algunas salidas fueron omitidas.

ASA1# (config ) logging enable

ASA1# (config ) logging list IKEv2 message 750000-752999

ASA1# (config ) logging console IKEv2

ASA1# (config ) exit

ASA1# debug crypto IKEv2 platform 4

ASA1# debug crypto IKEv2 protocol  4

ASA1# debug crypto ike-common 5

ASA1# %ASA-5-752003: Tunnel Manager dispatching a KEY_ACQUIRE message to IKEv2.  Map Tag = vpn.  Map Sequence Number = 12.

%ASA-5-750001: Local:1.1.1.1:500 Remote:2.2.2.2:500 Username:Unknown Received request to establish an IPsec tunnel; local traffic selector = Address Range: 10.10.10.11-10.10.10.11 Protocol: 0 Port Range: 0-65535; remote traffic selector = Address Range: 20.20.20.21-20.20.20.21 Protocol: 0 Port Range: 0-65535

Mar 22 15:03:52 [IKE COMMON DEBUG]Tunnel Manager dispatching a KEY_ACQUIRE message to IKEv2.  Map Tag = vpn.  Map Sequence Number = 12.

IKEv2-PLAT-3: attempting to find tunnel group for IP: 2.2.2.2

IKEv2-PLAT-3: mapped to tunnel group 2.2.2.2 using peer IP

     26%ASA-5-750006: Local:1.1.1.1:500 Remote:2.2.2.2:500 Username:2.2.2.2 SA UP. Reason: New Connection Established

43%ASA-5-752016: IKEv2 was successful at setting up a tunnel.  Map Tag = vpn. Map Sequence Number = 12.

%ASA-7-752002: Tunnel Manager Removed entry.  Map Tag = vpn.  Map Sequence Number = 12.

IKEv2-PLAT-4: SENT PKT [IKE_SA_INIT] [1.1.1.1]:500->[2.2.2.2]:500 InitSPI=0x297ef9ca996102a6 RespSPI=0x0000000000000000 MID=00000000

IKEv2-PROTO-3: (12): Insert SA

IKEv2-PLAT-4: RECV PKT [IKE_SA_INIT] [2.2.2.2]:500->[1.1.1.1]:500 InitSPI=0x297ef9ca996102a6 RespSPI=0x47088c8fb9f039ad MID=00000000

IKEv2-PLAT-4: SENT PKT [IKE_AUTH] [1.1.1.1]:500->[2.2.2.2]:500 InitSPI=0x297ef9ca996102a6 RespSPI=0x47088c8fb9f039ad MID=00000001

IKEv2-PLAT-4: RECV PKT [IKE_AUTH] [2.2.2.2]:500->[1.1.1.1]:500 InitSPI=0x297ef9ca996102a6 RespSPI=0x47088c8fb9f039ad MID=00000001

IKEv2-PROTO-3: (12): Verify peer's policy

IKEv2-PROTO-3: (12): Get peer authentication method

IKEv2-PROTO-3: (12): Get peer's preshared key for 2.2.2.2

IKEv2-PROTO-3: (12): Verify authentication data

IKEv2-PROTO-3: (12): Use preshared key for id 2.2.2.2, key len 5

IKEv2-PROTO-2: (12): SA created; inserting SA into database

IKEv2-PLAT-3:

CONNECTION STATUS: UP... peer: 2.2.2.2:500, phase1_id: 2.2.2.2

IKEv2-PROTO-3: (12): Initializing DPD, configured for 10 seconds

IKEv2-PLAT-3: (12) DPD Max Time will be: 10

IKEv2-PROTO-3: (12): Checking for duplicate SA

Mar 22 15:03:52 [IKE COMMON DEBUG]IKEv2 was successful at setting up a tunnel.  Map Tag = vpn. Map Sequence Number = 12.

Mar 22 15:03:52 [IKE COMMON DEBUG]Tunnel Manager Removed entry.  Map Tag = vpn.  Map Sequence Number = 12.

Verificación de establecimiento del túnel en IKEv2

Los siguientes comandos nos ayudarán a verificar el establecimiento del túnel.

ASA1# sh cry IKEv2 sa detail

IKEv2 SAs:

Session-id:12, Status:UP-ACTIVE, IKE count:1, CHILD count:1

Tunnel-id                 Local                Remote     Status         Role

102061223           1.1.1.1/500           2.2.2.2/500      READY    INITIATOR

      Encr: 3DES, Hash: SHA96, DH Grp:5, Auth sign: PSK, Auth verify: PSK

      Life/Active Time: 86400/100 sec

      Status Description: Negotiation done

     Local spi: 297EF9CA996102A6       Remote spi: 47088C8FB9F039AD

      Local id: 1.1.1.1

      Remote id: 2.2.2.2

       DPD configured for 10 seconds, retry 3

      NAT-T is not detected

Child sa: local selector  10.10.10.0/0 - 10.10.10.255/65535

          remote selector 20.20.20.0/0 - 20.20.20.255/65535

          ESP spi in/out: 0x637df131/0xb7224866

ASA1# sh crypto ipsec sa


interface: outside

    Crypto map tag: vpn, seq num: 12, local addr: 1.1.1.1

      access-list NEWARK extended permit ip 10.10.10.0 255.255.255.0 20.20.20.0 255.255.255.0

      local ident (addr/mask/prot/port): (10.10.10.0/255.255.255.0/0/0)

      remote ident (addr/mask/prot/port): (20.20.20.0/255.255.255.0/0/0)

      current_peer: 2.2.2.2

      #pkts encaps: 4, #pkts encrypt: 4, #pkts digest: 4

Verificación de PSK después de la migración.

Para verificar la llave PSK, se puede ejecutar el comando "more system:running-config" en configuración global. Si se requiere utilizar autenticación con llave asimétrica, se requiere modificar la configuración.

ASA-2(config)# more system:running-config

tunnel-group 1.1.1.1 type ipsec-l2l

tunnel-group 1.1.1.1 ipsec-attributes

IKEv1 pre-shared-key cisco1234

  IKEv2 remote-authentication pre-shared-key cisco1234

IKEv2 local-authentication pre-shared-key cisco1234

Retroceso de IKEv2 a IKEv1

Con ambos IKE corriendo en paralelo, el ASA siempre preferirá tener IKEv2, si no puede, utilzará IKEv1. El módulo común de Tunnel manager/IKE gestiona este proceso. En la siguiente demostración en el iniciador, la SA de IKEv2 fue limpiada y la configuración modificada erroneamente a propósito  para mostrar el proceso de "fallback". Se podrá ver que al no poder establecer el túnel con IKEv2, este utiliza IKEv1

ASA1# clear  crypto  IKEv2 sa


ASA1# %ASA-5-750007: Local:1.1.1.1:500 Remote:2.2.2.2:500 Username:2.2.2.2 SA DOWN. Reason: operator request

ASA1(config)# no crypto map vpn 12 set IKEv2 ipsec-proposal GOSET


ASA1# (config ) logging enable

ASA1# (config ) logging list IKEv2 message 750000-752999

ASA1# (config ) logging console IKEv2

ASA1# (config ) exit

ASA1# debug crypto IKEv2 platform 4

ASA1# debug crypto IKEv2 protocol  4

ASA1# debug crypto ike-common 5


ASA1(config)# %ASA-5-752004: Tunnel Manager dispatching a KEY_ACQUIRE message to IKEv1.  Map Tag = vpn.  Map Sequence Number = 12.

%ASA-4-752010: IKEv2 Doesn't have a proposal specified

Mar 22 15:11:44 [IKE COMMON DEBUG]Tunnel Manager dispatching a KEY_ACQUIRE message to IKEv1.  Map Tag = vpn.  Map Sequence Number = 12.

Mar 22 15:11:44 [IKE COMMON DEBUG]IKEv2 Doesn't have a proposal specified

%ASA-5-752016: IKEv1 was successful at setting up a tunnel.  Map Tag = vpn. Map Sequence Number = 12.

%ASA-7-752002: Tunnel Manager Removed entry.  Map Tag = vpn.  Map Sequence Number = 12.

Mar 22 15:11:44 [IKE COMMON DEBUG]IKEv1 was successful at setting up a tunnel.  Map Tag = vpn. Map Sequence Number = 12.

Mar 22 15:11:44 [IKE COMMON DEBUG]Tunnel Manager Removed entry.  Map Tag = vpn.  Map Sequence Number = 12.

ASA1(config)# sh cry IKEv2 sa

There are no IKEv2 SAs

ASA1(config)# sh cry IKEv1 sa

IKEv1 SAs:

   Active SA: 1

    Rekey SA: 0 (A tunnel will report 1 Active and 1 Rekey SA during rekey)

Total IKE SA: 1

1   IKE Peer: 2.2.2.2

    Type    : L2L             Role    : initiator

   Rekey   : no              State   : MM_ACTIVE


Endurecimiento de IKEv2

Para proporcionar seguridad adicional utilizando IKEv2, los siguientes comando son altamente recomendados. Estos se encuentran deshabilitados por defecto.

1)          Crypto IKEv2 cookie-challenge. Para habiltiar el ASa para mandar cookie challenge a los equipos remotos en respuesta de paquetes SA iniciados.

2)          Crypto IKEv2 limit max-sa: Limita el número de conexiones de IKEv2 en el ASA. Por defecto el número máximo de conexiones permitidas es igual al número máximo de conexiones especificadas en la licencia del ASA.

3)          Crypto IKEv2 limit max-in-negotiation-sa: Limita el número de negociaciones SA de IKEv2 (abiertas)  en el ASA. Cuando se usan en conjunto con el comando de crypto IKEv2 cookie-challenge, se debe asegurar que el umbral de este último sea menor que este límite.

Documento original realizado por Gori Dawodu

https://supportforums.cisco.com/docs/DOC-23797

Historial de versiones
Revisión n.º
1 de 1
Última actualización:
‎10-25-2012 03:15 PM
Actualizado por:
 
Etiquetas (1)
Etiquetas (7)