| 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/ | ||||