원본 : https://www.dota2.com/newsentry/4115798034511159059

디도스 (DDOS) 사태로 LCK 리그는 물론, '리그 오브 레전드' 인터넷 방송까지 몸살을 앓고 있는 가운데, 밸브가 디도스 문제에 어떻게 대응했는지 정리한 글을 게시했다.

6일, '도타 2' 공식 홈페이지에 '라인의 사이에서: 서비스 거부를 거부하다'(Between the Lanes: Denying Denial of Service)라는 글이 올라왔다. '라인의 사이에서'는 밸브가 '도타 2'를 서비스해 오며 겪은 어려움이나 우연한 사건에 대한 내용을 개발팀이 직접 이야기하는 비정기 칼럼이다.

서두에서 밸브는 "인터넷은 우리가 생각하는 것보다 훨씬 거친 개척지"라며 "이중 인증과 신뢰할 수 있는 쿠키라는 안전한 울타리를 벗어나면 악의를 가진 무작위 트롤(악성 유저)로 가득 찬 곳"이라고 했다. 이어 "점점 더 많은 사람이 아무런 이유 없이 다른 사람을 비참하게 만들 수 있는 능력을 갖추고 있다"고 언급했다.

'도타2'가 디도스 공격을 받은 시기는 2014년이다. 밸브는 "디도스 공격의 문제는 데이터 유출을 노리는 슈퍼 해커가 저지르는 것이 아니었단 점에 있다. (디도스 공격을 위해) 서비스나 봇에 돈까지 지불하고, 단순히 그 행위를 원하는 사람들에 의해 자행되고 있었다"고 언급했다.

이유는 여러 가지가 있었다. 순전히 반달리즘(vandalism)을 원하는 사람도 있었지만 다른 동기가 있는 사람도 있었다. '자신이 응원하는 팀이 지고 있는 경기를 중단시키는 가장 확실한 방법'이기 때문이다. 밸브는 "디도스 공격은 더 이상 가끔 발생하는 짜증스러운 일이 아니게 됐다. 플레이어가 경쟁하는 모든 게임에 대한 노골적인 공격으로 바뀌어 갔다"라고 했다.

2015년에는 '도타 2'와 '카운터 스트라이크: 글로벌 오펜시브'에 대한 공격이 크게 증가했으며, 다른 게임사에도 비슷한 피해가 급격히 늘어났다. 밸브는 "누군가 디도스 공격을 누구나 쉽게 수행할 수 있도록 만들었다"라고 했다.

같은 해, '도타 2'의 글로벌 대회 '더 인터네셔널'에서는 더욱 직접적인 피해가 발생했다. 디도스 공격으로 인해 경기를 진행하던 프로게이머는 영향을 받지 않았지만, 2시간 동안 중계 담당자들이 경기를 보며 해설할 수가 없었다. 스트리밍도 중단됐다. 밸브는 "수백만 명이 시청하고, 수백만 달러가 걸린 프로 게임 행사가 5달러짜리 소프트웨어를 가진 불특정 다수에 의해 중단됐다. 무시할 수 없는 문제였다"고 언급했다.

밸브는 여러 해결책을 찾았다. 처음에는 강력한 네트워크 스위치를 통해 트래픽을 필터링하려 시도했으나, 게임 트래픽에는 본질적으로 적용하기 힘들었다. 게임 서버의 특성상 임의의 IP 주소에서 원치 않은 UDP(유저 데이터그램 프로토콜 - 인터넷에서 정보를 주고받을 때, 서로 주고받는 형식이 아닌, 한쪽에서 일방적으로 보내는 방식의 통신 프로토콜) 트래픽을 수신할 수 있기 때문이다.

밸브는 "원하지 않는 메일을 걸러 주는 우체국에서 일을 한다고 가정해 보자. 모르는 사람으로부터 항상 수많은 '정상적인 메일'을 받는다고 가정하면, 우체국에서는 어떤 것이 정크 메일이고 어떤 것이 아닌지 구분할 수 없다. 게임 트래픽도 마찬가지다"라고 비유했다.

게다가 UDP 패킷의 소스 IP는 보안되지 않아 쉽게 스푸핑(IP 등 네트워크 통신과 관련된 것을 속이는 것)될 수 있다고 설명했다. 밸브는 "정크 메일의 발신자가 봉투의 반송 주소까지 위조하기 때문에, 우체국에서는 반송 주소를 확인해도 단서를 찾을 수 없는 것"이라고 비유했다.

더불어 밸브가 서비스하는 스팀은 게임 콘텐츠를 위해 많은 비트(bits)를 제공하고 있으며, 이를 위해 대규모 네트워크를 구축한 상태였다고 했다. 밸브는 이전부터 이 네트워크를 통해 전용 링크로 게임 트래픽을 전송하고, 좋은 피어링(peering)을 확보하고, 네트워킹 엔지니어링 모범 사례를 활용하는 등의 방법을 사용하고 있었다고 전했다.

밸브는 이를 통해 플레이어의 핑은 낮출 수 있었지만, 디도스 공격은 방어하지 못했다고 했다. 문제는 UDP 프로토콜이 안전하기 않기에 자체 네트워크가 있지만, 프라이빗하지 않았다는 것이다.

밸브는 공격자가 자체 네트워크를 사용하여 서버를 공격하지 못하게 하려면 모든 출입 경로를 제어하고 보안을 유지해야 했다고 전했다. 이를 위해 게임 트래픽에 대한 프록시를 생성하고, 전송되는 모든 데이터 패킷을 릴레이를 통해 라우팅했다고 했다.

덕분에 클라이언트가 게임 서버와 통신하려면, 클라이언트를 인증하고, 해당 트래픽을 게임 서버로 프록시하는 릴레이를 거치게 됐다. 밸브는 "즉, 서버의 IP 주소가 항상 숨겨져 있기에 공격자는 어디를 공격해야 할지 알 수 없었다"고 설명했다.

원하지 않는 메일을 걸러 주는 우체국의 비유를 활용하면, 정크 메일 발송자가 더 이상 보낼 곳이 없게 된 것이다. 지역의 모든 우체국에 (정크) 메일을 발송해 달라고 요청할 수도 있지만, 우체국은 인증 없이는 그 메일을 보내주지 않는 것이다. 그리고 우체국에서는 누군가 한 사람에게 '10만 통의 메일'를 보내려 하는 것을 의심하게 된다.

밸브는 "이 솔루션은 간단하지만 효과적"이라고 했다. 이전에는 누군가 게임을 방해하고 싶으면 게임 서버 하나만 장악하면 됐지만, 이제는 본질적으로 데이터 센터 전체를 장악해야 하기 때문이다. 물론, 여전히 이런 허들을 넘어 디도스 공격을 할 수 있는 수단은 존재하지만 밸브는 "그 정도로 정교한 공격은 공식적으로 대부분의 사람이 감당할 수 있는 가격대를 벗어난다"고 언급했다.

이어 밸브는 "새로운 시스템을 통해 깨달었다. 우리만의 사설 네트워크를 제어할 수 있다면 일반 인터넷의 작동 방식에 얽매이지 않아도 된다는 것이다. 이를 통해 고객의 경험을 더욱 향상시킬 수 있었다"라고 했다.

일반 인터넷에서는 한 IP에서 다른 IP로 보낼 때의 경로가 BGP에 의해 결정되지만, 수백 개의 글로벌 릴레이와 데이터 센터로 구성된 가상 사설망을 이용하면 클라이언트에서 게임 서버로 가는 기본 경로를 선택할 수 있다. SDR(스팀 데이터그램 렐레이)를 사용하면 스팀 오버레이에 핑 시간과 어떤 경로를 제공하는지 표시되므로 최적화가 어떻게 이루어지는지 직접 확인할 수도 있다.

밸브는 "'도타 2'의 게임 서버를 보호하기 위해 시작된 이 기능은 누구도 예상하지 못한 규모로 성장했다"라며 "현재 우리는 SDR를 통해 디도스 공격을 막을 뿐만 아니라 모든 '도타 2' 플레이어의 핑을 낮추고 있다. 이 기능은 '도타 2'뿐만 아니라 이것을 활용하고자 하는 모든 스팀 게임을 위한 것"이라고 했다.

한편, 해당 블로그 글을 열람한 해외 커뮤니티 '레딧'의 한 이용자는 "'리그 오브 레전드'에서 무슨 일이 일어나고 있는지 관심이 있는 사람이라면, 이 글은 '이상하리만큼' 절묘한 시기에 게시됐다는 것을 알 수 있다"고 언급했다.