AOS-CX 스위치 보안 설정 가이드 (2)

지난 포스팅에서는 AOS-CX 스위치에 대한 물리적 보안과 Management Plane 영역의 보안을 살펴보았습니다.

이번에는 AOS-CX 스위치의 Control Plane 영역에 대한 보안을 다뤄볼까 합니다.
지난 포스팅과 이번 포스팅에 내용은 HPE 홈페이지에 나와있는 공식적인 내용을 기반으로 합니다.

AOS-CX 10.15 Hardening Guide (All Switch Series) 바로가기

Control Plane 보안

Control Plane Policing (CoPP)

CoPP는 특정 유형의 패킷이 폭주하여 스위치 또는 모듈 CPU에 과부하가 걸리지 않도록 속도를 제한하거나 패킷을 삭제하는 방식으로 방지합니다. 스위치 소프트웨어는 ARP 브로드캐스트, 멀티캐스트, 라우팅 프로토콜(BGP, OSPF) 및 스패닝 트리를 포함하여(이에 국한되지 않음) 속도 제한이 가능한 여러 구성 가능한 패킷 클래스를 제공합니다.

CoPP는 항상 활성화되어 있으며 비활성화할 수 없습니다.

기본 CoPP 정책은 수정할 수 있지만 삭제할 수는 없습니다.
관리자는 최대 32개의 사용자 지정 CoPP 정책을 만들 수 있지만, 한 번에 하나만 활성화할 수 있습니다.

간단하게 커스텀 CoPP 정책을 만들고 적용하려면 다음과 같이 명령어를 입력합니다.

switch(config)# copp-policy copp_policy_01
switch(config-copp)# class arp-broadcast priority 2 rate 1000 burst 1000
switch(config-copp)# class unknown-multicast priority 2 rate 1000 burst 1000
switch(config-copp)# class unresolved-ip-unicast priority 2 rate 1000 burst 1000
switch(config-copp)# default-class priority 1 rate 3000 burst 3000
switch(config-copp)# exit
switch(config)# apply copp-policy copp_policy_01

기본 CoPP 설정(factory-default)으로 되돌리고 싶다면 아래 명령어를 사용합니다.

switch(config)# copp-policy default revert

아래는 CX 6300 스위치의 기본 CoPP 정책입니다. 트래픽 클래스와 속도를 pps(packet-per-second) 단위로 제한하게 됩니다.

switch# show copp-policy default
class                 drop priority rate pps burst pkts hardware rate pps
--------------------- ---- -------- -------- ---------- -----------------
acl-logging                0        25       25         25
arp-broadcast              2        1250     1250       1250
arp-protect                2        2075     2075       2075
arp-unicast                3        825      825        825
bfd-control                5        850      850        850
bgp                        5        750      750        750
captive-portal             2        2075     259        2075
client-onboard             5        1024     1024       1000
dfp-collector              0        512      512        500
dhcp                       2        750      750        750
erps                       6        225      225        225
fib-optimization           0        100      200        100
icmp-broadcast-ipv4        2        325      325        325
icmp-multicast-ipv6        2        475      475        475
icmp-security-ipv6         2        325      325        325
icmp-unicast-ipv4          3        225      225        225
icmp-unicast-ipv6          3        400      400        400
ieee-8021x                 2        2075     259        2075
igmp                       4        1600     450        1600
ip-exceptions              0        100      100        100
ip-lockdown                0        100      100        100
ip-tracker                 0        256      256        250
ipfix                      0        2500     2500       2500
ipsec                      5        1025     128        1025
ipv4-options               1        100      100        100
lacp                       5        2050     2050       2050
lldp                       5        100      100        100
loop-protect               6        225      225        225
mac-lockout                0        100      100        100
manageability              4        4218     4218       4200
mdns                       2        150      150        150
mirror-to-cpu              0        100      100        100
mld                        4        1600     450        1600
mvrp                       5        225      225        225
nae-packet-monitor         0        100      200        0
ntp                        4        100      100        100
ospf-multicast             5        1025     1025       1025
ospf-unicast               5        1025     1025       1025
pim                        5        1700     1700       1700
ptp                        5        1000     250        1000
secure-learn               2        2075     259        2075
sflow                      1        1000     125        1000
stp                        6        2000     2000       2000
udld                       6        450      450        450
unknown-multicast          1        1025     128        1025
unresolved-ip-unicast      1        325      325        325
vrrp                       4        400      400        400
default                    2        4225     528        4225
Spanning Tree 보안

다음으로는 Spnning Tree의 보안 강화 워크플로에 대해 설명해보겠습니다. 두 가지 영역으로 나눠볼 수 있습니다.

BPDU 보호

AOS-CX 스위치는 방해 및 악의적인 장치 또는 네트워크의 부당한 변경으로부터 실제 구성을 보호하기 위해 다양한 보안 메커니즘이 마련되어 있습니다. BPDU 보호는 스푸핑된 BPDU 패킷이 네트워크에 유입되는 것을 방지하여 활성 토폴로지를 보호합니다.

일반적으로 BPDU 보호는 STP를 실행하지 않는 최종 사용자 디바이스에 연결된 엣지 포트에 적용됩니다.
보호된 포트에서 STP BPDU 패킷이 수신되면 BPDU 가드가 포트를 비활성화하고 알림을 전송합니다.

따라서 의도치 않은 Spannig Tree 또는 악의적인 공격을 방지하기 위해 최종 사용자/장치 단말 연결 포트에서 BPDU 가드를 활성화하는 것이 좋습니다.

switch(config)# interface 1/1/8
switch(config-if)# spanning-tree bpdu-guard
switch(config-if)# exit
Root Protection

Root Protection은 다른 스위치가 루트 브리지에 대한 더 나은 정보와 일반적으로 현재 루트 브리지 선택을 대체할 루트 브리지로의 경로 비용을 모두 포함하여 더 나은 BPDU를 전파할 수 있는 기능을 선언하지 못하도록 하여 활성 토폴로지를 보호합니다.

이는 일반적으로 루트가 되어야 하는 코어와 액세스 스위치 사이에서 수행되어 서버 포트 및 액세스 스위치 포트와 같이 루트 정보를 생성할 것으로 예상되지 않는 포트가 생성되는 것을 방지합니다.

switch(config)# interface 1/1/8
switch(config-if)# spanning-tree root-guard
switch(config-if)# exit

Spanning Tree 관련 Config 정보를 보면 BPDU나 Root Protection 적용 여부를 확인할 수 있습니다.

switch# show spanning-tree interface 1/1/3
Port                      : 1/1/3
Admin State               : up
BPDU Guard                : enabled
BPDU Filter               : disabled
RPVST Guard               : disabled
RPVST Filter              : disabled
Loop Guard                : disabled
Root Guard                : enabled
TCN Guard                 : disabled
Admin Edge Port           : admin-network
Link Type                 : Point to Point
BPDU Tx Count             : 31
BPDU Rx Count             : 0
TCN Tx Count              : 0
TCN Rx Count              : 0
DHCP 보안
DHCPv4/v6 Snooping

DHCP Snooping은 네트워크에서 작동하는 불법 DHCP 서버로 인한 아래와 같은 DHCP 공격으로부터 네트워크를 보호합니다.

  • 주소 스푸핑
  • 네트워크에서 공격자의 대량 주소 요청으로 인한 DHCP 서버의 주소 고갈

DHCP 스누핑은 DHCP 요청 및 응답을 수락하는 신뢰할 수 있는 DHCP 서버와 포트를 지정합니다.

또한 외부 스토리지를 사용하여 IP 바인딩을 파일로 백업하여 스위치가 재시작된 후에도 유지될 수 있도록 할 수 있습니다.

switch(config)# dhcpv4-snooping
switch(config)# dhcpv6-snooping
switch(config)# vlan 100
switch(config-vlan-100)# dhcpv4-snooping
switch(config-vlan-100)# dhcpv6-snooping
switch(config-vlan-100)# exit
switch(config)#
switch(config)# interface 1/1/1
switch(config-if)# dhcpv4-snooping trust
switch(config-if)# dhcpv6-snooping trust
switch(config-if)# exit
switch(config)# dhcpv4-snooping authorized-server 192.168.2.10 vrf default
switch(config)# dhcpv6-snooping authorized-server ABCD:5ACD::2000 vrf default
switch(config)# dhcpv4-snooping external-storage volume dhcp_snoop file dsnoop_ipbindings
DHCPv6 Guard

DHCPv6 Guard는 DHCPv6 Snooping의 확장 기능입니다.

DHCPv6 스누핑 기능이 전역 및 VLAN에 구성되면 포트는 신뢰할 수 있는 포트와 신뢰할 수 없는 포트로 구성됩니다.
DHCPv6 가드는 정책을 생성하고 포트와 VLAN에 적용하여 이 기능을 강화합니다.

이 정책에는 신뢰할 수 있는 포트에서 수신되는 패킷과 비교되는 여러 속성이 포함되어 있습니다.
패킷이 정책의 속성을 준수하면 대상 포트로 전달되고, 그렇지 않으면 패킷이 삭제됩니다.

switch(config)# dhcpv6-snooping guard-policy pol1
switch(config-dhcpv6-guard-policy)# match server access-list acl1
switch(config-dhcpv6-guard-policy)# preference min 6
switch(config-dhcpv6-guard-policy)# preference max 250
switch(config-dhcpv6-guard-policy)# match client prefix-list pref1
switch(config-dhcpv6-guard-policy)# exit
switch(config)# vlan 5
switch(config-vlan-100)# dhcpv6-snooping guard-policy pol1
ARP Inspection

ARP에 추가적인 보안을 제공하는 기능입니다.

ARP는 고유한 보안 메커니즘을 지원하지 않으므로 해결을 위해 단순한 데이터그램 교환에 의존하며, 이 중 많은 부분이 브로드캐스트됩니다. ARP는 신뢰할 수 없고 안전하지 않은 프로토콜이기 때문에 공격에 취약합니다.

공격으로부터 보호하기 위해 스위치에 다음과 같은 방어 메커니즘을 설정할 수 있습니다.

  • VLAN 수준에서 동적 ARP 검사 활성화
  • VLAN의 구성원 포트를 신뢰할 수 있는 포트 또는 신뢰할 수 없는 포트로 정의
    (신뢰할 수 없는 포트의 ARP 트래픽만 검사 대상. 라우팅된 포트는 항상 신뢰)
  • DHCP 스누핑 바인딩 및 고정 IP 바인딩을 사용하여 강제 적용
switch(config)# vlan 1
switch(config-vlan)# arp inspection
switch(config)# interface 1/1/1
switch(config-if)# arp inspection trust
IP Source Lockdown

포트 단위로 IPv4/v6 소스 주소 스푸핑을 방지하여 보안을 강화합니다.
이를 위해 하드웨어에서 모든 패킷을 검사합니다.

IP Source Lockdown이 활성화되면 인터페이스(포트)에서 수신된 IP 트래픽은 VLAN, IP 주소, MAC 주소, 인터페이스(포트)가 IP 바인딩 데이터베이스 항목과 일치하는 경우에만 전달됩니다.

IP Source Lockdown을 사용하려면 IP 바인딩 데이터베이스가 채워져 있어야 합니다.
바인딩 데이터베이스는 바인딩 정보를 학습하고 저장하는 DHCP 스누핑을 통해 동적으로 채워집니다.
또는 IP source-binding 명령을 사용하여 IP 바인딩 데이터베이스를 정적으로 채울 수도 있습니다.

DHCPv4/v6 스누핑, ND 스누핑 바인딩 및 정적 IPv4/v6 바인딩을 사용하여 시행됩니다.

switch(config)# interface 1/1/1
switch(config-if)# ipv4 source-lockdown
switch(config-if)# ipv6 source-lockdown
ND(Neighbor Discovery) 공격 차단
ND Snooping

ND 스누핑은 L2 스위칭 네트워크에서 사용되며 ND 공격을 방지합니다.

ND 스누핑은 유효하지 않은 ND 패킷을 삭제하고, DIPLDv6(IPv6용 Dynamic IP Lockdown)와 결합하여 유효하지 않은 호스트의 데이터 트래픽을 차단합니다. ND 스누핑은 들어오는 ND 메시지 및 데이터 패킷의 소스 MAC 주소, 소스 IPv6 주소, 입력 인터페이스, VLAN을 학습하여 IP 바인딩 항목을 구축합니다.

ND 스누핑은 다음과 같은 이유로 ND 패킷을 삭제합니다.

  • 이더넷 소스 MAC 주소가 ND 패킷의 ICMPv6 타겟 링크 계층 주소 필드에 있는 주소와 일치하지 않는 경우
  • 소스 주소 필드의 글로벌 IPv6 주소가 ND 스누핑 Prefix 필터 테이블과 일치하지 않는 경우
  • 소스 IP 주소 필드의 글로벌 IPv6 주소 또는 링크-로컬 IPv6 주소가 ND 스누핑 바인딩 테이블과 일치하지 않는 경우

다음은 전역으로 활성화된 ND 스누핑의 VLAN 구성 예제입니다.

switch(config)# nd-snooping
switch(config)# vlan 100
switch(config-vlan-100)# nd-snooping
switch(config-vlan-100)# exit
switch(config)#
switch(config)# show nd-snooping
ND Snooping Information
========================
ND Snooping : Enabled
ND Snooping Enabled VLANs : 100
Trusted Port Bindings Enabled VLANs : 100
ND Guard Enabled VLANs : 100
RA Guard Enabled VLANs : 100
RA Drop Enabled VLANs :
MAC Address Check : Disabled
PORT TRUST MAX-BINDINGS CURRENT-BINDINGS
------- ------ ------------- -----------------
1/1/1 Yes
1/1/2 Yes
RA(Router Advertisement) Guard

RA Guard는 L2 액세스 장치에서 원치 않는 위조된 RA 메시지를 차단합니다.
신뢰할 수 없는 포트에서는 지정된 VLAN의 Ingress 라우팅 광고(RA) 및 라우팅 리디렉션(RR) 패킷이 금지됩니다.
패킷은 신뢰할 수 있는 포트에서만 수신되면 전달됩니다.

RA Guard 정책이 활성화된 경우(ipv6 nd-snooping ra-guard policy), 신뢰할 수 있는 포트에서 수신된 RA 패킷은 정책에 구성된 매개 변수 집합에 대해 유효성을 검사하고 포트 또는 VLAN에 할당됩니다.

RA Guard 정책 옵션은 다음과 같습니다.

  • Hop Limit
  • Managed Config Flag
  • Other Config Flag
  • Router Preference
  • ACL
  • Advertised Prefix List

MyRAV라는 이름의 RA Guard 정책에 Other Config Flag와 ACL 옵션을 추가해보면 다음과 같습니다.

switch(config)# ipv6 nd-snooping ra-guard policy MyRAV
switch(config-raguard-policy)# other-config-flag off
switch(config-raguard-policy)# match access-list SA
switch(config)# vlan 10
switch(config-vlan-10)# nd-snooping ra-guard attach-policy MyRAV
IPv6 Destication Guard

IPv6 Destination Guard를 활성화하면 ND 캐시 고갈 문제를 방지하고 DoS(서비스 거부) 공격을 최소화하는 데 도움이 됩니다.

switch(config)# vlan 10
switch(config-vlan-10)# ipv6 destination-guard

IPv6 Destination Guard가 활성화되면 링크에서 활성 상태인 목적지 주소에 대해서만 주소 확인이 수행됩니다.
이 기능을 사용하려면 바인딩 테이블이 DHCPv6 스누핑, ND 스누핑 또는 고정 IP 바인딩의 도움으로 채워져야 합니다.

Destination Guard는 IPv6 트래픽의 목적지(Destination) 주소 기반의 필터링을 활성화하고 바인딩 테이블에서 찾을 수 없는 대상 주소에 대한 ND 프로토콜 확인을 차단합니다.

구성한 IPv6 Destination Guard의 통계를 show 명령어를 통해 확인할 수 있습니다.

switch# show ipv6 destination-guard statistics
Packets dropped for VLAN 10 : 25467
Packets dropped for VLAN 30 : 434
Packets dropped for VLAN 50 : 8767
라우팅 프로토콜 보안 – OSPF
OSPF Passive Interfaces

BGP와 달리 대부분의 라우팅 프로토콜은 Hello 패킷 송수신을 통해 Neighbor를 발견하는 경향이 있습니다. 이러한 이웃 관계는 동적으로 구축되므로 관리자는 어떤 이웃 관계를 형성할 수 있는지 제어해야 하며, 관리자는 잠재적인 이웃을 알고 신뢰할 수 있는지 확인해야 합니다.

OSPF가 이웃을 학습할 수 있는 위치를 제한하기 위해 AOS-CX는 패시브 OSPF 인터페이스를 지원합니다.
패시브 OSPF 인터페이스는 IP 서브넷을 발표하지만 인터페이스의 다른 OSPF 장치와 이웃 관계를 설정하지 않습니다.

모든 OSPF 사용 인터페이스를 수동으로 설정해야 합니다. 라우터 컨텍스트에서는 패시브 인터페이스를 활성화하고,

switch(config)# router ospf 1
switch(config-ospf-1)# passive-interface default

OSPF 이웃 관계가 허용되는 인터페이스에서는 비활성화하는 것이 좋습니다.

switch(config)# interface 1/1/1
switch(config-if)# no ip ospf passive
Neighbor Authentication

모든 OSPF 교환은 인증 처리됩니다.
그러나 네트워크 제조사에서 사용하는 기본 인증은 비어 있거나 0을 의미하는 “null”입니다.

AOS-CX는 최대 512비트의 SHA 암호화 해시를 포함한 여러 가지 OSPFv2 인증 방법을 지원하여 OSPF Neighbor 간의 메시지를 인증합니다. OSPF Neighbor간 인증을 구성할 때는 두 장치에 연결된 인터페이스에서 인증 방법과 인증 키가 동일해야 합니다.

SHA-512 인증을 구성하려면, 인터페이스 컨텍스트에서 기본 인증 방법을 null에서 hmac-sha-512로 변경합니다.

switch(config-if)# ip ospf authentication hmac-sha-512

또는 AOS-CX 키체인 기능을 사용하여 여러 OSPF 인터페이스에서 사용할 수 있는 암호화 인증 키를 지정할 수도 있습니다.

switch(config)# keychain ospf-keychain
switch(config-keychain)# key 1
switch(config-keychain-key)# cryptographic-algorithm hmac-sha-512
switch(config-keychain-key)# key-string plaintext ospfshakeystring
switch(config-keychain-key)# interface 1/1/49
switch(config-if)# ip ospf authentication keychain
switch(config-if)# ip ospf keychain ospf-keychain
OSPFv3 Area Authentication and Encryption with IPsec

OSPFv3 Neighbor는 인터페이스 수준 인증을 사용할 수 있습니다.

다른 방법으로 모든 구성원 인터페이스에 구성된 방법을 자동으로 적용하는 IPsec 프로토콜을 사용하여 전체 OSPFv3 영역에 암호화 또는 인증 또는 둘 다를 제공할 수 있습니다. AOS-CX에서 OSPFv3 영역을 보호하기 위해 지원하는 두 가지 IPsec 캡슐화 유형이 있습니다:

  • IPv6 인증 헤더(AH)는 OSPFv3 패킷에 IPv6 인증 헤더를 추가합니다.
  • ESP(암호화된 보안 페이로드)는 OSPFv3 패킷에 대한 인증과 암호화를 모두 제공합니다.

IPsec 인증 및 암호화는 OSPFv3 라우터 프로세스 컨텍스트에서 구성됩니다.
인증과 암호화 모두 256에서 4,294,967,295 사이의 정수 값인 지정된 SPI(보안 정책 인덱스)가 필요하며, 이 값은 보안 영역의 각 OSPFv3 라우터에서 구성된 IPsec 인증 및/또는 암호화 정책과 일치하기 위해 사용됩니다.

스위치의 각 OSPFv3 IPsec 정책은 서로 다른 SPI 값을 사용해야 하며, 보안 영역 내에서 해당 정책을 사용하는 모든 OSPFv3 이웃 인터페이스에서 SPI 값(인증 또는 암호화 키 또는 둘 다)이 일치해야 합니다.

OSPFv3 영역 1에 대해 AH 인증을 구성하려면 SPI, 인증 방법(md5 또는 sha1), 키 유형(일반 텍스트, 문자열 또는 암호 텍스트) 및 키 문자열 자체를 지정합니다. 키 유형 및 문자열을 지정하지 않으면 사용자에게 일반 텍스트 키를 대화형으로 입력하라는 메시지가 표시됩니다.

switch(config-ospfv3-1)# area 1 authentication ipsec spi 1024 sha1
Enter the IPsec authentication key: *******
Re-Enter the IPsec authentication key: ********

Area 1에 대한 ESP 암호화를 구성하려면 SPI, 인증 방법, 인증 키 유형 및 문자열, 암호화 유형(3des, aes, des 또는 null), 키 유형 및 암호화 키 문자열을 지정합니다. 암호화 유형 및 키 문자열을 지정하지 않으면 대화형으로 일반 텍스트 키를 입력하라는 메시지가 표시됩니다. 인증 키 유형과 문자열을 지정하지 않으면 일반 텍스트 인증 키와 원하는 암호화 유형 및 일반 텍스트 키를 모두 입력하라는 메시지가 표시됩니다.

switch(config-ospfv3-1)# area 1 encryption ipsec spi 1024 sha1
Enter the IPsec authentication key: *******
Re-Enter the IPsec authentication key: *******
Enter the IPsec encryption type (3des/aes/des/null)? aes
Enter the IPsec encryption key: ****************
Re-Enter the IPsec encryption key: ****************
라우팅 프로토콜 보안 – BGP

BGP 보안을 위한 IETF Best Practice(BCP194)는 다음 세 가지 항목에 중점을 두고 있습니다:

  • Control Plane ACL 기능을 활용하여 BGP 통신을 구성된 BGP 피어로 제한
  • 인증을 사용하여 피어 간의 BGP 세션 보호
  • TTL 보안 메커니즘을 사용하여 타사의 스푸핑 공격을 방지
Control Plane ACL

Control Plane은 디바이스의 관리 및 라우팅 기능을 처리합니다.
이를 통해 스위치와 BGP 피어링 세션을 설정할 수 있는 디바이스 목록을 제어할 수 있습니다.

BGP를 실행하는 장치는 TCP 포트 179에서 연결을 수신 대기합니다.

BGP 피어 세션을 설정할 때 한 장치는 첫 번째 TCP SYN 패킷을 전송하여 다른 피어와 적극적으로 관계를 설정합니다.
이 장치는 연결의 나가는 쪽에 있습니다. TCP SYN을 수신한 다른 피어는 들어오는 연결에서 SYN 또는 ACK로 응답합니다.
각 피어는 두 가지 역할 중 하나를 맡을 수 있으므로 양방향으로 BGP에 대한 ACL 항목을 구성해야 합니다.

아래 항목은 10.20.0.10의 트래픽을 허용하여 디바이스와 BGP 피어링 세션을 설정할 수 있도록 합니다.
어느 쪽이든 연결에서 발신 또는 수신 역할을 할 수 있으므로 ACL에는 피어당 두 개의 항목이 필요합니다.

switch(config)# access-list ip CONTROLPLANE
switch(config-acl-ip)# 800 comment LOCKDOWN BGP SESSIONS
switch(config-acl-ip)# 805 permit tcp 10.20.0.10 gt 1023 any eq 179
switch(config-acl-ip)# 810 permit tcp 10.20.0.10 eq 179 any gt 1023

구성된 모든 피어의 트래픽을 허용한 후, TCP 포트 179를 오가는 다른 모든 트래픽을 거부하여 다른 모든 장치가 BGP 피어링 세션을 설정하지 못하도록 차단합니다.

switch(config-acl-ip)# 890 deny tcp any gt 1023 any eq 179
switch(config-acl-ip)# 895 deny tcp any eq 179 any gt 1023
TCP 세션 인증

TCP 세션 헤더에 MD5 보호 기능을 추가하여 두 피어 간의 TCP 세션을 보호할 수 있습니다.
MD5 다이제스트는 피어 간에 비밀번호와 같은 역할을 합니다.

이 구성은 BGP 구성 컨텍스트 내에서 이루어지며, 두 피어는 동일한 비밀번호를 구성해야 합니다.

switch(config)# router bgp 1
switch(config-bgp)# neighbor 10.20.0.10 password plaintext meatballs4me!
TTL 보안

일반적으로 대부분의 라우팅 Neighbour가 직접 연결되어 있다고 가정할 때, 원격 디바이스의 원격 스푸핑을 차단하는 간단한 방법은 피어에서 보낸 패킷의 TTL을 확인하여 TTL이 예상보다 작은 패킷을 삭제하는 것입니다.

다음 예제에서는 위에서 지정한 BGP 피어를 사용합니다.
최대 TTL 값이 255라고 가정하고, 피어에서 전송된 패킷을 아래에 1로 입력한 홉 수와 비교합니다.

switch(config)# router bgp 1
switch(config-bgp)# neighbor 10.20.0.10 ttl-security-hops 1

최대 TTL 값이 255이고 구성된 홉 카운트 값이 1이면 TTL이 254 미만인 패킷은 삭제됩니다.

switch # show run bgp
멀티캐스트 보안 – SSDP(Simple Service Discovery Protocol)

SSDP는 애플리케이션 계층 프로토콜로, 유니버설 플러그 앤 플레이(UPnP)를 구현하는 핵심 프로토콜 중 하나입니다.

SSDP를 사용하면 네트워크 장치가 멀티캐스트 검색 및 광고 메시지를 멀티캐스트 IPv4 그룹 주소 239.255.255.250:1900 또는 멀티캐스트 IPv6 그룹 주소 FF0x::C로 전송하여 네트워크 서비스를 검색하고 광고할 수 있습니다.

UPnP를 사용하면 각 장치는 고유한 멀티캐스트 흐름(소스 IP, SSDP 그룹 IP)을 생성합니다.
최종 사용자 디바이스가 많은 멀티캐스트 네트워크에서는 각 디바이스가 고유한(S, G) 플로우를 생성하고 리소스가 제한되어 있기 때문에 많은 양의 멀티캐스트 하드웨어 및 소프트웨어 리소스가 소모될 수 있습니다. 이러한 네트워크에서는 SSDP 트래픽을 제어, 삭제 또는 최소화할 필요가 있습니다.

Recommendation –

  • 요약된 정적 멀티캐스트 경로를 구성하여 네트워크 리소스를 절약하고 서비스 거부를 방지할 수 있습니다.
switch(config)# ip multicast-static-route vlan10 any 239.250.255.250 1/1/2
  • 네트워크에서 SSDP 서비스가 사용 설정되어 있지 않은 경우, VLAN ACL 또는 정책을 통해 SSDP를 비활성화하는 것을 권장합니다.
switch(config)# access-list ip drop_ssdp
switch(config-acl-ip)# 10 deny udp any 239.255.255.250 eq 1900
switch(config)# vlan 10
switch(config-vlan-10)# apply access-list ip drop_ssdp in
switch(config)# interface 1/1/1
switch(config-if)# no shutdown
switch(config-if)# no routing
switch(config-if)# vlan access 10
switch(config)# interface vlan 10
switch(config-if-vlan)# ip address 192.168.1.2/24
switch(config-if-vlan)# ip igmp enable
switch(config-if-vlan)# ip pim-sparse enable
switch(config)# router pim
switch(config-pim)# enable
switch(config)# class ip drop_class
switch(config-class-ip)# 10 match any any 239.255.255.250
switch(config)# policy drop_ssdp
switch(config-policy)# 10 class ip drop_class action drop
switch(config)# vlan 10
switch(config-vlan-10)# apply policy drop_ssdp in
switch(config)# interface 1/1/1
switch(config-if)# no shutdown
switch(config-if)# no routing
switch(config-if)# vlan access 10
switch(config)# interface vlan 10
switch(config-if-vlan)# ip address 192.168.1.2/24
switch(config-if-vlan)# ip igmp enable
switch(config-if-vlan)# ip pim-sparse enable
switch(config)# router pim
switch(config-pim)# enable
멀티캐스트 보안 – IGMP & MLD 스누핑

IGMP 스누핑은 멀티캐스트 포워딩 효율성을 향상시키기 위한 멀티캐스트 제한 메커니즘으로 L2 장치에서 실행됩니다.

IGMP 스누핑이 활성화되지 않은 경우 스누핑 스위치는 멀티캐스트 패킷을 VLAN의 모든 호스트에 플러딩합니다.
IGMP L2 스누핑 스위치는 그룹 주소로 주소가 지정된 패킷 수신에 관심을 표명한 노드가 없는 네트워크 세그먼트에서 대역폭을 절약할 수 있는 이점을 제공합니다. IGMP 스누핑이 활성화되면 L2 스누핑 스위치는 알려진 멀티캐스트 그룹의 멀티캐스트 패킷을 수신자에게만 전달합니다.

MLD(멀티캐스트 수신기 검색) 스누핑은 네트워크 전체에서 멀티캐스트 트래픽을 최적화하여 트래픽이 VLAN의 포트에 폭주하는 것을 방지합니다. 예를 들어, MLD 스누핑의 기능 중 하나를 사용하면 멀티캐스트에 대한 MLD 요청을 시작하는 포트로만 트래픽이 전달되도록 네트워크를 구성할 수 있습니다.

switch(config)# vlan 10
switch(config-vlan-10)# ip igmp snooping enable
switch(config-vlan-10)# ip igmp snooping version 2
switch(config-vlan-10)# ipv6 mld snooping enable
switch(config-vlan-10)# exit

악의적인 사용자의 IGMP 또는 MLD 보고서를 기반으로 생성된 유효하지 않은 멀티캐스트 항목이 많으면 장치에서 합법적인 사용자에게 멀티캐스트 서비스를 제공할 수 없습니다.
호스트가 조인할 수 있는 멀티캐스트 그룹을 제어하려면 IGMP 스누핑 또는 MLD 스누핑이 활성화된 L2 장치에서 멀티캐스트 그룹 정책을 구성합니다. 호스트가 멀티캐스트 프로그램을 요청하기 위해 IGMP 또는 MLD 보고서를 보내면 L2 장치는 멀티캐스트 그룹 정책을 사용하여 보고서를 필터링합니다. L2 장치는 멀티캐스트 그룹 정책에 의해 보고서가 허용되는 경우에만 호스트의 포트를 나가는 포트 목록에 추가합니다.

switch(config)# ip igmp snooping filter-unknown-mcast
switch(config)# ipv6 mld snooping filter-unknown-mcast
switch(config)# ip igmp snooping apply access list <ACL-NAME>
switch(config)# ipv6 mld snooping apply access list <ACL-NAME>
멀티캐스트 보안 – PIM(Protocol Independent Multicast)

멀티미디어 애플리케이션을 위해 IP 멀티캐스트 트래픽이 전송되는 네트워크에서는 멀티캐스트 라우팅 프로토콜이 실행되고 있지 않으면 이 트래픽이 라우팅된 인터페이스(VLAN) 경계에서 차단됩니다. PIM은 멀티캐스트 트리를 형성하여 멀티캐스트 소스에서 트래픽을 요청하기 위해 IGMP와 같은 프로토콜을 사용한 서브넷으로 트래픽을 전달하는 라우팅 프로토콜 중 하나입니다.

PIM Accept-Register

PIM Accept-Register는 랑데부 포인트(RP)에 등록할 수 있는 소스 및 그룹을 제어할 수 있는 보안 기능입니다.
Register ACL이 PIM 라우터에 연결되면 PIM 프로토콜은 작업(허용 또는 거부)과 함께 소스 및 대상 주소 세부 정보를 저장합니다.

switch(config)# access-list ip pim_reg_acl
switch(config-acl-ip)# 10 permit any 20.1.1.1 225.1.1.2
switch(config-acl-ip)# 20 deny any 30.1.1.1 225.1.1.3
switch(config)# router pim
switch(config-pim)# accept-register access-list pim_reg_acl
switch(config)# access-list ipv6 pim_regv6_acl
switch(config-acl-ipv6)# 10 permit any 20.::1 ff1e::1
switch(config-acl-ipv6)# 20 deny any 30::1 ff1e::3
switch(config)# router pim6
switch(config-pim6)# accept-register access-list pim_regv6_acl
PIM Accept-RP

PIM Accept-RP는 PIM Sparse Mode 도메인에서 원치 않는 랑데부 지점(RP)을 방지합니다.

기본적으로 RP는 224.0.0.0/4 범위(전체 클래스 D 범위)의 모든 멀티캐스트 그룹을 허용하지만, 필요한 경우 원하는 그룹에 대한 PIM Join/Prune 메시지만 허용하도록 라우터를 구성할 수 있습니다.

switch(config)# access-list ip pim_rp_grp_acl
switch(config-acl-ip)# 10 permit any any 225.1.1.2/255.255.255.0
switch(config-acl-ip)# 20 permit any any 239.1.1.2/255.255.255.0
switch(config)-acl-ip# router pim
switch(config-pim)# accept-rp 30.1.1.1 access-list pim_rp_grp_acl
switch(config-pim)# access-list ip pim_rpv6_grp_acl
switch(config-acl-ipv6)# 10 permit any any ff2e::2/64
switch(config-acl-ipv6)# 20 permit any any ff1e::1/64
switch(config-acl-ipv6)# router pim6
switch(config-pim6)# accept-rp 30::1 access-list pim_rpv6_grp_acl
PIM SSM(Source-Specific Multicast)

PIM-SSM는 멀티캐스트 수신기가 지정된 소스 주소에서 트래픽을 수신할 수 있도록 PIM Sparse 모드와 IGMP 버전 3(IGMPv3)/MLD 버전 2(MLDv2)의 하위 집합을 사용합니다.

기본 PIM SSM 그룹 범위는 IPv4 – 232.0.0.0/8 및 IPv6 – FF3x::/32입니다.
범위 액세스 목록을 사용하면 PIM 라우터에서 기본 SSM 범위를 수정할 수 있습니다.

  • PIM-SSM 범위를 지정하는 데 사용되는 ACL에서 ACE는 대상 IP 필드에 멀티캐스트 그룹 주소만 포함해야 하며, 그렇지 않으면 ACE가 무시됩니다.
  • PIM-SSM 범위를 수정하면 PIM이 상태를 재구성할 때까지 일시적인 트래픽 손실이 발생할 수 있습니다.
  • 네트워크 전체에서 SSM 범위를 동일하게 유지하는 것이 좋습니다.
switch(config)# access-list ip pim_ssm_grp_range_acl
switch(config-acl-ip)# 10 permit any any 225.1.1.2/255.255.255.0
switch(config-acl-ip)# 20 permit any any 239.1.1.2/255.255.255.0
switch(config)# router pim
switch(config-pim)# pim-ssm range-access-list pim_ssm_grp_range_acl
switch(config)# access-list ipv6 pim_ssm_v6grp_range_acl
switch(config-acl-ipv6)# 10 permit any any ff2e::2/64
switch(config-acl-ipv6)# 20 permit any any ff1e::1/64
switch(config)# router pim6
switch(config-pim6)# pim-ssm range-access-list pim_ssm_v6grp_range_acl
MSDP(Multicast Source Discovery Protocol) 보안

MSDP는 여러 PIM-SM도메인을 연결하는 메커니즘입니다.

MSDP를 사용하면 그룹의 멀티캐스트 소스를 서로 다른 도메인의 모든 RP(랑데부 지점)에 알릴 수 있습니다.
RP는 다른 도메인의 멀티캐스트 소스를 검색하기 위해 TCP를 통해 MSDP를 실행합니다. MSDP의 주요 장점은 PIM-SM 도메인이 공통 공유 트리 대신 도메인 간 소스 트리를 사용하도록 허용하여 여러 PIM-SM 도메인 상호 연결의 복잡성을 줄인다는 것입니다.

MSDP 보안을 강화하려면 두 MSDP 피어 모두에 대해 MD5 인증을 사용하도록 설정하여 TCP 연결을 설정해야 합니다.
MD5 인증에 실패하면 TCP 연결을 설정할 수 없습니다.

switch(config)# router msdp
switch(config-msdp)# ip msdp peer 10.1.1.1
switch(config-msdp-peer)#
switch(config-msdp-peer)# password
Enter the MD5 password: ********
Re-Enter the MD5 password: ********

MSDP는 PIM Sparse 도메인의 RP(랑데부 지점)에 대해 S,G(소스 그룹) 정보가 포함된 SA(소스 활성) 메시지를 사용합니다.

기본적으로 MSDP가 활성화된 라우터는 모든 SA 메시지를 전달하고 피어 라우터는 수신된 모든 메시지를 처리합니다.
이 명령을 사용하면 사용자가 MSDP 피어에서 SA 메시지를 필터링하도록 ACL을 구성할 수 있습니다.
사용자는 ACL을 사용하여 수신 및 발신 필터 목록을 생성하여 MSDP 라우터에서 수신 및 발신 SA 메시지를 차단할 수 있습니다.

switch(config-msdp-peer)# sa-filter in access-list msdp_sa_filter1
switch(config-msdp-peer)# sa-filter out access-list msdp_sa_filter2

신뢰할 수 있는 공급망(Supply Chain)

HPE는 ICT(정보통신 기술) 업계에서 공급망의 사이버 보안을 선도하는 기업입니다.

데이터 및 리소스에 액세스할 수 있는 파트너 또는 기술 공급업체를 통해 시스템에 침투하는 악의적인 공격자로 인한 공급망 공격이 증가하고 있습니다. 사이버 보안 위협이 진화함에 따라 HPE는 공급망 내 사이버 보안 위험을 지속적으로 식별 및 완화하고 안전한 제품을 제공하여 고객이 비즈니스 목표에 집중할 수 있도록 지원합니다.

다음은 AOS-CX 스위치 관점에서 봤을 때, 안전하게 제품 공급을 위해서 필요한 스위치 보안 가이드입니다.

  • Enhanced Secure Mode로 스위치 부팅
  • USB 포트는 사용하지 않을 경우 비활성화 하기
  • 다음 명령어를 사용하여 모든 물리 인터페이스와 OOBM 포트를 비활성화 하기
switch(config)# interface <physical interface range>
switch(config)# disable
switch(config)# exit
switch(config)# interface mgmt
switch(config)# shutdown
switch(config)# exit
  • 다음 명령을 사용하여 활성화된 모든 VRF에서 원격 관리 프로토콜(https-server, SSH, SNMP)을 비활성화
    – 콘솔을 통해서만 접속하여 스위치 구성
switch(config)# no ssh server vrf <vrf-name>
switch(config)# no https-server vrf <vrf-name>
switch(config)# no snmp-server vrf <vrf-name>
  • 강력한 조합으로 패스워드 복잡성 설정
  • ServiceOS 패스워드 프롬프트를 사용 설정
  • 다음 명령을 사용하여 Central 클라이언트를 비활성화
switch(config)# aruba-central
switch(config-aruba-central)# disable
switch(config-aruba-central)# exit
  • NDcPP가 승인한 SSH 알고리즘만 사용하도록 설정

이렇게 두 개의 포스팅을 통해 AOS-CX 스위치의 보안을 강화하기 위한 몇 가지 명령어들을 살펴보았습니다.
점점 네트워크를 통한 공격이 고도화되고 치밀해지고 있는 만큼 스위치에 대한 보안 설정이 더욱 중요해지고 있는 시점입니다.

몇 가지 간단한 설정만으로도 많은 공격과 침해사고를 막을 수 있는 만큼, 스위치 초기 설정시 참고하여 구성하면 좋겠습니다.

Leave a Reply

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.