Recent Posts
Recent Comments
관리 메뉴

미닉스의 작은 이야기들

그날 선관위엔 무슨 일이 있었을까? 본문

기술과 인간/IT가 바꾸는 세상

그날 선관위엔 무슨 일이 있었을까?

미닉스 김인성 2012. 3. 1. 18:49

이 글은 2011년 10월 26일 선거관리위원회 선거정보 서비스 장애 사건에 대한 기술적 설명을 시도하는 글입니다. 선관위가 공개한 정보가 제한적이고 수시로 사실관계가 바뀌고 있어 본 기사에도 실제와 다른 부분이 있을 수 있으나 현재 확인 가능한 정보에 최대한 맞도록 노력했습니다. 
 
전문적인 내용이 많아 이해할 수 있도록 소설 형식을 취했습니다. 보고서 등을 통해 밝혀진 작업 진행 시간과 외부에서 알 수 있었던 현상을 제외하고 소설에 등장하는 인물과 인물의 대화, 업무 처리 방식, 업무 처리 주체는 특정 인물이나 실제 사건과 무관한 상상입니다. 
 
다만 업무 처리 과정에 대한 가상 상황은 일반적인 IT 현업의 상황과 유사하게 묘사했으며 사건의 발생 원인에 대한 추론은 실제 업무를 수행하는 엔지니어들이 납득 가능한 한도 내에 있음을 밝힙니다.


2011년 10월 26일
05:00 

 
선관위 김 과장은 비상 대기를 위해 일찍 출근했다. 어둠에 싸인 선관위는 비교적 평화로웠다. 그날 새벽 1시경 소규모 디도스 공격이 있긴 했지만 그것이 선관위 사상 가장 긴 하루의 시작이었음을 눈치챈 사람은 아무도 없었다.


05:10
 
김 과장은 날이 날인만큼 귀찮음을 무릅쓰고 평소 쳐다보지도 않는 선관위 전산실에 들어갔다. 선관위 A전산요원이 자고 있었고, 어느 업체에서 온지도 모를 엔지니어 한 명이 책상 위 PC로 서버 상황을 모니터링하고 있었다. 김 과장은 엔지니어에게는 눈길도 주지 않은 채 전산요원을 발로 차서 깨웠다.
 
"야, 지금이 어느 땐 데 잠이나 자는 거야?"
 
전산요원은 사람이 들어온 것도 알려 주지 않을 정도로 눈치 없는 엔지니어를 잠깐 노려본 후 과장에게 대답했다.
 
"아, 죄송합니다."
"지금 상황은 어때?"
"예, 문제없습니다. 아직 선거 시작 전이라 별 움직임도 없고요."
"어쨌든 선거 날이니까 긴장 풀지 말고."
"알겠습니다. 과장님."
 
김 과장은 창문 너머 서버실을 잠깐 쳐다보았다. 선관위 자체 서버실이라 그런지 뭔가 후줄근했다. 행안부와 독립된 기관이라 예산 지원을 받지 못한 탓에 언제 도입한지도 모를 낡은 기계들뿐이었고 선들도 어지럽게 널려 있었다. 저런 상태로 서비스되고 있는 것이 신기할 지경이었다. 사실 선관위는 이제 구닥다리라 아무도 쓰지 않는 ATM이란 국가망을 싼 맛에 빌려 쓰는 중이었다. 
 
"맨날 말만… 입으로만 알겠다고 하지 말고 지금 당장 상황 파악해서 보고해."
 
그가 전산요원에게 화를 낸 것은 서버실이 공무원 중에서도 가장 미래가 없다는 선관위 공무원의 모습과 닮아 보였기 때문인지도 몰랐다.
 
 
05:20
 
선관위 전산요원이 전산 관리 유지보수를 맡은 G업체에 전화를 했다. 업체 담당자가 전화를 받자마자 전산요원이 다짜고짜 쏘아붙였다.
 
"저기, 오늘 비상 상황이니까. 전부 들어와서 대기해. 지금 바로 선관위 사이트 상태보고서도 보내주고."
"아, 예. 알겠습니다. 근데 거기 우리 직원이 대기하고 있지 않나요?"
 
전산요원이 엔지니어를 불만스럽게 흘깃 쳐다본 후 대답했다.
 
"누가 한 명 와 있기는 한데… 잘 모르겠고. 어쨌든 직접 와서 보고 해."
 
전산요원과 엔지니어 사이에는 여러 단계가 있었다. 엔지니어는 선관위 유지보수 업체가 재하청을 준 업체에 임시로 고용된 비정규직이라 정확히 어느 회사 소속인지도 파악이 힘들었다. 엔지니어는 주어진 일 이외에는 책임도 의무도 없었다. 하다못해 간단한 업무 지시도 유지보수업체를 통해야 했다. 엔지니어는 선거 때문에 투입된 지 2주일이 채 되지 않아 얼굴 익힐 시간도 없었다. 선관위 전산요원은 다시 잠에 빠져들었고 전산실에는 침묵이 흘렀다.


05:30
 
갑자기 엔지니어 앞에 있는 전화가 울렸다.
 
"이상 없죠?"
 
갑을 관계의 최정점인 갑의 위치에 있는 유지보수업체의 담당자였다. 엔지니어는 별 이상 없다고 대답했다. 
 
"지금 가고 있으니까 곧 도착합니다. 그 전에 보고서 뽑아서 선관위 전산요원 분께 드리세요." 
 
지시를 받은 엔지니어는 서버 상태를 체크했다. 네트워크는 한가했고 서버도 큰 이상이 없었다. 밤 1시쯤 트래픽 증가가 조금 있었지만 별문제 없이 넘어갔기 때문에 알릴 필요는 없을 것 같았다. 다만 서버의 메모리 사용량이 좀 많았지만, 서버에서 그런 일은 다반사였고 접속에 문제가 없는 한 크게 신경 쓸 부분은 아니었다. 엔지니어는 상황 보고서를 출력해서 자고있는 선관위 전산요원 곁에 갖다 두었다. 


05:40
 
갑 업체의 담당자가 도착했다. 그는 엔지니어에게 다시 한 번 상황을 체크했다. 두 사람의 말 소리 때문에 선관위 전산요원이 잠을 깨자 담당자가 반갑게 웃으며 다가갔다. 전산요원도 웃으며 그를 갈구었다. 
 
"요즘 잘나간다고 얼굴도 잘 안 비치네?"
"아이고, 왜 그러십니까? 아주 죽겠습니다. 좀 도와주십쇼."
 
담당자가 너스레를 떨며 책상 위에 놓인 보고서를 직원에게 건넸다. 그는 건성으로 보는 듯 마는 듯하며 담당자에게 물었다.
 
"이상 없는 거지?"
"물론이죠. 이상뭅니다."
 
선관위 전산요원과 담당자가 자료를 들고 김 과장을 만나러 갔다. 이상 없는지 묻고 대답하는 것뿐 별다른 것은 없었다. 두 사람은 다시 전산실에 돌아와 사소한 농담을 하며 지루한 시간을 때우고 있었다.


05:50
 
"저, 저기요."
 
화면을 보고 있던 엔지니어가 놀라서 담당자에게 소리쳤다. 담당자가 왜 호들갑이냔 표정으로 그에게 다가왔다. 엔지니어는 모니터를 보여 주었다. 네트워크 그래프가 갑자기 수직으로 솟아 있었다. 트래픽이 폭주하고 있었던 것이다. 
 
"이거 뭐야? 아직 선거가 시작되지도 않았는데 왜 이렇게 몰려 오는 거야?"
"근데 좀 이상합니다. 서버에 작업 요청은 별로 없거든요."
"그게 뭔 소리야?"
"정상적으로 웹 사이트를 보겠다고 들어온 게 아니고 그냥 비정상 접속만 많은 상태란 말씀입니다."
 
엔지니어가 상황을 설명했지만, 담당자는 이해 못 하겠다는 표정을 지었다. 엔지니어가 다시 말했다. 
 
"디도스 공격인 것 같습니다."
"디도스? 그럼 이제 우리 어떻게 해야 하는 거야?"
 
담당자가 당황하여 되물었다. 하지만 모니터링과 일상 업무 처리밖에 모르는 엔지니어도 당황스럽기는 마찬가지였다. 담당자는 급히 회사에 전화를 걸어 업무 지시를 받았다.
 
"일단 트래픽 상황을 주시하고 서비스가 정상적으로 되고 있는지 계속 확인하래. 디도스 방어 장비가 설치되어 있다니까 큰 문제 없을 거래."
 
담당자는 선관위 전산요원에게 이 상황을 알렸고 직원도 곧바로 김 과장에게 보고했다. 
 
"선이 오르락내리락 하고 있는 저 그래프가 네트워크 상태야? 어쨌든 문제 없도록 잘 처리해. 위에서 알면 큰일 나니까."
 
김 과장이 초조한 표정으로 말했다. 모두들 엔지니어 뒤에 서서 모니터를 바라보며 빨리 해결되기만을 바라고 있었다.


6:00
 
드디어 6시 정각이 되었다. 김과장은 공명정대한 투표가 치러질 수 있기를 기원하며 선관위 홈페이지에 접속을 했다. 하지만 오래도록 페이지가 열리지 않았다. 김과장은 불길한 생각을 떨치려 애쓰며 급히 전산실로 가보았으나 그때까지 아무도 뾰쪽한 대책을 내놓지 못하고 있었다. 트래픽이 증가하고 있었으나 감당 못할 양은 아니었고 실제 서버 처리량도 별로 없었는데 접속이 안 되고 있었다. 이상해서 김 과장이 물었다.
 
"디도스 공격이 들어오고 있으니 외부에서는 그렇다 치고 서버 바로 곁에 있는 사무실 컴퓨터에서는 왜 접속이 안 되는 건가?" 
 
그의 질문에 아무도 대답하지 못했다. 사실 서버에 대해 아는 사람이 하나도 없었다. 김 과장은 G사 담당자에게 말했다. 
 
"본사에서 이 문제 처리할 사람 빨리 보내라고 하세요. 한시가 급합니다.

김과장은 전산요원에게 다른 관련 기관과 업체에도 디도스 공격을 받고 있음을 통보할 것을 지시했다. 전산요원은 곧바로 이 사실을 인터넷 진흥원의 인터넷침해대응센터와 협력업체에 알리고 KT와 LGU+에도 연락하여 디도스 처리를 부탁했다. 
 
 
6:10
 
출근 중인 사무관께 국가정보원에서 전화를 했다. 사무실 전화를 받지 않자 사무관 휴대폰으로 직접 전화를 한 것이다. 국정원 직원은 "선관위가 디도스를 맞은 것이 확실하냐?"며 도움이 필요하면 연락하라고 말했다. 사무관께서는 국정원으로부터 선관위 내부 상황을 알게 된 것에 분노를 금할 수 없었다. 사무관께서는 선관위로 전화를 해서 김 과장을 찾으셨다.
 
"국정원 말이 우리가 디도스 공격을 받고 있다고 하는 데 사실인가요?"
"그, 그게… 그렇긴 하지만 저희가 대응을 잘하고 있습니다. 공격량도 얼마 되지 않아 곧 해결될 겁니다."
"나도 곧 도착하니까 그 동안 관련된 업체들과 상의해서 잘 처리하고 있으세요. 또 이렇게 국정원 따위가 헌법 기관인 선거관리위원회 일에 간섭하게 하지 마시고."
“아닙니다. 저희가 먼저 확인하고 침해대응센터에 통보한 겁니다. 안기부는 아마 거기서 듣고…”
“지금 그런 거 따질 땐가요? 일 처리나 잘하세요.”
 
김 과장은 식은땀을 흘리며 전화를 끊었다. 국정원이 알았으니 이제 모든 외부 기관이 알게 되는 것은 시간 문제였다. 어쩔 수 없이 선제로 대응하는 수밖에 없을 것 같았다. 하지만 전산실에 모인 사람들은 여전히 서버 접속이 되지 않는 문제 때문에 우왕좌왕하고 있었다. 답답해진 김 과장이 그들을 모아 놓고 원인을 캐물었다. 유지보수업체 담당자가 말했다.
 
"본사에 연락해 보았는데요. 저희 인터넷 모니터링 팀이 원격으로 체크하고 있는 중이랍니다. 그 팀 말로는 선관위에 설치해 놓은 디도스 방어 장비가 공격 트래픽은 거의 다 걸러내고 있다고 합니다. 디도스 공격하고 있는 좀비 피시 IP를 확인해서 수작업으로도 처리할 예정이라니까 조금만 기다리면 해결될 겁니다."
 
엔지니어도 서버 상황을 설명했다. 
 
"실제로 서버에 접속한 양은 얼마 되지 않습니다. 데이터베이스 서버도 한가하고요. 선거구 찾기 서버도 잘 됩니다. 다만 웹 페이지가 접속이 잘 안 되고 있을 뿐입니다."
 
선관위 전산요원도 외부 기관의 체크 결과를 보고했다.
 
"인터넷침해대응센터도 우려할 만한 디도스 공격은 아니라고 합니다. KT에서도 디도스 트래픽이 얼마 되지 않고 곧 자체적으로 처리해서 아예 디도스가 선관위 쪽으로 오지도 못하도록 할 거라고 합니다."
 
그들의 말을 종합해보면 아예 문제 자체가 없는 것처럼 보였다. 그럼에도 선관위 서버에 접속이 안 되고 있었다. 더 일이 커지기 전에 한시라도 빨리 이 문제를 해결해야 했다. 하지만 모두 자기 책임이 아니라고 떠들고만 있어 귀중한 시간이 흘러가고 있었다. 
 
"그래서 대책이 뭐야? 언제 정상으로 돌아온다는 거야?"
 
김 과장의 질문에 아무도 대답하지 못했다. 지금 필요한 것은 신속 정확한 판단력이었다. 이렇게 각자 자신들의 책임만 면하려는 자들이 해결할 수 있는 상황이 아니었다. 결국 총알이 빗발치는 긴급 상황을 헤쳐나갈 쓸 만한 야전사령관이 필요했다. 그는 전화기를 들고 밖으로 나갔다.


6:20
 
업계에서 해결사로 불리는 시스템 엔지니어 B는 밤새 서초동에 데이터센터에서 서버 튜닝을 한 후 잠을 자려고 집으로 가는 길에 전화를 받았다. 어려울 때만 전화하는 선관위 김 과장이었다. 그는 전화를 받을지 말지 잠깐 주저했지만 온 전화를 외면할 수는 없었다. 이 시간에 온 것으로 봐서 급한 일임이 틀림없었다. 그는 무슨 일이든 이번에는 꼭 수고비를 제대로 챙겨 받겠다고 굳게 결심했다. 전화 너머에서 김 과장이 말했다.
 
"지금 어디야?"
"집에 가는 길입니다. 낙성대를 넘어가고 있는 중이죠. 그러고 보니 선관위 근처네요."
"그래? 정말 잘 됐네. 지금 당장 선관위 전산실로 좀 와라."
"무슨 일인데 그러세요?"
"선관위가 디도스 공격을 받고 있어. 서버가 죽은 것 같은데 아무도 해결을 못하네. 근데도 업체에서 온 자식들은 계속 별거 아닌 것처럼 면피만 하려고만 해서 아주 미치겠어."
"서버가 죽었으면 장의사를 부르시지 꼭두새벽부터 왜 저한테 전화하세요?"
"시끄럽고, 빨리 오기나 해."
 
반응으로 보아 상황이 심각해 보였다. 하지만 해결사는 또다시 무료 봉사를 할 수는 없었다.
 
"제 일당 아시죠? 이번엔 진짜 그냥 못 해드립니다."
"이 인간이? 지금 선관위가 위험한 판에 돈 이야기를... 어쨌든 빨리 튀어 와."
"알겠습니다."
 
해결사는 전화를 끊은 후 차를 몰고 선관위로 달려갔다.


6:30
 
드디어 사무관께서 선관위에 도착하셨다. 사무관께서는 사무실 자리에 앉자마자 마우스를 흔들어 밤새 켜져 있던 컴퓨터를 깨운 다음 선관위 홈페이지가 열려 있는 웹 브라우저의 '새로고침'을 누르셨지만 선관위 홈페이지는 접속이 되지 않았다. 사무관께서는 한숨을 쉬셨다. 도대체 일들을 어떻게 하고 있는지 한심하기 그지없었다. 더구나 신성한 선관위가 공격받다니, 세상이 전부 미쳐 돌아가는 것 같았다. 
 
사무관께서 보시기에 인터넷은 애초에 글러 먹은 것이었다. 디도스 건만 해도 그랬다. 이건 인터넷을 구성하는 네트워크 규약 자체에 커다란 허점이 있어서 발생하는 문제였다. 티시피아이피(TCP/IP)란 쓰레기 같은 네트워크 규약이 이런 대규모 인터넷 대란을 불러오는 근본 원인이었던 것이다. 여태까지 이 규약 때문에 수많은 문제가 발생했지만 언제나 해결책은 주먹구구식 땜빵에 불과했고 규약은 누더기가 되어가고 있었다.
 
"아이비엠의 토큰링을 썼다면 이런 일이 없었을 텐데. 그 좋은 메인프레임 다 갖다 버리고 무슨 쓸데없는 분산 컴퓨팅 어쩌구 하면서 이렇게 세상을 혼란스럽게 만드니, 원…"
 
사무관께서 혀를 차시며 점점 더 나빠지고 있는 세상을 안타까워하셨다. 
 
"맞습니다. 우리도 아이비엠 장비 썼다면 이런 일이 없었을 텐데요."
 
곁에서 대기하고 있던 김 과장이 엉뚱한 장단을 맞추었지만, 사무관께서는 이를 무시하고 말했다.
 
"그나저나 지금은 어떻게 되어 가고 있습니까?"
"예, 서버 접속이 잘 안 되는 거 빼고는 큰 문제 없답니다. KT에서도 디도스 공격을 막아 주겠다고 했습니다. 곧 좋아질 겁니다."
"시간이 이렇게 지났는데 아직도 곧 좋아질 거란 말뿐인가요?"
"그래도 열심히 하고 있……"
"이렇게 문제가 계속되면 뭔가 특단의 조치를 해야 합니다."

사무관께서 잠시 생각에 잠기셨다.

"우리 인터넷 선이 KT뿐인가요?"
"아닙니다. 이중화 정책상 LGU+선도 들어와 있습니다."
"LGU+로도 디도스 공격이 들어오고 있나요?"
"그건 아닌 것 같습니다."
 
여러 가지를 두루 살피신 사무관께서 결국 묘안을 말씀하셨다.
 
"그럼 디도스 공격이 들어오는 KT 선을 끊도록 하세요. 디도스 공격이 안 들어 오는 LGU+로만 서비스하면 문제가 해결되겠네요."
"아, 그런 방법이 있었군요. 알겠습니다. 곧 그렇게 지시하겠습니다."
 
김 과장은 그게 어떻게 해결책이 되는지 잘 알 수는 없었지만 어쨌든 지시는 지시인 만큼 무조건 받드는 것이 최선이었다. 사실 현재로서는 다른 방법도 없었다. 

6:40
전산실로 간 김 과장은 전산요원에게 KT 라인을 끊을 것을 지시했다. 전산요원은 곧바로 유지보수업체 담당자에게 같은 지시를 했고 담당자는 지금 막 본사에서 들어 온 직원 두 명 중 한 명에게 다시 지시했다. 그는 함께 들어온 나머지 직원에게 재지시를 했다. 마지막으로 그 본사 직원은 엔지니어에게 KT 라인을 끊을 것을 지시했다.
 
그러나 엔지니어는 디도스 공격을 받으면 널 라우팅인지 뭔지를 하라고 이전에 근무했던 네트워크 회사에서 교육받은 기억이 어렴풋이 나서 말했다.
 
"KT라인을 그냥 끊으면 안 되지 않습니까?"
 
하청 업체 말단 직원에 불과한 엔지니어가 업무 지시에 토를 달자 갑 업체 직원들이 황당한 표정을 지었다. 
 
"너 어느 회사에서 왔어? 까라면 깔 것이지 말이 많아?"
 
분위기가 살벌해지자 엔지니어는 아무말도 못한 채 조용히 KT 1회선을 끊었다.

 
 

 
KT 라인 차단 시간: 이 글은 선관위의 주장을 토대로 작성되었기 때문에 6시 46분에 첫번째 KT 라인을 끊은 것으로 설정했지만 납득할 수 없는 부분이 많다. 2011년 11월 26일 작성된 LG엔시스 보고서의 트래픽 그래프 상으로는 6시 58분에 KT의 두 라인을 끊은 것으로 그려져 있다. 이 것은 장비의 로그 데이터를 이용해 프로그램이 만들어낸 것으로 판단되는 그래프이기 때문에 실수로 시간을 잘못 기록하기 힘들다.


선관위 자료에 나타난 KT 라인 차단 시간: 2012년 1월 27일 선관위가 작성한 자료의 그래프를 보더라도 KT 선은 6시 58분에 끊었다고 되어 있고 선관위에서 직접 그린 그래프도 이를 뒷받침하고 있다.


말바꾸기: 2월 23일 토론회에서 선관위는 6시 46분에 첫번째 KT 라인을 끊고 다시 6시 58분에 두번째 KT 라인을 끊었다고 기존의 주장을 뒤집었다. 이것은 7시가 되기 훨씬 전에 트래픽 유입량이 줄고 있는 현상을 설명하기 위한 말 바꾸기라고 판단된다.

 

 
모순된 설명: 하지만 김기창 교수의 주장에 따르면 그래프상 6시 46분 이후에도 KT 한 회선보다 훨씬 많은 트래픽이 들어오고 있다. 현재 이 모든 것을 모순 없이 설명하는 것은 불가능하다. 
 
선관위에서 디도스 사건을 재조사하고 있는 사무관에게 직접 확인한 결과 LG엔시스 자료를 포함한 자료들은 그 당시 상황을 설명한 사람의 말에 근거하여 작성된 자료들이라고 말했다. 그에게 LG엔시스가 그래프를 수작업으로 작성한 것인지 여부를 물었을 때 그는 그 당시 상황을 설명한 사람의 말에 근거한 것이란 대답만을 되풀이 했다. 
 
이 부분에 대해 LG엔시스와 선관위의 명확한 해명이 필요하다. 이렇게 실제 상황을 재구성할 수 없을 정도로 사실 관계가 수시로 바뀌고 일관성을 잃고 있어 전문가들 조차도 실제 무슨 일이 일어났었는지 판단하기 어려운 상태다. 의혹이 계속 증폭되는 것은 선관위와 관련 업체 그리고 검찰과 경찰의 책임이 크다.
 

  
이윽고 해결사가 도착했다. 그는 김 과장에게 인사를 하자마자 전산요원, 유지보수업체 담당자 그리고 유지보수업체 직원들과 대화를 나누었는데 얼마 되지도 않아 대충 상황이 어떻게 돌아가고 있는지 짐작할 수 있었다. 그는 KT와 LGU+에도 전화를 걸어 자세한 사항을 체크한 후 별 도움도 되지 않는 사람들을 제쳐 놓고 곧바로 엔지니어에게 질문을 시작했다.
 
"뭐가 문젠 것 같습니까?"
"글쎄요. 별문제가 없어야 하는데 상태가 정상으로 돌아오지 않네요. 아마 디도스 때문에 네트워크와 서버가 전반적으로다 흔들려 있는 상태가 아닐까요? 그러니까 조금만 시간이 지나면…"
 
엔지니어는 제대로 말을 마치지 못했다. 무시당했다고 느낀 유지보수업체 직원들이 이야기를 나누고 있는 해결사와 자신을 노려보고 있었기 때문이었다. 해결사는 그들을 아랑곳하지 않고 엔지니어에게 다시 물었다.
 
"지금 가장 정상에서 벗어난 것이라면 어떤 게 있나요?"
"이상한 부분이라면… 디도스인데… 장비가 막았다고 하니… 글쎄요. 서버 접속이 잘 안 되는 게 문제죠."
"서버에 이상한 부분은 없나요?"
"서버에요? 별 이상은 없습니다. 서버 한 대의 메모리가 거의 다 찼다는 것 빼고는…"
 
엔지니어의 대답을 들은 해결사는 메모리 정보를 체크했다. 실행 중인 프로세스들의 메모리 사용량을 하나하나 확인한 후 사람들 모두가 들을 수 있을 정도로 큰 목소리로 말했다.
 
"선관위 웹 페이지 개발은 어느 업체에서 했나요? 그 업체 분 여기 계신가요?"
"그게, P회사라고 개발 전문 업체에서 개발하긴 했는데 유지 보수 계약까지는 안 되어 있어서…"
 
전산요원이 얼버무렸다. 아직 개발비도 다 주지 못하고 있었기 때문이었다.
 
"그 업체 개발자 연락처를 알려 주세요."
 
전산요원이 연락처를 알아보았으나 간단한 문제가 아니었다. 선관위에게서 일을 받은 P업체는 다시 하청을 주었고, 그 업체 또한 재하청을 주었는데 그 회사에서 실제 일을 했던 개발자가 퇴사한 탓에 연락처를 찾는 데 시간이 걸렸다. 겨우 알아낸 연락처로 전화를 걸었지만 잠을 자고 있는지 받지 않았다. 여러 차례 전화를 건 후에야 겨우 연결되었다. 해결사가 물었다.
 
"선관위 웹서버 개발하신 분 맞으신 가요?"
"예, 그런데요?"
"아무래도 프로그램에 에러가 있는 것 같습니다. 메모리 누수가 생겨서 거의 100%를 채우고 있네요."
 
프로그램 개발자는 작업 당시를 떠올려 보았다. 개발 완료 일정을 넘긴 후 급하게 투입되어 밤샘 작업으로 겨우 끝낸 프로젝트였다. 워낙 말도 안 되는 일정이어서 뭘 만드는지도 모를 정도로 정신없이 프로그램을 코딩한 기억밖에 없었다. 이렇게 만든 프로그램이 제대로 동작한다면 그게 더 이상한 일일 것이다.
 
"그게 말이죠. 음, 자세히 들여다보면 뭐 여러 가지 문제가 있을 수 있겠죠."
"지금 빨리 와서 좀 봐주셔야겠는데요."
 
개발자는 짜증이 났다. 아직 일 시킨 업체에게 돈도 다 못 받은 상태인데 계약에도 없는 유지보수까지 할 이유는 없었다. 그는 안 가도 되는 상황을 만들기로 했다. 
 
"지금 간다고 해도 고치는 데 얼마나 걸릴지 모르겠네요. 근데 제가 짠 프로그램도 그렇지만 동작 환경도 정상이 아닙니다. 제가 있을 때도 문제가 생기면 하루에도 몇 번씩 리부팅하곤 했습니다. 지금도 아마 그럴 건데 답이 없습니다. 그냥 리부팅하세요. 리부팅하면 한나절은 버틸 겁니다."
"리부팅까지 해야 하나요? 메모리 누수라면 서비스 프로그램 재시작 정도로도 충분할 것 같은데요?"
 
해결사가 좀 더 간단한 해결책을 제안했다. 프로그래머가 생각해보니 그것도 한 방법일 것 같았다. 프로그래머가 동의하자 해결사는 서비스 프로그램을 재시작하기로 결정했다.


6:50
 
해결사는 전산실에 있는 모든 사람을 불러 놓고 상황을 설명한 후 서비스 프로그램, 즉 데몬을 재 시작해야 한다고 말했다. 유지보수업체 직원들이 반발했으나 담당자가 본사에 이 사실을 알리고 허락을 맡았기 때문에 더 이상 문제 삼지 못했다. 모든 사람이 보고 있는 가운데 엔지니어가 웹 서버 한 대의 서비스 프로그램을 죽였다 살린 후 초조한 마음으로 서비스가 정상화되기를 기다렸다.
 
잠시 후 웹 서버의 메모리 사용량이 눈에 띄게 줄고 서비스도 이상 없이 동작하는 것이 확인되었다. 엔지니어는 나머지 한 대도 같은 조치를 취했다. KT 한 라인을 죽인 탓에 트래픽도 확연히 줄어 있었다. 문제가 거의 해결된 것 같았다. 다들 안도의 한숨을 내쉬었다.
 
잠시 여유가 생기자 김 과장이 해결사에게 물었다. 
 
"서버는 널널한데 왜 접속이 안 되는 거야?"
"디도스가 몰리면 병목이 발생해서 그럴 수 있죠. 지나갈 수 있는 용량은 310메가비트인데 1000메가비트가 들어오면 네트워크 장비가 받은 데이터를 전달할 때까지 보관하고 있어야 하기 때문에 과부하가 걸리게 되죠. 처음에는 느리게라도 전달이 되지만 나중에는 더 이상 보내지도 받지도 못해 아예 뻗어 버리게 됩니다."
 
"외부는 디도스 때문에 그렇다 치고 내부에 있는 컴퓨터도 접속이 안 되는 건 무슨 문제인 거야?"
"그럴 리가 있나요? 선관위 사무실은 서버와 같은 네트워크를 쓰고 있을 텐데요."
"무슨 소리야. 아침부터 사무관님 컴퓨터에서도 접속 안 되는 바람에 내가 얼마나 고생하고 있는데."
"그럼 그 컴퓨터를 점검해 보셔야지요. 아마 바이러스가 걸려서 그렇겠죠."
 
해결사의 대답을 듣고 보니 그럴 수도 있을 것 같았다. 하지만 컴퓨터 점검보다 사무관께서 지시하신 일을 끝내는 것이 더 급했다. 김 과장이 말했다.
 
"이제 나머지 KT라인도 끊도록 해."
"무슨 말씀이십니까? 선을 끊다니요?"
 
해결사가 선 끊기 작업을 하려고 하는 엔지니어를 제지하자 김 과장이 말했다.
 
"그냥 둬. 사무관님께서 디도스 공격 통로인 KT라인을 끊으라고 지시하셨단 말이야."
"그러면 디도스가 해결되는 것이 아니라 더 악화됩니다."
"아니야. 조금 전에 두 라인 중에서 한 라인을 끊어서 지금 상태가 좋아졌잖아? 빨리 남은 KT라인을 끊도록 해. 디도스 경로를 아예 틀어막는 게 최선이라고 하셨어."
 
해결사는 KT 라인을 끊으라고 독촉하는 김 과장을 막아섰다.
 
"그래 봤자 곧바로 LGU+ 라인을 통해서 들어올 겁니다. LGU+라인은 용량이 반밖에 안 돼서 더 큰 문제가 생길 겁니다."
 
두 사람이 의견충돌을 일으키고 있었으나 주변 사람들은 한마디도 하지 않고 지켜만 보고 있었다. 이들의 태도가 최소한 자신의 의견을 반대하지는 않는 것으로 판단한 김 과장이 용기를 내어 말했다.
 
"아! 참 나, 이 친구가 말귀를 못 알아먹네. 사무관께서 지시하셨다잖아. 일단 KT라인을 끊고 나머지로 어떻게 해봐. 나 욕 먹이지 말고."
 
해결사는 엔지니어에게 네트워크 상태를 물어본 다음 김 과장에게 말했다.
 
"알겠습니다. 지시하셨으니 하긴 합니다만 용량에 여유가 없어서 한동안 느려질지도 모릅니다. 문제 생기면 책임 지셔야 합니다."
 
김 과장은 대답하지 않았다. 해결사는 어쩔 수 없이 엔지니어에게 지시해 나머지 KT 라인을 끊었다.


7:00
 
곧 KT쪽 네트워크 트래픽이 0으로 떨어졌다. 잠시 후 선관위로 들어오는 유일한 네트워크인 LGU+ 라인으로 트래픽이 몰려들었다. 금세 최대치를 갱신했으나 곧바로 LGU+ 라인도 0으로 떨어졌다. 선관위 서버는 평화로웠지만, 선관위 바깥에서는 갈 곳 잃은 데이터들이 이리저리 휩쓸려 다니며 네트워크를 쓰레기통으로 만들기 시작했다.
 
이젠 디도스 데이터와 정상 데이터가 구분도 불가능하게 되었다. 결코, 도달할 수 없는 목적지를 찾아 네트워크를 해매는 쓰레기 데이터에 불과하게 되었기 때문이다. 아마 그 속을 들여다볼 수 있다면 좀비들이 날뛰는 아비규환의 지옥 같을 것이다. 
 
네트워크 상황이 점점 개판이 되고 있었다. 해결사는 그것 보라는 듯이 팔짱을 끼고 있었다. 하지만 아무도 해결책은커녕 한마디 의견도 내놓지 못하고 있었다. 김 과장은 공포에 사로잡혔다. 이 상태가 조금만 더 계속된다면 대대적인 문책을 받게 될 것이다. 그보다도 먼저 언론에서 퍼부을 융단폭격이 더 걱정이었다. 이 일을 뭐라고 변명한단 말인가? 생각하기도 끔찍한 앞으로의 일에 질려 버린 김 과장이 해결사에게 물었다.
 
"이제 어떡해야 하는 거야?"
"일단 무조건 KT라인을 다시 연결해야 합니다."
"그건 곤란한데… 사무관님께서 직접 지시하신 건데…"
"그럼 상황을 알리고 지시 사항을 바꿔달라고 하세요."
"알았어. 조금만 기다려."
 
김 과장은 급히 사무관실로 달려갔다.


7:10
 
김 과장이 나가자마자 해결사는 엔지니어에게 KT라인 중 1개를 다시 연결하라고 지시했다. 기다릴 시간이 없기도 했지만, 사무관이 말을 바꿀 가능성이 더 없어서 독단적으로 행한 일이었다. 고위 공무원이 한 번 내뱉은 말을 뒤집게 만드는 것은 사실 불가능한 일이었다.
 
잘못되면 모든 책임을 지게 되겠지만 지금은 그런 것에 신경 쓸 여유가 없었다. 어차피 더 나빠질 수도 없었다. 엔지니어가 지체 없이 선을 연결했지만, 이번에도 주변 직원들은 아무도 나서지 않았다. 이런 상황에서는 그저 책임질 일을 하지 않는 것이 최선이었다. 한마디라도 했다가는 나중에 독박을 쓸 게 뻔했기 때문이다.
 
KT 라인을 재 연결하자 최대 용량의 1/3 정도의 트래픽이 유입되어 그나마 사정이 조금 나아졌다. KT에서 처리를 하고 있는지 디도스 트래픽도 별로 섞여 있지 않았다. 이 상태에서 LGU+라인의 비정상 상태가 회복되면 어느 정도 문제가 해결될 것 같았다. 해결사는 이제 안정화는 시간 문제라고 판단하고 느긋하게 기다리기로 했다.
김 과장은 급하긴 했지만, 사무관께서 최대한 기분 상하지 않게 상황 설명을 하려 애쓰고 있었다.
 
"국정원이나 인터넷진흥원의 도움을 받으면 어떨까요? 사이버대피소로 들어가면 디도스 공격은 무력화시킬 수 있는데요."
"헌법 기관인 선관위가 어떻게 그런 행정부의 도움을 받는단 말입니까? 우린 엄정 중립을 지키는 것이 우선입니다."
 
사무관이 김 과장의 제안을 거부하자 김 과장이 또 다른 안을 제시했다.
 
"그럼 KT의 사이버대피소는 어떻습니까?"
"사기업이라면 정치적 중립성 시비는 없겠지요. 거기로 가려면 시간이 얼마나 걸립니까?"
"아무래도 좀 걸리겠지요. 하지만 최대한 빨리 처리되도록 해보겠습니다."
"그럼 그렇게 하세요."
"근데 말입니다. KT 선을 모두 끊었더니 네트워크가 전체적으로 불안정하게 되어서 말입니다. 일단 급하니까 사이버대피소가 준비되기 전에 KT 1회선만 다시 연결해 보면 어떨까요? 그렇게 해서 이상이 없으면 나머지도 다시 연결했으면 합니다만."
 
사무관께서는 장고에 들어가셨다. 오랜 전산 생활을 통해 통찰력을 갖추고 있는 자신이 스스로 생각해낸 묘안이 효과가 없음에 충격을 받으신 것 같았다. 하지만 사무관께서는 쓸데없는 고집만 피우는 분이 아니셨다. 잠시 후 사무관께서는 좀 더 나은 대안을 제시하셨다.
 
"필요하면 KT 선을 다시 연결하세요. 단, KT에서 디도스 공격을 효과적으로 차단하고 있다는 확인을 먼저 받으세요. 디도스 방어가 제대로 되지도 않은 상태에서 다시 연결하면 사태가 더 나빠질지도 모르니까요."
"알겠습니다. 그렇게 조치하겠습니다."
 
만족스럽지는 않았지만, KT 라인을 다시 연결하라는 허락을 받은 것만 해도 대단한 성과였다. 김 과장은 곧바로 전산실로 뛰어갔다.
 
 

KT 재접속 시간 문제: 선관위는 7:30분에 KT 1회선을 재 접속했다고 주장하고 있으나 각종 그래프 상으로는 7시 10분에 접속한 것으로 판단된다. 그래프에서 7시에서 8시 사이에 보이는 작은 그래프는 10.26일에 작성된 LG엔시스의 보고서에 KT를 통한 유입이라고 명기되어 있다.
 
 

 
선관위의 주장: 선관위는 이를 부정하고 7시 10분부터 30분까지의 트래픽은 LGU+로 들어온 것이라는 주장을 하고 있다. 하지만 이 주장은 여러 자료에 나타난 그 당시 LGU+ 유입량이 10메가 정도밖에 되지 않기 때문에 사실과 합치하지 않는다.

 

끼워 맞추기 해명: 이에 대해 디도스 사건을 재조사하고 있는 선관위 사무관에게 확인한 결과 이것은 LGU+를 통한 트래픽이 맞다고 하면서 그 근거로 디도스 장비는 들어오고 나가는 트래픽을 모두 유입량이라고 계산하기 때문이라고 주장했다. 
 
그에 따르면 요청 데이터는 적더라도 서버에서 PC로 보내주는 데이터는 큰 경우가 많기 때문에 LGU+로 들어온 트래픽이 10메가지만 나가는 트래픽은 40메가일 수 있어서 결과적으로 들어오고 나간 양을 모두 합치면 50메가가 되므로 7시 10분 경의 그래프는 LGU+의 트래픽이라고 주장했다. 
 
만약 이 말이 사실이라면 애초에 최대 유효 대역폭이 250메가인 디도스 장비의 트래픽 그래프의 최대값은 500메가로 그려져야 한다. 입력이 250메가라면 출력 또한 250메가이기 때문이다. 사무관은 작은 현상을 설명하기 위한 논리가 전체 자료를 부정하고 있음에 대해서 해명하지 못했다. 
 
이후 재 확인 한 결과 그 사무관은 이런 해명 논리는 관련 업체의 네트워크 전문가가 제고한 것이라고 하면서 3자 대면을 요청했다. 조만간 선관위, 선관위 관련 업체 그리고 엔지니어들간의 토론 형식의 공개 모임을 다시 열기로 합의한 상태다.
 


7:20
 
해결사는 KT 라인을 연결한 것을 김 과장에게 말하지 않았다. 다만 KT라인을 통해 들어온 트래픽을 LGU+ 라인을 통해 들어온 트래픽인 것처럼 설명했다. 어쨌든 안정화만 되면 그만이라고 생각했기 때문이었다. 김 과장은 네트워크 상태가 호전된 것에 안도하며 KT가 디도스를 처리 완료하는 대로 KT 라인을 재 연결하라고 지시했다.
 
하지만 LGU+ 라인에서는 여전히 문제가 발생하고 있었다. 해결사는 LGU+에게 직접 전화를 걸어 상태를 확인했다. 그런데 LGU+에서 이상한 말을 했다.
 
"선관위 쪽 라우터에서 BGP에러가 계속 뜨고 있습니다."
"무슨 말도 안 되는 말씀을 하십니까? BGP에러라니요?"
 
해결사는 황당해서 제대로 대꾸를 하지 못했다. BGP란 네트워크 장비들이 목적지 주소를 알기 위해 IP 주소를 저장하는 방식이었다. 이것은 KT와 SK와 같은 대형 네트워크 업체들에게나 필요한 것이었다. 선관위와 같이 IP가 몇 개 되지도 않는 곳에서는 쓸 필요도 없고 쓸 이유도 없으며 써서도 안 되는 것이었다. 
 
해결사는 다시 한번 물었으나 LGU+에서는 재차 확인해 주었다.
 
"아닙니다. 정확합니다. 선관위 쪽 라우터가 BGP에러로 계속 살았다 죽었다 하고 있습니다."
 
해결사는 전화를 끊고 누군가 대답해 줄 사람이 들을 수 있도록 큰 소리로 말했다.
 
"선관위 라우터에서 BGP를 쓰고 있습니까?"
"예, 쓰고 있습니다."
 
선관위 전산요원의 대답을 들은 해결사는 기가 막혀서 허탈하게 웃었다. 정말 막장도 이런 막장도 없었다. 해결사는 애초에 이런 곳에 오지 말았어야 했다고 속으로 후회를 했다.
 
"아니 선관위에서 왜 BGP를 쓰십니까?"
"라우터에서 BGP 프로토콜을 쓰는 게 뭐 이상합니까? 선관위는 가능한 표준 규격을 준수하려고 노력할 뿐입니다."
"대형 사이트에서나 쓰고 있는 BGP를 왜 여기서… 포클레인으로 밥 떠먹을 일 있습니까?"
"선관위를 무시하지 마세요. 선관위는 엄연한 헌법 기관입니다. 사이트는 크지 않지만, 대형 사이트만큼 중요한 곳입니다."
"아무리 그래도 그렇지 사용하는 IP가 몇 개 되지도 않으면서…"
 
해결사는 더 논쟁할 의욕을 잃고 엔지니어와 함께 라우터를 살펴보았다. 엔지니어가 문제를 해결하려고 벌써 몇 번 수동으로 껐다 켜기를 반복한 상태였다. 이 문제는 당장은 해결할 길이 없었다. 네트워크를 떠도는 데이터들이 사라지기 전에는 해결이 불가능했다. 문제는 언제 데이터들이 사라질지 알 수 없다는 데 있었다. 빨리 KT라인을 정상화 시키는 수밖에 없었다. 


7:30 
 
"지금 LGU+ 라인은 라우터에 BGP에러가 있어 접속이 잘 안 되고 있습니다."
 
해결사가 현 상태를 사람들에게 설명했다. 이에 대해 김 과장이 질문을 했다.
 
"그런데 지금 어느 정도 트래픽이 안정적으로 들어오고 있는 이유는 뭔가?"
"그건 KT 1회선을 재연결해서 그나마 일부 트래픽이 유입되고 있는 겁니다."
 
대답을 한 후 해결사는 아차 하는 생각이 들었다. 허락도 맡지 않고 KT 선을 연결한 것을 그냥 말해버렸기 때문이다. 아니나 다를까 김 과장이 곧바로 화를 냈다.
 
"이 인간이… 누가 허락도 없이 KT 라인 다시 연결하라고 그랬어? 일 이따위로 할 거야?"
"그래도 그것 때문에 어느 정도 안정화가 되고 있잖습니까?"
"그건 그거고 말이야. 업무 지시를 마음대로 어기면 어떻게 믿고 일을 시키나? 당장 끊어."
"그럼 다시 선관위 접속에 문제 생길 겁니다."
 
해결사의 말을 무시한 채 김 과장이 직접 엔지니어에게 작업 지시를 했다. 공무원이 계통을 무시하고 불가촉천민인 하청업체 말단 엔지니어를 직접 상대하는 모습에 놀라 다들 아무 말도 하지 못했다. 엔지니어는 손을 떨면서 겨우 KT 라인을 끊었다.


7:40
 
곧 다시 네트워크가 지옥으로 변했다. LGU+ 라인에 모든 데이터가 몰려들어 지독한 병목이 된 탓에 아무도 들어올 수 없었다. 김 과장은 일단 최대한 빨리 KT의 사이버대피소로 들어갈 수 있도록 처리해달라고 요청했다. 하지만 그때까지 참고 기다리기가 어려웠다. 결국 김 과장은 할 수 없이 다시 KT 라인 연결을 지시했다. 물론 동시에 KT에 디도스 처리 여부를 확인하는 것도 잊지 않았다. 
 
"지금 선관위로 들어오는 트래픽에 대해서 디도스 처리가 잘 되고 있습니까?"
"아직 디도스 전체를 막지는 못하고 있지만 가능한 조치는 다 취했습니다. 널 라우팅을 해버리면 쉽지만 그럼 선관위 자체가 접속이 안 되니까 수작업으로 처리 중입니다."
 
복잡한 이야기를 흘려 들으며 김 과장이 다시 물었다.
 
"그러니까 확실히 디도스를 처리했느냐고요?"
"세상에 디도스를 확실히 처리할 방법이 어디 있습니까? 최대한 막는 거지요."
"알았어요. 알았어."
 
김 과장은 짜증을 내며 전화를 끊었다. 그리고 KT라인을 다시 끊을 것을 지시했다. KT의 사이버대피소가 마련될 때까지 그냥 버틸 생각이었다. 어려울수록 원칙을 지키는 것이 최선이었다. 선관위 접속이 안 되는 것보다 상급자의 업무 지시가 먼저였다. 그는 분명히 사무관의 지시대로 하고 있을 뿐이었다. 위험하다고 이 원칙을 어기는 순간 모든 책임이 자기에게 쏠림에도 아무도 자신을 보호해 줄 수 없음을 분명히 알고 있었다. 
 
선관위 직원들과 하청업체 직원들이 불안해하고 해결사도 목소리를 높였지만, 그는 귀를 막고 듣지 않기로 했다. 그리하여 8:32분에 KT의 사이버대피소로 대피할 때까지 대부분의 사람들이 선관위 홈페이지에 접속할 수 없었다.


23:10 밤, 선관위 사무실
 
긴 하루가 지났다. 모든 사람이 녹초가 된 상태로 선관위 전산실에 모여 최종 회의를 시작했다. 사무관께서도 친히 참석하셨다. 김 과장이 말했다.
 
"수고들 하셨습니다. 오늘 사건에 대해 정리하고 끝내도록 하겠습니다. 오전에 2시간 정도는 문제가 있었지만, 그 후에는 원활한 서비스가 된 것 같습니다. 초동 대처에 다소 미흡한 점이 있었지만 나름대로 선방한 것이 아닌가 생각합니다."
"저희들이 관리하는 장비도 아무 이상 없었습니다. 디도스 장비가 확실히 디도스 공격을 막아 냈습니다. 침입탐지 장비도 제대로 작동했습니다. 웹서버와 데이터베이스 서버도 정상이었습니다."
 
유지보수업체는 책임을 회피할 근거가 될 데이터를 이미 완벽하게 확보한 상태였다. 문제 해결보다는 하루 종일 면피용 자료를 모으는 데만 신경을 쓴 유지보수업체의 행태가 마음에 들지 않아 해결사가 큰 소리로 말했다.
 
"6시 50분까지 서버 메모리가 고갈된 것은 누구 책임입니까?"
"우리는 잘못 없습니다. 개발자가 프로그램을 잘못 짜서 그렇겠죠. 알다시피 프로그램까지는 우리 책임이 아닙니다. 그리고 재시작해서 해결된 걸 왜 문제 삼습니까?"
 
유지보수업체가 매끄럽게 빠져나가려고 했다. 다시 해결사가 말했다.
 
"누가 KT라인 끊으라고 지시했습니까?"
 
사무관이 헛기침을 했다. 김 과장이 황급히 나섰다. 
 
"이 사람이, 그런 긴박한 상황에서 최후의 조치로 선택한 판단을 문제 삼겠다는 거야? 다시 그 상황이 되어도 그렇게 할 수밖에 없는 일이었어."
"선을 끊으면 문제가 생길 줄 몰랐습니까?"
"아 참 내 이 사람이 왜 계속…"
 
갑자기 김 과장이 해결사에게 다가와 작은 소리로 말했다.
 
"그 KT 라인 끊은 것에 대해서 말인데… 아무래도 조금 조정이 필요할 것 같아. 어쩔 수 없는 비상 조치였음을 모두 인정하기로 이미 다 합의를 봤어. 6시 58분에 두 회선을 끊은 것이라고 공식적으로 말하기로 했어."
"그게 사실인가요?"
"사실이든 아니든… 명심해. KT 회선을 끊었기 때문에 디도스 트래픽이 못 들어 온 거야. LGU+만 남겼기 때문에 일차로 안정화가 될 수 있었던 거야. 그러니 앞으로는 KT라인 끊은 것을 문제삼지 말라고, 알겠나?"
"그럼 7시부터 8시 반까지 서비스 제대로 안 된 건 어떻게 설명할 건가요?"
 
해결사가 큰 목소리로 말했다. 그 말을 들은 유지보수업체 담당자도 큰 소리로 대답했다.
 
"그거야 BGP 잘못이죠. 이상하게 BGP 에러가 생겨서 못 들어 온 거죠. 참 안타까운 일입니다. 어떻게든 들어오기만 했다면 완벽하게 서비스를 받을 수 있었을 텐데요. 그게 다 디도스 때문이 아닐까요?"
 
마지막으로 김 과장이 일어서서 모두에게 말했다.
 
"아 오늘 오전 일은 어쨌든 디도스 공격으로 초래된 일입니다. 우리 모두가 최선의 노력을 했지만 불가항력적인 부분이 있었습니다. 조금의 실수들이 있었다고 하더라도 서로 이해하고 넘어가기로 합니다. 다들 수고하셨습니다."
 
회의가 끝났다. 유지보수업체는 최종보고서를 쓰기 위해 야근을 하러 회사로 돌아갔다. 사무관께서도 남은 일을 처리하기 위해 선관위 사무실에 남으셨다. 때문에 김 과장과 전산요원도 퇴근할 수 없었다. 다만 해결사만 찝찝한 상태로 선관위를 나섰다. 그는 밤하늘을 보며 혼잣말로 말했다.
 
"맞네, 디도스가 잘못했네."
.
.
.
.
.
김인성.
 

Comments