Network Security

STP 공격 / 방어

Lute3r 2022. 11. 28. 20:07

 

<STP 공격>

 

[설명]

 

공격자가 Priority를 낮추거나 MAC 주소를 낮춰 공격자 자신이 Root Switch 라는

STP 메세지를 날려 모든 패킷들이 공격자 자신을 지나가도록 하여 스니핑 또는 중간자 공격을 할수있다

 

[공격]

 

Backtrack - # yersinia -G

 

 

 

<STP 방어>

 

1. Root Guard (공격당하면 모든 포트를 블락시키고, 공격이 멈추면 자동으로 모든 포트를 정상 가동한다)

 - Root Switch 를 절대 뺏지기 않겠다.

    Root Switch 를 줄 빠엔 모든 통신을 블락킹 하겠다. (극단적으로 통신을 모두 끊어버림)

    공격이 멈추면 다시 정상 복구 된다

 

[설정]

# interface range ethernet 0/1 - 2

# spanning-tree guard root

 

[확인]

 

# debug spanning-tree event 로 확인

공격이 들어오는것을 확인, 모든 포트를 차단 시킨다

 

Root Switch 권한을 뺏지기 않고 있다

 

# show spanning-tree inconsistentports

현재 공격 당하고 있어서 Root Guard에 의해 차단 된 포트를 확인할수있다

 

 

2. BPDU Guard

(공격당하면 해당 포트만 블락 시키고, 공격이 끝나면 관리자가 sh -> no sh 해 줘야 한다, 추가로 자동 복구 설정 있음)

(BPDU 패킷이 들어와 루트 권한을 뺏으려 할경우 포트를 막아버린다)

 

 - End Devices가 연결된 interface로 BPDU를 수신하게 되는 경우 해당 interface를 'Shutdown' 시킨다

 

   이유는??

   End Devices 포트로 BPDU가 수신되는 경우는 BPDU 관련 공격이거나 인가받지 않는 스위치를 연결한 경우이기 때문이다

 

 - Root Guard와 달리 공격이 중단되도 Shutdown 상태를 유지한다. 다시 활성화 시키기 위해서는 관리자가

    해당 interface에서 'shutdown' -> 'no shutdown' 명령어를 입력한다. (Port-Security와 비슷하다)

 

 - 설정 방법은 2가지 이다

   1) Global Configuration 모드

      (Portfast가 설정된 모든 interface에 자동으로 BPDU가드 활성화)

    => SW(config)# spanning-tree portfast bpduguard default

 

   2) interface 모드

    => # interface ethernet 0/0

        # spanning-tree bpduguard enable

 

[자동 복구 설정]

 

# errdisable recovery cause bpduguard                    // 기본값 300초 마다 복구

# errdisable recovery interval 60                               // 60초 마다 복구 한다고 설정

 

[확인]

 

공격 당하게 되면 자동으로 해당 인터페이스를 down down 시켜버린다.

 

# show interface status err-disable

명령어로 bpduguard 에 의해 블락된 포트를 볼수있다

 

자동 복구 되는 로그 메세지

 


3. BPDU Filter
(BPDU 송 수신을 차단한다, 그래서 공격자체를 못하게 만드는것)

 

 - End Devices가 연결된 포트와 같이 BPDU를 수신할 필요가 없는 경우 BPDU 송수신을 차단 한다

 

 - 스위치 간의 연결에 설정할경우 큰일남

 

 - 설정 방법은 2가지 이다

   1) Global Configuration 모드

      (Portfast가 설정된 모든 interface에 자동으로 BPDU필터 활성화)

      (추후에 스위치를 달아서 BPDU를 수신하는 경우 BPDU 필터가 자동으로 풀린다.)

    => SW(config)# spanning-tree portfast bpdufilter default

 

   2) interface 모드

      (추후 스위치를 달아서 BPDU를 수신해도 BPDU 필터 상태가 유지되어 STP 동작이 안되며, 최악의경우 루프가 돌수있다)

    => # interface ethernet 0/0

        # spanning-tree bpdufilter enable

 

4. Loop Guard

(BLK 포트에 설정, BPDU Filter 설정의 문제점을 보완하는 설정)

(정상적인 포트 끊기는 상황에서는 정상적으로 포워드로 바뀐다)

 

 - BLK 상태의 포트가 상대방 장비에게 BPDU를 수신하지 못하는 경우 FWD 상태로 전환되는 것을 방지한다

 

   이유는??

   상대 장비에게 잘못된 설정(ex. BPDU Filter)이 입력되거나 혹은 장비의 부하때문에 일시적으로 BPDU가

   송신되지 않는 경우가 있다. 이 경우 BLK 포트를 FWD 상태로 전환시키면 Loop가 발생이 된다

 

 - Loop 가드가 설정되어 있어도 직접/간적 링크 단절 시에는 정상적으로 BLK -> FWD 상태로 전환 된다

 

[설정]

 

# interface ethernet 0/3        <--- BLK 포트

# spanning-tree guard loop


[확인]

 

반응형