‘컴맹’이라도 뉴스에서 한 번쯤 들어봤을 용어, 디도스(DDoS, 여러 대의 컴퓨터를 일제히 동작하게 해 특정 사이트를 공격하는 해킹 방식). 은행이 털리고 방송국이 털렸다고 난리를 치는 마당에 게임사라고 안전할까? 뉴스에 나오지만 않을 뿐, 게임사를 겨냥한 디도스 공격은 상당하다. 넥슨 아메리카만 하더라도 기가 단위 디도스 공격은 매달, 100MB 이하의 소규모 디도스 공격은 매일 발생하는 형국이다.
이처럼 디도스 공격이 난무하는 가운데 게임업계 보안담당자들의 여건은 좋지 않다. 당장 국내에는 디도스 공격에 대한 교본이나 서적이 없는 상태이며, 그나마 한국인터넷진흥원(이하 KISA)이 주최하는 보안 컨퍼런스에서도 디도스 이야기는 웹서버 일변도다. 게임업계 보안담당자 입장에서는 붙잡을 지푸라기도 없는 상황이다.
이런 가운데 넥슨 아메리카의 강병탁 정보보안팀장이 24일 ‘넥슨 개발자 컨퍼런스’(NDC)에서 게임서버에 가해지는 디도스 공격에 대한 대처법을 공유했다. 매달 쏟아지는 기가 단위의 디도스 공격을 버텨낸 그의 노하우를 들어 보자. /디스이즈게임 김승현 기자
넥슨 아메리카 강병탁 정보보안팀장
■ 장비구매도, 해킹대응도 알아야 할 수 있다
“디도스 공격에 가장 잘 대응하는 방법이 뭔지 아십니까? 시간만 고려한다면 돈 주고 좋은 장비를 사는 것이 최고입니다. 하지만 디도스 공격 자체를 모른다면 돈은 돈대로 쓰고 방어는 방어대로 못하는 꼴이 부지기수죠. 이는 항상 예산이 부족한 대부분의 게임 관련 보안담당자도 마찬가지입니다. 오히려 예산이 없기에 상대를 더더욱 잘 알아야 하죠.”
강병탁 팀장은 디도스 공격 구조 파악에 대한 중요성을 강조하며 강연을 시작했다. 디도스 공격을 알아보려면 먼저 게임서버의 구조부터 알아야 한다. 일반적으로 게임서버는 서로 다른 네트워크를 중계하는 ‘라우터’와 위험한 데이터를 걸러주는 ‘방화벽’, 그리고 게임이 실행되는 ‘퍼블릭서버’와 각종 데이터를 저장하는 ‘DB서버’로 구성된다.
디도스 공격은 크게 라우터와 방화벽을 공격하는 트래픽 공격과, 퍼블릭서버나 DB서버를 공격하는 익스플로잇 공격 2가지로 나뉜다. 똑같이 디도스라고는 하지만 두 공격은 공격 방식은 물론 증상, 대응방식도 다르다.
트래픽 공격은 라우터나 방화벽에 대용량 트래픽을 투하해 서버에 대한 접근 자체를 틀어막는 공격이다. 가장 전형적인 방식의 디도스 공격이라고 할 수 있다. 익스플로잇 공격은 게임데이터로 위장한 패킷을 퍼블릭서버나 DB서버에 보내 내부에서 기능 오류를 일으키는 방식이다. 만약 퍼블릭서버에 문제가 생기면 해당 서버의 접속이 불가능해지고, DB서버에 문제가 생기면 연휴 기차표를 예약받는 철도청 홈페이지 구매 버튼처럼 DB서버가 필요한 작업이 무한대기 상태에 처하게 된다.
두 공격은 각기 공격방식과 대상이 다르기에 이에 대한 대응법도 달라진다. 일례로 아무리 철통 같은 방화벽을 마련했다 하더라도 게임데이터로 위장한 익스플로잇 공격은 막을 수 없다. 때문에 게임업계 보안담당자는 디도스 공격이 어떤 방식으로 어디에 들어왔는지 파악하는 것이 무엇보다도 중요하다. 그러기 위해 가장 좋은 방법은 라우터 – 방화벽 – 퍼블릭서버 - DB서버로 구성된 게임서버를 부분별로 모니터링하는 것이다.
■ 기가급 트래픽 폭격을 버텨라, 트래픽 공격
그렇다면 만약 라우터나 방화벽에 기가급 트래픽 공격이 감행되는 것을 파악했다면 어떻게 해야 할까? 강 팀장은 먼저 정석적인 방법대로 불필요한 포트를 막아 라우터나 방화벽에 트래픽이 접근하는 길을 줄일 것을 권했다.
물론 이는 게임사에게 결코 쉬운 방법이 아니다. 웹서버와 달리 게임서버는 그 특성상 수많은 포트를 사용하기 마련이다. 만약 이에 더해 개발 중 미처 닫지 못한 포트가 있다거나, 관리자가 포트를 제대로 파악하지 못하고 있다면, 그 때는 말 그대로 ‘지옥문’이 열린다. 게임사도 파악하지 못한 샛길로 기가급 트래픽이 사정없이 쏟아지기 때문이다.
강 팀장은 이를 예방하기 위해 보안 담당자들이 사전에 어떤 게임이 어떤 포트를 사용하는지 체크해 놓을 것을 주문했다. 각 게임 서비스 담당자에게 사용하고 있는 포트 리스트를 받은 후 일일이 이를 대조하고, 용도가 불명확한 포트를 체크하는 것이다. 시간은 그만큼 오래 걸리겠지만, 사방에서 몰려드는 트래픽 공격을 감당하는 것보다는 값싼 비용이다.
이렇게 모든 포트가 파악되면 트래픽 공격이 시작돼도 수월하게 막을 수 있다. 최소한 모르는 포트로 기습당할 일은 없어진 셈이고, 사용 중인 포트로 오는 트래픽은 방화벽 차원에서 로그분석과 패킷분석을 통해 불필요한 트래픽을 차단할 수 있기 때문이다. 물론 대부분의 해킹은 가상 IP를 통해 들어오기 마련이지만, 사람이 만든 알고리즘인 이상 특정한 패턴은 존재하기 마련이다.
그렇다면 만약 방화벽도 감당하지 못할 정도의 트래픽 폭격이 시작된다면 어떻게 해야 할까? 방화벽이 무너지고 서버가 쓰러지는 사태를 지켜봐야 할까? 강 팀장은 이에 대해 “감당하지 못할 공격은 비껴가는 것도 방법”이라고 조언했다.
현재 한국에서는 KT나 KISA 등에서 디도스 공격을 대신 막아주는 서비스를 제공하고 있다. 업체에서 서버를 모니터링하다가 트래픽 공격으로 의심되는 징후를 발견하면 해당 트래픽을 KT나 KISA로 돌리는 것이 주요 메커니즘이다. 이 경우 게임사는 방화벽의 부하를 걱정하지 않고 서비스를 계속할 수 있다는 장점이 있다. 다만 문제는 웹서버와 게임서버의 차이에서 오는 ‘오진’의 가능성이다.
이러한 오진이 걱정된다면 게임사 자체적으로 라우터에 할당된 대역폭을 제어하는 것도 한 방법이다. 평소 접속자 수가 1만 명인데 특별한 일 없이 갑자기 10만 명의 유저 모이면 누구라도 이를 의심할 수 있다. 대역폭 제어도 이처럼 라우터가 처리할 수 있는 트래픽 양에 상한선을 둠으로써 방화벽에 가해지는 부담을 줄이는 방식이다.
다만 이 경우 게임의 피크타임 등에 대한 상세한 데이터가 갖춰져 있지 않으면 자칫 멀쩡한 유저의 접속을 게임사 스스로 막는 셀프 디도스(?)가 발생할 수도 있다. 때문에 강 팀장은 라우터에 할당된 대역폭을 제한할 경우 네트워크 엔지니어나 보안팀 외에도, 반드시 게임 서비스 실무자를 참석시켜 심도 있게 논의해야 한다고 강조했다.
■ 정상 데이터로 위장한 해킹 코드를 찾아라, 익스플로잇 공격
게임 데이터로 위장해 서버의 취약점을 공격하는 익스플로잇 공격은 보안담당자로선 상대하기 까다로운 디도스 공격이다. 익스플로잇 공격은 트래픽 공격의 미칠듯한 패킷량처럼 눈에 띄는 표시가 없어 공격의 시작을 알아차리는 것부터 힘들다.
익스플로잇 공격을 가장 쉽게 알아보는 방법은 특별한 이유 없이 동시접속자 수가 급격히 줄어드는 것이다. 트래픽 폭주나 별다른 이슈 없이 동시접속자 수가 급감한다면 이는 십중팔구 퍼블릭서버에 문제가 생긴 것이다. 이 경우 퍼블릭서버의 취약점을 공격해 이상을 일으키는 익스플로잇 공격을 의심할 수 있다. 이외에도 DB서버가 공격을 당해 특정행동을 할 때 대기시간이 무한히 길어지는 등의 증상도 있는데, 이는 게임을 지속적으로 모니터링해야만 알 수 있다.
공격을 감지했다고 해서 해결 또한 쉽다는 보장은 없다. 익스플로잇 공격은 게임데이터로 위장한 해킹코드에서 비롯되기 때문이다. 게임데이터의 탈을 썼기에 보안장비의 도움은 받을 수 없다. 오로지 수동으로 의심되는 데이터를 분석하는 것만이 최선이다.
이러한 대응의 어려움 때문에 강 팀장의 꿈은 익스플로잇 공격 코드를 찾을 수 있는 보안장비다. 이론상으로 불가능한 것은 아니나 아직 실현된 예가 없기에 안타까움은 더욱 크다. 그는 청중에게 이러한 보안장비의 필요 알고리즘을 이야기하며 게임서버에 특화된 보안장비의 필요성을 호소했다.
강 팀장은 “중요한 것은 게임이 아무에게나 뚫리지 않는다는 것을 유저에게 각인시키는 것이다. 만약 오픈소스 해킹툴이 먹힌다는 정보가 퍼진다면 보안팀이 손쓸 틈도 없이 게임은 만신창이가 된다. 때문에 보안 담당자는 사전에 최대한 많은 오픈소스 해킹툴을 확보해, 이를 바탕으로 철저한 대비태세를 갖추는 것이 중요하다”며 강연을 마쳤다.