IT

마그마그 2009. 4. 15. 17:40

서버와 네트웍을 관리하고 있는 입장에서 항상 문제가 되는  Ddos(분산서비스거부공격)

 

결론부터 말하자면 막을수는 있다.

 

다만 막을수 있다는데는

 - 서비스의 지속여부

 - 해당기능 가능 장비의 존재여부

 - 관리자의 신속한 대처능력

 - 사용자의 시스템에 대한 이해

 - 충분한 비용투자

등이 선결되었을때 가능하다

 

한번더 요약하면

  1. 대용량백본

  2. DDos 장비(탐지/우회/거부)

  3. 관리자대처

 

물론 말장난 같지만 이모든것이 다 준비되었다고 해도 100% 가능한것은 아니며

위의 부분중 일부가 빠져있어도 어떻게 어떻게 조치는 가능하다. 

 

 

 

일단 어떻게 공격이 벌어지는가에 대해서 간단히 정리해보자

어찌되었든 장비(또는 네트웍)가 장비(또는 네트웍)를공격하는 것을 Ddos 라고 하는데

 

1. 감염된 개인PC

2. 감염된 PC방의 PC

3. 감염된 회사의 PC

4. 감염된 데이터센터내의 서버

5. 감염되거나 패치되지 못한 네트웍장비

 

예전에 한일간의 사이버전쟁이 벌어졌던 사실을 알고 있는간(독도때문이었던것 같던데)

그때 인터넷에서 매일 나왔던 말이 특정한 망언을 한 어떤 단체의 홈페이지에 대해서

주소(또는 ip)를 공개하고

"몇월몇일 모시모분에 각자 우루루 달려들어서 홈페이지에 접속하고 F5 키를 눌러서 웹페이지를 계속불러들이자"

라는  말이 넷상에 떳었고 상당히 많은 분들이 동참해서 공격이 가능하게 되었다.

 

물론 초기엔 사이트의 접속이 느려지는등의 효과가 분명히 있었다고 판단되지만

이경우 대부분 한글을 쓰는 브라우저에서 한국의 아이피들이 일본이라는 특정국가의

특정아이피 대역을 클릭(이건 공격이라고 보기 참 민망하다)하는 것이었으므로

해당 데이터센터의 네트웍관리자가 조금 신경써서 한국으로 부터 오는 아이피 대역자체를

통째로 막아버리면 그쪽기준으로는 문제가 해결되버리는 것이었다.

어차피 해당사이트는 한국쪽에서 오는 손님(?) 들은 별로 반갑지 않을테니깐...

(물론 이때도 일본쪽의 IX 단에서는 한국에서오는 패킷에 대해 비교/대조하는 작업을 하고 Drop 시키는

일련의 과정들을 행하므로 장비단에서 약간의 부하를 발생하겠지만 패킷을 통과하면서 발생하는

부하에 비교할 바는 아니다.) 

 

그렇게 공격이 실패하고 내머리가 기억하는한 더이상의 공격은 없었다.

 

그럼 똑같이 우리가 당하는 경우에도 적용을 하면 되지 않는가 하는 의문이 고개을 든다.

 

근데 이게 좀 다르다...

 

그때는 엄연히 국가와 국가간의 네트웍망이 다른 상태에서 한국가가 다른 국가에 대해서

공격을 했고. 국가간의 국제망 연동은 사실상 몇개의 노드밖에 없는것이라 제어가 매우 간단했다.

 

실제로 지금 한국에둔 서버에 중국에서 비슷한 형식으로 막는다면 위와같이 IX단이나 대형 라우터에서 처리가능하다.

(여기서 또하나 IP를 변조한 spoofing 공격도 있지 않는가 하는 말이 나올수 있다...좀있다 다루겠다.)

다만 그때의 한국의 경우와 달리 지금의 중국은 한단계 또는 두단계를 더 진행하고 있다.

첫째 공격하려는 대상이 불특정다수가 되어 버렸다.

둘째 공격지점이 또한 불특정한 다수에 대량이 되어 버렸다.

 

전세계적으로 보면 한국도 하나의 거대한 로컬네트웍이의 집합체다.

아니 한국자체가 외국과는 3-4곳의 연결점만 존재하는 로컬네트웍이다.

 

따라서 외부의 네트웍에 대해서는 3-4곳의 연결점에서만 잘해줘도 많은 불편을 해소 할 수 있겠지만

내부의 네트웍은 어쩔것인가?

 

도둑막는다고 아파트입구에 무인카메라, 지문인식기, 경비아저씨 등등등 보안조치를 무진장 해두었지만

같은 아파트에 사는 옆집주민이 정작 도둑이 었다면....

 

지금의 Ddos 공격의 요지는 이런식이다..

 

어떠한 외부네트웍에서의 공격도 심하지만 이건 나름대로 정책적인 대책이 가능한 문제인반면에

내부의 공격에 대해서는 대책이 매우 어렵다...이게 Ddos 가 막기 어려운 근본적인 이유다.

 

 

그렇다고 손가락을 빨고만 있을것인가?

 

최소한 어찌 공격을 받는지는 알아야 하지 않을까?

 

지금까지의 나름대로 똘똘하신분들의 연구 결과로는 현재시점(2009년5월경)에서의

한국에 가해지고 있는 대부분의 공격이 중국봇넷으로부터 발생한것이라고 파악한다고 한다.

(관련뉴스링크 : http://www.boannews.com/media/view.asp?idx=16089&kind=1)

자신의 PC 가 감염되었는지 안되었는지는 아래의 사이트에서 간단하게나마 확인이 가능하다.

(관련링크 : http://www.boho.or.kr/pccheck/pcch_03.jsp?page_id=3)

 

아래의 그림에서 개략적으로나마 어떻게 전파되고 공격되는지 짐작은 가능하리라본다. 

 

 

 

 

그럼 어떻게 막을까?

 

 

크게

간단히 장비하나 추가하는 장비추가방법과

네트웍인프라/인력/장비 정비를 통한 인프라기반 방식이 있다.

 

장비추가하는것은 아래와 같은 조그마한 장비로 가능하다.

(Gigafin)

 

생긴건 멀쩡하게 귀엽게 생겼다.

NetFlow를 통한 트래픽 모니터링 및 제어기능도 지원한다고 하며

이 모든 것은 RDX(Reconfigurable Direct eXcution)라고 하는

기가핀네트웍스가 개발한 고유특허의 Multi-core Chip으로 구현되었다고 한다.

 

120x254x38 짜리로 키보드 절반정도의 크기다.

 

다만 이름상에서 나타나듯이 단방향1G  이상은 지원하지 못할것이고

원래 대역폭 자체가 작은 ISP에서나 적용될 수 있는 방식이다.

1G 이상 넘어가는 공격이 온다면 당연히 먹통될것이며

CC, WEB 등의 Ddos유형에는 대처가 불가능하다고 한다.

 

 

 

장비를 쓰지 않고 호스팅서버(많은 도메인이 들어가있는)에 대한 방법중에는 이런 방법도 있다.

아무래도 일반적인 공격에는 특정한 도메인이 주 타킷이 된다.

그래서 어떤 도메인이 공격받는지 빨리 알아챌수만 있다면

같은 서버에있는 다른 고객은 보호받아야 마땅하므로 해당도메인만

네임서버단에서 어떻게 조치가 가능하다.

 

즉 공격받는 도메인에 대해서 우리쪽에서 네임서버를 걸고 있다면

우리측 네임서버에서 아래의 같은 작업이 가능하다.

 

 

 - 빠른시간안에 회사(당시 호스팅회사) IP대역이 사라지게 하기위해서 아래와 같이 처리를 합니다.

 - 해당 도메인 포워딩 IP가 예를들어 123.123.123.1 이었던것을  zone을 따로 생성하여
127.0.0.1로 만들어 버립니다. TTL값도 300이하로 짧게 설정하고요

 - 오전에 도메인 파악하고 변경을 해두고 핑을 치면 얼마지나지 않아 127.0.0.1로 핑이 나가게 됩니다.

 - 호스팅서버를 공격을 받을때도 별도의 zone 을 생성해서 빠르게 변경하거나 의심가는 도메인들은
따로 빼서 관리를 하기도 했습니다.

 -  IP로 공격을 하지않고 도메인으로 때렸기때문에 방어가 가능했습니다.지금도 대부분의 DDos가 도메인설정을하고 때리는것으로 알고 있습니다.  IP로 바로 때리게 되면 장비가 있어야 되겠죠...

 

 

 

 

다음은 장비와 시스템이 통합된 형태의 방어방법(돈이 젤 많이 드는 방법이다.)

 

아래는 모 호스팅업체에서 가지고 온 이미지이다.(TT라고만 알고있다.)

중간에 라우터와 스위치사이에 Intrugard 라는 장비(?) 가 존재한다.

추측컨데 bridge f/w 이상의 기능을 하는 장비라고 생각되며

L3/L4 의 기능을 일부 담당하여 패킷상에서 발신지/수신지를 읽어내고 로그로 남기고

별도의 Table 에 의해서 정책적으로 문제패킷을 Drop 하거나 Allow 하는것 같다.

 

 

또는 아래와 같은 서비스도 있다.(보안zone 이라고 하는데)

 

 

 

 

 

 

 

핵심은

 - 미리10G 정도의 여유있는 네트웍 라인을 보유한 상태에서

 - cisco 사의 guard & detector 모듈을 라우팅 장비에 설치한상태

 - AhnLab 등에서 관제서비스를 하고

 - 관제된 내용에 따라이상 징후 발생시 rule 또는 관리자에 의해서

 - 네트웍 라인을 우회 또는 null-routing 처리하는것 같다.

   (쓰다보니 실제 적용하는 센터의 이름이 그대로 노출되어 버렸다. 흘)

  

   위의 ISP에서 열거된 주요기능들이

   - 트래픽상태감시(TCP, UDP, HTTP, DNS, SIP)

   - TCP / UDP 안티 스푸핑

   - 다이나믹필터링

   - 봇넷 차단

   이라고 하며 기존의 Firewall 과 IPS,  L7 Switch 가 제대로 막지 못하는 부분에 대해서

   막아낼수 있다(탐지하고 우회시킬수있다.)고 주장한다.

 

 

또다른 핵심은

돈으로 발라버렸다는 것이다.

 

일반적인 메이저 데이타센타에서도 비슷한 기능을 제공하는데

월사용료가 200만원정도되는 실로 어마어마한 금액이다.

(뭐 필요하다면 돈이 문제겠는가마는...)

 

이쯤해서 또다른회사는 또어떻게 막는가를 참고해 볼 수 있다.

 

 

위의 그림은 한비로 라는 호스팅회사에서 사용하는 방식인데

1. 최상위 IDC백본에서 UDP, ICMP 등의 bandwidth Ddos에 대해서 1차 차단

   (UDP, ICMP 차단)

2. 5G 미만의 트래픽에 한정해 10G juniper 라우터에 유입되는 트래픽 2차차단

   (차단종류 : UDP, ICMP,TCP, IGMP 등의 모든 프로토콜 차단)

3. 1G 미만의 트래픽만 IPS시스템에 유입되도록해서 정상적인 트래픽만 고객서버로 전달

   (TCP세부공격차단: flooding attack, cc attack 등의 모든 tcp dos 공격류차단)  

 

과 같이 3단계로 이루어져 있으며

요약하면

  10기가 이상은 상단백본

  5기가 이하는 자체라우터

  1기가 미만은 IPS로

차단이 가능하다는하다는 것이며

 

나름대로 비용과 효율면에서 고민한 흔적이 보인다.

 

다만 마음먹고 덤비고자 하는 일련의 크래커그룹이 해당시스템의

논리적 헛점을 이용하면 충분히 교란은 가능하다..

그래서 여기서도 99% 방어만 내세운다.

 

 

DDos를 당했을때 나타나는 주요 증상은 일반적으로는 아래와 같다.

 

PPS 증가 웹서비스 지연

대용량 트레픽 전송

사용 프로토콜 TCP HTTP 주로 UDP/ICMP
공격 PC 위치 국내/국외 국내/국외 국내
IP 변조 여부 변조/실제 IP 실제 IP 변조/실제 IP
공격 유형 64Byte 이하 100Mbyte
수십만~수백만 PPS
동일 URL 접속 시도 1000byte~1500byte
1GByte
수십만 PPS
공격 효과 네트워크 장비, 보안장비,
서버등의 부하 발생
웹서버 부하 발생 회선 대역폭 초과
피해 시스템 공격대상 시스템 또는 동일
네트워크에서 사용중인
모든 시스템
공격 대상 시스템 동일 네트워크에서
사용중인 모든 시스템

 

공격은 크게 두가지로 나뉘는데

1. Bandwidth Attacks : 대량의 패킷을 전송, 네트웍의 대역폭이나 장비의 리소스를 소진

                                (같은 네트웍단에있는 타장비도 영향받으며 네트웍 공격) 

                                대표적인것으로 packet overflow 공격이 있으며

                                대량의 TCP, UDP, ICMP 패킷을 특정목적지로 보냄

 

2. Application Attacks : TCP와 HTTP 같은 프로토콜을 이용하여 반응이 일어나는 요청패킷을 발송하여

                                 해당시스템의 연산처리 리소스를 소진시켜 서비스 불능상태로 만듬

                                 (같은 네트웍단의 타장비는 비교적 영향이 적으며 시스템/서비스 공격)

                                 대표적인것으로 HTTP half-open attack, HTTP error attack 가 있음

 

 

 

잠깐 용어정리를 하자면 아래와 같이진다.

변종공격

 UDP attacking : 대량의 packet 을 만들어 서버에 과부하 발생, 즉 서버공격

 CC(Cache Control) : HTTP User-agent 헤더에 Cache-Control 값을 비정상적으로 조작하여

                               직접공격대상의 URL을 호출하는 방법, 이건 RFC규약과 실제 서버-클라이언트간의

                               통신상의 차이점을 이용한 공격방법으로 클라이언트가 서버에게 요청시 캐싱을 요청하지 않으면

                               공격당하는 서버가 비정상적으로 동작하여 서비스 불능 상태에 빠질 수 있다. 

                               간단한 쉘스크립팅으로도 공격이 가능하다.                             

 

HTTP Pipeline : 웹서버의 자원을 고갈시키는 방법으로 다수의 HTTP request 를 하나의 소켓에 전송하는 방법으로

                       HTTP 1.1 에서 처음 지원된 기술이다. 원래는 페이지의 로딩시간을 줄일수 있고 전체 네트웍의

                       대역폭을 줄이는 방법으로 사용되었는데 IE7 등은 불필요하다고 판단하여 빼버린 기능이기도 하다.

                       정상적인 요청과 구분이 모호해서 방어하기가 곤란한 방법이기도 하다.

 

PDos(Permanent DoS) : 네트웍기반의 펌웨에를 원격업데이트 할때 그 안에 악성 소프트웨어를 삽입

                                   단순히 서버를 다운시키고 네트웍대역폭을 공격하는게 아니라 네트웍장비 자체를

                                   망가트린다. 무섭다.

 

 

 

 

 

 아래는 일반적인 대응절차에 가까운 체계도이다.

실제적으로 아래와 같은 방식 + 네트웍 대역폭 확충이 관건이다.

 

 

아래는 일명 SOS서비스라고 하는데 특정대역이 공격을 당했을경우

막기보다는 대상 서버를 다른대역폭으로 넘기고 FORWARD 하는 방식이다.

나름 고려해 볼만한 방식이며 네임서버가 다른대역에 있다면 쉽게 적용이 가능할 듯한 부분이다.

 

 

 

 

 

 

 

그럼 감지는 어떻게 할 수가 있나?

 

우리가 흔히 사용하는 MRTG등을 이용해서도 공격에 대한 부분을 감지(?) 정도는 할 수가 있다.

일단 아래의 1번그림은 정상적인 트래픽유형 2번그림은 비정상적인 트래픽 유형이다.

 

1번 (정상)

 

 

2-1번 (비정상트래픽이 순간적으로 발생)

 

2-2번 (비정상적인 트래픽이 일정기간 지속)

 

네트웍에 관한 지식이 거의 없는 관리자라 할지라도 위의 그래프를 보면 뭔가 이상하다는 것을

충분히 감지 할 것이다.

 

2-1의 경우 백업, 파일관리등의 정책적인 면과 고객서버의 경우 특별이벤트 등이 있는지 등에 대한

사전/사후 정보와 일치하면 정상트래픽으로 간주하여도 되지만 그런 정보가 없는 상태에서는

우선적으로 의심을 해봐야 한다.

또한 Inbound/Outbound 의 비율차이가 역전된것에도 주의를 할 필요가 있다.

정상적인 트래픽일경우 Outbound 가 항상 Inbound 보다 많으며 그래프상의 다른 시간대는

당연히 Outbound 가 대부분을 차지한다.

하지만 특정시간대의 Inbound 가 단순비교상으로도 Outbound의 서너배이상으로 올라와버렸다.

이상해도 한참이상하지 않은가?

 

2-2의 경우 역시 사전/사후정보가 있다면 용인될 부분인이겠지만 그런정보가 없다면

제일먼저 의심을 해봐야 하는 유형이다.