<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC0826 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.0826.xml">
<!ENTITY RFC1918 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.1918.xml">
<!ENTITY RFC2119 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2131 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2131.xml">
<!ENTITY RFC2460 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2460.xml">
<!ENTITY RFC2529 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2529.xml">
<!ENTITY RFC2663 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2663.xml">
<!ENTITY RFC2784 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2784.xml">
<!ENTITY RFC2827 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2827.xml">
<!ENTITY RFC2866 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2866.xml">
<!ENTITY RFC3056 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3056.xml">
<!-- RFC 3068 has been obsoleted by RFC 7526 but it is kept here for reference -->
<!ENTITY RFC3068 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3068.xml">
<!-- RFC 3637 has been obsoleted by RFC 6547 but it is kept here for reference -->
<!ENTITY RFC3627 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3627.xml">
<!ENTITY RFC3704 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3704.xml">
<!ENTITY RFC3756 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3756.xml">
<!ENTITY RFC3924 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3924.xml">
<!ENTITY RFC3964 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3964.xml">
<!ENTITY RFC3971 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3971.xml">
<!ENTITY RFC3972 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3972.xml">
<!ENTITY RFC4033 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4033.xml">
<!ENTITY RFC4193 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4193.xml">
<!ENTITY RFC4293 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4293.xml">
<!ENTITY RFC4301 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4301.xml">
<!ENTITY RFC4302 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4302.xml">
<!ENTITY RFC4303 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4303.xml">
<!ENTITY RFC4364 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4364.xml">
<!ENTITY RFC4380 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4380.xml">
<!ENTITY RFC4381 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4381.xml">
<!ENTITY RFC4443 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4443.xml">
<!ENTITY RFC4552 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4552.xml">
<!ENTITY RFC4649 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4649.xml">
<!ENTITY RFC4659 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4659.xml">
<!ENTITY RFC4798 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4798.xml">
<!ENTITY RFC4861 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4861.xml">
<!ENTITY RFC4864 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4864.xml">
<!ENTITY RFC4890 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4890.xml">
<!ENTITY RFC4941 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4941.xml">
<!ENTITY RFC4942 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4942.xml">
<!ENTITY RFC5082 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5082.xml">
<!ENTITY RFC5214 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5214.xml">
<!ENTITY RFC5340 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5340.xml">
<!ENTITY RFC5635 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5635.xml">
<!ENTITY RFC5952 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5952.xml">
<!ENTITY RFC5969 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5969.xml">
<!ENTITY RFC6092 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6092.xml">
<!ENTITY RFC6104 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6104.xml">
<!ENTITY RFC6105 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6105.xml">
<!ENTITY RFC6144 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6144.xml">
<!ENTITY RFC6146 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6146.xml">
<!ENTITY RFC6147 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6147.xml">
<!ENTITY RFC6164 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6164.xml">
<!ENTITY RFC6169 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6169.xml">
<!ENTITY RFC6177 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6177.xml">
<!ENTITY RFC6192 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6192.xml">
<!ENTITY RFC6221 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6221.xml">
<!ENTITY RFC6241 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6241.xml">
<!ENTITY RFC6264 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6264.xml">
<!ENTITY RFC6269 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6269.xml">
<!ENTITY RFC6296 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6296.xml">
<!ENTITY RFC6302 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6302.xml">
<!ENTITY RFC6324 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6324.xml">
<!ENTITY RFC6333 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6333.xml">
<!ENTITY RFC6343 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6343.xml">
<!ENTITY RFC6459 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6459.xml">
<!ENTITY RFC6547 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6547.xml">
<!ENTITY RFC6564 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6564.xml">
<!ENTITY RFC6583 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6583.xml">
<!ENTITY RFC6598 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6598.xml">
<!ENTITY RFC6620 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6620.xml">
<!ENTITY RFC6666 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6666.xml">
<!ENTITY RFC6762 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6762.xml">
<!ENTITY RFC6763 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6763.xml">
<!ENTITY RFC6775 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6775.xml">
<!ENTITY RFC6877 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6877.xml">
<!ENTITY RFC6888 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6888.xml">
<!ENTITY RFC6939 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6939.xml">
<!ENTITY RFC6964 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6964.xml">
<!ENTITY RFC6967 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6967.xml">
<!ENTITY RFC6980 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6980.xml">
<!ENTITY RFC7010 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7010.xml">
<!ENTITY RFC7011 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7011.xml">
<!ENTITY RFC7012 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7012.xml">
<!ENTITY RFC7039 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7039.xml">
<!ENTITY RFC7045 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7045.xml">
<!ENTITY RFC7050 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7050.xml">
<!ENTITY RFC7084 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7084.xml">
<!ENTITY RFC7112 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7112.xml">
<!ENTITY RFC7113 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7113.xml">
<!ENTITY RFC7123 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7123.xml">
<!ENTITY RFC7166 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7166.xml">
<!ENTITY RFC7217 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7217.xml">
<!ENTITY RFC7359 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7359.xml">
<!ENTITY RFC7381 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7381.xml">
<!ENTITY RFC7404 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7404.xml">
<!ENTITY RFC7422 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7422.xml">
<!ENTITY RFC7454 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7454.xml">
<!ENTITY RFC7513 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7513.xml">
<!ENTITY RFC7526 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7526.xml">
<!ENTITY RFC7552 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7552.xml">
<!ENTITY RFC7597 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7597.xml">
<!ENTITY RFC7599 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7599.xml">
<!ENTITY RFC7610 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7610.xml">
<!ENTITY RFC7707 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7707.xml">
<!ENTITY RFC7721 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7721.xml">
<!ENTITY RFC7772 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7772.xml">
<!ENTITY RFC7785 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7785.xml">
<!ENTITY RFC7824 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7824.xml">
<!ENTITY RFC7844 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7844.xml">
<!ENTITY RFC7872 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7872.xml">
<!ENTITY RFC7857 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7857.xml">
<!ENTITY RFC7915 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7915.xml">
<!ENTITY RFC7934 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7934.xml">
<!ENTITY RFC8040 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8040.xml">
<!ENTITY RFC8064 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8064.xml">
<!ENTITY RFC8174 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8190 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8190.xml">
<!ENTITY RFC8200 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8200.xml">
<!ENTITY RFC8210 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8210.xml">
<!ENTITY RFC8273 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8273.xml">
<!ENTITY RFC8343 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8343.xml">
<!ENTITY RFC8344 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8344.xml">
<!ENTITY RFC8415 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8415.xml">
<!ENTITY RFC8504 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8504.xml">
<!ENTITY RFC8520 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8520.xml">
<!-- active IETF drafts -->
<!ENTITY I-D.ietf-opsec-ipv6-eh-filtering SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-opsec-ipv6-eh-filtering.xml">
]>
<?rfc autobreaks="yes"?>
<?rfc compact="yes"?>
<?rfc strict='yes'?>
<?rfc subcompact="no"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc toc="yes"?>
<?rfc tocindent="yes"?>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<rfc category="info" docName="draft-ietf-opsec-v6-24" ipr="trust200902">
  <!-- ***** FRONT MATTER ***** -->

  <front>
    <!-- The abbreviated title is used in the page header - it is only necessary if the 
         full title is longer than 39 characters -->

    <title abbrev="OPsec IPv6">Operational Security Considerations for IPv6
    Networks</title>

    <!-- add 'role="editor"' below for the editors if appropriate -->

    <author fullname="Eric Vyncke" initials="E" surname="Vyncke">
      <organization>Cisco</organization>

      <address>
        <postal>
          <street>De Kleetlaan 6a</street>

          <city>Diegem</city>

          <country>Belgium</country>

          <code>1831</code>
        </postal>

        <phone>+32 2 778 4677</phone>

        <email>evyncke@cisco.com</email>
      </address>
    </author>

    <author fullname="Kiran Kumar" initials="K" surname="Chittimaneni">
      <organization>WeWork</organization>

      <address>
        <postal>
          <street>415 Mission St.</street>

          <city>San Francisco</city>

          <country>United States of America</country>

          <code>94105</code>
        </postal>

        <email>kk.chittimaneni@gmail.com</email>
      </address>
    </author>

    <author fullname="Merike Kaeo" initials="M" surname="Kaeo">
      <organization>Double Shot Security</organization>

      <address>
        <postal>
          <street>3518 Fremont Ave N 363</street>

          <city>Seattle</city>

          <country>United States of America</country>

          <code>98103</code>
        </postal>

        <phone>+12066696394</phone>

        <email>merike@doubleshotsecurity.com</email>
      </address>
    </author>

    <author fullname="Enno Rey" initials="E" surname="Rey">
      <organization>ERNW</organization>

      <address>
        <postal>
          <street>Carl-Bosch-Str. 4</street>

          <city>Heidelberg</city>

          <region>Baden-Wuertemberg</region>

          <code>69115</code>

          <country>Germany</country>
        </postal>

        <phone>+49 6221 480390</phone>

        <facsimile/>

        <email>erey@ernw.de</email>

        <uri/>
      </address>
    </author>

    <date day="12" month="February" year="2021"/>

    <!-- Meta-data Declarations -->

    <area>Operations and Management</area>

    <workgroup>OPSEC</workgroup>

    <keyword>IPv6</keyword>

    <keyword>Security</keyword>

    <keyword>Operational Security</keyword>

    <abstract>
      <t>Knowledge and experience on how to operate IPv4 securely is
      available: whether it is the Internet or an enterprise internal network.
      However, IPv6 presents some new security challenges. RFC 4942 describes
      the security issues in the protocol, but network managers also need a
      more practical, operations-minded document to enumerate advantages
      and/or disadvantages of certain choices.</t>

      <t>This document analyzes the operational security issues associated
      with several types of network and proposes technical and procedural
      mitigation techniques. This document is only applicable to managed
      networks, such as enterprise building networks. The recommendations in
      this document are not applicable to residential user cases, even in
      cases where a Service Provider may be managing the home gateway.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>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
      there are subtle but critical and important differences between IPv4 and
      IPv6, especially with respect to security. For example, all layer-2
      interactions are now done using Neighbor Discovery Protocol <xref
      target="RFC4861"/> rather than using Address Resolution Protocol <xref
      target="RFC0826"/>. Also, there is no Network Address Port Translation
      (NAPT) defined in <xref target="RFC2663"/> for IPv6 even if <xref
      target="RFC6296"/> specifies a Network Prefix Translation for IPv6
      (NPTv6) which is a 1-to-1 mapping of IPv6 addresses.</t>

      <t>IPv6 networks are deployed using a variety of techniques, each of
      which have their own specific security concerns.</t>

      <t>This document complements <xref target="RFC4942"/> by listing all
      security issues when operating a network (including various transition
      technologies). It also provides more recent operational deployment
      experiences where warranted.</t>

      <section title="Applicability Statement">
        <t>This document is applicable to managed networks, i.e., when the
        network is operated by the user organization itself. Indeed, many of
        the recommended mitigation techniques must be configured with the
        detailed knowledge of the network (which are the default router, which
        are the switch trunk ports, etc.). This covers Service Provider (SP),
        enterprise networks and some knowledgeable-home-user-managed
        residential network. This applicability statement especially applies
        to <xref target="linklayer"/> and <xref
        target="rfilter"/>.</t>
        <t>For example, an exception to the generic recommendations of this document is when a residential or enterprise network is multi-homed.</t>
      </section>
    </section>

    <section anchor="generic" title="Generic Security Considerations">
      <section anchor="v6addressing" title="Addressing Architecture">
        <t>IPv6 address allocations and overall architecture are an important
        part of securing IPv6. Initial designs, even if intended to be
        temporary, tend to last much longer than expected. Although initially
        IPv6 was thought to make renumbering easy, in practice it may be
        extremely difficult to renumber without a proper IP Address Management
        (IPAM) system. <xref target="RFC7010"/> introduces the mechanisms that
        could be utilized for IPv6 site renumbering and tries to cover most of
        the explicit issues and requirements associated with IPv6
        renumbering.</t>

        <t>A key task for a successful IPv6 deployment is to prepare an
        addressing plan. Because an abundance of address space is available,
        structuring an address plan around both services and geographic
        locations allow address space to become a basis for more structured
        security policies to permit or deny services between geographic
        regions. <xref target="RFC6177"/> documents some operational
        considerations of using different prefix size for address assignments
        to end sites.</t>

        <t>A common question is whether companies should use Provider
        Independent (PI) vs Provider Allocated (PA) space <xref
        target="RFC7381"/>, but from a security perspective there is little
        difference. However, 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 need to enforce restrictions on
        routability of the space, e.g., due to malicious criminal activity
        originating from it. Relying on PA address may also force the use of
        NPTv6 and therefore augmenting the complexity of the operations
        including the security operations.</t>

        <t>In <xref target="RFC7934"/>, it is recommended that IPv6 network
        deployments provide multiple IPv6 addresses from each prefix to
        general-purpose hosts and it specifically does not recommend limiting
        a host to only one IPv6 address per prefix. It also recommends that
        the network give the host the ability to use new addresses without
        requiring explicit requests (for example by using SLAAC). Having by
        default multiple IPv6 addresses per interface is a major change
        compared to the unique IPv4 address per interface for hosts (secondary
        IPv4 addresses are not common); especially for audits (see section
        <xref target="correlation"/>).</t>

        <!--static-->

        <section anchor="ula" title="Use of ULAs">
          <t>Unique Local Addresses (ULAs) <xref target="RFC4193"/> are
          intended for scenarios where interfaces are not globally reachable,
          despite being routed within a domain. They formally have global
          scope, but <xref target="RFC4193"/> specifies that they must be
          filtered at domain boundaries. ULAs are different from <xref
          target="RFC1918"/> addresses and have different use cases. One use
          of ULA is described in <xref target="RFC4864"/>, another one is for
          internal communication stability in networks where external
          connectivity may came and go (e.g., some ISPs provide ULAs in home
          networks connected via a cable modem).</t>
        </section>

        <!---->

        <section anchor="p2p" title="Point-to-Point Links">
          <t><xref target="RFC6164"/> in section 5.1 specifies the rationale
          of using /127 for inter-router point-to-point links; a /127 prevents
          the ping-pong attack between routers not correctly implementing
          <xref target="RFC4443"/> and also prevents a DoS attack on the
          neighbor cache. The previous recommendation of <xref
          target="RFC3627"/> has been obsoleted and marked Historic by <xref
          target="RFC6547"/>).</t>

          <t>Some environments are also using link-local addressing for
          point-to-point links. While this practice could further reduce the
          attack surface of infrastructure devices, the operational
          disadvantages also need to be carefully considered; see also <xref
          target="RFC7404"/>.</t>
        </section>

        <section title="Loopback Addresses">
          <t>Many operators reserve a /64 block for all loopback addresses in
          their infrastructure and allocate a /128 out of this reserved /64
          prefix for each loopback interface. This practice facilitates
          configuration of Access Control List (ACL) rules to enforce a
          security policy for those loopback addresses</t>
        </section>

        <section anchor="static" title="Stable Addresses">
          <t>When considering how to assign stable addresses (either by static
          configuration or by pre-provisioned DHCPv6 lease <xref
          target="dhcpdns"/>), it is necessary to take into consideration the
          effectiveness of perimeter security in a given environment.</t>

          <t>There is a trade-off between ease of operation (where some
          portions of the IPv6 address could be easily recognizable for
          operational debugging and troubleshooting) versus the risk of
          trivial scanning used for reconnaissance. <xref target="SCANNING"/>
          shows that there are scientifically based mechanisms that make
          scanning for IPv6 reachable nodes more feasible than expected; see
          also <xref target="RFC7707"/>.</t>

          <t>Stable addresses also allow easy enforcement of a security policy
          at the perimeter based on IPv6 addresses. <xref target="RFC8520"/>
          is a mechanism where the perimeter defense can retrieve security
          policy template based on the type of internal device.</t>

          <t>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 easy to figure out which devices are name servers, routers,
          or other critical devices; even a simple traceroute will expose most
          of the routers on a path. There are many scanning techniques
          possible and operators should not rely on the 'impossible to find
          because my address is random' paradigm (a.k.a. "security by
          obscurity"), even if it is common practice to have the stable
          addresses randomly distributed across /64 subnets and to always use
          DNS (as IPv6 addresses are hard to remember for the human
          brains).</t>

          <t>While in some environments obfuscating addresses could be
          considered an added benefit, it does not preclude enforcement of
          perimeter rules and that stable addresses follow some logical
          allocation scheme for ease of operation (as simplicity always helps
          security).</t>

          <t>Typical deployments will have a mix of stable and non-stable
          addresses; the stable addresses being either predicatable (e.g.,
          ::25 for a mail server) or obfuscated (i.e., appearing as a random
          64-bit number).</t>
        </section>

        <section anchor="priv" title="Temporary Addresses for SLAAC">
          <t>Historically, stateless address autoconfiguration (SLAAC) makes
          up the globally unique IPv6 address based on an automatically
          generated 64-bit interface identifier (IID) based on the EUI-64 MAC
          address combined with the /64 prefix (received in the Prefix
          Information Option (PIO) of the Router Advertisement (RA)). The
          EUI-64 address is generated from the stable 48-bit MAC address and
          does not change even if the host moves to another network; this is
          of course bad for privacy as a host (and its associated user) can be
          traced from network (home) to network (office or Wi-Fi in hotels)...
          <xref target="RFC8064"/> recommends against the use of EUI-64
          addresses and it must be noted that most host operating systems do
          not use EUI-64 addresses anymore and rely on either <xref
          target="RFC4941"/> or <xref target="RFC8064"/>.</t>

          <t>Randomly generating an interface ID, as described in <xref
          target="RFC4941"/>, is part of SLAAC with so-called privacy
          extension addresses and is used to address some privacy concerns.
          Privacy extension addresses, 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 attack exposure window. But using
          <xref target="RFC4941"/> privacy extension addresses might prevent
          the operator from building host specific access control lists
          (ACLs). The <xref target="RFC4941"/> privacy extension addresses
          could also be used to obfuscate some malevolent activities and
          specific user attribution/accountability procedures should be put in
          place as described in <xref target="log"/>.</t>

          <t><xref target="RFC8064"/> combined with the address generation
          mechanism of <xref target="RFC7217"/> specifies another way to
          generate an address while still keeping the same IID for each
          network prefix; this allows SLAAC nodes to always have the same
          stable IPv6 address on a specific network while having different
          IPv6 addresses on different networks.</t>

          <t>In some specific use cases where user accountability is more
          important than user privacy, network operators may consider
          disabling SLAAC and relying only on DHCPv6; but not all operating
          systems support DHCPv6 so some hosts will not get any IPv6
          connectivity. Disabling SLAAC and privacy extension addresses can be
          done for most operating systems by sending RA messages with a hint
          to get addresses via DHCPv6 by setting the M-bit but also disabling
          SLAAC by resetting all A-bits in all prefix information options.
          However, attackers could still find ways to bypass this mechanism if
          not enforced at the switch/router level.</t>

          <t>However, in scenarios where anonymity is a strong desire
          (protecting user privacy is more important than user attribution),
          privacy extension addresses should be used. When <xref
          target="RFC8064"/> is available, the stable privacy address is
          probably a good balance between privacy (among different networks)
          and security/user attribution (within a network).</t>
        </section>

        <!---->

        <!---->

        <section anchor="dhcpdns" title="DHCP and DNS Considerations">
          <t>Even if the use of DHCP is not mandated by <xref
          target="RFC8504"/>, some environments use DHCPv6 to provision
          addresses and other parameters in order to ensure auditability and
          traceability (see <xref target="stateful_dhcp"/>) for the
          limitations of DHCPv6 for auditability.</t>

          <t>A main security concern is the ability to detect and counteract
          rogue DHCP servers (<xref target="snoop"/>). It must be noted that
          as opposed to DHCPv4, DHCPv6 can lease several IPv6 addresses per
          client. For DHCPv4, the lease is bond to the 'client identifier',
          which may contain a hardware address, or it may contain another type
          of identifier, such as a DNS name. For DHCPv6, the lease is bound to
          the client DHCP Unique ID (DUID) which is also not always bound to
          the client link-layer address. <xref target="RFC7824"/> describes
          the privacy issues associated with the use of DHCPv6 by Internet
          users. The anonymity profiles <xref target="RFC7844"/> are designed
          for clients that wish to remain anonymous to the visited network.
          <xref target="RFC7707"/> recommends that DHCPv6 servers issue
          addresses randomly from a large pool.</t>

          <t>While there are no fundamental differences with IPv4 and IPv6 DNS
          security concerns, there are specific considerations in DNS64 <xref
          target="RFC6147"/> environments that need to be understood.
          Specifically, the interactions and the potential of interference
          with DNSSEC (<xref target="RFC4033"/>) implementation need to be
          understood - these are pointed out in more detail in <xref
          target="nat64"/>.</t>
        </section>

        <section anchor="sixty4perhost" title="Using a /64 per host">
          <t>An interesting approach is using a /64 per host as proposed in
          <xref target="RFC8273"/> especially in a shared environment. This
          allows for easier user attribution (typically based on the host MAC
          address) as its /64 prefix is stable even if applications within the
          host can change their IPv6 address within this /64 prefix.</t>
        </section>

        <section anchor="privacy" title="Privacy consideration of Addresses">
          <t>Beside the security aspects of IPv6 addresses, there are also
          privacy considerations: mainly because they are of global scope and
          visible globally. <xref target="RFC7721"/> goes into more detail on
          the privacy considerations for IPv6 addresses by comparing the
          manually configured IPv6 address, DHCPv6 or SLAAC.</t>
        </section>
      </section>

      <section anchor="ext_headers" title="Extension Headers">
        <t>Extension headers are an important difference between IPv4 and
        IPv6. 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 extension header chain must be parsed completely (even if
        not processed) in order to find the upper layer protocol header. IANA
        has closed the existing empty "Next Header Types" registry to new
        entries and is redirecting its users to a new "IPv6 Extension Header
        Types" registry per <xref target="RFC7045"/>.</t>

        <t>Extension headers have also become a very controversial topic since
        forwarding nodes that discard packets containing extension headers are
        known to cause connectivity failures and deployment problems <xref
        target="RFC7872"/>. Understanding the role of varying extension
        headers is important and this section enumerates the ones that need
        careful consideration.</t>

        <t>A clarification on how intermediate nodes should handle packets
        with existing or future extension headers is found in <xref
        target="RFC7045"/>. The uniform TLV format to be used for defining
        future extension headers is described in <xref target="RFC6564"/>.
        Sections 5.2 and 5.3 of <xref target="RFC8504"/> provide more
        information on the processing of extension headers by IPv6 nodes.</t>

        <t>It must also be noted that there is no indication in the IPv6
        packet as to whether the Next Protocol field points to an extension
        header or to a transport header. This may confuse some filtering
        rules.</t>

        <t>There is IETF work in progress regarding filtering rules for those
        extension headers: <xref target="I-D.ietf-opsec-ipv6-eh-filtering"/>
        for transit routers.</t>

        <section title="Order and Repetition of Extension Headers">
          <t>While <xref target="RFC8200"/> recommends the order and the
          maximum repetition of extension headers, there are still IPv6
          implementations, at the time of writing, which support a
          non-recommended order of headers (such as ESP before routing) or an
          illegal repetition of headers (such as multiple routing headers).
          The same applies for options contained in the extension headers (see
          <xref target="I-D.kampanakis-6man-ipv6-eh-parsing"/>). In some
          cases, it has led to nodes crashing when receiving or forwarding
          wrongly formatted packets.</t>

          <t>A firewall or edge device should be used to enforce the
          recommended order and the maximum of occurrences of extension
          headers.</t>
        </section>

        <section title="Hop-by-Hop Options Header">
          <t>In the previous IPv6 specification <xref target="RFC2460"/>, the
          hop-by-hop options header, when present in an IPv6 packet, forced
          all nodes to inspect and possibly process this header. This enabled
          denial-of-service attacks as most, if not all, routers can not
          process this kind of packet in hardware but have to process this
          packet in software hence competing with other software tasks such as
          handling the control and management planes.</t>

          <t>Section 4.3 of the current Internet Standard for IPv6, <xref
          target="RFC8200"/>, has taken this attack vector into account and
          made the processing of hop-by-hop options header by intermediate
          routers explicitly configurable.</t>
        </section>

        <section anchor="fragments" title="Fragment Header">
          <t>The fragment header is used by the source (and only the source)
          when it has to fragment packets. <xref target="RFC7112"/> and
          section 4.5 of <xref target="RFC8200"/> explain why it is important
          that:<list>
              <t>Firewall and security devices should drop first fragments
              that do not contain the entire ipv6 header chain (including the
              transport-layer header);</t>

              <t>Destination nodes should discard first fragments that do not
              contain the entire ipv6 header chain (including the
              transport-layer header).</t>
            </list></t>

          <t>If those requirements are not met, stateless filtering could be
          bypassed by a hostile party. <xref target="RFC6980"/> applies a
          stricter rule to Neighbor Discovery Protocol (NDP) by enforcing the
          drop of fragmented NDP packets. <xref target="RFC7113"/> describes
          how the RA-guard function described in <xref target="RFC6105"/>
          should behave in the presence of fragmented RA packets.</t>
        </section>

        <section title="IP Security Extension Header">
          <t>The <xref target="RFC4301">IPsec</xref> [RFC4301] extension
          headers (<xref target="RFC4302">AH</xref> and <xref
          target="RFC4303">ESP</xref>) are required if IPsec is to be utilized
          for network level security. But IPsec is no more required for normal
          IPv6 nodes: in the updated IPv6 Nodes Requirement standard &lt;xref
          target="RFC8504"/&gt; IPsec is a 'SHOULD' and not a 'MUST'
          implement.</t>
        </section>
      </section>

      <section anchor="linklayer" title="Link-Layer Security">
        <t>IPv6 relies heavily on NDP <xref target="RFC4861"/> to perform a
        variety of link operations such as discovering other nodes on the
        link, resolving their link-layer addresses, and finding routers on the
        link. If not secured, NDP is vulnerable to various attacks such as
        router/neighbor message spoofing, redirect attacks, Duplicate Address
        Detection (DAD) DoS attacks, etc. Many of these security threats to
        NDP have been documented in IPv6 ND Trust Models and Threats <xref
        target="RFC3756"/> and in <xref target="RFC6583"/>.</t>

        <t>NDP has even issues when the attacker is off-link see the section
        below <xref target="ratelim"/>; but, most of the issues are only when
        the attacker is on the same link.</t>

        <section anchor="ratelim" title="Neighbor Solicitation Rate Limiting">
          <t>Neighbor Discovery Protocol (NDP) can be vulnerable to remote
          denial of service (DoS) attacks; for example, when a router is
          forced to perform address resolution for a large number of
          unassigned addresses, i.e., a neighbor cache exhaustion attack. This
          can keep new devices from joining the network or render the last hop
          router ineffective due to high CPU usage. Easy mitigative steps
          include rate limiting Neighbor Solicitations, restricting the amount
          of state reserved for unresolved solicitations, and clever
          cache/timer management.</t>

          <t><xref target="RFC6583"/> discusses the potential for off-link DoS
          in detail and suggests implementation improvements and operational
          mitigation techniques that may be used to mitigate or alleviate the
          impact of such attacks. Here are some feasible mitigation options
          that can be employed by network operators today:<list
              style="symbols">
              <t>Ingress filtering of unused addresses by ACL. These require
              stable configuration of the addresses; for example, allocating
              the addresses out of a /120 and using a specific ACL to only
              allow traffic to this /120 (of course, the actual hosts are
              configured with a /64 prefix for the link).</t>

              <t>Tuning of NDP process (where supported).</t>

              <t>Using /127 on point-to-point link per <xref
              target="RFC6164"/>.</t>

              <t>Using link-local addresses only on links where there are only
              routers see <xref target="RFC7404"/></t>
            </list></t>
        </section>

        <!--ratelim-->

        <section anchor="filter"
                 title="Router and Neighbor Advertisements Filtering">
          <t/>

          <section title="Router Advertisement Filtering">
            <t>Router Advertisement spoofing is a well-known on-link attack
            vector and has been extensively documented. The presence of rogue
            RAs, either unintentional or malicious, can cause partial or
            complete failure of operation of hosts on an IPv6 link. For
            example, a host can select an incorrect router address which can
            be used as on-path attack or can assume wrong prefixes to be used
            for SLAAC. <xref target="RFC6104"/> summarizes the scenarios in
            which rogue RAs may be observed and presents a list of possible
            solutions to the problem. <xref target="RFC6105"/> (RA-Guard)
            describes a solution framework for the rogue RA problem where
            network segments are designed around switching devices that are
            capable of identifying invalid RAs and blocking them before the
            attack packets actually reach the target nodes.</t>

            <t>However, several evasion techniques that circumvent the
            protection provided by RA-Guard have surfaced. A key challenge to
            this mitigation technique is introduced by IPv6 fragmentation.
            Attacker can conceal their attack by fragmenting their packets
            into multiple fragments such that the switching device that is
            responsible for blocking invalid RAs cannot find all the necessary
            information to perform packet filtering of the same packet. <xref
            target="RFC7113"/> describes such evasion techniques and provides
            advice to RA-Guard implementers such that the aforementioned
            evasion vectors can be eliminated.</t>

            <t>Given that the IPv6 Fragmentation Header can be leveraged to
            circumvent current implementations of RA-Guard, <xref
            target="RFC6980"/> updates <xref target="RFC4861"/> such that use
            of the IPv6 Fragmentation Header is forbidden in all Neighbor
            Discovery messages except "Certification Path Advertisement", thus
            allowing for simple and effective measures to counter fragmented
            NDP attacks.</t>
          </section>

          <section title="Neighbor Advertisement Filtering">
            <t>The Source Address Validation Improvements (SAVI) working group
            has worked on other ways to mitigate the effects of such attacks.
            <xref target="RFC7513"/> helps in creating bindings between a
            DHCPv4 <xref target="RFC2131"/> /DHCPv6 <xref target="RFC8415"/>
            assigned source IP address and a binding anchor <xref
            target="RFC7039"/> on a SAVI device. Also, <xref
            target="RFC6620"/> describes how to glean similar bindings when
            DHCP is not used. The bindings can be used to filter packets
            generated on the local link with forged source IP addresses.</t>
          </section>

          <section title="Host Isolation">
            <t>Isolating hosts for the NDP traffic canbe done by using a /64
            per host <xref target="sixty4perhost"/> as NDP is only relevant
            within a /64 on-link prefix; 3GPP <xref target="threegpp"/> uses a
            similar mechanism.</t>

            <t>A more drastic technique to prevent all NDP attacks is based on
            isolation of all hosts with specific configurations. Hosts (i.e.,
            all nodes that are not routers) are unable to send data-link layer
            frames to other hosts, therefore, no host-to-host attacks can
            happen. This specific setup can be established on some switches or
            Wi-Fi access points. Of course, this is not always feasible when
            hosts need to communicate with other hosts.</t>
          </section>

          <section title="NDP Recommendations">
            <t>It is still recommended that RA-Guard and SAVI be employed as a
            first line of defense against common attack vectors including
            misconfigured hosts. This recommendation also applies when DHCPv6
            is used as RA are used to discover the default router(s) and for
            on-link prefix determination. This line of defense is most
            effective when incomplete fragments are dropped by routers and
            switches as described in <xref target="fragments"/>. The generated
            log should also be analyzed to identify and act on violations.
            Network operators should be aware that RA-Guard and SAVI do not
            work or could even be harmful in specific network configurations
            (notably when there could be multiple routers). Only trivial cases
            (e.g., a Wi-Fi network having the routers on the uplink interfaces
            of the As) should have RA-guard and SAVI enabled by default.</t>
          </section>
        </section>

        <!--filter-->

        <section anchor="snoop" title="Securing DHCP">
          <t>Dynamic Host Configuration Protocol for IPv6 (DHCPv6), as
          described in <xref target="RFC8415"/>, enables DHCP servers to pass
          configuration parameters such as IPv6 network addresses and other
          configuration information to IPv6 nodes such as an hostile recursive
          DNS server. DHCP plays an important role in most large networks by
          providing robust stateful configuration in the context of automated
          system provisioning.</t>

          <t>The two most common threats to DHCP clients come from malicious
          (a.k.a., rogue) or unintentionally misconfigured DHCP servers. A
          malicious DHCP server is established with the intent of providing
          incorrect configuration information to the clients to cause a denial
          of service attack or to mount on path attack. While unintentional, a
          misconfigured DHCP server can have the same impact. Additional
          threats against DHCP are discussed in the security considerations
          section of <xref target="RFC8415"/>.</t>

          <t><xref target="RFC7610">DHCPv6-Shield, </xref>, specifies a
          mechanism for protecting connected DHCPv6 clients against rogue
          DHCPv6 servers. This mechanism is based on DHCPv6 packet-filtering
          at the layer-2 device; i.e., the administrator specifies the
          interfaces connected to DHCPv6 servers. However, extension headers
          could be leveraged to bypass DHCPv6-Shield unless <xref
          target="RFC7112"/> is enforced.</t>

          <t>It is recommended to use DHCPv6-Shield and to analyze the
          corresponding log messages.</t>
        </section>

        <section anchor="threegpp" title="3GPP Link-Layer Security">
          <!--NEED MORE REWORK: too long, should be more straight to the point MK-->

          <t>The 3GPP link is a point-to-point like link that has no
          link-layer address. This implies there can only be an end host (the
          mobile hand-set) and the first-hop router (i.e., a GPRS Gateway
          Support Node (GGSN) or a Packet Gateway (PGW)) on that link. The
          GGSN/PGW never configures a non link-local address on the link using
          the advertised /64 prefix on it; see <xref target="sixty4perhost"/>.
          The advertised prefix must not be used for on-link determination.
          There is no need for address resolution on the 3GPP link, since
          there are no link-layer addresses. Furthermore, the GGSN/PGW assigns
          a prefix that is unique within each 3GPP link that uses IPv6
          stateless address autoconfiguration. This avoids the necessity to
          perform DAD at the network level for every address built by the
          mobile host. The GGSN/PGW always provides an IID to the cellular
          host for the purpose of configuring the link-local address and
          ensures the uniqueness of the IID on the link (i.e., no collisions
          between its own link-local address and the mobile host's
          address).</t>

          <t>The 3GPP link model itself mitigates most of the known
          NDP-related Denial-of-Service attacks. In practice, the GGSN/PGW
          only needs to route all traffic to the mobile host that falls under
          the prefix assigned to it. As there is also a single host on the
          3GPP link, there is no need to defend that IPv6 address.</t>

          <t>See Section 5 of <xref target="RFC6459"/> for a more detailed
          discussion on the 3GPP link model, NDP on it and the address
          configuration details. In some mobile network, DHCPv6 and DHCP-PD
          are also used.</t>
        </section>

        <section title="Impact of Multicast Traffic">
          <t>IPv6 uses multicast extensively for signaling messages on the
          local link to avoid broadcast messages for on-the-wire
          efficiency.</t>

          <t>The use of multicast has some side effects on wireless networks,
          such as a negative impact on battery life of smartphones and other
          battery-operated devices that are connected to such networks. <xref
          target="RFC7772"/>, <xref target="RFC6775"/> (for specific wireless
          networks) are discussing methods to rate limit RAs and other ND
          messages on wireless networks in order to address this issue.</t>

          <t>The use of link-layer multicast addresses (e.g., ff02::1 for the
          all nodes link-local multicast address) could also be mis-used for
          an amplification attack. Image, a hostile node sending an ICMPv6
          ECHO_REQUEST to ff02::1 with a spoofed source address, then, all
          link-local nodes will reply with ICMPv6 ECHO_REPLY packets to the
          source address. This could be a DoS for the victim. This attack is
          purely local to the layer-2 network as packets with a link-local
          destination are never forwarded by an IPv6 router.</t>

          <t>This is the reason why large Wi-Fi network deployments limit the
          use of link-layer multicast either from or to the uplink of the
          Wi-Fi access point; i.e., Wi-Fi stations cannot send link-local
          multicast to their direct neighboring Wi-Fi stations.</t>
        </section>

        <section anchor="send" title="SeND and CGA">
          <t>SEcure Neighbor Discovery (SeND), as described in <xref
          target="RFC3971"/>, is a mechanism that was designed to secure ND
          messages. This approach involves the use of new NDP options to carry
          public key-based signatures. Cryptographically Generated Addresses
          (CGA), as described in <xref target="RFC3972"/>, are used to ensure
          that the sender of a Neighbor Discovery message is the actual
          "owner" of the claimed IPv6 address. A new NDP option, the CGA
          option, was introduced and is used to carry the public key and
          associated parameters. Another NDP option, the RSA Signature option,
          is used to protect all messages relating to neighbor and Router
          discovery.</t>

          <t>SeND protects against: <list style="symbols">
              <t>Neighbor Solicitation/Advertisement Spoofing</t>

              <t>Neighbor Unreachability Detection Failure</t>

              <t>Duplicate Address Detection DoS Attack</t>

              <t>Router Solicitation and Advertisement Attacks</t>

              <t>Replay Attacks</t>

              <t>Neighbor Discovery DoS Attacks</t>
            </list></t>

          <t>SeND does NOT: <list style="symbols">
              <t>Protect statically configured addresses</t>

              <t>Protect addresses configured using fixed identifiers (i.e.,
              EUI-64)</t>

              <t>Provide confidentiality for NDP communications</t>

              <t>Compensate for an unsecured link - SEND does not require that
              the addresses on the link and Neighbor Advertisements
              correspond.</t>
            </list></t>

          <t>However, at this time and over a decade since their original
          specifications, CGA and SeND do not have wide support from widely
          used end points; hence, their usefulness is limited and should not
          be relied upon.</t>
        </section>
      </section>

      <!--linklayer-->

      <section anchor="copp" title="Control Plane Security">
        <!-- Note to authors: Markus de Bruen would like to see this section shortened as it does not contain IPv6 specific -->

        <!--TODO Merike to ensure that the flow/text/verbiage is cohesive with the rest -->

        <t><xref target="RFC6192"/> defines the router control plane and
        provides detailed guidance to secure it for IPv4 and IPv6 networks.
        This definition is repeated here for the reader's convenience. Please
        note that the definition is completely protocol-version agnostic (most
        of this section applies to IPv6 in the same way as to IPv4).</t>

        <t>Preamble: IPv6 control plane security is vastly congruent with its
        IPv4 equivalent with the exception of OSPFv3 authentication (<xref
        target="control"/>) and some packet exceptions (see <xref
        target="exception"/>) that are specific to IPv6.</t>

        <t>Modern router architecture design maintains a strict separation of
        forwarding and router control plane hardware and software. The router
        control plane supports routing and management functions. It is
        generally described as the router architecture hardware and software
        components for handling packets destined to the device itself, as well
        as, building and sending packets originated locally on the device. The
        forwarding plane is typically described as the router architecture
        hardware and software components responsible for receiving a packet on
        an incoming interface, performing a lookup to identify the packet's IP
        next hop and best outgoing interface towards the destination, and
        forwarding the packet through the appropriate outgoing interface.</t>

        <t>While the forwarding plane is usually implemented in high-speed
        hardware, the control plane is implemented by a generic processor
        (referred to as the router processor (RP)) and cannot process packets
        at a high rate. Hence, this processor can be attacked by flooding its
        input queue with more packets than it can process. The control plane
        processor is then unable to process valid control packets and the
        router can lose OSPF or BGP adjacencies which can cause a severe
        network disruption.</t>

        <t><xref target="RFC6192"/> provides detailed guidance to protect the
        router control plane in IPv6 networks. The rest of this section
        contains simplified guidance.</t>

        <t>The mitigation techniques are: <list style="symbols">
            <t>To drop non-legit control packet before they are queued to the
            RP (this can be done by a forwarding plane ACL) and</t>

            <t>To rate limit the remaining packets to a rate that the RP can
            sustain. Protocol specific protection should also be done (for
            example, a spoofed OSPFv3 packet could trigger the execution of
            the Dijkstra algorithm, therefore, the frequency of Dijsktra
            calculations should be also rate limited).</t>
          </list></t>

        <t>This section will consider several classes of control packets:
        <list style="symbols">
            <t>Control protocols: routing protocols: such as OSPFv3, BGP and
            by extension Neighbor Discovery and ICMP</t>

            <t>Management protocols: SSH, SNMP, NETCONF, RESTCONF, IPFIX,
            etc</t>

            <t>Packet exceptions: normal data packets which requires a
            specific processing such as generating a packet-too-big ICMP
            message or processing the hop-by-hop options header.</t>
          </list></t>

        <section anchor="control" title="Control Protocols">
          <t>This class includes OSPFv3, BGP, NDP, ICMP.</t>

          <t>An ingress ACL to be applied on all the router interfaces for
          packets to be processed by the RP should be configured so as to:
          <list style="symbols">
              <t>drop OSPFv3 (identified by Next-Header being 89) and RIPng
              (identified by UDP port 521) packets from a non link-local
              address (except for OSPFv3 virtual links)</t>

              <t>allow BGP (identified by TCP port 179) packets from all BGP
              neighbors and drop the others</t>

              <t>allow all ICMP packets (transit and to the router
              interfaces)</t>
            </list></t>

          <t>Note: dropping OSPFv3 packets which are authenticated by IPsec
          could be impossible on some routers whose ACL are unable to parse
          the IPsec ESP or AH extension headers.</t>

          <t>Rate limiting of the valid packets should be done. The exact
          configuration will depend on the available resources of the router
          (CPU, TCAM, ...).</t>
        </section>

        <!--control-->

        <section anchor="mgmt" title="Management Protocols">
          <t>This class includes: SSH, SNMP, RESTCONF, NETCONF, gRPC, syslog,
          NTP, etc.</t>

          <t>An ingress ACL to be applied on all the router interfaces (or at
          ingress interfaces of the security perimeter or by using specific
          features of the platform) should be configured for packets destined
          to the RP such as: <list style="symbols">
              <t>Drop packets destined to the routers except those belonging
              to protocols which are used (for example, permit TCP 22 and drop
              all when only SSH is used);</t>

              <t>Drop packets where the source does not match the security
              policy, for example if SSH connections should only be originated
              from the NOC, then the ACL should permit TCP port 22 packets
              only from the NOC prefix.</t>
            </list></t>

          <t>Rate limiting of the valid packets should be done. The exact
          configuration will depend on the available resources of the
          router.</t>
        </section>

        <!--mgmt-->

        <section anchor="exception" title="Packet Exceptions">
          <t>This class covers multiple cases where a data plane packet is
          punted to the route processor because it requires specific
          processing: <list style="symbols">
              <t>generation of an ICMP packet-too-big message when a data
              plane packet cannot be forwarded because it is too large
              (required to discover the Path MTU);</t>

              <t>generation of an ICMP hop-limit-expired message when a data
              plane packet cannot be forwarded because its hop-limit field has
              reached 0 (also used by the traceroute utility);</t>

              <t>generation of an ICMP destination-unreachable message when a
              data plane packet cannot be forwarded for any reason;</t>

              <t>processing of the hop-by-hop options header, new
              implementations follow section 4.3 of <xref target="RFC8200"/>
              where this processing is optional;</t>

              <t>or more specific to some router implementation: an oversized
              extension header chain which cannot be processed by the hardware
              and force the packet to be punted to the RP.</t>
            </list></t>

          <t>On some routers, not everything can be done by the specialized
          data plane hardware which requires some packets to be 'punted' to
          the generic RP. This could include for example the processing of a
          long extension header chain in order to apply an ACL based on
          layer-4 information. <xref target="RFC6980"/> and more generally
          <xref target="RFC7112"/> highlight the security implications of
          oversized extension header chains on routers and updates the
          original IPv6 specifications, <xref target="RFC2460"/>, such that
          the first fragment of a packet is required to contain the entire
          IPv6 header chain. Those changes are incorporated in the IPv6
          standard <xref target="RFC8200"/></t>

          <t>An ingress ACL cannot mitigate a control plane attack using these
          packet exceptions. The only protection for the RP is to limit the
          rate of those packet exceptions forwarded to the RP, this means that
          some data plane packets will be dropped without an ICMP message sent
          to the source which may delay Path MTU discovery and cause
          drops.</t>

          <t>In addition to limiting the rate of data plane packets queued to
          the RP, it is also important to limit the generation rate of ICMP
          messages. This is important both to preserve RP resources and also
          to prevent an amplification attack using the router as a reflector.
          It is worth noting that some platforms implement this rate limiting
          in hardware. Of course, a consequence of not generating an ICMP
          message will break some IPv6 mechanisms such as Path MTU discovery
          or a simple traceroute.</t>
        </section>

        <!--exception-->
      </section>

      <!--copp-->

      <section anchor="rsec" title="Routing Security">
        <!-- Note to authors: Markus de Bruen would like to see this section shortened as it does not contain IPv6 specific -->

        <t>Preamble: IPv6 routing security is congruent with IPv4 routing
        security at the exception of OSPv3 neighbor authentication (see <xref
        target="auth"/>).</t>

        <t>Routing security in general can be broadly divided into three
        sections: <list style="numbers">
            <t>Authenticating neighbors/peers</t>

            <t>Securing routing updates between peers</t>

            <t>Route filtering</t>
          </list></t>

        <t><xref target="RFC5082"/> is also applicable to IPv6 and can ensure
        that routing protocol packets are coming from the local network; it
        must also be noted that in IPv6 all interior gateway protocols use
        link-local addresses.</t>

        <t>As for IPv4, it is recommended to enable a routing protocol only on
        interface where it is required.</t>

        <section title="BGP Security">
          <t>As BGP is identical for IPv4 and IPv6 and as <xref
          target="RFC7454"/> covers all the security aspects for BGP in
          detail, <xref target="RFC7454"/> is also applicable to IPv6.</t>
        </section>

        <section anchor="auth" title="Authenticating OSPFv3 Neighbors">
          <t>OSPFv3 can rely on IPsec to fulfill the authentication function.
          However, it should be noted that IPsec support is not standard on
          all routing platforms. In some cases, this requires specialized
          hardware that offloads crypto over to dedicated ASICs or enhanced
          software images (both of which often come with added financial cost)
          to provide such functionality. An added detail is to determine
          whether OSPFv3 IPsec implementations use AH or ESP-Null for
          integrity protection. In early implementations, all OSPFv3 IPsec
          configurations relied on AH since the details weren't specified in
          <xref target="RFC5340"/>. However, the document which specifically
          describes how IPsec should be implemented for OSPFv3 <xref
          target="RFC4552"/> specifically states that "ESP-Null MUST and AH
          MAY be implemented" since it follows the overall IPsec standards
          wording. OSPFv3 can also use normal ESP to encrypt the OSPFv3
          payload to provide confidentiality for the routing information.</t>

          <t><xref target="RFC7166"/> changes OSPFv3 reliance on IPsec by
          appending an authentication trailer to the end of the OSPFv3
          packets; it does not specifically authenticate the specific
          originator of an OSPFv3 packet; rather, it allows a router to
          confirm that the packet has been issued by a router that had access
          to the shared authentication key.</t>

          <t>With all authentication mechanisms, operators should confirm that
          implementations can support re-keying mechanisms that do not cause
          outages. There have been instances where any re-keying cause outages
          and therefore, the tradeoff between utilizing this functionality
          needs to be weighed against the protection it provides.</t>
        </section>

        <!--auth-->

        <section anchor="updates" title="Securing Routing Updates">
          <t>IPv6 initially mandated the provisioning of IPsec capability in
          all nodes. However, in the updated IPv6 Nodes Requirement standard
          <xref target="RFC8504"/> is a 'SHOULD' and not a 'MUST' implement.
          Theoretically it is possible that communication between two IPv6
          nodes, especially routers exchanging routing information be
          encrypted using IPsec. In practice however, deploying IPsec is not
          always feasible given hardware and software limitations of various
          platforms deployed.</t>
        </section>

        <!--updates-->

        <section anchor="rfilter" title="Route Filtering">
          <t>Route filtering policies will be different depending on whether
          they pertain to edge route filtering vs internal route filtering. At
          a minimum, IPv6 routing policy as it pertains to routing between
          different administrative domains should aim to maintain parity with
          IPv4 from a policy perspective, e.g., <list style="symbols">
              <t>Filter internal-use, non-globally routable IPv6 addresses at
              the perimeter;</t>

              <t>Discard routes for bogon <xref target="CYMRU"/> and reserved
              space (see <xref target="RFC8190"/>);</t>

              <t>Configure ingress route filters that validate route origin,
              prefix ownership, etc. through the use of various routing
              databases, e.g., <xref target="RADB"/>. There is additional work
              being done in this area to formally validate the origin ASs of
              BGP announcements in <xref target="RFC8210"/>.</t>
            </list></t>

          <t>Some good guidance can be found at <xref target="RFC7454"/>.</t>

          <t>A valid routing table can also be used apply network ingress
          filtering (see <xref target="RFC2827"/>).</t>
        </section>

        <!--rfilter-->
      </section>

      <!--rsec-->

      <section anchor="log" title="Logging/Monitoring">
        <t>In order to perform forensic research in the cases of a security
        incidents or detection abnormal behavior, network operators should log
        multiple pieces of information in some cases this requires a frequent
        poll of devices via a Network Management Station.</t>

        <t>This logging should include: <list style="symbols">
            <t>logs of all applications using the network (including user
            space and kernel space) when available (for example web
            servers);</t>

            <t>data from <xref target="RFC7011">IP Flow Information Export
            </xref> also known as IPFIX;</t>

            <t>data from various SNMP <xref target="RFC4293">MIBs</xref> or
            YANG data via RESTCONF <xref target="RFC8040"/> or NETCONF <xref
            target="RFC6241"/>;</t>

            <t>historical data of Neighbor Cache entries;</t>

            <t><xref target="RFC8415">stateful DHCPv6</xref> lease cache,
            especially when a <xref target="RFC6221">relay agent</xref> is
            used;</t>

            <t>Source Address Validation Improvement (SAVI) <xref
            target="RFC7039"/> events, especially the binding of an IPv6
            address to a MAC address and a specific switch or router
            interface;</t>

            <t><xref target="RFC2866">RADIUS</xref> accounting records.</t>
          </list></t>

        <t>Please note that there are privacy issues or regulations related to
        how these logs are collected, stored, and safely discarded. Operators
        are urged to check their country legislation (e.g., General Data
        Protection Regulation <xref target="GDPR">GDPR</xref> in the European
        Union).</t>

        <t>All those pieces of information can be used for:<list
            style="symbols">
            <t><xref target="forensic">forensic</xref> investigations such as
            who did what and when?</t>

            <t><xref target="correlation">correlation</xref>: which IP
            addresses were used by a specific node (assuming the use of <xref
            target="RFC4941">privacy extensions addresses </xref>)</t>

            <t><xref target="inventory">inventory</xref>: which IPv6 nodes are
            on my network?</t>

            <t><xref target="abnormal_behavior">abnormal behavior
            detection</xref>: unusual traffic patterns are often the symptoms
            of an abnormal behavior which is in turn a potential attack
            (denial of service, network scan, a node being part of a botnet,
            etc.)</t>
          </list></t>

        <section anchor="data_sources" title="Data Sources">
          <t>This section lists the most important sources of data that are
          useful for operational security.</t>

          <section title="Application Logs">
            <t>Those logs are usually text files where the remote IPv6 address
            is stored in clear text (not binary). This can complicate the
            processing since one IPv6 address, for example 2001:db8::1 can be
            written in multiple ways, such as:<list style="symbols">
                <t>2001:DB8::1 (in uppercase)</t>

                <t>2001:0db8::0001 (with leading 0)</t>

                <t>and many other ways including the reverse DNS mapping into
                a FQDN (which should not be trusted).</t>
              </list></t>

            <t><xref target="RFC5952"/> explains this problem in detail and
            recommends the use of a single canonical format. This document
            recommends the use of <xref target="RFC5952">canonical
            format</xref> for IPv6 addresses in all possible cases. If the
            existing application cannot log under the canonical format, then
            it is recommended to use an external program in order to
            canonicalize all IPv6 addresses.</t>

            <t>For example, this perl script can be used:</t>

            <figure>
              <preamble>&lt;CODE BEGINS&gt;</preamble>

              <artwork><![CDATA[#!/usr/bin/perl -w
use strict ;
use warnings ;
use Socket ;
use Socket6 ;

my (@words, $word, $binary_address) ; 
    
## go through the file one line at a time
while (my $line = <STDIN>) {
  chomp $line;
  foreach my $word (split /[\s+]/, $line) {
    $binary_address = inet_pton AF_INET6, $word ;
    if ($binary_address) {
      print inet_ntop AF_INET6, $binary_address ;
    } else {
      print $word ;
    }
    print " " ;
  }
  print "\n" ;
}
]]></artwork>

              <postamble>&lt;CODE ENDS&gt;</postamble>
            </figure>
          </section>

          <section title="IP Flow Information Export by IPv6 Routers">
            <t><xref target="RFC7012">IPFIX</xref> defines some data elements
            that are useful for security:<list style="symbols">
                <t>in section 5.4 (IP Header fields): nextHeaderIPv6 and
                sourceIPv6Address;</t>

                <t>in section 5.6 (Sub-IP fields) sourceMacAddress.</t>
              </list></t>

            <t>The IP version is the ipVersion element defined in <xref
            target="IANA-IPFIX"/>.</t>

            <t>Moreover, IPFIX is very efficient in terms of data handling and
            transport. It can also aggregate flows by a key such as
            sourceMacAddress in order to have aggregated data associated with
            a specific sourceMacAddress. This memo recommends the use of IPFIX
            and aggregation on nextHeaderIPv6, sourceIPv6Address, and
            sourceMacAddress.</t>
          </section>

          <section anchor="mib"
                   title="SNMP MIB and NETCONF/RESTCONF YANG Modules data by IPv6 Routers">
            <t><xref target="RFC4293">RFC 4293</xref> defines a Management
            Information Base (MIB) for the two address families of IP. This
            memo recommends the use of:<list style="symbols">
                <t>ipIfStatsTable table which collects traffic counters per
                interface;</t>

                <t>ipNetToPhysicalTable table which is the content of the
                Neighbor cache, i.e., the mapping between IPv6 and data-link
                layer addresses.</t>
              </list></t>

            <t>There are also YANG modules about the two IP addresses families
            and can be used with <xref target="RFC6241"/> and <xref
            target="RFC8040"/>. This memo recommends the use of:<list
                style="symbols">
                <t>interfaces-state/interface/statistics from <xref
                target="RFC8343">ietf-interfaces@2018-02-20.yang</xref> which
                contains counters for interface .</t>

                <t>ipv6/neighbor from <xref
                target="RFC8344">ietf-ip@2018-02-22.yang</xref> which is the
                content of the Neighbor cache, i.e., the mapping between IPv6
                and data-link layer addresses.</t>
              </list></t>
          </section>

          <section anchor="ndp_cache" title="Neighbor Cache of IPv6 Routers">
            <t>The neighbor cache of routers contains all mappings between
            IPv6 addresses and data-link layer addresses. There are multiple
            ways to collect the current entries in the Neighbor Cache, notably
            but not limited to:<list style="symbols">
                <t>the <xref target="mib">SNMP MIB</xref> as explained
                above;</t>

                <t>using streaming telemetry or NETCONF <xref
                target="RFC6241"/> and <xref target="RFC8040"/> to collect the
                operational state of the neighbor cache;</t>

                <t>also by connecting over a secure management channel (such
                as SSH) and explicitly requesting a neighbor cache dump via
                the Command Line Interface or another monitoring
                mechanism.</t>

                <!-- Mikael Abrahamsson: let's add some text around YANG as there is a model for doing just that -->
              </list></t>

            <t>The neighbor cache is highly dynamic as mappings are added when
            a new IPv6 address appears on the network. This could be quite
            frequently with <xref target="RFC4941">privacy extension
            addresses</xref> or when they are removed when the state goes from
            UNREACH to removed (the default time for a removal per <xref
            target="RFC4861">Neighbor Unreachability Detection</xref>
            algorithm is 38 seconds for a host using Windows 7). This means
            that the content of the neighbor cache must periodically be
            fetched at an interval which does not exhaust the router resources
            and still provides valuable information (suggested value is 30
            seconds but to be checked in the actual setup) and stored for
            later use.</t>

            <t>This is an important source of information because it is
            trivial (on a switch not using the <xref
            target="RFC7039">SAVI</xref> algorithm) to defeat the mapping
            between data-link layer address and IPv6 address. Let us rephrase
            the previous statement: having access to the current and past
            content of the neighbor cache has a paramount value for forensic
            and audit trail.</t>

            <t>When using one /64 per host (<xref target="sixty4perhost"/>) or
            DHCP-PD, it is sufficient to keep the history of the allocated
            prefixes when combined with strict source address prefix
            enforcement on the routers and layer-2 switches to prevent IPv6
            spoofing.</t>
          </section>

          <section anchor="stateful_dhcp" title="Stateful DHCPv6 Lease">
            <t>In some networks, IPv6 addresses/prefixes are managed by a
            stateful <xref target="RFC8415">DHCPv6 server</xref> that leases
            IPv6 addresses/prefixes to 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 IPv6 addresses/prefixes and data-link
            layer addresses as is commonly used in IPv4 networking .</t>

            <t>It is not so easy in the IPv6 networks because not all nodes
            will use DHCPv6 (there are nodes which can only do stateless
            autoconfiguration) but also because DHCPv6 clients are identified
            not by their hardware-client address as in IPv4 but by a DHCP
            Unique ID (DUID) which can have several formats: some being the
            data-link layer address, some being data-link layer address
            prepended with time information, or even an opaque number which is
            useless for operational security. Moreover, 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 client
            actually uses its wired interface to connect to the network).</t>

            <t>If a <xref target="RFC6221">lightweight DHCP relay agent</xref>
            is used in a layer-2 switche, then the DHCP servers also receives
            the Interface-ID information which could be saved in order to
            identify the interface on which the switch received a specific
            leased IPv6 address. Also, if a 'normal' (not lightweight) relay
            agent adds the data-link layer address in the option for <xref
            target="RFC4649">Relay Agent Remote-ID</xref> or <xref
            target="RFC6939"/>, then the DHCPv6 server can keep track of the
            data-link and leased IPv6 addresses.</t>

            <t>In short, the DHCPv6 lease file is less interesting than for
            IPv4 networks. If possible, it is recommended to use DHCPv6
            servers that keep the relayed data-link layer address in addition
            to the DUID in the lease file as those servers have the equivalent
            information to IPv4 DHCP servers.</t>

            <t>The mapping between data-link layer address and the IPv6
            address can be secured by deploying switches implementing the
            <xref target="RFC7513">SAVI</xref> mechanisms. Of course, this
            also requires that the data-link layer address is protected by
            using a layer-2 mechanism such as <xref
            target="IEEE-802.1X"/>.</t>
          </section>

          <section anchor="radius_accounting" title="RADIUS Accounting Log">
            <t>For interfaces where the user is authenticated via a <xref
            target="RFC2866">RADIUS</xref> server, and if RADIUS accounting is
            enabled, then the RADIUS server receives accounting
            Acct-Status-Type records at the start and at the end of the
            connection which include all IPv6 (and IPv4) addresses used by the
            user. This technique can be used notably for Wi-Fi networks with
            Wi-Fi Protected Address (WPA) or any other <xref
            target="IEEE-802.1X">IEEE 802.1X</xref> wired interface on an
            Ethernet switch.</t>
          </section>

          <section title="Other Data Sources">
            <t>There are other data sources for log information that must be
            collected (as currently collected as in the IPv4 networks):<list
                style="symbols">
                <t>historical mapping of IPv6 addresses to users of remote
                access VPN;</t>

                <t>historical mappings of MAC addresses to switch interface in
                a wired network.</t>
              </list></t>
          </section>
        </section>

        <section title="Use of Collected Data">
          <t>This section leverages the data collected as described <xref
          format="default" target="data_sources">before</xref> in order to
          achieve several security benefits. Section 9.1 of <xref
          target="RFC7934"/> contains more details about host tracking.</t>

          <section anchor="forensic" title="Forensic and User Accountability">
            <t>The forensic use case is when the network operator must locate
            an IPv6 address that was present in the network at a certain time
            or is still currently in the network.</t>

            <t>To locate an IPv6 address in an enterprise network where the
            operator has control over all resources, the source of information
            can be the neighbor cache, or, if not found, the DHCP lease file.
            Then, the procedure is: <list style="numbers">
                <t>Based on the IPv6 prefix of the IPv6 address, find the
                router(s) which is(are) used to reach this prefix (assuming
                that anti-spoofing mechanisms are used).</t>

                <t>Based on this limited set of routers, on the incident time
                and on the IPv6 address, retrieve the data-link address from
                the live neighbor cache, from the historical neighbor cache
                data, or from SAVI events, or retrieve the data-link address
                from the DHCP lease file (<xref target="stateful_dhcp"/>).</t>

                <t>Based on the data-link layer address, look-up the switch
                interface associated with the data-link layer address. In the
                case of wireless LAN with RADIUS accounting (see <xref
                target="radius_accounting"/>), the RADIUS log has the mapping
                between the user identification and the MAC address. If a
                Configuration Management Data Base (CMDB) is used, then it can
                be used to map the data-link layer address to a switch
                port.</t>
              </list></t>

            <t>At the end of the process, the interface of the host
            originating malicious activity or the username perpetrating the
            malicious activity has been determined.</t>

            <t>To identify the subscriber of an IPv6 address in a residential
            Internet Service Provider, the starting point is the DHCP-PD
            leased prefix covering the IPv6 address; this prefix can often be
            linked to a subscriber via the RADIUS log. Alternatively, the
            Forwarding Information Base of the CMTS or BNG indicates the CPE
            of the subscriber and the RADIUS log can be used to retrieve the
            actual subscriber.</t>

            <t>More generally, a mix of the above techniques can be used in
            most, if not all, networks.</t>
          </section>

          <section anchor="inventory" title="Inventory">
            <t><xref target="RFC7707">RFC 7707</xref> describes the
            difficulties for an attacker to scan an IPv6 network due to the
            vast number of IPv6 addresses per link (and why in some cases it
            can still be done). While the huge addressing space can sometimes
            be perceived as a 'protection', it also makes the inventory task
            difficult in an IPv6 network while it was trivial to do in an IPv4
            network (a simple enumeration of all IPv4 addresses, followed by a
            ping and a TCP/UDP port scan). Getting an inventory of all
            connected devices is of prime importance for a secure network
            operation.</t>

            <t>There are many ways to do an inventory of an IPv6 network.</t>

            <t>The first technique is to use the IPFIX information and extract
            the list of all IPv6 source addresses to find all IPv6 nodes that
            sent packets through a router. This is very efficient but, alas,
            will not discover silent nodes that never transmitted packets
            traversing the the IPFIX target router. Also, it must be noted
            that link-local addresses will never be discovered by this
            means.</t>

            <t>The second way is again to use the collected neighbor cache
            content to find all IPv6 addresses in the cache. This process will
            also discover all link-local addresses. See <xref
            target="ndp_cache"/>.</t>

            <t>Another way that works only for local network, consists in
            sending a ICMP ECHO_REQUEST to the link-local multicast address
            ff02::1 which addresses all IPv6 nodes on the network. All nodes
            should reply to this ECHO_REQUEST per <xref
            target="RFC4443"/>.</t>

            <t>Other techniques involve obtaining data from DNS, parsing log
            files, leveraging service discovery such as mDNS <xref
            target="RFC6762"/> and <xref target="RFC6763"/>.</t>

            <t>Enumerating DNS zones, especially looking at reverse DNS
            records and CNAMES, is another common method employed by various
            tools. As already mentioned in <xref target="RFC7707"/>, this
            allows an attacker to prune the IPv6 reverse DNS tree, and hence
            enumerate it in a feasible time. Furthermore, authoritative
            servers that allow zone transfers (AXFR) may be a further
            information source.</t>
          </section>

          <section anchor="correlation" title="Correlation">
            <t>In an IPv4 network, it is easy to correlate multiple logs, for
            example to find events related to a specific IPv4 address. A
            simple Unix grep command is enough to scan through multiple
            text-based files and extract all lines relevant to a specific IPv4
            address.</t>

            <t>In an IPv6 network, this is slightly more difficult because
            different character strings can express the same IPv6 address.
            Therefore, the simple Unix grep command cannot be used. Moreover,
            an IPv6 node can have multiple IPv6 addresses.</t>

            <t>In order to do correlation in IPv6-related logs, it is advised
            to have all logs in a format with only canonical IPv6 addresses
            <xref target="RFC5952"/>. Then, the neighbor cache current (or
            historical) data set must be searched to find the data-link layer
            address of the IPv6 address. Then, the current and historical
            neighbor cache data sets must be searched for all IPv6 addresses
            associated to this data-link layer address to derive the search
            set. The last step is to search in all log files (containing only
            IPv6 address in canonical format) for any IPv6 addresses in the
            search set.</t>

            <t>Moreover, <xref target="RFC7934"/> recommends using multiple
            IPv6 addresses per prefix, so, the correlation must also be done
            among those multiple IPv6 addresses, for example by discovering in
            the <xref target="ndp_cache">NDP cache</xref> all IPv6 addresses
            associated with the same MAC address and interface.</t>
          </section>

          <section anchor="abnormal_behavior"
                   title="Abnormal Behavior Detection">
            <t>Abnormal behavior (such as network scanning, spamming, denial
            of service) can be detected in the same way as in an IPv4
            network.<list style="symbols">
                <t>Sudden increase of traffic detected by interface counter
                (SNMP) or by aggregated traffic from <xref
                target="RFC7012">IPFIX records</xref>.</t>

                <t>Change in traffic pattern (number of connections per
                second, number of connection per host...) with the use of
                <xref target="RFC7012">IPFIX</xref>.</t>
              </list></t>
          </section>
        </section>

        <section title="Summary">
          <t>While some data sources (IPFIX, MIB, switch CAM tables, logs,
          ...) used in IPv4 are also used in the secure operation of an IPv6
          network, the DHCPv6 lease file is less reliable and the neighbor
          cache is of prime importance.</t>

          <t>The fact that there are multiple ways to express the same IPv6
          address in a character string renders the use of filters mandatory
          when correlation must be done.</t>
        </section>
      </section>

      <section anchor="coexistence"
               title="Transition/Coexistence Technologies">
        <t>As it is expected that some networks will not run in a pure
        IPv6-only mode, the different transition mechanisms must be deployed
        and operated in a secure way. This section proposes operational
        guidelines for the most known and deployed transition techniques.</t>

        <section anchor="dual" title="Dual Stack">
          <t>Dual stack is often the first deployment choice for network
          operators. Dual stacking the network offers some advantages over
          other transition mechanisms. Firstly, the impact on existing IPv4
          operations is reduced. Secondly, in the absence of tunnels or
          address translation, the IPv4 and IPv6 traffics are native (easier
          to observe and secure) and should have the same network processing
          (network path, quality of service, ...). Dual stack enables a
          gradual termination of the IPv4 operations when the IPv6 network is
          ready for prime time. On the other hand, the operators have to
          manage two network stacks with the added complexities.</t>

          <t>From an operational security perspective, this now means that the
          network operator has twice the exposure. One needs to think about
          protecting both protocols now. At a minimum, the IPv6 portion of a
          dual-stacked network should be consistent with IPv4 from a security
          policy point of view. Typically, the following methods are employed
          to protect IPv4 networks at the edge or security perimeter: <list
              style="symbols">
              <t>ACLs to permit or deny traffic;</t>

              <t>Firewalls with stateful packet inspection.</t>
            </list></t>

          <t>It is recommended that these ACLs and/or firewalls be
          additionally configured to protect IPv6 communications. The enforced
          IPv6 security must be congruent with the IPv4 security policy,
          otherwise the attacker will use the protocol version having the more
          relaxed security policy. Maintaining the congruence between security
          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 system that can apply a single ACL entry to a mixed group of
          IPv4 and IPv6 addresses.</t>

          <t>Also, given the end-to-end connectivity that IPv6 provides, it is
          recommended that hosts be fortified against threats. General device
          hardening guidelines are provided in <xref target="device"/>.</t>

          <t>For many years, all host operating systems have IPv6 enabled by
          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
          global IPv6 address when the attacker provides rogue RAs or a rogue
          DHCPv6 service.</t>

          <t><xref target="RFC7123"/> discusses the security implications of
          native IPv6 support and IPv6 transition/coexistence technologies on
          "IPv4-only" networks and describes possible mitigations for the
          aforementioned issues.</t>
        </section>

        <!--dual-->

        <section anchor="transition" title="Encapsulation Mechanisms">
          <!-- Note to authors: Markus de Bruen would like to see this section shortened as it does not contain IPv6 specific -->

          <t>There are many tunnels used for specific use cases. Except when
          protected by <xref target="RFC4301">IPsec</xref>, all those tunnels
          have a couple of security issues as described in <xref
          target="RFC6169">RFC 6169</xref>;<list style="symbols">
              <t>tunnel injection: a malevolent person knowing a few pieces of
              information (for example the tunnel endpoints and the
              encapsulation protocol) can forge a packet which looks like a
              legit and valid encapsulated packet that will gladly be accepted
              by the destination tunnel endpoint, this is a specific case of
              spoofing;</t>

              <t>traffic interception: no confidentiality is provided by the
              tunnel protocols (without the use of IPsec or alternative
              encryption methods), therefore anybody on the tunnel path can
              intercept the traffic and have access to the clear-text IPv6
              packet; combined with the absence of authentication, a on-path
              attack can also be mounted;</t>

              <t>service theft: as there is no authorization, even a
              non-authorized user can use a tunnel relay for free (this is a
              specific case of tunnel injection);</t>

              <t>reflection attack: another specific use case of tunnel
              injection where the attacker injects packets with an IPv4
              destination address not matching the IPv6 address causing the
              first tunnel endpoint to re-encapsulate the packet to the
              destination... Hence, the final IPv4 destination will not see
              the original IPv4 address but only the IPv4 address of the relay
              router.</t>

              <t>bypassing security policy: if a firewall or an IPS is on the
              path of the tunnel, then it may neither inspect nor detect a
              malevolent IPv6 traffic transmitted over the tunnel.</t>
            </list></t>

          <t>To mitigate the bypassing of security policies, it is recommended
          to block all default configuration tunnels by denying IPv4 packets
          matching:<list style="symbols">
              <t>IP protocol 41: this will block <xref
              target="isatap">ISATAP</xref>, <xref
              target="sixtofour">6to4</xref>, <xref target="sixrd">6rd</xref>
              as well as <xref target="statictunnel">6in4</xref> tunnels;</t>

              <t>IP protocol 47: this will block <xref
              target="statictunnel">GRE</xref> tunnels;</t>

              <t>UDP protocol 3544: this will block the default encapsulation
              of <xref target="teredo">Teredo</xref> tunnels.</t>
            </list></t>

          <t><xref target="RFC2827">Ingress filtering</xref> should also be
          applied on all tunnel endpoints if applicable to prevent IPv6
          address spoofing.</t>

          <t>As several of the tunnel techniques share the same encapsulation
          (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
          <xref target="RFC6324">RFC 6324</xref>, this RFC also proposes
          mitigation techniques.</t>

          <section anchor="statictunnel" title="Site-to-Site Static Tunnels">
            <t>Site-to-site static tunnels are described in <xref
            target="RFC2529">RFC 2529</xref> and in <xref
            target="RFC2784">GRE</xref>. As the IPv4 endpoints are statically
            configured and are not dynamic they are slightly more secure
            (bi-directional service theft is mostly impossible) but traffic
            interception and tunnel injection are still possible. Therefore,
            the use of <xref target="RFC4301">IPsec</xref> in transport mode
            and protecting the encapsulated IPv4 packets is recommended for
            those tunnels. Alternatively, IPsec in tunnel mode can be used to
            transport IPv6 traffic over a non-trusted IPv4 network.</t>
          </section>

          <section anchor="isatap" title="ISATAP">
            <t>ISATAP tunnels <xref target="RFC5214"/> are mainly used within
            a single administrative domain and to connect a single IPv6 host
            to the IPv6 network. This often implies that those systems are
            usually managed by a single entity; therefore, audit trail and
            strict anti-spoofing are usually possible and this raises the
            overall security.</t>

            <t>Special care must be taken to avoid a looping attack by
            implementing the measures of <xref target="RFC6324">RFC
            6324</xref> and of <xref target="RFC6964"/>.</t>

            <t><xref target="RFC4301">IPsec</xref> in transport or tunnel mode
            can be used to secure the IPv4 ISATAP traffic to provide IPv6
            traffic confidentiality and prevent service theft.</t>
          </section>

          <section anchor="sixrd" title="6rd">
            <t>While 6rd tunnels share the same encapsulation as <xref
            target="sixtofour">6to4 tunnels</xref>, they are designed to be
            used within a single SP domain, in other words they are deployed
            in a more constrained environment than 6to4 tunnels and have few
            security issues other than lack of confidentiality. The security
            considerations (Section 12) of <xref target="RFC5969"/> describes
            how to secure 6rd tunnels.</t>

            <t><xref target="RFC4301">IPsec</xref> for the transported IPv6
            traffic can be used if confidentiality is important.</t>
          </section>

          <section anchor="sixpe" title="6PE, 6VPE, and LDPv6">
            <t>Organizations using MPLS in their core can also use 6PE <xref
            target="RFC4798"/> and 6VPE <xref target="RFC4659"/> to enable
            IPv6 access over MPLS. As 6PE and 6VPE are really similar to
            BGP/MPLS IP VPN described in <xref target="RFC4364"/>, the
            security properties of these networks are also similar to those
            described in <xref target="RFC4381"/>. It relies on:<list
                style="symbols">
                <t>Address space, routing and traffic separation with the help
                of VRFs (only applicable to 6VPE);</t>

                <t>Hiding the IPv4 core, hence removing all attacks against
                P-routers;</t>

                <t>Securing the routing protocol between CE and PE; in the
                case of 6PE and 6VPE, link-local addresses (see <xref
                target="RFC7404"/>) can be used and as these addresses cannot
                be reached from outside of the link, the security of 6PE and
                6VPE is even higher than the IPv4 BGP/MPLS IP VPN.</t>
              </list>LDPv6 itself does not induce new risks, see also <xref
            target="RFC7552"/>.</t>
          </section>

          <section anchor="dslite_first" title="DS-Lite">
            <t>DS-lite is also a translation mechanism and is therefore
            analyzed <xref target="dslite">further</xref> in this document as
            it includes IPv4 NAPT.</t>
          </section>

          <!--dslite_first-->

          <section anchor="map_first" title="Mapping of Address and Port">
            <t>With the encapsulation and translation versions of mapping of
            Address and Port (MAP) (<xref target="RFC7597">MAP-E</xref> and
            <xref target="RFC7599">MAP-T</xref>), the access network is purely
            an IPv6 network and MAP protocols are used to connect IPv4 hosts
            on the subscriber network access to IPv4 hosts on the Internet.
            The subscriber router does stateful operations in order to map all
            internal IPv4 addresses and layer-4 ports to the IPv4 address and
            the set of layer-4 ports received through MAP configuration
            process. The SP equipment always does stateless operations (either
            decapsulation or stateless translation). Therefore, as opposed to
            <xref target="dslite"/> there is no state-exhaustion DoS attack
            against the SP equipment because there is no state and there is no
            operation caused by a new layer-4 connection (no logging
            operation).</t>

            <t>The SP MAP equipment should implement all the security
            considerations of <xref target="RFC7597"/>; notably, ensuring that
            the mapping of the IPv4 address and port are consistent with the
            configuration. As MAP has a predictable IPv4 address and port
            mapping, the audit logs are easier to manage.</t>
          </section>

          <section anchor="sixtofour" title="6to4">
            <t><xref target="RFC3056">6to4 tunnels</xref> require a public
            routable IPv4 address in order to work correctly. They can be used
            to provide either single IPv6 host connectivity to the IPv6
            Internet or multiple IPv6 networks connectivity to the IPv6
            Internet. The 6to4 relay was historically the anycast address
            defined in <xref target="RFC3068"/> which has been deprecated by
            <xref target="RFC7526"/> and is no longer used by recent Operating
            Systems. Some security considerations are explained in <xref
            target="RFC3964"/>.</t>

            <t><xref target="RFC6343"/> points out that if an operator
            provides well-managed servers and relays for 6to4,
            non-encapsulated IPv6 packets will pass through well-defined
            points (the native IPv6 interfaces of those servers and relays) at
            which security mechanisms may be applied. Client usage of 6to4 by
            default is now discouraged, and significant precautions are needed
            to avoid operational problems.</t>
          </section>

          <section anchor="teredo" title="Teredo">
            <t>Teredo tunnels <xref target="RFC4380"/> are mainly used in a
            residential environment because Teredo easily traverses an IPv4
            NAPT device thanks to its UDP encapsulation. Teredo tunnels
            connect a single host to the IPv6 Internet. Teredo shares the same
            issues as other tunnels: no authentication, no confidentiality,
            possible spoofing and reflection attacks.</t>

            <t><xref target="RFC4301">IPsec</xref> for the transported IPv6
            traffic is recommended.</t>

            <t>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 are quite often co-located with a stateful firewall.
            Therefore, if the stateful IPv4 firewall allows unrestricted UDP
            outbound and accepts the return UDP traffic, then Teredo actually
            punches a hole in this firewall for all IPv6 traffic to the
            Internet and from the Internet. While host policies can be
            deployed to block Teredo in an IPv4-only network in order to avoid
            this firewall bypass, it would be enough to block all UDP outbound
            traffic at the IPv4 firewall if deemed possible (of course, at
            least port 53 should be left open for DNS traffic, port 443 for
            QUIC, port 500 for IKE, port 3478 for STUN, i.e., filter
            judiciously).</t>

            <t>Teredo is now hardly never used and no longer enabled by
            default in most environments, so, it is less of a threat, however,
            special consideration must be taken in case of devices with older
            or non-updated operating systems may be present and by default
            were running Teredo.</t>
          </section>
        </section>

        <!--tunnel-->

        <section anchor="xlate" title="Translation Mechanisms">
          <t>Translation mechanisms between IPv4 and IPv6 networks are
          alternate coexistence strategies while networks transition to IPv6.
          While a framework is described in <xref target="RFC6144"/>, the
          specific security considerations are documented in each individual
          mechanism. For the most part, they specifically mention interference
          with IPsec or DNSSEC deployments, how to mitigate spoofed traffic,
          and what some effective filtering strategies may be.</t>

          <t>While not really a transition mechanism to IPv6, this section
          also includes the discussion about the use of heavy IPv4-to-IPv4
          network address and port translation to prolong the life of
          IPv4-only networks.</t>

          <section anchor="cgn" title="Carrier-Grade NAT (CGN)">
            <t>Carrier-Grade NAT (CGN), also called NAT444 CGN or Large Scale
            NAT (LSN) or SP NAT is described in <xref target="RFC6264"/> and
            is utilized as an interim measure to extend the use of IPv4 in a
            large service provider network until the provider can deploy an
            effective IPv6 solution. <xref target="RFC6598"/> requested a
            specific IANA allocated /10 IPv4 address block to be used as
            address space shared by all access networks using CGN. This has
            been allocated as 100.64.0.0/10.</t>

            <t>Section 13 of <xref target="RFC6269"/> lists some specific
            security-related issues caused by large scale address sharing. The
            Security Considerations section of <xref target="RFC6598"/> also
            lists some specific mitigation techniques for potential misuse of
            shared address space. Some Law Enforcement Agencies have
            identified CGN as impeding their cyber-crime investigations (for
            example <xref target="europol-cgn">Europol press release on
            CGN</xref>). Many translation techniques (NAT64, DS-lite, ...)
            have the same security issues as CGN when one part of the
            connection is IPv4-only.</t>

            <t><xref target="RFC6302"/> has recommendations for
            Internet-facing servers to also log the source TCP or UDP ports of
            incoming connections in an attempt to help identify the users
            behind such a CGN.</t>

            <t><xref target="RFC7422"/> suggests the use of deterministic
            address mapping in order to reduce logging requirements for CGN.
            The idea is to have a known algorithm for mapping the internal
            subscriber to/from public TCP and UDP ports.</t>

            <t><xref target="RFC6888"/> lists common requirements for CGNs.
            <xref target="RFC6967"/> analyzes some solutions to enforce
            policies on misbehaving nodes when address sharing is used. <xref
            target="RFC7857"/> also updates the NAT behavioral
            requirements.</t>
          </section>

          <!--cgn-->

          <section anchor="nat64" title="NAT64/DNS64 and 464XLAT">
            <t>Stateful NAT64 translation <xref target="RFC6146"/> allows
            IPv6-only clients to contact IPv4 servers using unicast UDP, TCP,
            or ICMP. It can be used in conjunction with DNS64 <xref
            target="RFC6147"/>, a mechanism which synthesizes AAAA records
            from existing A records. There is also a stateless NAT64 <xref
            target="RFC7915"/> which is similar for the security aspects with
            the added benefit of being stateless, so, less prone to a state
            exhaustion attack.</t>

            <t>The Security Consideration sections of <xref target="RFC6146"/>
            and <xref target="RFC6147"/> list the comprehensive issues. A
            specific issue with the use of NAT64 is that it will interfere
            with most IPsec deployments unless UDP encapsulation is used.
            DNSSEC has an impact on DNS64 see section 3.1 of <xref
            target="RFC7050"/>.</t>

            <t>Another translation mechanism relying on a combination of
            stateful and stateless translation, 464XLAT <xref
            target="RFC6877"/>, can be used to do host local translation from
            IPv4 to IPv6 and a network provider translation from IPv6 to IPv4,
            i.e., giving IPv4-only application access to an IPv4-only server
            over an IPv6-only network. 464XLAT shares the same security
            considerations as NAT64 and DNS64, however it can be used without
            DNS64, avoiding the DNSSEC implications.</t>
          </section>

          <!--nat64-->

          <section anchor="dslite" title="DS-Lite">
            <t>Dual-Stack Lite (DS-Lite) <xref target="RFC6333"/> is a
            transition technique that enables a service provider to share IPv4
            addresses among customers by combining two well-known
            technologies: IP in IP (IPv4-in-IPv6) and IPv4 NAPT.</t>

            <t>Security considerations with respect to DS-Lite mainly revolve
            around logging data, preventing DoS attacks from rogue devices (as
            the Address Family Translation Router (AFTR) <xref
            target="RFC6333"/> function is stateful and restricting service
            offered by the AFTR only to registered customers.</t>

            <t>Section 11 of <xref target="RFC6333"/> and section 2 of <xref
            target="RFC7785"/> describe important security issues associated
            with this technology.</t>
          </section>

          <!--dslite-->
        </section>

        <!--xlate-->
      </section>

      <!--coexistence-->

      <section anchor="device" title="General Device Hardening">
        <t>With almost all devices being IPv6 enabled by default and with many
        end points having IPv6 connectivity to the Internet, it is critical to
        also harden those devices against attacks over IPv6.</t>

        <t>The following guidelines should be used to ensure appropriate
        hardening of the host, be it an individual computer or router,
        firewall, load-balancer, server, etc. device. <list style="symbols">
            <t>Restrict device access to authorized individuals</t>

            <t>Monitor and audit access to the device</t>

            <t>Turn off any unused services on the end node</t>

            <t>Understand which IPv6 addresses are being used to source
            traffic and change defaults if necessary</t>

            <t>Use cryptographically protected protocols for device management
            if possible (SCP, SNMPv3, SSH, TLS, etc.)</t>

            <t>Use host firewall capabilities to control traffic that gets
            processed by upper layer protocols</t>

            <t>Use virus scanners to detect malicious programs</t>
          </list></t>
      </section>

      <!--device-->
    </section>

    <!--generic-->

    <section anchor="enterprise"
             title="Enterprises Specific Security Considerations">
      <t>Enterprises <xref target="RFC7381"/> generally have robust network
      security policies in place to protect existing IPv4 networks. These
      policies have been distilled from years of experiential knowledge of
      securing IPv4 networks. At the very least, it is recommended that
      enterprise networks have parity between their security policies for both
      protocol versions. This section also applies to the enterprise part of
      all SP networs, i.e., the part of the network where the SP employees are
      connected.</t>

      <t>Security considerations in the enterprise can be broadly categorized
      into two sections - External and Internal.</t>

      <section anchor="external" title="External Security Considerations">
        <t>The external aspect deals with providing security at the edge or
        perimeter of the enterprise network where it meets the service
        providers network. This is commonly achieved by enforcing a security
        policy either by implementing dedicated firewalls with stateful packet
        inspection or a router with ACLs. A common default IPv4 policy on
        firewalls that could easily be ported to IPv6 is to allow all traffic
        outbound while only allowing specific traffic, such as established
        sessions, inbound (see also <xref target="RFC6092"/>). Section 3.2 of
        <xref target="RFC7381"/> also provides similar recommendations.</t>

        <t>Here are a few more things that could enhance the default policy:
        <list style="symbols">
            <t>Filter internal-use IPv6 addresses at the perimeter this will
            also mitigate the vulnerabilities listed in <xref
            target="RFC7359"/></t>

            <t>Discard packets from and to bogon and reserved space, see also
            <xref target="CYMRU"/> and <xref target="RFC8190"/></t>

            <t>Accept certain ICMPv6 messages to allow proper operation of ND
            and PMTUD, see also <xref target="RFC4890"/> or <xref
            target="REY_PF"/> for hosts</t>

            <t>Filter specific extension headers by accepting only the
            required ones (permit list approach) such as ESP, AH (not
            forgetting the required transport layers: ICMP, TCP, UDP, ...),
            where possible at the edge and possibly inside the perimeter; see
            also <xref target="I-D.ietf-opsec-ipv6-eh-filtering"/></t>

            <t>Filter packets having an illegal IPv6 headers chain at the
            perimeter (and if possible, inside the network as well), see <xref
            target="ext_headers"/></t>

            <t>Filter unneeded services at the perimeter</t>

            <t>Implement ingress and egress anti-spoofing in the forwarding
            and control planes, see <xref target="RFC2827"/> and <xref
            target="RFC3704"/></t>

            <t>Implement appropriate rate limiters and control-plane
            policers</t>
          </list></t>

        <t>Having global IPv6 address on all the enterprises sites is
        different than in IPv4 where <xref target="RFC1918"/> addresses are
        used internally and not routed usually over the Internet. <xref
        target="RFC7359"/> and <xref target="WEBER_VPN"/> explain that without
        careful design, there could be IPv6 leakages out of layer-3 VPN.</t>
      </section>

      <!-- external-->

      <section anchor="internal" title="Internal Security Considerations">
        <t>The internal aspect deals with providing security inside the
        perimeter of the network, including end hosts. Internal networks of
        enterprises are often different: University campus, wireless guest
        access, ... so there is no "one size fits all" recommendations.</t>

        <t>The most significant concerns here are related to Neighbor
        Discovery. At the network level, it is recommended that all security
        considerations discussed in <xref target="linklayer"/> be reviewed
        carefully and the recommendations be considered in-depth as well.
        Section 4.1 of <xref target="RFC7381"/> also provides some
        recommendations.</t>

        <t>As mentioned in <xref target="transition"/>, care must be taken
        when running automated IPv6-in-IPv4 tunnels.</t>

        <t>When site-to-site VPNs are used it should be kept in mind that,
        given the global scope of IPv6 global addresses as opposed to the
        common use of IPv4 private address space <xref target="RFC1918"/>,
        sites might be able to communicate with each other over the Internet
        even when the VPN mechanism is not available and hence no traffic
        encryption is performed and traffic could be injected from the
        Internet into the site, see <xref target="WEBER_VPN"/>. It is
        recommended to filter at the Internet connection(s) packets having a
        source or destination address belonging to the site internal
        prefix(es); this should be done for ingress and egress traffic.</t>

        <t>Hosts need to be hardened directly through security policy to
        protect against security threats. The host firewall default
        capabilities have to be clearly understood. In some cases, 3rd party
        firewalls have no IPv6 support whereas the native firewall installed
        by default has IPv6 support. General device hardening guidelines are
        provided in <xref target="device"/>.</t>

        <t>It should also be noted that many hosts still use IPv4 for
        transporting logs for RADIUS, DIAMETER, TACACS+, SYSLOG, etc.
        Operators cannot rely on an IPv6-only security policy to secure such
        protocols that are still using IPv4.</t>
      </section>

      <!-- internal-->
    </section>

    <!-- enterprise-->

    <section anchor="sp" title="Service Providers Security Considerations">
      <section anchor="bgp" title="BGP">
        <t>The threats and mitigation techniques are identical between IPv4
        and IPv6. Broadly speaking they are: <list style="symbols">
            <t>Authenticating the TCP session;</t>

            <t>TTL security (which becomes hop-limit security in IPv6) as
            <xref target="RFC5082"/>;</t>

            <t>bogon AS filtering, see <xref target="CYMRU"/>;</t>

            <t>Prefix filtering.</t>
          </list> These are explained in more detail in <xref target="rsec"/>.
        Also, the recommendations of <xref target="RFC7454"/> should be
        considered.</t>

        <section anchor="rtbh" title="Remote Triggered Black Hole Filtering">
          <t>RTBH <xref target="RFC5635"/> works identically in IPv4 and IPv6.
          IANA has allocated the 100::/64 prefix to be used as the discard
          prefix <xref target="RFC6666"/>.</t>
        </section>

        <!-- RTBH -->
      </section>

      <!-- BGP-->

      <section anchor="sptrans" title="Transition/Coexistence Mechanism">
        <t>SP will typically use transition mechanisms such as 6rd, 6PE, MAP,
        NAT64 which have been analyzed in the transition and coexistence <xref
        target="coexistence"/> section.</t>
      </section>

      <!-- sptrans-->

      <section anchor="li" title="Lawful Intercept">
        <t>The Lawful Intercept requirements are similar for IPv6 and IPv4
        architectures and will be subject to the laws enforced in varying
        geographic regions. The local issues with each jurisdiction can make
        this challenging and both corporate legal and privacy personnel should
        be involved in discussions pertaining to what information gets logged
        and what the logging retention policies will be.</t>

        <t>The target of interception will usually be a residential subscriber
        (e.g., his/her PPP session or physical line or CPE MAC address). With
        the absence of IPv6 NAT on the CPE, IPv6 has the possibility to allow
        for intercepting the traffic from a single host (a /128 target) rather
        than the whole set of hosts of a subscriber (which could be a /48, a
        /60 or /64).</t>

        <t>In contrast, in mobile environments, since the 3GPP specifications
        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
        establishes a data connection it gets a new IID).</t>

        <t>A sample architecture which was written for informational purposes
        is found in <xref target="RFC3924"/>.</t>
      </section>

      <!-- li -->
    </section>

    <!-- SP-->

    <section anchor="residential"
             title="Residential Users Security Considerations">
      <t>The IETF Homenet working group is working standards and guidelines
      for IPv6 residential networks; this obviously includes operational
      security considerations; but this is still work in progress in early
      2020. <xref target="RFC8520"/> is an interesting approach on how
      firewalls could retrieve and apply specific security policies to some
      residential devices.</t>

      <t>Some residential users have less experience and knowledge about
      security or networking. As most of the recent hosts (e.g., smartphones,
      tablets) all have IPv6 enabled by default, IPv6 security is important
      for those users. Even with an IPv4-only ISP, those users can get IPv6
      Internet access with the help of <xref target="teredo">Teredo</xref>
      tunnels. Several peer-to-peer programs support IPv6 and those programs
      can initiate a Teredo tunnel through an IPv4 residential gateway, with
      the consequence of making the internal host reachable from any IPv6 host
      on the Internet. It is therefore recommended that all host security
      products (including personal firewalls) are configured with a dual-stack
      security policy.</t>

      <t>If the residential CPE has IPv6 connectivity, <xref
      target="RFC7084"/> defines the requirements of an IPv6 CPE and does not
      take position on the debate of default IPv6 security policy as defined
      in <xref target="RFC6092"/>:<list style="symbols">
          <t>outbound only: allowing all internally initiated connections and
          block all externally initiated ones, which is a common default
          security policy enforced by IPv4 Residential Gateway doing NAPT but
          it also breaks the end-to-end reachability promise of IPv6. <xref
          target="RFC6092"/> lists several recommendations to design such a
          CPE;</t>

          <t>open/transparent: allowing all internally and externally
          initiated connections, therefore restoring the end-to-end nature of
          the Internet for the IPv6 traffic but having a different security
          policy for IPv6 than for IPv4.</t>
        </list></t>

      <t><xref target="RFC6092"/> REC-49 states that a choice must be given to
      the user to select one of those two policies.</t>
    </section>

    <!-- residentialThe -->

    <section title="Further Reading">
      <t>There are several documents that describe in more details the
      security 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
      convenience:<list style="numbers">
          <t><xref target="NIST">Guidelines for the Secure Deployment of
          IPv6</xref></t>

          <t><xref target="NAv6TF_Security">North American IPv6 Task Force
          Technology Report - IPv6 Security Technology Paper</xref></t>

          <t><xref target="IPv6_Security_Book">IPv6 Security</xref></t>
        </list></t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>The authors would like to thank the following people for their useful
      comments: Mikael Abrahamsson, Fred Baker, Mustafa Suha Botsali, Mohamed
      Boucadair, Brian Carpenter, Tim Chown, Lorenzo Colitti, Markus de Bruen,
      Tobias Fiebig, Fernando Gont, Jeffry Handal, Lee Howard, Panos
      Kampanakis, Erik Kline, Jouni Korhonen, Warren Kumari, Ted Lemon, Mark
      Lentczner, Jen Linkova (and her detailed review), Gyan S. Mishra, Jordi
      Palet, Bob Sleigh, Donald Smith, Tarko Tikan, Ole Troan, Bernie Volz (by
      alphabetical order).</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>This memo attempts to give an overview of security considerations of
      operating an IPv6 network both for an IPv6-only network and for networks
      utilizing the most widely deployed IPv4/IPv6 coexistence strategies.</t>
    </section>
  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <references title="Normative References">
      <!-- Here we use entities that we defined at the beginning. -->

      &RFC8200;

      <reference anchor="IANA-IPFIX"
                 target="http://www.iana.org/assignments/ipfix">
        <front>
          <title>IP Flow Information Export (IPFIX) Entities</title>

          <author>
            <organization>IANA</organization>
          </author>

          <date/>
        </front>
      </reference>
    </references>

    <references title="Informative References">
      &RFC0826;

      &RFC1918;

      &RFC2131;

      &RFC2460;

      &RFC2529;

      &RFC2663;

      &RFC2784;

      &RFC2827;

      &RFC2866;

      &RFC3056;

      &RFC3068;

      &RFC3627;

      &RFC3704;

      &RFC3756;

      &RFC3924;

      &RFC3964;

      &RFC3971;

      &RFC3972;

      &RFC4033;

      &RFC4302;

      &RFC4303;

      &RFC4193;

      &RFC4293;

      &RFC4301;

      &RFC4364;

      &RFC4380;

      &RFC4381;

      &RFC4443;

      &RFC4552;

      &RFC4649;

      &RFC4659;

      &RFC4798;

      &RFC4861;

      &RFC4864;

      &RFC4890;

      &RFC4941;

      &RFC4942;

      &RFC5082;

      &RFC5214;

      &RFC5340;

      &RFC5635;

      &RFC5952;

      &RFC5969;

      &RFC6092;

      &RFC6104;

      &RFC6105;

      &RFC6144;

      &RFC6146;

      &RFC6147;

      &RFC6164;

      &RFC6169;

      &RFC6177;

      &RFC6192;

      &RFC6221;

      &RFC6241;

      &RFC6264;

      &RFC6269;

      &RFC6296;

      &RFC6302;

      &RFC6324;

      &RFC6343;

      &RFC6333;

      &RFC6459;

      &RFC6547;

      &RFC6564;

      &RFC6583;

      &RFC6598;

      &RFC6620;

      &RFC6666;

      &RFC6762;

      &RFC6763;

      &RFC6775;

      &RFC6877;

      &RFC6888;

      &RFC6939;

      &RFC6964;

      &RFC6967;

      &RFC6980;

      &RFC7010;

      &RFC7011;

      &RFC7012;

      &RFC7039;

      &RFC7045;

      &RFC7050;

      &RFC7084;

      &RFC7112;

      &RFC7113;

      &RFC7123;

      &RFC7166;

      &RFC7217;

      &RFC7359;

      &RFC7381;

      &RFC7404;

      &RFC7422;

      &RFC7454;

      &RFC7513;

      &RFC7526;

      &RFC7552;

      &RFC7597;

      &RFC7599;

      &RFC7610;

      &RFC7707;

      &RFC7721;

      &RFC7785;

      &RFC7772;

      &RFC7824;

      &RFC7844;

      &RFC7857;

      &RFC7872;

      &RFC7915;

      &RFC7934;

      &RFC8040;

      &RFC8064;

      &RFC8190;

      &RFC8210;

      &RFC8273;

      &RFC8343;

      &RFC8344;

      &RFC8415;

      &RFC8504;

      &RFC8520;

      <reference anchor="I-D.kampanakis-6man-ipv6-eh-parsing">
        <front>
          <title>Implementation Guidelines for parsing IPv6 Extension
          Headers</title>

          <author fullname="Panos Kampanakis" initials="P"
                  surname="Kampanakis">
            <organization/>
          </author>

          <date day="5" month="August" year="2014"/>

          <abstract>
            <t>IPv6 is widely used on the internet today and is expected to be
            deployed more as more devices (i.e., home automation) get inter-
            connected. The IPv6 header format allows for the use of Extension
            Headers (EH). EHs could be chained together with very few existing
            guidelines by the IPv6 protocol on how devices should parse them,
            which open room for security concerns and inconsistencies. This
            document presents guidelines for parsing IPv6 EHs with a goal of
            providing a common and consistent parsing methodology for IPv6
            implementers among the industry.</t>
          </abstract>
        </front>

        <seriesInfo name="Internet-Draft"
                    value="draft-kampanakis-6man-ipv6-eh-parsing-01"/>

        <format target="http://www.ietf.org/internet-drafts/draft-kampanakis-6man-ipv6-eh-parsing-01.txt"
                type="TXT"/>
      </reference>

      &I-D.ietf-opsec-ipv6-eh-filtering;

      <reference anchor="IEEE-802.1X">
        <front>
          <title>IEEE Standard for Local and metropolitan area networks -
          Port-Based Network Access Control</title>

          <author fullname="IEEE" surname="IEEE"/>

          <date month="February" year="2010"/>
        </front>

        <seriesInfo name="IEEE Std" value="802.1X-2010"/>
      </reference>

      <reference anchor="SCANNING"
                 target="http://www.caida.org/workshops/isma/1202/slides/aims1202_rbarnes.pdf">
        <front>
          <title>Mapping the Great Void - Smarter scanning for IPv6</title>

          <author fullname="Richard Barnes"/>

          <author fullname="Rick Altmann"/>

          <author fullname="Daniel Kerr"/>

          <date month="February" year="2012"/>
        </front>
      </reference>

      <reference anchor="IPv6_Security_Book">
        <front>
          <title>IPv6 Security</title>

          <author fullname="Scott Hogg" surname="Hogg"/>

          <author fullname="Eric Vyncke" surname="Vyncke"/>

          <date month="December" year="2008"/>
        </front>

        <seriesInfo name="ISBN" value="1-58705-594-5"/>

        <seriesInfo name="Publisher" value="CiscoPress"/>
      </reference>

      <reference anchor="NAv6TF_Security"
                 target="http://www.ipv6forum.com/dl/white/NAv6TF_Security_Report.pdf">
        <front>
          <title>North American IPv6 Task Force Technology Report - IPv6
          Security Technology Paper</title>

          <author fullname="Merike Kaeo" surname="Kaeo"/>

          <author fullname="David Green" surname="Green"/>

          <author fullname="Jim Bound" surname="Bound"/>

          <author fullname="Yanick Pouffary" surname="Pouffary"/>

          <date year="2006"/>
        </front>
      </reference>

      <reference anchor="GDPR"
                 target="https://eur-lex.europa.eu/eli/reg/2016/679/oj">
        <front>
          <title>Regulation (EU) 2016/679 of the European Parliament and of
          the Council of 27 April 2016 on the protection of natural persons
          with regard to the processing of personal data and on the free
          movement of such data, and repealing Directive 95/46/EC (General
          Data Protection Regulation)</title>

          <author fullname="Official Journal of the European Union"/>

          <date day="27" month="April" year="2016"/>
        </front>
      </reference>

      <reference anchor="RADB" target="https://www.radb.net/">
        <front>
          <title>RADb The Internet Routing Registry</title>

          <author fullname="MERIT NETWORK, INC."/>

          <date year="Existing in 2021"/>
        </front>
      </reference>

      <reference anchor="europol-cgn"
                 target="https://www.europol.europa.eu/newsroom/news/are-you-sharing-same-ip-address-criminal-law-enforcement-call-for-end-of-carrier-grade-nat-cgn-to-increase-accountability-online">
        <front>
          <title>ARE YOU SHARING THE SAME IP ADDRESS AS A CRIMINAL? LAW
          ENFORCEMENT CALL FOR THE END OF CARRIER GRADE NAT (CGN) TO INCREASE
          ACCOUNTABILITY ONLINE</title>

          <author fullname="Europol"/>

          <date day="17" month="October" year="2017"/>
        </front>
      </reference>

      <reference anchor="NIST"
                 target="http://csrc.nist.gov/publications/nistpubs/800-119/sp800-119.pdf">
        <front>
          <title>Guidelines for the Secure Deployment of IPv6</title>

          <author fullname="Sheila Frankel" surname="Frankel"/>

          <author fullname="Richard Graveman" surname="Graveman"/>

          <author fullname="John Pearce" surname="Pearce"/>

          <author fullname="Mark Rooks " surname="Rooks"/>

          <date year="2010"/>
        </front>
      </reference>

      <reference anchor="WEBER_VPN"
                 target="https://blog.webernetz.net/wp-content/uploads/2018/03/TR18-Johannes-Weber-Dynamic-IPv6-Prefix-Problems-and-VPNs.pdf">
        <front>
          <title>Dynamic IPv6 Prefix - Problems and VPNs</title>

          <author fullname="Johannes Weber" surname="Weber"/>

          <date month="March" year="2018"/>
        </front>
      </reference>

      <reference anchor="CYMRU"
                 target="https://team-cymru.com/community-services/bogon-reference/">
        <front>
          <title>The Bogon Reference</title>

          <author fullname="Cymru Team"/>

          <date year="Existing in 2021"/>
        </front>
      </reference>

      <reference anchor="REY_PF"
                 target="https://labs.ripe.net/Members/enno_rey/local-packet-filtering-with-ipv6">
        <front>
          <title>Local Packet Filtering with IPv6</title>

          <author fullname="Enno Rey" surname="Rey"/>

          <date day="13" month="July" year="2017"/>
        </front>
      </reference>
    </references>
  </back>
</rfc>
