rfc9099.original | rfc9099.txt | |||
---|---|---|---|---|
OPSEC E. Vyncke | Internet Engineering Task Force (IETF) É. Vyncke | |||
Internet-Draft Cisco | Request for Comments: 9099 Cisco | |||
Intended status: Informational K. Chittimaneni | Category: Informational K. Chittimaneni | |||
Expires: November 7, 2021 Square | ISSN: 2070-1721 | |||
M. Kaeo | M. Kaeo | |||
Double Shot Security | Double Shot Security | |||
E. Rey | E. Rey | |||
ERNW | ERNW | |||
May 6, 2021 | August 2021 | |||
Operational Security Considerations for IPv6 Networks | Operational Security Considerations for IPv6 Networks | |||
draft-ietf-opsec-v6-27 | ||||
Abstract | Abstract | |||
Knowledge and experience on how to operate IPv4 networks securely is | Knowledge and experience on how to operate IPv4 networks securely is | |||
available: whether it is an Internet Service Provider or an | available, whether the operator is an Internet Service Provider (ISP) | |||
enterprise internal network. However, IPv6 presents some new | or an enterprise internal network. However, IPv6 presents some new | |||
security challenges. RFC 4942 describes security issues in the | security challenges. RFC 4942 describes security issues in the | |||
protocol, but network managers also need a more practical, | protocol, but network managers also need a more practical, | |||
operations-minded document to enumerate advantages and/or | operations-minded document to enumerate advantages and/or | |||
disadvantages of certain choices. | disadvantages of certain choices. | |||
This document analyzes the operational security issues associated | This document analyzes the operational security issues associated | |||
with several types of network and proposes technical and procedural | with several types of networks and proposes technical and procedural | |||
mitigation techniques. This document is only applicable to managed | mitigation techniques. This document is only applicable to managed | |||
networks, such as enterprise networks, service provider networks, or | networks, such as enterprise networks, service provider networks, or | |||
managed residential networks. | managed residential networks. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This document is not an Internet Standards Track specification; it is | |||
provisions of BCP 78 and BCP 79. | published for informational purposes. | |||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Not all documents | |||
approved by the IESG are candidates for any level of Internet | ||||
Standard; see Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on November 7, 2021. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9099. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 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 | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://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 | |||
1.1. Applicability Statement . . . . . . . . . . . . . . . . . 4 | 1.1. Applicability Statement | |||
2. Generic Security Considerations . . . . . . . . . . . . . . . 4 | 1.2. Requirements Language | |||
2.1. Addressing . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Generic Security Considerations | |||
2.1.1. Use of ULAs . . . . . . . . . . . . . . . . . . . . . 5 | 2.1. Addressing | |||
2.1.2. Point-to-Point Links . . . . . . . . . . . . . . . . 5 | 2.1.1. Use of ULAs | |||
2.1.3. Loopback Addresses . . . . . . . . . . . . . . . . . 5 | 2.1.2. Point-to-Point Links | |||
2.1.4. Stable Addresses . . . . . . . . . . . . . . . . . . 6 | 2.1.3. Loopback Addresses | |||
2.1.5. Temporary Addresses for SLAAC . . . . . . . . . . . . 6 | 2.1.4. Stable Addresses | |||
2.1.6. DHCP Considerations . . . . . . . . . . . . . . . . . 8 | 2.1.5. Temporary Addresses for SLAAC | |||
2.1.7. DNS Considerations . . . . . . . . . . . . . . . . . 8 | 2.1.6. DHCP Considerations | |||
2.1.8. Using a /64 per host . . . . . . . . . . . . . . . . 8 | 2.1.7. DNS Considerations | |||
2.1.9. Privacy consideration of Addresses . . . . . . . . . 8 | 2.1.8. Using a /64 per Host | |||
2.2. Extension Headers . . . . . . . . . . . . . . . . . . . . 9 | 2.1.9. Privacy Consideration of Addresses | |||
2.2.1. Order and Repetition of Extension Headers . . . . . . 9 | 2.2. Extension Headers | |||
2.2.2. Hop-by-Hop Options Header . . . . . . . . . . . . . . 10 | 2.2.1. Order and Repetition of Extension Headers | |||
2.2.3. Fragment Header . . . . . . . . . . . . . . . . . . . 10 | 2.2.2. Hop-by-Hop Options Header | |||
2.2.4. IP Security Extension Header . . . . . . . . . . . . 10 | 2.2.3. Fragment Header | |||
2.3. Link-Layer Security . . . . . . . . . . . . . . . . . . . 11 | 2.2.4. IP Security Extension Header | |||
2.3.1. Neighbor Solicitation Rate-Limiting . . . . . . . . . 11 | 2.3. Link-Layer Security | |||
2.3.2. Router and Neighbor Advertisements Filtering . . . . 12 | 2.3.1. Neighbor Solicitation Rate-Limiting | |||
2.3.3. Securing DHCP . . . . . . . . . . . . . . . . . . . . 13 | 2.3.2. Router and Neighbor Advertisements Filtering | |||
2.3.4. 3GPP Link-Layer Security . . . . . . . . . . . . . . 14 | 2.3.3. Securing DHCP | |||
2.3.5. Impact of Multicast Traffic . . . . . . . . . . . . . 15 | 2.3.4. 3GPP Link-Layer Security | |||
2.3.6. SeND and CGA . . . . . . . . . . . . . . . . . . . . 15 | 2.3.5. Impact of Multicast Traffic | |||
2.4. Control Plane Security . . . . . . . . . . . . . . . . . 16 | 2.3.6. SEND and CGA | |||
2.4.1. Control Protocols . . . . . . . . . . . . . . . . . . 17 | 2.4. Control Plane Security | |||
2.4.2. Management Protocols . . . . . . . . . . . . . . . . 18 | 2.4.1. Control Protocols | |||
2.4.3. Packet Exceptions . . . . . . . . . . . . . . . . . . 18 | 2.4.2. Management Protocols | |||
2.5. Routing Security . . . . . . . . . . . . . . . . . . . . 19 | 2.4.3. Packet Exceptions | |||
2.5.1. BGP Security . . . . . . . . . . . . . . . . . . . . 20 | 2.5. Routing Security | |||
2.5.2. Authenticating OSPFv3 Neighbors . . . . . . . . . . . 20 | 2.5.1. BGP Security | |||
2.5.3. Securing Routing Updates . . . . . . . . . . . . . . 21 | 2.5.2. Authenticating OSPFv3 Neighbors | |||
2.5.4. Route Filtering . . . . . . . . . . . . . . . . . . . 21 | 2.5.3. Securing Routing Updates | |||
2.6. Logging/Monitoring . . . . . . . . . . . . . . . . . . . 21 | 2.5.4. Route Filtering | |||
2.6.1. Data Sources . . . . . . . . . . . . . . . . . . . . 23 | 2.6. Logging/Monitoring | |||
2.6.2. Use of Collected Data . . . . . . . . . . . . . . . . 26 | 2.6.1. Data Sources | |||
2.6.3. Summary . . . . . . . . . . . . . . . . . . . . . . . 29 | 2.6.2. Use of Collected Data | |||
2.7. Transition/Coexistence Technologies . . . . . . . . . . . 29 | 2.6.3. Summary | |||
2.7.1. Dual Stack . . . . . . . . . . . . . . . . . . . . . 30 | 2.7. Transition/Coexistence Technologies | |||
2.7.2. Encapsulation Mechanisms . . . . . . . . . . . . . . 31 | 2.7.1. Dual Stack | |||
2.7.3. Translation Mechanisms . . . . . . . . . . . . . . . 35 | 2.7.2. Encapsulation Mechanisms | |||
2.8. General Device Hardening . . . . . . . . . . . . . . . . 37 | 2.7.3. Translation Mechanisms | |||
3. Enterprises Specific Security Considerations . . . . . . . . 37 | 2.8. General Device Hardening | |||
3.1. External Security Considerations . . . . . . . . . . . . 38 | 3. Enterprises-Specific Security Considerations | |||
3.2. Internal Security Considerations . . . . . . . . . . . . 39 | 3.1. External Security Considerations | |||
4. Service Providers Security Considerations . . . . . . . . . . 40 | 3.2. Internal Security Considerations | |||
4.1. BGP . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 | 4. Service Provider Security Considerations | |||
4.1.1. Remote Triggered Black Hole Filtering (RTBH) . . . . 40 | 4.1. BGP | |||
4.2. Transition/Coexistence Mechanism . . . . . . . . . . . . 40 | 4.1.1. Remote Triggered Black Hole Filtering | |||
4.3. Lawful Intercept . . . . . . . . . . . . . . . . . . . . 40 | 4.2. Transition/Coexistence Mechanism | |||
5. Residential Users Security Considerations . . . . . . . . . . 41 | 4.3. Lawful Intercept | |||
6. Further Reading . . . . . . . . . . . . . . . . . . . . . . . 41 | 5. Residential Users Security Considerations | |||
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 42 | 6. Further Reading | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 42 | 7. Security Considerations | |||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 42 | 8. IANA Considerations | |||
9.1. Normative References . . . . . . . . . . . . . . . . . . 42 | 9. References | |||
9.2. Informative References . . . . . . . . . . . . . . . . . 42 | 9.1. Normative References | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 57 | 9.2. Informative References | |||
Acknowledgements | ||||
Authors' Addresses | ||||
1. Introduction | 1. Introduction | |||
Running an IPv6 network is new for most operators not only because | Running an IPv6 network is new for most operators not only because | |||
they are not yet used to large-scale IPv6 networks but also because | they are not yet used to large-scale IPv6 networks but also because | |||
there are subtle but critical and important differences between IPv4 | there are subtle but critical and important differences between IPv4 | |||
and IPv6, especially with respect to security. For example, all | and IPv6, especially with respect to security. For example, all | |||
layer-2 interactions are now done using Neighbor Discovery Protocol | Layer 2 (L2) interactions are now done using the Neighbor Discovery | |||
[RFC4861] rather than using Address Resolution Protocol [RFC0826]. | Protocol (NDP) [RFC4861] rather than the Address Resolution Protocol | |||
Also, there is no Network Address Port Translation (NAPT) defined in | [RFC0826]. Also, there is no Network Address Port Translation (NAPT) | |||
[RFC2663] for IPv6 even if [RFC6296] specifies a Network Prefix | defined in [RFC2663] for IPv6 even if [RFC6296] specifies an IPv6-to- | |||
Translation for IPv6 (NPTv6) which is a 1-to-1 mapping of IPv6 | IPv6 Network Prefix Translation (NPTv6), which is a 1-to-1 mapping of | |||
addresses. Another important difference is that IPv6 is extensible | IPv6 addresses. Another important difference is that IPv6 is | |||
with the use of extension headers. | extensible with the use of extension headers. | |||
IPv6 networks are deployed using a variety of techniques, each of | IPv6 networks are deployed using a variety of techniques, each of | |||
which have their own specific security concerns. | which have their own specific security concerns. | |||
This document complements [RFC4942] by listing security issues when | This document complements [RFC4942] by listing security issues when | |||
operating a network (including various transition technologies). It | operating a network (including various transition technologies). It | |||
also provides more recent operational deployment experiences where | also provides operational deployment experiences where warranted. | |||
warranted. | ||||
1.1. Applicability Statement | 1.1. Applicability Statement | |||
This document is applicable to managed networks, i.e., when the | This document is applicable to managed networks, i.e., when the | |||
network is operated by the user organization itself. Indeed, many of | network is operated by the user organization itself. Indeed, many of | |||
the recommended mitigation techniques must be configured with | the recommended mitigation techniques must be configured with | |||
detailed knowledge of the network (which are the default routers, the | detailed knowledge of the network (which are the default routers, the | |||
switch trunk ports, etc.). This covers Service Provider (SP), | switch trunk ports, etc.). This covers Service Providers (SPs), | |||
enterprise networks and some knowledgeable-home-user-managed | enterprise networks, and some knowledgeable home-user-managed | |||
residential networks. This applicability statement especially | residential networks. This applicability statement especially | |||
applies to Section 2.3 and Section 2.5.4. | applies to Sections 2.3 and 2.5.4. | |||
1.2. Requirements Language | ||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | ||||
"OPTIONAL" in this document are to be interpreted as described in | ||||
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | ||||
capitals, as shown here. | ||||
2. Generic Security Considerations | 2. Generic Security Considerations | |||
2.1. Addressing | 2.1. Addressing | |||
IPv6 address allocations and overall architecture are an important | IPv6 address allocations and overall architecture are important parts | |||
part of securing IPv6. Initial designs, even if intended to be | of securing IPv6. Initial designs, even if intended to be temporary, | |||
temporary, tend to last much longer than expected. Although | tend to last much longer than expected. Although IPv6 was initially | |||
initially IPv6 was thought to make renumbering easy, in practice it | thought to make renumbering easy, in practice, it may be extremely | |||
may be extremely difficult to renumber without a proper IP Address | difficult to renumber without a proper IP Address Management (IPAM) | |||
Management (IPAM) system. [RFC7010] introduces the mechanisms that | system. [RFC7010] introduces the mechanisms that could be utilized | |||
could be utilized for IPv6 site renumbering and tries to cover most | for IPv6 site renumbering and tries to cover most of the explicit | |||
of the explicit issues and requirements associated with IPv6 | issues and requirements associated with IPv6 renumbering. | |||
renumbering. | ||||
A key task for a successful IPv6 deployment is to prepare an | A key task for a successful IPv6 deployment is to prepare an | |||
addressing plan. Because an abundance of address space is available, | addressing plan. Because an abundance of address space is available, | |||
structuring an address plan around both services and geographic | structuring an address plan around both services and geographic | |||
locations allows address space to become a basis for more structured | locations allows address space to become a basis for more structured | |||
security policies to permit or deny services between geographic | security policies to permit or deny services between geographic | |||
regions. [RFC6177] documents some operational considerations of | regions. [RFC6177] documents some operational considerations of | |||
using different prefix sizes for address assignments at end sites. | using different prefix sizes for address assignments at end sites. | |||
A common question is whether companies should use Provider | A common question is whether companies should use Provider- | |||
Independent (PI) vs. Provider Allocated (PA) space [RFC7381], but | Independent (PI) or Provider-Aggregated (PA) space [RFC7381], but, | |||
from a security perspective there is little difference. However, one | from a security perspective, there is little difference. However, | |||
aspect to keep in mind is who has administrative ownership of the | one aspect to keep in mind is who has administrative ownership of the | |||
address space and who is technically responsible if/when there is a | address space and who is technically responsible if/when there is a | |||
need to enforce restrictions on routability of the space, e.g., due | need to enforce restrictions on routability of the space, e.g., due | |||
to malicious criminal activity originating from it. Relying on PA | to malicious criminal activity originating from it. Relying on PA | |||
address space may also increase the perceived need for address | address space may also increase the perceived need for address | |||
translation techniques such as NPTv6 and thereby augmenting the | translation techniques, such as NPTv6; thereby, the complexity of the | |||
complexity of the operations including the security operations. | operations, including the security operations, is augmented. | |||
In [RFC7934], it is recommended that IPv6 network deployments provide | In [RFC7934], it is recommended that IPv6 network deployments provide | |||
multiple IPv6 addresses from each prefix to general-purpose hosts and | multiple IPv6 addresses from each prefix to general-purpose hosts, | |||
it specifically does not recommend limiting a host to only one IPv6 | and it specifically does not recommend limiting a host to only one | |||
address per prefix. It also recommends that the network give the | IPv6 address per prefix. It also recommends that the network give | |||
host the ability to use new addresses without requiring explicit | the host the ability to use new addresses without requiring explicit | |||
requests (for example by using SLAAC). Privacy Extensions as of | requests (for example, by using Stateless Address Autoconfiguration | |||
[RFC8981] constitute one of the main scenarios where hosts are | (SLAAC)). Privacy extensions, as of [RFC8981], constitute one of the | |||
expected to generate multiple addresses from the same prefix and | main scenarios where hosts are expected to generate multiple | |||
having multiple IPv6 addresses per interface is a major change | addresses from the same prefix, and having multiple IPv6 addresses | |||
compared to the unique IPv4 address per interface for hosts | per interface is a major change compared to the unique IPv4 address | |||
(secondary IPv4 addresses are not common); especially for audits (see | per interface for hosts (secondary IPv4 addresses are not common), | |||
section Section 2.6.2.3). | especially for audits (see Section 2.6.2.3). | |||
2.1.1. Use of ULAs | 2.1.1. Use of ULAs | |||
Unique Local Addresses (ULAs) [RFC4193] are intended for scenarios | Unique Local Addresses (ULAs) [RFC4193] are intended for scenarios | |||
where interfaces are not globally reachable, despite being routed | where interfaces are not globally reachable, despite being routed | |||
within a domain. They formally have global scope, but [RFC4193] | within a domain. They formally have global scope, but [RFC4193] | |||
specifies that they must be filtered at domain boundaries. ULAs are | specifies that they must be filtered at domain boundaries. ULAs are | |||
different from [RFC1918] addresses and have different use cases. One | different from the addresses described in [RFC1918] and have | |||
use of ULA is described in [RFC4864], another one is for internal | different use cases. One use of ULAs is described in [RFC4864]; | |||
communication stability in networks where external connectivity may | another one is for internal communication stability in networks where | |||
come and go (e.g., some ISPs provide ULAs in home networks connected | external connectivity may come and go (e.g., some ISPs provide ULAs | |||
via a cable modem). It should further be kept in mind that ULA /48s | in home networks connected via a cable modem). It should further be | |||
from the fd00::/8 space (L=1) MUST be generated with a pseudo-random | kept in mind that ULA /48s from the fd00::/8 space (L=1) MUST be | |||
algorithm, per [RFC4193] section 3.2.1. | generated with a pseudorandom algorithm, per Section 3.2.1 of | |||
[RFC4193]. | ||||
2.1.2. Point-to-Point Links | 2.1.2. Point-to-Point Links | |||
[RFC6164] in section 5.1 specifies the rationale of using /127 for | Section 5.1 of [RFC6164] specifies the rationale of using /127 for | |||
inter-router point-to-point links to prevent the ping-pong issue | inter-router, point-to-point links to prevent the ping-pong issue | |||
between routers not correctly implementing [RFC4443] and also | between routers not correctly implementing [RFC4443], and it also | |||
prevents a DoS attack on the neighbor cache. The previous | prevents a denial-of-service (DoS) attack on the Neighbor Cache. The | |||
recommendation of [RFC3627] has been obsoleted and marked Historic by | previous recommendation of [RFC3627] has been obsoleted and marked | |||
[RFC6547]). | Historic by [RFC6547]. | |||
Some environments are also using link-local addressing for point-to- | Some environments are also using link-local addressing for point-to- | |||
point links. While this practice could further reduce the attack | point links. While this practice could further reduce the attack | |||
surface of infrastructure devices, the operational disadvantages also | surface of infrastructure devices, the operational disadvantages also | |||
need to be carefully considered; see also [RFC7404]. | need to be carefully considered; see [RFC7404]. | |||
2.1.3. Loopback Addresses | 2.1.3. Loopback Addresses | |||
Many operators reserve a /64 block for all loopback addresses in | Many operators reserve a /64 block for all loopback addresses in | |||
their infrastructure and allocate a /128 out of this reserved /64 | their infrastructure and allocate a /128 out of this reserved /64 | |||
prefix for each loopback interface. This practice facilitates | prefix for each loopback interface. This practice facilitates | |||
configuration of Access Control List (ACL) rules to enforce a | configuration of Access Control List (ACL) rules to enforce a | |||
security policy for those loopback addresses. | security policy for those loopback addresses. | |||
2.1.4. Stable Addresses | 2.1.4. Stable Addresses | |||
When considering how to assign stable addresses for nodes (either by | When considering how to assign stable addresses for nodes (either by | |||
static configuration or by pre-provisioned DHCPv6 lease | static configuration or by pre-provisioned DHCPv6 lease | |||
Section 2.1.6), it is necessary to take into consideration the | (Section 2.1.6)), it is necessary to take into consideration the | |||
effectiveness of perimeter security in a given environment. | effectiveness of perimeter security in a given environment. | |||
There is a trade-off between ease of operation (where some portions | There is a trade-off between ease of operation (where some portions | |||
of the IPv6 address could be easily recognizable for operational | of the IPv6 address could be easily recognizable for operational | |||
debugging and troubleshooting) versus the risk of trivial scanning | debugging and troubleshooting) versus the risk of trivial scanning | |||
used for reconnaissance. [SCANNING] shows that there are | used for reconnaissance. [SCANNING] shows that there are | |||
scientifically based mechanisms that make scanning for IPv6 reachable | scientifically based mechanisms that make scanning for IPv6-reachable | |||
nodes more feasible than expected; see also [RFC7707]. | nodes more feasible than expected; see [RFC7707]. | |||
Stable addresses also allow easy enforcement of a security policy at | Stable addresses also allow easy enforcement of a security policy at | |||
the perimeter based on IPv6 addresses. E.g., Manufacturer Usage | the perimeter based on IPv6 addresses. For example, Manufacturer | |||
Description (MUD) [RFC8520] is a mechanism where the perimeter | Usage Description (MUD) [RFC8520] is a mechanism where the perimeter | |||
defense can retrieve security policy template based on the type of | defense can retrieve the security policy template based on the type | |||
internal device and apply the right security policy based on the | of internal device and apply the right security policy based on the | |||
device IPv6 address. | device's IPv6 address. | |||
The use of well-known IPv6 addresses (such as ff02::1 for all link- | The use of well-known IPv6 addresses (such as ff02::1 for all link- | |||
local nodes) or the use of commonly repeated addresses could make it | local nodes) or the use of commonly repeated addresses could make it | |||
easy to figure out which devices are name servers, routers, or other | easy to figure out which devices are name servers, routers, or other | |||
critical devices; even a simple traceroute will expose most of the | critical devices; even a simple traceroute will expose most of the | |||
routers on a path. There are many scanning techniques possible and | routers on a path. There are many scanning techniques possible and | |||
operators should not rely on the 'impossible to find because my | operators should not rely on the 'impossible to find because my | |||
address is random' paradigm (a.k.a. "security by obscurity"), even if | address is random' paradigm (a.k.a. "security by obscurity") even if | |||
it is common practice to have the stable addresses randomly | it is common practice to have the stable addresses randomly | |||
distributed across /64 subnets and to always use DNS (as IPv6 | distributed across /64 subnets and to always use DNS (as IPv6 | |||
addresses are hard for human brains to remember). | addresses are hard for human brains to remember). | |||
While in some environments obfuscating addresses could be considered | While, in some environments, obfuscating addresses could be | |||
an added benefit, it should not preclude enforcement of perimeter | considered an added benefit, it should not preclude enforcement of | |||
rules. Stable addresses following some logical allocation scheme may | perimeter rules. Stable addresses following some logical allocation | |||
ease the operation (as simplicity always helps security). | scheme may ease the operation (as simplicity always helps security). | |||
Typical deployments will have a mix of stable and non-stable | Typical deployments will have a mix of stable and non-stable | |||
addresses; the stable addresses being either predictable (e.g., ::25 | addresses; the stable addresses being either predictable (e.g., ::25 | |||
for a mail server) or obfuscated (i.e., appearing as a random 64-bit | for a mail server) or obfuscated (i.e., appearing as a random 64-bit | |||
number). | number). | |||
2.1.5. Temporary Addresses for SLAAC | 2.1.5. Temporary Addresses for SLAAC | |||
Historically, stateless address autoconfiguration (SLAAC) makes up | Historically, Stateless Address Autoconfiguration (SLAAC) makes up | |||
the globally unique IPv6 address based on an automatically generated | the globally unique IPv6 address based on an automatically generated | |||
64-bit interface identifier (IID) based on the EUI-64 MAC address | 64-bit interface identifier (IID) based on the 64-bit Extended Unique | |||
combined with the /64 prefix (received in the Prefix Information | Identifier (EUI-64) Media Access Control (MAC) address combined with | |||
Option (PIO) of the Router Advertisement (RA)). The EUI-64 address | the /64 prefix (received in the Prefix Information Option (PIO) of | |||
is generated from the stable 48-bit MAC address and does not change | the Router Advertisement (RA)). The EUI-64 address is generated from | |||
even if the host moves to another network; this is of course bad for | the stable 48-bit MAC address and does not change even if the host | |||
privacy as a host can be traced from network (home) to network | moves to another network; this is of course bad for privacy, as a | |||
(office or Wi-Fi in hotels). [RFC8064] recommends against the use of | host can be traced from network (home) to network (office or Wi-Fi in | |||
EUI-64 addresses; and it must be noted that most host operating | hotels). [RFC8064] recommends against the use of EUI-64 addresses, | |||
systems do not use EUI-64 addresses anymore and rely on either | and it must be noted that most host operating systems do not use | |||
[RFC8981] or [RFC8064]. | EUI-64 addresses anymore and rely on either [RFC8981] or [RFC8064]. | |||
Randomly generating an interface ID, as described in [RFC8981], is | Randomly generating an interface ID, as described in [RFC8981], is | |||
part of SLAAC with so-called privacy extension addresses and is used | part of SLAAC with so-called privacy extension addresses and is used | |||
to address some privacy concerns. Privacy extension addresses, | to address some privacy concerns. Privacy extension addresses, | |||
a.k.a., temporary addresses may help to mitigate the correlation of | a.k.a. temporary addresses, may help to mitigate the correlation of | |||
activities of a node within the same network and may also reduce the | activities of a node within the same network and may also reduce the | |||
attack exposure window. But using [RFC8981] privacy extension | attack exposure window. But using privacy extension addresses as | |||
addresses might prevent the operator from building host specific | described in [RFC8981] might prevent the operator from building host- | |||
access control lists (ACLs). The [RFC8981] privacy extension | specific access control lists (ACLs). These privacy extension | |||
addresses could also be used to obfuscate some malevolent activities | addresses could also be used to obfuscate some malevolent activities, | |||
and specific user attribution/accountability procedures should be put | and specific user attribution/accountability procedures should be put | |||
in place as described in Section 2.6. | in place, as described in Section 2.6. | |||
[RFC8064] combined with the address generation mechanism of [RFC7217] | [RFC8064] combined with the address generation mechanism of [RFC7217] | |||
specifies another way to generate an address while still keeping the | specifies another way to generate an address while still keeping the | |||
same IID for each network prefix; this allows SLAAC nodes to always | same IID for each network prefix; this allows SLAAC nodes to always | |||
have the same stable IPv6 address on a specific network while having | have the same stable IPv6 address on a specific network while having | |||
different IPv6 addresses on different networks. | different IPv6 addresses on different networks. | |||
In some specific use cases where user accountability is more | In some specific use cases where user accountability is more | |||
important than user privacy, network operators may consider disabling | important than user privacy, network operators may consider disabling | |||
SLAAC and relying only on DHCPv6; but not all operating systems | SLAAC and relying only on DHCPv6; however, not all operating systems | |||
support DHCPv6 so some hosts will not get any IPv6 connectivity. | support DHCPv6, so some hosts will not get any IPv6 connectivity. | |||
Disabling SLAAC and privacy extension addresses can be done for most | Disabling SLAAC and privacy extension addresses can be done for most | |||
operating systems by sending RA messages with a hint to get addresses | operating systems by sending RA messages with a hint to get addresses | |||
via DHCPv6 by setting the M-bit and disabling SLAAC by resetting all | via DHCPv6 by setting the M-bit and disabling SLAAC by resetting all | |||
A-bits in all prefix information options. However, attackers could | A-bits in all PIOs. However, attackers could still find ways to | |||
still find ways to bypass this mechanism if not enforced at the | bypass this mechanism if it is not enforced at the switch/router | |||
switch/router level. | level. | |||
However, in scenarios where anonymity is a strong desire (protecting | However, in scenarios where anonymity is a strong desire (protecting | |||
user privacy is more important than user attribution), privacy | user privacy is more important than user attribution), privacy | |||
extension addresses should be used. When mechanisms recommended by | extension addresses should be used. When mechanisms recommended by | |||
[RFC8064] are available, the stable privacy address is probably a | [RFC8064] are available, the stable privacy address is probably a | |||
good balance between privacy (among different networks) and security/ | good balance between privacy (among different networks) and security/ | |||
user attribution (within a network). | user attribution (within a network). | |||
2.1.6. DHCP Considerations | 2.1.6. DHCP Considerations | |||
Some environments use DHCPv6 to provision addresses and other | Some environments use DHCPv6 to provision addresses and other | |||
parameters in order to ensure auditability and traceability (see | parameters in order to ensure auditability and traceability (see | |||
Section 2.6.1.5 for the limitations of DHCPv6 for auditability). | Section 2.6.1.5 for the limitations of DHCPv6 for auditability). | |||
A main security concern is the ability to detect and counteract rogue | A main security concern is the ability to detect and counteract rogue | |||
DHCP servers (Section 2.3.3). It must be noted that as opposed to | DHCP servers (Section 2.3.3). It must be noted that, as opposed to | |||
DHCPv4, DHCPv6 can lease several IPv6 addresses per client. For | DHCPv4, DHCPv6 can lease several IPv6 addresses per client. For | |||
DHCPv4, the lease is bound to the 'client identifier', which may | DHCPv4, the lease is bound to the 'client identifier', which may | |||
contain a hardware address, or it may contain another type of | contain a hardware address or another type of identifier, such as a | |||
identifier, such as a DNS name. For DHCPv6, the lease is bound to | DNS name. For DHCPv6, the lease is bound to the client DHCP Unique | |||
the client DHCP Unique ID (DUID), which may, or may not, be bound to | Identifier (DUID), which may or may not be bound to the client L2 | |||
the client link-layer address. [RFC7824] describes the privacy | address. [RFC7824] describes the privacy issues associated with the | |||
issues associated with the use of DHCPv6 by Internet users. The | use of DHCPv6 by Internet users. The anonymity profiles [RFC7844] | |||
anonymity profiles [RFC7844] are designed for clients that wish to | are designed for clients that wish to remain anonymous to the visited | |||
remain anonymous to the visited network. [RFC7707] recommends that | network. [RFC7707] recommends that DHCPv6 servers issue addresses | |||
DHCPv6 servers issue addresses randomly from a large pool. | randomly from a large pool. | |||
2.1.7. DNS Considerations | 2.1.7. DNS Considerations | |||
While the security concerns of DNS are not fundamentally different | While the security concerns of DNS are not fundamentally different | |||
between IPv4 and IPv6, there are specific considerations in DNS64 | between IPv4 and IPv6, there are specific considerations in DNS64 | |||
[RFC6147] environments that need to be understood. Specifically, the | [RFC6147] environments that need to be understood. Specifically, the | |||
interactions and the potential of interference with DNSSEC | interactions and the potential of interference with DNSSEC [RFC4033] | |||
([RFC4033]) implementation need to be understood - these are pointed | implementation need to be understood -- these are pointed out in more | |||
out in more detail in Section 2.7.3.2. | detail in Section 2.7.3.2. | |||
2.1.8. Using a /64 per host | 2.1.8. Using a /64 per Host | |||
An interesting approach is using a /64 per host as proposed in | An interesting approach is using a /64 per host, as proposed in | |||
[RFC8273] especially in a shared environment. This allows for easier | [RFC8273], especially in a shared environment. This allows for | |||
user attribution (typically based on the host MAC address) as its /64 | easier user attribution (typically based on the host MAC address), as | |||
prefix is stable even if applications within the host can change | its /64 prefix is stable, even if applications within the host can | |||
their IPv6 address within this /64 prefix. | change their IPv6 address within this /64 prefix. | |||
This can also be useful for the generation of ACLs once individual | This can also be useful for the generation of ACLs once individual | |||
systems (e.g. admin workstations) have their own prefixes. | systems (e.g., admin workstations) have their own prefixes. | |||
2.1.9. Privacy consideration of Addresses | 2.1.9. Privacy Consideration of Addresses | |||
Beside the security aspects of IPv6 addresses, there are also privacy | In addition to the security aspects of IPv6 addresses, there are also | |||
considerations: mainly because they are of global scope and visible | privacy considerations: mainly because they are of global scope and | |||
globally. [RFC7721] goes into more detail on the privacy | visible globally. [RFC7721] goes into more detail on the privacy | |||
considerations for IPv6 addresses by comparing the manually | considerations for IPv6 addresses by comparing the manually | |||
configured IPv6 address, DHCPv6, and SLAAC. | configured IPv6 address, DHCPv6, and SLAAC. | |||
2.2. Extension Headers | 2.2. Extension Headers | |||
Extension headers are an important difference between IPv4 and IPv6. | Extension headers are an important difference between IPv4 and IPv6. | |||
In IPv4-based packets, it's trivial to find the upper-layer protocol | In IPv4-based packets, it's trivial to find the upper-layer protocol | |||
type and protocol header, while in IPv6 it is more complex since the | type and protocol header, while, in IPv6, it is more complex since | |||
extension header chain must be parsed completely (even if not | the extension header chain must be parsed completely (even if not | |||
processed) in order to find the upper-layer protocol header. IANA | processed) in order to find the upper-layer protocol header. IANA | |||
has closed the existing empty "Next Header Types" registry to new | has closed the existing empty "Next Header Types" registry to new | |||
entries and is redirecting its users to a new "IPv6 Extension Header | entries and is redirecting its users to the "IPv6 Extension Header | |||
Types" registry per [RFC7045]. | Types" registry, per [RFC7045]. | |||
Extension headers have also become a very controversial topic since | Extension headers have also become a very controversial topic since | |||
forwarding nodes that discard packets containing extension headers | forwarding nodes that discard packets containing extension headers | |||
are known to cause connectivity failures and deployment problems | are known to cause connectivity failures and deployment problems | |||
[RFC7872]. Understanding the role of various extension headers is | [RFC7872]. Understanding the role of various extension headers is | |||
important and this section enumerates the ones that need careful | important, and this section enumerates the ones that need careful | |||
consideration. | consideration. | |||
A clarification on how intermediate nodes should handle packets with | A clarification on how intermediate nodes should handle packets with | |||
existing or future extension headers is found in [RFC7045]. The | existing or future extension headers is found in [RFC7045]. The | |||
uniform TLV format to be used for defining future extension headers | uniform TLV format to be used for defining future extension headers | |||
is described in [RFC6564]. Sections 5.2 and 5.3 of [RFC8504] provide | is described in [RFC6564]. Sections 5.2 and 5.3 of [RFC8504] provide | |||
more information on the processing of extension headers by IPv6 | more information on the processing of extension headers by IPv6 | |||
nodes. | nodes. | |||
Vendors of filtering solutions and operations personnel responsible | Vendors of filtering solutions and operations personnel responsible | |||
for implementing packet filtering rules should be aware that the | for implementing packet filtering rules should be aware that the | |||
'Next Header' field in an IPv6 header can both point to an IPv6 | 'Next Header' field in an IPv6 header can both point to an IPv6 | |||
extension header or to an upper layer protocol header. This has to | extension header or to an upper-layer protocol header. This has to | |||
be considered when designing the user interface of filtering | be considered when designing the user interface of filtering | |||
solutions or during the creation of filtering rule sets. | solutions or during the creation of filtering rule sets. | |||
There is IETF work in progress regarding filtering rules for those | [IPV6-EH-FILTERING] discusses filtering rules for those extension | |||
extension headers: [I-D.ietf-opsec-ipv6-eh-filtering] for transit | headers at transit routers. | |||
routers. | ||||
2.2.1. Order and Repetition of Extension Headers | 2.2.1. Order and Repetition of Extension Headers | |||
While [RFC8200] recommends the order and the maximum repetition of | While [RFC8200] recommends the order and the maximum repetition of | |||
extension headers, there are still IPv6 implementations, at the time | extension headers, at the time of writing, there are still IPv6 | |||
of writing, which support a non-recommended order of headers (such as | implementations that support an order of headers that is not | |||
ESP before routing) or an illegal repetition of headers (such as | recommended (such as Encapsulating Security Payload (ESP) before | |||
multiple routing headers). The same applies for options contained in | routing) or an illegal repetition of headers (such as multiple | |||
the extension headers (see [I-D.kampanakis-6man-ipv6-eh-parsing]). | routing headers). The same applies for options contained in the | |||
In some cases, it has led to nodes crashing when receiving or | extension headers (see [IPV6-EH-PARSING]). In some cases, it has led | |||
forwarding wrongly formatted packets. | to nodes crashing when receiving or forwarding wrongly formatted | |||
packets. | ||||
A firewall or edge device should be used to enforce the recommended | A firewall or edge device should be used to enforce the recommended | |||
order and the maximum occurrences of extension headers by dropping | order and the maximum occurrences of extension headers by dropping | |||
non-conforming packets. | nonconforming packets. | |||
2.2.2. Hop-by-Hop Options Header | 2.2.2. Hop-by-Hop Options Header | |||
In the previous IPv6 specification [RFC2460], the hop-by-hop options | In the previous IPv6 specification [RFC2460], the hop-by-hop options | |||
header, when present in an IPv6 packet, forced all nodes to inspect | header, when present in an IPv6 packet, forced all nodes to inspect | |||
and possibly process this header. This enabled denial-of-service | and possibly process this header. This enabled denial-of-service | |||
attacks as most, if not all, routers cannot process this type of | attacks as most, if not all, routers cannot process this type of | |||
packet in hardware but have to process these packets in software and | packet in hardware; they have to process these packets in software | |||
hence compete with other software tasks, such as handling the control | and, hence, this task competes with other software tasks, such as | |||
and management plane processing. | handling the control and management plane processing. | |||
Section 4.3 of the current Internet Standard for IPv6, [RFC8200], has | Section 4.3 of [RFC8200], the current Internet Standard for IPv6, has | |||
taken this attack vector into account and made the processing of hop- | taken this attack vector into account and made the processing of hop- | |||
by-hop options headers by intermediate routers explicitly | by-hop options headers by intermediate routers explicitly | |||
configurable. | configurable. | |||
2.2.3. Fragment Header | 2.2.3. Fragment Header | |||
The fragment header is used by the source (and only the source) when | The fragment header is used by the source (and only the source) when | |||
it has to fragment packets. [RFC7112] and section 4.5 of [RFC8200] | it has to fragment packets. [RFC7112] and Section 4.5 of [RFC8200] | |||
explain why it is important that: | explain why it is important that: | |||
Firewall and security devices should drop first fragments that do | * Firewall and security devices should drop first fragments that do | |||
not contain the entire IPv6 header chain (including the transport- | not contain the entire IPv6 header chain (including the transport- | |||
layer header). | layer header). | |||
Destination nodes should discard first fragments that do not | * Destination nodes should discard first fragments that do not | |||
contain the entire IPv6 header chain (including the transport- | contain the entire IPv6 header chain (including the transport- | |||
layer header). | layer header). | |||
If those requirements are not met, stateless filtering could be | If those requirements are not met, stateless filtering could be | |||
bypassed by a hostile party. [RFC6980] applies a stricter rule to | bypassed by a hostile party. [RFC6980] applies a stricter rule to | |||
Neighbor Discovery Protocol (NDP) by enforcing the drop of fragmented | NDP by enforcing the drop of fragmented NDP packets (except for | |||
NDP packets (except for "Certification Path Advertisement" messages | "Certification Path Advertisement" messages, as noted in section | |||
as noted in section Section 2.3.2.1). [RFC7113] describes how the | Section 2.3.2.1). [RFC7113] describes how the RA-Guard function | |||
RA-guard function described in [RFC6105] should behave in the | described in [RFC6105] should behave in the presence of fragmented RA | |||
presence of fragmented RA packets. | packets. | |||
2.2.4. IP Security Extension Header | 2.2.4. IP Security Extension Header | |||
The IPsec [RFC4301] extension headers (AH [RFC4302] and ESP | The IPsec [RFC4301] extension headers (Authentication Header (AH) | |||
[RFC4303]) are required if IPsec is to be utilized for network level | [RFC4302] and ESP [RFC4303]) are required if IPsec is to be utilized | |||
security. Previously, IPv6 mandated implementation of IPsec but | for network-level security. Previously, IPv6 mandated implementation | |||
[RFC6434] updated that recommendation by making support of the IPsec | of IPsec, but [RFC6434] updated that recommendation by making support | |||
architecture [RFC4301] a SHOULD for all IPv6 nodes which is also | of the IPsec architecture [RFC4301] a 'SHOULD' for all IPv6 nodes | |||
retained in the latest IPv6 Nodes Requirement standard [RFC8504]. | that are also retained in the latest IPv6 Nodes Requirement standard | |||
[RFC8504]. | ||||
2.3. Link-Layer Security | 2.3. Link-Layer Security | |||
IPv6 relies heavily on NDP [RFC4861] to perform a variety of link | IPv6 relies heavily on NDP [RFC4861] to perform a variety of link | |||
operations such as discovering other nodes on the link, resolving | operations, such as discovering other nodes on the link, resolving | |||
their link-layer addresses, and finding routers on the link. If not | their link-layer addresses, and finding routers on the link. If not | |||
secured, NDP is vulnerable to various attacks, such as router/ | secured, NDP is vulnerable to various attacks, such as router/ | |||
neighbor message spoofing, redirect attacks, Duplicate Address | neighbor message spoofing, redirect attacks, Duplicate Address | |||
Detection (DAD) DoS attacks, etc. Many of these security threats to | Detection (DAD) DoS attacks, etc. Many of these security threats to | |||
NDP have been documented in IPv6 ND Trust Models and Threats | NDP have been documented in "IPv6 Neighbor Discovery (ND) Trust | |||
[RFC3756] and in [RFC6583]. | Models and Threats" [RFC3756] and in "Operational Neighbor Discovery | |||
Problems" [RFC6583]. | ||||
Most of the issues are only applicable when the attacker is on the | Most of the issues are only applicable when the attacker is on the | |||
same link but NDP also has security issues when the attacker is off- | same link, but NDP also has security issues when the attacker is off | |||
link, see the section below Section 2.3.1. | link; see Section 2.3.1 below. | |||
2.3.1. Neighbor Solicitation Rate-Limiting | 2.3.1. Neighbor Solicitation Rate-Limiting | |||
NDP can be vulnerable to remote denial of service (DoS) attacks; for | NDP can be vulnerable to remote DoS attacks, for example, when a | |||
example, when a router is forced to perform address resolution for a | router is forced to perform address resolution for a large number of | |||
large number of unassigned addresses, i.e., when a prefix is scanned | unassigned addresses, i.e., when a prefix is scanned by an attacker | |||
by an attacker in a fast manner. This can keep new devices from | in a fast manner. This can keep new devices from joining the network | |||
joining the network or render the last-hop router ineffective due to | or render the last-hop router ineffective due to high CPU usage. | |||
high CPU usage. Easy mitigative steps include rate-limiting Neighbor | Easy mitigative steps include rate limiting Neighbor Solicitations, | |||
Solicitations, restricting the amount of state reserved for | restricting the amount of state reserved for unresolved | |||
unresolved solicitations, and clever cache/timer management. | solicitations, and cleverly managing the cache/timer. | |||
[RFC6583] discusses the potential for off-link DoS in detail and | [RFC6583] discusses the potential for off-link DoS in detail and | |||
suggests implementation improvements and operational mitigation | suggests implementation improvements and operational mitigation | |||
techniques that may be used to mitigate or alleviate the impact of | techniques that may be used to mitigate or alleviate the impact of | |||
such attacks. Here are some feasible mitigation options that can be | such attacks. Here are some feasible mitigation options that can be | |||
employed by network operators today: | employed by network operators today: | |||
o Ingress filtering of unused addresses by ACL. These require | * Ingress filtering of unused addresses by ACL. These require | |||
stable configuration of the addresses; for example, allocating the | stable configuration of the addresses, e.g., allocating the | |||
addresses out of a /120 and using a specific ACL to only allow | addresses out of a /120 and using a specific ACL to only allow | |||
traffic to this /120 (of course, the actual hosts are configured | traffic to this /120 (of course, the actual hosts are configured | |||
with a /64 prefix for the link). | with a /64 prefix for the link). | |||
o Tuning of NDP process (where supported), e.g., enforcing limits on | * Tuning of NDP process (where supported), e.g., enforcing limits on | |||
data structures such as the number of neighbor cache entries in | data structures, such as the number of Neighbor Cache entries in | |||
'incomplete' state (e.g., 256 incomplete entries per interface) or | 'incomplete' state (e.g., 256 incomplete entries per interface) or | |||
the rate of NA per interface (e.g., 100 NA per second). | the rate of NA per interface (e.g., 100 NA per second). | |||
o Using a /127 on a point-to-point link, per [RFC6164]. | * Using a /127 on a point-to-point link, per [RFC6164]. | |||
o Using only link-local addresses on links where there are only | * Using only link-local addresses on links where there are only | |||
routers, see [RFC7404] | routers; see [RFC7404]. | |||
2.3.2. Router and Neighbor Advertisements Filtering | 2.3.2. Router and Neighbor Advertisements Filtering | |||
2.3.2.1. Router Advertisement Filtering | 2.3.2.1. Router Advertisement Filtering | |||
Router Advertisement spoofing is a well-known on-link attack vector | Router Advertisement spoofing is a well-known, on-link attack vector | |||
and has been extensively documented. The presence of rogue RAs, | and has been extensively documented. The presence of rogue RAs, | |||
either unintentional or malicious, can cause partial or complete | either unintentional or malicious, can cause partial or complete | |||
failure of operation of hosts on an IPv6 link. For example, a node | failure of operation of hosts on an IPv6 link. For example, a node | |||
can select an incorrect router address which can then be used for an | can select an incorrect router address, which can then be used for an | |||
on-path attack or the node can assume wrong prefixes to be used for | on-path attack, or the node can assume wrong prefixes to be used for | |||
SLAAC. [RFC6104] summarizes the scenarios in which rogue RAs may be | SLAAC. [RFC6104] summarizes the scenarios in which rogue RAs may be | |||
observed and presents a list of possible solutions to the problem. | observed and presents a list of possible solutions to the problem. | |||
[RFC6105] (RA-Guard) describes a solution framework for the rogue RA | [RFC6105] (RA-Guard) describes a solution framework for the rogue RA | |||
problem where network segments are designed around switching devices | problem where network segments are designed around switching devices | |||
that are capable of identifying invalid RAs and blocking them before | that are capable of identifying invalid RAs and blocking them before | |||
the attack packets actually reach the target nodes. | the attack packets actually reach the target nodes. | |||
However, several evasion techniques that circumvent the protection | However, several evasion techniques that circumvent the protection | |||
provided by RA-Guard have surfaced. A key challenge to this | provided by RA-Guard have surfaced. A key challenge to this | |||
mitigation technique is introduced by IPv6 fragmentation. Attackers | mitigation technique is introduced by IPv6 fragmentation. Attackers | |||
can conceal their attack by fragmenting their packets into multiple | can conceal their attack by fragmenting their packets into multiple | |||
fragments such that the switching device that is responsible for | fragments such that the switching device that is responsible for | |||
blocking invalid RAs cannot find all the necessary information to | blocking invalid RAs cannot find all the necessary information to | |||
perform packet filtering of the same packet. [RFC7113] describes | perform packet filtering of the same packet. [RFC7113] describes | |||
such evasion techniques and provides advice to RA-Guard implementers | such evasion techniques and provides advice to RA-Guard implementers | |||
such that the aforementioned evasion vectors can be eliminated. | such that the aforementioned evasion vectors can be eliminated. | |||
Given that the IPv6 Fragmentation Header can be leveraged to | Given that the IPv6 Fragmentation Header can be leveraged to | |||
circumvent some implementations of RA-Guard, [RFC6980] updates | circumvent some implementations of RA-Guard, [RFC6980] updates | |||
[RFC4861] such that use of the IPv6 Fragmentation Header is forbidden | [RFC4861] such that use of the IPv6 Fragmentation Header is forbidden | |||
in all Neighbor Discovery messages except "Certification Path | in all Neighbor Discovery messages, except "Certification Path | |||
Advertisement", thus allowing for simple and effective measures to | Advertisement", thus allowing for simple and effective measures to | |||
counter fragmented NDP attacks. | counter fragmented NDP attacks. | |||
2.3.2.2. Neighbor Advertisement Filtering | 2.3.2.2. Neighbor Advertisement Filtering | |||
The Source Address Validation Improvements (SAVI) working group has | The Source Address Validation Improvements (savi) Working Group has | |||
worked on other ways to mitigate the effects of such attacks. | worked on other ways to mitigate the effects of such attacks. | |||
[RFC7513] helps in creating bindings between a DHCPv4 [RFC2131] | [RFC7513] helps in creating bindings between a source IP address | |||
/DHCPv6 [RFC8415] assigned source IP address and a binding anchor | assigned to DHCPv4 [RFC2131] or DHCPv6 [RFC8415] and a binding anchor | |||
[RFC7039] on a SAVI device. Also, [RFC6620] describes how to glean | [RFC7039] on a SAVI device. Also, [RFC6620] describes how to glean | |||
similar bindings when DHCP is not used. The bindings can be used to | similar bindings when DHCP is not used. The bindings can be used to | |||
filter packets generated on the local link with forged source IP | filter packets generated on the local link with forged source IP | |||
addresses. | addresses. | |||
2.3.2.3. Host Isolation | 2.3.2.3. Host Isolation | |||
Isolating hosts for the NDP traffic can be done by using a /64 per | Isolating hosts for the NDP traffic can be done by using a /64 per | |||
host, refer to Section 2.1.8, as NDP is only relevant within a /64 | host, refer to Section 2.1.8, as NDP is only relevant within a /64 | |||
on-link prefix; 3GPP Section 2.3.4 uses a similar mechanism. | on-link prefix; 3GPP (Section 2.3.4) uses a similar mechanism. | |||
A more drastic technique to prevent all NDP attacks is based on | A more drastic technique to prevent all NDP attacks is based on | |||
isolation of all hosts with specific configurations. In such a | isolation of all hosts with specific configurations. In such a | |||
scenario, hosts (i.e., all nodes that are not routers) are unable to | scenario, hosts (i.e., all nodes that are not routers) are unable to | |||
send data-link layer frames to other hosts, therefore, no host-to- | send data-link layer frames to other hosts; therefore, no host-to- | |||
host attacks can happen. This specific setup can be established on | host attacks can happen. This specific setup can be established on | |||
some switches or Wi-Fi access points. This is not always feasible | some switches or Wi-Fi access points. This is not always feasible | |||
when hosts need to communicate with other hosts in the same subnet, | when hosts need to communicate with other hosts in the same subnet, | |||
e.g., for access to file shares. | e.g., for access to file shares. | |||
2.3.2.4. NDP Recommendations | 2.3.2.4. NDP Recommendations | |||
It is still recommended that RA-Guard and SAVI be employed as a first | It is still recommended that RA-Guard and SAVI be employed as a first | |||
line of defense against common attack vectors including misconfigured | line of defense against common attack vectors, including | |||
hosts. This recommendation also applies when DHCPv6 is used, as RA | misconfigured hosts. This recommendation also applies when DHCPv6 is | |||
messages are used to discover the default router(s) and for on-link | used, as RA messages are used to discover the default router(s) and | |||
prefix determination. This line of defense is most effective when | for on-link prefix determination. This line of defense is most | |||
incomplete fragments are dropped by routers and switches as described | effective when incomplete fragments are dropped by routers and L2 | |||
in Section 2.2.3. The generated log should also be analyzed to | switches, as described in Section 2.2.3. The generated log should | |||
identify and act on violations. | also be analyzed to identify and act on violations. | |||
Network operators should be aware that RA-Guard and SAVI do not work | Network operators should be aware that RA-Guard and SAVI do not work | |||
as expected or could even be harmful in specific network | as expected or could even be harmful in specific network | |||
configurations (notably when there could be multiple routers). | configurations (notably when there could be multiple routers). | |||
Enabling RA-Guard by default in managed networks (e.g., Wi-Fi | Enabling RA-Guard by default in managed networks (e.g., Wi-Fi | |||
networks, enterprise campus networks, etc.) should be strongly | networks, enterprise campus networks, etc.) should be strongly | |||
considered except for specific use cases such as the presence of | considered except for specific use cases, such as in the presence of | |||
homenet devices emitting router advertisements. | homenet devices emitting router advertisements. | |||
2.3.3. Securing DHCP | 2.3.3. Securing DHCP | |||
The Dynamic Host Configuration Protocol for IPv6 (DHCPv6), as | The Dynamic Host Configuration Protocol for IPv6 (DHCPv6), as | |||
described in [RFC8415], enables DHCP servers to pass configuration | described in [RFC8415], enables DHCP servers to pass configuration | |||
parameters, such as IPv6 network addresses and other configuration | parameters, such as IPv6 network addresses and other configuration | |||
information, to IPv6 nodes. DHCP plays an important role in most | information, to IPv6 nodes. DHCP plays an important role in most | |||
large networks by providing robust stateful configuration in the | large networks by providing robust stateful configuration in the | |||
context of automated system provisioning. | context of automated system provisioning. | |||
The two most common threats to DHCP clients come from malicious | The two most common threats to DHCP clients come from malicious | |||
(a.k.a., rogue) or unintentionally misconfigured DHCP servers. in | (a.k.a. rogue) or unintentionally misconfigured DHCP servers. In | |||
these scenarios, a malicious DHCP server is established with the | these scenarios, a malicious DHCP server is established with the | |||
intent of providing incorrect configuration information to the | intent of providing incorrect configuration information to the | |||
clients to cause a denial-of-service attack or to mount on-path | clients to cause a denial-of-service attack or to mount an on-path | |||
attack. While unintentional, a misconfigured DHCP server can have | attack. While unintentional, a misconfigured DHCP server can have | |||
the same impact. Additional threats against DHCP are discussed in | the same impact. Additional threats against DHCP are discussed in | |||
the security considerations section of [RFC8415]. | the security considerations section of [RFC8415]. | |||
DHCPv6-Shield, [RFC7610], specifies a mechanism for protecting | DHCPv6-Shield [RFC7610] specifies a mechanism for protecting | |||
connected DHCPv6 clients against rogue DHCPv6 servers. This | connected DHCPv6 clients against rogue DHCPv6 servers. This | |||
mechanism is based on DHCPv6 packet-filtering at the layer-2 device, | mechanism is based on DHCPv6 packet filtering at the L2 device, i.e., | |||
i.e., the administrator specifies the interfaces connected to DHCPv6 | the administrator specifies the interfaces connected to DHCPv6 | |||
servers. However, extension headers could be leveraged to bypass | servers. However, extension headers could be leveraged to bypass | |||
DHCPv6-Shield unless [RFC7112] is enforced. | DHCPv6-Shield unless [RFC7112] is enforced. | |||
It is recommended to use DHCPv6-Shield and to analyze the | It is recommended to use DHCPv6-Shield and to analyze the | |||
corresponding log messages. | corresponding log messages. | |||
2.3.4. 3GPP Link-Layer Security | 2.3.4. 3GPP Link-Layer Security | |||
The 3GPP link is a point-to-point like link that has no link-layer | The 3GPP link is a point-to-point-like link that has no link-layer | |||
address. This implies there can only be one end host (the mobile | address. This implies there can only be one end host (the mobile | |||
hand-set) and the first-hop router (i.e., a GPRS Gateway Support Node | handset) and the first-hop router (i.e., a Gateway GPRS Support Node | |||
(GGSN) or a Packet Gateway (PGW)) on that link. The GGSN/PGW never | (GGSN) or a Packet Data Network Gateway (PGW)) on that link. The | |||
configures a non link-local address on the link using the advertised | GGSN/PGW never configures a non-link-local address on the link using | |||
/64 prefix on it; see Section 2.1.8. The advertised prefix must not | the advertised /64 prefix on it; see Section 2.1.8. The advertised | |||
be used for on-link determination. There is no need for address | prefix must not be used for on-link determination. There is no need | |||
resolution on the 3GPP link, since there are no link-layer addresses. | for address resolution on the 3GPP link, since there are no link- | |||
Furthermore, the GGSN/PGW assigns a prefix that is unique within each | layer addresses. Furthermore, the GGSN/PGW assigns a prefix that is | |||
3GPP link that uses IPv6 stateless address autoconfiguration. This | unique within each 3GPP link that uses IPv6 Stateless Address | |||
avoids the necessity to perform DAD at the network level for every | Autoconfiguration. This avoids the necessity to perform DAD at the | |||
address generated by the mobile host. The GGSN/PGW always provides | network level for every address generated by the mobile host. The | |||
an IID to the cellular host for the purpose of configuring the link- | GGSN/PGW always provides an IID to the cellular host for the purpose | |||
local address and ensures the uniqueness of the IID on the link | of configuring the link-local address and ensures the uniqueness of | |||
(i.e., no collisions between its own link-local address and the | the IID on the link (i.e., no collisions between its own link-local | |||
mobile host's address). | address and the mobile host's address). | |||
The 3GPP link model itself mitigates most of the known NDP-related | The 3GPP link model itself mitigates most of the known NDP-related | |||
Denial-of-Service attacks. In practice, the GGSN/PGW only needs to | DoS attacks. In practice, the GGSN/PGW only needs to route all | |||
route all traffic to the mobile host that falls under the prefix | traffic to the mobile host that falls under the prefix assigned to | |||
assigned to it. As there is also a single host on the 3GPP link, | it. As there is also a single host on the 3GPP link, there is no | |||
there is no need to defend that IPv6 address. | need to defend that IPv6 address. | |||
See Section 5 of [RFC6459] for a more detailed discussion on the 3GPP | See Section 5 of [RFC6459] for a more detailed discussion on the 3GPP | |||
link model, NDP, and the address configuration details. In some | link model, NDP, and the address configuration details. In some | |||
mobile networks, DHCPv6 and DHCP-PD are also used. | mobile networks, DHCPv6 and DHCP Prefix Delegation (DHCP-PD) are also | |||
used. | ||||
2.3.5. Impact of Multicast Traffic | 2.3.5. Impact of Multicast Traffic | |||
IPv6 uses multicast extensively for signaling messages on the local | IPv6 uses multicast extensively for signaling messages on the local | |||
link to avoid broadcast messages for on-the-wire efficiency. | link to avoid broadcast messages for on-the-wire efficiency. | |||
The use of multicast has some side effects on wireless networks, such | The use of multicast has some side effects on wireless networks, such | |||
as a negative impact on battery life of smartphones and other | as a negative impact on battery life of smartphones and other | |||
battery-operated devices that are connected to such networks. | battery-operated devices that are connected to such networks. | |||
[RFC7772] and [RFC6775] (for specific wireless networks) discuss | [RFC7772] and [RFC6775] (for specific wireless networks) discuss | |||
methods to rate-limit RAs and other ND messages on wireless networks | methods to rate-limit RAs and other ND messages on wireless networks | |||
in order to address this issue. | in order to address this issue. | |||
The use of link-layer multicast addresses (e.g., ff02::1 for the all | The use of link-layer multicast addresses (e.g., ff02::1 for the all | |||
nodes link-local multicast address) could also be misused for an | nodes link-local multicast address) could also be misused for an | |||
amplification attack. Imagine, a hostile node sending an ICMPv6 | amplification attack. Imagine a hostile node sending an ICMPv6 | |||
ECHO_REQUEST to ff02::1 with a spoofed source address, then, all | ECHO_REQUEST to ff02::1 with a spoofed source address, then all link- | |||
link-local nodes will reply with ICMPv6 ECHO_REPLY packets to the | local nodes will reply with ICMPv6 ECHO_REPLY packets to the source | |||
source address. This could be a DoS attack for the address owner. | address. This could be a DoS attack for the address owner. This | |||
This attack is purely local to the layer-2 network as packets with a | attack is purely local to the L2 network, as packets with a link- | |||
link-local destination are never forwarded by an IPv6 router. | local destination are never forwarded by an IPv6 router. | |||
This is the reason why large Wi-Fi network deployments often limit | This is the reason why large Wi-Fi network deployments often limit | |||
the use of link-layer multicast either from or to the uplink of the | the use of link-layer multicast, either from or to the uplink of the | |||
Wi-Fi access point, i.e., Wi-Fi stations are prevented to send link- | Wi-Fi access point, i.e., Wi-Fi stations are prevented to send link- | |||
local multicast to their direct neighboring Wi-Fi stations; this | local multicast to their direct neighboring Wi-Fi stations; this | |||
policy also blocks service discovery via mDNS ([RFC6762]) and LLMNR | policy also blocks service discovery via Multicast DNS (mDNS) | |||
([RFC4795]). | [RFC6762] and Link-Local Multicast Name Resolution (LLMNR) [RFC4795]. | |||
2.3.6. SeND and CGA | 2.3.6. SEND and CGA | |||
SEcure Neighbor Discovery (SeND), as described in [RFC3971], is a | SEcure Neighbor Discovery (SEND), as described in [RFC3971], is a | |||
mechanism that was designed to secure ND messages. This approach | mechanism that was designed to secure ND messages. This approach | |||
involves the use of new NDP options to carry public key-based | involves the use of new NDP options to carry public-key-based | |||
signatures. Cryptographically Generated Addresses (CGA), as | signatures. Cryptographically Generated Addresses (CGA), as | |||
described in [RFC3972], are used to ensure that the sender of a | described in [RFC3972], are used to ensure that the sender of a | |||
Neighbor Discovery message is the actual "owner" of the claimed IPv6 | Neighbor Discovery message is the actual "owner" of the claimed IPv6 | |||
address. A new NDP option, the CGA option, was introduced and is | address. A new NDP option, the CGA option, was introduced and is | |||
used to carry the public key and associated parameters. Another NDP | used to carry the public key and associated parameters. Another NDP | |||
option, the RSA Signature option, is used to protect all messages | option, the RSA Signature option, is used to protect all messages | |||
relating to neighbor and Router discovery. | relating to neighbor and router discovery. | |||
SeND protects against: | SEND protects against: | |||
o Neighbor Solicitation/Advertisement Spoofing | * Neighbor Solicitation/Advertisement Spoofing | |||
o Neighbor Unreachability Detection Failure | * Neighbor Unreachability Detection Failure | |||
o Duplicate Address Detection DoS Attack | * Duplicate Address Detection DoS Attack | |||
o Router Solicitation and Advertisement Attacks | ||||
o Replay Attacks | * Router Solicitation and Advertisement Attacks | |||
o Neighbor Discovery DoS Attacks | * Replay Attacks | |||
SeND does NOT: | * Neighbor Discovery DoS Attacks | |||
o Protect statically configured addresses | SEND does NOT: | |||
o Protect addresses configured using fixed identifiers (i.e., EUI- | * protect statically configured addresses | |||
* protect addresses configured using fixed identifiers (i.e., EUI- | ||||
64) | 64) | |||
o Provide confidentiality for NDP communications | * provide confidentiality for NDP communications | |||
o Compensate for an unsecured link - SeND does not require that the | * compensate for an unsecured link -- SEND does not require that the | |||
addresses on the link and Neighbor Advertisements correspond. | addresses on the link and Neighbor Advertisements correspond | |||
However, at this time and over a decade since their original | However, at this time and over a decade since their original | |||
specifications, CGA and SeND do not have support from widely deployed | specifications, CGA and SEND do not have support from widely deployed | |||
IPv6 devices; hence, their usefulness is limited and should not be | IPv6 devices; hence, their usefulness is limited and should not be | |||
relied upon. | relied upon. | |||
2.4. Control Plane Security | 2.4. Control Plane Security | |||
[RFC6192] defines the router control plane and provides detailed | [RFC6192] defines the router control plane and provides detailed | |||
guidance to secure it for IPv4 and IPv6 networks. This definition is | guidance to secure it for IPv4 and IPv6 networks. This definition is | |||
repeated here for the reader's convenience. Please note that the | repeated here for the reader's convenience. Please note that the | |||
definition is completely protocol-version agnostic (most of this | definition is completely protocol-version agnostic (most of this | |||
section applies to IPv6 in the same way as to IPv4). | section applies to IPv6 in the same way as to IPv4). | |||
Preamble: IPv6 control plane security is vastly congruent with its | | Preamble: IPv6 control plane security is vastly congruent with | |||
IPv4 equivalent with the exception of OSPFv3 authentication | | its IPv4 equivalent, with the exception of OSPFv3 | |||
(Section 2.4.1) and some packet exceptions (see Section 2.4.3) that | | authentication (Section 2.4.1) and some packet exceptions (see | |||
are specific to IPv6. | | Section 2.4.3) that are specific to IPv6. | |||
Modern router architecture design maintains a strict separation of | Modern router architecture design maintains a strict separation of | |||
forwarding and router control plane hardware and software. The | forwarding and router control plane hardware and software. The | |||
router control plane supports routing and management functions. It | router control plane supports routing and management functions. It | |||
is generally described as the router architecture hardware and | is generally described as the router architecture hardware and | |||
software components for handling packets destined to the device | software components for handling packets destined to the device | |||
itself, as well as, building and sending packets originated locally | itself as well as building and sending packets originated locally on | |||
on the device. The forwarding plane is typically described as the | the device. The forwarding plane is typically described as the | |||
router architecture hardware and software components responsible for | router architecture hardware and software components responsible for | |||
receiving a packet on an incoming interface, performing a lookup to | receiving a packet on an incoming interface, performing a lookup to | |||
identify the packet's IP next hop and best outgoing interface towards | identify the packet's IP next hop and best outgoing interface towards | |||
the destination, and forwarding the packet through the appropriate | the destination, and forwarding the packet through the appropriate | |||
outgoing interface. | outgoing interface. | |||
While the forwarding plane is usually implemented in high-speed | While the forwarding plane is usually implemented in high-speed | |||
hardware, the control plane is implemented by a generic processor | hardware, the control plane is implemented by a generic processor | |||
(referred to as the route processor (RP)) and cannot process packets | (referred to as the routing processor (RP)) and cannot process | |||
at a high rate. Hence, this processor can be attacked by flooding | packets at a high rate. Hence, this processor can be attacked by | |||
its input queue with more packets than it can process. The control | flooding its input queue with more packets than it can process. The | |||
plane processor is then unable to process valid control packets and | control plane processor is then unable to process valid control | |||
the router can lose IGP or BGP adjacencies which can cause a severe | packets and the router can lose IGP or BGP adjacencies, which can | |||
network disruption. | cause a severe network disruption. | |||
[RFC6192] provides detailed guidance to protect the router control | [RFC6192] provides detailed guidance to protect the router control | |||
plane in IPv6 networks. The rest of this section contains simplified | plane in IPv6 networks. The rest of this section contains simplified | |||
guidance. | guidance. | |||
The mitigation techniques are: | The mitigation techniques are: | |||
o To drop non-legit or potentially harmful control packets before | * to drop illegitimate or potentially harmful control packets before | |||
they are queued to the RP (this can be done by a forwarding plane | they are queued to the RP (this can be done by a forwarding plane | |||
ACL) and | ACL) and | |||
o To rate-limit the remaining packets to a rate that the RP can | * to rate-limit the remaining packets to a rate that the RP can | |||
sustain. Protocol-specific protection should also be done (for | sustain. Protocol-specific protection should also be done (for | |||
example, a spoofed OSPFv3 packet could trigger the execution of | example, a spoofed OSPFv3 packet could trigger the execution of | |||
the Dijkstra algorithm, therefore, the frequency of Dijsktra | the Dijkstra algorithm; therefore, the frequency of Dijkstra | |||
calculations should be also rate-limited). | calculations should also be rate limited). | |||
This section will consider several classes of control packets: | This section will consider several classes of control packets: | |||
o Control protocols: routing protocols: such as OSPFv3, BGP, RIPng, | Control protocols: | |||
and by extension NDP and ICMP | routing protocols, such as OSPFv3, BGP, Routing Information | |||
Protocol Next Generation (RIPng), and, by extension, NDP and ICMP | ||||
o Management protocols: SSH, SNMP, NETCONF, RESTCONF, IPFIX, etc. | Management protocols: | |||
Secure Shell (SSH), SNMP, Network Configuration Protocol | ||||
(NETCONF), RESTCONF, IP Flow Information Export (IPFIX), etc. | ||||
o Packet exceptions: normal data packets that require a specific | Packet exceptions: | |||
processing such as generating a packet-too-big ICMP message or | normal data packets that require a specific processing, such as | |||
processing the hop-by-hop options header. | generating a packet-too-big ICMP message or processing the hop-by- | |||
hop options header | ||||
2.4.1. Control Protocols | 2.4.1. Control Protocols | |||
This class includes OSPFv3, BGP, NDP, ICMP. | This class includes OSPFv3, BGP, NDP, and ICMP. | |||
An ingress ACL to be applied on all the router interfaces for packets | An ingress ACL to be applied on all the router interfaces for packets | |||
to be processed by the RP should be configured to: | to be processed by the RP should be configured to: | |||
o drop OSPFv3 (identified by Next-Header being 89) and RIPng | * drop OSPFv3 (identified by Next-Header being 89) and RIPng | |||
(identified by UDP port 521) packets from a non link-local address | (identified by UDP port 521) packets from a non-link-local address | |||
(except for OSPFv3 virtual links) | (except for OSPFv3 virtual links) | |||
o allow BGP (identified by TCP port 179) packets from all BGP | * allow BGP (identified by TCP port 179) packets from all BGP | |||
neighbors and drop the others | neighbors and drop the others | |||
o allow all ICMP packets (transit and to the router interfaces) | * allow all ICMP packets (transit and to the router interfaces) | |||
Note: dropping OSPFv3 packets which are authenticated by IPsec could | | Note: Dropping OSPFv3 packets that are authenticated by IPsec | |||
be impossible on some routers that are unable to parse the IPsec ESP | | could be impossible on some routers that are unable to parse | |||
or AH extension headers during ACL classification. | | the IPsec ESP or AH extension headers during ACL | |||
| classification. | ||||
Rate-limiting of the valid packets should be done, see also [RFC8541] | Rate-limiting of the valid packets should be done; see [RFC8541] for | |||
for a side benefit for OSPv3. The exact configuration will depend on | a side benefit for OSPv3. The exact configuration will depend on the | |||
the available resources of the router (CPU, TCAM, ...). | available resources of the router (CPU, Ternary Content-Addressable | |||
Memory (TCAM), etc.). | ||||
2.4.2. Management Protocols | 2.4.2. Management Protocols | |||
This class includes: SSH, SNMP, RESTCONF, NETCONF, gRPC, syslog, NTP, | This class includes SSH, SNMP, RESTCONF, NETCONF, gRPC Remote | |||
etc. | Procedure Calls (gRPC), syslog, NTP, etc. | |||
An ingress ACL to be applied on all the router interfaces (or at | An ingress ACL to be applied on all the router interfaces (or at | |||
ingress interfaces of the security perimeter or by using specific | ingress interfaces of the security perimeter or by using specific | |||
features of the platform) should be configured for packets destined | features of the platform) should be configured for packets destined | |||
to the RP such as: | to the RP, such as: | |||
o Drop packets destined to the routers except those belonging to | * drop packets destined to the routers, except those belonging to | |||
protocols which are used (for example, permit TCP 22 and drop all | protocols that are used (for example, permit TCP 22 and drop all | |||
others when only SSH is used); | others when only SSH is used) and | |||
o Drop packets where the source does not match the security policy, | * drop packets where the source does not match the security policy | |||
for example, if SSH connections should only be originated from the | (for example, if SSH connections should only be originated from | |||
Network Operation Center (NOC), then the ACL should permit TCP | the Network Operation Center (NOC), then the ACL should permit TCP | |||
port 22 packets only from the NOC prefix. | port 22 packets only from the NOC prefix). | |||
Rate-limiting of valid packets should be done. The exact | Rate-limiting of valid packets should be done. The exact | |||
configuration will depend on the available router resources. | configuration will depend on the available router resources. | |||
2.4.3. Packet Exceptions | 2.4.3. Packet Exceptions | |||
This class covers multiple cases where a data plane packet is punted | This class covers multiple cases where a data plane packet is punted | |||
to the route processor because it requires specific processing: | to the route processor because it requires specific processing: | |||
o generation of an ICMP packet-too-big message when a data plane | * generation of an ICMP packet-too-big message when a data plane | |||
packet cannot be forwarded because it is too large (required to | packet cannot be forwarded because it is too large (required to | |||
discover the Path MTU); | discover the Path MTU); | |||
o generation of an ICMP hop-limit-expired message when a data plane | * generation of an ICMP hop-limit-expired message when a data plane | |||
packet cannot be forwarded because its hop-limit field has reached | packet cannot be forwarded because its hop-limit field has reached | |||
0 (also used by the traceroute utility); | 0 (also used by the traceroute utility); | |||
o generation of an ICMP destination-unreachable message when a data | * generation of an ICMP destination-unreachable message when a data | |||
plane packet cannot be forwarded for any reason; | plane packet cannot be forwarded for any reason; | |||
o processing of the hop-by-hop options header, new implementations | * processing of the hop-by-hop options header; new implementations | |||
follow section 4.3 of [RFC8200] where this processing is optional; | follow Section 4.3 of [RFC8200] where this processing is optional; | |||
or | ||||
o or more specific to some router implementation: an oversized | * more specific to some router implementations, an oversized | |||
extension header chain which cannot be processed by the hardware | extension header chain that cannot be processed by the hardware | |||
and force the packet to be punted to the RP. | and cannot force the packet to be punted to the RP. | |||
On some routers, not everything can be done by the specialized data | On some routers, not everything can be done by the specialized data | |||
plane hardware which requires some packets to be 'punted' to the | plane hardware that requires some packets to be 'punted' to the | |||
generic RP. This could include for example the processing of a long | generic RP. This could include, for example, the processing of a | |||
extension header chain in order to apply an ACL based on layer-4 | long extension header chain in order to apply an ACL based on Layer 4 | |||
information. [RFC6980] and more generally [RFC7112] highlight the | information. [RFC6980] and more generally [RFC7112] highlight the | |||
security implications of oversized extension header chains on routers | security implications of oversized extension header chains on routers | |||
and updates the original IPv6 specifications, [RFC2460], such that | and update the original IPv6 specifications [RFC2460] such that the | |||
the first fragment of a packet is required to contain the entire IPv6 | first fragment of a packet is required to contain the entire IPv6 | |||
header chain. Those changes are incorporated in the IPv6 standard | header chain. Those changes are incorporated in the IPv6 standard | |||
[RFC8200] | [RFC8200]. | |||
An ingress ACL cannot mitigate a control plane attack using these | An ingress ACL cannot mitigate a control plane attack using these | |||
packet exceptions. The only protection for the RP is to rate-limit | packet exceptions. The only protection for the RP is to rate-limit | |||
those packet exceptions that are forwarded to the RP, this means that | those packet exceptions that are forwarded to the RP. This means | |||
some data plane packets will be dropped without an ICMP message sent | that some data plane packets will be dropped without an ICMP message | |||
to the source which may delay Path MTU discovery and cause drops. | sent to the source, which may delay Path MTU Discovery and cause | |||
drops. | ||||
In addition to limiting the rate of data plane packets queued to the | In addition to limiting the rate of data plane packets queued to the | |||
RP, it is also important to rate-limit the generation of ICMP | RP, it is also important to rate-limit the generation of ICMP | |||
messages. This is important both to preserve RP resources and also | messages. This is important both to preserve RP resources and also | |||
to prevent an amplification attack using the router as a reflector. | to prevent an amplification attack using the router as a reflector. | |||
It is worth noting that some platforms implement this rate-limiting | It is worth noting that some platforms implement this rate-limiting | |||
in hardware. Of course, a consequence of not generating an ICMP | in hardware. Of course, a consequence of not generating an ICMP | |||
message will break some IPv6 mechanisms such as Path MTU discovery or | message will break some IPv6 mechanisms, such as Path MTU Discovery | |||
a simple traceroute. | or a simple traceroute. | |||
2.5. Routing Security | 2.5. Routing Security | |||
Preamble: IPv6 routing security is congruent with IPv4 routing | | Preamble: IPv6 routing security is congruent with IPv4 routing | |||
security with the exception of OSPv3 neighbor authentication (see | | security, with the exception of OSPv3 neighbor authentication | |||
Section 2.5.2). | | (see Section 2.5.2). | |||
Routing security in general can be broadly divided into three | Routing security in general can be broadly divided into three | |||
sections: | sections: | |||
1. Authenticating neighbors/peers | 1. authenticating neighbors/peers | |||
2. Securing routing updates between peers | 2. securing routing updates between peers | |||
3. Route filtering | ||||
3. route filtering | ||||
[RFC5082] is also applicable to IPv6 and can ensure that routing | [RFC5082] is also applicable to IPv6 and can ensure that routing | |||
protocol packets are coming from the local network; it must also be | protocol packets are coming from the local network; it must also be | |||
noted that in IPv6 all interior gateway protocols use link-local | noted that in IPv6 all interior gateway protocols use link-local | |||
addresses. | addresses. | |||
As for IPv4, it is recommended to enable a routing protocol only on | As for IPv4, it is recommended to enable a routing protocol only on | |||
interfaces where it is required. | interfaces where it is required. | |||
2.5.1. BGP Security | 2.5.1. BGP Security | |||
As BGP is identical for IPv4 and IPv6 and as [RFC7454] covers all the | As BGP is identical for IPv4 and IPv6 and as [RFC7454] covers all the | |||
security aspects for BGP in detail, [RFC7454] is also applicable to | security aspects for BGP in detail, [RFC7454] is also applicable to | |||
IPv6. | IPv6. | |||
2.5.2. Authenticating OSPFv3 Neighbors | 2.5.2. Authenticating OSPFv3 Neighbors | |||
OSPFv3 can rely on IPsec to fulfill the authentication function. | OSPFv3 can rely on IPsec to fulfill the authentication function. | |||
Operators should note that IPsec support is not standard on all | Operators should note that IPsec support is not standard on all | |||
routing platforms. In some cases, this requires specialized hardware | routing platforms. In some cases, this requires specialized hardware | |||
that offloads crypto over to dedicated ASICs or enhanced software | that offloads crypto over to dedicated Application-Specific | |||
images (both of which often come with added financial cost) to | Integrated Circuits (ASICs) or enhanced software images (both of | |||
provide such functionality. An added detail is to determine whether | which often come with added financial cost) to provide such | |||
OSPFv3 IPsec implementations use AH or ESP-Null for integrity | functionality. An added detail is to determine whether OSPFv3 IPsec | |||
protection. In early implementations, all OSPFv3 IPsec | implementations use AH or ESP-NULL for integrity protection. In | |||
configurations relied on AH since the details weren't specified in | early implementations, all OSPFv3 IPsec configurations relied on AH | |||
[RFC5340]. However, the document which specifically describes how | since the details weren't specified in [RFC5340]. However, the | |||
IPsec should be implemented for OSPFv3 [RFC4552] specifically states | document that specifically describes how IPsec should be implemented | |||
that "ESP-Null MUST and AH MAY be implemented" since it follows the | for OSPFv3 [RFC4552] states that "implementations MUST support ESP[- | |||
overall IPsec standards wording. OSPFv3 can also use normal ESP to | NULL] and MAY support AH" since it follows the overall IPsec | |||
encrypt the OSPFv3 payload to provide confidentiality for the routing | standards wording. OSPFv3 can also use normal ESP to encrypt the | |||
OSPFv3 payload to provide confidentiality for the routing | ||||
information. | information. | |||
[RFC7166] changes OSPFv3 reliance on IPsec by appending an | [RFC7166] changes OSPFv3 reliance on IPsec by appending an | |||
authentication trailer to the end of the OSPFv3 packets; it does not | authentication trailer to the end of the OSPFv3 packets. It does not | |||
specifically authenticate the specific originator of an OSPFv3 | authenticate the specific originator of an OSPFv3 packet; rather, it | |||
packet; rather, it allows a router to confirm that the packet has | allows a router to confirm that the packet has been issued by a | |||
been issued by a router that had access to the shared authentication | router that had access to the shared authentication key. | |||
key. | ||||
With all authentication mechanisms, operators should confirm that | With all authentication mechanisms, operators should confirm that | |||
implementations can support re-keying mechanisms that do not cause | implementations can support rekeying mechanisms that do not cause | |||
outages. There have been instances where any re-keying causes | outages. There have been instances where any rekeying causes | |||
outages and therefore, the tradeoff between utilizing this | outages; therefore, the trade-off between utilizing this | |||
functionality needs to be weighed against the protection it provides. | functionality needs to be weighed against the protection it provides. | |||
[RFC4107] documents some guidelines for crypto keys management. | [RFC4107] documents some guidelines for crypto keys management. | |||
2.5.3. Securing Routing Updates | 2.5.3. Securing Routing Updates | |||
IPv6 initially mandated the provisioning of IPsec capability in all | IPv6 initially mandated the provisioning of IPsec capability in all | |||
nodes. However, in the updated IPv6 Nodes Requirement standard | nodes. However, in the updated IPv6 Nodes Requirement standard | |||
[RFC8504], IPsec is a 'SHOULD' and not a 'MUST' implement. | [RFC8504], IPsec is a 'SHOULD' and not a 'MUST' implementation. | |||
Theoretically, it is possible that all communication between two IPv6 | Theoretically, it is possible that all communication between two IPv6 | |||
nodes, especially routers exchanging routing information, is | nodes, especially routers exchanging routing information, is | |||
encrypted using IPsec. In practice however, deploying IPsec is not | encrypted using IPsec. However, in practice, deploying IPsec is not | |||
always feasible given hardware and software limitations of the | always feasible given hardware and software limitations of the | |||
various platforms deployed. | various platforms deployed. | |||
Many routing protocols support the use of cryptography to protect the | Many routing protocols support the use of cryptography to protect the | |||
routing updates, the use of this protection is recommended; [RFC8177] | routing updates; the use of this protection is recommended. | |||
is a YANG data model for key chains that includes re-keying | [RFC8177] is a YANG data model for key chains that includes rekeying | |||
functionality. | functionality. | |||
2.5.4. Route Filtering | 2.5.4. Route Filtering | |||
Route filtering policies will be different depending on whether they | Route filtering policies will be different depending on whether they | |||
pertain to edge route filtering vs. internal route filtering. At a | pertain to edge route filtering or internal route filtering. At a | |||
minimum, IPv6 routing policy as it pertains to routing between | minimum, the IPv6 routing policy, as it pertains to routing between | |||
different administrative domains should aim to maintain parity with | different administrative domains, should aim to maintain parity with | |||
IPv4 from a policy perspective, e.g., | IPv4 from a policy perspective, for example: | |||
o Filter internal-use, non-globally routable IPv6 addresses at the | * filter internal-use IPv6 addresses that are not globally routable | |||
perimeter; | at the perimeter; | |||
o Discard routes for bogon [CYMRU] and reserved space (see | * discard routes for bogon [CYMRU] and reserved space (see | |||
[RFC8190]); | [RFC8190]); and | |||
o Configure ingress route filters that validate route origin, prefix | * configure ingress route filters that validate route origin, prefix | |||
ownership, etc. through the use of various routing databases, | ownership, etc., through the use of various routing databases, | |||
e.g., [RADB]. [RFC8210] formally validates the origin ASs of BGP | e.g., [RADB]. [RFC8210] formally validates the origin Autonomous | |||
announcements. | Systems (ASes) of BGP announcements. | |||
Some good guidance can be found at [RFC7454]. | Some good guidance can be found at [RFC7454]. | |||
A valid routing table can also be used to apply network ingress | A valid routing table can also be used to apply network ingress | |||
filtering (see [RFC2827]). | filtering (see [RFC2827]). | |||
2.6. Logging/Monitoring | 2.6. Logging/Monitoring | |||
In order to perform forensic research in the cases of a security | In order to perform forensic research in the cases of a security | |||
incident or detecting abnormal behavior, network operators should log | incident or detecting abnormal behavior, network operators should log | |||
multiple pieces of information. In some cases, this requires a | multiple pieces of information. In some cases, this requires a | |||
frequent poll of devices via a Network Management Station. | frequent poll of devices via a Network Management Station. | |||
This logging should include, but not limited to: | This logging should include but is not limited to: | |||
o logs of all applications using the network (including user space | * logs of all applications using the network (including user space | |||
and kernel space) when available (for example web servers that the | and kernel space) when available (for example, web servers that | |||
network operator manages); | the network operator manages); | |||
o data from IP Flow Information Export [RFC7011] also known as | * data from IP Flow Information Export [RFC7011], also known as | |||
IPFIX; | IPFIX; | |||
o data from various SNMP MIBs [RFC4293] or YANG data via RESTCONF | * data from various SNMP MIBs [RFC4293] or YANG data via RESTCONF | |||
[RFC8040] or NETCONF [RFC6241]; | [RFC8040] or NETCONF [RFC6241]; | |||
o historical data of Neighbor Cache entries; | * historical data of Neighbor Cache entries; | |||
o stateful DHCPv6 [RFC8415] lease cache, especially when a relay | * stateful DHCPv6 [RFC8415] lease cache, especially when a relay | |||
agent [RFC6221] is used; | agent [RFC6221] is used; | |||
o Source Address Validation Improvement (SAVI) [RFC7039] events, | * Source Address Validation Improvement (SAVI) [RFC7039] events, | |||
especially the binding of an IPv6 address to a MAC address and a | especially the binding of an IPv6 address to a MAC address and a | |||
specific switch or router interface; | specific switch or router interface; | |||
o firewall ACL log; | * firewall ACL logs; | |||
o authentication server log; | * authentication server logs; and | |||
o RADIUS [RFC2866] accounting records. | * RADIUS [RFC2866] accounting records. | |||
Please note that there are privacy issues or regulations related to | Please note that there are privacy issues or regulations related to | |||
how these logs are collected, stored, used, and safely discarded. | how these logs are collected, stored, used, and safely discarded. | |||
Operators are urged to check their country legislation (e.g., General | Operators are urged to check their country legislation (e.g., General | |||
Data Protection Regulation GDPR [GDPR] in the European Union). | Data Protection Regulation [GDPR] in the European Union). | |||
All those pieces of information can be used for: | All those pieces of information can be used for: | |||
o forensic (Section 2.6.2.1) investigations such as who did what and | * forensic (Section 2.6.2.1) investigations: who did what and when? | |||
when? | ||||
o correlation (Section 2.6.2.3): which IP addresses were used by a | * correlation (Section 2.6.2.3): which IP addresses were used by a | |||
specific node (assuming the use of privacy extensions addresses | specific node (assuming the use of privacy extensions addresses | |||
[RFC8981]) | [RFC8981])? | |||
o inventory (Section 2.6.2.2): which IPv6 nodes are on my network? | * inventory (Section 2.6.2.2): which IPv6 nodes are on my network? | |||
o abnormal behavior detection (Section 2.6.2.4): unusual traffic | * abnormal behavior detection (Section 2.6.2.4): unusual traffic | |||
patterns are often the symptoms of an abnormal behavior which is | patterns are often the symptoms of an abnormal behavior, which is | |||
in turn a potential attack (denial-of-service, network scan, a | in turn a potential attack (denial of service, network scan, a | |||
node being part of a botnet, etc.) | node being part of a botnet, etc.). | |||
2.6.1. Data Sources | 2.6.1. Data Sources | |||
This section lists the most important sources of data that are useful | This section lists the most important sources of data that are useful | |||
for operational security. | for operational security. | |||
2.6.1.1. Application Logs | 2.6.1.1. Application Logs | |||
Those logs are usually text files where the remote IPv6 address is | Those logs are usually text files where the remote IPv6 address is | |||
stored in clear text (not binary). This can complicate the | stored in cleartext (not binary). This can complicate the processing | |||
processing since one IPv6 address, for example 2001:db8::1 can be | since one IPv6 address, for example, 2001:db8::1, can be written in | |||
written in multiple ways, such as: | multiple ways, such as: | |||
o 2001:DB8::1 (in uppercase) | * 2001:DB8::1 (in uppercase), | |||
o 2001:0db8::0001 (with leading 0) | * 2001:0db8::0001 (with leading 0), and | |||
o and many other ways including the reverse DNS mapping into a FQDN | * many other ways, including the reverse DNS mapping into a Fully | |||
(which should not be trusted). | Qualified Domain Name (FQDN) (which should not be trusted). | |||
[RFC5952] explains this problem in detail and recommends the use of a | [RFC5952] explains this problem in detail and recommends the use of a | |||
single canonical format. This document recommends the use of | single canonical format. This document recommends the use of | |||
canonical format [RFC5952] for IPv6 addresses in all possible cases. | canonical format [RFC5952] for IPv6 addresses in all possible cases. | |||
If the existing application cannot log using the canonical format, | If the existing application cannot log using the canonical format, | |||
then it is recommended to use an external post-processing program in | then it is recommended to use an external post-processing program in | |||
order to canonicalize all IPv6 addresses. | order to canonicalize all IPv6 addresses. | |||
2.6.1.2. IP Flow Information Export by IPv6 Routers | 2.6.1.2. IP Flow Information Export by IPv6 Routers | |||
IPFIX [RFC7012] defines some data elements that are useful for | IPFIX [RFC7012] defines some data elements that are useful for | |||
security: | security: | |||
o nextHeaderIPv6, sourceIPv6Address, and destinationIPv6Address; | * nextHeaderIPv6, sourceIPv6Address, and destinationIPv6Address | |||
o sourceMacAddress and destinationMacAddress. | * sourceMacAddress and destinationMacAddress | |||
The IP version is the ipVersion element defined in [IANA-IPFIX]. | The IP version is the ipVersion element defined in [IANA-IPFIX]. | |||
Moreover, IPFIX is very efficient in terms of data handling and | Moreover, IPFIX is very efficient in terms of data handling and | |||
transport. It can also aggregate flows by a key such as | transport. It can also aggregate flows by a key, such as | |||
sourceMacAddress in order to have aggregated data associated with a | sourceMacAddress, in order to have aggregated data associated with a | |||
specific sourceMacAddress. This memo recommends the use of IPFIX and | specific sourceMacAddress. This memo recommends the use of IPFIX and | |||
aggregation on nextHeaderIPv6, sourceIPv6Address, and | aggregation on nextHeaderIPv6, sourceIPv6Address, and | |||
sourceMacAddress. | sourceMacAddress. | |||
2.6.1.3. SNMP MIB and NETCONF/RESTCONF YANG Modules data by IPv6 | 2.6.1.3. SNMP MIB and NETCONF/RESTCONF YANG Modules Data by IPv6 | |||
Routers | Routers | |||
RFC 4293 [RFC4293] defines a Management Information Base (MIB) for | [RFC4293] defines a Management Information Base (MIB) for the two | |||
the two address families of IP. This memo recommends the use of: | address families of IP. This memo recommends the use of: | |||
o ipIfStatsTable table which collects traffic counters per | * ipIfStatsTable table, which collects traffic counters per | |||
interface; | interface, and | |||
o ipNetToPhysicalTable table which is the content of the Neighbor | * ipNetToPhysicalTable table, which is the content of the Neighbor | |||
cache, i.e., the mapping between IPv6 and data-link layer | Cache, i.e., the mapping between IPv6 and data-link layer | |||
addresses. | addresses. | |||
There are also YANG modules relating to the two IP addresses families | There are also YANG modules relating to the two IP address families | |||
and can be used with [RFC6241] and [RFC8040]. This memo recommends | and that can be used with [RFC6241] and [RFC8040]. This memo | |||
the use of: | recommends the use of: | |||
o interfaces-state/interface/statistics from ietf- | * interfaces-state/interface/statistics from | |||
interfaces@2018-02-20.yang [RFC8343] which contains counters for | ietf-interfaces@2018-02-20.yang [RFC8343], which contains counters | |||
interfaces. | for interfaces, and | |||
o ipv6/neighbor from ietf-ip@2018-02-22.yang [RFC8344] which is the | * ipv6/neighbor from ietf-ip@2018-02-22.yang [RFC8344], which is the | |||
content of the Neighbor cache, i.e., the mapping between IPv6 and | content of the Neighbor Cache, i.e., the mapping between IPv6 and | |||
data-link layer addresses. | data-link layer addresses. | |||
2.6.1.4. Neighbor Cache of IPv6 Routers | 2.6.1.4. Neighbor Cache of IPv6 Routers | |||
The neighbor cache of routers contains all mappings between IPv6 | The Neighbor Cache of routers contains all mappings between IPv6 | |||
addresses and data-link layer addresses. There are multiple ways to | addresses and data-link layer addresses. There are multiple ways to | |||
collect the current entries in the Neighbor Cache, notably but not | collect the current entries in the Neighbor Cache, notably, but not | |||
limited to: | limited to: | |||
o the SNMP MIB (Section 2.6.1.3) as explained above; | * using the SNMP MIB (Section 2.6.1.3), as explained above; | |||
o using streaming telemetry or NETCONF [RFC6241] and RESTCONF | * using streaming telemetry or NETCONF [RFC6241] and RESTCONF | |||
[RFC8040] to collect the operational state of the neighbor cache; | [RFC8040] to collect the operational state of the Neighbor Cache; | |||
and | ||||
o also, by connecting over a secure management channel (such as SSH) | * connecting over a secure management channel (such as SSH) and | |||
and explicitly requesting a neighbor cache dump via the Command | explicitly requesting a Neighbor Cache dump via the Command-Line | |||
Line Interface (CLI) or another monitoring mechanism. | Interface (CLI) or another monitoring mechanism. | |||
The neighbor cache is highly dynamic as mappings are added when a new | The Neighbor Cache is highly dynamic, as mappings are added when a | |||
IPv6 address appears on the network. This could be quite frequently | new IPv6 address appears on the network. This could be quite | |||
with privacy extension addresses [RFC8981] or when they are removed | frequently with privacy extension addresses [RFC8981] or when they | |||
when the state goes from UNREACH to removed (the default time for a | are removed when the state goes from UNREACH to removed (the default | |||
removal per Neighbor Unreachability Detection [RFC4861] algorithm is | time for a removal per Neighbor Unreachability Detection [RFC4861] | |||
38 seconds for a host using Windows 7). This means that the content | algorithm is 38 seconds for a host using Windows 7). This means that | |||
of the neighbor cache must periodically be fetched at an interval | the content of the Neighbor Cache must be fetched periodically at an | |||
which does not exhaust the router resources and still provides | interval that does not exhaust the router resources and still | |||
valuable information (suggested value is 30 seconds but this should | provides valuable information (the suggested value is 30 seconds, but | |||
be verified in the actual deployment) and stored for later use. | this should be verified in the actual deployment) and stored for | |||
later use. | ||||
This is an important source of information because it is trivial (on | This is an important source of information because it is trivial (on | |||
a switch not using the SAVI [RFC7039] algorithm) to defeat the | a switch not using the SAVI [RFC7039] algorithm) to defeat the | |||
mapping between data-link layer address and IPv6 address. Let us | mapping between data-link layer address and an IPv6 address. Put | |||
rephrase the previous statement: having access to the current and | another way, having access to the current and past content of the | |||
past content of the neighbor cache has a paramount value for the | Neighbor Cache has a paramount value for the forensic and audit | |||
forensic and audit trail. It should also be noted that in certain | trails. It should also be noted that, in certain threat models, this | |||
threat models this information is also deemed valuable and could | information is also deemed valuable and could itself be a target. | |||
itself be a target. | ||||
When using one /64 per host (Section 2.1.8) or DHCP-PD, it is | When using one /64 per host (Section 2.1.8) or DHCP-PD, it is | |||
sufficient to keep the history of the allocated prefixes when | sufficient to keep the history of the allocated prefixes when | |||
combined with strict source address prefix enforcement on the routers | combined with strict source address prefix enforcement on the routers | |||
and layer-2 switches to prevent IPv6 spoofing. | and L2 switches to prevent IPv6 spoofing. | |||
2.6.1.5. Stateful DHCPv6 Lease | 2.6.1.5. Stateful DHCPv6 Lease | |||
In some networks, IPv6 addresses/prefixes are managed by a stateful | In some networks, IPv6 addresses/prefixes are managed by a stateful | |||
DHCPv6 server [RFC8415] that leases IPv6 addresses/prefixes to | DHCPv6 server [RFC8415] that leases IPv6 addresses/prefixes to | |||
clients. It is indeed quite similar to DHCP for IPv4, so it can be | clients. It is indeed quite similar to DHCP for IPv4, so it can be | |||
tempting to use this DHCP lease file to discover the mapping between | tempting to use this DHCP lease file to discover the mapping between | |||
IPv6 addresses/prefixes and data-link layer addresses as is commonly | IPv6 addresses/prefixes and data-link layer addresses, as is commonly | |||
used in IPv4 networking. | used in IPv4 networking. | |||
It is not so easy in the IPv6 networks, because not all nodes will | It is not so easy in the IPv6 networks, because not all nodes will | |||
use DHCPv6 (there are nodes which can only do stateless | use DHCPv6 (there are nodes that can only do stateless | |||
autoconfiguration) but also because DHCPv6 clients are identified not | autoconfiguration) and also because DHCPv6 clients are identified not | |||
by their hardware-client address as in IPv4 but by a DHCP Unique ID | by their hardware-client address, as in IPv4, but by a DHCP Unique | |||
(DUID), which can have several formats: some being the data-link | Identifier (DUID). The DUID can have several formats: the data-link | |||
layer address, some being data-link layer address prepended with time | layer address, the data-link layer address prepended with time | |||
information, or even an opaque number that requires correlation with | information, or even an opaque number that requires correlation with | |||
another data source to be usable for operational security. Moreover, | another data source to be usable for operational security. Moreover, | |||
when the DUID is based on the data-link address, this address can be | when the DUID is based on the data-link address, this address can be | |||
of any client interface (such as the wireless interface while the | of any client interface (such as the wireless interface, while the | |||
client actually uses its wired interface to connect to the network). | client actually uses its wired interface to connect to the network). | |||
If a lightweight DHCP relay agent [RFC6221] is used in a layer-2 | If a lightweight DHCP relay agent [RFC6221] is used in a L2 switch, | |||
switch, then the DHCP servers also receive the Interface-ID | then the DHCP servers also receive the interface ID information, | |||
information which could be saved in order to identify the interface | which could be saved in order to identify the interface on which the | |||
on which the switch received a specific leased IPv6 address. Also, | switch received a specific leased IPv6 address. Also, if a 'normal' | |||
if a 'normal' (not lightweight) relay agent adds the data-link layer | (not lightweight) relay agent adds the data-link layer address in the | |||
address in the option for Relay Agent Remote-ID [RFC4649] or | option for Relay Agent Remote-ID [RFC4649] [RFC6939], then the DHCPv6 | |||
[RFC6939], then the DHCPv6 server can keep track of the data-link and | server can keep track of the data-link and leased IPv6 addresses. | |||
leased IPv6 addresses. | ||||
In short, the DHCPv6 lease file is less interesting than for IPv4 | In short, the DHCPv6 lease file is less interesting than lease files | |||
networks. If possible, it is recommended to use DHCPv6 servers that | for IPv4 networks. If possible, it is recommended to use DHCPv6 | |||
keep the relayed data-link layer address in addition to the DUID in | servers that keep the relayed data-link layer address in addition to | |||
the lease file as those servers have the equivalent information to | the DUID in the lease file, as those servers have the equivalent | |||
IPv4 DHCP servers. | information to IPv4 DHCP servers. | |||
The mapping between data-link layer address and the IPv6 address can | The mapping between the data-link layer address and the IPv6 address | |||
be secured by deploying switches implementing the SAVI [RFC7513] | can be secured by deploying switches implementing the SAVI [RFC7513] | |||
mechanisms. Of course, this also requires that the data-link layer | mechanisms. Of course, this also requires that the data-link layer | |||
address is protected by using a layer-2 mechanism such as | address be protected by using a L2 mechanism, such as [IEEE-802.1X]. | |||
[IEEE-802.1X]. | ||||
2.6.1.6. RADIUS Accounting Log | 2.6.1.6. RADIUS Accounting Log | |||
For interfaces where the user is authenticated via a RADIUS [RFC2866] | For interfaces where the user is authenticated via a RADIUS [RFC2866] | |||
server, and if RADIUS accounting is enabled, then the RADIUS server | server, and if RADIUS accounting is enabled, then the RADIUS server | |||
receives accounting Acct-Status-Type records at the start and at the | receives accounting Acct-Status-Type records at the start and at the | |||
end of the connection which include all IPv6 (and IPv4) addresses | end of the connection, which include all IPv6 (and IPv4) addresses | |||
used by the user. This technique can be used notably for Wi-Fi | used by the user. This technique can be used notably for Wi-Fi | |||
networks with Wi-Fi Protected Address (WPA) or other IEEE 802.1X | networks with Wi-Fi Protected Access (WPA) or other IEEE 802.1X | |||
[IEEE-802.1X] wired interface on an Ethernet switch. | [IEEE-802.1X] wired interfaces on an Ethernet switch. | |||
2.6.1.7. Other Data Sources | 2.6.1.7. Other Data Sources | |||
There are other data sources for log information that must be | There are other data sources for log information that must be | |||
collected (as currently collected in IPv4 networks): | collected (as currently collected in IPv4 networks): | |||
o historical mapping of IPv6 addresses to users of remote access | * historical mappings of IPv6 addresses to users of remote access | |||
VPN; | VPN and | |||
o historical mappings of MAC addresses to switch ports in a wired | * historical mappings of MAC addresses to switch ports in a wired | |||
network. | network. | |||
2.6.2. Use of Collected Data | 2.6.2. Use of Collected Data | |||
This section leverages the data collected as described before | This section leverages the data collected, as described in | |||
(Section 2.6.1) in order to achieve several security benefits. | Section 2.6.1, in order to achieve several security benefits. | |||
Section 9.1 of [RFC7934] contains more details about host tracking. | Section 9.1 of [RFC7934] contains more details about host tracking. | |||
2.6.2.1. Forensic and User Accountability | 2.6.2.1. Forensic and User Accountability | |||
The forensic use case is when the network operator must locate an | The forensic use case is when the network operator must locate an | |||
IPv6 address (and the assocated port, access point/switch, or VPN | IPv6 address (and the associated port, access point/switch, or VPN | |||
tunnel) that was present in the network at a certain time or is | tunnel) that was present in the network at a certain time or is | |||
currently in the network. | currently in the network. | |||
To locate an IPv6 address in an enterprise network where the operator | To locate an IPv6 address in an enterprise network where the operator | |||
has control over all resources, the source of information can be the | has control over all resources, the source of information can be the | |||
neighbor cache, or, if not found, the DHCP lease file. Then, the | Neighbor Cache, or, if not found, the DHCP lease file. Then, the | |||
procedure is: | procedure is: | |||
1. Based on the IPv6 prefix of the IPv6 address, find the router(s) | 1. based on the IPv6 prefix of the IPv6 address; find one or more | |||
which is(are) used to reach this prefix (assuming that anti- | routers that are used to reach this prefix (assuming that anti- | |||
spoofing mechanisms are used) perhaps based on an IPAM. | spoofing mechanisms are used), perhaps based on an IPAM. | |||
2. Based on this limited set of routers, on the incident time and on | 2. based on this limited set of routers, on the incident time, and | |||
the IPv6 address, retrieve the data-link address from the live | on the IPv6 address; retrieve the data-link address from the live | |||
neighbor cache, from the historical neighbor cache data, or from | Neighbor Cache, from the historical Neighbor Cache data, or from | |||
SAVI events, or retrieve the data-link address from the DHCP | SAVI events, or retrieve the data-link address from the DHCP | |||
lease file (Section 2.6.1.5). | lease file (Section 2.6.1.5). | |||
3. Based on the data-link layer address, look-up the switch | 3. based on the data-link layer address; look up the switch | |||
interface associated with the data-link layer address. In the | interface associated with the data-link layer address. In the | |||
case of wireless LAN with RADIUS accounting (see | case of wireless LAN with RADIUS accounting (see | |||
Section 2.6.1.6), the RADIUS log has the mapping between the user | Section 2.6.1.6), the RADIUS log has the mapping between the user | |||
identification and the MAC address. If a Configuration | identification and the MAC address. If a Configuration | |||
Management Data Base (CMDB) is used, then it can be used to map | Management Database (CMDB) is used, then it can be used to map | |||
the data-link layer address to a switch port. | the data-link layer address to a switch port. | |||
At the end of the process, the interface of the host originating, or | At the end of the process, the interface of the host originating or | |||
the subscriber identity associated with, the activity in question has | the subscriber identity associated with the activity in question has | |||
been determined. | been determined. | |||
To identify the subscriber of an IPv6 address in a residential | To identify the subscriber of an IPv6 address in a residential | |||
Internet Service Provider, the starting point is the DHCP-PD leased | Internet Service Provider, the starting point is the DHCP-PD leased | |||
prefix covering the IPv6 address; this prefix can often be linked to | prefix covering the IPv6 address; this prefix can often be linked to | |||
a subscriber via the RADIUS log. Alternatively, the Forwarding | a subscriber via the RADIUS log. Alternatively, the Forwarding | |||
Information Base (FIB) of the Cable Modem Termination System (CMTS) | Information Base (FIB) of the Cable Modem Termination System (CMTS) | |||
or Broadband Network Gateway (BNG) indicates the CPE of the | or Broadband Network Gateway (BNG) indicates the Customer Premises | |||
subscriber and the RADIUS log can be used to retrieve the actual | Equipment (CPE) of the subscriber and the RADIUS log can be used to | |||
subscriber. | retrieve the actual subscriber. | |||
More generally, a mix of the above techniques can be used in most, if | More generally, a mix of the above techniques can be used in most, if | |||
not all, networks. | not all, networks. | |||
2.6.2.2. Inventory | 2.6.2.2. Inventory | |||
RFC 7707 [RFC7707] describes the difficulties for an attacker to scan | [RFC7707] describes the difficulties for an attacker to scan an IPv6 | |||
an IPv6 network due to the vast number of IPv6 addresses per link | network due to the vast number of IPv6 addresses per link (and why in | |||
(and why in some cases it can still be done). While the huge | some cases it can still be done). While the huge addressing space | |||
addressing space can sometimes be perceived as a 'protection', it | can sometimes be perceived as a 'protection', it also makes the | |||
also makes the inventory task difficult in an IPv6 network while it | inventory task difficult in an IPv6 network while it was trivial to | |||
was trivial to do in an IPv4 network (a simple enumeration of all | do in an IPv4 network (a simple enumeration of all IPv4 addresses, | |||
IPv4 addresses, followed by a ping and a TCP/UDP port scan). Getting | followed by a ping and a TCP/UDP port scan). Getting an inventory of | |||
an inventory of all connected devices is of prime importance for a | all connected devices is of prime importance for a secure network | |||
secure network operation. | operation. | |||
There are many ways to do an inventory of an IPv6 network. | There are many ways to do an inventory of an IPv6 network. | |||
The first technique is to use passive inspection such as IPFIX. | The first technique is to use passive inspection, such as IPFIX. | |||
Using exported IPFIX information and extracting the list of all IPv6 | Using exported IPFIX information and extracting the list of all IPv6 | |||
source addresses allows finding all IPv6 nodes that sent packets | source addresses allows finding all IPv6 nodes that sent packets | |||
through a router. This is very efficient but, alas, will not | through a router. This is very efficient but, alas, will not | |||
discover silent nodes that never transmitted packets traversing the | discover silent nodes that never transmitted packets traversing the | |||
IPFIX target router. Also, it must be noted that link-local | IPFIX target router. Also, it must be noted that link-local | |||
addresses will never be discovered by this means. | addresses will never be discovered by this means. | |||
The second way is again to use the collected neighbor cache content | The second way is again to use the collected Neighbor Cache content | |||
to find all IPv6 addresses in the cache. This process will also | to find all IPv6 addresses in the cache. This process will also | |||
discover all link-local addresses. See Section 2.6.1.4. | discover all link-local addresses. See Section 2.6.1.4. | |||
Another way that works only for a local network, consists of sending | Another way that works only for a local network consists of sending | |||
a ICMP ECHO_REQUEST to the link-local multicast address ff02::1 which | an ICMP ECHO_REQUEST to the link-local multicast address ff02::1, | |||
addresses all IPv6 nodes on the network. All nodes should reply to | which addresses all IPv6 nodes on the network. All nodes should | |||
this ECHO_REQUEST per [RFC4443]. | reply to this ECHO_REQUEST, per [RFC4443]. | |||
Other techniques involve obtaining data from DNS, parsing log files, | Other techniques involve obtaining data from DNS, parsing log files, | |||
leveraging service discovery such as mDNS [RFC6762] and [RFC6763]. | and leveraging service discovery, such as mDNS [RFC6762] [RFC6763]. | |||
Enumerating DNS zones, especially looking at reverse DNS records and | Enumerating DNS zones, especially looking at reverse DNS records and | |||
CNAMES, is another common method employed by various tools. As | CNAMEs, is another common method employed by various tools. As | |||
already mentioned in [RFC7707], this allows an attacker to prune the | already mentioned in [RFC7707], this allows an attacker to prune the | |||
IPv6 reverse DNS tree, and hence enumerate it in a feasible time. | IPv6 reverse DNS tree and hence enumerate it in a feasible time. | |||
Furthermore, authoritative servers that allow zone transfers (AXFR) | Furthermore, authoritative servers that allow zone transfers (i.e., | |||
may be a further information source. An interesting research paper | Authoritative Transfers (AXFRs)) may be a further information source. | |||
has analysed the entropy in various IPv6 addresses: see [ENTROPYIP]. | An interesting research paper has analyzed the entropy in various | |||
IPv6 addresses: see [ENTROPYIP]. | ||||
2.6.2.3. Correlation | 2.6.2.3. Correlation | |||
In an IPv4 network, it is easy to correlate multiple logs, for | In an IPv4 network, it is easy to correlate multiple logs, for | |||
example to find events related to a specific IPv4 address. A simple | example, to find events related to a specific IPv4 address. A simple | |||
Unix grep command is enough to scan through multiple text-based files | Unix grep command is enough to scan through multiple text-based files | |||
and extract all lines relevant to a specific IPv4 address. | and extract all lines relevant to a specific IPv4 address. | |||
In an IPv6 network, this is slightly more difficult because different | In an IPv6 network, this is slightly more difficult because different | |||
character strings can express the same IPv6 address. Therefore, the | character strings can express the same IPv6 address. Therefore, the | |||
simple Unix grep command cannot be used. Moreover, an IPv6 node can | simple Unix grep command cannot be used. Moreover, an IPv6 node can | |||
have multiple IPv6 addresses. | have multiple IPv6 addresses. | |||
In order to do correlation in IPv6-related logs, it is advised to | In order to do correlation in IPv6-related logs, it is advised to | |||
have all logs in a format with only canonical IPv6 addresses | have all logs in a format with only canonical IPv6 addresses | |||
[RFC5952]. Then, the neighbor cache current (or historical) data set | [RFC5952]. Then, the current (or historical) Neighbor Cache data set | |||
must be searched to find the data-link layer address of the IPv6 | must be searched to find the data-link layer address of the IPv6 | |||
address. Then, the current and historical neighbor cache data sets | address. Next, the current and historical Neighbor Cache data sets | |||
must be searched for all IPv6 addresses associated with this data- | must be searched for all IPv6 addresses associated with this data- | |||
link layer address to derive the search set. The last step is to | link layer address to derive the search set. The last step is to | |||
search in all log files (containing only IPv6 addresses in canonical | search in all log files (containing only IPv6 addresses in canonical | |||
format) for any IPv6 addresses in the search set. | format) for any IPv6 addresses in the search set. | |||
Moreover, [RFC7934] recommends using multiple IPv6 addresses per | Moreover, [RFC7934] recommends using multiple IPv6 addresses per | |||
prefix, so, the correlation must also be done among those multiple | prefix, so the correlation must also be done among those multiple | |||
IPv6 addresses, for example by discovering in the NDP cache | IPv6 addresses, for example, by discovering all IPv6 addresses | |||
(Section 2.6.1.4) all IPv6 addresses associated with the same MAC | associated with the same MAC address and interface in the NDP cache | |||
address and interface. | (Section 2.6.1.4). | |||
2.6.2.4. Abnormal Behavior Detection | 2.6.2.4. Abnormal Behavior Detection | |||
Abnormal behavior (such as network scanning, spamming, denial-of- | Abnormal behavior (such as network scanning, spamming, DoS) can be | |||
service) can be detected in the same way as in an IPv4 network. | detected in the same way as in an IPv4 network: | |||
o Sudden increase of traffic detected by interface counter (SNMP) or | * a sudden increase of traffic detected by interface counter (SNMP) | |||
by aggregated traffic from IPFIX records [RFC7012]. | or by aggregated traffic from IPFIX records [RFC7012], | |||
o Rapid growth of ND cache size. | * rapid growth of ND cache size, or | |||
o Change in traffic pattern (number of connections per second, | * change in traffic pattern (number of connections per second, | |||
number of connections per host...) observed with the use of IPFIX | number of connections per host, etc.) observed with the use of | |||
[RFC7012]. | IPFIX [RFC7012]. | |||
2.6.3. Summary | 2.6.3. Summary | |||
While some data sources (IPFIX, MIB, switch CAM tables, logs, ...) | While some data sources (IPFIX, MIB, switch Content Addressable | |||
used in IPv4 are also used in the secure operation of an IPv6 | Memory (CAM) tables, logs, etc.) used in IPv4 are also used in the | |||
network, the DHCPv6 lease file is less reliable and the neighbor | secure operation of an IPv6 network, the DHCPv6 lease file is less | |||
cache is of prime importance. | reliable and the Neighbor Cache is of prime importance. | |||
The fact that there are multiple ways to express the same IPv6 | The fact that there are multiple ways to express the same IPv6 | |||
address in a character string renders the use of filters mandatory | address in a character string renders the use of filters mandatory | |||
when correlation must be done. | when correlation must be done. | |||
2.7. Transition/Coexistence Technologies | 2.7. Transition/Coexistence Technologies | |||
As it is expected that some networks will not run in a pure IPv6-only | As it is expected that some networks will not run in a pure IPv6-only | |||
mode, the different transition mechanisms must be deployed and | mode, the different transition mechanisms must be deployed and | |||
operated in a secure way. This section proposes operational | operated in a secure way. This section proposes operational | |||
guidelines for the most known and deployed transition techniques. | guidelines for the most-known and deployed transition techniques. | |||
[RFC4942] also contains security considerations for transition or | [RFC4942] also contains security considerations for transition or | |||
coexistence scenarios. | coexistence scenarios. | |||
2.7.1. Dual Stack | 2.7.1. Dual Stack | |||
Dual stack is often the first deployment choice for network | Dual stack is often the first deployment choice for network | |||
operators. Dual stacking the network offers some advantages over | operators. Dual stacking the network offers some advantages over | |||
other transition mechanisms. Firstly, the impact on existing IPv4 | other transition mechanisms. Firstly, the impact on existing IPv4 | |||
operations is reduced. Secondly, in the absence of tunnels or | operations is reduced. Secondly, in the absence of tunnels or | |||
address translation, the IPv4 and IPv6 traffic are native (easier to | address translation, the IPv4 and IPv6 traffic are native (easier to | |||
observe and secure) and should have the same network processing | observe and secure) and should have the same network processing | |||
(network path, quality of service, ...). Dual stack enables a | (network path, quality of service, etc.). Dual stack enables a | |||
gradual termination of the IPv4 operations when the IPv6 network is | gradual termination of the IPv4 operations when the IPv6 network is | |||
ready for prime time. On the other hand, the operators have to | ready for prime time. On the other hand, the operators have to | |||
manage two network stacks with the added complexities. | manage two network stacks with the added complexities. | |||
From an operational security perspective, this now means that the | From an operational security perspective, this now means that the | |||
network operator has twice the exposure. One needs to think about | network operator has twice the exposure. One needs to think about | |||
protecting both protocols now. At a minimum, the IPv6 portion of a | protecting both protocols now. At a minimum, the IPv6 portion of a | |||
dual-stacked network should be consistent with IPv4 from a security | dual-stacked network should be consistent with IPv4 from a security | |||
policy point of view. Typically, the following methods are employed | policy point of view. Typically, the following methods are employed | |||
to protect IPv4 networks at the edge or security perimeter: | to protect IPv4 networks at the edge or security perimeter: | |||
o ACLs to permit or deny traffic; | * ACLs to permit or deny traffic, | |||
o Firewalls with stateful packet inspection; | * firewalls with stateful packet inspection, and | |||
o Application firewalls inspecting the application flows. | * application firewalls inspecting the application flows. | |||
It is recommended that these ACLs and/or firewalls be additionally | It is recommended that these ACLs and/or firewalls be additionally | |||
configured to protect IPv6 communications. The enforced IPv6 | configured to protect IPv6 communications. The enforced IPv6 | |||
security must be congruent with the IPv4 security policy, otherwise | security must be congruent with the IPv4 security policy; otherwise, | |||
the attacker will use the protocol version having the more relaxed | the attacker will use the protocol version that has the more relaxed | |||
security policy. Maintaining the congruence between security | security policy. Maintaining the congruence between security | |||
policies can be challenging (especially over time); it is recommended | policies can be challenging (especially over time); it is recommended | |||
to use a firewall or an ACL manager that is dual-stack, i.e., a | to use a firewall or an ACL manager that is dual stack, i.e., a | |||
system that can apply a single ACL entry to a mixed group of IPv4 and | system that can apply a single ACL entry to a mixed group of IPv4 and | |||
IPv6 addresses. | IPv6 addresses. | |||
Application firewalls work at the application layer and are oblivious | Application firewalls work at the application layer and are oblivious | |||
to the IP version, i.e., they work as well for IPv6 as for IPv4 and | to the IP version, i.e., they work as well for IPv6 as for IPv4 and | |||
the same application security policy will work for both protocol | the same application security policy will work for both protocol | |||
versions. | versions. | |||
Also, given the end-to-end connectivity that IPv6 provides, it is | Also, given the end-to-end connectivity that IPv6 provides, it is | |||
recommended that hosts be fortified against threats. General device | recommended that hosts be fortified against threats. General device | |||
hardening guidelines are provided in Section 2.8. | hardening guidelines are provided in Section 2.8. | |||
For many years, all host operating systems have IPv6 enabled by | For many years, all host operating systems have IPv6 enabled by | |||
default, so, it is possible even in an 'IPv4-only' network to attack | default, so it is possible even in an 'IPv4-only' network to attack | |||
layer-2 adjacent victims via their IPv6 link-local address or via a | L2-adjacent victims via their IPv6 link-local address or via a global | |||
global IPv6 address when the attacker provides rogue RAs or a rogue | IPv6 address when the attacker provides rogue RAs or a rogue DHCPv6 | |||
DHCPv6 service. | service. | |||
[RFC7123] discusses the security implications of native IPv6 support | [RFC7123] discusses the security implications of native IPv6 support | |||
and IPv6 transition/coexistence technologies on "IPv4-only" networks | and IPv6 transition/coexistence technologies on 'IPv4-only' networks | |||
and describes possible mitigations for the aforementioned issues. | and describes possible mitigations for the aforementioned issues. | |||
2.7.2. Encapsulation Mechanisms | 2.7.2. Encapsulation Mechanisms | |||
There are many tunnels used for specific use cases. Except when | There are many tunnels used for specific use cases. Except when | |||
protected by IPsec [RFC4301] or alternative tunnel encryption | protected by IPsec [RFC4301] or alternative tunnel encryption | |||
methods, all those tunnels have a number of security issues as | methods, all those tunnels have a number of security issues, as | |||
described in RFC 6169 [RFC6169]; | described in [RFC6169]: | |||
o tunnel injection: a malevolent actor knowing a few pieces of | tunnel injection: | |||
information (for example the tunnel endpoints and the | A malevolent actor knowing a few pieces of information (for | |||
encapsulation protocol) can forge a packet which looks like a | example, the tunnel endpoints and the encapsulation protocol) can | |||
legitimate and valid encapsulated packet that will gladly be | forge a packet that looks like a legitimate and valid encapsulated | |||
accepted by the destination tunnel endpoint. This is a specific | packet that will gladly be accepted by the destination tunnel | |||
case of spoofing; | endpoint. This is a specific case of spoofing. | |||
o traffic interception: no confidentiality is provided by the tunnel | traffic interception: | |||
protocols (without the use of IPsec or alternative encryption | No confidentiality is provided by the tunnel protocols (without | |||
methods), therefore anybody on the tunnel path can intercept the | the use of IPsec or alternative encryption methods); therefore, | |||
traffic and have access to the clear-text IPv6 packet; combined | anybody on the tunnel path can intercept the traffic and have | |||
with the absence of authentication, an on-path attack can also be | access to the cleartext IPv6 packet. Combined with the absence of | |||
mounted; | authentication, an on-path attack can also be mounted. | |||
o service theft: as there is no authorization, even a non-authorized | service theft: | |||
user can use a tunnel relay for free (this is a specific case of | As there is no authorization, even an unauthorized user can use a | |||
tunnel injection); | tunnel relay for free (this is a specific case of tunnel | |||
injection). | ||||
o reflection attack: another specific use case of tunnel injection | reflection attack: | |||
where the attacker injects packets with an IPv4 destination | Another specific use case of tunnel injection where the attacker | |||
address not matching the IPv6 address causing the first tunnel | injects packets with an IPv4 destination address not matching the | |||
endpoint to re-encapsulate the packet to the destination... Hence, | IPv6 address causing the first tunnel endpoint to re-encapsulate | |||
the final IPv4 destination will not see the original IPv4 address | the packet to the destination. Hence, the final IPv4 destination | |||
but only the IPv4 address of the relay router. | will not see the original IPv4 address but only the IPv4 address | |||
of the relay router. | ||||
o bypassing security policy: if a firewall or an Intrusion | bypassing security policy: | |||
Prevention System (IPS) is on the path of the tunnel, then it may | If a firewall or an Intrusion Prevention System (IPS) is on the | |||
neither inspect nor detect malevolent IPv6 traffic transmitted | path of the tunnel, then it may neither inspect nor detect | |||
over the tunnel. | malevolent IPv6 traffic transmitted over the tunnel. | |||
To mitigate the bypassing of security policies, it is often | To mitigate the bypassing of security policies, it is often | |||
recommended to block all automatic tunnels in default OS | recommended to block all automatic tunnels in default OS | |||
configuration (if they are not required) by denying IPv4 packets | configuration (if they are not required) by denying IPv4 packets | |||
matching: | matching: | |||
o IP protocol 41: this will block ISATAP (Section 2.7.2.2), 6to4 | IP protocol 41: This will block Intra-Site Automatic Tunnel | |||
(Section 2.7.2.7), 6rd (Section 2.7.2.3), as well as, 6in4 | Addressing Protocol (ISATAP) (Section 2.7.2.2), 6to4 | |||
(Section 2.7.2.1) tunnels; | (Section 2.7.2.7), 6rd (Section 2.7.2.3), and 6in4 | |||
(Section 2.7.2.1) tunnels. | ||||
o IP protocol 47: this will block GRE (Section 2.7.2.1) tunnels; | IP protocol 47: This will block GRE (Section 2.7.2.1) tunnels. | |||
o UDP port 3544: this will block the default encapsulation of Teredo | UDP port 3544: This will block the default encapsulation of Teredo | |||
(Section 2.7.2.8) tunnels. | (Section 2.7.2.8) tunnels. | |||
Ingress filtering [RFC2827] should also be applied on all tunnel | Ingress filtering [RFC2827] should also be applied on all tunnel | |||
endpoints if applicable to prevent IPv6 address spoofing. | endpoints, if applicable, to prevent IPv6 address spoofing. | |||
The reflection attack cited above should also be prevented by using | The reflection attack cited above should also be prevented by using | |||
an IPv6 ACL preventing the hair pinning of the traffic. | an IPv6 ACL preventing the hair pinning of the traffic. | |||
As several of the tunnel techniques share the same encapsulation | As several of the tunnel techniques share the same encapsulation | |||
(i.e., IPv4 protocol 41) and embed the IPv4 address in the IPv6 | (i.e., IPv4 protocol 41) and embed the IPv4 address in the IPv6 | |||
address, there are a set of well-known looping attacks described in | address, there are a set of well-known looping attacks described in | |||
RFC 6324 [RFC6324]. This RFC also proposes mitigation techniques. | [RFC6324]. This RFC also proposes mitigation techniques. | |||
2.7.2.1. Site-to-Site Static Tunnels | 2.7.2.1. Site-to-Site Static Tunnels | |||
Site-to-site static tunnels are described in RFC 2529 [RFC2529] and | Site-to-site static tunnels are described in [RFC2529] and in GRE | |||
in GRE [RFC2784]. As the IPv4 endpoints are statically configured | [RFC2784]. As the IPv4 endpoints are statically configured and are | |||
and are not dynamic, they are slightly more secure (bi-directional | not dynamic, they are slightly more secure (bidirectional service | |||
service theft is mostly impossible) but traffic interception and | theft is mostly impossible), but traffic interception and tunnel | |||
tunnel injection are still possible. Therefore, the use of IPsec | injection are still possible. Therefore, the use of IPsec [RFC4301] | |||
[RFC4301] in transport mode to protect the encapsulated IPv4 packets | in transport mode to protect the encapsulated IPv4 packets is | |||
is recommended for those tunnels. Alternatively, IPsec in tunnel | recommended for those tunnels. Alternatively, IPsec in tunnel mode | |||
mode can be used to transport IPv6 traffic over a non-trusted IPv4 | can be used to transport IPv6 traffic over an untrusted IPv4 network. | |||
network. | ||||
2.7.2.2. ISATAP | 2.7.2.2. ISATAP | |||
ISATAP tunnels [RFC5214] are mainly used within a single | ISATAP tunnels [RFC5214] are mainly used within a single | |||
administrative domain and to connect a single IPv6 host to the IPv6 | administrative domain and to connect a single IPv6 host to the IPv6 | |||
network. This often implies that those systems are usually managed | network. This often implies that those systems are usually managed | |||
by a single entity; therefore, audit trail and strict anti-spoofing | by a single entity; therefore, audit trail and strict anti-spoofing | |||
are usually possible and this raises the overall security. Even if | are usually possible, and this raises the overall security. Even if | |||
ISATAP is no more often used, its security issues are relevant per | ISATAP is no more often used, its security issues are relevant, per | |||
[KRISTOFF]. | [KRISTOFF]. | |||
Special care must be taken to avoid a looping attack by implementing | Special care must be taken to avoid a looping attack by implementing | |||
the measures of [RFC6324] and [RFC6964] (especially the section 3.6). | the measures of [RFC6324] and [RFC6964] (especially in Section 3.6). | |||
IPsec [RFC4301] in transport or tunnel mode can be used to secure the | IPsec [RFC4301] in transport or tunnel mode can be used to secure the | |||
IPv4 ISATAP traffic to provide IPv6 traffic confidentiality and | IPv4 ISATAP traffic to provide IPv6 traffic confidentiality and | |||
prevent service theft. | prevent service theft. | |||
2.7.2.3. 6rd | 2.7.2.3. 6rd | |||
While 6rd tunnels share the same encapsulation as 6to4 tunnels | While 6rd tunnels share the same encapsulation as 6to4 tunnels | |||
(Section 2.7.2.7), they are designed to be used within a single SP | (Section 2.7.2.7), they are designed to be used within a single SP | |||
domain, in other words, they are deployed in a more constrained | domain; in other words, they are deployed in a more constrained | |||
environment (e.g., anti-spoofing, protocol 41 filtering at the edge) | environment (e.g., anti-spoofing, protocol 41 filtering at the edge) | |||
than 6to4 tunnels and have few security issues other than lack of | than 6to4 tunnels and have few security issues other than lack of | |||
confidentiality. The security considerations (Section 12) of | confidentiality. The security considerations in Section 12 of | |||
[RFC5969] describes how to secure 6rd tunnels. | [RFC5969] describes how to secure 6rd tunnels. | |||
IPsec [RFC4301] for the transported IPv6 traffic can be used if | IPsec [RFC4301] for the transported IPv6 traffic can be used if | |||
confidentiality is important. | confidentiality is important. | |||
2.7.2.4. 6PE, 6VPE, and LDPv6 | 2.7.2.4. 6PE, 6VPE, and LDPv6 | |||
Organizations using MPLS in their core can also use 6PE [RFC4798] and | Organizations using MPLS in their core can also use IPv6 Provider | |||
6VPE [RFC4659] to enable IPv6 access over MPLS. As 6PE and 6VPE are | Edge (6PE) [RFC4798] and IPv6 Virtual Private Extension (6VPE) | |||
[RFC4659] to enable IPv6 access over MPLS. As 6PE and 6VPE are | ||||
really similar to BGP/MPLS IP VPNs described in [RFC4364], the | really similar to BGP/MPLS IP VPNs described in [RFC4364], the | |||
security properties of these networks are also similar to those | security properties of these networks are also similar to those | |||
described in [RFC4381] (please note that this RFC may resemble a | described in [RFC4381] (please note that this RFC may resemble a | |||
published IETF work but it is not based on an IETF review and the | published IETF work, but it is not based on an IETF review and the | |||
IETF disclaims any knowledge of the fitness of this RFC for any | IETF disclaims any knowledge of the fitness of this RFC for any | |||
purpose). They rely on: | purpose). They rely on: | |||
o Address space, routing, and traffic separation with the help of | * address space, routing, and traffic separation with the help of | |||
VRFs (only applicable to 6VPE); | VRFs (only applicable to 6VPE); | |||
o Hiding the IPv4 core, hence removing all attacks against | * hiding the IPv4 core, hence, removing all attacks against | |||
P-routers; | P-routers; and | |||
o Securing the routing protocol between CE and PE; in the case of | * securing the routing protocol between Customer Edge (CE) and | |||
6PE and 6VPE, link-local addresses (see [RFC7404]) can be used and | Provider Edge (PE); in the case of 6PE and 6VPE, link-local | |||
as these addresses cannot be reached from outside of the link, the | addresses (see [RFC7404]) can be used, and, as these addresses | |||
security of 6PE and 6VPE is even higher than an IPv4 BGP/MPLS IP | cannot be reached from outside of the link, the security of 6PE | |||
VPN. | and 6VPE is even higher than an IPv4 BGP/MPLS IP VPN. | |||
LDPv6 itself does not induce new risks, see also [RFC7552]. | LDPv6 itself does not induce new risks; see [RFC7552]. | |||
2.7.2.5. DS-Lite | 2.7.2.5. DS-Lite | |||
DS-lite is also a translation mechanism and is therefore analyzed | Dual-Stack Lite (DS-Lite) is also a translation mechanism and is | |||
further (Section 2.7.3.3) in this document as it includes IPv4 NAPT. | therefore analyzed further (Section 2.7.3.3) in this document, as it | |||
includes IPv4 NAPT. | ||||
2.7.2.6. Mapping of Address and Port | 2.7.2.6. Mapping of Address and Port | |||
With the encapsulation and translation versions of mapping of Address | With the encapsulation and translation versions of Mapping of Address | |||
and Port (MAP) (MAP-E [RFC7597] and MAP-T [RFC7599]), the access | and Port (MAP) -- abbreviated MAP-E [RFC7597] and MAP-T [RFC7599] -- | |||
network is purely an IPv6 network and MAP protocols are used to | the access network is purely an IPv6 network, and MAP protocols are | |||
provide IPv4 hosts on the subscriber network access to IPv4 hosts on | used to provide IPv4 hosts on the subscriber network access to IPv4 | |||
the Internet. The subscriber router does stateful operations in | hosts on the Internet. The subscriber router does stateful | |||
order to map all internal IPv4 addresses and layer-4 ports to the | operations in order to map all internal IPv4 addresses and Layer 4 | |||
IPv4 address and the set of layer-4 ports received through the MAP | ports to the IPv4 address and the set of Layer 4 ports received | |||
configuration process. The SP equipment always does stateless | through the MAP configuration process. The SP equipment always does | |||
operations (either decapsulation or stateless translation). | stateless operations (either decapsulation or stateless translation). | |||
Therefore, as opposed to Section 2.7.3.3, there is no state- | Therefore, as opposed to Section 2.7.3.3, there is no state | |||
exhaustion DoS attack against the SP equipment because there is no | exhaustion DoS attack against the SP equipment because there is no | |||
state and there is no operation caused by a new layer-4 connection | state and there is no operation caused by a new Layer 4 connection | |||
(no logging operation). | (no logging operation). | |||
The SP MAP equipment should implement all the security considerations | The SP MAP equipment should implement all the security considerations | |||
of [RFC7597]; notably, ensuring that the mapping of the IPv4 address | of [RFC7597], notably ensuring that the mapping of the IPv4 address | |||
and port are consistent with the configuration. As MAP has a | and port are consistent with the configuration. As MAP has a | |||
predictable IPv4 address and port mapping, the audit logs are easier | predictable IPv4 address and port mapping, the audit logs are easier | |||
to use as there is a clear mapping between the IPv6 address and the | to use, as there is a clear mapping between the IPv6 address and the | |||
IPv4 address and ports. | IPv4 address and ports. | |||
2.7.2.7. 6to4 | 2.7.2.7. 6to4 | |||
In [RFC3056]; 6to4 tunnels require a public routable IPv4 address in | In [RFC3056], 6to4 tunnels require a public-routable IPv4 address in | |||
order to work correctly. They can be used to provide either single | order to work correctly. They can be used to provide either single | |||
IPv6 host connectivity to the IPv6 Internet or multiple IPv6 networks | IPv6 host connectivity to the IPv6 Internet or multiple IPv6 networks | |||
connectivity to the IPv6 Internet. The 6to4 relay was historically | connectivity to the IPv6 Internet. The 6to4 relay was historically | |||
the anycast address defined in [RFC3068] which has been deprecated by | the anycast address defined in [RFC3068], which has been deprecated | |||
[RFC7526] and is no longer used by recent Operating Systems. Some | by [RFC7526] and is no longer used by recent Operating Systems. Some | |||
security considerations are explained in [RFC3964]. | security considerations are explained in [RFC3964]. | |||
[RFC6343] points out that if an operator provides well-managed | [RFC6343] points out that if an operator provides well-managed | |||
servers and relays for 6to4, non-encapsulated IPv6 packets will pass | servers and relays for 6to4, nonencapsulated IPv6 packets will pass | |||
through well-defined points (the native IPv6 interfaces of those | through well-defined points (the native IPv6 interfaces of those | |||
servers and relays) at which security mechanisms may be applied. | servers and relays) at which security mechanisms may be applied. | |||
Client usage of 6to4 by default is now discouraged, and significant | Client usage of 6to4 by default is now discouraged, and significant | |||
precautions are needed to avoid operational problems. | precautions are needed to avoid operational problems. | |||
2.7.2.8. Teredo | 2.7.2.8. Teredo | |||
Teredo tunnels [RFC4380] are mainly used in a residential environment | Teredo tunnels [RFC4380] are mainly used in a residential environment | |||
because Teredo easily traverses an IPv4 NAPT device thanks to its UDP | because Teredo easily traverses an IPv4 NAPT device thanks to its UDP | |||
encapsulation. Teredo tunnels connect a single host to the IPv6 | encapsulation. Teredo tunnels connect a single host to the IPv6 | |||
Internet. Teredo shares the same issues as other tunnels: no | Internet. Teredo shares the same issues as other tunnels: no | |||
authentication, no confidentiality, possible spoofing and reflection | authentication, no confidentiality, possible spoofing, and reflection | |||
attacks. | attacks. | |||
IPsec [RFC4301] for the transported IPv6 traffic is recommended. | IPsec [RFC4301] for the transported IPv6 traffic is recommended. | |||
The biggest threat to Teredo is probably for an IPv4-only network as | The biggest threat to Teredo is probably for an IPv4-only network, as | |||
Teredo has been designed to easily traverse IPv4 NAT-PT devices which | Teredo has been designed to easily traverse IPv4 NAT-PT devices, | |||
are quite often co-located with a stateful firewall. Therefore, if | which are quite often co-located with a stateful firewall. | |||
the stateful IPv4 firewall allows unrestricted UDP outbound and | Therefore, if the stateful IPv4 firewall allows unrestricted UDP | |||
accepts the return UDP traffic, then Teredo actually punches a hole | outbound and accepts the return UDP traffic, then Teredo actually | |||
in this firewall for all IPv6 traffic to the Internet and from the | punches a hole in this firewall for all IPv6 traffic to and from the | |||
Internet. Host policies can be deployed to block Teredo in an | Internet. Host policies can be deployed to block Teredo in an | |||
IPv4-only network in order to avoid this firewall bypass. On the | IPv4-only network in order to avoid this firewall bypass. On the | |||
IPv4 firewall all outbound UDP should be blocked except for the | IPv4 firewall, all outbound UDPs should be blocked except for the | |||
commonly used services (e.g., port 53 for DNS, port 123 for NTP, port | commonly used services (e.g., port 53 for DNS, port 123 for NTP, port | |||
443 for QUIC, port 500 for IKE, port 3478 for STUN, etc.). | 443 for QUIC, port 500 for Internet Key Exchange Protocol (IKE), port | |||
3478 for Session Traversal Utilities for NAT (STUN), etc.). | ||||
Teredo is now hardly ever used and no longer enabled by default in | Teredo is now hardly ever used and no longer enabled by default in | |||
most environments, so it is less of a threat, however, special | most environments so it is less of a threat; however, special | |||
consideration must be taken in cases when devices with older or non- | consideration must be made in cases when devices with older or | |||
updated operating systems may be present and by default were running | operating systems that have not been updated may be present and by | |||
Teredo. | default were running Teredo. | |||
2.7.3. Translation Mechanisms | 2.7.3. Translation Mechanisms | |||
Translation mechanisms between IPv4 and IPv6 networks are alternate | Translation mechanisms between IPv4 and IPv6 networks are alternate | |||
coexistence strategies while networks transition to IPv6. While a | coexistence strategies while networks transition to IPv6. While a | |||
framework is described in [RFC6144], the specific security | framework is described in [RFC6144], the specific security | |||
considerations are documented with each individual mechanism. For | considerations are documented with each individual mechanism. For | |||
the most part, they specifically mention interference with IPsec or | the most part, they specifically mention interference with IPsec or | |||
DNSSEC deployments, how to mitigate spoofed traffic, and what some | DNSSEC deployments, how to mitigate spoofed traffic, and what some | |||
effective filtering strategies may be. | effective filtering strategies may be. | |||
While not really a transition mechanism to IPv6, this section also | While not really a transition mechanism to IPv6, this section also | |||
includes the discussion about the use of heavy IPv4-to-IPv4 network | includes the discussion about the use of heavy IPv4-to-IPv4 network | |||
address and port translation to prolong the life of IPv4-only | addresses and port translation to prolong the life of IPv4-only | |||
networks. | networks. | |||
2.7.3.1. Carrier-Grade NAT (CGN) | 2.7.3.1. Carrier-Grade NAT (CGN) | |||
Carrier-Grade NAT (CGN), also called NAT444 CGN or Large Scale NAT | Carrier-Grade NAT (CGN), also called NAT444 CGN or Large-Scale NAT | |||
(LSN) or SP NAT is described in [RFC6264] and is utilized as an | (LSN) or SP NAT, is described in [RFC6264] and is utilized as an | |||
interim measure to extend the use of IPv4 in a large service provider | interim measure to extend the use of IPv4 in a large service provider | |||
network until the provider can deploy an effective IPv6 solution. | network until the provider can deploy an effective IPv6 solution. | |||
[RFC6598] requested a specific IANA allocated /10 IPv4 address block | [RFC6598] requested a specific IANA-allocated /10 IPv4 address block | |||
to be used as address space shared by all access networks using CGN. | to be used as address space shared by all access networks using CGN. | |||
This has been allocated as 100.64.0.0/10. | This has been allocated as 100.64.0.0/10. | |||
Section 13 of [RFC6269] lists some specific security-related issues | Section 13 of [RFC6269] lists some specific security-related issues | |||
caused by large scale address sharing. The Security Considerations | caused by large-scale address sharing. The Security Considerations | |||
section of [RFC6598] also lists some specific mitigation techniques | section of [RFC6598] also lists some specific mitigation techniques | |||
for potential misuse of shared address space. Some Law Enforcement | for potential misuse of shared address space. Some law enforcement | |||
Agencies have identified CGN as impeding their cyber-crime | agencies have identified CGN as impeding their cybercrime | |||
investigations (for example Europol press release on CGN | investigations (for example, see the Europol press release on CGN | |||
[europol-cgn]). Many translation techniques (NAT64, DS-lite, ...) | [europol-cgn]). Many translation techniques (NAT64, DS-Lite, etc.) | |||
have the same security issues as CGN when one part of the connection | have the same security issues as CGN when one part of the connection | |||
is IPv4-only. | is IPv4 only. | |||
[RFC6302] has recommendations for Internet-facing servers to also log | [RFC6302] has recommendations for Internet-facing servers to also log | |||
the source TCP or UDP ports of incoming connections in an attempt to | the source TCP or UDP ports of incoming connections in an attempt to | |||
help identify the users behind such a CGN. | help identify the users behind such a CGN. | |||
[RFC7422] suggests the use of deterministic address mapping in order | [RFC7422] suggests the use of deterministic address mapping in order | |||
to reduce logging requirements for CGN. The idea is to have a known | to reduce logging requirements for CGN. The idea is to have a known | |||
algorithm for mapping the internal subscriber to/from public TCP and | algorithm for mapping the internal subscriber to/from public TCP and | |||
UDP ports. | UDP ports. | |||
[RFC6888] lists common requirements for CGNs. [RFC6967] analyzes | [RFC6888] lists common requirements for CGNs. [RFC6967] analyzes | |||
some solutions to enforce policies on misbehaving nodes when address | some solutions to enforce policies on misbehaving nodes when address | |||
sharing is used. [RFC7857] also updates the NAT behavioral | sharing is used. [RFC7857] also updates the NAT behavioral | |||
requirements. | requirements. | |||
2.7.3.2. NAT64/DNS64 and 464XLAT | 2.7.3.2. NAT64/DNS64 and 464XLAT | |||
Stateful NAT64 translation [RFC6146] allows IPv6-only clients to | Stateful NAT64 translation [RFC6146] allows IPv6-only clients to | |||
contact IPv4 servers using unicast UDP, TCP, or ICMP. It can be used | contact IPv4 servers using unicast UDP, TCP, or ICMP. It can be used | |||
in conjunction with DNS64 [RFC6147], a mechanism which synthesizes | in conjunction with DNS64 [RFC6147], a mechanism that synthesizes | |||
AAAA records from existing A records. There is also a stateless | AAAA records from existing A records. There is also a stateless | |||
NAT64 [RFC7915], which has similar security aspects but with the | NAT64 [RFC7915], which has similar security aspects but with the | |||
added benefit of being stateless, so, less prone to a state | added benefit of being stateless and is thereby less prone to a state | |||
exhaustion attack. | exhaustion attack. | |||
The Security Consideration sections of [RFC6146] and [RFC6147] list | The Security Consideration sections of [RFC6146] and [RFC6147] list | |||
the comprehensive issues; in section 8 of [RFC6147] there are some | the comprehensive issues; in Section 8 of [RFC6147], there are some | |||
considerations on the interaction between NAT64 and DNSSEC. A | considerations on the interaction between NAT64 and DNSSEC. A | |||
specific issue with the use of NAT64 is that it will interfere with | specific issue with the use of NAT64 is that it will interfere with | |||
most IPsec deployments unless UDP encapsulation is used. | most IPsec deployments unless UDP encapsulation is used. | |||
Another translation mechanism relying on a combination of stateful | Another translation mechanism relying on a combination of stateful | |||
and stateless translation, 464XLAT [RFC6877], can be used to do host | and stateless translation, 464XLAT [RFC6877], can be used to do a | |||
local translation from IPv4 to IPv6 and a network provider | host-local translation from IPv4 to IPv6 and a network provider | |||
translation from IPv6 to IPv4, i.e., giving IPv4-only application | translation from IPv6 to IPv4, i.e., giving IPv4-only application | |||
access to an IPv4-only server over an IPv6-only network. 464XLAT | access to an IPv4-only server over an IPv6-only network. 464XLAT | |||
shares the same security considerations as NAT64 and DNS64, however | shares the same security considerations as NAT64 and DNS64; however, | |||
it can be used without DNS64, avoiding the DNSSEC implications. | it can be used without DNS64, avoiding the DNSSEC implications. | |||
2.7.3.3. DS-Lite | 2.7.3.3. DS-Lite | |||
Dual-Stack Lite (DS-Lite) [RFC6333] is a transition technique that | Dual-Stack Lite (DS-Lite) [RFC6333] is a transition technique that | |||
enables a service provider to share IPv4 addresses among customers by | enables a service provider to share IPv4 addresses among customers by | |||
combining two well-known technologies: IP in IP (IPv4-in-IPv6) and | combining two well-known technologies: IP in IP (IPv4-in-IPv6) and | |||
IPv4 NAPT. | IPv4 NAPT. | |||
Security considerations with respect to DS-Lite mainly revolve around | Security considerations, with respect to DS-Lite, mainly revolve | |||
logging data, preventing DoS attacks from rogue devices (as the | around logging data, preventing DoS attacks from rogue devices (as | |||
Address Family Translation Router (AFTR) [RFC6333] function is | the Address Family Translation Router (AFTR) [RFC6333] function is | |||
stateful) and restricting service offered by the AFTR only to | stateful), and restricting service offered by the AFTR only to | |||
registered customers. | registered customers. | |||
Section 11 of [RFC6333] and section 2 of [RFC7785] describe important | Section 11 of [RFC6333] and Section 2 of [RFC7785] describe important | |||
security issues associated with this technology. | security issues associated with this technology. | |||
2.8. General Device Hardening | 2.8. General Device Hardening | |||
With almost all devices being IPv6 enabled by default and with many | With almost all devices being IPv6 enabled by default and with many | |||
end points having IPv6 connectivity to the Internet, it is critical | endpoints having IPv6 connectivity to the Internet, it is critical to | |||
to also harden those devices against attacks over IPv6. | also harden those devices against attacks over IPv6. | |||
The ame techniques used to protect devices against attack over IPv4 | The same techniques used to protect devices against attacks over IPv4 | |||
should be used for IPv6 and should include, but not limited to: | should be used for IPv6 and should include but are not limited to: | |||
o Restrict device access to authorized individuals | * restricting device access to authorized individuals; | |||
o Monitor and audit access to the device | * monitoring and auditing access to the device; | |||
o Turn off any unused services on the end node | * turning off any unused services on the end node | |||
o Understand which IPv6 addresses are being used to source traffic | * understanding which IPv6 addresses are being used to source | |||
and change defaults if necessary | traffic and changing defaults if necessary; | |||
o Use cryptographically protected protocols for device management | * using cryptographically protected protocols for device management | |||
(SCP, SNMPv3, SSH, TLS, etc.) | (Secure Copy Protocol (SCP), SNMPv3, SSH, TLS, etc.); | |||
o Use host firewall capabilities to control traffic that gets | * using host firewall capabilities to control traffic that gets | |||
processed by upper-layer protocols | processed by upper-layer protocols; | |||
o apply firmware, OS and application patches/upgrades to the devices | * applying firmware, OS, and application patches/upgrades to the | |||
in a timely manner | devices in a timely manner; | |||
o use multi-factor credentials to authenticate to devices | * using multifactor credentials to authenticate to devices; and | |||
o Use virus scanners to detect malicious programs | * using virus scanners to detect malicious programs. | |||
3. Enterprises Specific Security Considerations | 3. Enterprises-Specific Security Considerations | |||
Enterprises [RFC7381] generally have robust network security policies | Enterprises [RFC7381] generally have robust network security policies | |||
in place to protect existing IPv4 networks. These policies have been | in place to protect existing IPv4 networks. These policies have been | |||
distilled from years of experiential knowledge of securing IPv4 | distilled from years of experiential knowledge of securing IPv4 | |||
networks. At the very least, it is recommended that enterprise | networks. At the very least, it is recommended that enterprise | |||
networks have parity between their security policies for both | networks have parity between their security policies for both | |||
protocol versions. This section also applies to the enterprise part | protocol versions. This section also applies to the enterprise part | |||
of all SP networks, i.e., the part of the network where the SP | of all SP networks, i.e., the part of the network where the SP | |||
employees are connected. | employees are connected. | |||
Security considerations in the enterprise can be broadly categorized | Security considerations in the enterprise can be broadly categorized | |||
into two groups: External and Internal. | into two groups: external and internal. | |||
3.1. External Security Considerations | 3.1. External Security Considerations | |||
The external aspect deals with providing security at the edge or | The external aspect deals with providing security at the edge or | |||
perimeter of the enterprise network where it meets the service | perimeter of the enterprise network where it meets the service | |||
provider's network. This is commonly achieved by enforcing a | provider's network. This is commonly achieved by enforcing a | |||
security policy either by implementing dedicated firewalls with | security policy, either by implementing dedicated firewalls with | |||
stateful packet inspection or a router with ACLs. A common default | stateful packet inspection or a router with ACLs. A common default | |||
IPv4 policy on firewalls that could easily be ported to IPv6 is to | IPv4 policy on firewalls that could easily be ported to IPv6 is to | |||
allow all traffic outbound while only allowing specific traffic, such | allow all traffic outbound while only allowing specific traffic, such | |||
as established sessions, inbound (see also [RFC6092]). Section 3.2 | as established sessions, inbound (see [RFC6092]). Section 3.2 of | |||
of [RFC7381] also provides similar recommendations. | [RFC7381] also provides similar recommendations. | |||
Here are a few more things that could enhance the default policy: | Here are a few more things that could enhance the default policy: | |||
o Filter internal-use IPv6 addresses at the perimeter, this will | * Filter internal-use IPv6 addresses at the perimeter; this will | |||
also mitigate the vulnerabilities listed in [RFC7359] | also mitigate the vulnerabilities listed in [RFC7359]. | |||
o Discard packets from and to bogon and reserved space, see also | * Discard packets from and to bogon and reserved space; see [CYMRU] | |||
[CYMRU] and [RFC8190] | and [RFC8190]. | |||
o Accept certain ICMPv6 messages to allow proper operation of ND and | * Accept certain ICMPv6 messages to allow proper operation of ND and | |||
PMTUD, see also [RFC4890] or [REY_PF] for hosts | Path MTU Discovery (PMTUD); see [RFC4890] or [REY_PF] for hosts. | |||
o Based on the use of the network, filter specific extension headers | * Based on the use of the network, filter specific extension headers | |||
by accepting only the required ones (permit list approach) such as | by accepting only the required ones (permit list approach), such | |||
ESP, AH, and not forgetting the required transport layers: ICMP, | as ESP, AH, and not forgetting the required transport layers: | |||
TCP, UDP, ... This filtering should be done where applicable at | ICMP, TCP, UDP, etc. This filtering should be done where | |||
the edge and possibly inside the perimeter; see also | applicable at the edge and possibly inside the perimeter; see | |||
[I-D.ietf-opsec-ipv6-eh-filtering] | [IPV6-EH-FILTERING]. | |||
o Filter packets having an illegal IPv6 headers chain at the | * Filter packets having an illegal IPv6 header chain at the | |||
perimeter (and if possible, inside the network as well), see | perimeter (and, if possible, inside the network as well); see | |||
Section 2.2 | Section 2.2. | |||
o Filter unneeded services at the perimeter | * Filter unneeded services at the perimeter. | |||
o Implement ingress and egress anti-spoofing in the forwarding and | * Implement ingress and egress anti-spoofing in the forwarding and | |||
control planes, see [RFC2827] and [RFC3704] | control planes; see [RFC2827] and [RFC3704]. | |||
o Implement appropriate rate-limiters and control-plane policers | * Implement appropriate rate-limiters and control plane policers | |||
based on traffic baselines | based on traffic baselines. | |||
Having global IPv6 addresses on all the enterprise sites is different | Having global IPv6 addresses on all the enterprise sites is different | |||
than in IPv4 where [RFC1918] addresses are often used internally and | than in IPv4, where [RFC1918] addresses are often used internally and | |||
not routed over the Internet. [RFC7359] and [WEBER_VPN] explain that | not routed over the Internet. [RFC7359] and [WEBER_VPN] explain that | |||
without careful design, there could be IPv6 leakages from layer-3 | without careful design, there could be IPv6 leakages from Layer 3 | |||
VPNs. | VPNs. | |||
3.2. Internal Security Considerations | 3.2. Internal Security Considerations | |||
The internal aspect deals with providing security inside the | The internal aspect deals with providing security inside the | |||
perimeter of the network, including end hosts. Internal networks of | perimeter of the network, including end hosts. Internal networks of | |||
enterprises are often different: University campus, wireless guest | enterprises are often different, e.g., University campus, wireless | |||
access, ... so there is no "one size fits all" recommendation. | guest access, etc., so there is no "one size fits all" | |||
recommendation. | ||||
The most significant concerns here are related to Neighbor Discovery. | The most significant concerns here are related to Neighbor Discovery. | |||
At the network level, it is recommended that all security | At the network level, it is recommended that all security | |||
considerations discussed in Section 2.3 be reviewed carefully and the | considerations discussed in Section 2.3 be reviewed carefully and the | |||
recommendations be considered in-depth as well. Section 4.1 of | recommendations be considered in-depth as well. Section 4.1 of | |||
[RFC7381] also provides some recommendations. | [RFC7381] also provides some recommendations. | |||
As mentioned in Section 2.7.2, care must be taken when running | As mentioned in Section 2.7.2, care must be taken when running | |||
automated IPv6-in-IPv4 tunnels. | automated IPv6-in-IPv4 tunnels. | |||
When site-to-site VPNs are used it should be kept in mind that, given | When site-to-site VPNs are used, it should be kept in mind that, | |||
the global scope of IPv6 global addresses as opposed to the common | given the global scope of IPv6 global addresses as opposed to the | |||
use of IPv4 private address space [RFC1918], sites might be able to | common use of IPv4 private address space [RFC1918], sites might be | |||
communicate with each other over the Internet even when the VPN | able to communicate with each other over the Internet even when the | |||
mechanism is not available and hence no traffic encryption is | VPN mechanism is not available. Hence, no traffic encryption is | |||
performed and traffic could be injected from the Internet into the | performed and traffic could be injected from the Internet into the | |||
site, see [WEBER_VPN]. It is recommended to filter at Internet | site; see [WEBER_VPN]. It is recommended to filter at Internet | |||
connection(s) packets having a source or destination address | connection(s) packets having a source or destination address | |||
belonging to the site internal prefix(es); this should be done for | belonging to the site internal prefix or prefixes; this should be | |||
ingress and egress traffic. | done for ingress and egress traffic. | |||
Hosts need to be hardened directly through security policy to protect | Hosts need to be hardened directly through security policy to protect | |||
against security threats. The host firewall default capabilities | against security threats. The host firewall default capabilities | |||
have to be clearly understood. In some cases, 3rd party firewalls | have to be clearly understood. In some cases, third-party firewalls | |||
have no IPv6 support whereas the native firewall installed by default | have no IPv6 support, whereas the native firewall installed by | |||
has IPv6 support. General device hardening guidelines are provided | default has IPv6 support. General device hardening guidelines are | |||
in Section 2.8. | provided in Section 2.8. | |||
It should also be noted that many hosts still use IPv4 for | It should also be noted that many hosts still use IPv4 for | |||
transporting logs for RADIUS, DIAMETER, TACACS+, SYSLOG, etc. | transporting logs for RADIUS, DIAMETER, TACACS+, syslog, etc. | |||
Operators cannot rely on an IPv6-only security policy to secure such | Operators cannot rely on an IPv6-only security policy to secure such | |||
protocols that are still using IPv4. | protocols that are still using IPv4. | |||
4. Service Providers Security Considerations | 4. Service Provider Security Considerations | |||
4.1. BGP | 4.1. BGP | |||
The threats and mitigation techniques are identical between IPv4 and | The threats and mitigation techniques are identical between IPv4 and | |||
IPv6. Broadly speaking they are: | IPv6. Broadly speaking, they are: | |||
o Authenticating the TCP session; | * authenticating the TCP session; | |||
o TTL security (which becomes hop-limit security in IPv6) as | * TTL security (which becomes hop-limit security in IPv6), as in | |||
[RFC5082]; | [RFC5082]; | |||
o bogon AS filtering, see [CYMRU]; | * bogon AS filtering; see [CYMRU]; and | |||
o Prefix filtering. | * prefix filtering. | |||
These are explained in more detail in Section 2.5. Also, the | These are explained in more detail in Section 2.5. Also, the | |||
recommendations of [RFC7454] should be considered. | recommendations of [RFC7454] should be considered. | |||
4.1.1. Remote Triggered Black Hole Filtering (RTBH) | 4.1.1. Remote Triggered Black Hole Filtering | |||
RTBH [RFC5635] works identically in IPv4 and IPv6. IANA has | A Remote Triggered Black Hole (RTBH) [RFC5635] works identically in | |||
allocated the 100::/64 prefix to be used as the discard prefix | IPv4 and IPv6. IANA has allocated the 100::/64 prefix to be used as | |||
[RFC6666] | the discard prefix [RFC6666]. | |||
4.2. Transition/Coexistence Mechanism | 4.2. Transition/Coexistence Mechanism | |||
SPs will typically use transition mechanisms such as 6rd, 6PE, MAP, | SPs will typically use transition mechanisms, such as 6rd, 6PE, MAP, | |||
and NAT64 which have been analyzed in the transition and coexistence | and NAT64, which have been analyzed in the transition and coexistence | |||
Section 2.7 section. | (Section 2.7). | |||
4.3. Lawful Intercept | 4.3. Lawful Intercept | |||
The Lawful Intercept requirements are similar for IPv6 and IPv4 | The lawful intercept requirements are similar for IPv6 and IPv4 | |||
architectures and will be subject to the laws enforced in different | architectures and will be subject to the laws enforced in different | |||
geographic regions. The local issues with each jurisdiction can make | geographic regions. The local issues with each jurisdiction can make | |||
this challenging and both corporate legal and privacy personnel | this challenging and both corporate legal and privacy personnel | |||
should be involved in discussions pertaining to what information gets | should be involved in discussions pertaining to what information gets | |||
logged and with regard to the respective log retention policies for | logged and with regard to the respective log retention policies for | |||
this information. | this information. | |||
The target of interception will usually be a residential subscriber | The target of interception will usually be a residential subscriber | |||
(e.g., his/her PPP session, physical line, or CPE MAC address). In | (e.g., his/her PPP session, physical line, or CPE MAC address). In | |||
the absence of IPv6 NAT on the CPE, IPv6 has the possibility to allow | the absence of IPv6 NAT on the CPE, IPv6 has the possibility to allow | |||
for intercepting the traffic from a single host (i.e., a /128 target) | for intercepting the traffic from a single host (i.e., a /128 target) | |||
rather than the whole set of hosts of a subscriber (which could be a | rather than the whole set of hosts of a subscriber (which could be a | |||
/48, /60, or /64). | /48, /60, or /64). | |||
In contrast, in mobile environments, since the 3GPP specifications | In contrast, in mobile environments, since the 3GPP specifications | |||
allocate a /64 per device, it may be sufficient to intercept traffic | allocate a /64 per device, it may be sufficient to intercept traffic | |||
from the /64 rather than specific /128's (since each time the device | from the /64 rather than specific /128s (since each time the device | |||
establishes a data connection it gets a new IID). | establishes a data connection, it gets a new IID). | |||
5. Residential Users Security Considerations | 5. Residential Users Security Considerations | |||
The IETF Homenet working group is working on standards and guidelines | The IETF Home Networking (homenet) Working Group is working on | |||
for IPv6 residential networks; this obviously includes operational | standards and guidelines for IPv6 residential networks; this | |||
security considerations; but this is still work in progress. | obviously includes operational security considerations, but this is | |||
[RFC8520] is an interesting approach on how firewalls could retrieve | still a work in progress. [RFC8520] is an interesting approach on | |||
and apply specific security policies to some residential devices. | how firewalls could retrieve and apply specific security policies to | |||
some residential devices. | ||||
Some residential users have less experience and knowledge about | Some residential users have less experience and knowledge about | |||
security or networking than experimented operators. As most of the | security or networking than experimented operators. As most of the | |||
recent hosts (e.g., smartphones, tablets) have IPv6 enabled by | recent hosts (e.g., smartphones and tablets) have IPv6 enabled by | |||
default, IPv6 security is important for those users. Even with an | default, IPv6 security is important for those users. Even with an | |||
IPv4-only ISP, those users can get IPv6 Internet access with the help | IPv4-only ISP, those users can get IPv6 Internet access with the help | |||
of Teredo (Section 2.7.2.8) tunnels. Several peer-to-peer programs | of Teredo (Section 2.7.2.8) tunnels. Several peer-to-peer programs | |||
support IPv6 and those programs can initiate a Teredo tunnel through | support IPv6, and those programs can initiate a Teredo tunnel through | |||
an IPv4 residential gateway, with the consequence of making the | an IPv4 residential gateway, with the consequence of making the | |||
internal host reachable from any IPv6 host on the Internet. It is | internal host reachable from any IPv6 host on the Internet. | |||
therefore recommended that all host security products (including | Therefore, it is recommended that all host security products | |||
personal firewalls) are configured with a dual-stack security policy. | (including personal firewalls) are configured with a dual-stack | |||
security policy. | ||||
If the residential CPE has IPv6 connectivity, [RFC7084] defines the | If the residential CPE has IPv6 connectivity, [RFC7084] defines the | |||
requirements of an IPv6 CPE and does not take a position on the | requirements of an IPv6 CPE and does not take a position on the | |||
debate of default IPv6 security policy as defined in [RFC6092]: | debate of default IPv6 security policy, as defined in [RFC6092]: | |||
o outbound only: allowing all internally initiated connections and | outbound only: | |||
block all externally initiated ones, which is a common default | Allowing all internally initiated connections and blocking all | |||
security policy enforced by IPv4 Residential Gateway doing NAPT | externally initiated ones, which is a common default security | |||
but it also breaks the end-to-end reachability promise of IPv6. | policy enforced by IPv4 residential gateway doing NAPT, but it | |||
[RFC6092] lists several recommendations to design such a CPE; | also breaks the end-to-end reachability promise of IPv6. | |||
[RFC6092] lists several recommendations to design such a CPE. | ||||
o open/transparent: allowing all internally and externally initiated | open/transparent: | |||
connections, therefore restoring the end-to-end nature of the | Allowing all internally and externally initiated connections, | |||
Internet for IPv6 traffic but having a different security policy | therefore, restoring the end-to-end nature of the Internet for | |||
for IPv6 than for IPv4. | IPv6 traffic but having a different security policy for IPv6 than | |||
for IPv4. | ||||
[RFC6092] REC-49 states that a choice must be given to the user to | REC-49 states that a choice must be given to the user to select one | |||
select one of those two policies. | of those two policies [RFC6092]. | |||
6. Further Reading | 6. Further Reading | |||
There are several documents that describe in more detail the security | There are several documents that describe in more detail the security | |||
of an IPv6 network; these documents are not written by the IETF and | of an IPv6 network; these documents are not written by the IETF and | |||
some of them are dated but are listed here for the reader's | some of them are dated but are listed here for the reader's | |||
convenience: | convenience: | |||
1. Guidelines for the Secure Deployment of IPv6 [NIST] | * Guidelines for the Secure Deployment of IPv6 [NIST] | |||
2. North American IPv6 Task Force Technology Report - IPv6 Security | ||||
Technology Paper [NAv6TF_Security] | ||||
3. IPv6 Security [IPv6_Security_Book] | ||||
7. Acknowledgements | * North American IPv6 Task Force Technology Report - IPv6 Security | |||
Technology Paper [NAv6TF_Security] | ||||
The authors would like to thank the following people for their useful | * IPv6 Security [IPv6_Security_Book] | |||
comments: Mikael Abrahamsson, Fred Baker, Mustafa Suha Botsali, | ||||
Mohamed Boucadair, Brian Carpenter, Tim Chown, Lorenzo Colitti, Roman | ||||
Danyliw (IESG review), Markus de Bruen, Lars Eggert (IESG review), | ||||
Tobias Fiebig, Fernando Gont, Jeffry Handal, Lee Howard, Benjamin | ||||
Kaduk (IESG review), Panos Kampanakis, Erik Kline, Jouni Korhonen, | ||||
Warren Kumari (IESG review), Ted Lemon, Mark Lentczner, Acee Lindem | ||||
(and his detailed nits), Jen Linkova (and her detailed review), Gyan | ||||
S. Mishra (the document shepherd), Jordi Palet, Alvaro Retana (IESG | ||||
review), Zaheduzzaman Sarker (IESG review), Bob Sleigh, Donald Smith, | ||||
Tarko Tikan, Ole Troan, Bernie Volz (by alphabetical order). | ||||
8. Security Considerations | 7. Security Considerations | |||
This memo attempts to give an overview of security considerations of | This memo attempts to give an overview of security considerations of | |||
operating an IPv6 network both for an IPv6-only network and for | operating an IPv6 network both for an IPv6-only network and for | |||
networks utilizing the most widely deployed IPv4/IPv6 coexistence | networks utilizing the most widely deployed IPv4/IPv6 coexistence | |||
strategies. | strategies. | |||
8. IANA Considerations | ||||
This document has no IANA actions. | ||||
9. References | 9. References | |||
9.1. Normative References | 9.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | ||||
Requirement Levels", BCP 14, RFC 2119, | ||||
DOI 10.17487/RFC2119, March 1997, | ||||
<https://www.rfc-editor.org/info/rfc2119>. | ||||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | ||||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | ||||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
[RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | |||
(IPv6) Specification", STD 86, RFC 8200, | (IPv6) Specification", STD 86, RFC 8200, | |||
DOI 10.17487/RFC8200, July 2017, | DOI 10.17487/RFC8200, July 2017, | |||
<https://www.rfc-editor.org/info/rfc8200>. | <https://www.rfc-editor.org/info/rfc8200>. | |||
9.2. Informative References | 9.2. Informative References | |||
[CYMRU] Team, C., "The Bogon Reference", Existing in 2021, | [CYMRU] Team Cymru, "The Bogon Reference", <https://team- | |||
<https://team-cymru.com/community-services/bogon- | cymru.com/community-services/bogon-reference/>. | |||
reference/>. | ||||
[ENTROPYIP] | [ENTROPYIP] | |||
Foremski, P., Plonka, D., and A. Berger, "Entropy/IP: | Foremski, P., Plonka, D., and A. Berger, "Entropy/IP: | |||
Uncovering Structure in IPv6 Addresses", | Uncovering Structure in IPv6 Addresses", November 2016, | |||
<http://www.entropy-ip.com/>. | <http://www.entropy-ip.com/>. | |||
[europol-cgn] | [europol-cgn] | |||
Europol, "ARE YOU SHARING THE SAME IP ADDRESS AS A | Europol, "Are you sharing the same IP address as a | |||
CRIMINAL? LAW ENFORCEMENT CALL FOR THE END OF CARRIER | criminal? Law enforcement call for the end of Carrier | |||
GRADE NAT (CGN) TO INCREASE ACCOUNTABILITY ONLINE", | Grade Nat (CGN) to increase accountability online", | |||
October 2017, | October 2017, | |||
<https://www.europol.europa.eu/newsroom/news/are-you- | <https://www.europol.europa.eu/newsroom/news/are-you- | |||
sharing-same-ip-address-criminal-law-enforcement-call-for- | sharing-same-ip-address-criminal-law-enforcement-call-for- | |||
end-of-carrier-grade-nat-cgn-to-increase-accountability- | end-of-carrier-grade-nat-cgn-to-increase-accountability- | |||
online>. | online>. | |||
[GDPR] Union, O. J. O. T. E., "Regulation (EU) 2016/679 of the | [GDPR] European Union, "Regulation (EU) 2016/679 of the European | |||
European Parliament and of the Council of 27 April 2016 on | Parliament and of the Council of 27 April 2016 on the | |||
the protection of natural persons with regard to the | protection of natural persons with regard to the | |||
processing of personal data and on the free movement of | processing of personal data and on the free movement of | |||
such data, and repealing Directive 95/46/EC (General Data | such data, and repealing Directive 95/46/EC (General Data | |||
Protection Regulation)", April 2016, | Protection Regulation)", Official Journal of the European | |||
Union, April 2016, | ||||
<https://eur-lex.europa.eu/eli/reg/2016/679/oj>. | <https://eur-lex.europa.eu/eli/reg/2016/679/oj>. | |||
[I-D.ietf-opsec-ipv6-eh-filtering] | ||||
Gont, F. and W. Liu, "Recommendations on the Filtering of | ||||
IPv6 Packets Containing IPv6 Extension Headers at Transit | ||||
Routers", draft-ietf-opsec-ipv6-eh-filtering-07 (work in | ||||
progress), January 2021. | ||||
[I-D.kampanakis-6man-ipv6-eh-parsing] | ||||
Kampanakis, P., "Implementation Guidelines for parsing | ||||
IPv6 Extension Headers", draft-kampanakis-6man-ipv6-eh- | ||||
parsing-01 (work in progress), August 2014. | ||||
[IANA-IPFIX] | [IANA-IPFIX] | |||
IANA, "IP Flow Information Export (IPFIX) Entities", | IANA, "IP Flow Information Export (IPFIX) Entities", | |||
<http://www.iana.org/assignments/ipfix>. | <http://www.iana.org/assignments/ipfix>. | |||
[IEEE-802.1X] | [IEEE-802.1X] | |||
IEEE, "IEEE Standard for Local and metropolitan area | IEEE, "IEEE Standard for Local and Metropolitan Area | |||
networks - Port-Based Network Access Control", IEEE Std | Networks--Port-Based Network Access Control", IEEE Std | |||
802.1X-2010, February 2010. | 802.1X-2020, February 2020. | |||
[IPV6-EH-FILTERING] | ||||
Gont, F. and W. Liu, "Recommendations on the Filtering of | ||||
IPv6 Packets Containing IPv6 Extension Headers at Transit | ||||
Routers", Work in Progress, Internet-Draft, draft-ietf- | ||||
opsec-ipv6-eh-filtering-08, 3 June 2021, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-opsec- | ||||
ipv6-eh-filtering-08>. | ||||
[IPV6-EH-PARSING] | ||||
Kampanakis, P., "Implementation Guidelines for parsing | ||||
IPv6 Extension Headers", Work in Progress, Internet-Draft, | ||||
draft-kampanakis-6man-ipv6-eh-parsing-01, 5 August 2014, | ||||
<https://datatracker.ietf.org/doc/html/draft-kampanakis- | ||||
6man-ipv6-eh-parsing-01>. | ||||
[IPv6_Security_Book] | [IPv6_Security_Book] | |||
Hogg, S. and E. Vyncke, "IPv6 Security", | Hogg, S. and É. Vyncke, "IPv6 Security", CiscoPress, | |||
ISBN 1-58705-594-5, Publisher CiscoPress, December 2008. | ISBN 1587055945, December 2008. | |||
[KRISTOFF] | [KRISTOFF] Kristoff, J., Ghasemisharif, M., Kanich, C., and J. | |||
Kristoff, J., Ghasemisharif, M., Kanich, C., and J. | ||||
Polakis, "Plight at the End of the Tunnel: Legacy IPv6 | Polakis, "Plight at the End of the Tunnel: Legacy IPv6 | |||
Transition Mechanisms in the Wild", March 2021, | Transition Mechanisms in the Wild", March 2021, | |||
<https://dataplane.org/jtk/publications/kgkp-pam-21.pdf>. | <https://dataplane.org/jtk/publications/kgkp-pam-21.pdf>. | |||
[NAv6TF_Security] | [NAv6TF_Security] | |||
Kaeo, M., Green, D., Bound, J., and Y. Pouffary, "North | Kaeo, M., Green, D., Bound, J., and Y. Pouffary, "North | |||
American IPv6 Task Force Technology Report - IPv6 Security | American IPv6 Task Force (NAv6TF) Technology Report "IPv6 | |||
Technology Paper", 2006, | Security Technology Paper", July 2006, | |||
<http://www.ipv6forum.com/dl/white/ | <http://www.ipv6forum.com/dl/white/ | |||
NAv6TF_Security_Report.pdf>. | NAv6TF_Security_Report.pdf>. | |||
[NIST] Frankel, S., Graveman, R., Pearce, J., and M. Rooks, | [NIST] Frankel, S., Graveman, R., Pearce, J., and M. Rooks, | |||
"Guidelines for the Secure Deployment of IPv6", 2010, | "Guidelines for the Secure Deployment of IPv6", December | |||
<http://csrc.nist.gov/publications/nistpubs/800-119/ | 2010, <http://csrc.nist.gov/publications/nistpubs/800-119/ | |||
sp800-119.pdf>. | sp800-119.pdf>. | |||
[RADB] INC., M. N., "RADb The Internet Routing Registry", | [RADB] Merit Network, Inc., "RADb: The Internet Routing | |||
Existing in 2021, <https://www.radb.net/>. | Registry", <https://www.radb.net/>. | |||
[REY_PF] Rey, E., "Local Packet Filtering with IPv6", July 2017, | [REY_PF] Rey, E., "Local Packet Filtering with IPv6", July 2017, | |||
<https://labs.ripe.net/Members/enno_rey/local-packet- | <https://labs.ripe.net/Members/enno_rey/local-packet- | |||
filtering-with-ipv6>. | filtering-with-ipv6>. | |||
[RFC0826] Plummer, D., "An Ethernet Address Resolution Protocol: Or | [RFC0826] Plummer, D., "An Ethernet Address Resolution Protocol: Or | |||
Converting Network Protocol Addresses to 48.bit Ethernet | Converting Network Protocol Addresses to 48.bit Ethernet | |||
Address for Transmission on Ethernet Hardware", STD 37, | Address for Transmission on Ethernet Hardware", STD 37, | |||
RFC 826, DOI 10.17487/RFC0826, November 1982, | RFC 826, DOI 10.17487/RFC0826, November 1982, | |||
<https://www.rfc-editor.org/info/rfc826>. | <https://www.rfc-editor.org/info/rfc826>. | |||
[RFC1918] Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G., | [RFC1918] Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G. | |||
and E. Lear, "Address Allocation for Private Internets", | J., and E. Lear, "Address Allocation for Private | |||
BCP 5, RFC 1918, DOI 10.17487/RFC1918, February 1996, | Internets", BCP 5, RFC 1918, DOI 10.17487/RFC1918, | |||
<https://www.rfc-editor.org/info/rfc1918>. | February 1996, <https://www.rfc-editor.org/info/rfc1918>. | |||
[RFC2131] Droms, R., "Dynamic Host Configuration Protocol", | [RFC2131] Droms, R., "Dynamic Host Configuration Protocol", | |||
RFC 2131, DOI 10.17487/RFC2131, March 1997, | RFC 2131, DOI 10.17487/RFC2131, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2131>. | <https://www.rfc-editor.org/info/rfc2131>. | |||
[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | |||
(IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460, | (IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460, | |||
December 1998, <https://www.rfc-editor.org/info/rfc2460>. | December 1998, <https://www.rfc-editor.org/info/rfc2460>. | |||
[RFC2529] Carpenter, B. and C. Jung, "Transmission of IPv6 over IPv4 | [RFC2529] Carpenter, B. and C. Jung, "Transmission of IPv6 over IPv4 | |||
skipping to change at page 45, line 45 ¶ | skipping to change at line 2161 ¶ | |||
[RFC3704] Baker, F. and P. Savola, "Ingress Filtering for Multihomed | [RFC3704] Baker, F. and P. Savola, "Ingress Filtering for Multihomed | |||
Networks", BCP 84, RFC 3704, DOI 10.17487/RFC3704, March | Networks", BCP 84, RFC 3704, DOI 10.17487/RFC3704, March | |||
2004, <https://www.rfc-editor.org/info/rfc3704>. | 2004, <https://www.rfc-editor.org/info/rfc3704>. | |||
[RFC3756] Nikander, P., Ed., Kempf, J., and E. Nordmark, "IPv6 | [RFC3756] Nikander, P., Ed., Kempf, J., and E. Nordmark, "IPv6 | |||
Neighbor Discovery (ND) Trust Models and Threats", | Neighbor Discovery (ND) Trust Models and Threats", | |||
RFC 3756, DOI 10.17487/RFC3756, May 2004, | RFC 3756, DOI 10.17487/RFC3756, May 2004, | |||
<https://www.rfc-editor.org/info/rfc3756>. | <https://www.rfc-editor.org/info/rfc3756>. | |||
[RFC3924] Baker, F., Foster, B., and C. Sharp, "Cisco Architecture | ||||
for Lawful Intercept in IP Networks", RFC 3924, | ||||
DOI 10.17487/RFC3924, October 2004, | ||||
<https://www.rfc-editor.org/info/rfc3924>. | ||||
[RFC3964] Savola, P. and C. Patel, "Security Considerations for | [RFC3964] Savola, P. and C. Patel, "Security Considerations for | |||
6to4", RFC 3964, DOI 10.17487/RFC3964, December 2004, | 6to4", RFC 3964, DOI 10.17487/RFC3964, December 2004, | |||
<https://www.rfc-editor.org/info/rfc3964>. | <https://www.rfc-editor.org/info/rfc3964>. | |||
[RFC3971] Arkko, J., Ed., Kempf, J., Zill, B., and P. Nikander, | [RFC3971] Arkko, J., Ed., Kempf, J., Zill, B., and P. Nikander, | |||
"SEcure Neighbor Discovery (SEND)", RFC 3971, | "SEcure Neighbor Discovery (SEND)", RFC 3971, | |||
DOI 10.17487/RFC3971, March 2005, | DOI 10.17487/RFC3971, March 2005, | |||
<https://www.rfc-editor.org/info/rfc3971>. | <https://www.rfc-editor.org/info/rfc3971>. | |||
[RFC3972] Aura, T., "Cryptographically Generated Addresses (CGA)", | [RFC3972] Aura, T., "Cryptographically Generated Addresses (CGA)", | |||
skipping to change at page 53, line 5 ¶ | skipping to change at line 2499 ¶ | |||
[RFC7039] Wu, J., Bi, J., Bagnulo, M., Baker, F., and C. Vogt, Ed., | [RFC7039] Wu, J., Bi, J., Bagnulo, M., Baker, F., and C. Vogt, Ed., | |||
"Source Address Validation Improvement (SAVI) Framework", | "Source Address Validation Improvement (SAVI) Framework", | |||
RFC 7039, DOI 10.17487/RFC7039, October 2013, | RFC 7039, DOI 10.17487/RFC7039, October 2013, | |||
<https://www.rfc-editor.org/info/rfc7039>. | <https://www.rfc-editor.org/info/rfc7039>. | |||
[RFC7045] Carpenter, B. and S. Jiang, "Transmission and Processing | [RFC7045] Carpenter, B. and S. Jiang, "Transmission and Processing | |||
of IPv6 Extension Headers", RFC 7045, | of IPv6 Extension Headers", RFC 7045, | |||
DOI 10.17487/RFC7045, December 2013, | DOI 10.17487/RFC7045, December 2013, | |||
<https://www.rfc-editor.org/info/rfc7045>. | <https://www.rfc-editor.org/info/rfc7045>. | |||
[RFC7050] Savolainen, T., Korhonen, J., and D. Wing, "Discovery of | ||||
the IPv6 Prefix Used for IPv6 Address Synthesis", | ||||
RFC 7050, DOI 10.17487/RFC7050, November 2013, | ||||
<https://www.rfc-editor.org/info/rfc7050>. | ||||
[RFC7084] Singh, H., Beebee, W., Donley, C., and B. Stark, "Basic | [RFC7084] Singh, H., Beebee, W., Donley, C., and B. Stark, "Basic | |||
Requirements for IPv6 Customer Edge Routers", RFC 7084, | Requirements for IPv6 Customer Edge Routers", RFC 7084, | |||
DOI 10.17487/RFC7084, November 2013, | DOI 10.17487/RFC7084, November 2013, | |||
<https://www.rfc-editor.org/info/rfc7084>. | <https://www.rfc-editor.org/info/rfc7084>. | |||
[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, | Oversized IPv6 Header Chains", RFC 7112, | |||
DOI 10.17487/RFC7112, January 2014, | DOI 10.17487/RFC7112, January 2014, | |||
<https://www.rfc-editor.org/info/rfc7112>. | <https://www.rfc-editor.org/info/rfc7112>. | |||
skipping to change at page 57, line 25 ¶ | skipping to change at line 2698 ¶ | |||
Shortest Path First (SPF) Trigger and Delay Strategies on | Shortest Path First (SPF) Trigger and Delay Strategies on | |||
IGP Micro-loops", RFC 8541, DOI 10.17487/RFC8541, March | IGP Micro-loops", RFC 8541, DOI 10.17487/RFC8541, March | |||
2019, <https://www.rfc-editor.org/info/rfc8541>. | 2019, <https://www.rfc-editor.org/info/rfc8541>. | |||
[RFC8981] Gont, F., Krishnan, S., Narten, T., and R. Draves, | [RFC8981] Gont, F., Krishnan, S., Narten, T., and R. Draves, | |||
"Temporary Address Extensions for Stateless Address | "Temporary Address Extensions for Stateless Address | |||
Autoconfiguration in IPv6", RFC 8981, | Autoconfiguration in IPv6", RFC 8981, | |||
DOI 10.17487/RFC8981, February 2021, | DOI 10.17487/RFC8981, February 2021, | |||
<https://www.rfc-editor.org/info/rfc8981>. | <https://www.rfc-editor.org/info/rfc8981>. | |||
[SCANNING] | [SCANNING] Barnes, R., Altmann, R., and D. Kerr, "Mapping the Great | |||
Barnes, R., Altmann, R., and D. Kerr, "Mapping the Great | ||||
Void - Smarter scanning for IPv6", February 2012, | Void - Smarter scanning for IPv6", February 2012, | |||
<http://www.caida.org/workshops/isma/1202/slides/ | <http://www.caida.org/workshops/isma/1202/slides/ | |||
aims1202_rbarnes.pdf>. | aims1202_rbarnes.pdf>. | |||
[WEBER_VPN] | [WEBER_VPN] | |||
Weber, J., "Dynamic IPv6 Prefix - Problems and VPNs", | Weber, J., "Dynamic IPv6 Prefix - Problems and VPNs", | |||
March 2018, <https://blog.webernetz.net/wp- | March 2018, <https://blog.webernetz.net/wp- | |||
content/uploads/2018/03/TR18-Johannes-Weber-Dynamic-IPv6- | content/uploads/2018/03/TR18-Johannes-Weber-Dynamic-IPv6- | |||
Prefix-Problems-and-VPNs.pdf>. | Prefix-Problems-and-VPNs.pdf>. | |||
Acknowledgements | ||||
The authors would like to thank the following people for their useful | ||||
comments (in alphabetical order): Mikael Abrahamsson, Fred Baker, | ||||
Mustafa Suha Botsali, Mohamed Boucadair, Brian Carpenter, Tim Chown, | ||||
Lorenzo Colitti, Roman Danyliw (IESG Review), Markus de Bruen, Lars | ||||
Eggert (IESG review), Tobias Fiebig, Fernando Gont, Jeffry Handal, | ||||
Lee Howard, Benjamin Kaduk (IESG review), Panos Kampanakis, Erik | ||||
Kline, Jouni Korhonen, Warren Kumari (IESG review), Ted Lemon, Mark | ||||
Lentczner, Acee Lindem (and his detailed nits), Jen Linkova (and her | ||||
detailed review), Gyan S. Mishra (the Document Shepherd), Jordi | ||||
Palet, Alvaro Retana (IESG review), Zaheduzzaman Sarker (IESG | ||||
review), Bob Sleigh, Donald Smith, Tarko Tikan, Ole Troan, and Bernie | ||||
Volz. | ||||
Authors' Addresses | Authors' Addresses | |||
Eric Vyncke | Éric Vyncke | |||
Cisco | Cisco | |||
De Kleetlaan 6a | De Kleetlaan 6a | |||
Diegem 1831 | 1831 Diegem | |||
Belgium | Belgium | |||
Phone: +32 2 778 4677 | Phone: +32 2 778 4677 | |||
Email: evyncke@cisco.com | Email: evyncke@cisco.com | |||
Kiran Kumar | ||||
Square | Kiran Kumar Chittimaneni | |||
1455 Market Street, Suite 600 | ||||
San Francisco 94103 | ||||
United States of America | ||||
Email: kk.chittimaneni@gmail.com | Email: kk.chittimaneni@gmail.com | |||
Merike Kaeo | Merike Kaeo | |||
Double Shot Security | Double Shot Security | |||
3518 Fremont Ave N 363 | 3518 Fremont Ave N 363 | |||
Seattle 98103 | Seattle, 98103 | |||
United States of America | United States of America | |||
Phone: +12066696394 | Phone: +12066696394 | |||
Email: merike@doubleshotsecurity.com | Email: merike@doubleshotsecurity.com | |||
Enno Rey | Enno Rey | |||
ERNW | ERNW | |||
Carl-Bosch-Str. 4 | Carl-Bosch-Str. 4 | |||
Heidelberg, Baden-Wuertemberg 69115 | 69115 Heidelberg Baden-Wuertemberg | |||
Germany | Germany | |||
Phone: +49 6221 480390 | Phone: +49 6221 480390 | |||
Email: erey@ernw.de | Email: erey@ernw.de | |||
End of changes. 349 change blocks. | ||||
879 lines changed or deleted | 911 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/ |