IPv6 Neighbor Discovery Inspection
IPv6 Neighbor Discovery Protocol Overview
IPv6 nodes (hosts and routers) use Neighbor Discovery Protocol (NDP) to discover the presence and link-layer addresses of other nodes residing on the same link. Hosts use NDP to find neighboring routers that are willing to forward packets on their behalf, while routers use it to advertise their presence. Nodes also use NDP to maintain reachability information about the paths to active neighbors. When a router or the path to a router fails, a host can search for alternate paths.
The NDP process is based on the exchange of neighbor solicitation and advertisement messages. NDP messages are unsecured, which makes NDP susceptible to attacks that involve the spoofing (or forging) of link-layer addresses. An attacking node can cause packets for legitimate nodes to be sent to some other link-layer address by either sending a neighbor solicitation message with a spoofed source MAC address, or by sending a neighbor advertisement address with a spoofed target MAC address. The spoofed MAC address is then associated with a legitimate network IPv6 address by the other nodes.
Neighbor Discovery (ND) Inspection
IPv6 neighbor discovery inspection mitigates NDP security vulnerabilities
by inspecting neighbor discovery messages and verifying them against
the DHCPv6 snooping table. The DHCPv6 snooping table, which is built
by snooping DHCPv6 message exchanges, includes the IPv6 address, MAC
address, VLAN and interface for each host associated with the VLAN.
When a neighbor discovery message is received on an untrusted interface,
neighbor discovery inspection discards the packet unless the source
IPv6 and MAC addresses, VLAN, and interface can be matched to an entry
in the DHCPv6 snooping table. Entries can be added to the DHCPv6 snooping
table by configuring the static-ipv6
CLI statement.
Neighbor discovery messages are always allowed on trusted interfaces.
Neighbor discovery inspection verifies five different ICMPv6 message types: Router Solicitation, Router Advertisement, Neighbor Solicitation, Neighbor Advertisement, and Redirect. By discarding message packets that can not be verified against the DHCPv6 snooping table, neighbor discovery inspection can prevent the following types of attacks:
Cache poisoning attacks—Neighbor discovery cache poisoning is the IPv6 equivalent of ARP spoofing, in which an attacker uses a forged address to send an unsolicited advertisement to other hosts on the network, for associating its own MAC address with a legitimate network IP address. These bindings between IPv6 addresses and MAC addresses are stored by each node in its neighbor cache. Once the caches are updated with the malicious bindings, the attacker can initiate a man-in-the-middle attack, intercepting traffic that was intended for a legitimate host.
Routing denial-of-service (DoS) attacks—An attacker could cause a host to disable its first-hop router by spoofing the address of a router and sending a neighbor advertisement message with the router flag cleared. The victim host assumes that the device that used to be its first-hop router is no longer a router.
Redirect attacks—Routers use ICMPv6 redirect requests to inform a host of a more efficient route to a destination. Hosts can be redirected to a better first-hop router, but can also be informed by a Router Redirect message that the destination is in fact a neighbor. An attacker using this provision can achieve an effect similar to cache poisoning and intercept all traffic from the victim host. Neighbor discovery inspection checks that Router Redirect messages are sent only by trusted routers.
Enabling ND Inspection
DHCPv6 snooping is enabled automatically when neighbor discovery inspection is configured. There is no explicit configuration required for DHCPv6 snooping.
To enable neighbor discovery inspection on a VLAN:
[edit vlans vlan-name forwarding-options dhcp-security] user@switch# set neighbor-discovery-inspection