2021-09-26 15:10 (일)
어나니머스 root DNS 공격 실패할 수밖에 없는 기술적 이유!
상태바
어나니머스 root DNS 공격 실패할 수밖에 없는 기술적 이유!
  • 홍석범
  • 승인 2012.02.25 18:31
이 기사를 공유합니다

홍석범, "그럼에도 불구하고 공격에 대한 대응방안 마련해야"

외신에 따르면 3월말에 Anonymous 에서는 root DNS를 공격하여 전세계 인터넷을 마비시킬 계획을 공표한 바 있다. 물론, Anonymous의 공격 기술력에 대해서는 어느 정도 인정하지만, 기술적인 관점에서 보안 전문가들은 공격 성공여부에 대한 다소의 회의감을 가지고 있다. 본 글에서는 기술적으로 왜 이 공격이 성공하기 어려운지에 대해 기술하도록 하겠다.
 

 1. root DNS는 Anycast 기반의 거대한 Cloud
대부분 root DNS는 13개가 있는 것으로 알려져 있다. 이는 UDP를 사용하는 DNS 프로토콜의 한계로 인한 것으로 13개가 넘으면 TCP로 재질의를 하여야 하기 때문이다. 그러나 그렇다고 해서 root DNS가 13대이거나 13곳의 Location 에만 설치되어 있다는 것을 의미하지는 않는다. 비록 한 root DNS 서버의 IP는 1개이지만 물리적으로는 전세계 네트워크에 흩어져 있기 때문인데 이는 Anycast 라는 네트워크 기술로 가능하기 때문이다. 이를테면, Verisign에서 운영하는 J root 서버는 IP는 1개이지만, 70개의 Location 에 나뉘어 운영되고 있다.

Anycast란, BGP로 운영하는 환경에 있는 각각의 라우터에서 동일한 AS 및 IP 대역을 announce함으로써 유저들이 가장 가까운 라우팅 경로로 접속하게 되는 것으로, 이를테면 한국과 미국에서 각각 1.1.1.0/24 대역을 동시에 Announce 하게 되면 이 IP 대역으로 접속 시도시에 한국 유저들은 한국에 있는 서버로, 미국은 미국에 있는 서버로 접속을 하게 되는 것이다. BGP의 개념이 기본적으로 가장 짧은 라우팅 경로로 찾아가기 때문이다.

물론, 이외의 국가에서는 각각 라우팅 경로를 체크하여 한국과 미국중 가까운 곳을 선택하게 될 것이다. 또한 Anycast에서는 failover의 개념도 있어서 만약 가까운 곳의 경로가 down되었을 경우에는 자동으로 다음 가까운 경로로 접속을 하게 된다. 따라서 전세계에서 하나의 IP를 목표로 DDoS 공격을 한다 할 지라도 이 공격 트래픽은 전세계에 골고루 분산되게 되고, 만약 특정 지역의 네트워크에 과도한 트래픽이 몰려서 다운이 된다면 다음 경로로 자동 우회하여 서비스의 가용성을 확보하게 될 것이다.



www.root-servers.org/ 를 보면 위 그림과 같이 전체 root DNS 서버 현황을 볼 수 있는데 현재 기준으로 총 260 Location에 분포되어 있는 것을 알 수 있는데, 실제 한 Locaiton에 최소 2대 이상으로 Load balance 되어 있을 것이므로 실제 서버수는 260 x N 이라고 할 수 있을 것이다. 참고로, 한국에는 F,J,M 이렇게 3개의 root DNS 서버가 운영되고 있다.
 

2. DDoS 공격 기술의 한계
Anonymous가 밝힌 공격 기술은 Resolving 이 허용된 DNS 서버에 root DNS 서버의 IP가 소스인것처럼 위장하여(spoofing) 특정 질의(query)를 보낸 후 이에 대한 응답이 root DNS에 몰리게 함으로써 트래픽과 부하를 유발시켜 정상적인 요청에 응답하지 못하도록 하는 것으로 소위 "Reflective DNS Amplification DDOS"공격이라고 한다. 그러나 이 공격을 하려면, 소스IP를 위조(spoofing)하여야 하는데, 미국이나 유럽, 일본등의 일부 ISP에서는 egress filtering, uRPF등의 기술을 이용하여 위조된 패킷을 ISP 자체적으로 차단하는 기능을 일부 가지고 있다. 따라서, 위조된 트래픽중 일부는 실제로 공격에 사용되겠지만 일부는 ISP 자체에서 필터링될 가능성이 있어 실제 공격양은 일부 줄어들 것이다. (참고: spoofer.csail.mit.edu/summary.php) 물론, 다른 방식의 공격과 혼합하여 사용한다면 좀 더 파괴력이 있을 수도 있을 것이다.
 

3. DNS 캐싱 및 DNS 자체적인 Failover 알고리즘
DNS는 자체적으로 캐싱(caching)이라는 알고리즘이 있어 한번 질의를 통해 획득한 정보는 일정 기간동안 재질의를 하지 않기 위해 캐싱(positive caching)을 하게 된다. 다행스럽게도 최상위 도메인에 대한 NS 정보의 캐싱시간은 2일로 길게 되어 있어 설사 공격을 받아 서비스에 장애가 발생하더라도 캐싱으로 인하여 당장 모든 서비스가 중단되는등의 큰 영향이 발생하지는 않을 것으로 보인다.

또한 DNS 자체적으로는 Failover 알고리즘이 있어 하나의 DNS 서버에 장애가 발생해도 일정 시간후에는 다른 DNS 서버로 재질의를 하게 될 것이다. 물론, 질의후 응답을 기다리다가 timeout 이후 재질의를 과정에서 응답을 늦게 받으면 접속 속도가 급격히 느려지는 문제를 경험할 수도 있다.
그러나 전체 root DNS에 장애가 없는 한 서비스의 품질에는 영향을 주겠지만 아예 접속이 되지 않는 문제는 쉽게 발생하지 않을 것이다.
 

지금까지 root DNS서버의 Anycast 구성등으로 인한 기술적 대응방안등에 대해 살펴보았다.
그러나, root DNS 서버는 충분한 인프라와 기술력으로 대응하고 있기에 어느정도 공격에 대응이 가능하여 문제가 없을 것으로 판단하고 있으나 그 하단의 국가 도메인부터 가장 하단의 xxx.co.kr 등의 도메인을 관장하는 DNS서버는 여전히 이러한 공격에 대응하기 어려운 구조적인 취약성을 가지고 있다. 따라서 각 조직, 기업들도 추후 만약에 있을 이러한 형태의 공격에 대비하여 적절한 대응방안을 고민해야 할 것이다.
[글. 홍석범 씨디네트웍스 팀장 antihong@gmail.com