TECHNOLOGY 18호

Mitigating Network DoS Attacks
서비스 거부(DoS) 공격 완화 방안

역동적인 라우팅 프로토콜을 위해 내장된 보안 기능을 제공하는 IOS
모든 서비스 거부(DoS) 공격이 서버에 과부하를 일으키도록 개발된 것은 아니다. 일부는 네트워크 인프라 자체를 타깃으로 하고 있다. 이러한 유형의 공격은 링크 대역폭을 포화 상태로 만들고 라우터 및 스위치 CPU를 소진시키거나 컨트롤 플레인 트래픽을 스푸핑(spoofing)함으로써 서비스 거부를 실행한다.
링크를 포화시키고 CPU를 소진하는 DoS 공격은 이웃 관계를 유지하는데 필요한 대역폭의 역동적인 라우팅 프로토콜을 거부할 수 있다. 라우터가 이웃을 잃게 되면 해당 라우터의 다운을 인지해 모든 경로를 일시적으로 분출하게 되고 분출된 경로를 다른 대체 경로로 트래픽을 전환하거나 모두 드롭(drop)시키게 된다. 다운된 경로를 뽑아내기 위해서는 새로운 경로를 지속적으로 다시 계산해야 하고 새로운 것으로 업데이트해야 하기 때문에 CPU의 리소스가 결국 소진된다. 그 결과 서비스 거부로 이어지게 된다.
DoS 공격은 컨트롤 플레인 트래픽을 스푸핑, 역동적인 라우팅 프로토콜을 도용해 이웃 관계를 악의적으로 재설정하거나 잘못된 정보로 업데이트해 서비스 거부를 야기시킨다.
여기에서는 Cisco IOS? 소프트웨어에서 이용할 수 있는 툴을 사용해 이러한 공격을 적극적으로 완화할 수 있는 솔루션을 소개해본다.

맨위로

링크 포화/CPU 소진 공격

Cisco IOS는 풍부하며 다양한 QoS 기능을 지원해왔다. 하지만 QoS를 DoS 공격의 완화 방법으로 구현할 수 있다는 것을 알고 있는 고객들은 거의 없다. QoS 기술은 네트워크 가용성과 보안을 유지하는데 절대적으로 필요한 요인이다.
시스코는 특정한 서비스 수준을 요구하는 트래픽을 11개로 분류하고 있는데, 라우팅, 양방향 비디오, 스트리밍 비디오, 미션 크리티컬한 데이터, 콜 시그널링, 트랜잭션 데이터, 네트워크 관리, 벌크(bulk) 데이터, 스캐빈저(scavenger) 등이 이에 해당된다. 이는 기업들이 11계층의 QoS 모델을 구현해야 한다는 의미는 아니다. QoS 설계에서, 적극적인 접근 방법(중요한 트래픽에 대한 강력한 보호)은 사후 대응 방법(악성 트래픽을 규명하고 제압하는 방법)보다 효과적이다. 따라서, DoS 공격으로부터 네트워크를 보호하기 위해 QoS를 도입하는데 있어서의 첫 번째 단계는 음성, 라우팅, 콜 시그널링, 미션 크리티컬 데이터 트래픽을 최소한 확실하게 보호해야 하는 것이다.
RIP, OSPF, EIGRP 등과 같은 내부 게이트웨이 프로토콜은 'PAK_Priority'라 불리는 내부 Cisco IOS 메커니즘에 의해 보호된다. PAK_Priority는 이러한 프로토콜을 우선적으로 처리하라는 DSCP CS6으로 표시하는데, 우선적인 처리는 플랫폼에 따라 약간 다르다. PAK_Priority는 또한 BGP 트래픽을 CS6으로 표시하지만 이 표시를 넘어서서는 우선적인 처리를 요구하지는 않는다. BGP가 도입될 때마다 라우팅 트래픽을 위한 CBWFQ(Class-Based Weighted Fair Queuing)을 확실하게 프로비저닝하는 것이 권고된다. CBWFQ는 프로토콜, 액세스 컨트롤 리스트(ACL), 입력 인터페이스를 포함한 범주와 일치하는지를 토대로 한 사용자 규정의 트래픽을 제공한다.
스캐빈저(scavenger) 계층의 트래픽은 특히 관심이 높은 분야이다. 스캐빈저 계층은 인터넷2 초안을 토대로 하고 있다. KaZaa나 Napster와 같은 비영리의 엔터테인먼트 지향적 애플리케이션과 게임 트래픽은 이러한 서비스 계층에 적합하다. 스캐빈저 트래픽은 보다 중요한 다른 계층들이 적절하게 서비스되는 한 유효하다. 혼잡 시에는 스캐빈저 계층이 가장 먼저 폐기 처분된다.
서비스 사업자 코어에서나 WAN 에지, CE/PE에서 사용될 수 있는 QoS 정책 구성의 사례는 아래에 제시되어 있다. 최상의 시도 계층(클래스 디폴트)에는 스캐빈저 트래픽으로부터 보오하기 위한 '대역폭'에 대한 언급이 포함되어야 한다. 이는 그러한 트래픽이 이미 정확하게 분류되어 있으며 권고된 DSCP 값으로 표시되었다는 것을 전제로 한다.

예 1. 서비스 사업자 코어에서의 DiffServ 또는 WAN 에지, CE/PE를 위한 LLQ/CBWFQ
policy-map EDGE  
class VOICE  
priority percent 33 ! Voice gets 33% LL
class ROUTING
bandwidth percent 3 !Minimal BW guar- antee for Routing traffic
class CALL-SIGNALING
bandwidth percent 3 ! Minimal BW guar- antee for Call-Signaling
class MISSION-CRITICAL-DATA
bandwidth percent 35 ! Mission-Critical class gets 35% BW guarantee
random-detect ! Enables WRED for Mission Critical Data class
class SCAVENGER
bandwidth percent 1 ! Scavenger class will choke first
class class-default
bandwidth percent 25 ! Class-Default gets 25% min BW guarantee
random-detect ! Enables WRED on class-default
!  

위의 모델 정책에서, 음성과 콜 시그널링, 라우팅과 미션 크리티컬한 데이터는 DoS 공격에서 보호될 수 있다. DoS 트래픽은 신뢰 경계가 정확하게 설정되었으며 침해 당하지 않았음을 의미하는 DSCP 0로 표시된다. 따라서, 그러한 정책만으로는 최상의 시도 계층을 제어하도록 하는 쪽으로 DoS의 주요 공격을 제한할 수 있다.
DoS 형태의 트래픽을 규명하고 이를 스캐빈저 트래픽(DSCP CS1)으로 표시한다면 정책은 보다 효과적일 수 있다. 그러한 규명과 표시는 ingress policer에 의해 실행될 수 있는데, ingress policer는 구내 액세스 에지나 서비스 사업자의 진입 에지에 위치한다. 이러한 policer는 정상적인 트래픽이 아무런 외부의 영향 없이 진행되지만 CS1으로 표시된 것처럼 이상하게 보일 경우 밝혀낼 수 있다. 이러한 미심쩍은 트래픽은 policer에 의해 자동으로 폐기되지는 않는데, 합법적인 트래픽일 수도 있기 때문이다. 하지만, 스캐빈저 계층으로 억류되고 링크별로 제한된다. 이러한 방법을 통해 최상의 시도 트래픽은 DoS 공격으로부터 보호될 수 있다.
비이상적으로 많은 양을 가진 트래픽을 스캐빈저 트래픽으로 표시하는 구내 policer의 대표적인 사례는 아래와 같다. 이 경우에 있어서, 10Mbps를 초과하는 트래픽은 Cisco Catalyst? 2950 시리즈 스위치에서CS1(DSCP 8)로 표시된다(주: Catalyst 플랫폼이나 Cisco IOS 소프트웨어 버전에 따라 구문이 다소 다를 수 있지만 기본적인 개념은 동일하다).

예 2. DSCP CS1에 대한 비이상적인 트래픽 양을 표시하는 Catalyst 2950 액세스 스위치 진입 정책 (Scavenger)
policy-map POLICE-DOS-TYPE-TRAFFIC
class class-default
police 10000000 8192 exceed-action dscp 8

보안 정책과 더불어 다양한 보안 형태를 보유하는 것이 좋다. 따라서, 이와 유사한 policer 역시 네트워크의 집선 지점에 도입될 수 있다. '정상적/비정상적' 트래픽 양에 대한 정의는 상황에 따라 다르다. 그러한 정책 수립에 있어서는 트렌드 분석을 도입하는 것을 권고한다.

맨위로

스푸핑 공격에 대한 방어 전략
IP 소스 어드레스 스푸핑은 DoS 공격에 가장 일반적으로 사용되는 기술이다. 하지만 해커들은 또한 라우팅 업데이트와 같이 컨트롤 플레인 트래픽에 대한 스푸핑을 시도하고 있다. 여기에서는 컨트롤 플레인 트래픽의 스푸핑으로부터 보호하는 기술에 대해 알아본다.
컨트롤 플레인 트래픽의 스푸핑은 해커들로 하여금 엔드 호스트를 공격할 수 있는 네트워크 라우팅 토폴로지에 대한 액세스를 제공할 수 있다.

또한 스푸핑이 역동적인 프로토콜의 이웃 관계를 재설정하거나 정확하지 않은 정보가 네트워크로 유입되면 네트워크가 다운될 수도 있다. 컨트롤 플레인 트래픽을 스푸핑하는 것은 어렵지만 불가능하지는 않다. 각 프로토콜은 전송 계층(TCP)을 사용하는데, 자체 일련 번호를 가지고 있으며 정확한 패킷을 수신하고 탐지할 수 있는 인지 기능을 보유하고 있다. 그럼에도 불구하고, 해커가 네트워크에 대한 액세스를 갖고 TCP 패킷을 도용할 수 있는 능력을 갖게 되면 유효한 프로토콜 패킷을 닮은 악의적인 패킷을 보낼 수 있다. 하지만 몇몇 일련 번호 예측 이론은 TCP 일련 번호를 예측할 수 있기 때문에 해커들이 잘못된 패킷을 전송할 수 있게 해준다.
라우터 피어링(peering)을 인증하는 것은 그러한 공격에 대응하여 사용되는 가장 일반적인 기술이다. Cisco IOS는 DoS 공격으로부터 프로토콜을 보호해주는 두 가지 인증 기술을 제공하고 있다. 하나는 확실한 텍스트의 비밀 번호(plain text password)이고 다른 하나는 MD(message digest) 알고리즘 버전 5이다. 두 경우 모두, 신뢰성 있는 피어(peer)를 서로 인증하기 위해 '키'나 비밀번호를 구성한다. 확실한 텍스트 인증의 경우, 네트워크로 키가 전송되는 반면 MD5에서는 실제 키가 아닌 MD가 전송된다. 확실한 텍스트 인증을 지원하는 프로토콜에는 IS-IS, OSPF, RIP버전 2가 포함되며, MD5 인증을 사용하는 프로토콜로는 OSPF, RIP 버전 2, BGP, IP Enhanced IGRP이 대표적이다.

예 3.BGP간의 MD5 구성
router bgp 109
neighbor 145.2.2.2 password v61me0qkel3
BGP 피어 끝에서의 키는 MD5 인증의 것과 같아야 한다.

네트워크 인프라에 대한 DoS 공격은 네트워크 보안을 위협하는 요인으로 확산되고 있다. 위에 기술한 QoS와 인증 방법을 통해 프로토콜을 적극적으로 보호함으로써 해커들보다 한 발 앞서 자사의 네트워크를 보호할 수 있을 것이다.

Cisco IOS 소프트웨어의 내장된 보안 기능에 대한 상세 정보나 다른 구성 사례에 대한 상세 정보는 cisco.com/packet/161_5b2의 "Cisco IOS Security Configuration Guide"에서 제공된다.


맨위로

Packet 지난 호 보기