draft-ietf-opsec-dhcpv6-shield-03.txt   draft-ietf-opsec-dhcpv6-shield-04.txt 
opsec F. Gont opsec F. Gont
Internet-Draft SI6 Networks / UTN-FRH Internet-Draft SI6 Networks / UTN-FRH
Intended status: BCP W. Liu Intended status: Best Current Practice W. Liu
Expires: December 7, 2014 Huawei Technologies Expires: January 2, 2015 Huawei Technologies
G. Van de Velde G. Van de Velde
Cisco Systems Cisco Systems
June 5, 2014 July 1, 2014
DHCPv6-Shield: Protecting Against Rogue DHCPv6 Servers DHCPv6-Shield: Protecting Against Rogue DHCPv6 Servers
draft-ietf-opsec-dhcpv6-shield-03 draft-ietf-opsec-dhcpv6-shield-04
Abstract Abstract
This document specifies a mechanism for protecting hosts connected to This document specifies a mechanism for protecting hosts connected to
a switched network against rogue DHCPv6 servers. The aforementioned a switched 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.
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 December 7, 2014. This Internet-Draft will expire on January 2, 2015.
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
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 . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Requirements Language . . . . . . . . . . . . . . . . . . . . 4 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
4. DHCPv6-Shield Configuration . . . . . . . . . . . . . . . . . 7 4. DHCPv6-Shield Configuration . . . . . . . . . . . . . . . . . 4
5. DHCPv6-Shield Implementation Advice . . . . . . . . . . . . . 8 5. DHCPv6-Shield Implementation Advice . . . . . . . . . . . . . 4
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6
7. Security Considerations . . . . . . . . . . . . . . . . . . . 12 7. Security Considerations . . . . . . . . . . . . . . . . . . . 6
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 13 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 14 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 7
9.1. Normative References . . . . . . . . . . . . . . . . . . . 14 9.1. Normative References . . . . . . . . . . . . . . . . . . 7
9.2. Informative References . . . . . . . . . . . . . . . . . . 14 9.2. Informative References . . . . . . . . . . . . . . . . . 8
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 16 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 9
1. Introduction 1. Introduction
This document specifies a mechanism for protecting hosts connected to This document specifies a mechanism for protecting hosts connected to
a switched network against rogue DHCPv6 servers [RFC3315]. This a switched network against rogue DHCPv6 servers [RFC3315]. This
mechanism is analogous to the RA-Guard mechanism [RFC6104] [RFC6105] mechanism is analogous to the RA-Guard mechanism [RFC6104] [RFC6105]
[RFC7113] intended for protection against rogue Router Advertisement [RFC7113] intended for protection against rogue Router Advertisement
[RFC4861] messages. [RFC4861] messages.
The basic concept behind DHCPv6-Shield is that a layer-2 device The basic concept behind DHCPv6-Shield is that a layer-2 device
filters DHCPv6 messages meant to DHCPv6 clients (henceforth "DHCPv6- filters DHCPv6 messages meant to DHCPv6 clients (henceforth
server messages"), according to a number of different criteria. The "DHCPv6-server messages"), according to a number of different
most basic filtering criterion is that DHCPv6-server messages are criteria. The most basic filtering criterion is that DHCPv6-server
discarded by the layer-2 device unless they are received on a messages are discarded by the layer-2 device unless they are received
specific ports of the layer-2 device. on a specific ports of the layer-2 device.
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 or relay is to be allowed. Only those ports to which a DHCPv6 server or relay is to
be connected should be specified as such. Once deployed, the DHCPv6- be connected should be specified as such. Once deployed, the
Shield device inspects received packets, and allows (i.e. passes) DHCPv6-Shield device inspects received packets, and allows (i.e.
DHCPv6-server messages only if they are received on layer-2 ports passes) DHCPv6-server messages only if they are received on layer-2
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
DHCPv6 Shield device: DHCPv6 Shield device:
skipping to change at page 8, line 7 skipping to change at page 4, line 29
4. DHCPv6-Shield Configuration 4. DHCPv6-Shield Configuration
Before being deployed for production, the DHCPv6-Shield device MUST Before being deployed for production, the DHCPv6-Shield device MUST
be explicitly configured with respect to which layer-2 ports are be explicitly configured with respect to which layer-2 ports are
allowed to send DHCPv6 packets to DHCPv6 clients (i.e. DHCPv6-server allowed to send DHCPv6 packets to DHCPv6 clients (i.e. DHCPv6-server
messages). Only those layer-2 ports explicitly configured for such messages). Only those layer-2 ports explicitly configured for such
purpose will be allowed to send DHCPv6 packets to DHCPv6 clients. purpose will be allowed to send DHCPv6 packets to DHCPv6 clients.
5. DHCPv6-Shield Implementation Advice 5. DHCPv6-Shield Implementation Advice
The following filtering rules MUST be enforced as part of a DHCPv6- The following filtering rules MUST be enforced as part of a
Shield implementation on those ports that are not allowed to send DHCPv6-Shield implementation on those ports that are not allowed to
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: DHCPv6-Shield implementations MUST NOT enforce a RATIONALE: DHCPv6-Shield implementations MUST NOT enforce a
limit on the number of bytes they can inspect (starting from limit on the number of bytes they can inspect (starting from
the beginning of the IPv6 packet), since this could introduce the beginning of the IPv6 packet), since this could introduce
false-positives: legitimate packets could be dropped simply false-positives: legitimate packets could be dropped simply
because the DHCPv6-Shield device does not parse the entire because the DHCPv6-Shield device does not parse the entire
skipping to change at page 8, line 49 skipping to change at page 5, line 22
a Fragment Offset of 0 (non-first fragments can be safely a Fragment Offset of 0 (non-first fragments can be safely
passed, since they will never reassemble into a complete passed, since they will never reassemble into a complete
datagram if they are part of a DHCPv6 packet meant for a datagram if they are part of a DHCPv6 packet meant for a
DHCPv6 client received on a port where such packets are not DHCPv6 client received on a port where such packets 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 or the packet to be a DHCPv6 packet meant for a DHCPv6 client or the packet
contains an unrecognized Next Header value, DHCPv6-Shield MUST contains an unrecognized Next Header value, 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 alert. DHCPv6- implementation-specific manner as a security alert.
Shield MUST provide a configuration knob that controls whether DHCPv6-Shield MUST provide a configuration knob that controls
packets with unrecognized Next Header values are dropped; this whether packets with unrecognized Next Header values are dropped;
configuration knob MUST default to "drop". this configuration knob MUST default to "drop".
RATIONALE: [RFC7045] requires that nodes be configurable with RATIONALE: [RFC7045] requires that nodes be configurable with
respect to whether packets with unrecognized headers are respect to whether packets with unrecognized headers are
forwarded, and allows the default behavior to be that such forwarded, and allows the default behavior to be that such
packets be dropped. 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
skipping to change at page 9, line 34 skipping to change at page 6, line 7
If a packet is dropped due to this filtering policy, then the packet If a packet is dropped due to this filtering policy, then the packet
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 DHCPv6- result in false-positive blocking of some legitimate (non
server) packets. However, as noted in [RFC7112], IPv6 packets that DHCPv6-server) packets. However, as noted in [RFC7112], IPv6 packets
fail to include the entire IPv6 header chain are virtually impossible that fail to include the entire IPv6 header chain are virtually
to police with state-less filters and firewalls, and hence are impossible to police with state-less filters and firewalls, and hence
unlikely to survive in real networks. [RFC7112] requires that hosts are unlikely to survive in real networks. [RFC7112] requires that
employing fragmentation include the entire IPv6 header chain in the hosts employing fragmentation include the entire IPv6 header chain in
first fragment (the fragment with the Fragment Offset set to 0), thus the first fragment (the fragment with the Fragment Offset set to 0),
eliminating the aforementioned false positives. 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 13, line 5 skipping to change at page 7, line 22
fragments, which would never reassemble into a complete datagram. If fragments, which would never reassemble into a complete datagram. If
a large number of such packets were sent by an attacker, and the a large number of such packets were sent by an attacker, and the
victim node failed to implement proper resource management for the victim node failed to implement proper resource management for the
fragment reassembly buffer, this could lead to a Denial of Service fragment reassembly buffer, this could lead to a Denial of Service
(DoS). However, this does not really introduce a new attack vector, (DoS). However, this does not really introduce a new attack vector,
since an attacker could always perform the same attack by sending since an attacker could always perform the same attack by sending
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.
Finally, we note that the security of a site employing DHCPv6 Shield
could be further improved by deploying [I-D.ietf-savi-dhcp], to
mitigate IPv6 address. spoofing attacks.
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, Crsten Schmoll, Robert Sleigh, Mark Combes, Juergen Schoenwaelder, Crsten Schmoll, Robert Sleigh, Mark
Smith, and Eric Vyncke, for providing valuable comments on earlier Smith, and Eric Vyncke, for providing valuable comments on earlier
versions of this document. versions of this document.
Part of Section 3 of this document was borrowed from [RFC7112], Part of Section 3 of this document was borrowed from [RFC7112],
authored by Fernando Gont, Vishwas Manral, and Ron Bonica. authored by Fernando Gont, Vishwas Manral, and Ron Bonica.
skipping to change at page 14, line 19 skipping to change at page 8, line 12
[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.
[RFC3315] Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C., [RFC3315] Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C.,
and M. Carney, "Dynamic Host Configuration Protocol for and M. Carney, "Dynamic Host Configuration Protocol for
IPv6 (DHCPv6)", RFC 3315, July 2003. IPv6 (DHCPv6)", RFC 3315, July 2003.
[RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)", [RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)", RFC
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.
[RFC7112] Gont, F., Manral, V., and R. Bonica, "Implications of [RFC7112] Gont, F., Manral, V., and R. Bonica, "Implications of
Oversized IPv6 Header Chains", RFC 7112, January 2014. Oversized IPv6 Header Chains", RFC 7112, January 2014.
skipping to change at page 14, line 49 skipping to change at page 8, line 42
[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.
[RFC7113] Gont, F., "Implementation Advice for IPv6 Router [RFC7113] Gont, F., "Implementation Advice for IPv6 Router
Advertisement Guard (RA-Guard)", RFC 7113, February 2014. Advertisement Guard (RA-Guard)", RFC 7113, February 2014.
[IANA-PROTO] [IANA-PROTO]
Internet Assigned Numbers Authority, "Protocol Numbers", Internet Assigned Numbers Authority, "Protocol Numbers",
February 2013, <http://www.iana.org/assignments/ February 2013, <http://www.iana.org/assignments/protocol-
protocol-numbers/protocol-numbers.txt>. 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/ <http://blog.si6networks.com/2012/02/
ipv6-nids-evasion-and-improvements-in.html>. ipv6-nids-evasion-and-improvements-in.html>.
[I-D.ietf-savi-dhcp]
Bi, J., Wu, J., Yao, G., and F. Baker, "SAVI Solution for
DHCP", draft-ietf-savi-dhcp-27 (work in progress), June
2014.
[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
Haedo, Provincia de Buenos Aires 1706 Haedo, Provincia de Buenos Aires 1706
Argentina Argentina
 End of changes. 17 change blocks. 
49 lines changed or deleted 58 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/