기초 물방울/네트워크

킹오브랜스위칭 공부기록 #8 (STP 공격차단)

Weeding 2023. 1. 4. 08:13
반응형
SMALL

STP 공격차단

 

1. BPDU Guard

 

 

위 그림에서 (선이 연결되있다 가정) SW3에 접속된 공격자가 SW1의 PC와 SW2의 서버간의 통신을 해킹하려고 하는 경우를 가정하겠습니다.

 

SW1이 root 스위치이므로 PC와 서버간의 트래픽을 공격자가 접속되어 있는 SW3을 거치지 않습니다.

따라서, 해커가 트래픽을 끌고와서 트래픽이 SW3을 통과하게 하려면 공격자 PC가 root스위치 처럼 동작하면 됩니다.

그러면, STP가 SW1과 SW2간의 링크를 차단하고 트래픽은 모두 SW3을 통과하게 되죠.

 

이를 위해 공격자는 자신의 PC를 root 스위치인 것처럼 위장한 BPDU를 전송하는 공격도구를 사용하면 됩니다.

우선순위가 0이고 MAC주소의 번호가 아주 낮은 BPDU를 전송하면 모든 스위치들은 이를 수신하여 공격자 PC를 root 스위치로 인식하게 되죠.

 

공격자가 SW3의 MAC 주소 테이블을 채우는 MAC 플러딩 공격을 추가적으로 사용하면 PC와 서버간의 트래픽은 공격자의 PC로 넘어옵니다.

 

이처럼, PC와 같은 종단장치가 접속된 포트에서 BPDU를 수신하지 못하게 하는 것이 BPDU guard입니다.

 

기본적으로 BPDU guard는 포트를 통해 BPDU를 수신했을 때 해당 포트를 자동으로 셧다운시키고, 인터페이스에 shut 명령어를 사용한 후 다시 no shut 명령어를 사용해야만 포트가 살아납니다.

 

 

전체 설정모드

spanning-tree portfast bpduguard default

 

 

특정 포트에 설정

spanning-tree bpduguard enable

 

 

죽은 인터페이스를 다시 한번 셧다운 시키고 활성화 시킨 뒤에,

BPDU guard 등에 의해 비활성화된 인터페이스를 원인 제거후 자동으로 활성화시키려면 아래 명령어를 사용합니다.

errdisable recovery cause bpduguard

 

명령어 적용 후 300초후에 자동으로 셧다운된 포트가 살아나지만, 시간을 조정하고 싶다면 아래 명령어를 사용합니다.

errdisable recovery interval 30

 

 

 

 

2. root guard

 

SW1과 SW2가 통신회사 소속이고, SW3이 고객의 스위치라면 통신회사에서는 SW3을 제어하기 어렵습니다.

이 경우, SW3에서 수신하는 BPDU를 차단하면 경우에 따라 스위치간의 통신이 되지 않으므로 곤란합니다.

이 때 루트 가드 기능을 사용하면 됩니다.

 

루트 가드란 특정 포트에 접속된 네트워크에 있는 스위치들은 루트 스위치가 될 수 없도록 하는 기능입니다.

루트 가드가 설정된 포트에서 현재의 루트 스위치 ID보다 더 우선하는 루트 스위치 ID를 가진 BPDU를 수신하면 해당 포트를 다운시킵니다. 

 

즉, 이미 구성되어 있는 망에, 추가로 스위치가 붙었을 경우에 STP 토폴로지의 변화를 막는 기술인것입니다.

 

SW1(config-if)#spanning-tree guard root
*Jan  3 08:21:01.496: %SPANTREE-2-ROOTGUARD_CONFIG_CHANGE: Root guard enabled on port Ethernet0/0.

 

SW1 - SW2 에서 SW2를 루트 스위치로 변경시 (priority 값 조정)

SW1에서 다음과 같이 e0/0 포트를 루트가드가 차단했다는 메시지가 표시됩니다.

SW1#
*Jan  3 08:21:24.237: %SPANTREE-2-ROOTGUARD_BLOCK: Root guard blocking port Ethernet0/0 on VLAN0001.

 

 

SW2에서 다시 STP 우선순위를 조정해주면 (SW1을 root 스위치로 변경)

아래와 같이 루트 가드가 해제하는 메시지가 뜬다.

이후 STP의 각 상태변화를 거친후 전송상태로 변경된다.

SW1#
*Jan  3 08:25:20.682: %SPANTREE-2-ROOTGUARD_UNBLOCK: Root guard unblocking port Ethernet0/0 on VLAN0001.

 

 

 

3. Loop Guard

위의 그림과 같이 회선의 과부하나, 잘못된 BPDU 필터링, ACL 장애 및 적용 등으로 인해 C가 BPDU를 B로부터 받지 못한 경우, 문제가 있다고 판단하여 차단 포트(AP)를 전송 포트(DP)로 변경하고 BPDU를 전송하게 됩니다.

 

그렇게 되면 브로드캐스트 프레임이 나갈 경로가 양 방향으로 생겨 양쪽으로 프레임을 다 뿌려주기 때문에 루프가 발생하게 됩니다. 따라서, 이를 방지하기 위해서 차단포트(AP), 즉 Block되있는 링크에 BPDU가 들어오지 않더라도, DP 상태로 바꾸어 포워딩 하지 않는 기능을 Loop Guard라고 합니다.

 

 

전체 설정 모드

spanning-tree loopguard default

 

인터페이스 모드

spanning-tree guard loop

 

확인 명령어

sh spanning-tree summary

 

 

 

 

 

 

반응형
LIST