호스팅에서 쫓겨났다

국내 한 대학 교양 과목의 작은 프로젝트를 진행하고 있다.

연구팀에서 원하는 내용을 구현해주는 작은 일이다.

개발과 함께 호스팅 관련 문제를 담당하게 되었다.

연구 연차가 3년 차에 접어들면서 총 3번의 서버 이동을 했다.

바로 직전에 CMS 만드는 회사의 호스팅을 사용했다.

어느 회사인지 밝힐 필요가 없는 게 그 회사 입장으로서는 그럴 수 밖에 없는 결정이라고 생각된다.

거쳐온 서버

이 프로젝트가 연구 재단에 소속되기 전에는 학교 서버에 올라가 있었다.

첫 번째 서버: 학교 서버

도메인 이름도 연결되어 있지 않고, IP 주소로 웹사이트가 돌아가고 있는 상황이었다.

연구를 주도하는 교수가 전 대 총장의 허락을 얻어 마련한 공간

이 프로젝트가 연구 재단을 통해 진행되기 시작하면서 도메인도 연결했다.

그리고 학생들이 사용하는 페이지를 새로 만들게 되었다.

그런데 이전에 돌아가던 페이지보다 약간의 기능이 더해지는 것이 서버 접속에 문제를 만들게 되었다.1

학교가 전산 관련 학과가 없고, 담당자도 전 담당자부터 있었던 서버라 돌아가게 두었지만, 관리를 하는 서버는 아니었던 모양이었다.

프로젝트가 진행되고 접속하는 학생 수가 많아졌다. 이 서버에서 웹사이트를 운영하는 것이 어렵게 되었다.

담당 교수는 프로젝트 진행으로 외부의 접근 통제를 요구했다. 그래서 워드프레스를 이용하게 되었는데 속도 문제가 생겼다.

그래서 다른 서버를 찾게 되었다.

두 번째 서버: 라이트 세일

서버를 찾으면서 AWS에서 라이트 세일이 출시되었다는 사실을 알게 되었다.

월 정액 요금이 국내 다른 서버보다 낮지만 기본 요금제보다 사용량이 많아지면 과금하는 방식이었다.

처음 설정한 서버 사양에서 제공하는 기본 사용량보다 많이 사용할 가능성이 없었기에 해당 요금만 내면 되는 상황이라고 판단하였다.

학교 서버에 있는 자료를 백업하고 AWS에 설정을 시작했다.

원 서버는 윈도우 서버였지만 윈도우 서버보다는 리눅스 서버가 더 익숙했기에 우분투 16.04 인스턴스를 생성했다.

처음 프로젝트를 시작한 것이 10월이었고, 몇 개월 동안 새로운 형식의 페이지를 만들어 이제 학기가 시작되면서 새 형식의 페이지로 서비스를 시작하게 되었다.

교양 과목이고 필수였기에 200명 가까운 학생이 이용하였다.

그 중 한 수업에서 70명이 동시 접속을 하니 서버가 다운되는 현상이 일어났다.

결국 평소에 사용하는데 필요 없는 사양까지 올리게 되었다.2

글을 쓰는 시점에 제공되고 있는 사양

세 번째 서버: 국내 호스팅

프로젝트 진행에 제안 관련 내용을 담기 위해 별도의 CMS를 이용하게 되었다. 이미 있는 서비스도 있었지만, 프로젝트에 참여하는 교수진이 이 서비스에 익숙하지 않았고, 이미 익숙한 서비스와 유사하게 이용할 수 있는 환경이 필요했기에 별도의 시스템을 구성할 수 밖에 없었다.

그런데 이 CMS 시스템을 이용해 관련 내용을 진행하는데, 문제가 생겼다.

업데이트가 제대로 진행되지 않는 문제인데, 업데이트만 안 되면 상관 없지만 업데이트 실패 후에 모든 페이지 접근에 오류가 생겨 학생도 접근할 수 없게 되었다.

그래서 해법을 고민하다가 CMS 만드는 회사에서 운영하는 호스팅 서비스를 이용하게 되었다.

다행히 해당 회사에서 제공하는 호스팅이 더 저렴하였고, 사양이 더 좋았다.

진행되는 프로젝트의 서비스를 이용하는 학생이 많았지만, 서비스 되는 페이지가 사용량을 많이 차지하지 않아 기본 제공량으로도 문제가 없었다.

내가 해커?

호스팅이 자꾸 죽었다

1년 요금을 미리 결제하고 사용하던 3번 째 달부터 호스팅 회사의 서비스에 문제가 생겼다.

주말 새벽에 서버가 다운된 것이다. 정확하게는 서버 접속에는 문제가 없었지만, 데이터베이스 서비스(MySQL)가 죽은 것이었다.

그 때부터 해당 회사의 문의 게시판에는 ‘서버가 느려졌다’, ‘접속이 잘 안 된다’는 등의 문의가 이어졌다.

해당 회사 담당자가 나름 빠르게 처리하려는 노력이 보였고, 이를 방지하기 위해 시스템을 보강하겠다는 공지와 함께 서버 사양을 올리는 작업이 있을 것이라는 공지가 올라왔다.

해킹의 증거

작업이 진행되고 있을 즈음 호스팅 회사에서 이메일이 왔다.

서버 장비 교체 작업 중에 사용하고 있는 계정으로 자원을 갉아먹는 서비스가 지속적으로 실행되고 있고, 이로 인해 서버 운영이 어려운 상황이 발생하고 있다는 것이다.3

그래서 이 프로그램을 실행하느냐는 것이었는데 아니라고 대답하였다.

프로젝트는 PHP로 처리되고 그 처리 내용도 문자열 처리하는 것이 전부였기에 그렇게 의심할 만한 프로그램도 아니었다. 이런 프로그램이 호스팅 서비스를 진행하기 어렵게 만들 리도 없지 않은가?

이런 내용의 이메일이 오가는 중에 회사의 대표를 통해 호스팅을 이용하는 단계부터 문의와 답변을 주고 받았으니 의심하는 것은 아니지만, 회사의 기술 부장이 해킹하려는 시도로 보이는 증거를 가지고 있다는 이상한 이메일을 받게 되었다.4

그러면서 호스팅을 이용하는 다른 회사에 피해가 계속 발생하니 환불을 해줄 테니 다른 서버로 이전해 달라는 요청을 받았다.

그래도 이전해 주세요

프로젝트 담당 연구진은 학기 말이라 학생이 시험을 마치는 2주 정도를 기다려 줄 것을 요청해 달라고 하였고, 이를 회사 측에 요청하였으나 답변은 이전과 같았다.5

다시 라이트 세일

그렇게 다시 라이트 세일로 돌아가게 되었다.

그런데 이상한 것은 다시 돌아온 서버에서는 국내 호스팅 회사에서 말하는 채굴 프로그램으로 보이는 활동이 없다는 것이다.

서버를 옮긴 뒤로 국내 호스팅 회사에서 발생한 일이 일어나지 않을 수 있는 방법을 모색하며 방화벽을 더 강화하고, 접근 IP를 주로 작업하는 PC의 IP로 제한하여 둔 것이 같은 일이 일어나지 않게 된 이유일 수도 있다.

아쉬움

하지만 아쉬운 것은 다시 라이트 세일로 이전하기 전에 국내 호스팅 회사에서 같은 조치를 취하고 해당 회사에서 공격이 멈추었다는 사실을 확인했음에도 계속 서버 이전을 요청했다는 사실이다.6

호스팅 회사는 호스팅 서비스가 주력인 회사가 아니었고, CMS 서비스를 주력으로 호스팅을 제공하는 회사라는 점이 호스팅에서 쫓겨나게 한 원인이 된 것이라는 결론에 이르게 한다.

서비스 개발 만으로 회사가 어렵사리 운영되고 있는 상황이니 별 문제가 없을 것으로 생각하고 진행하는 호스팅 서비스에서 문제가 생기는 상황은 회사 입장에서는 난감한 상황이었을 것이다.

이런 회사의 상황을 이해하고 서버를 이전하여 다른 이용자에게 어려움을 주지 않아야 한다는 이성적인 판단과는 별개로 아쉬움이 남는 것을 인간이기에 어쩔 수 없는 모양이다.

  1. 그 만큼 서버 환경이 좋지 않았다.[]
  2. 처음에는 첫 달 무료 혜택이 있는 $3.5짜리 사양(512MB, 1vCPU, 20GB SSD)으로 시작했는데, 동접자 문제로 서버가 다운되지 않는 사양으로 하나씩 올리다보니 $20짜리 사양(4Gb, 2vCPU, 80GB SSD)으로 올리게 되었다.학생들이 한 달 동안 사용하는 전송 용량은 1Gb도 안 된다.[]
  3. 서버 CPU 16개를 점유하는 서비스이고 담당자의 말로는 채굴 프로그램이 아닌가 싶다고 했다[]
  4. 주어가 생략되어 있어서 해킹 시도를 한 것이 당신이라는 뉘앙스로도 이해할 수 있는 문장이었다.[]
  5. 개인적인 생각으로도 프로젝트 진행에 차질이 있더라도 서버를 옮기는 것이 호스팅을 이용하는 다른 회사에 주는 피해를 최소화하는 것이라 생각했다. 하지만 서버 이동하는 중 큰 피해는 없었다.[]
  6. 이 부분이 제일 마음에 걸린다. 마치 내가 해커가 아니냐고 의심 받는 듯한 기분이다[]

윈도우즈용 Scrivener 3.0 출시 후보 7 출시 문서

이 문서는 공식 번역이 아니라는 사실을 밝혀둡니다. 다소 오류가 있을 수도 있으니 감안하시고 확인하시기 바랍니다. 윈도우즈용 Scrivener 3.0 출시 후보 6  출시 문서 에서 바뀐 것은 버그 수정 과 해결된 항목 부분이네요. 이제 출시 후보라 그런지 문제가 완전히 해결되었는지 확인하네요.

포에디트로 워드프레스 번역할 때 SFTP로 ‘서버에 접속’을 이용하려면 이 IP를 추가하세요

워드프레스 커뮤니티에서 번역을 시작했을 때, 번역 파일을 직접 내려받아 편집하려고 PoEdit(포에디트)를 사용했다. 플러그인 번역에 조금 더 열정을 가지게 되면서 프로판을 사서 운영하고 있는 워드프레스에 설치된 플러그인을 하나씩 번역하려고 했다.

처음에는 PC에 서버를 돌려서 해 보려고 했는데, ‘서버에 연결’ 방식으로는 내부 서버에 접속이 안 되었다. 이유는 기억이 안 나지만 몇 번 여러가지1로 시도했지만 되지 않아서, 이 블로그가 설치되어 있는 서버에 접속을 시도했다.

하지만 무슨 일인지 접속이 되지 않았다. 로그를 보면 접근 시도는 하는데, 인증이 되지 않았다. 개발자에게 문의를 해 보았더니 ‘서버에 연결’을 시도하는 PC에서 바로 접속하는 것이 아니라 포에디트 서버에서 인증 정보를 전달 받아 접속하는 것이기에, 포에디트 서버의 주소에서 접속할 수 있도록 허용해주면 된다고 했다.2

이 블로그는 우분투 18.04에 LEMP 스택으로 운영하는 서버에 있는데, 서버를 ssh로만 접근할 수 있도록 설정해 두었다. 외부에서 이 서버에 접근할 수 있는 방식을 ssh만 열어 놓았다는 말이다. 서버에 접근할 수 있는 방식을 ssh 포트로만 제한하고, 인스턴스 규칙과 방화벽(ufw) 규칙에 접근 가능한 IP를 제한해 두는 방식으로 보안을 강화해 놓았다.3

IP는 auditd를 설치하고, 포에디트의 ‘서버에 연결’을 시도하여, 접근하는 IP를 확인하는 방식으로 알아내었다. 이렇게 확인된 IP는 172.104.150.128이다. 혹시 포에디트 워드프레스 번역의 서버 접속이 안 된다면 이 IP를 방화벽 규칙에 허용해 주면 큰 문제 없이 사용할 수 있을 것으로 생각된다.

  1. hosts에서 일반 도메인 형식으로 설정도 해 보았지만 안 되었다[]
  2. 포에디트 개발자를 믿지 못하겠으면 안 하면 그만 이지만, 이 블로그의 자료는 수시로 백업이 되고 있어서 다 털어봤자 별로 중요한 내용을 건져갈 것도 없다[]
  3. 이 전에 별도의 규칙을 해 두지 않았더니 웬 듣보잡 해커놈이 들어와서 db와 cpu 자원을 마구 괴롭힌 경험을 한 뒤로 이렇게 강화하게 되었다. 이렇게 접근 ip를 제한하는 것 만으로도 장난질을 방지할 수 있다.[]