| < draft-wkumari-dhc-capport-01.txt | draft-wkumari-dhc-capport-02.txt > | |||
|---|---|---|---|---|
| DHC W. Kumari | Network Working Group W. Kumari | |||
| Internet-Draft Google | Internet-Draft Google | |||
| Intended status: Informational O. Gudmundsson | Intended status: Informational O. Gudmundsson | |||
| Expires: July 27, 2014 Shinkuro Inc. | Expires: October 18, 2014 Shinkuro Inc. | |||
| P. Ebersman | P. Ebersman | |||
| Infoblox | Infoblox | |||
| S. Sheng | S. Sheng | |||
| ICANN | ICANN | |||
| January 23, 2014 | April 16, 2014 | |||
| Captive-Portal identification in DHCP | Captive-Portal identification in DHCP / RA | |||
| draft-wkumari-dhc-capport-01 | draft-wkumari-dhc-capport-02 | |||
| Abstract | Abstract | |||
| In many environments (such as hotels, coffee shops and other | In many environments (such as hotels, coffee shops and other | |||
| establishments that offer Internet service to customers), it is | establishments that offer Internet service to customers), it is | |||
| common to start new connections in a captive portal mode, i.e. highly | common to start new connections in a captive portal mode, i.e. highly | |||
| restrict what the customer can do until the customer has accepted | restrict what the customer can do until the customer has accepted | |||
| terms of service, provided payment information or authenticated. | terms of service, provided payment information or authenticated. | |||
| This document describes a DHCP option to inform clients that they are | This document describes a DHCP option (and an RA extension) to inform | |||
| behind some sort of captive portal device, and that they will need to | clients that they are behind some sort of captive portal device, and | |||
| authenticate to get Internet Access. | that they will need to authenticate to get Internet Access. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| 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." | |||
| This Internet-Draft will expire on July 27, 2014. | This Internet-Draft will expire on October 18, 2014. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2014 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 | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 24 ¶ | skipping to change at page 2, line 24 ¶ | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 1.1. Requirements notation . . . . . . . . . . . . . . . . . . 3 | 1.1. Requirements notation . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Background . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Background . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2.1. DNS Redirection . . . . . . . . . . . . . . . . . . . . . 3 | 2.1. DNS Redirection . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2.2. HTTP Redirection . . . . . . . . . . . . . . . . . . . . 4 | 2.2. HTTP Redirection . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.3. IP Hijacking . . . . . . . . . . . . . . . . . . . . . . 4 | 2.3. IP Hijacking . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3. The Captive-Portal DHCP Option . . . . . . . . . . . . . . . 4 | 3. The Captive-Portal DHCP Option . . . . . . . . . . . . . . . 4 | |||
| 4. Use of the Captive-Portal Option . . . . . . . . . . . . . . 5 | 4. The Captive-Portal RA Option . . . . . . . . . . . . . . . . 5 | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 | 5. Use of the Captive-Portal Option . . . . . . . . . . . . . . 6 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | |||
| 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 8.1. Normative References . . . . . . . . . . . . . . . . . . 7 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 8.2. Informative References . . . . . . . . . . . . . . . . . 8 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 9 | |||
| Appendix A. Changes / Author Notes. . . . . . . . . . . . . . . 8 | 9.2. Informative References . . . . . . . . . . . . . . . . . 9 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 8 | Appendix A. Changes / Author Notes. . . . . . . . . . . . . . . 9 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 9 | ||||
| 1. Introduction | 1. Introduction | |||
| In many environments (coffee shops and hotels), users need to connect | In many environments (coffee shops and hotels), users need to connect | |||
| to a captive portal device and agree to an acceptable use policy or | to a captive portal device and agree to an acceptable use policy or | |||
| provide billing information before they can access the Internet. | provide billing information before they can access the Internet. | |||
| In order to present the user with the captive portal web page, many | In order to present the user with the captive portal web page, many | |||
| devices perform DNS and / or HTTP and / or IP hijacks. As well as | devices perform DNS and / or HTTP and / or IP hijacks. As well as | |||
| being kludgy hacks, these techniques looks very similar to attacks | being kludgy hacks, these techniques looks very similar to attacks | |||
| skipping to change at page 5, line 46 ¶ | skipping to change at page 5, line 46 ¶ | |||
| contain an IPv6 address (to account for IPv4 only or IPv6 only | contain an IPv6 address (to account for IPv4 only or IPv6 only | |||
| capable devices - not everyting is dual stack!) | capable devices - not everyting is dual stack!) | |||
| [ED NOTE: Using an address literal is less than ideal, but better | [ED NOTE: Using an address literal is less than ideal, but better | |||
| than the alternatives. Recommending a DNS name means that the CP | than the alternatives. Recommending a DNS name means that the CP | |||
| would need to allow DNS from unauthenticated clients (as we don't | would need to allow DNS from unauthenticated clients (as we don't | |||
| want to force users to use the CP's provided DNS) and some folk would | want to force users to use the CP's provided DNS) and some folk would | |||
| use this to DNS Tunnel out. This would make the CP admin block | use this to DNS Tunnel out. This would make the CP admin block | |||
| external recursives).] | external recursives).] | |||
| 4. Use of the Captive-Portal Option | 4. The Captive-Portal RA Option | |||
| [ Ed: I'm far from an RA expert, but it was suggested that we shold | ||||
| advertize this via RA as well as DHCP. I think there are only 8 bits | ||||
| for Type, is it worth burning an option code on this? I have also | ||||
| specified that the option length should padded to multiples of 8 byte | ||||
| to better align with the examples I've seen (and I'm on a plane so | ||||
| cannot easily search for more!) Is this required / preferred, or is | ||||
| smaller RAs better? ] | ||||
| This section describes the Captive-Portal Router Advertisement | ||||
| option. | ||||
| 0 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 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Type | Length | URI . | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . | ||||
| . . | ||||
| . . | ||||
| . . | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Figure 2: Captive-Portal RA Option Format | ||||
| Type TBA3 | ||||
| Length 8-bit unsigned integer. The length of the option (including | ||||
| the Type and Length fields) in units of 8 bytes. | ||||
| URI The URI of the authentication page that the user should connect | ||||
| to. This should be padded with NULL (0x0) to make the total | ||||
| option length (including the Type and Length fields) a mutliple of | ||||
| 8 bytes. | ||||
| 5. Use of the Captive-Portal Option | ||||
| [ED NOTE: This section is, and probably will remain, fairly hand | [ED NOTE: This section is, and probably will remain, fairly hand | |||
| wavy. This option provides notice to the OS / User applications that | wavy. This option provides notice to the OS / User applications that | |||
| there is a CP, but I think that the UI / etc is best designed / | there is a CP, but I think that the UI / etc is best designed / | |||
| handled by the Operating System vendors / Application developers. ] | handled by the Operating System vendors / Application developers. ] | |||
| The purpose of the Captive-Portal DHCP Option is to inform the | ||||
| operating system and applications that they are behind a captive | The purpose of the Captive-Portal Option is to inform the operating | |||
| portal type device and will need to authenticate before getting | system and applications that they are behind a captive portal type | |||
| network access (and how to reach the authentication page). | device and will need to authenticate before getting network access | |||
| (and how to reach the authentication page). | ||||
| The Captive-Portal Option is defined for IPv6 RAs and IPv6 DHCP and | ||||
| IPv4 DHCP. The URIs in these SHOULD all be the same, but if they are | ||||
| not, the precedence is as follows: | ||||
| 1. IPv6 DHCP (most preferred) | ||||
| 2. IPv4 DHCP | ||||
| 3. IPv6 RA (least preferred) | ||||
| This preference was chosen because an IPv6 capable client machine | ||||
| will first get an IP address (and possibly the Captive-Portal option) | ||||
| via RA, and will then get additional information via DHCP v6. The | ||||
| client is not fully configured until it has completed the DHCP step, | ||||
| and so this is "newer" information. The DHCP v4 preference is in the | ||||
| middle, because it is likely that this will be delpoyed first on many | ||||
| captive portals. Once IPv6 is deployed, we don't want legacy | ||||
| (forgotten!) configuration to override the "newer" configuration | ||||
| information. [Ed: This ordering is somewhat arbritary, as is the | ||||
| justification, but there should be *some* standard and this seemed as | ||||
| good as any! ] | ||||
| The exact method that the interaction with the user occurs is device | The exact method that the interaction with the user occurs is device | |||
| / operating system / application dependent. The below is simply one | / operating system / application dependent. The below is simply one | |||
| option. | option. | |||
| When the device receives a DHCP response with the Captive-Portal | When the device receives a DHCP response with the Captive-Portal | |||
| Option it SHOULD: | Option it SHOULD: | |||
| 1. Not initiate new IP connections until the CP has been satisfied. | 1. Not initiate new IP connections until the CP has been satisfied. | |||
| [TODO(Someone): Existing connections should be quiesced. This | Existing connections should be quiesced. This will happen more | |||
| will happen more often than some expect -- you buy 1h of Internet | often than some expect -- you buy 1h of Internet at a cafe and | |||
| at a cafe and stay there for 3h -- this will "interrupt" you a | stay there for 3h -- this will "interrupt" you a few times). | |||
| few times).] | ||||
| 2. Present a dialog box to the user informing that they are behind a | 2. Present a dialog box to the user informing that they are behind a | |||
| captive portal and ask if they wish to proceed. | captive portal and ask if they wish to proceed. | |||
| 3. If the user elects to proceed, the device should initiate a | 3. If the user elects to proceed, the device should initiate a | |||
| connection to the captive portal login page using a web browser | connection to the captive portal login page using a web browser | |||
| configured with a separate cookie store. Some captive portals | configured with a separate cookie store. Some captive portals | |||
| send the user a cookie when they authenticate (so that the user | send the user a cookie when they authenticate (so that the user | |||
| can re-authenticate more easily in the future - the browser | can re-authenticate more easily in the future - the browser | |||
| should keep these CP cookies separate from other cookies. | should keep these CP cookies separate from other cookies. | |||
| skipping to change at page 6, line 42 ¶ | skipping to change at page 8, line 5 ¶ | |||
| 4. Once the user has authenticated (how does it know? HTTP | 4. Once the user has authenticated (how does it know? HTTP | |||
| response?! Probe (ugh?)) normal IP connectivity should resume. | response?! Probe (ugh?)) normal IP connectivity should resume. | |||
| 5. The device should (using an OS dependent method) expose to the | 5. The device should (using an OS dependent method) expose to the | |||
| user / user applications that they have connected though a | user / user applications that they have connected though a | |||
| captive portal (for example by creating a file in /proc/net/ | captive portal (for example by creating a file in /proc/net/ | |||
| containing the interface and captive portal URI). This should | containing the interface and captive portal URI). This should | |||
| continue until the network changes, or a new DHCP message without | continue until the network changes, or a new DHCP message without | |||
| the CP is received. | the CP is received. | |||
| 5. IANA Considerations | 6. IANA Considerations | |||
| [ This section stolen from draft-ietf-dhc-access-network-identifier. | ||||
| :-) ] | ||||
| This document defines DHCPv4 Captive-Portal option which requires | This document defines DHCPv4 Captive-Portal option which requires | |||
| assignment of DHCPv4 option code TBA1 assigned from "Bootp and DHCP | assignment of DHCPv4 option code TBA1 assigned from "Bootp and DHCP | |||
| options" registry (http://www.iana.org/assignments/ bootp-dhcp- | options" registry (http://www.iana.org/assignments/ bootp-dhcp- | |||
| parameters/bootp-dhcp-parameters.xml), as specified in [RFC2939]. | parameters/bootp-dhcp-parameters.xml), as specified in [RFC2939]. | |||
| The IANA is requested to assign an option codes for the DHCPv6 | The IANA is requested to also assign an option codes for the DHCPv6 | |||
| Captive-Portal (TBA2) option from the "DHCPv6 and DHCPv6 options" | Captive-Portal (TBA2) option from the "DHCPv6 and DHCPv6 options" | |||
| registry (http:// www.iana.org/assignments/dhcpv6-parameters/ | registry (http:// www.iana.org/assignments/dhcpv6-parameters/ | |||
| dhcpv6-parameters.xml). | dhcpv6-parameters.xml). | |||
| 6. Security Considerations | The IANA is also requested at assign an IPv6 RA Type code (TBA3) from | |||
| the [TODO] registry. Thanks IANA! | ||||
| 7. Security Considerations | ||||
| An attacker with the ability to inject DHCP messages could include | An attacker with the ability to inject DHCP messages could include | |||
| this option and so force users to contact him. As an attacker with | this option and so force users to contact him. As an attacker with | |||
| this capability could simply list himself as the default gateway (and | this capability could simply list himself as the default gateway (and | |||
| so see all the victim's traffic), we do not think this gives them | so see all the victim's traffic), we do not think this gives them | |||
| significantly more capabilities. Fake DHCP servers are currently a | significantly more capabilities. Fake DHCP servers / fake RAs are | |||
| security concern - this doesn't make them any better or worse. | currently a security concern - this doesn't make them any better or | |||
| worse. | ||||
| Devices and systems that automatically connect to open network could | Devices and systems that automatically connect to open network could | |||
| potentially be tracked using the techniques described in this | potentially be tracked using the techniques described in this | |||
| document (forcing the user to continually authenticate, or exposing | document (forcing the user to continually authenticate, or exposing | |||
| their browser fingerprint), but similar tracking could already be | their browser fingerprint), but similar tracking could already be | |||
| performed with the standard captive portal mechanisms, so this | performed with the standard captive portal mechanisms, so this | |||
| doesn't seem to give the attackers more capabilities. | doesn't seem to give the attackers more capabilities. | |||
| By simplifying the interaction with the captive portal systems, and | By simplifying the interaction with the captive portal systems, and | |||
| doing away with the need for interception, we think that users will | doing away with the need for interception, we think that users will | |||
| be less likely to disable useful security safeguards like DNSSEC | be less likely to disable useful security safeguards like DNSSEC | |||
| validation, VPNs, etc. | validation, VPNs, etc. | |||
| 7. Acknowledgements | 8. Acknowledgements | |||
| The primary author has discussed this idea with a number of folk, and | The primary author has discussed this idea with a number of folk, and | |||
| asked them to assist by becoming co-authors. Unfortunately he has | asked them to assist by becoming co-authors. Unfortunately he has | |||
| forgotten who many of them were; if you were one of them, I | forgotten who many of them were; if you were one of them, I | |||
| apologize. | apologize. | |||
| Thanks to Vint Cerf for the initial idea / asking me to write this. | Thanks to Vint Cerf for the initial idea / asking me to write this. | |||
| Thanks to Wes George for supplying the v6 text. | Thanks to Wes George for supplying the v6 text. | |||
| 8. References | 9. References | |||
| 8.1. Normative References | 9.1. Normative References | |||
| [IANA.AS_Numbers] | [IANA.AS_Numbers] | |||
| IANA, "Autonomous System (AS) Numbers", | IANA, "Autonomous System (AS) Numbers", | |||
| <http://www.iana.org/assignments/as-numbers>. | <http://www.iana.org/assignments/as-numbers>. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| 8.2. Informative References | 9.2. Informative References | |||
| [I-D.ietf-sidr-iana-objects] | [I-D.ietf-sidr-iana-objects] | |||
| Manderson, T., Vegoda, L., and S. Kent, "RPKI Objects | Manderson, T., Vegoda, L., and S. Kent, "RPKI Objects | |||
| issued by IANA", draft-ietf-sidr-iana-objects-03 (work in | issued by IANA", draft-ietf-sidr-iana-objects-03 (work in | |||
| progress), May 2011. | progress), May 2011. | |||
| Appendix A. Changes / Author Notes. | Appendix A. Changes / Author Notes. | |||
| [RFC Editor: Please remove this section before publication ] | [RFC Editor: Please remove this section before publication ] | |||
| From -01 to 02: | ||||
| o Added the IPv6 RA stuff. | ||||
| From -00 to -01: | From -00 to -01: | |||
| o Many nits and editorial changes. | o Many nits and editorial changes. | |||
| o Whole bunch of extra text and review from Wes George on v6. | o Whole bunch of extra text and review from Wes George on v6. | |||
| From initial to -00. | From initial to -00. | |||
| o Nothing changed in the template! | o Nothing changed in the template! | |||
| End of changes. 19 change blocks. | ||||
| 39 lines changed or deleted | 100 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||