draft-ietf-ipsecme-ikev2-redirect-11.txt | draft-ietf-ipsecme-ikev2-redirect-12.txt | |||
---|---|---|---|---|
Network Working Group V. Devarapalli | Network Working Group V. Devarapalli | |||
Internet-Draft WiChorus | Internet-Draft WiChorus | |||
Intended status: Standards Track K. Weniger | Intended status: Standards Track K. Weniger | |||
Expires: December 18, 2009 June 16, 2009 | Expires: January 31, 2010 July 30, 2009 | |||
Redirect Mechanism for IKEv2 | Redirect Mechanism for IKEv2 | |||
draft-ietf-ipsecme-ikev2-redirect-11.txt | draft-ietf-ipsecme-ikev2-redirect-12.txt | |||
Status of this Memo | Status of this Memo | |||
This Internet-Draft is submitted to IETF in full conformance with the | This Internet-Draft is submitted to IETF in full conformance with the | |||
provisions of BCP 78 and BCP 79. This document may contain material | provisions of BCP 78 and BCP 79. This document may contain material | |||
from IETF Documents or IETF Contributions published or made publicly | from IETF Documents or IETF Contributions published or made publicly | |||
available before November 10, 2008. The person(s) controlling the | available before November 10, 2008. The person(s) controlling the | |||
copyright in some of this material may not have granted the IETF | copyright in some of this material may not have granted the IETF | |||
Trust the right to allow modifications of such material outside the | Trust the right to allow modifications of such material outside the | |||
IETF Standards Process. Without obtaining an adequate license from | IETF Standards Process. Without obtaining an adequate license from | |||
skipping to change at page 1, line 42 | skipping to change at page 1, line 42 | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
This Internet-Draft will expire on December 18, 2009. | This Internet-Draft will expire on January 31, 2010. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2009 IETF Trust and the persons identified as the | Copyright (c) 2009 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents in effect on the date of | Provisions Relating to IETF Documents in effect on the date of | |||
publication of this document (http://trustee.ietf.org/license-info). | publication of this document (http://trustee.ietf.org/license-info). | |||
Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
and restrictions with respect to this document. | and restrictions with respect to this document. | |||
Abstract | Abstract | |||
IKEv2 is a protocol for setting up VPN tunnels from a remote location | IKEv2 is a protocol for setting up Virtual Private Network (VPN) | |||
to a gateway so that the VPN client can access services in the | tunnels from a remote location to a gateway so that the VPN client | |||
network behind the gateway. Currently there is no standard mechanism | can access services in the network behind the gateway. This document | |||
specified that allows an overloaded VPN gateway or a VPN gateway that | defines an IKEv2 extension that allows an overloaded VPN gateway or a | |||
is being shut down for maintenance to redirect the VPN client to | VPN gateway that is being shot down for maintenance to redirect the | |||
attach to another gateway. This document proposes a redirect | VPN client to attach to another gateway. The proposed mechanism can | |||
mechanism for IKEv2. The proposed mechanism can also be used in | also be used in Mobile IPv6 to enable the home agent to redirect the | |||
Mobile IPv6 to enable the home agent to redirect the mobile node to | mobile node to another home agent. | |||
another home agent. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3. IKEv2 Initial Exchange with Redirect . . . . . . . . . . . . . 4 | 3. IKEv2 Initial Exchange with Redirect . . . . . . . . . . . . . 3 | |||
4. Use of Anycast Addresses with the Redirect Mechanism . . . . . 6 | 4. Use of Anycast Addresses with the Redirect Mechanism . . . . . 5 | |||
5. Gateway Initiated Redirect . . . . . . . . . . . . . . . . . . 7 | 5. Redirect During an Active Session . . . . . . . . . . . . . . 6 | |||
6. Redirect During IKE_AUTH Exchange . . . . . . . . . . . . . . 8 | 6. Redirect During IKE_AUTH Exchange . . . . . . . . . . . . . . 7 | |||
7. Using the Redirect Mechanism with Mobile IPv6 . . . . . . . . 9 | 7. Handling Redirect Loops . . . . . . . . . . . . . . . . . . . 8 | |||
8. Redirect Messages . . . . . . . . . . . . . . . . . . . . . . 10 | 8. Using the Redirect Mechanism with Mobile IPv6 . . . . . . . . 8 | |||
8.1. REDIRECT_SUPPORTED . . . . . . . . . . . . . . . . . . . . 10 | 9. Redirect Messages . . . . . . . . . . . . . . . . . . . . . . 9 | |||
8.2. REDIRECT . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 9.1. REDIRECT_SUPPORTED . . . . . . . . . . . . . . . . . . . . 9 | |||
8.3. REDIRECTED_FROM . . . . . . . . . . . . . . . . . . . . . 12 | 9.2. REDIRECT . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
9. Use of the Redirect Mechanism between IKEv2 Peers . . . . . . 13 | 9.3. REDIRECTED_FROM . . . . . . . . . . . . . . . . . . . . . 11 | |||
10. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | 10. Use of the Redirect Mechanism between IKEv2 Peers . . . . . . 12 | |||
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | |||
12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 14 | 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | |||
13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
13.1. Normative References . . . . . . . . . . . . . . . . . . . 15 | 14. References . . . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
13.2. Informative References . . . . . . . . . . . . . . . . . . 15 | 14.1. Normative References . . . . . . . . . . . . . . . . . . . 14 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 15 | 14.2. Informative References . . . . . . . . . . . . . . . . . . 14 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 14 | ||||
1. Introduction | 1. Introduction | |||
IKEv2 [2] is used for setting up IPsec-based VPNs. The IP address of | IKEv2 [2] is used for setting up IPsec [8] based VPNs. The IP | |||
the VPN gateway can be configured on the VPN client. But this does | address of the VPN gateway can be configured on the VPN client. But | |||
not scale well, when the number of VPN gateways is large. Dynamic | this does not scale well, when the number of VPN gateways is large. | |||
discovery of VPN gateways using DNS is quite widely used too. | Dynamic discovery of VPN gateways using DNS is quite widely used too. | |||
However, using DNS is not flexible when it comes to assigning a VPN | However, using DNS is not flexible when it comes to assigning a VPN | |||
gateway to the VPN client based on the load on the VPN gateways. The | gateway to the VPN client based on the load on the VPN gateways. The | |||
VPN client typically tries to connect to the IP address of the VPN | VPN client typically tries to connect to the IP address of the VPN | |||
gateway that appears first in the DNS response. If the VPN tunnel | gateway that appears first in the DNS response. If the VPN tunnel | |||
setup fails, then the VPN client tries to attach to the other VPN | setup fails, then the VPN client tries to attach to the other VPN | |||
gateways returned in the DNS response. | gateways returned in the DNS response. | |||
This document proposes a redirect mechanism for IKEv2 that enables a | This document proposes a redirect mechanism for IKEv2 that enables a | |||
VPN gateway to redirect the VPN client to another VPN gateway, for | VPN gateway to redirect the VPN client to another VPN gateway, for | |||
example, based on the load condition. The redirect can be done | example, based on the load condition. The redirect can be done | |||
skipping to change at page 4, line 42 | skipping to change at page 3, line 42 | |||
2. Terminology | 2. Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in [1]. | document are to be interpreted as described in [1]. | |||
3. IKEv2 Initial Exchange with Redirect | 3. IKEv2 Initial Exchange with Redirect | |||
This section describes the use of Redirect mechanism during the | This section describes the use of Redirect mechanism during the | |||
IKE_SA_INIT exchange. Gateway-initiated redirect and the use of | IKE_SA_INIT exchange. Gateway-initiated redirect during an active | |||
redirect during IKE_AUTH exchange are explained in subsequent | session and the use of redirect during IKE_AUTH exchange are | |||
sections. | explained in subsequent sections. | |||
The VPN client indicates support for the IKEv2 redirect mechanism and | The VPN client indicates support for the IKEv2 redirect mechanism and | |||
the willingness to be redirected by including a REDIRECT_SUPPORTED | the willingness to be redirected by including a REDIRECT_SUPPORTED | |||
notification message in the initial IKE_SA_INIT request. (See | notification message in the initial IKE_SA_INIT request. (See | |||
Section 8.1). The gateway MUST keep track of those clients that | Section 9.1). The gateway MUST keep track of those clients that | |||
indicated support for the redirect mechanism and those that didn't. | indicated support for the redirect mechanism and those that didn't. | |||
To redirect an IKEv2 session to another VPN gateway, the VPN gateway | To redirect an IKEv2 session to another VPN gateway, the VPN gateway | |||
that initially received the IKE_SA_INIT request selects another VPN | that initially received the IKE_SA_INIT request selects another VPN | |||
gateway (how the selection is made is beyond the scope of this | gateway (how the selection is made is beyond the scope of this | |||
document), and replies with an IKE_SA_INIT response containing a | document), and replies with an IKE_SA_INIT response containing a | |||
REDIRECT notification message. (See Section 8.2). The notification | REDIRECT notification message. (See Section 9.2). The notification | |||
includes information about the selected VPN gateway, and the nonce | includes information about the selected VPN gateway, and the nonce | |||
data from the Ni payload in the IKE_SA_INIT request. If the | data from the Ni payload in the IKE_SA_INIT request. If the | |||
IKE_SA_INIT request did not indicate support for the redirect | IKE_SA_INIT request did not indicate support for the redirect | |||
mechanism, the responder MUST NOT send the REDIRECT payload to the | mechanism, the responder MUST NOT send the REDIRECT payload to the | |||
VPN client. This is applicable to all REDIRECT scenarios described | VPN client. This is applicable to all REDIRECT scenarios described | |||
in this document. | in this document. | |||
Note that when the IKE_SA_INIT response includes the REDIRECT | Note that when the IKE_SA_INIT response includes the REDIRECT | |||
notification, the exchange does not result in the creation of an | notification, the exchange does not result in the creation of an | |||
IKE_SA and the responder SPI will be zero. | IKE_SA and the responder SPI will be zero. | |||
skipping to change at page 5, line 43 | skipping to change at page 4, line 43 | |||
request. If the values do not match, the client MUST silently | request. If the values do not match, the client MUST silently | |||
discard the response (and keep waiting for another response). This | discard the response (and keep waiting for another response). This | |||
prevents certain Denial-of-Service attacks on the initiator that | prevents certain Denial-of-Service attacks on the initiator that | |||
could be caused by an attacker injecting IKE_SA_INIT responses with | could be caused by an attacker injecting IKE_SA_INIT responses with | |||
the REDIRECT payloads. | the REDIRECT payloads. | |||
After verifying the nonce data, the client initiates a new | After verifying the nonce data, the client initiates a new | |||
IKE_SA_INIT exchange with the VPN gateway listed in the REDIRECT | IKE_SA_INIT exchange with the VPN gateway listed in the REDIRECT | |||
payload provided this is allowed by its PAD entries. In the | payload provided this is allowed by its PAD entries. In the | |||
IKE_SA_INIT exchange with the new VPN gateway, the client MUST | IKE_SA_INIT exchange with the new VPN gateway, the client MUST | |||
include the REDIRECTED_FROM payload. (See Section 8.3). The VPN | include the REDIRECTED_FROM payload. (See Section 9.3). The VPN | |||
client includes the IP address of the original VPN gateway that | client includes the IP address of the original VPN gateway that | |||
redirected the client in the REDIRECTED_FROM notification. The IKEv2 | redirected the client in the REDIRECTED_FROM notification. The IKEv2 | |||
exchange then proceeds as it would have proceeded with the original | exchange then proceeds as it would have proceeded with the original | |||
VPN gateway. | VPN gateway. | |||
Initiator Responder (Selected VPN GW) | Initiator Responder (Selected VPN GW) | |||
--------- --------------------------- | --------- --------------------------- | |||
(IP_I:500 -> IP_R:500) | (IP_I:500 -> IP_R:500) | |||
HDR(A,0), SAi1, KEi, Ni, --> | HDR(A,0), SAi1, KEi, Ni, --> | |||
skipping to change at page 7, line 29 | skipping to change at page 6, line 29 | |||
If the destination address on the IKE_SA_INIT request is an anycast | If the destination address on the IKE_SA_INIT request is an anycast | |||
address, the VPN gateway that received the IKE_SA_INIT request MUST | address, the VPN gateway that received the IKE_SA_INIT request MUST | |||
include the REDIRECT payload to redirect the VPN client to a unicast | include the REDIRECT payload to redirect the VPN client to a unicast | |||
address of one of the VPN gateway. The VPN gateway that received the | address of one of the VPN gateway. The VPN gateway that received the | |||
IKE_SA_INIT request MAY redirect the client to its own unicast | IKE_SA_INIT request MAY redirect the client to its own unicast | |||
address, if it is not overloaded. | address, if it is not overloaded. | |||
The rest of the IKEv2 exchange is the same as described in Section 3. | The rest of the IKEv2 exchange is the same as described in Section 3. | |||
5. Gateway Initiated Redirect | 5. Redirect During an Active Session | |||
The redirect mechanism may also be used by a VPN gateway to redirect | The redirect mechanism may also be used by a VPN gateway to redirect | |||
the client to another VPN gateway in middle of a session. To | the client to another VPN gateway in middle of a session. To | |||
redirect a client, the gateway should send an INFORMATIONAL message | redirect a client, the gateway should send an INFORMATIONAL message | |||
with the REDIRECT Notify payload. The REDIRECT payload MUST carry | with the REDIRECT Notify payload. The REDIRECT payload MUST carry | |||
information about the new VPN gateway. The gateway MUST NOT include | information about the new VPN gateway. The gateway MUST NOT include | |||
any nonce data in the REDIRECT payload, since it is a gateway- | any nonce data in the REDIRECT payload, since it is a gateway- | |||
initiated message and is protected by the IKEv2 security association. | initiated redirect and is protected by the IKEv2 security | |||
When the client receives this message, it sends a response (usually | association. When the client receives this message, it sends a | |||
empty) to the gateway. The gateway retransmits the redirect | response (usually empty) to the gateway. The gateway retransmits the | |||
INFORMATIONAL message as described in [2], until it gets a response. | redirect INFORMATIONAL message as described in [2], until it gets a | |||
The following illustrates the INFORMATIONAL message exchange for | response. The following illustrates the INFORMATIONAL message | |||
gateway-initiated redirect. | exchange for gateway-initiated redirect. | |||
Initiator (VPN client) Responder (VPN GW) | Initiator (VPN client) Responder (VPN GW) | |||
---------------------- ------------------ | ---------------------- ------------------ | |||
<-- HDR, SK {N(REDIRECT, New_GW_ID)} | <-- HDR, SK {N(REDIRECT, New_GW_ID)} | |||
HDR, SK {} --> | HDR, SK {} --> | |||
The INFORMATIONAL message exchange described above is protected by | The INFORMATIONAL message exchange described above is protected by | |||
the existing IKEv2 SA between the client and the gateway. | the existing IKEv2 SA between the client and the gateway. | |||
Once the client sends an acknowledgement to the gateway, it SHOULD | Once the client sends an acknowledgement to the gateway, it SHOULD | |||
delete the existing security associations with the old gateway by | delete the existing security associations with the old gateway by | |||
sending an Informational message with a DELETE payload. The gateway | sending an INFORMATIONAL message with a DELETE payload. The gateway | |||
MAY also decide to delete the security associations without any | MAY also decide to delete the security associations without any | |||
signaling from the client, again by sending an Informational message | signaling from the client, again by sending an INFORMATIONAL message | |||
with a DELETE payload. However, it should allow sufficient time for | with a DELETE payload. However, it should allow sufficient time for | |||
the client to setup the required security associations with the new | the client to setup the required security associations with the new | |||
security gateway. This time period should be configurable on the | security gateway. This time period should be configurable on the | |||
gateway. | gateway. | |||
6. Redirect During IKE_AUTH Exchange | 6. Redirect During IKE_AUTH Exchange | |||
If the gateway decides to redirect the client during the IKE_AUTH | If the gateway decides to redirect the client during the IKE_AUTH | |||
exchange, based on the identity presented by the client in the | exchange, based on the identity presented by the client in the | |||
IKE_AUTH request message, it prevents the creation of a CHILD SA and | IKE_AUTH request message, it prevents the creation of a CHILD SA and | |||
sends the REDIRECT payload in the IKE_AUTH response. The gateway | sends the REDIRECT payload in the IKE_AUTH response. The gateway | |||
MUST verify the client's AUTH payload before sending the Redirect | MUST verify the client's AUTH payload before sending the Redirect | |||
payload, and the client MUST verify the gateway's AUTH payload before | payload, and the client MUST verify the gateway's AUTH payload before | |||
acting on the Redirect payload. Since the AUTH payloads were | acting on the Redirect payload. Since the AUTH payloads were | |||
exchanged and successfully verified, the IKEv2 security association | exchanged and successfully verified, the IKEv2 security association | |||
is valid. When the client receives the IKE_AUTH response with the | is valid. When the client receives the IKE_AUTH response with the | |||
REDIRECT payload, it SHOULD delete the IKEv2 security association | REDIRECT payload, it SHOULD delete the IKEv2 security association | |||
with the gateway by sending an Informational message with a DELETE | with the gateway by sending an INFORMATIONAL message with a DELETE | |||
payload. | payload. | |||
Initiator Responder ( VPN GW) | Initiator Responder ( VPN GW) | |||
--------- ------------------- | --------- ------------------- | |||
(IP_I:500 -> IP_R:500) | (IP_I:500 -> IP_R:500) | |||
HDR(A,0), SAi1, KEi, Ni, --> | HDR(A,0), SAi1, KEi, Ni, --> | |||
N(REDIRECTED_SUPPORTED) | N(REDIRECTED_SUPPORTED) | |||
(IP_R:500 -> IP_I:500) | (IP_R:500 -> IP_I:500) | |||
skipping to change at page 9, line 26 | skipping to change at page 8, line 26 | |||
his identity, but the server still MUST include his own AUTH payload, | his identity, but the server still MUST include his own AUTH payload, | |||
and client MUST verify it. Note that the IKEv2 SA is not created in | and client MUST verify it. Note that the IKEv2 SA is not created in | |||
this case and the client does not have to explicitly delete the IKEv2 | this case and the client does not have to explicitly delete the IKEv2 | |||
SA. | SA. | |||
In all of the cases above, the client MUST accept the REDIRECT | In all of the cases above, the client MUST accept the REDIRECT | |||
notification only in the first IKE_AUTH response or the last IKE_AUTH | notification only in the first IKE_AUTH response or the last IKE_AUTH | |||
response. It MUST NOT accept the REDIRECT notification in an | response. It MUST NOT accept the REDIRECT notification in an | |||
intermediate IKE_AUTH response. | intermediate IKE_AUTH response. | |||
7. Using the Redirect Mechanism with Mobile IPv6 | 7. Handling Redirect Loops | |||
The client could end up getting redirected multiple times in a | ||||
sequence, either because of wrong configuration or a DoS attack. The | ||||
client could even end up in a loop with two or more gateways | ||||
redirecting the client to each other. This could deny service to the | ||||
client. To prevent this, the client SHOULD be configured not to | ||||
accept more than a certain number of redirects (MAX_REDIRECTS) within | ||||
a short time period (REDIRECT_LOOP_DETECT_PERIOD) for a particular | ||||
IKEv2 SA setup. The default value for MAX_REDIRECTS configuration | ||||
variable is 5. The default value for REDIRECT_LOOP_DETECT_PERIOD | ||||
configuration variable is 300 seconds. Client implementations may | ||||
allow these variables to be configured depending on a specific | ||||
deployment or system configuration. | ||||
8. Using the Redirect Mechanism with Mobile IPv6 | ||||
Mobile IPv6 [3] may use IKEv2 for mutual authentication between the | Mobile IPv6 [3] may use IKEv2 for mutual authentication between the | |||
mobile node and the home agent, for home address configuration and | mobile node and the home agent, for home address configuration and | |||
for setting up security associations for protecting Mobile IPv6 | for setting up security associations for protecting Mobile IPv6 | |||
signaling messages [4]. The IKEv2 exchange, if IKEv2 is used, | signaling messages [4]. The IKEv2 exchange, if IKEv2 is used, | |||
precedes the exchange of Mobile IPv6 signaling messages. Therefore, | precedes the exchange of Mobile IPv6 signaling messages. Therefore, | |||
the mechanism described in this document can also be used by a Mobile | the mechanism described in this document can also be used by a Mobile | |||
IPv6 home agent to redirect a mobile node to another home agent. | IPv6 home agent to redirect a mobile node to another home agent. | |||
There is a Home Agent Switch mechanism available for redirecting a | There is a Home Agent Switch mechanism available for redirecting a | |||
skipping to change at page 10, line 19 | skipping to change at page 9, line 35 | |||
If the REDIRECT notification is received during the IKE_AUTH exchange | If the REDIRECT notification is received during the IKE_AUTH exchange | |||
(after the HA has been authenticated; see Section 6), the MN MAY pass | (after the HA has been authenticated; see Section 6), the MN MAY pass | |||
the new address to Mobile IPv6 and treat it in similar fashion as | the new address to Mobile IPv6 and treat it in similar fashion as | |||
information from the Home Agent Switch Message [5]. | information from the Home Agent Switch Message [5]. | |||
Gateway-initiated REDIRECT notifications exchanged in INFORMATIONAL | Gateway-initiated REDIRECT notifications exchanged in INFORMATIONAL | |||
exchanges (see Section 5) MUST NOT result in updating any Mobile IPv6 | exchanges (see Section 5) MUST NOT result in updating any Mobile IPv6 | |||
state. In such cases, the Home Agent Switch Message specified in [5] | state. In such cases, the Home Agent Switch Message specified in [5] | |||
is used instead. | is used instead. | |||
8. Redirect Messages | 9. Redirect Messages | |||
8.1. REDIRECT_SUPPORTED | 9.1. REDIRECT_SUPPORTED | |||
The REDIRECT_SUPPORTED payload is included in the initial IKE_SA_INIT | The REDIRECT_SUPPORTED payload is included in the initial IKE_SA_INIT | |||
request by the initiator to indicate support for the IKEv2 redirect | request by the initiator to indicate support for the IKEv2 redirect | |||
mechanism described in this document. | mechanism described in this document. | |||
1 2 3 | 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Next Payload |C| RESERVED | Payload Length | | | Next Payload |C| RESERVED | Payload Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
skipping to change at page 10, line 47 | skipping to change at page 10, line 15 | |||
3.10 of [2]. The 'SPI Size' field MUST be set to 0 to indicate that | 3.10 of [2]. The 'SPI Size' field MUST be set to 0 to indicate that | |||
the SPI is not present in this message. The 'Protocol ID' MUST be | the SPI is not present in this message. The 'Protocol ID' MUST be | |||
set to 0, since the notification is not specific to a particular | set to 0, since the notification is not specific to a particular | |||
security association. | security association. | |||
The 'Payload Length' field is set to the length in octets of the | The 'Payload Length' field is set to the length in octets of the | |||
entire payload, including the generic payload header. The 'Notify | entire payload, including the generic payload header. The 'Notify | |||
Message Type' field is set to indicate the REDIRECT_SUPPORTED payload | Message Type' field is set to indicate the REDIRECT_SUPPORTED payload | |||
<value to be assigned by IANA>. | <value to be assigned by IANA>. | |||
8.2. REDIRECT | 9.2. REDIRECT | |||
The REDIRECT payload is included in an IKE_SA_INIT response from the | The REDIRECT payload is included in an IKE_SA_INIT response from the | |||
responder or an INFORMATIONAL message from the responder, when the | responder or an INFORMATIONAL message from the responder, when the | |||
responder wants to redirect the initiator to another VPN gateway. | responder wants to redirect the initiator to another VPN gateway. | |||
The message includes the new responder's IP address or DNS name. | The message includes the new responder's IP address or DNS name. | |||
1 2 3 | 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Next Payload |C| RESERVED | Payload Length | | | Next Payload |C| RESERVED | Payload Length | | |||
skipping to change at page 12, line 8 | skipping to change at page 11, line 23 | |||
described in section 3.5 of [2]. | described in section 3.5 of [2]. | |||
The 'Nonce Data' field carries the nonce data from the Ni payload | The 'Nonce Data' field carries the nonce data from the Ni payload | |||
sent by the initiator. The size of the nonce MUST be between 16 and | sent by the initiator. The size of the nonce MUST be between 16 and | |||
256 bytes as described in Section 3.9 of [2]. The 'Nonce Data' field | 256 bytes as described in Section 3.9 of [2]. The 'Nonce Data' field | |||
is present in the REDIRECT payload only when the REDIRECT payload is | is present in the REDIRECT payload only when the REDIRECT payload is | |||
sent in the IKE_SA_INIT response message. It MUST NOT be included in | sent in the IKE_SA_INIT response message. It MUST NOT be included in | |||
the REDIRECT payload if sent in an IKE_AUTH response or in a gateway- | the REDIRECT payload if sent in an IKE_AUTH response or in a gateway- | |||
initiated redirect message. | initiated redirect message. | |||
8.3. REDIRECTED_FROM | 9.3. REDIRECTED_FROM | |||
The REDIRECTED_FROM notification payload is included in the | The REDIRECTED_FROM notification payload is included in the | |||
IKE_SA_INIT request from the initiator to the new VPN gateway to | IKE_SA_INIT request from the initiator to the new VPN gateway to | |||
indicate the IP address of the original VPN gateway that redirected | indicate the IP address of the original VPN gateway that redirected | |||
the initiator. The original VPN gateway's IP address is included in | the initiator. The original VPN gateway's IP address is included in | |||
the message. This payload also serves the purpose of indicating | the message. If the IKE_SA_INIT request was sent to any anycast | |||
support for the redirect mechanism to the new VPN gateway after a | address (see Section 4), then the anycast address is included in the | |||
redirect. | message. This payload also serves the purpose of indicating support | |||
for the redirect mechanism to the new VPN gateway after a redirect. | ||||
1 2 3 | 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Next Payload |C| RESERVED | Payload Length | | | Next Payload |C| RESERVED | Payload Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|Protocol ID(=0)| SPI Size (=0) | Notify Message Type | | |Protocol ID(=0)| SPI Size (=0) | Notify Message Type | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| GW Ident Type | GW Ident Len | | | | GW Ident Type | GW Ident Len | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ | |||
skipping to change at page 13, line 5 | skipping to change at page 12, line 20 | |||
VPN gateway. The following values are valid in the REDIRECTED_FROM | VPN gateway. The following values are valid in the REDIRECTED_FROM | |||
payload. | payload. | |||
1 - IPv4 address of the original VPN gateway | 1 - IPv4 address of the original VPN gateway | |||
2 - IPv6 address of the original VPN gateway | 2 - IPv6 address of the original VPN gateway | |||
The 'GW Ident Len' field is set to the length of the gateway identity | The 'GW Ident Len' field is set to the length of the gateway identity | |||
information. The identity of the original VPN gateway is carried in | information. The identity of the original VPN gateway is carried in | |||
the 'Original Responder GW Identity' field. | the 'Original Responder GW Identity' field. | |||
9. Use of the Redirect Mechanism between IKEv2 Peers | 10. Use of the Redirect Mechanism between IKEv2 Peers | |||
The Redirect mechanism described in this document is mainly intended | The Redirect mechanism described in this document is mainly intended | |||
for use in client-gateway scenarios. However, the mechanism can also | for use in client-gateway scenarios. However, the mechanism can also | |||
be used between any two IKEv2 peers. But this protocol is | be used between any two IKEv2 peers. But this protocol is | |||
asymmetric, meaning that only the original responder can redirect the | asymmetric, meaning that only the original responder can redirect the | |||
original initiator to another server. | original initiator to another server. | |||
10. Security Considerations | 11. Security Considerations | |||
An eavesdropper on the path between VPN client and server may send a | An eavesdropper on the path between VPN client and server may send a | |||
redirect to the client upon receiving an IKE_SA_INIT message from | redirect to the client upon receiving an IKE_SA_INIT message from | |||
this client. This is no problem regarding DoS attacks for the VPN | this client. This is no problem regarding DoS attacks for the VPN | |||
connection, since an on-path-attacker can as well drop the | connection, since an on-path-attacker can as well drop the | |||
IKE_SA_INIT requests to prevent VPN access for the client. But an | IKE_SA_INIT requests to prevent VPN access for the client. But an | |||
eavesdropper on the path between VPN client and server can redirect a | eavesdropper on the path between VPN client and server can redirect a | |||
large number of clients to a victim, which is then flooded with | large number of clients to a victim, which is then flooded with | |||
IKE_SA_INIT requests. Flooding only happens if many clients initiate | IKE_SA_INIT requests. Flooding only happens if many clients initiate | |||
IKEv2 exchange at almost the same time, which is considered a rare | IKEv2 exchange at almost the same time, which is considered a rare | |||
skipping to change at page 13, line 40 | skipping to change at page 13, line 8 | |||
The use of REDIRECTED_FROM payload is intended to discourage a rogue | The use of REDIRECTED_FROM payload is intended to discourage a rogue | |||
VPN gateway from redirecting a large number of VPN clients to a | VPN gateway from redirecting a large number of VPN clients to a | |||
particular VPN gateway. It does not prevent such a DoS attack. | particular VPN gateway. It does not prevent such a DoS attack. | |||
The redirect mechanism MUST NOT update any state on the client apart | The redirect mechanism MUST NOT update any state on the client apart | |||
from the VPN gateway information. When used with Mobile IPv6, care | from the VPN gateway information. When used with Mobile IPv6, care | |||
must be taken to ensure that the home agent information that the | must be taken to ensure that the home agent information that the | |||
mobile node has configured is not modified wrongly by the redirect | mobile node has configured is not modified wrongly by the redirect | |||
message. | message. | |||
The client could end up getting redirected multiple times in a | ||||
sequence, either because of wrong configuration or a DoS attack. The | ||||
client could even end up in a loop with two or more gateways | ||||
redirecting the client to each other. This could deny service to the | ||||
client. To prevent this, the client should be configured not to | ||||
accept more a certain number of redirects within a short time period. | ||||
This should be configurable on the client. | ||||
Redirecting based on the unauthenticated identities from the client | Redirecting based on the unauthenticated identities from the client | |||
might leak out information about the user when an active attacker, | might leak out information about the user when an active attacker, | |||
pretending to be a VPN client can get information to which gateway | pretending to be a VPN client can get information to which gateway | |||
the real user was redirected to. If redirection is based on some | the real user was redirected to. If redirection is based on some | |||
internal information of the user, it might leak information to | internal information of the user, it might leak information to | |||
attacker about the user which might not available otherwise. To | attacker about the user which might not be available otherwise. To | |||
prevent these kind of attacks, redirection based on unauthenticated | prevent these kind of attacks, redirection based on unauthenticated | |||
ID should be avoided and should be done only after the client has | ID should be avoided and should be done only after the client has | |||
also authenticated itself. | also authenticated itself. | |||
11. IANA Considerations | 12. IANA Considerations | |||
This document defines three new IKEv2 Notification Message types as | This document defines three new IKEv2 Notification Message types as | |||
described in Section 8. The three Notify Message Types must be | described in Section 9. The three Notify Message Types must be | |||
assigned values between 16396 and 40959. | assigned values between 16396 and 40959. | |||
o REDIRECT_SUPPORTED | o REDIRECT_SUPPORTED | |||
o REDIRECT | o REDIRECT | |||
o REDIRECTED_FROM | o REDIRECTED_FROM | |||
This document creates a new namespace called the "Gateway Identity | This document creates a new namespace called the "Gateway Identity | |||
Type". This is used to indicate the type of information regarding | Type". This is used to indicate the type of information regarding | |||
the VPN gateway that is carried in the REDIRECT (Section 8.2) and | the VPN gateway that is carried in the REDIRECT (Section 9.2) and | |||
REDIRECTED_FROM (Section 8.3) Notification payloads. The following | REDIRECTED_FROM (Section 9.3) Notification payloads. The following | |||
values are assigned. | values are assigned. | |||
1 - IPv4 address of the new VPN gateway | 1 - IPv4 address of the new VPN gateway | |||
2 - IPv6 address of the new VPN gateway | 2 - IPv6 address of the new VPN gateway | |||
3 - FQDN of the new VPN gateway | 3 - FQDN of the new VPN gateway | |||
Values '0', and 4-240 are reserved. New values can be allocated by | Values '0', and 4-240 are reserved. New values can be allocated by | |||
Expert Review [9]. Values 241-255 are set aside for private use. A | Expert Review [9]. Values 241-255 are set aside for private use. A | |||
specification that extends this registry MUST also mention which of | specification that extends this registry MUST also mention which of | |||
the new values are valid in which Notification payload. | the new values are valid in which Notification payload. | |||
12. Acknowledgements | 13. Acknowledgements | |||
The use of anycast address with IKEv2 was first described in [7]. It | The use of anycast address with IKEv2 was first described in [7]. It | |||
was then added to an early draft version of RFC 5026 and later | was then added to an early draft version of RFC 5026 and later | |||
removed before the RFC was published. Therefore the authors of [7] | removed before the RFC was published. Therefore the authors of [7] | |||
and RFC 5026 are acknowledged. | and RFC 5026 are acknowledged. | |||
Thanks to Pasi Eronen, with whom the solution described in this | Thanks to Pasi Eronen, with whom the solution described in this | |||
document was extensively discussed. Thanks to Tero Kivinen for | document was extensively discussed. Thanks to Tero Kivinen for | |||
suggesting the use of REDIRECTED_FROM payload and other comments | suggesting the use of REDIRECTED_FROM payload and other comments | |||
which helped improve the document. The authors would also like to | which helped improve the document. The authors would also like to | |||
thank Yaron Sheffer, Sunil Kumar, Fan Zhao, Yoav Nir, Richard | thank Yaron Sheffer, Sunil Kumar, Fan Zhao, Yoav Nir, Richard | |||
Graveman, Kanagavel Rajan, Srini Addepalli, Raj Singh, and Arnaud | Graveman, Kanagavel Rajan, Srini Addepalli, Raj Singh, and Arnaud | |||
Ebalard for their reviews and comments. | Ebalard for their reviews and comments. | |||
13. References | 14. References | |||
13.1. Normative References | 14.1. Normative References | |||
[1] Bradner, S., "Key words for use in RFCs to Indicate Requirement | [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement | |||
Levels", BCP 14, RFC 2119, March 1997. | Levels", BCP 14, RFC 2119, March 1997. | |||
[2] Kaufman, C., "Internet Key Exchange (IKEv2) Protocol", RFC 4306, | [2] Kaufman, C., "Internet Key Exchange (IKEv2) Protocol", RFC 4306, | |||
December 2005. | December 2005. | |||
13.2. Informative References | 14.2. Informative References | |||
[3] Johnson, D., Perkins, C., and J. Arkko, "Mobility Support in | [3] Johnson, D., Perkins, C., and J. Arkko, "Mobility Support in | |||
IPv6", RFC 3775, June 2004. | IPv6", RFC 3775, June 2004. | |||
[4] Giaretta, G., Kempf, J., and V. Devarapalli, "Mobile IPv6 | [4] Giaretta, G., Kempf, J., and V. Devarapalli, "Mobile IPv6 | |||
Bootstrapping in Split Scenario", RFC 5026, October 2007. | Bootstrapping in Split Scenario", RFC 5026, October 2007. | |||
[5] Haley, B., Devarapalli, V., Deng, H., and J. Kempf, "Mobility | [5] Haley, B., Devarapalli, V., Deng, H., and J. Kempf, "Mobility | |||
Header Home Agent Switch Message", RFC 5142, January 2008. | Header Home Agent Switch Message", RFC 5142, January 2008. | |||
End of changes. 32 change blocks. | ||||
78 lines changed or deleted | 86 lines changed or added | |||
This html diff was produced by rfcdiff 1.35. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |