Select any two versions of this STIG to compare the individual requirements
Select any old version/release of this STIG to view the previous requirements
Review the switch configuration to verify that ACLs are configured to allow or deny traffic for specific source and destination addresses as well as ports and protocols. For example, the configuration below will allow only printer traffic into subnet 10.1.12.0/24 and SQL traffic into subnet 10.1.13.0/24. ICMP is allowed for troubleshooting and OSPF is the routing protocol used within the network. interface Ethernet2/3 no switchport ip access-group FILTER_SERVER_TRAFFIC in ip address 10.1.23.2/24 no shutdown … … … ip access-list FILTER_SERVER_TRAFFIC 10 permit tcp any 10.1.12.0/24 eq lpd 20 permit tcp any 10.1.12.0/24 eq 631 30 permit tcp any 10.1.12.0/24 eq 9100 40 permit tcp any 10.1.13.0/24 eq 1433 50 permit tcp any 10.1.13.0/24 eq 1434 60 permit tcp any 10.1.13.0/24 eq 4022 70 permit icmp any any 80 permit ospf any any 90 deny ip any any Alternate: Inter-VLAN routing interface Vlan12 ip address 10.1.12.1 255.255.255.0 ip access-group FILTER_PRINTER_VLAN out ! interface Vlan13 ip address 10.1.13.1 255.255.255.0 ip access-group FILTER_SQL_VLAN out … … … ip access-list FILTER_PRINTER_VLAN 10 permit tcp any any eq lpd 20 permit tcp any any eq 631 30 permit tcp any any eq 9100 40 permit icmp any any 50 deny ip any any ip access-list FILTER_SQL_VLAN 10 permit tcp any any eq 1433 20 permit tcp any any eq 1434 30 permit tcp any any eq 4033 40 permit icmp any any 50 deny ip any any If the switch is not configured to enforce approved authorizations for controlling the flow of information within the network based on organization-defined information flow control policies, this is a finding.
Configure ACLs to allow or deny traffic for specific source and destination addresses as well as ports and protocols between various subnets as required. The commands used below were used to create the configuration as shown in the check content. SW1(config)# ip access-list FILTER_SERVER_TRAFFIC SW1(config-acl)# permit tcp any 10.1.12.0 0.0.0.255 eq lpd SW1(config-acl)# permit tcp any 10.1.12.0 0.0.0.255 eq 631 SW1(config-acl)# permit tcp any 10.1.12.0 0.0.0.255 eq 9100 SW1(config-acl)# permit tcp any 10.1.13.0 0.0.0.255 eq 1433 SW1(config-acl)# permit tcp any 10.1.13.0 0.0.0.255 eq 1434 SW1(config-acl)# permit tcp any 10.1.13.0 0.0.0.255 eq 4022 SW1(config-acl)# permit icmp any any SW1(config-acl)# permit ospf any any SW1(config-acl)# deny ip any any SW1(config-acl)# exit SW1(config)# int e2/3 SW1(config-if)# ip access-group FILTER_SERVER_TRAFFIC in SW1(config-if)# end Alternate: Inter-VLAN routing SW1(config)# ip access-list FILTER_PRINTER_VLAN SW1(config-acl)# permit tcp any any eq lpd SW1(config-acl)# permit tcp any any eq 631 SW1(config-acl)# permit tcp any any eq 9100 SW1(config-acl)# permit icmp any any SW1(config-acl)# deny ip any any SW1(config-acl)# exit SW1(config)# ip access-list FILTER_SQL_VLAN SW1(config-acl)# permit tcp any any eq 1433 SW1(config-acl)# permit tcp any any eq 1434 SW1(config-acl)# permit tcp any any eq 4033 SW1(config-acl)# permit icmp any any SW1(config-acl)# deny ip any any SW1(config-acl)# exit SW1(config)# int vlan 12 SW1(config-if)# ip access-group FILTER_PRINTER_VLAN out SW1(config-if)# exit SW1(config)# int vlan 13 SW1(config-if)# ip access-group FILTER_SQL_VLAN out SW1(config-if)# end
Review the switch configuration. Verify that neighbor switch authentication is enabled for all routing protocols. The configuration examples below depicts BGP, EIGRP, IS-IS and OSPF authentication. BGP Example router bgp 1 router-id 1.1.1.1 address-family ipv4 unicast neighbor 10.1.12.2 remote-as 2 password 3 3ec66c90c104ad13 EIGRP Example key chain EIGRP_KEY key 1 key-string xxxxxxx … … … interface Ethernet2/21 no switchport ip router eigrp 1 ip authentication mode eigrp 1 md5 ip authentication key-chain eigrp 1 EIGRP_KEY or router eigrp 1 authentication mode md5 authentication key-chain EIGRP_KEY Note: Interface authentication overrides process authentication. IS-IS Example interface Ethernet2/20 no switchport isis authentication-type md5 level-1 isis authentication key-chain xxxxx level-1 ip router isis 1 OSPF Example interface Ethernet2/2 no switchport ip ospf authentication ip ospf authentication key-chain OSPF_KEY ip router ospf 1 area 0.0.0.0 RIP Example interface Ethernet2/8 no switchport ip rip authentication mode md5 ip rip authentication key-chain RIP_KEY If authentication is not enabled on all routing protocols, this is a finding.
Configure authentication to be enabled for every protocol that affects the routing or forwarding tables. The example configuration commands below enable OSPF, EIGRP, IS-IS, and BGP authentication. BGP Example SW1(config)# switch bgp nn SW1(config-router)# neighbor 10.1.12.2 SW1(config-router-neighbor)# password xxxxxxxx SW1(config-router-neighbor)# end EIGRP Example Step 1: Configure the key chain. SW1(config)# key chain EIGRP_KEY SW1(config-keychain)# key 1 SW1(config-keychain-key)# key-string xxxxxx SW1(config-keychain-key)# exit SW1(config-keychain)# exit Step 2: Apply the key chain to the EIGRP process or each neighbor. Authentication for the EIGRP process SW1(config)# router eigrp 1 SW1(config-router)# authentication mode md5 SW1(config-router)# authentication key-chain XXXXXX SW1(config-router)# end or Authentication for the EIGRP neighbor SW1(config)# int e2/21 SW1(config-if)# ip authentication mode eigrp 1 md5 SW1(config-if)# ip authentication key-chain eigrp 1 xxxxx SW1(config-if)# end Note: Interface authentication overrides process authentication. IS-IS Example Step 1: Configure the key chain. SW1(config)# key chain ISIS_KEY SW1(config-keychain)# key 1 SW1(config-keychain-key)# key-string xxxxxx SW1(config-keychain-key)# exit SW1(config-keychain)# exit Step 2: Apply the key chain to each ISIS neighbor. SW1(config)# int e2/20 SW1(config-if)# isis authentication-type md5 level-1 SW1(config-if)# isis authentication key-chain xxxxx level-1 OSPF Example Step 1: Configure the key chain. SW1(config)# key chain OSPF_KEY SW1(config-keychain)# key 1 SW1(config-keychain-key)# key-string xxxxxx SW1(config-keychain-key)# exit SW1(config-keychain)# exit Step 2: Apply the key chain to each OSPF neighbor. SW1(config)# int e2/2 SW1(config-if)# ip ospf authentication SW1(config-if)# ip ospf authentication key-chain OSPF_KEY RIP Example Step 1: Configure the key chain. SW1(config)# key chain RIP_KEY SW1(config-keychain)# key 1 SW1(config-keychain-key)# key-string xxxxxx SW1(config-keychain-key)# exit SW1(config-keychain)# exit Step 2: Apply the key chain to each RIP neighbor. SW1(config)# int e2/8 SW1(config-if)# ip rip authentication mode md5 SW1(config-if)# ip rip authentication key-chain RIP_KEY
Review the start times for each key within the configured key chains used for routing protocol authentication as shown in the example below: key chain OSPF_KEY key 1 key-string 7 070d2e4e4c10 accept-lifetime 00:00:00 Oct 01 2019 01:05:00 Jan 01 2020 send-lifetime 00:00:00 Oct 01 2019 23:59:59 Dec 31 2019 key 2 key-string 7 0704205e4b07 accept-lifetime 23:55:00 Dec 31 2019 01:05:00 Apr 01 2020 send-lifetime 00:00:00 Jan 01 2020 23:59:59 Mar 31 2020 Note: Key chains must be configured to authenticate routing protocol messages as it is the only way to set an expiration. If any key has a lifetime of more than 180 days, this is a finding.
Configure each key used for routing protocol authentication to have a lifetime of no more than 180 days as shown in the example below: SW1(config)# key chain OSPF_KEY SW1(config-keychain)# key 1 SW1(config-keychain-key)# key-string xxxxxxxxxxxx SW1(config-keychain-key)# send-lifetime 00:00:00 Oct 1 2019 23:59:59 Dec 31 2019 SW1(config-keychain-key)# accept-lifetime 00:00:00 Oct 1 2019 01:05:00 Jan 1 2020 SW1(config-keychain-key)# key 2 SW1(config-keychain-key)# key-string kxxxxxxxxxxxxx SW1(config-keychain-key)# send-lifetime 00:00:00 Jan 1 2020 23:59:59 Mar 31 2020 SW1(config-keychain-key)# accept-lifetime 23:55:00 Dec 31 2019 01:05:00 Apr 1 2020 SW1(config-keychain-key)# end
Review the switch configuration. For every routing protocol that affects the routing or forwarding tables, verify that neighbor switch authentication is encrypting the authentication key as shown in the examples below: BGP Example router bgp 1 router-id 1.1.1.1 address-family ipv4 unicast neighbor 10.1.12.2 remote-as 2 password 3 3ec66c90c104ad13 Note: BGP authentication uses MD5. EIGRP Example interface Ethernet2/21 no switchport ip router eigrp 1 ip authentication mode eigrp 1 md5 or router eigrp 1 authentication mode md5 Note: Interface authentication overrides process authentication. IS-IS Example interface Ethernet2/20 no switchport isis authentication-type md5 level-1 OSPF Example interface Ethernet2/2 no switchport mac-address 0000.0000.002f ip ospf authentication message-digest ip ospf message-digest-key 1 md5 3 3ec66c90c104ad13 RIP Example interface Ethernet2/8 no switchport ip rip authentication mode md5 If the routing protocol is not encrypting the authentication key, this is a finding.
Configure all routing protocol authentications to encrypt the authentication key. BGP Example SW1(config)#switch bgp nn SW1(config-switch)#neighbor x.x.x.x password xxxxxx EIGRP Example SW1(config)# router eigrp 1 SW1(config-router)# authentication mode md5 SW1(config-router)# end or Authentication for the EIGRP neighbor SW1(config)# int e2/21 SW1(config-if)# ip authentication mode eigrp 1 md5 SW1(config-if)# end Note: Interface authentication overrides process authentication. IS-IS Example SW1(config)# int e2/20 SW1(config-if)# isis authentication-type md5 level-1 OSPF Example SW1(config)# int e2/2 SW1(config-if)# ip ospf authentication message-digest SW1(config-if)# ip ospf message-digest-key 1 md5 xxxxxxxxxxx RIP Example SW1(config)# int e2/8 SW1(config-if)# ip rip authentication mode md5
Review the switch configuration to verify it is using a NIST-validated FIPS 198-1 message authentication code algorithm to authenticate routing protocol messages. OSPF Example key chain OSPF_KEY key 1 key-string 7 070d2e4e4c10 accept-lifetime 00:00:00 Oct 01 2019 01:05:00 Jan 01 2020 send-lifetime 00:00:00 Oct 01 2019 23:59:59 Dec 31 2019 cryptographic-algorithm hmac-sha-256 key 2 key-string 7 0704205e4b07 accept-lifetime 23:55:00 Dec 31 2019 01:05:00 Apr 01 2020 send-lifetime 00:00:00 Jan 01 2020 23:59:59 Mar 31 2020 cryptographic-algorithm hmac-sha-256 … … … interface Ethernet2/2 no switchport ip ospf authentication key-chain OSPF_KEY Note: BGP, RIP, EIGRP, IS-IS do not support any FIPS 198-1 HMAC algorithms. If a NIST-validated FIPS 198-1 message authentication code algorithm is not being used to authenticate routing protocol messages, this is a finding.
Configure routing protocol authentication to use a NIST-validated FIPS 198-1 message authentication code algorithm as shown in the example below: SW1(config)# key chain OSPF_KEY SW1(config-keychain)# key 1 SW1(config-keychain-key)# key-string xxxxxxxxxxxx SW1(config-keychain-key)# send-lifetime 00:00:00 Oct 1 2019 23:59:59 Dec 31 2019 SW1(config-keychain-key)# accept-lifetime 00:00:00 Oct 1 2019 01:05:00 Jan 1 2020 SW1(config-keychain-key)# cryptographic-algorithm hmac-sha-256 SW1(config-keychain-key)# key 2 SW1(config-keychain-key)# key-string kxxxxxxxxxxxxx SW1(config-keychain-key)# send-lifetime 00:00:00 Jan 1 2020 23:59:59 Mar 31 2020 SW1(config-keychain-key)# accept-lifetime 23:55:00 Dec 31 2019 01:05:00 Apr 1 2020 SW1(config-keychain-key)# cryptographic-algorithm hmac-sha-256 SW1(config-keychain-key)# end SW1(config)# int e2/2 SW2(config-if)# ip ospf authentication key-chain OSPF_KEY
Review the switch configuration and verify that inactive interfaces have been disabled as shown below: interface Ethernet4/12 shutdown no switchport interface Ethernet4/13 shutdown no switchport … … … interface Ethernet4/48 shutdown no switchport If an interface is not being used but is configured or enabled, this is a finding.
Disable all inactive interfaces as shown below: SW1(config)# int e4/1 - 11 SW1(config-if-range)# shutdown SW1(config-if-range)# end
Verify that the switch does not have any unnecessary or non-secure ports, protocols and services enabled. For example, the following features such as telnet should never be enabled, while other features should only be enabled if required for operations. feature telnet feature dhcp feature wccp feature nxapi feature imp If any unnecessary or non-secure ports, protocols, or services are enabled, this is a finding.
Disable features that should not be enabled unless required for operations. SW2(config)# no feature telnet SW2(config)# no feature dhcp SW2(config)# no feature wccp SW2(config)# no feature nxapi SW2(config)# no feature imp Note: Telnet must always be disabled.
Review the switch configuration to determine if the call home service is enabled as shown in the example below: callhome contract-id CompanyXYZ customer-id CompanyXYZ email-contact netadmin@CompanyXYZ.com phone-contact +1-800-555-4567 enable If the call home feature is configured to call home to the vendor, this is a finding.
Disable the call home feature as shown below: SW1(config)# callhome SW1(config-callhome)# no enable SW1(config-callhome)# end
Review the Cisco switch configuration to verify that it is compliant with this requirement. Step 1: Verify traffic types have been classified based on importance levels. The following is an example configuration: class-map match-all CoPP_CRITICAL match access-group name CoPP_CRITICAL class-map match-any CoPP_IMPORTANT match access-group name CoPP_IMPORTANT match protocol arp class-map match-all CoPP_NORMAL match access-group name CoPP_NORMAL class-map match-any CoPP_UNDESIRABLE match access-group name CoPP_UNDESIRABLE class-map match-all CoPP_DEFAULT match access-group name CoPP_DEFAULT Step 2: Review the ACLs referenced by the class maps to determine if the traffic is being classified appropriately. The following is an example configuration: ip access-list CoPP_CRITICAL remark our control plane adjacencies are critical permit ospf host [OSPF neighbor A] any permit ospf host [OSPF neighbor B] any permit pim host [PIM neighbor A] any permit pim host [PIM neighbor B] any permit pim host [RP addr] any permit igmp any 224.0.0.0 15.255.255.255 permit tcp host [BGP neighbor] eq bgp host [local BGP addr] permit tcp host [BGP neighbor] host [local BGP addr] eq bgp deny ip any any ip access-list CoPP_IMPORTANT permit tcp host [TACACS server] eq tacacs any permit tcp [management subnet] 0.0.0.255 any eq 22 permit udp host [SNMP manager] any eq snmp permit udp host [NTP server] eq ntp any deny ip any any ip access-list CoPP_NORMAL remark we will want to rate limit ICMP traffic permit icmp any any echo permit icmp any any echo-reply permit icmp any any time-exceeded permit icmp any any unreachable deny ip any any ip access-list CoPP_UNDESIRABLE remark other management plane traffic that should not be received permit udp any any eq ntp permit udp any any eq snmp permit tcp any any eq 22 permit tcp any any eq 23 remark other control plane traffic not configured on switch permit eigrp any any permit udp any any eq rip deny ip any any ip access-list CoPP_DEFAULT permit ip any any Note: Explicitly defining undesirable traffic with ACL entries enables the network operator to collect statistics. Excessive ARP packets can potentially monopolize Route Processor resources, starving other important processes. Currently, ARP is the only Layer 2 protocol that can be specifically classified using the match protocol command. Step 3: Review the policy-map to determine if the traffic is being policed appropriately for each classification. The following is an example configuration: policy-map CONTROL_PLANE_POLICY class CoPP_CRITICAL police 512000 8000 conform-action transmit exceed-action transmit class CoPP_IMPORTANT police 256000 4000 conform-action transmit exceed-action drop class CoPP_NORMAL police 128000 2000 conform-action transmit exceed-action drop class CoPP_UNDESIRABLE police 8000 1000 conform-action drop exceed-action drop class CoPP_DEFAULT police 64000 1000 conform-action transmit exceed-action drop Step 4: Verify that the CoPP policy is enabled. The following is an example configuration: control-plane service-policy input CONTROL_PLANE_POLICY If the Cisco switch is not configured to protect against known types of DoS attacks by employing organization-defined security safeguards, this is a finding.
Configure the Cisco switch protect against known types of DoS attacks on the route processor. Implementing a CoPP policy as shown in the example below is a best practice method. Step 1: Configure ACLs specific traffic types. SW1(config)# ip access-list CoPP_CRITICAL SW1(config-acl)# remark our control plane adjacencies are critical SW1(config-acl)# permit ospf host 10.1.12.1 any SW1(config-acl)# permit ospf host 10.1.22.1 any SW1(config-acl)# permit pim host 10.1.12.1 any SW1(config-acl)# permit pim host 10.1.22.1 any SW1(config-acl)# permit pim host 10.1.33.4 any SW1(config-acl)# permit igmp any 224.0.0.0 15.255.255.255 SW1(config-acl)# permit tcp host 10.2.33.3 eq bgp host 10.2.33.4 SW1(config-acl)# permit tcp host 10.2.33.3 host 10.2.33.4 eq bgp SW1(config-acl)# deny ip any any SW1(config-acl)# exit SW1(config)# ip access-list CoPP_IMPORTANT SW1(config-acl)# permit tcp host 10.1.33.5 eq tacacs any SW1(config-acl)# permit tcp 10.1.33.0 0.0.0.255 any eq 22 SW1(config-acl)# permit udp host 10.1.33.7 any eq snmp SW1(config-acl)# permit udp host 10.1.33.9 eq ntp any SW1(config-acl)# deny ip any any SW1(config-acl)# exit SW1(config)# ip access-list CoPP_NORMAL SW1(config-acl)# remark we will want to rate limit ICMP traffic SW1(config-acl)# permit icmp any any echo SW1(config-acl)# permit icmp any any echo-reply SW1(config-acl)# permit icmp any any time-exceeded SW1(config-acl)# permit icmp any any unreachable SW1(config-acl)# deny ip any any SW1(config-acl)# exit SW1(config)# ip access-list CoPP_UNDESIRABLE SW1(config-acl)# remark other management plane traffic that should not be received SW1(config-acl)# permit udp any any eq ntp SW1(config-acl)# permit udp any any eq snmp SW1(config-acl)# permit tcp any any eq 22 SW1(config-acl)# permit tcp any any eq 23 SW1(config-acl)# remark other control plane traffic not configured on switch SW1(config-acl)# permit eigrp any any SW1(config-acl)# permit udp any any eq rip SW1(config-acl)# deny ip any any SW1(config-acl)# exit SW1(config)# ip access-list CoPP_DEFAULT SW1(config-acl)# permit ip any any SW1(config-acl)# exit Step 2: Configure class maps referencing each of the ACLs. SW1(config)# class-map match-all CoPP_CRITICAL SW1(config-cmap)# match access-group name CoPP_CRITICAL SW1(config-cmap)# class-map match-any CoPP_IMPORTANT SW1(config-cmap)# match access-group name CoPP_IMPORTANT SW1(config-cmap)# match protocol arp SW1(config-cmap)# class-map match-all CoPP_NORMAL SW1(config-cmap)# match access-group name CoPP_NORMAL SW1(config-cmap)# class-map match-any CoPP_UNDESIRABLE SW1(config-cmap)# match access-group name CoPP_UNDESIRABLE SW1(config-cmap)# class-map match-all CoPP_DEFAULT SW1(config-cmap)# match access-group name CoPP_DEFAULT SW1(config-cmap)# exit Step 3: Configure a policy map referencing the configured class maps and apply appropriate bandwidth allowance and policing attributes. SW1(config)# policy-map CONTROL_PLANE_POLICY SW1(config-pmap)# class CoPP_CRITICAL SW1(config-pmap-c)# police 512000 8000 conform-action transmit exceed-action transmit SW1(config-pmap-c-police)# class CoPP_IMPORTANT SW1(config-pmap-c)# police 256000 4000 conform-action transmit exceed-action drop SW1(config-pmap-c-police)# class CoPP_NORMAL SW1(config-pmap-c)# police 128000 2000 conform-action transmit exceed-action drop SW1(config-pmap-c-police)# class CoPP_UNDESIRABLE SW1(config-pmap-c)# police 8000 1000 conform-action drop exceed-action drop SW1(config-pmap-c-police)# class CoPP_DEFAULT SW1(config-pmap-c)# police 64000 1000 conform-action transmit exceed-action drop SW1(config-pmap-c-police)# exit SW1(config-pmap-c)# exit SW1(config-pmap)# exit Step 4: Apply the policy map to the control plane. SW1(config)# control-plane SW1(config-cp)# service-policy input CONTROL_PLANE_POLICY SW1(config-cp)# end
Review the external and internal ACLs to verify that the switch is configured to only allow specific management and control plane traffic from specific sources destined to itself. Step 1: Verify ACLs has been configured as shown in the example below that matches expected control plane and management plane traffic. With the exception of ICMP, all other traffic destined to the switch should be dropped. ip access-list EXTERNAL_ACL 10 permit tcp x.11.1.1/32 eq bgp x.11.1.2/32 20 permit tcp x.11.1.1/32 x.11.1.2/32 eq bgp 30 permit icmp x.11.1.1/32 x.11.1.2/32 echo 40 permit icmp x.11.1.1/32 x.11.1.2/32 echo-reply 50 deny ip any x.11.1.1/32 log 60 permit … … … … 90 deny ip any any log ip access-list INTERNAL_ACL 10 permit icmp any any 20 permit ospf 10.1.12.1/32 10.1.12.2/32 30 permit tcp 10.2.1.0/24 10.1.12.2/32 eq 22 40 permit tcp 10.2.1.0/24 10.1.12.2/32 eq tacacs 50 permit udp 10.2.1.0/24 10.1.12.2/32 eq snmp 60 permit udp 10.2.1.0/24 10.1.12.2/32 eq ntp 70 deny ip any 10.1.12.2/32 log 80 permit …. 90 deny ip any any log Note: For the internal ACL example, all switches within the hypothetical network (10.1.0.0/16) have been configured to use the loopback address to source all management traffic (not shown); hence, the loopbacks are the only allowable destination address for management traffic. In addition, all management traffic destined to the switch must originate from the management network (10.2.1.0/24). With the exception of link-local control plane traffic and ICMP, all other traffic destined to any physical interface address will be dropped. Step 2: Verify that the ACL has been applied to the appropriate interface as shown in the example below: interface Ethernet1/2 no switchport ip access-group EXTERNAL_ACL in ip address x.11.1.2 255.255.255.254 interface Ethernet1/3 no switchport ip access-group INTERNAL_ACL in ip address 10.1.12.2 255.255.255.0 If the switch is not configured to restrict traffic destined to itself, this is a finding.
Step 1: Configure the ACL for any external interfaces as shown in the example below: SW1(config)# ip access-list EXTERNAL_ACL SW1(config-acl)# permit tcp host x.11.1.1 eq bgp host x.11.1.2 SW1(config-acl)# permit tcp host x.11.1.1 host x.11.1.2 eq bgp SW1(config-acl)# permit icmp host x.11.1.1 host x.11.1.2 echo SW1(config-acl)# permit icmp host x.11.1.1 host x.11.1.2 echo-reply SW1(config-acl)# deny ip any host x.11.1.1 log SW1(config-acl)# permit … … … … SW1(config-acl)# deny ip any any log Configure the ACL for any external interfaces as shown in the example below: SW1(config)# ip access-list INTERNAL_ACL SW1(config-acl)# permit ospf host 10.1.12.1 host 10.1.12.2 SW1(config-acl)# permit tcp 10.2.1.0 0.0.0.255 host 10.1.12.2 eq 22 SW1(config-acl)# permit tcp 10.2.1.0 0.0.0.255 host 10.1.12.2 eq tacacs SW1(config-acl)# permit udp 10.2.1.0 0.0.0.255 host 10.1.12.2 eq snmp SW1(config-acl)# permit udp 10.2.1.0 0.0.0.255 host 10.1.12.2 eq ntp SW1(config-acl)# deny ip any host 10.1.12.2 log SW1(config-acl)# permit … … … … SW1(config-acl)# permit ip any any log SW1(config-acl)# exit Note: best practice is to configure the ACL statements relative to traffic destined to the switch first followed by ACL statements for transit traffic. Step 2: Apply the ACLs to the appropriate interface as shown in the example below: SW1(config)# int e1/2 SW1(config-if)# ip access-group EXTERNAL_ACL in SW1(config)# int e1/3 SW1(config-if)# ip access-group INTERNAL_ACL in
Review the external and internal ACLs to verify that the switch is configured drop all fragmented ICMP packets destined to itself. ip access-list EXTERNAL_ACL 10 permit tcp x.11.1.1/32 eq bgp x.11.1.2/32 20 permit tcp x.11.1.1/32 x.11.1.2/32 eq bgp 30 deny icmp any x.11.1.2/32 fragments log 40 permit icmp x.11.1.1/32 x.11.1.2/32 echo … … … 90 deny ip any any log ip access-list INTERNAL_ACL 10 deny icmp any host 10.1.12.2/32 fragments 20 permit icmp any any Note: Ensure the statement to deny ICMP fragments is before any permit statements for ICMP. If the switch is not configured to drop all fragmented ICMP packets destined to itself, this is a finding.
Configure the external and internal ACLs to drop all fragmented ICMP packets destined to itself as shown in the example below: SW1(config)# ip access-list EXTERNAL_ACL SW1(config-acl)# 35 deny icmp any host x.11.1.2 fragments log SW1(config-acl)# exit SW1(config)# ip access-list INTERNAL_ACL SW1(config-acl)# 25 deny icmp any host 10.1.12.2 fragments log SW1(config-acl)# end Note: Ensure the above statement is before any permit statements for ICMP.
Review the configuration to determine if gratuitous ARP is disabled on all external interfaces as shown in the example below: interface Ethernet2/7 no switchport ip address x.22.4.2/30 no ip arp gratuitous request Note: Gratuitous ARP is enabled on all interfaces by default. If gratuitous ARP is enabled on any external interface, this is a finding.
Disable Gratuitous ARP as shown in the example below: SW1(config)# int e2/7 SW1(config-if)# no ip arp gratuitous request SW1(config-if)# end
Review the switch configuration to determine if it is compliant with this requirement. IP directed broadcast command must not be found on any interface as shown in the example below: interface Ethernet2/2 no switchport ip address 10.1.12.1/24 ip directed-broadcast If IP directed broadcast is not disabled on all interfaces, this is a finding.
Disable IP directed broadcast on all interfaces as shown in the example below: SW1(config)# int e2/2 SW1(config-if)# no ip directed-broadcast SW1(config-if)# end
Review the switch configuration to determine if it is compliant with this requirement. The ip unreachables command must not be found on any interface as shown in the example below: interface Ethernet2/7 no switchport ip address x.22.4.2/30 ip unreachables If ICMP unreachable notifications are sent from any external interfaces, this is a finding.
Disable ip unreachables on all external interfaces as shown below: SW1(config)# int e2/7 SW1(config-if)# no ip unreachables SW1(config-if)# end
Review the switch configuration to verify that the no ip redirects command has been configured on all external interfaces as shown in the example below: interface Ethernet2/7 no switchport ip address x.22.4.2/30 no ip redirects If ICMP Redirect messages are enabled on any external interfaces, this is a finding.
Disable ICMP redirects on all external interfaces as shown in the example below: SW1(config)# int e2/7 SW1(config-if)# no ip redirects
Review all ACLs used to filter traffic and verify that packets being dropped are logged as shown in the configuration below: ip access-list EXTERNAL_ACL 10 permit tcp x.11.1.1/32 eq bgp x.11.1.2/32 20 permit tcp x.11.1.1/32 x.11.1.2/32 eq bgp 30 permit icmp x.11.1.1/32 x.11.1.2/32 echo … … … 90 deny ip any any log If packets being dropped at an interface are not logged, this is a finding.
Configure ACLs to log packets that are dropped as shown in the example below: SW1(config)# ip access-list EXTERNAL_ACL SW1(config-acl)# 90 deny ip any any log SW1(config-acl)# end
Review the switch configuration to verify that the inbound ACL applied to all external interfaces is configured to allow specific ports and protocols and deny all other traffic. Step 1: Verify that an inbound ACL is applied to all external interfaces as shown in the example below: interface Ethernet1/2 no switchport ip access-group EXTERNAL_ACL in ip address x.11.1.2 255.255.255.254 Step 2: Review inbound ACL to verify that it is configured to deny all other traffic that is not explicitly allowed. ip access-list EXTERNAL_ACL 10 permit tcp x.11.1.1/32 eq bgp x.11.1.2/32 20 permit tcp x.11.1.1/32 x.11.1.2/32 eq bgp 30 permit icmp x.11.1.1/32 x.11.1.2/32 echo 40 permit icmp x.11.1.1/32 x.11.1.2/32 echo-reply 50 permit tcp any x.11.2.3/32 eq www 60 permit … … … … 90 deny ip any any log If the ACL is not configured to allow specific ports and protocols and deny all other traffic, this is a finding. If the ACL is not configured inbound on all external interfaces, this is a finding.
Step 1: Configure an inbound ACL to deny all other traffic by default as shown in the example below: SW1(config)# ip access-list EXTERNAL_ACL SW1(config-acl)# permit tcp host x.11.1.1 eq bgp host x.11.1.2 SW1(config-acl)# permit tcp host x.11.1.1 host x.11.1.2 eq bgp SW1(config-acl)# permit icmp host x.11.1.1 host x.11.1.2 echo SW1(config-acl)# permit icmp host x.11.1.1 host x.11.1.2 echo-reply SW1(config-acl)# permit tcp any x.11.2.3/32 eq www SW1(config-acl)# permit … … … … SW1(config-acl)# deny ip any any log Step 2: Apply the ingress filter to all external interfaces. SW1(config)#int e1/2 SW1(config-if)#ip access-group EXTERNAL_ACL in
Review the switch configuration to verify that ACLs are configured to allow or deny traffic for specific destination addresses as well as ports and protocols. In the example below, the switch is peering BGP with DISN. ICMP echo and echo-reply packets are allowed for troubleshooting connectivity. WWW traffic is permitted inbound to the NIPRNet host-facing web server (x.11.2.3). Step 1: Verify that an inbound ACL is applied to all external interfaces as shown in the example below: interface Ethernet2/2 description link to DISN no switchport ip access-group EXTERNAL_ACL in ip address x.11.1.2 255.255.255.254 Step 2: Review inbound ACL to verify that it is configured to deny all other traffic that is not explicitly allowed. ip access-list EXTERNAL_ACL 10 permit tcp any any established 20 permit tcp x.11.1.1/32 eq bgp x.11.1.2/32 30 permit tcp x.11.1.1/32 x.11.1.2/32 eq bgp 40 permit icmp x.11.1.1/32 x.11.1.2/32 echo 50 permit icmp x.11.1.1/32 x.11.1.2/32 echo-reply 60 permit tcp any x.11.2.3/32 eq www 70 permit … … … … 90 deny ip any any log If the switch is not configured to enforce approved authorizations for controlling the flow of information between interconnected networks, this is a finding.
Step 1: Configure an ACL to allow or deny traffic as shown in the example below: SW2(config)# ip access-list EXTERNAL_ACL SW2(config-acl)# permit tcp any any established SW2(config-acl)# permit tcp x.11.1.1/32 eq bgp x.11.1.2/32 SW2(config-acl)# permit tcp x.11.1.1/32 x.11.1.2/32 eq bgp SW2(config-acl)# permit icmp x.11.1.1/32 x.11.1.2/32 echo SW2(config-acl)# permit icmp x.11.1.1/32 x.11.1.2/32 echo-reply SW2(config-acl)# permit tcp any x.11.2.3/32 eq www SW2(config-acl)# deny ip any any log SW2(config-acl)# exit Step 2: Apply the ACL inbound on all applicable interfaces. SW1(config)#int e2/2 SW1(config-if)# ip access-group EXTERNAL_ACL in
Review the switch configuration to determine if the switch allows only incoming communications from authorized sources to be routed to authorized destinations. The hypothetical example below allows inbound NTP from server x.1.12.9 only to host x.12.1.21. ip access-list EXTERNAL_ACL 10 permit tcp any any established 20 permit tcp x.11.1.1/32 eq bgp x.11.1.2/32 30 permit tcp x.11.1.1/32 x.11.1.2/32 eq bgp 40 permit icmp x.11.1.1/32 x.11.1.2/32 echo 50 permit icmp x.11.1.1/32 x.11.1.2/32 echo-reply 60 permit tcp any x.11.2.3/32 eq www 70 permit udp x.12.1.9/32 x.12.1.21/32 eq ntp … … … 90 deny ip any any log If the switch does not restrict incoming communications to allow only authorized sources and destinations, this is a finding.
Configure the switch to allow only incoming communications from authorized sources to be routed to authorized destinations. SW2(config)# ip access-list EXTERNAL_ACL SW2(config-acl)# permit tcp any any established … … … SW2(config-acl)# permit udp host x.12.1.9 host x.12.1.21 eq ntp SW2(config-acl)# deny ip any any log SW2(config-acl)# end
Review the switch configuration to verify that an ingress ACL applied to all external interfaces is blocking packets with Bogon source addresses. Step 1: Verify an ACL has been configured containing the current Bogon prefixes as shown in the example below: ip access-list EXTERNAL_ACL 10 deny ip 0.0.0.0/8 any log 20 deny ip 10.0.0.0/8 any log 30 deny ip 100.64.0.0/10 any log 40 deny ip 127.0.0.0/8 any log 50 deny ip 169.254.0.0/16 any log 60 deny ip 172.16.0.0/12 any log 70 deny ip 192.0.0.0/24 any log 80 deny ip 192.0.2.0/24 any log 90 deny ip 192.168.0.0/16 any log 100 deny ip 198.18.0.0/15 any log 110 deny ip 198.51.100.0/24 any log 120 deny ip 203.0.113.0/24 any log 130 deny ip 224.0.0.0/3 any log 140 permit tcp any any established 150 permit … … … … 210 deny ip any any log Step 2: Verify that the inbound ACL applied to all external interfaces will block all traffic from Bogon source addresses. interface Ethernet2/2 description link to DISN no switchport ip access-group EXTERNAL_ACL in If the switch is not configured to block inbound packets with source Bogon IP address prefixes, this is a finding.
Configure the perimeter to block inbound packets with Bogon source addresses. Step 1: Configure an ACL containing the current Bogon prefixes as shown below: SW1(config)# ip access-list EXTERNAL_ACL SW1(config-acl)# deny ip 0.0.0.0 0.255.255.255 any log SW1(config-acl)# deny ip 10.0.0.0 0.255.255.255 any log SW1(config-acl)# deny ip 100.64.0.0 0.63.255.255 any log SW1(config-acl)# deny ip 127.0.0.0 0.255.255.255 any log SW1(config-acl)# deny ip 169.254.0.0 0.0.255.255 any log SW1(config-acl)# deny ip 172.16.0.0 0.15.255.255 any log SW1(config-acl)# deny ip 192.0.0.0 0.0.0.255 any log SW1(config-acl)# deny ip 192.0.2.0 0.0.0.255 any log SW1(config-acl)# deny ip 192.168.0.0 0.0.255.255 any log SW1(config-acl)# deny ip 198.18.0.0 0.1.255.255 any log SW1(config-acl)# deny ip 198.51.100.0 0.0.0.255 any log SW1(config-acl)# deny ip 203.0.113.0 0.0.0.255 any log SW1(config-acl)# deny ip 224.0.0.0 31.255.255.255 any log SW1(config-acl)# deny ip 240.0.0.0 31.255.255.255 any log SW1(config-acl)# permit tcp any any established SW1(config-acl)# permit … … … … SW1(config-acl)# deny ip any any log SW1(config-acl)# end Step 2: Apply the ACL inbound on all external interfaces. SW1(config)#int e2/2 SW1(config-if)# ip access-group EXTERNAL_ACL in SW1(config-if)# end
Review the switch configuration to verify uRPF or an egress ACL has been configured on all internal interfaces to restrict the switch from accepting outbound IP packets that contain an illegitimate address in the source address field. uRPF example interface Ethernet2/4 description downstream link to LAN no switchport ip address 10.1.12.1/24 ip verify unicast source reachable-via rx Egress ACL example ip access-list EGRESS_FILTER 10 permit udp 10.1.15.0/24 any eq domain 20 permit tcp 10.1.15.0/24 any eq ftp 30 permit tcp 10.1.15.0/24 any eq ftp-data 40 permit tcp 10.1.15.0/24 any eq www 50 permit icmp 10.1.15.0/24 any 60 permit icmp 10.1.15.0/24 any echo 70 deny ip any any … … … interface Ethernet2/4 description downstream link to LAN no switchport ip access-group EGRESS_FILTER in ip address 10.1.12.1/24 If uRPF or an egress ACL to restrict the switch from accepting outbound IP packets that contain an illegitimate address in the source address field has not been configured on all internal interfaces in an enclave, this is a finding.
Configure the switch to ensure that an egress ACL or uRPF is configured on internal interfaces to restrict the switch from accepting any outbound IP packet that contains an illegitimate address in the source field. The example below enables uRPF. SW1(config)# int e2/4 SW1(config-if)# ip verify unicast source reachable-via rx SW1(config-if)# end
Review the switch configuration to verify that the ingress ACL is in accordance with DoD 8551.1. Step 1: Verify that an inbound ACL is configured on all external interfaces. interface Ethernet2/2 description link to DISN no switchport ip access-group EXTERNAL_ACL in Step 2. Review the inbound ACL to verify that it is filtering traffic in accordance with DoD 8551.1. ip access-list EXTERNAL_ACL 10 permit tcp any any established 20 permit tcp x.11.1.1/32 eq bgp x.11.1.2/32 30 permit tcp x.11.1.1/32 x.11.1.2/32 eq bgp 40 permit icmp x.11.1.1/32 x.11.1.2/32 echo 50 permit icmp x.11.1.1/32 x.11.1.2/32 echo-reply 60 permit tcp any x.11.2.3/32 eq www 70 permit udp x.12.1.9/32 x.12.1.21/32 eq ntp … … < must be in accordance with DoD Instruction 8551.1> … 140 deny ip any any log If the switch does not filter traffic in accordance with the guidelines contained in DoD 8551, this is a finding.
Configure the switch to use an inbound ACL on all external interfaces as shown in the example below to restrict traffic in accordance with the guidelines contained in DOD Instruction 8551.1. SW2(config)# ip access-list EXTERNAL_ACL SW2(config-acl)# permit tcp any any established SW2(config-acl)# permit tcp x.11.1.1/32 eq bgp x.11.1.2/32 SW2(config-acl)# permit tcp x.11.1.1/32 x.11.1.2/32 eq bgp SW2(config-acl)# permit icmp x.11.1.1/32 x.11.1.2/32 echo SW2(config-acl)# permit icmp x.11.1.1/32 x.11.1.2/32 echo-reply SW2(config-acl)# permit tcp any x.11.2.3/32 eq www … … < must be in accordance with DoD Instruction 8551.1> … SW2(config-acl)# deny ip any any log SW2(config-acl)# exit SW1(config)#int e2/2 SW1(config-if)# ip access-group EXTERNAL_ACL in SW1(config-if)# end
Review the switch configuration to verify that an inbound ACL is configured on all external interfaces as shown in the example below: interface Ethernet2/2 description link to DISN no switchport ip access-group EXTERNAL_ACL in If the switch is not configured to filter traffic entering the network at all external interfaces in an inbound direction, this is a finding.
Configure the switch to use an inbound ACL on all external interfaces as shown in the example below: SW1(config)#int e2/2 SW1(config-if)# ip access-group EXTERNAL_ACL in SW1(config-if)# end
Review the switch configuration to verify that the egress ACL is bound to the internal interface in an inbound direction. interface Ethernet2/4 description downstream link to LAN no switchport ip access-group EGRESS_FILTER in ip address 10.1.12.1/24 If the switch is not configured to filter traffic leaving the network at the internal interface in an inbound direction, this is a finding.
Configure the switch to use an inbound ACL on all internal interfaces as shown in the example below: SW1(config)# int e2/4 SW1(config-if)# ip access-group EGRESS_FILTER in SW1(config-if)# end
In Cisco NX-OS, all packets with any header option other than the “source-route” header option are dropped. By default, ipv4 source routing is enabled. Verify that source routing is disabled via the following command: no ip source-route If the switch is not configured to drop all packets with IP option source routing, this is a finding.
Configure the switch to drop all packets with IP option source routing. SW1(config)# no ip source-route SW1(config)# end
Step 1: Verify LLDP is not enabled globally via the command feature lldp. By default the LLDP feature is not enabled. If LLDP is enabled, proceed to Step 2. Step 2: Verify LLDP is not enabled on any external interface as shown in the example below: interface Ethernet2/2 description link to DISN no switchport no lldp transmit Note: LLDP is enabled by default on all interfaces once it is enabled globally; hence the command lldp transmit will not be visible on the interface configuration. If LLDP transmit is enabled on any external interface, this is a finding.
Disable LLDP transmit on all external interfaces as shown in the example below: SW2(config)# int e2/2 SW2(config-if)# no lldp transmit SW2(config-if)# end
Step 1: Verify CDP is not enabled globally via the command no cdp enable By default CDP is enabled globally; hence, the command cdp enable will not be shown in the configuration. If CDP is enabled, proceed to Step 2. Step 2: Verify CDP is not enabled on any external interface as shown in the example below: interface Ethernet2/2 description link to DISN no switchport no cdp enable Note: By default CDP is enabled on all interfaces if CDP is enabled globally. If CDP is enabled on any external interface, this is a finding.
Disable CDP on all external interfaces via no cdp enable interface command or disable CDP globally via no cdp enable command.
Review the switch configuration to determine if IP Proxy ARP is enabled on any external interface as shown in the example below: interface Ethernet2/2 description link to DISN no switchport ip address x.1.12.2/24 ip proxy-arp no shutdown Note: By default Proxy ARP is disabled on all interfaces. If IP Proxy ARP is enabled on any external interface, this is a finding.
Disable Proxy ARP on all external interfaces as shown in the example below: SW1(config)#int e2/2 SW1(config-if)# no ip proxy-arp SW1(config-if)# end
The perimeter switch of the managed network must be configured with an outbound ACL on the egress interface to block all management traffic as shown in the example below: Step 1: Verify that all external interfaces has been configured with an outbound ACL as shown in the example below: interface Ethernet2/2 description link to DISN no switchport ip access-group EXTERNAL_ACL_OUTBOUND out ip address x.11.1.2 255.255.255.254 Step 2: Verify that the outbound ACL discards management traffic as shown in the example below: ip access-list EXTERNAL_ACL_OUTBOUND 10 deny tcp any any eq tacacs log 20 deny tcp any any eq 22 log 30 deny udp any any eq snmp log 40 deny udp any any eq snmptrap log 50 deny udp any any eq syslog log 60 permit tcp any any eq www log 70 deny ip any any log If management traffic is not blocked at the perimeter, this is a finding.
Configure the perimeter switch of the managed network with an outbound ACL on the egress interface to block all management traffic. Step 1: Configure an ACL to block egress management traffic. SW1(config)# ip access-list EXTERNAL_ACL_OUTBOUND SW1(config-acl)# deny tcp any any eq tacacs log SW1(config-acl)# deny tcp any any eq 22 log SW1(config-acl)# deny udp any any eq snmp log SW1(config-acl)# deny udp any any eq snmptrap log SW1(config-acl)# deny udp any any eq syslog log SW1(config-acl)# permit tcp any any eq www SW1(config-acl)# deny ip any any log SW1(config-acl)# exit Note: Permit commands would be configured to allow applicable outbound traffic. The example above is allowing web traffic. Step 2: Configure the external interfaces with the outbound ACL. SW1(config)#int e2/2 SW1(config-if)# ip access-group EXTERNAL_ACL_OUTBOUND out
This requirement is only applicable where management access to the switch is via an OOBM interface which is not a true OOBM interface. Step 1: Verify that the managed interface has an inbound and outbound ACL configured. interface Ethernet2/7 description link to OOBM access switch no switchport ip address 10.11.1.22 255.255.255.0 ip access-group INGRESS_MANAGEMENT_ACL in ip access-group EGRESS_MANAGEMENT_ACL in Step 2: Verify that the ingress ACL only allows management and ICMP traffic. ip access-list INGRESS_MANAGEMENT_ACL 10 permit tcp any 10.11.1.22/32 eq tacacs 20 permit tcp any 10.11.1.22/32 eq 22 30 permit udp any 10.11.1.22/32 eq snmp 40 permit udp any 10.11.1.22/32 eq snmptrap 50 permit udp any 10.11.1.22/32 eq ntp 60 permit icmp any 10.11.1.22/32 70 deny ip any any log Step 3: Verify that the egress ACL blocks any transit traffic. ip access-list MGMT_TRAFFIC_ACL 10 deny ip any any log Note: On Cisco switches, local generated packets are not inspected by outgoing interface access-lists. Hence, the above configuration would simply drop any packets not generated by the switch; hence, blocking any transit traffic. If the switch does not restrict traffic that ingresses and egresses the management interface, this is a finding.
If the management interface is not a dedicated OOBM interface, it must be configured with both an ingress and egress ACL. Step 1: Configure an ingress ACL a shown in the example below: SW1(config)#ip access-list INGRESS_MANAGEMENT_ACL SW1(config-acl)# permit tcp any host 10.11.1.22 eq tacacs SW1(config-acl)# permit tcp any host 10.11.1.22 eq 22 SW1(config-acl)# permit udp any host 10.11.1.22 eq snmp SW1(config-acl)# permit udp any host 10.11.1.22 eq snmptrap SW1(config-acl)# permit udp any host 10.11.1.22 eq ntp SW1(config-acl)# permit icmp any host 10.11.1.22 SW1(config-acl)# deny ip any any log SW1(config-acl)# exit Step 2: Configure an egress ACL a shown in the example below: SW1(config)# ip access-list EGRESS_MANAGEMENT_ACL SW1(config-acl)# deny ip any any log SW1(config-acl)# exit Step 3: Apply the ACLs to the OOBM interfaces. SW1(config)#int e2/7 SW1(config-if) ip access-group INGRESS_MANAGEMENT_ACL in SW1(config-if) ip access-group EGRESS_MANAGEMENT_ACL out
Review the BGP configuration to verify that checking whether a single-hop eBGP peer is directly connected. The example below disables this mechanism. router bgp xx router-id 10.1.1.1 neighbor x.1.12.2 remote-as xx disable-connected-check address-family ipv4 unicast Note: BGP triggers a connection check automatically for all eBGP peers that are known to be a single hop away, unless this check is disabled with the disable-connected-check command. BGP does not bring up sessions if the check fails. If the switch is configured to disable checking whether a single-hop eBGP peer is directly connected, this is a finding.
Remove the command that disables checking whether a single-hop eBGP peer is directly connected for all external BGP neighbors as shown in the example below: SW1(config)# router bgp xx SW1(config-router)# neighbor x.1.12.2 SW1(config-router-neighbor)# no disable-connected-check SW1(config-router-neighbor)# end
Review the BGP configuration to determine if it is peering with multiple autonomous systems. Interview the ISSM and switch administrator to determine if unique keys are being used. router bgp xx router-id 10.1.1.1 neighbor x.1.12.2 remote-as 2 password 3 7b07d1b3023056a9 address-family ipv4 unicast neighbor x.2.44.4 remote-as xx password 3 f07a10cb41db8bb6f8f0a340049a9b02 address-family ipv4 unicast If unique keys are not being used, this is a finding.
Configure the switch to use unique keys for each AS that it peers with as shown in the example below: SW1(config)# router bgp xx SW1(config-router)# neighbor x.1.12.2 SW1(config-router-neighbor)# password yyyyyyyyy SW1(config-router-neighbor)# exit SW1(config-router)# neighbor x.2.44.4 SW1(config-router-neighbor)# password zzzzzzzzzz SW1(config-router-neighbor)# end
Review the switch configuration to verify that it will reject BGP routes for any Bogon prefixes. Step 1: Verify a prefix list has been configured containing the current Bogon prefixes as shown in the example below: ip prefix-list PREFIX_FILTER seq 5 deny 0.0.0.0/8 le 32 ip prefix-list PREFIX_FILTER seq 10 deny 10.0.0.0/8 le 32 ip prefix-list PREFIX_FILTER seq 15 deny 100.64.0.0/10 le 32 ip prefix-list PREFIX_FILTER seq 20 deny 127.0.0.0/8 le 32 ip prefix-list PREFIX_FILTER seq 25 deny 169.254.0.0/16 le 32 ip prefix-list PREFIX_FILTER seq 30 deny 172.16.0.0/12 le 32 ip prefix-list PREFIX_FILTER seq 35 deny 192.0.2.0/24 le 32 ip prefix-list PREFIX_FILTER seq 40 deny 192.88.99.0/24 le 32 ip prefix-list PREFIX_FILTER seq 45 deny 192.168.0.0/16 le 32 ip prefix-list PREFIX_FILTER seq 50 deny 198.18.0.0/15 le 32 ip prefix-list PREFIX_FILTER seq 55 deny 198.51.100.0/24 le 32 ip prefix-list PREFIX_FILTER seq 60 deny 203.0.113.0/24 le 32 ip prefix-list PREFIX_FILTER seq 65 deny 224.0.0.0/4 le 32 ip prefix-list PREFIX_FILTER seq 70 deny 240.0.0.0/4 le 32 ip prefix-list PREFIX_FILTER seq 75 permit 0.0.0.0/0 ge 8 Step 2: Verify that the prefix list has been applied to all external BGP peers as shown in the example below: router bgp xx router-id 10.1.1.1 neighbor x.1.12.2 remote-as xx password 3 7b07d1b3023056a9 address-family ipv4 unicast prefix-list PREFIX_FILTER in neighbor x.2.44.4 remote-as xx password 3 f07a10cb41db8bb6f8f0a340049a9b02 address-family ipv4 unicast prefix-list PREFIX_FILTER in Route Map Alternative Verify that the route map applied to the external neighbors references the configured Bogon prefix list shown above. route-map FILTER_PREFIX_MAP permit 10 match ip address prefix-list PREFIX_FILTER … … … router bgp xx router-id 10.1.1.1 neighbor x.1.12.2 remote-as xx password 3 7b07d1b3023056a9 address-family ipv4 unicast route-map FILTER_PREFIX_MAP in neighbor x.2.44.4 remote-as xx password 3 f07a10cb41db8bb6f8f0a340049a9b02 address-family ipv4 unicast route-map FILTER_PREFIX_MAP in If the switch is not configured to reject inbound route advertisements for any Bogon prefixes, this is a finding.
Configure the switch to reject inbound route advertisements for any Bogon prefixes. Step 1: Configure a prefix list containing the current Bogon prefixes as shown below: SW1(config)# ip prefix-list PREFIX_FILTER seq 5 deny 0.0.0.0/8 le 32 SW1(config)# ip prefix-list PREFIX_FILTER seq 10 deny 10.0.0.0/8 le 32 SW1(config)# ip prefix-list PREFIX_FILTER seq 15 deny 100.64.0.0/10 le 32 SW1(config)# ip prefix-list PREFIX_FILTER seq 20 deny 127.0.0.0/8 le 32 SW1(config)# ip prefix-list PREFIX_FILTER seq 25 deny 169.254.0.0/16 le 32 SW1(config)# ip prefix-list PREFIX_FILTER seq 30 deny 172.16.0.0/12 le 32 SW1(config)# ip prefix-list PREFIX_FILTER seq 35 deny 192.0.2.0/24 le 32 SW1(config)# ip prefix-list PREFIX_FILTER seq 40 deny 192.88.99.0/24 le 32 SW1(config)# ip prefix-list PREFIX_FILTER seq 45 deny 192.168.0.0/16 le 32 SW1(config)# ip prefix-list PREFIX_FILTER seq 50 deny 198.18.0.0/15 le 32 SW1(config)# ip prefix-list PREFIX_FILTER seq 55 deny 198.51.100.0/24 le 32 SW1(config)# ip prefix-list PREFIX_FILTER seq 60 deny 203.0.113.0/24 le 32 SW1(config)# ip prefix-list PREFIX_FILTER seq 65 deny 224.0.0.0/4 le 32 SW1(config)# ip prefix-list PREFIX_FILTER seq 70 deny 240.0.0.0/4 le 32 SW1(config)# ip prefix-list PREFIX_FILTER seq 75 permit 0.0.0.0/0 ge 8 Step 2: Apply the prefix list filter inbound to each external BGP neighbor as shown in the example below: SW1(config)# router bgp xx SW1(config-router)# neighbor x.1.12.2 SW1(config-router-neighbor)# address-family ipv4 unicast SW1(config-router-neighbor-af)# prefix-list PREFIX_FILTER in SW1(config-router-neighbor-af)# exit SW1(config-router-neighbor)# exit SW1(config-router)# neighbor x.2.44.4 SW1(config-router-neighbor)# address-family ipv4 unicast SW1(config-router-neighbor-af)# prefix-list PREFIX_FILTER in SW1(config-router-neighbor-af)# end Route Map Alternative Step 1: Configure the route map referencing the configured prefix list above. SW1(config)# route-map FILTER_PREFIX_MAP permit 10 SW1(config-route-map)# match ip address prefix-list PREFIX_FILTER SW1(config-route-map)# exit Step 2: Apply the route-map inbound to each external BGP neighbor as shown in the example below: SW1(config)# router bgp xx SW1(config-router)# neighbor x.1.12.2 SW1(config-router-neighbor)# address-family ipv4 unicast SW1(config-router-neighbor-af)# route-map FILTER_PREFIX_MAP in SW1(config-router-neighbor-af)# exit SW1(config-router-neighbor)# exit SW1(config-router)# neighbor x.2.44.4 SW1(config-router-neighbor)# address-family ipv4 unicast SW1(config-router-neighbor-af)# route-map FILTER_PREFIX_MAP in SW1(config-router-neighbor-af)# end
Review the switch configuration to verify that it will reject routes belonging to the local AS. Step 1: Verify a prefix list has been configured containing prefixes belonging to the local AS. In the example below x.13.1.0/24 is the global address space allocated to the local AS. ip prefix-list PREFIX_FILTER seq 5 deny 0.0.0.0/8 le 32 … … … ip prefix-list PREFIX_FILTER seq 74 deny x.13.1.0/24 le 32 ip prefix-list PREFIX_FILTER seq 75 permit 0.0.0.0/0 ge 8 Step 2: Verify that the prefix list has been applied to all external BGP peers as shown in the example below: router bgp xx router-id 10.1.1.1 neighbor x.1.12.2 remote-as xx password 3 7b07d1b3023056a9 address-family ipv4 unicast prefix-list PREFIX_FILTER in neighbor x.2.44.4 remote-as xx password 3 f07a10cb41db8bb6f8f0a340049a9b02 address-family ipv4 unicast prefix-list PREFIX_FILTER in If the switch is not configured to reject inbound route advertisements belonging to the local AS, this is a finding.
Configure the switch to reject inbound route advertisements for any prefixes belonging to the local AS. Step 1: Add to the prefix filter list those prefixes belonging to the local autonomous system. SW1(config)# ip prefix-list PREFIX_FILTER seq 74 deny x.13.1.0/24 le 32 Step 2: If not already completed to be compliant with previous requirement, apply the prefix list filter inbound to each external BGP neighbor as shown in the example below: SW1(config)# router bgp xx SW1(config-router)# neighbor x.1.12.2 SW1(config-router-neighbor)# address-family ipv4 unicast SW1(config-router-neighbor-af)# prefix-list PREFIX_FILTER in SW1(config-router-neighbor-af)# exit SW1(config-router-neighbor)# exit SW1(config-router)# neighbor x.2.44.4 SW1(config-router-neighbor)# address-family ipv4 unicast SW1(config-router-neighbor-af)# prefix-list PREFIX_FILTER in SW1(config-router-neighbor-af)# end
Review the switch configuration to verify that there are ACLs defined to only accept routes for prefixes that belong to specific customers. Step 1: Verify prefix list has been configured for each customer containing prefixes belonging to each customer as shown in the example below: ip prefix-list PREFIX_FILTER_CUST1 seq 5 permit x.13.1.0/24 le 32 ip prefix-list PREFIX_FILTER_CUST1 seq 10 deny 0.0.0.0/0 ge 8 ip prefix-list PREFIX_FILTER_CUST2 seq 5 permit x.13.2.0/24 le 32 ip prefix-list PREFIX_FILTER_CUST2 seq 10 deny 0.0.0.0/0 ge 8 Step 2: Verify that the prefix lists has been applied to all to the applicable CE peers as shown in the example below: router bgp xx router-id 10.1.1.1 neighbor x.55.14.2 remote-as 64514 password 3 7b07d1b3023056a9 address-family ipv4 unicast prefix-list FILTER_PREFIXES_CUST1 in neighbor x.55.14.4 remote-as 64516 password 3 f07a10cb41db8bb6f8f0a340049a9b02 address-family ipv4 unicast prefix-list FILTER_PREFIXES_CUST1 in Note: Routes to PE-CE links within a VPN are needed for troubleshooting end-to-end connectivity across the MPLS/IP backbone. Hence, these prefixes are an exception to this requirement. If the switch is not configured to reject inbound route advertisements from each CE switch for prefixes that are not allocated to that customer, this is a finding.
Configure the switch to reject inbound route advertisements from each CE switch for prefixes that are not allocated to that customer. Step 1: Configure a prefix list for each customer containing prefixes belonging to each. SW1(config)# ip prefix-list PREFIX_FILTER_CUST1 permit x.13.1.0/24 le 32 SW1(config)# ip prefix-list PREFIX_FILTER_CUST1 deny 0.0.0.0/0 ge 8 SW1(config)# ip prefix-list PREFIX_FILTER_CUST2 permit x.13.2.0/24 le 32 SW1(config)# ip prefix-list PREFIX_FILTER_CUST2 deny 0.0.0.0/0 ge 8 Step 2: Apply the prefix list filter inbound to each CE neighbor as shown in the example below: SW1(config)# router bgp xx SW1(config-router)# neighbor x.55.14.2 SW1(config-router-neighbor)# address-family ipv4 unicast SW1(config-router-neighbor-af)# prefix-list PREFIX_FILTER_CUST1 in SW1(config-router-neighbor-af)# exit SW1(config-router-neighbor)# exit SW1(config-router)# neighbor x.55.14.4 SW1(config-router-neighbor)# address-family ipv4 unicast SW1(config-router-neighbor-af)# prefix-list PREFIX_FILTER_CUST2 in SW1(config-router-neighbor-af)# end
Step 1: Verify that a prefix list has been configured containing prefixes belonging to customers as well as the local AS as shown in the example below: ip prefix-list CE_PREFIX_ADVERTISEMENTS seq 5 permit x.13.1.0/24 le 32 ip prefix-list CE_PREFIX_ADVERTISEMENTS seq 10 permit x.13.2.0/24 le 32 ip prefix-list CE_PREFIX_ADVERTISEMENTS seq 15 permit x.13.3.0/24 le 32 ip prefix-list CE_PREFIX_ADVERTISEMENTS seq 20 permit x.13.4.0/24 le 32 … … … ip prefix-list CE_PREFIX_ADVERTISEMENTS seq 80 deny 0.0.0.0/0 ge 8 Step 2: Verify that the prefix lists has been applied to all CE peers as shown in the example below: router bgp xx router-id 10.1.1.1 neighbor x.55.14.2 remote-as 64514 password 3 7b07d1b3023056a9 address-family ipv4 unicast prefix-list CE_PREFIX_ADVERTISEMENTS out neighbor x.55.14.4 remote-as 64516 password 3 f07a10cb41db8bb6f8f0a340049a9b02 address-family ipv4 unicast prefix-list CE_PREFIX_ADVERTISEMENTS out If the switch is not configured to reject outbound route advertisements that do not belong to any customers or the local AS, this is a finding.
Step 1: Configure a prefix list for containing all customer and local AS prefixes as shown in the example below: SW1(config)#ip prefix-list CE_PREFIX_ADVERTISEMENTS permit x.13.1.0/24 le 32 SW1(config)#ip prefix-list CE_PREFIX_ADVERTISEMENTS permit x.13.2.0/24 le 32 SW1(config)#ip prefix-list CE_PREFIX_ADVERTISEMENTS permit x.13.3.0/24 le 32 SW1(config)#ip prefix-list CE_PREFIX_ADVERTISEMENTS permit x.13.4.0/24 le 32 … … … SW1(config)#ip prefix-list CE_PREFIX_ADVERTISEMENTS deny 0.0.0.0/0 ge 8 Step 2: Apply the prefix list filter outbound to each CE neighbor as shown in the example below: SW1(config)#switch bgp 64512 SW1(config-switch)# neighbor x.12.4.14 prefix-list CE_PREFIX_ADVERTISEMENTS out SW1(config-switch)# neighbor x.12.4.16 prefix-list CE_PREFIX_ADVERTISEMENTS out
Step 1: Verify that a prefix list has been configured containing prefixes belonging to the IP core. ip prefix-list FILTER_CORE_PREFIXES seq 5 deny x.1.1.0/24 le 32 ip prefix-list FILTER _CORE_PREFIXES seq 10 deny x.1.2.0/24 le 32 ip prefix-list FILTER _CORE_PREFIXES seq 15 permit 0.0.0.0/0 ge 8 Step 2: Verify that the prefix lists has been applied to all external BGP peers as shown in the example below: router bgp xx router-id 10.1.1.1 neighbor x.1.12.2 remote-as xx password 3 7b07d1b3023056a9 address-family ipv4 unicast FILTER _CORE_PREFIXES out neighbor x.2.44.4 remote-as xx password 3 f07a10cb41db8bb6f8f0a340049a9b02 address-family ipv4 unicast prefix-list FILTER _CORE_PREFIXES out If the switch is not configured to reject outbound route advertisements for prefixes belonging to the IP core, this is a finding.
Step 1: Configure a prefix list for containing all customer and local AS prefixes as shown in the example below: SW1(config)# ip prefix-list FILTER_CORE_PREFIXES deny x.1.1.0/24 le 32 SW1(config)# ip prefix-list FILTER _CORE_PREFIXES deny x.1.2.0/24 le 32 SW1(config)# ip prefix-list FILTER _CORE_PREFIXES permit 0.0.0.0/0 ge 8 Step 2: Apply the prefix list filter outbound to each CE neighbor as shown in the example below: SW1(config)# router bgp xx SW1(config-router)# neighbor x.1.12.2 SW1(config-router-neighbor)# address-family ipv4 unicast SW1(config-router-neighbor-af)# prefix-list FILTER _CORE_PREFIXES out SW1(config-router-neighbor-af)# exit SW1(config-router-neighbor)# exit SW1(config-router)# neighbor x.2.44.4 SW1(config-router-neighbor)# address-family ipv4 unicast SW1(config-router-neighbor-af)# prefix-list FILTER _CORE_PREFIXES out SW1(config-router-neighbor-af)# end
Review the switch configuration to verify the switch is configured to deny updates received from eBGP peers that do not list their AS number as the first AS in the AS_PATH attribute. By default Cisco IOS enforces the first AS in the AS_PATH attribute for all route advertisements. Review the switch configuration to verify that the command no enforce-first-as is not configured. router bgp xx router-id 10.1.1.1 no enforce-first-as If the switch is not configured to reject updates from peers that do not list their AS number as the first AS in the AS_PATH attribute, this is a finding.
Configure the switch to deny updates received from eBGP peers that do not list their AS number as the first AS in the AS_PATH attribute. SW1(config)# router bgp xx SW1(config-router)# enforce-first-as SW1(config-router)# end
Review the switch configuration to verify the switch is configured to deny updates received from eBGP peers that do not list their AS number as the first AS in the AS_PATH attribute. Step 1: Review switch configuration and verify that there is an as-path access-list statement defined to only accept routes from a CE switch whose AS did not originate the route. The configuration should look similar to the following: ip as-path access-list AS_PATH permit ^yy$ ip as-path access-list 10 AS_PATH .* Note: the characters “^” and “$” representing the beginning and the end of the expression respectively are optional and are implicitly defined if omitted. Step 2: Verify that the as-path access-list is referenced by the filter-list inbound for the appropriate BGP neighbors as shown in the example below: router bgp xx router-id 10.1.1.1 neighbor x.1.12.2 remote-as xx password 3 7b07d1b3023056a9 address-family ipv4 unicast filter-list AS_PATH in If the switch is not configured to reject updates from peers that do not list their AS number as the first AS in the AS_PATH attribute, this is a finding.
Configure the switch to deny updates received from eBGP peers that do not list their AS number as the first AS in the AS_PATH attribute. Step 1: Configure the as-path ACL as shown in the example below: SW1(config)# ip as-path access-list AS_PATH permit ^22$ SW1(config)# ip as-path access-list AS_PATH deny .* Step 2: Apply the as-path filter inbound as shown in the example below: SW1(config)# router bgp xx SW1(config-router)# neighbor x.1.12.2 SW1(config-router-neighbor)# address-family ipv4 unicast SW1(config-router-neighbor-af)# filter-list AS_PATH in SW1(config-router-neighbor-af)# end
Review the switch configuration to verify that the number of received prefixes from each eBGP neighbor is controlled. router bgp xx router-id 10.1.1.1 neighbor x.1.12.2 remote-as xx password 3 7b07d1b3023056a9 address-family ipv4 unicast maximum-prefix nnnnnnn neighbor x.2.44.4 remote-as xx password 3 f07a10cb41db8bb6f8f0a340049a9b02 address-family ipv4 unicast maximum-prefix nnnnnnn If the switch is not configured to control the number of prefixes received from each peer to protect against route table flooding and prefix de-aggregation attacks, this is a finding.
Configure the switch to use the maximum prefixes feature to protect against route table flooding and prefix de-aggregation attacks as shown in the example below: SW1(config)# router bgp xx SW1(config-router)# neighbor x.1.12.2 SW1(config-router-neighbor)# address-family ipv4 unicast SW1(config-router-neighbor-af)# maximum-prefix nnnnnnn SW1(config-router-neighbor-af)# exit SW1(config-router-neighbor)# exit SW1(config-router)# neighbor x.2.44.4 SW1(config-router-neighbor)# address-family ipv4 unicast SW1(config-router-neighbor-af)# maximum-prefix nnnnnnn SW1(config-router-neighbor-af)# end
Review the switch configuration to determine if it is compliant with this requirement. Step 1: Verify that a route filter has been configured to reject prefixes longer than /24 or the least significant prefixes issued to the customers as shown in the example below: ip prefix-list FILTER_PREFIX_LENGTH seq 5 permit 0.0.0.0/0 ge 8 le 24 ip prefix-list FILTER_PREFIX_LENGTH seq 10 deny 0.0.0.0/0 le 32 Step 2: Verify that prefix filtering has been applied to each eBGP peer as shown in the example below: router bgp xx router-id 10.1.1.1 neighbor x.1.12.2 remote-as xx password 3 7b07d1b3023056a9 address-family ipv4 unicast prefix-list FILTER_PREFIX_LENGTH in neighbor x.2.44.4 remote-as xx password 3 f07a10cb41db8bb6f8f0a340049a9b02 address-family ipv4 unicast prefix-list FILTER_PREFIX_LENGTH in If the switch is not configured to limit the prefix size on any inbound route advertisement to /24 or the least significant prefixes issued to the customer, this is a finding.
Configure the switch to limit the prefix size on any route advertisement to /24 or the least significant prefixes issued to the customer. Step 1: Configure a prefix list to reject any prefix that is longer than /24. SW1(config)# ip prefix-list FILTER_PREFIX_LENGTH permit 0.0.0.0/0 ge 8 le 24 SW1(config)# ip prefix-list FILTER_PREFIX_LENGTH deny 0.0.0.0/0 le 32 Step 2: Apply the prefix list to all eBGP peers as shown in the example below: SW1(config)# router bgp xx SW1(config-router)# neighbor x.1.12.2 SW1(config-router-neighbor)# address-family ipv4 unicast SW1(config-router-neighbor-af)# prefix-list FILTER_PREFIX_LENGTH in SW1(config-router-neighbor-af)# exit SW1(config-router-neighbor)# exit SW1(config-router)# neighbor x.2.44.4 SW1(config-router-neighbor)# address-family ipv4 unicast SW1(config-router-neighbor-af)# prefix-list FILTER_PREFIX_LENGTH in SW1(config-router-neighbor-af)# end
Step 1: Review the switch configuration to verify that a loopback address has been configured. interface loopback0 ip address 10.1.1.1/32 Step 2: Verify that the loopback interface is used as the source address for all iBGP sessions. router bgp xx router-id 10.1.1.1 address-family ipv4 unicast neighbor 10.1.12.2 remote-as xx password 3 7b07d1b3023056a9 update-source loopback0 If the switch does not use its loopback address as the source address for all iBGP sessions, this is a finding.
Configure the switch to use its loopback address as the source address for all iBGP peering. SW1(config)# router bgp xx SW1(config-router)# neighbor 10.1.12.2 SW1(config-router-neighbor)# update-source lo0 SW1(config-router-neighbor)# end
Review the switch configuration to determine if it is compliant with this requirement. Verify that a loopback address has been configured as shown in the following example: interface loopback0 ip address 10.1.1.1/32 By default, switches will use its loopback address for LDP peering. If an address has not be configured on the loopback interface, it will use its physical interface connecting to the LDP peer. If the router-id command is specified that overrides this default behavior, verify that it is a loopback interface as shown in the example below: mpls ldp configuration router-id lo0 If the switch is not configured do use its loopback address for LDP peering, this is a finding.
Configure the switch to use their loopback address as the source address for LDP peering sessions. As noted in the check content, the default behavior is to use its loopback address. SW1(config)# mpls ldp configuration SW1(config-ldp)# router-id lo0
Review the switch OSPF or IS-IS configuration and verify that LDP will synchronize with the link-state routing protocol as shown in the example below: OSPF Example router ospf 1 mpls ldp sync IS-IS Example router isis mpls ldp sync If the switch is not configured to synchronize IGP and LDP, this is a finding.
Configure the MPLS switch to synchronize IGP and LDP, minimizing packet loss when an IGP adjacency is established prior to LDP peers completing label exchange. OSPF Example SW1(config)# router ospf 1 SW1(config-switch)# mpls ldp sync IS-IS Example SW1(config)# router isis SW1(config-switch)# mpls ldp sync
Review the switch configuration to determine if refresh reduction is enabled. Step 1: Determine if MPLS TE is enabled on any interface as shown in the example below: interface Ethernet4/47 mpls traffic-eng tunnels mpls ip Step 2: If MPLS TE is enabled, verify that message pacing is enabled. ip rsvp signaling refresh reduction bundle-max-size If the switch with RSVP-TE configured does not have refresh reduction features enabled, this is a finding.
Configure the switch to rate limit RSVP messages per interface as shown in the example below. Configure the MPLS switch to synchronize IGP and LDP, minimizing packet loss when an IGP adjacency is established prior to LDP peers completing label exchange. OSPF Example SW1(config)# router ospf 1 SW1(config-switch)# mpls ldp sync IS-IS Example SW1(config)# router isis SW1(config-switch)# mpls ldp sync. SW1(config)# ip rsvp SW1(config-ip-rsvp)# signaling refresh reduction SW1(config-ip-rsvp)# end
Review the switch configuration to verify that TTL propagation is disabled as shown in the example below: no mpls ip propagate-ttl If the MPLS switch is not configured to disable TTL propagation, this is a finding.
Configure the MPLS switch to disable TTL propagation as shown in the example below: SW1(config)# no mpls ip propagate-ttl
Step 1: Review the design plan for deploying MPLS/L3VPN. Step 2: Review all CE-facing interfaces and verify that the proper VRF is defined via the ip vrf forwarding command. In the example below, customer 1 is bound to interface Ethernet2/1, while customer 2 is bound to Ethernet2/2. interface Ethernet2/1 no switchport vrf member CUST1 ip address x.2.22.3/24 interface Ethernet2/2 no switchport vrf member CUST2 ip address x.2.8.4/24 If any VRFs are not bound to the appropriate physical or logical interface, this is a finding.
Configure the PE switch to have each VRF bound to the appropriate physical or logical interfaces to maintain traffic separation between all MPLS L3VPNs.
Review the design plan for MPLS/L3VPN to determine what RTs have been assigned for each VRF. Review the switch configuration and verify that the correct RT is configured for each VRF. In the example below, route target 13:13 has been configured for customer 1. vrf context CUST1 address-family ipv4 unicast route-target export 13:13 route-target import 13:13 If there are VRFs configured with the wrong RT, this is a finding.
Configure the switch to have each VRF instance defined with the correct RT. SW1(config)# vrf context CUST1 SW1(config-vrf)# address-family ipv4 unicast SW1(config-vrf-af-ipv4)# route-target import 13:13 SW1(config-vrf-af-ipv4)# route-target export 13:13 SW1(config-vrf-af-ipv4)# end
Review the design plan for MPLS/L3VPN to determine what RD has been assigned for each VRF. Review the switch configuration and verify that the correct RD is configured for each VRF. In the example below, route distinguisher 13:13 has been configured for customer 1. vrf context CUST1 rd 13:13 address-family ipv4 unicast route-target export 13:13 route-target import 13:13 Note: This requirement is only applicable for MPLS L3VPN implementations. If the wrong RD has been configured for any VRF, this is a finding.
Configure the correct RD for each VRF. SW1(config)# vrf context CUST1 SW1(config-vrf)# rd 13:13 SW1(config-vrf)# end
The Cisco switch is not compliant with this requirement; hence, it is a finding. However, the severity level can be downgraded to a category 3 if the switch is configured to authenticate targeted LDP sessions using MD5 as shown in the configuration example below: Step 1: Verify that LDP neighbors are authenticating session, advertisement, and notification messages as shown in the example below: mpls ldp configurations password required for LDP_NBR1 password option 1 for LDP_NBR1 key-chain LDP_KEY password required for LDP_NBR2 password option 1 for LDP_NBR2 key-chain LDP_KEY Step 2: Verify that the neighbors identified in step 1 have the correct prefix. ip prefix-list LDP_NBR1 permit 10.1.22.2/32 ip prefix-list LDP_NBR2 permit 10.1.12.4/32 If the switch is not configured to authenticate targeted LDP sessions using MD5, this is a finding. The finding will remain as a CAT II.
The severity level can be downgraded to a category 3 if the switch is configured to authenticate targeted LDP sessions using MD5 as shown in the example below: Step 1: Configure a key chain for LDP sessions. SW1(config)# key chain LDP_KEY SW1(config-keychain)# key 1 SW1(config-keychain-key)# key-string xxxxxxxxxxxx SW1(config-keychain-key)# send-lifetime 00:00:00 Oct 1 2019 23:59:59 Dec 31 2019 SW1(config-keychain-key)# accept-lifetime 00:00:00 Oct 1 2019 01:05:00 Jan 1 2020 SW1(config-keychain-key)# exit SW1(config-keychain)# exit Step 2: Configure a prefix lists to identify LDP neighbors. SW1(config)# ip prefix-list LDP_NBR1 permit 10.1.22.2/32 SW1(config)# ip prefix-list LDP_NBR2 permit 10.1.12.4/32 Step 3: Apply the key chain to the LDP neighbors. SW1 (config)# mpls ldp configurations SW1 (config-ldp)# password required for LDP_NBR1 SW1 (config-ldp)# password option 1 for LDP_NBR1 key-chain LDP_KEY SW1 (config-ldp)# password required for LDP_NBR2 SW1 (config-ldp)# password option 1 for LDP_NBR2 key-chain LDP_KEY SW1 (config-ldp)# end
Verify that the correct and unique VCID has been configured for the appropriate attachment circuit. In the example below Ethernet2/1 is the CE-facing interface that is configured for VPWS with the VCID of 55. Step 1: Review the L2VPN virtual circuits and determine the member attachment circuit and pseudowire. l2vpn xconnect context VC55 member Ethernet2/1 member Pseudowire55 Step 2: Determine the VCID as configured for neighbor and verify the same VCID is defined on the remote PE device. port-profile type pseudowire MPLS_PROFILE encapsulation mpls interface Pseudowire55 neighbor 10.10.22.1 55 inherit port-profile MPLS_PROFILE Note: VPWS is also known as Ethernet over MPLS (EoMPLS) and Ethernet Virtual Circuit (EVC). If the correct VC ID has not been configured on both switches, this is a finding.
Assign globally unique VC IDs for each virtual circuit and configure the attachment circuits with the appropriate VC ID.
Step 1: Review the implementation plan and the VPN IDs assigned to customer VLANs for the VPLS deployment. Step 2: Review the PE switch configuration to verify that customer attachment circuits are associated to the appropriate VFI. In the example below, the attached circuit at interface GigabitEthernet3 is associated to VPN ID 110. bridge-domain 100 member vfi CUST1_VPLS member Ethernet2/2 service instance 1 l2vpn vfi context CUST1_VPLS vpn id 100 member Pseudowire12 member Pseudowire13 … … … interface Ethernet2/2 service instance 1 ethernet encapsulation dot1q 100 … … … interface Pseudowire12 encapsulation mpls neighbor 10.2.2.2 100 interface Pseudowire13 encapsulation mpls neighbor 10.3.3.3 100 If the attachment circuits have not been bound to the VFI configured with the assigned VPN ID for each VLAN, this is a finding.
Assign globally unique VPN IDs for each customer bridge domain using VPLS for carrier Ethernet services between multiple sites, and configure the attachment circuits to the appropriate VFI. Step 1: Configure the pseudowire interfaces with the assigned VC-ID. SW1(config)# interface Pseudowire12 SW1(config-if-pseudowire)# neighbor 10.2.2.2 100 SW1(config-if-pseudowire)# encapsulation mpls SW1(config-pseudowire-mpls)# exit SW1(config-if-pseudowire)# exit SW1(config)# interface Pseudowire13 SW1(config-if-pseudowire)# neighbor 10.3.3.3 100 SW1(config-if-pseudowire)# encapsulation mpls SW1(config-pseudowire-mpls)# exit SW1(config-if-pseudowire)# exit Step 2: Configure the virtual forwarding instance for the pseudowires as shown in the example with the assigned VPN ID. SW1(config)# l2vpn vfi context CUST1_VPLS SW1(config-l2vpn-vfi)# vpn 100 SW1(config-l2vpn-vfi)# member Pseudowire12 SW1(config-l2vpn-vfi)# member Pseudowire13 SW1(config-l2vpn-vfi)# exit Step 3: Configure the service instance on the attachment circuit as shown in the example below: SW1(config)# interface ethernet 2/2 SW1(config-if)# service instance 1 ethernet SW1(config-if-srv)# encapsulation dot1q 100 SW1(config-if-srv)# exit SW1(config-if)# exit Step 4: Configure the bridge domain. SW1(config)# bridge-domain 100 SW1(config-bdomain)# member ethernet 2/2 service-instance 1 SW1(config-bdomain)# member vfi CUST1_VPLS SW1(config-bdomain)# end Note: The service instance configured on the attachment circuit must map to the service instance configured on the bridge domain in order to be bound to the correct bridge domain with the VFI that defines the appropriate VPN ID.
Review the switch configuration to verify that storm control is enabled on CE-facing interfaces deploying VPLS as shown in the example below: interface Ethernet2/4 no shutdown no switchport storm-control broadcast level 40.00 service instance 1 ethernet encapsulation dot1q 100 If storm control is not enabled at a minimum for broadcast traffic, this is a finding.
Configure storm control for each CE-facing interface as shown in the example below: SW1(config)# int e2/4 SW1(config-if)# storm-control broadcast level 40 SW1(config-if)# end
Review the switch configuration to verify that IGMP or MLD snooping has been configured for IPv4 and IPv6 multicast traffic respectively for each VPLS bridge domain. The example below are the steps to verify that IGMP snooping is enabled for a VPLS bridge domain. Step 1: Verify that IGMP snooping is enabled globally. By default, IGMP snooping is enabled globally; hence, the following command should not be in the switch configuration: no ip igmp snooping Step 2: If IGMP snooping is enabled globally, it will also be enabled by default for each VPLS bridge domain. Hence, the command “no ip igmp snooping” should not be configured for any VPLS bridge domain as shown in the example below: bridge-domain 100 no ip igmp snooping If the switch is not configured to implement IGMP or MLD snooping for each VPLS bridge domain, this is a finding.
Configure IGMP or MLD snooping for IPv4 and IPv6 multicast traffic respectively for each VPLS bridge domain. SW1(config)# bridge-domain 100 SW1(config-bdomain)# ip igmp snooping SW1(config-bdomain)# end
Review the PE switch configuration to determine if a MAC address limit has been set for each VPLS bridge domain. bridge-domain 100 mac limit maximum addresses nnnnn If a limit has not been configured, this is a finding.
Configure a MAC address learning limit for each VPLS bridge domain. SW1(config)# bridge-domain 100 SW1(config-bdomain)# mac limit maximum addresses nnnn SW1(config-bdomain)# end
Step 1: Review the switch configuration to verify that an ingress ACL is applied to all external or CE-facing interfaces. interface Ethernet1/2 ip address x.1.12.2/30 ip access-group BLOCK_TO_CORE in Step 2: Verify that the ingress ACL discards and logs packets destined to the IP core address space. ip access-list BLOCK_TO_CORE deny ip any 10.1.x.0 0.0.255.255 log permit ip any any Note: Internet Control Message Protocol (ICMP) echo requests and traceroutes will be allowed to the edge from external adjacent neighbors. If the PE switch is not configured to block any traffic with a destination address assigned to the IP core infrastructure, this is a finding.
Configure protection for the IP core to be implemented at the edges by blocking any traffic with a destination address assigned to the IP core infrastructure. Step 1: Configure an ingress ACL to discard and log packets destined to the IP core address space. SW1(config)# ip access-list BLOCK_TO_CORE SW1(config-acl)# deny ip any 10.1.x.0 0.0.255.255 log SW1(config-acl)# exit Step 2: Apply the ACL inbound to all external or CE-facing interfaces. SW1(config)#int e1/2 SW1(config-if)# ip access-group BLOCK_TO_CORE in SW1(config-if)# end
Review the switch configuration to determine if uRPF loose mode is enabled on all CE-facing interfaces. interface Ethernet1/2 ip address x.1.12.2/30 ip access-group BLOCK_TO_CORE in ip verify unicast source reachable-via any If uRPF loose mode is not enabled on all CE-facing interfaces, this is a finding.
Configure uRPF loose mode on all CE-facing interfaces as shown in the example below: SW1(config)# int e1/2 SW1(config-if)# ip verify unicast source reachable-via any SW1(config-if)# end
In Cisco NX-OS, all packets with any header option other than the “source-route” header option are dropped. By default, ipv4 source routing is enabled. Verify that source routing is disabled via the following command: no ip source-route If the switch is not configured to drop all packets with IP option source routing, this is a finding.
Configure the switch to drop all packets with IP option source routing. SW1(config)# no ip source-route SW1(config)# end
Review the switch configuration and verify that a QoS policy has been configured to provide preferred treatment for mission-critical applications in accordance with the QoS DoDIN Technical Profile. Step 1: Verify that the class-maps are configured to match on DSCP values as shown in the configuration example below: class-map match-all C2_VOICE match ip dscp af47 class-map match-all VOICE match ip dscp ef class-map match-all VIDEO match ip dscp af41 class-map match-all CONTROL_PLANE match ip dscp cs6 class-map match-all PREFERRED_DATA match ip dscp af33 Step 2: Verify that the policy map reserves the bandwidth for each traffic type as shown in the example below: policy-map QOS_POLICY class C2_VOICE priority percent 10 class VOICE priority percent 15 class VIDEO bandwidth percent 25 class CONTROL_PLANE priority percent 10 class PREFERRED_DATA bandwidth percent 25 class class-default bandwidth percent 15 Step 3: Verify that an output service policy is bound to all interface as shown in the configuration example below: interface Ethernet1/1 ip address 10.1.15.1/30 service-policy output QOS_POLICY ! interface Ethernet1/2 ip address 10.1.15.4/30 service-policy output QOS_POLICY Note: Enclaves must mark or re-mark their traffic to be consistent with the DoDIN backbone admission criteria to gain the appropriate level of service. A general DiffServ principle is to mark or trust traffic as close to the source as administratively and technically possible. However, certain traffic types might need to be re-marked before handoff to the DoDIN backbone to gain admission to the correct class. If such re-marking is required, it is recommended that the re-marking be performed at the CE egress edge. Note: The GTP QOS document (GTP-0009) can be downloaded via the following link: https://intellipedia.intelink.gov/wiki/Portal:GIG_Technical_Guidance/GTG_GTPs/GTP_Development_List If the switch is not configured to enforce a QoS policy in accordance with the QoS GIG Technical Profile, this is a finding.
Configure a QoS policy in accordance with the QoS GIG Technical Profile. Step 1: Configure class-maps to match on DSCP values as shown in the configuration example below: SW1(config-cmap)# class-map match-all C2_VOICE SW1(config-cmap)# match ip dscp 47 SW1(config-cmap)# class-map match-all VOICE SW1(config-cmap)# match ip dscp ef SW1(config-cmap)# class-map match-all VIDEO SW1(config-cmap)# match ip dscp af41 SW1(config-cmap)# class-map match-all CONTROL_PLANE SW1(config-cmap)# match ip dscp cs6 SW1(config-cmap)# class-map match-all PREFERRED_DATA SW1(config-cmap)# match ip dscp af33 SW1(config-cmap)# exit Step 2: Configure a policy map to be applied to the interfaces that reserves the bandwidth for each traffic type as shown in the example below: SW1(config)# policy-map QOS_POLICY SW1(config-pmap-c)# class C2_VOICE SW1(config-pmap-c)# priority percent 10 SW1(config-pmap-c)# class VOICE SW1(config-pmap-c)# priority percent 15 SW1(config-pmap-c)# class VIDEO SW1(config-pmap-c)# bandwidth percent 25 SW1(config-pmap)# class CONTROL_PLANE SW1(config-pmap-c)# priority percent 10 SW1(config-pmap-c)# class PREFERRED_DATA SW1(config-pmap-c)# bandwidth percent 25 SW1(config-pmap-c)# class class-default SW1(config-pmap-c)# bandwidth percent 15 SW1(config-pmap-c)# exit SW1(config-pmap)# exit Step 3: Apply the output service policy to all interfaces as shown in the configuration example below: SW1(config)# int e1/1 SW1(config-if)# service-policy output QOS_POLICY SW1(config-if)# exit SW1(config)# int e1/2 SW1(config-if)# service-policy output QOS_POLICY SW1(config-if)# end
Review the switch configuration and verify that a QoS policy has been configured to provide preferred treatment for mission-critical applications in accordance with the QoS DoDIN Technical Profile. Step 1: Verify that the class-maps are configured to match on DSCP values as shown in the configuration example below: class-map match-all C2_VOICE match ip dscp af47 class-map match-all VOICE match ip dscp ef class-map match-all VIDEO match ip dscp af41 class-map match-all CONTROL_PLANE match ip dscp cs6 class-map match-all PREFERRED_DATA match ip dscp af33 Step 2: Verify that the policy map reserves the bandwidth for each traffic type as shown in the example below: policy-map QOS_POLICY class C2_VOICE priority percent 10 class VOICE priority percent 15 class VIDEO bandwidth percent 25 class CONTROL_PLANE priority percent 10 class PREFERRED_DATA bandwidth percent 25 class class-default bandwidth percent 15 Step 3: Verify that an output service policy is bound to all interface as shown in the configuration example below: interface Ethernet1/1 ip address 10.1.15.1/30 service-policy output QOS_POLICY ! interface Ethernet1/2 ip address 10.1.15.4/30 service-policy output QOS_POLICY Note: Enclaves must mark or re-mark their traffic to be consistent with the DoDIN backbone admission criteria to gain the appropriate level of service. A general DiffServ principle is to mark or trust traffic as close to the source as administratively and technically possible. However, certain traffic types might need to be re-marked before handoff to the DoDIN backbone to gain admission to the correct class. If such re-marking is required, it is recommended that the re-marking be performed at the CE egress edge. Note: The GTP QOS document (GTP-0009) can be downloaded via the following link: https://intellipedia.intelink.gov/wiki/Portal:GIG_Technical_Guidance/GTG_GTPs/GTP_Development_List If the switch is not configured to enforce a QoS policy in accordance with the QoS GIG Technical Profile, this is a finding.
Configure a QoS policy in accordance with the QoS GIG Technical Profile. Step 1: Configure class-maps to match on DSCP values as shown in the configuration example below: SW1(config-cmap)# class-map match-all C2_VOICE SW1(config-cmap)# match ip dscp 47 SW1(config-cmap)# class-map match-all VOICE SW1(config-cmap)# match ip dscp ef SW1(config-cmap)# class-map match-all VIDEO SW1(config-cmap)# match ip dscp af41 SW1(config-cmap)# class-map match-all CONTROL_PLANE SW1(config-cmap)# match ip dscp cs6 SW1(config-cmap)# class-map match-all PREFERRED_DATA SW1(config-cmap)# match ip dscp af33 SW1(config-cmap)# exit Step 2: Configure a policy map to be applied to the interfaces that reserves the bandwidth for each traffic type as shown in the example below: SW1(config)# policy-map QOS_POLICY SW1(config-pmap-c)# class C2_VOICE SW1(config-pmap-c)# priority percent 10 SW1(config-pmap-c)# class VOICE SW1(config-pmap-c)# priority percent 15 SW1(config-pmap-c)# class VIDEO SW1(config-pmap-c)# bandwidth percent 25 SW1(config-pmap)# class CONTROL_PLANE SW1(config-pmap-c)# priority percent 10 SW1(config-pmap-c)# class PREFERRED_DATA SW1(config-pmap-c)# bandwidth percent 25 SW1(config-pmap-c)# class class-default SW1(config-pmap-c)# bandwidth percent 15 SW1(config-pmap-c)# exit SW1(config-pmap)# exit Step 3: Apply the output service policy to all interfaces as shown in the configuration example below: SW1(config)# int e1/1 SW1(config-if)# service-policy output QOS_POLICY SW1(config-if)# exit SW1(config)# int e1/2 SW1(config-if)# service-policy output QOS_POLICY SW1(config-if)# end
Step 1: Verify that a class map has been configured for the Scavenger class as shown in the example below: class-map match-all SCAVENGER match ip dscp cs1 Step 2: Verify that the policy map includes the SCAVENGER class with low priority as shown in the following example below: policy-map QOS_POLICY class CONTROL_PLANE priority percent 10 class C2_VOICE priority percent 10 class VOICE priority percent 15 class VIDEO bandwidth percent 25 class PREFERRED_DATA bandwidth percent 25 class SCAVENGER bandwidth percent 5 class class-default bandwidth percent 10 Note: Traffic out of profile must be marked at the customer access layer or CE egress edge. If the switch is not configured to enforce a QoS policy to limit the effects of packet flooding DoS attacks, this is a finding.
Step 1: Configure a class map for the SCAVENGER class. SW1(config)# class-map match-all SCAVENGER SW1(config-cmap)# match ip dscp cs1 Step 2: Add the SCAVENGER class to the policy map as shown in the example below: SW1(config)# policy-map QOS_POLICY SW1(config-pmap-c)# no class class-default SW1(config-pmap)# class SCAVENGER SW1(config-pmap-c)# bandwidth percent 5 SW1(config-pmap-c)# class class-default SW1(config-pmap-c)# bandwidth percent 10 SW1(config-pmap-c)# end
Step 1: Review the network's multicast topology diagram. Step 2: Review the switch configuration to verify that only the PIM interfaces as shown in the multicast topology diagram are enabled for PIM as shown in the example below: interface Ethernet2/1 no switchport ip address 10.1.12.1/24 ip pim sparse-mode If an interface is not required to support multicast routing and it is enabled, this is a finding.
Document all enabled interfaces for PIM in the network's multicast topology diagram. Disable support for PIM on interfaces that are not required to support it. SW1(config)# int e2/1 SW1(config-if)# no ip pim sparse-mode SW1(config-if)# end
Step 1: Verify all interfaces enabled for PIM have a neighbor policy bound to the interface as shown in the example below: interface Ethernet2/1 no switchport ip address 10.1.12.1/24 ip pim sparse-mode ip pim neighbor-policy prefix-list PIM_NEIGHBOR no shutdown Step 2: Review the configured prefix list for filtering PIM neighbors as shown in the example below: ip prefix-list PIM_NEIGHBOR seq 5 permit 10.1.12.2/32 ip prefix-list PIM_NEIGHBOR seq 10 deny 0.0.0.0/0 le 32 If PIM neighbor ACLs are not bound to all interfaces that have PIM enabled, this is a finding.
Configure neighbor prefix lists to only accept PIM control plane traffic from documented PIM neighbors. Step 1: Configure prefix list for each PIM neighbor. SW1(config)# ip prefix-list PIM_NEIGHBOR seq 5 permit 10.1.12.2/32 SW1(config)# ip prefix-list PIM_NEIGHBOR deny 0.0.0.0/0 le 32 Step 2: Apply a prefix to all interfaces enabled for PIM. SW1(config)# int e2/1 SW1(config-if)# ip pim neighbor-policy prefix-list PIM_NEIGHBOR SW1(config-if)# end
Multicast boundary for NX-OS can be established via combination of the border command along with an ACL to filter admin-scoped multicast traffic. Step 1: Verify that the interface at the multicast domain edge has been configured with both an ingress and egress ACL. interface Ethernet2/1 no switchport ip access-group FILTER_TRAFFIC_IN in ip access-group FILTER_TRAFFIC_OUT out ip address 10.1.12.1/24 ip pim sparse-mode ip pim border Note: The command ip pim border enables the interface to be on the border of PIM domain so that no bootstrap, candidate-RP, or Auto-RP messages are sent or received on the interface. Step 2: Verify that the ingress and egress ACLs block the address range for administratively scoped multicast traffic. ip access-list FILTER_TRAFFIC_IN 10 deny ip any 239.0.0.0/8 20 permit tcp any any established … … … 90 deny ip any any log ip access-list FILTER_TRAFFIC_OUT 10 deny ip any 239.0.0.0/8 20 deny ip … … 80 permit ip any any If the switch is not configured to establish boundaries for administratively scoped multicast traffic, this is a finding.
Step 1: Configure an ingress and egress ACL to block administratively scoped multicast traffic. SW1(config)# ip access-list FILTER_TRAFFIC_IN SW1(config-acl)# deny 239.0.0.0/8 SW1(config-acl)# permit tcp any any established SW1(config-acl)# … SW1(config-acl)# deny ip any any log SW1(config-acl)# exit SW1(config)# ip access-list FILTER_TRAFFIC_OUT SW1(config-acl)# deny 239.0.0.0/8 SW1(config-acl)# … SW1(config-acl)# permit ip any any SW1(config-acl)# exit Step 2: Apply the ingress and egress ACL to the applicable interfaces. SW1(config)# int e2/1 SW1(config-if)# ip access-group FILTER_TRAFFIC_IN in SW1(config-if)# ip access-group FILTER_TRAFFIC_OUT out SW1(config-if)# end
The Cisco switch does not have a mechanism to limit the multicast forwarding cache. However, the risk associated with this requirement can be fully mitigated by configuring the switch to filter PIM register messages and accept MSDP packets only from known MSDP peers. Step 1: Verify that the RP is configured to filter PIM register messages for any undesirable multicast groups and sources. The example below will deny any multicast streams for groups 239.5.0.0/16 and allow from only sources x.1.2.6 and x.1.2.7. ip pim register-policy PIM_REGISTER_FILTER … … … route-map PIM_REGISTER_FILTER deny 10 match ip multicast group 239.5.0.0/16 route-map PIM_REGISTER_FILTER permit 20 match ip multicast source x.1.2.6/32 route-map PIM_REGISTER_FILTER permit 30 match ip multicast source x.1.2.7/32 route-map PIM_REGISTER_FILTER permit 40 match ip multicast group-range 232.0.0.0 to 233.255.255.255 route-map PIM_REGISTER_FILTER deny 50 match ip multicast source 0.0.0.0/0 Step 2: Review the switch configuration to determine if there is a receive path or interface filter to only accept MSDP packets from known MSDP peers as shown in the example below. Step 2a: Verify that interfaces used for MSDP peering have an inbound ACL as shown in the example. interface Ethernet2/3 no switchport ip access-group EXTERNAL_ACL_INBOUND in ip address x.1.28.8/24 ip pim sparse-mode Step 2b: Verify that the ACL restricts MSDP peering to only known sources. ip access-list EXTERNAL_ACL_INBOUND 10 permit tcp any any established 20 permit tcp x.1.28.2/32 x.1.28.8/32 eq 639 30 deny tcp any x.1.28.8/32 eq 639 log 40 permit tcp x.1.28.2/32 10.x.28.8/32 eq bgp 50 permit tcp x.1.28.2/32 eq bgp x.1.28.8/32 60 permit pim x.1.28.2/32 x.1.28.8/32 … … … 120 deny ip any any log Note: MSDP connections is via TCP port 639. If the RP switch is not configured to filter PIM register messages and accept MSDP packets only from known MSDP peers, this is a finding.
The risk associated with this requirement can be fully mitigated by configuring the switch to filter PIM register messages, rate limiting the number of PIM register messages, and accept MSDP packets only from known MSDP peers. Step 1: Configure the switch to filter PIM register messages received from a multicast DR for any undesirable multicast groups and sources. The example below will deny any multicast streams for groups 239.5.0.0/16 and allow from only sources x.1.2.6 and x.1.2.7. Step 1a: Configure a route map to filter multicast groups and sources as shown in the example below: SW1(config)# route-map PIM_REGISTER_FILTER deny 10 SW1(config-route-map)# match ip multicast group 239.5.0.0/16 SW1(config-route-map)# route-map PIM_REGISTER_FILTER permit 20 SW1(config-route-map)# match ip multicast source x.1.2.6/32 SW1(config-route-map)# route-map PIM_REGISTER_FILTER permit 30 SW1(config-route-map)# match ip multicast source x.1.2.7/32 SW1(config-route-map)# route-map PIM_REGISTER_FILTER permit 40 SW1(config-route-map)# match ip multicast group-range 232.0.0.0 to 233.255.255.255 SW1(config-route-map)# route-map PIM_REGISTER_FILTER deny 50 SW1(config-route-map)# match ip multicast source 0.0.0.0/0 SW1(config-route-map)# exit Step 1b: Configure a multicast register policy referencing the configured route map. SW1(config)# ip pim register-policy PIM_REGISTER_FILTER SW1(config)# end Step 2: Configure the receive path or interface ACLs to only accept MSDP packets from known MSDP peers. SW1(config)# ip access-list EXTERNAL_ACL_INBOUND SW1(config-acl) # permit tcp any any established SW1(config-acl) # permit tcp host x.1.28.2 host x.1.28.8 eq 639 SW1(config-acl) # deny tcp any host x1.28.8 eq 639 SW1(config-acl) # permit tcp host x.1.28.2 host x.1.28.8 eq bgp SW1(config-acl) # permit tcp host x.1.28.2 eq bgp host x.1.28.8 SW1(config-acl) # permit pim host x.1.28.2 host x.1.28.8 … … … SW1(config-acl)# deny ip any any
Verify that the RP switch is configured to filter PIM register messages. The example below will deny any multicast streams for groups 239.5.0.0/16 and allow from only sources x.1.2.6 and x.1.2.7. ip pim register-policy PIM_REGISTER_FILTER … … … route-map PIM_REGISTER_FILTER deny 10 match ip multicast group 239.5.0.0/16 route-map PIM_REGISTER_FILTER permit 20 match ip multicast source x.1.2.6/32 route-map PIM_REGISTER_FILTER permit 30 match ip multicast source x.1.2.7/32 route-map PIM_REGISTER_FILTER permit 40 match ip multicast group-range 232.0.0.0 to 233.255.255.255 route-map PIM_REGISTER_FILTER deny 50 match ip multicast source 0.0.0.0/0 If the RP switch peering with PIM-SM switches is not configured with a policy to block registration messages for any undesirable multicast groups and sources, this is a finding.
Configure the switch to filter PIM register messages received from a multicast DR for any undesirable multicast groups and sources. The example below will deny any multicast streams for groups 239.5.0.0/16 and allow from only sources x.1.2.6 and x.1.2.7. Step 1: Configure a route map to filter multicast groups and sources as shown in the example below: SW1(config)# route-map PIM_REGISTER_FILTER deny 10 SW1(config-route-map)# match ip multicast group 239.5.0.0/16 SW1(config-route-map)# route-map PIM_REGISTER_FILTER permit 20 SW1(config-route-map)# match ip multicast source x.1.2.6/32 SW1(config-route-map)# route-map PIM_REGISTER_FILTER permit 30 SW1(config-route-map)# match ip multicast source x.1.2.7/32 SW1(config-route-map)# route-map PIM_REGISTER_FILTER permit 40 SW1(config-route-map)# match ip multicast group-range 232.0.0.0 to 233.255.255.255 SW1(config-route-map)# route-map PIM_REGISTER_FILTER deny 50 SW1(config-route-map)# match ip multicast source 0.0.0.0/0 SW1(config-route-map)# exit Step 2: Configure a multicast register policy referencing the configured route map. SW1(config)# ip pim register-policy PIM_REGISTER_FILTER SW1(config)# end
Verify that the RP switch is configured to filter PIM join messages for any undesirable multicast groups. In the example below, groups from 239.8.0.0/16 are not allowed. route-map PIM_JOIN_FILTER deny 10 match ip multicast group 239.0.0.0/8 route-map PIM_JOIN_FILTER permit 20 match ip multicast group 224.0.0.0/4 … … … interface Ethernet2/1 no switchport ip address 10.1.12.1/24 ip pim sparse-mode ip pim jp-policy PIM_JOIN_FILTER in If the RP is not configured to filter join messages received from the DR for any undesirable multicast groups, this is a finding.
Configure the RP to filter PIM join messages for any undesirable multicast groups as shown in the example below: Step 1: Configure a PIM Join filter as shown in the example below: SW1(config)# route-map PIM_JOIN_FILTER deny SW1(config-route-map)# match ip multicast group 239.8.0.0/8 SW1(config-route-map)# route-map PIM_JOIN_FILTER permit 20 SW1(config-route-map)# match ip multicast group 224.0.0.0/4 SW1(config-route-map)# exit Step 2: Apply the PIM Join filter to the appropriate interfaces. SW1(config)# int e2/1 SW1(config-if)# ip pim jp-policy PIM_JOIN_FILTER in SW1(config-if)# end
Review the configuration of the DR to verify that it is filtering IGMP or MLD Membership Report messages, allowing hosts to join only those groups that have been approved. Step 1: Verify that all host facing interfaces are configured to filter IGMP Membership Report messages (IGMP joins) as shown in the example below: interface Ethernet2/4 no switchport ip address 10.2.22.3/24 ip pim sparse-mode ip igmp version 3 ip igmp report-policy ALLOWED_GROUPS Step 2: Verify that the report policy denies unauthorized groups or permits only authorized groups. route-map ALLOWED_GROUPS permit 10 match ip multicast group 233.1.1.0/24 route-map ALLOWED_GROUPS permit 20 match ip multicast group 233.1.1.0/32 route-map ALLOWED_GROUPS permit 30 match ip multicast group 233.1.1.1/32 route-map ALLOWED_GROUPS deny 40 match ip multicast group 224.0.0.0/4 Note: This requirement is only applicable to Source Specific Multicast (SSM) implementation. This requirement is not applicable to Any Source Multicast (ASM) since the filtering is being performed by the Rendezvous Point. If the DR is not filtering IGMP or MLD Membership Report messages, this is a finding.
Configure the DR to filter the IGMP or MLD Membership Report messages to allow hosts to join only those multicast groups that have been approved. Step 1: Configure the report policy to filter IGMP Membership Report messages as shown in the example below: SW1(config)# route-map ALLOWED_GROUPS permit SW1(config-route-map)# match ip multicast group 233.1.1.0/24 SW1(config-route-map)# route-map ALLOWED_GROUPS permit 20 SW1(config-route-map)# match ip multicast group 233.1.1.0/32 SW1(config-route-map)# route-map ALLOWED_GROUPS permit 30 SW1(config-route-map)# match ip multicast group 233.1.1.1/32 SW1(config-route-map)# route-map ALLOWED_GROUPS deny 40 SW1(config-route-map)# match ip multicast group 224.0.0.0/4 SW1(config-route-map)# exit Step 2: Apply the report policy to all applicable interfaces. SW1(config)# int e2/4 SW1(config-if)# ip igmp report-policy ALLOWED_GROUPS SW1(config-if)# end
Review the configuration of the DR to verify that it is filtering IGMP or MLD report messages, allowing hosts to only join multicast groups from sources that have been approved. Step 1: Verify that all host-facing interfaces are configured to filter IGMP Membership Report messages (IGMP joins) as shown in the example below: interface Ethernet2/4 no switchport ip address 10.2.22.3/24 ip pim sparse-mode ip igmp version 3 ip igmp report-policy ALLOWED_SOURCES Step 2: Verify that the report policy permits only sources that have been approved by the organization. route-map ALLOWED_SOURCES permit 10 match ip multicast source x.1.2.6/32 route-map ALLOWED_SOURCES permit 20 match ip multicast source x.1.2.7/32 route-map ALLOWED_SOURCES deny 30 match ip multicast source 0.0.0.0/0 Note: This requirement is only applicable to Source Specific Multicast (SSM) implementation. If the DR is not filtering IGMP or MLD report messages, this is a finding.
Step 1: Configure the report policy to filter IGMP Membership Report messages as shown in the example below: SW1(config-route-map)# route-map ALLOWED_SOURCES permit 10 SW1(config-route-map)# match ip multicast source x.1.2.6/32 SW1(config-route-map)# route-map ALLOWED_SOURCES permit 20 SW1(config-route-map)# match ip multicast source x.1.2.7/32 SW1(config-route-map)# route-map ALLOWED_SOURCES deny 30 SW1(config-route-map)# match ip multicast source 0.0.0.0/0 SW1(config-route-map)# exit Step 2: Apply the report policy to all applicable interfaces. SW1(config)# int e2/4 SW1(config-if)# ip igmp report-policy ALLOWED_SOURCES SW1(config-if)# end
Review the DR configuration to verify that it is limiting the number of mroute states via IGMP or MLD. Verify IGMP state limits have been configured on all applicable interfaces as shown in the example below: interface Ethernet2/4 no switchport ip address 10.2.22.3/24 ip pim sparse-mode ip igmp version 3 ip igmp state-limit nnn If the DR is not limiting multicast join requests via IGMP or MLD on all applicable interfaces, this is a finding.
Configure the DR on a global or interface basis to limit the number of mroute states resulting from IGMP or MLD membership reports. SW1(config)# int e2/4 SW1(config-if)# ip igmp state-limit 44 SW1(config-if)# end
Review the DR configuration to verify that the SPT switchover threshold is set to infinity (never switch over). ip pim spt-threshold infinity group-list prefix-list SPT_GROUPS Note: The default behavior is to join the SPT immediately upon the first data packet it receives. If the DR is not configured set SPT threshold to infinity to minimalize (S, G) state, this is a finding.
Configure the DR to increase the SPT threshold or set it to infinity to minimalize (S, G) state within the multicast topology where ASM is deployed. Step 1: Configure a prefix list or route map to specify the ASM groups. The example below includes all global ASM groups. SW1(config)# ip prefix-list SPT_GROUPS permit 233.0.0.0/8 Step 2. Configure the SPT threshold to infinity. SW1(config)# ip pim spt-threshold infinity group prefix-list SPT_GROUPS SW1(config)# end
Review the switch configuration to determine if there is a receive path or interface filter to only accept MSDP packets from known MSDP peers. Step 1: Verify that interfaces used for MSDP peering have an inbound ACL as shown in the example below: interface Ethernet2/3 no switchport ip access-group EXTERNAL_ACL_INBOUND in ip address x.1.28.8/24 ip pim sparse-mode Step 2: Verify that the ACL restricts MSDP peering to only known sources. ip access-list EXTERNAL_ACL_INBOUND 10 permit tcp any any established 20 permit tcp x.1.28.2/32 x.1.28.8/32 eq 639 30 deny tcp any x.1.28.8/32 eq 639 log 40 permit tcp x.1.28.2/32 10.x.28.8/32 eq bgp 50 permit tcp x.1.28.2/32 eq bgp x.1.28.8/32 60 permit pim x.1.28.2/32 x.1.28.8/32 … … … 120 deny ip any any log Note: MSDP connections are via TCP port 639. If the switch is not configured to only accept MSDP packets from known MSDP peers, this is a finding.
Configure the receive path or interface ACLs to only accept MSDP packets from known MSDP peers. SW1(config)# ip access-list EXTERNAL_ACL_INBOUND SW1(config-acl) # permit tcp any any established SW1(config-acl) # permit tcp host x.1.28.2 host x.1.28.8 eq 639 SW1(config-acl) # deny tcp any host x1.28.8 eq 639 SW1(config-acl) # permit tcp host x.1.28.2 host x.1.28.8 eq bgp SW1(config-acl) # permit tcp host x.1.28.2 eq bgp host x.1.28.8 SW1(config-acl) # permit pim host x.1.28.2 host x.1.28.8 … … … SW1(config-acl)# deny ip any any
Review the switch configuration to determine if received MSDP packets are authenticated. ip msdp peer x.1.28.2 remote-as nn ip msdp password peer x.1.28.2 xxxxxxxxxxxx ip msdp peer x.1.28.2 connect-source Ethernet2/3 remote-as 8 ip msdp password x.1.28.2 3 3ec66c90c104ad13 If the switch does not require MSDP authentication, this is a finding.
Configure the switch to authenticate MSDP messages as shown in the following example: SW1(config)# ip msdp password x.1.28.2 xxxxxxxxxxxx
Review the switch configuration to determine if there is import policy to block source-active multicast advertisements for any undesirable multicast groups, as well as any (S, G) states with undesirable source addresses. Step 1: Verify that an inbound source-active filter is bound to each MSDP peer. ip msdp peer x.1.28.2 connect-source Ethernet2/1 remote-as nn ip msdp sa-policy x.1.28.2 prefix-list INBOUND_MSDP_SA_FILTER in Step 2: Review the prefix-list or route-map referenced by the source-active filter to verify that undesirable multicast groups, auto-RP, single source multicast (SSM) groups, and advertisements from undesirable sources are blocked. ip prefix-list INBOUND_MSDP_SA_FILTER seq 10 deny 224.0.1.3/32 ip prefix-list INBOUND_MSDP_SA_FILTER seq 15 deny 224.0.1.24/32 ip prefix-list INBOUND_MSDP_SA_FILTER seq 20 deny 224.0.1.22/32 ip prefix-list INBOUND_MSDP_SA_FILTER seq 25 deny 224.0.1.2/32 ip prefix-list INBOUND_MSDP_SA_FILTER seq 30 deny 224.0.1.35/32 ip prefix-list INBOUND_MSDP_SA_FILTER seq 35 deny 224.0.1.60/32 ip prefix-list INBOUND_MSDP_SA_FILTER seq 40 deny 224.0.1.39/32 ip prefix-list INBOUND_MSDP_SA_FILTER seq 45 deny 224.0.1.40/32 ip prefix-list INBOUND_MSDP_SA_FILTER seq 50 deny 232.0.0.0/8 le 32 ip prefix-list INBOUND_MSDP_SA_FILTER seq 55 deny 239.0.0.0/8 le 32 ip prefix-list INBOUND_MSDP_SA_FILTER seq 60 deny 10.0.0.0/8 le 32 ip prefix-list INBOUND_MSDP_SA_FILTER seq 70 deny 172.16.0.0/12 le 32 ip prefix-list INBOUND_MSDP_SA_FILTER seq 75 permit 0.0.0.0/0 ge 8 If the switch is not configured with an import policy to filter undesirable SA multicast advertisements, this is a finding.
Configure the MSDP switch to filter received source-active multicast advertisements for any undesirable multicast groups and sources as shown in the example below: SW1(config)# ip prefix-list INBOUND_MSDP_SA_FILTER seq 10 deny 224.0.1.3/32 SW1(config)# ip prefix-list INBOUND_MSDP_SA_FILTER seq 15 deny 224.0.1.24/32 SW1(config)# ip prefix-list INBOUND_MSDP_SA_FILTER seq 20 deny 224.0.1.22/32 SW1(config)# ip prefix-list INBOUND_MSDP_SA_FILTER seq 25 deny 224.0.1.2/32 SW1(config)# ip prefix-list INBOUND_MSDP_SA_FILTER seq 30 deny 224.0.1.35/32 SW1(config)# ip prefix-list INBOUND_MSDP_SA_FILTER seq 35 deny 224.0.1.60/32 SW1(config)# ip prefix-list INBOUND_MSDP_SA_FILTER seq 40 deny 224.0.1.39/32 SW1(config)# ip prefix-list INBOUND_MSDP_SA_FILTER seq 45 deny 224.0.1.40/32 SW1(config)# ip prefix-list INBOUND_MSDP_SA_FILTER seq 50 deny 232.0.0.0/8 le 32 SW1(config)# ip prefix-list INBOUND_MSDP_SA_FILTER seq 55 deny 239.0.0.0/8 le 32 SW1(config)# ip prefix-list INBOUND_MSDP_SA_FILTER seq 60 deny 10.0.0.0/8 le 32 SW1(config)# ip prefix-list INBOUND_MSDP_SA_FILTER seq 165 deny 127.0.0.0/8 le 32 SW1(config)# ip prefix-list INBOUND_MSDP_SA_FILTER seq 70 deny 172.16.0.0/12 le 32 SW1(config)# ip prefix-list INBOUND_MSDP_SA_FILTER seq 75 permit 0.0.0.0/0 ge 8 SW1(config)# exit SW1(config)# ip msdp sa-policy x.1.28.2 prefix-list INBOUND_MSDP_SA_FILTER in SW1(config)# end
Review the switch configuration to determine if there is export policy to block local source-active multicast advertisements. Step 1: Verify that an outbound source-active filter is bound to each MSDP peer as shown in the example below: ip msdp peer x.1.28.2 connect-source Ethernet2/1 remote-as nn ip msdp sa-policy x.1.28.2 prefix-list OUTBOUND_MSDP_SA_FILTER out Step 2: Review the access lists referenced by the source-active filters and verify that MSDP source-active messages being sent to MSDP peers do not leak advertisements that are local. ip prefix-list OUTBOUND_MSDP_SA_FILTER seq 10 deny 10.0.0.0/8 le 32 ip prefix-list OUTBOUND_MSDP_SA_FILTER seq 20 permit 0.0.0.0/0 ge 8 If the switch is not configured with an export policy to filter local source-active multicast advertisements, this is a finding.
Configure the switch with an export policy to avoid global visibility of local multicast (S, G) states. The example below will prevent exporting multicast active sources belonging to the private network. SW1(config)# ip prefix-list OUTBOUND_MSDP_SA_FILTER seq 10 deny 10.0.0.0/8 le 32 SW1(config)# ip prefix-list OUTBOUND_MSDP_SA_FILTER seq 20 permit 0.0.0.0/0 ge 8 SW1(config)# exit SW1(config)# ip msdp sa-policy x.1.28.2 prefix-list OUTBOUND_MSDP_SA_FILTER out SW1(config)# end
Review the switch configuration to determine if it is configured to limit the amount of source-active messages it accepts on a per-peer basis. ip msdp peer x.1.28.2 connect-source Ethernet2/1 remote-as nn … … … ip msdp sa-limit x.1.28.2 nnn If the switch is not configured to limit the source-active messages it accepts, this is a finding.
Configure the switch to limit the amount of source-active messages it accepts from each peer. SW1(config)# ip msdp sa-limit x.1.28.2 nnn SW1(config)# end
Step 1: Review the switch configuration to verify that a loopback address has been configured. interface Loopback12 ip address x.12.2.2/32 Step 2: Verify that the loopback interface is used as the source address for all MSDP packets generated by the switch. ip msdp peer x.44.2.34 connect-source Loopback12 remote-as nn If the switch does not use its loopback address as the source address when originating MSDP traffic, this is a finding.
Configure the switch to use its loopback address is used as the source address when sending MSDP packets. SW1(config)# ip msdp peer x.44.2.34 connect-source lo12 remote-as nn
Review the switch configuration to determine if the hop limit has been configured for Router Advertisement messages for all internal interfaces as shown in the example. interface Ethernet2/1 no switchport ipv6 address 2001::1:0:1/64 ipv6 nd hop-limit 32 no shutdown interface Ethernet2/2 no switchport ipv6 address 2001::1:1:1/64 ipv6 nd hop-limit 32 no shutdown If hop-limit has been configured and has not been set to at least 32, it is a finding.
Configure the switch to advertise a hop limit of at least 32 in Router Advertisement messages as shown in the example. SW1(config)# interface e2/1 – 2 SW1(config-if-range)# ipv6 nd hop-limit 32 SW1(config-if-range)# end
Review the switch configuration to ensure FEC0::/10 IPv6 addresses are not defined. If IPv6 Site Local Unicast addresses are defined, this is a finding.
Configure the switch using only authorized IPv6 addresses.
Review the switch configuration to verify that Router Advertisements are suppressed on all external IPv6-enabled interfaces as shown in the example below. interface Ethernet1/1 no switchport ipv6 address 2001::1:24:3/64 ipv6 nd suppress-ra no shutdown If the switch is not configured to suppress Router Advertisements on all external IPv6-enabled interfaces, this is a finding.
Configure the switch to suppress Router Advertisements on all external IPv6-enabled interfaces as shown in the example below. SW1(config)# interface e1/1 SW1(config-if-range)# ipv6 nd suppress-ra SW1(config-if-range)# end