draft-ietf-opsec-dhcpv6-shield-01.txt   draft-ietf-opsec-dhcpv6-shield-02.txt 
opsec F. Gont opsec F. Gont
Internet-Draft SI6 Networks / UTN-FRH Internet-Draft SI6 Networks / UTN-FRH
Intended status: Best Current Practice W. Liu Intended status: Best Current Practice W. Liu
Expires: April 25, 2014 Huawei Technologies Expires: August 8, 2014 Huawei Technologies
G. Van de Velde G. Van de Velde
Cisco Systems Cisco Systems
October 22, 2013 February 4, 2014
DHCPv6-Shield: Protecting Against Rogue DHCPv6 Servers DHCPv6-Shield: Protecting Against Rogue DHCPv6 Servers
draft-ietf-opsec-dhcpv6-shield-01 draft-ietf-opsec-dhcpv6-shield-02
Abstract Abstract
This document specifies a mechanism for protecting hosts connected to This document specifies a mechanism for protecting hosts connected to
a broadcast network against rogue DHCPv6 servers. The aforementioned a broadcast network against rogue DHCPv6 servers. The aforementioned
mechanism is based on DHCPv6 packet-filtering at the layer-2 device mechanism is based on DHCPv6 packet-filtering at the layer-2 device
at which the packets are received. The aforementioned mechanism has at which the packets are received. The aforementioned mechanism has
been widely deployed in IPv4 networks ('DHCP snooping'), and hence it been widely deployed in IPv4 networks ('DHCP snooping'), and hence it
is desirable that similar functionality be provided for IPv6 is desirable that similar functionality be provided for IPv6
networks. networks.
skipping to change at page 1, line 39 skipping to change at page 1, line 39
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 April 25, 2014. This Internet-Draft will expire on August 8, 2014.
Copyright Notice Copyright Notice
Copyright (c) 2013 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
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Requirements Language . . . . . . . . . . . . . . . . . . . . 2 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
4. DHCPv6-Shield Configuration . . . . . . . . . . . . . . . . . 4 4. DHCPv6-Shield Configuration . . . . . . . . . . . . . . . . . 4
5. DHCPv6-Shield Implementation Advice . . . . . . . . . . . . . 4 5. DHCPv6-Shield Implementation Advice . . . . . . . . . . . . . 4
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6
7. Security Considerations . . . . . . . . . . . . . . . . . . . 6 7. Security Considerations . . . . . . . . . . . . . . . . . . . 6
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 7 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 7
9.1. Normative References . . . . . . . . . . . . . . . . . . 7 9.1. Normative References . . . . . . . . . . . . . . . . . . 7
9.2. Informative References . . . . . . . . . . . . . . . . . 8 9.2. Informative References . . . . . . . . . . . . . . . . . 8
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 8 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 8
skipping to change at page 3, line 4 skipping to change at page 3, line 6
Before the DCHPv6-Shield device is deployed, the administrator Before the DCHPv6-Shield device is deployed, the administrator
specifies the layer-2 port(s) on which DHCPv6-server messages are to specifies the layer-2 port(s) on which DHCPv6-server messages are to
be allowed. Only those ports to which a DHCPv6 server is to be be allowed. Only those ports to which a DHCPv6 server is to be
connected should be specified as such. Once deployed, the connected should be specified as such. Once deployed, the
DHCPv6-Shield device inspects received packets, and allows (i.e. DHCPv6-Shield device inspects received packets, and allows (i.e.
passes) DHCPv6-server messages only if they are received on layer-2 passes) DHCPv6-server messages only if they are received on layer-2
ports that have been explicitly configured for such purpose. ports that have been explicitly configured for such purpose.
2. Requirements Language 2. Requirements Language
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 RFC 2119 [RFC2119]. document are to be interpreted as described in RFC 2119 [RFC2119].
3. Terminology 3. Terminology
For the purposes of this document, the terms Extension Header, Header For the purposes of this document, the terms Extension Header, Header
Chain, First Fragment, and Upper-layer Header are used as follows Chain, First Fragment, and Upper-layer Header are used as follows
[I-D.ietf-6man-oversized-header-chain]: [RFC7112]:
Extension Header: Extension Header:
Extension Headers are defined in Section 4 of [RFC2460]. As a Extension Headers are defined in Section 4 of [RFC2460]. As a
result of [I-D.ietf-6man-ext-transmit], [IANA-PROTO] provides a result of [RFC7045], [IANA-PROTO] provides a list of assigned
list of assigned Internet Protocol Numbers and designates which of Internet Protocol Numbers and designates which of those protocol
those protocol numbers also represent extension headers. numbers also represent extension headers.
First Fragment: First Fragment:
An IPv6 fragment with fragment offset equal to 0. An IPv6 fragment with fragment offset equal to 0.
IPv6 Header Chain: IPv6 Header Chain:
The header chain contains an initial IPv6 header, zero or more The header chain contains an initial IPv6 header, zero or more
IPv6 extension headers, and optionally, a single upper-layer IPv6 extension headers, and optionally, a single upper-layer
header. If an upper-layer header is present, it terminates the header. If an upper-layer header is present, it terminates the
skipping to change at page 4, line 31 skipping to change at page 4, line 33
5. DHCPv6-Shield Implementation Advice 5. DHCPv6-Shield Implementation Advice
The following filtering rules MUST be enforced as part of a The following filtering rules MUST be enforced as part of a
DHCPv6-Shield implementation on those ports that are not allowed to DHCPv6-Shield implementation on those ports that are not allowed to
send DHCPv6 packets to DHCPv6 clients: send DHCPv6 packets to DHCPv6 clients:
1. DHCPv6-Shield MUST parse the IPv6 entire header chain present in 1. DHCPv6-Shield MUST parse the IPv6 entire header chain present in
the packet, to identify whether it is a DHCPv6 packet meant for a the packet, to identify whether it is a DHCPv6 packet meant for a
DHCPv6 client (i.e., a DHCPv6-server message). DHCPv6 client (i.e., a DHCPv6-server message).
RATIONALE: [RFC6564] specifies a uniform format for IPv6 RATIONALE: DHCPv6-Shield implementations MUST NOT enforce a
Extension Headers, thus meaning that an IPv6 node can parse limit on the number of bytes they can inspect (starting from
an IPv6 header chain even if it contains Extension Headers the beginning of the IPv6 packet), since this could introduce
that are not currently supported by that node. false-positives: legitimate packets could be dropped simply
Additionally, [I-D.ietf-6man-oversized-header-chain] because the DHCPv6-Shield device does not parse the entire
requires that if a packet is fragmented, the first fragment IPv6 header chain present in the packet. An implementation
contains the entire IPv6 header chain. that has such an implementation-specific limit MUST NOT claim
compliance with this specification, and MUST pass the packet
DHCPv6-Shield implementations MUST NOT enforce a limit on when such implementation-specific limit is reached.
the number of bytes they can inspect (starting from the
beginning of the IPv6 packet), since this could introduce
false-positives: legitimate packets could be dropped simply
because the DHCPv6-Shield device does not parse the entire
IPv6 header chain present in the packet. An implementation
that has such an implementation-specific limit MUST NOT
claim compliance with this specification, and MUST pass the
packet when such implementation-specific limit is reached.
2. When parsing the IPv6 header chain, if the packet is a first- 2. When parsing the IPv6 header chain, if the packet is a first-
fragment (i.e., a packet containing a Fragment Header with the fragment (i.e., a packet containing a Fragment Header with the
Fragment Offset set to 0) and it fails to contain the entire IPv6 Fragment Offset set to 0) and it fails to contain the entire IPv6
header chain (i.e., all the headers starting from the IPv6 header header chain (i.e., all the headers starting from the IPv6 header
up to, and including, the upper-layer header), DHCPv6-Shield MUST up to, and including, the upper-layer header), DHCPv6-Shield MUST
drop the packet, and SHOULD log the packet drop event in an drop the packet, and SHOULD log the packet drop event in an
implementation-specific manner as a security fault. implementation-specific manner as a security fault.
RATIONALE: [I-D.ietf-6man-oversized-header-chain] specifies RATIONALE: [RFC7112] specifies that the first-fragment (i.e.,
that the first-fragment (i.e., the fragment with the the fragment with the Fragment Offset set to 0) MUST contain
Fragment Offset set to 0) MUST contain the entire IPv6 the entire IPv6 header chain, and allows intermediate systems
header chain, and allows intermediate systems such as such as routers to drop those packets that fail to comply with
routers to drop those packets that fail to comply with this this requirement.
requirement.
NOTE: This rule should only be applied to IPv6 fragments NOTE: This rule should only be applied to IPv6 fragments with
with a Fragment Offset of 0 (non-first fragments can be a Fragment Offset of 0 (non-first fragments can be safely
safely passed, since they will never reassemble into a passed, since they will never reassemble into a complete
complete datagram if they are part of a DHCPv6 packet meant datagram if they are part of a DHCPv6 packet meant for a
for a DHCPv6 client received on a port where such packets DHCPv6 client received on a port where such packets are not
are not allowed). allowed).
3. When parsing the IPv6 header chain, if the packet is identified 3. When parsing the IPv6 header chain, if the packet is identified
to be a DHCPv6 packet meant for a DHCPv6 client, DHCPv6-Shield to be a DHCPv6 packet meant for a DHCPv6 client or the packet
MUST drop the packet, and SHOULD log the packet drop event in an contains an unrecognized Next Header value, DHCPv6-Shield MUST
drop the packet, and SHOULD log the packet drop event in an
implementation-specific manner as a security fault. implementation-specific manner as a security fault.
DHCPv6-Shield MUST provide a configuration knob that controls
whether packets with unrecognized Next Header values are dropped;
this configuration knob MUST default to "drop".
RATIONALE: [RFC7045] requires that nodes be configurable with
respect to whether packets with unrecognized headers are
forwarded, and allows the default behavior to be that such
packets be dropped.
4. In all other cases, DHCPv6-Shield MUST pass the packet as usual. 4. In all other cases, DHCPv6-Shield MUST pass the packet as usual.
NOTE: For the purpose of enforcing the DHCPv6-Shield filtering NOTE: For the purpose of enforcing the DHCPv6-Shield filtering
policy, an ESP header [RFC4303] should be considered to be an policy, an ESP header [RFC4303] should be considered to be an
"upper-layer protocol" (that is, it should be considered the last "upper-layer protocol" (that is, it should be considered the last
header in the IPv6 header chain). This means that packets header in the IPv6 header chain). This means that packets
employing ESP would be passed by the DHCPv6-Shield device to the employing ESP would be passed by the DHCPv6-Shield device to the
intended destination. If the destination host does not have a intended destination. If the destination host does not have a
security association with the sender of the aforementioned IPv6 security association with the sender of the aforementioned IPv6
skipping to change at page 6, line 4 skipping to change at page 6, line 8
drop event SHOULD be logged in an implementation-specific manner as a drop event SHOULD be logged in an implementation-specific manner as a
security fault. The logging mechanism SHOULD include a drop counter security fault. The logging mechanism SHOULD include a drop counter
dedicated to DHCPv6-Shield packet drops. dedicated to DHCPv6-Shield packet drops.
In order to protect current end-node IPv6 implementations, Rule #2 In order to protect current end-node IPv6 implementations, Rule #2
has been defined as a default rule to drop packets that cannot be has been defined as a default rule to drop packets that cannot be
positively identified as not being DHCPv6-server packets (because the positively identified as not being DHCPv6-server packets (because the
packet is a fragment that fails to include the entire IPv6 header packet is a fragment that fails to include the entire IPv6 header
chain). This means that, at least in theory, DHCPv6-Shield could chain). This means that, at least in theory, DHCPv6-Shield could
result in false-positive blocking of some legitimate (non result in false-positive blocking of some legitimate (non
DHCPv6-server) packets. However, as noted in DHCPv6-server) packets. However, as noted in [RFC7112], IPv6 packets
[I-D.ietf-6man-oversized-header-chain], IPv6 packets that fail to that fail to include the entire IPv6 header chain are virtually
include the entire IPv6 header chain are virtually impossible to impossible to police with state-less filters and firewalls, and hence
police with state-less filters and firewalls, and hence are unlikely are unlikely to survive in real networks. [RFC7112] requires that
to survive in real networks. [I-D.ietf-6man-oversized-header-chain] hosts employing fragmentation include the entire IPv6 header chain in
requires that hosts employing fragmentation include the entire IPv6 the first fragment (the fragment with the Fragment Offset set to 0),
header chain in the first fragment (the fragment with the Fragment thus eliminating the aforementioned false positives.
Offset set to 0), thus eliminating the aforementioned false
positives.
The aforementioned filtering rules implicitly handle the case of The aforementioned filtering rules implicitly handle the case of
fragmented packets: if the DHCPv6-Shield device fails to identify the fragmented packets: if the DHCPv6-Shield device fails to identify the
upper-layer protocol as a result of the use of fragmentation, the upper-layer protocol as a result of the use of fragmentation, the
corresponding packets would be dropped. corresponding packets would be dropped.
Finally, we note that IPv6 implementations that allow overlapping Finally, we note that IPv6 implementations that allow overlapping
fragments (i.e. that do not comply with [RFC5722]) might still be fragments (i.e. that do not comply with [RFC5722]) might still be
subject of DHCPv6-based attacks. However, a recent assessment of subject of DHCPv6-based attacks. However, a recent assessment of
IPv6 implementations [SI6-FRAG] with respect to their fragment IPv6 implementations [SI6-FRAG] with respect to their fragment
skipping to change at page 7, line 15 skipping to change at page 7, line 17
forged fragmented datagram in which at least one of the fragments is forged fragmented datagram in which at least one of the fragments is
missing. [CPNI-IPv6] discusses some resource management strategies missing. [CPNI-IPv6] discusses some resource management strategies
that could be implemented for the fragment reassembly buffer. that could be implemented for the fragment reassembly buffer.
8. Acknowledgements 8. Acknowledgements
The authors would like to thank (in alphabetical order) Jean-Michel The authors would like to thank (in alphabetical order) Jean-Michel
Combes, Juergen Schoenwaelder, and Mark Smith, for providing valuable Combes, Juergen Schoenwaelder, and Mark Smith, for providing valuable
comments on earlier versions of this document. comments on earlier versions of this document.
Section 3 of this document was borrowed from Section 3 of this document was borrowed from [RFC7112], authored by
[I-D.ietf-6man-oversized-header-chain], authored by Fernando Gont, Fernando Gont, Vishwas Manral, and Ron Bonica.
Vishwas Manral, and Ron Bonica.
This document is heavily based on the document This document is heavily based on the document
[I-D.ietf-v6ops-ra-guard-implementation] authored by Fernando Gont. [I-D.ietf-v6ops-ra-guard-implementation] authored by Fernando Gont.
Thus, the authors would like to thank Ran Atkinson, Karl Auer, Robert Thus, the authors would like to thank Ran Atkinson, Karl Auer, Robert
Downie, Washam Fan, David Farmer, Marc Heuse, Nick Hilliard, Ray Downie, Washam Fan, David Farmer, Mike Heard, Marc Heuse, Nick
Hunter, Joel Jaeggli, Simon Perreault, Arturo Servin, Gunter van de Hilliard, Ray Hunter, Joel Jaeggli, Simon Perreault, Arturo Servin,
Velde, James Woodyatt, and Bjoern A. Zeeb, for providing valuable Gunter van de Velde, James Woodyatt, and Bjoern A. Zeeb, for
comments on [I-D.ietf-v6ops-ra-guard-implementation], on which this providing valuable comments on
document is based. [I-D.ietf-v6ops-ra-guard-implementation], on which this document is
based.
9. References 9. References
9.1. Normative References 9.1. Normative References
[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.
[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6
(IPv6) Specification", RFC 2460, December 1998. (IPv6) Specification", RFC 2460, December 1998.
skipping to change at page 8, line 5 skipping to change at page 8, line 8
[RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)", RFC [RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)", RFC
4303, December 2005. 4303, December 2005.
[RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman, [RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman,
"Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861,
September 2007. September 2007.
[RFC5722] Krishnan, S., "Handling of Overlapping IPv6 Fragments", [RFC5722] Krishnan, S., "Handling of Overlapping IPv6 Fragments",
RFC 5722, December 2009. RFC 5722, December 2009.
[RFC6564] Krishnan, S., Woodyatt, J., Kline, E., Hoagland, J., and [RFC7112] Gont, F., Manral, V., and R. Bonica, "Implications of
M. Bhatia, "A Uniform Format for IPv6 Extension Headers", Oversized IPv6 Header Chains", RFC 7112, January 2014.
RFC 6564, April 2012.
[I-D.ietf-6man-ext-transmit] [RFC7045] Carpenter, B. and S. Jiang, "Transmission and Processing
Carpenter, B. and S. Jiang, "Transmission and Processing of IPv6 Extension Headers", RFC 7045, December 2013.
of IPv6 Extension Headers", draft-ietf-6man-ext-
transmit-05 (work in progress), October 2013.
9.2. Informative References 9.2. Informative References
[RFC6104] Chown, T. and S. Venaas, "Rogue IPv6 Router Advertisement [RFC6104] Chown, T. and S. Venaas, "Rogue IPv6 Router Advertisement
Problem Statement", RFC 6104, February 2011. Problem Statement", RFC 6104, February 2011.
[RFC6105] Levy-Abegnoli, E., Van de Velde, G., Popoviciu, C., and J. [RFC6105] Levy-Abegnoli, E., Van de Velde, G., Popoviciu, C., and J.
Mohacsi, "IPv6 Router Advertisement Guard", RFC 6105, Mohacsi, "IPv6 Router Advertisement Guard", RFC 6105,
February 2011. February 2011.
[I-D.ietf-6man-oversized-header-chain]
Gont, F., Manral, V., and R. Bonica, "Implications of
Oversized IPv6 Header Chains", draft-ietf-6man-oversized-
header-chain-08 (work in progress), October 2013.
[I-D.ietf-v6ops-ra-guard-implementation] [I-D.ietf-v6ops-ra-guard-implementation]
Gont, F., "Implementation Advice for IPv6 Router Gont, F., "Implementation Advice for IPv6 Router
Advertisement Guard (RA-Guard)", draft-ietf-v6ops-ra- Advertisement Guard (RA-Guard)", draft-ietf-v6ops-ra-
guard-implementation-07 (work in progress), November 2012. guard-implementation-07 (work in progress), November 2012.
[IANA-PROTO] [IANA-PROTO]
Internet Assigned Numbers Authority, "Protocol Numbers", Internet Assigned Numbers Authority, "Protocol Numbers",
February 2013, <http://www.iana.org/assignments/protocol- February 2013, <http://www.iana.org/assignments/
numbers/protocol-numbers.txt>. protocol-numbers/protocol-numbers.txt>.
[SI6-FRAG] [SI6-FRAG]
SI6 Networks, "IPv6 NIDS evasion and improvements in IPv6 SI6 Networks, "IPv6 NIDS evasion and improvements in IPv6
fragmentation/reassembly", 2012, <http:// fragmentation/reassembly", 2012,
blog.si6networks.com/2012/02/ipv6-nids-evasion-and- <http://blog.si6networks.com/2012/02/
improvements-in.html>. ipv6-nids-evasion-and-improvements-in.html>.
[CPNI-IPv6] [CPNI-IPv6]
Gont, F., "Security Assessment of the Internet Protocol Gont, F., "Security Assessment of the Internet Protocol
version 6 (IPv6)", UK Centre for the Protection of version 6 (IPv6)", UK Centre for the Protection of
National Infrastructure, (available on request). National Infrastructure, (available on request).
Authors' Addresses Authors' Addresses
Fernando Gont Fernando Gont
SI6 Networks / UTN-FRH SI6 Networks / UTN-FRH
Evaristo Carriego 2644 Evaristo Carriego 2644
 End of changes. 22 change blocks. 
75 lines changed or deleted 66 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/