안녕하세요. 윤석찬입니다.

이번에 발생한 소위 인터넷 대란을 겪으면서 불합리성의 대명사인 KT의 시스템을 다시 한번 확인하게 되었습니다. 저희 회사의 모든 서버들은 목동 KTIDC내에 위치하고 있습니다. 25일 오후 2시 경 부터 발생한 KT 기간 백본망의 네트웍 이상으로 인해 저희 회사의 서버들의 서비스들이 운영되지 못했습니다. 서버가 다운된 것이 아니라 네트웍에 비정상적인 과도한 패킷때문에 네트웍이 다운 된 것입니다. 이는 마치 고속도로에 차가 너무 많아서 트래픽 잼이 있어나는 것과 같은 현상입니다.

KT는 이 사고가 일어나자 마자 혜화전화국의 DNS서버가 중단 되었으며, 이는 1시간 만에 복구했다고 했습니다. 그러나, 인터넷 불통 사고는 전국 네트웍으로 번졌고 11시간이 넘어서야 간신히 원인과 복구가 어느정도 이루어졌습니다. 아시다 시피 원인은 MSSQL서버의 취약성을 이용한 웜바이러스 였습니다.

이번 웜바이러스는 MSSQL서버의 1434포트의 취약성을 틈타 무작위로 서버의 인터넷주소(IP)를 선정해 초당 1MB이상 큰 용량의 패킷을 취약점이 있는 또 다른 SQL서버에 보내 서버에 부하를 일으켜 시스템을 다운시킨다고 알려져 있습니다. 이러한 데이터가 마구 생성되면 네트웍의 트래픽이 급격히 늘어나고, 어떤 MSSQL서버의 경우 100Mbps가 넘는 트래픽도 유발했다고 합니다.

KT는 사건 최초 발생 당시 DNS서버가 다운되었다고 했다가, 나중에는 서버가 다운된 것이 아니라 네트웍의 트래픽이 과다해서 운영이 되지 않았던 것 처럼 말을 바꾸었습니다.

원래 DNS(Domain Name Server)는 53번의 UDP포트를 이용하고 대체로 53번 포트 이외에는 열지 않기 때문에, 외부의 감염된 MSSQL서버가 특정 DNS를 집중 공격했다는 것은 맞지 않는 말입니다. 만약 MSSQL서버들이 DNS를 공격하기 위해 53번 포트로 dns request를 생성했다 하더라도 이 query는 DNS가 분산 DB인 관계로 서버 구조상 해외의 상위 root server에도 영향을 주기 때문에, 우리 나라만 그것도 특정 ISP의 DNS만 당한다는 것은 있을 수가 없습니다. 뿐만 아니라 기간망의 DNS서버들이 모두 침입탐지시스템(IDS)이나 방화벽 내에 있기 때문에, 외부에서 막혀진 포트로 그런 공격이 오더라도 대부분 막아내게 됩니다.

그러나, 공격을 당했다는 것은 KT의 DNS서버 방화벽에 분명히 DB접속을 위해 1434번 포트가 열려 있었다는 것이고, 공격을 당한 MSSQL서버가 또한 보안패치가 되어 있지 않았다는 것을 반증합니다. 만약 그렇지 않다면 KT 내부에서 누군가가 외부를 공격했던지, KT 내부에 방화벽이 없었다는 결론이 나옵니다. 어떤 결론이든 KT가 책임질 수밖에 없는 상황이라고 보여집니다.

이 문제 때문에 지난 27일 기자들과 계속 통화해 본 결과, KT는 DNS의 DB를 MSSQL을 썼다는 것을 부인하고, 유닉스와 오라클을 쓴다고 발표 했으면서도, 혜화전화국 DNS 담당자와 IDS를 담당한 윈스테크는 서버의 1434포트를 열어 놓았다고 합니다.1434는 통상 MSSQL의 모니터 포트이므로, MSSQL을 쓰지도 않고 OS도 윈도우2000이 아니면서 1434를 열어 두었다는 것은 이상한 일입니다. 또한, KT는 혜화 전화국 DNS서버에 방화벽도 두지 않았다고 합니다. 따라서, KT는 방화벽도 없었고, MSSQL 모니터 포트인 1434까지 열어놨으니 화를 자초한 셈입니다.

따라서, KT의 발표대로 처음 DNS 서버가 다운되었다는 것은 사실은 DNS 서버 운용 네트웍 내에 MSSQL을 사용했다는 점과 이 서버들이 웜에 대한 패치가 되지 않았으며, 실제로 이 서버들이 다른 MSSQL서버들을 공격했을 것이라는 당연한 귀결이 나옵니다.

KT 기간망 내의 발생된 엄청난 패킷은 백본을 다운 시키게 되고, 인터넷 속도를 느려지게 만듭니다. 그러면 다른 ISP 로 부터의 접속 역시 정체되어 속도가 같이 느려지게 되겠지요. 실제로 저희 회사의 서버가 KT-IDC에 있었는데, 몇시간 동안 네트웍 다운 현상이 있었습니다. 그에 비해 KIDC 등 타 IDC서버들은 정상적으로 작동했던 것으로 보입니다. KT가 원인규명을 못하고 DNS서버를 복구시키려고 노력하고 있을때 이미 DNS서버의 DB서버들이 KT내와 타 ISP의 MSSQL서버들을 공격하고 있었을 것이고, 결국 전국적인 네트웍 다운을 만들 수밖에 없었을 것으로 추측됩니다.

물론 우리나라 개발자들의 MS제품 의존도가 매우 높고, 전자상거래와 인터넷 서비스에서 MSSQL이 보편적인 DB시스템인데다가 대부분 DB서버를 로컬 네트웍에 두지 않고, 개발 편의를 위해 인터넷에 개방한다는 점 그리고 보안 의식이 취약하다는 점 모두가 이 사고를 발생시킨 원인이며, 이는 결국 우리나라 보안 의식의 취약점을 반증한다고 볼수 있습니다.

보라넷을 쓰고 회사내에 MSSQL서버가 없는데다 유닉스 기반의 DNS서버를 자체로 운영하는 저희 회사는 며칠 동안 단절현상은 커녕 비이상적인 패킷이 유입되지도 않았습니다. 저희 회사에서 여러 네트웍으로 ping(데이터 정상여부 검증도구)을 이용하여 본 결과, KT이외 망은 토요일 3시 이전까지 별 이상이 없었습니다.

이 내용은 그동안의 개인적인 경험과 그 당시 상황을 비추어 만든 제 개인적인 판단입니다.

/IT클럽 리포터 윤석찬 channy@nine4u.com