카테고리 없음

mongodb가 해킹당했다... hacked_by_unistellar

개발자_이훈규 2019. 8. 11. 08:43

오랜만에 mongodb에서 작업을 하려고 계정을 확인해보니 db들이 사라지고 왠 hacked_by_unistellar db가 존재했다...

내가 해킹이나 계정관리에 소홀한건 인정하지만 이렇게까지 되니 당황스럽다.

 

그래서 일단 mongodb log(범죄 현장)을 확인해본 뒤에 mongodb을 다시 설치해보겠다.

> show dbs
admin                 0.000GB
config                0.000GB
hacked_by_unistellar  0.000GB
local                 0.000GB

 

 

1. Mongodb 로그 보기

로그는 아래 주소에 위치한다.

/var/log/mongodb

 

로그를 확인해보니 8월 초부터 이것 저것 접속한 이력이 있다가 8월 7일, 8일에 hacked_by_uninstallar에 이것 저것 작업한게 있는것 같다.

이걸 쓰는 와중에도 mongod 접속이 포트가 사용중이라 안된다길래 pid로 kill날리고 로그를 확인해보니 이런게 있다;;

4 connections now open

 

mongodb을 잘 몰라서 그런걸 수 있지만 mongodb에 서비스 물린것도 없고 이전엔 0 connections now open 이였던거 보니 뭔가 찜찜하다...

 

2019-08-07T00:41:37.619+0900 I COMMAND  [conn254] command hacked_by_unistellar command: eval { $eval: db.getCollection('restore').stats(), args: [], $readPreference: { mode: "secondaryPreferred" }, $db: "hacked_by_unistellar" } numYields:0 reslen:6790 locks:{ Global: { acquireCount: { r: 5, W: 1 } }, Database: { acquireCount: { r: 2 } }, Collection: { acquireCount: { r: 2 } } } protocol:op_query 197ms

2019-08-08T13:32:05.909+0900 I COMMAND  [conn261] command hacked_by_unistellar command: eval { $eval: db.getCollection('restore').stats(), args: [], $readPreference: { mode: "secondaryPreferred" }, $db: "hacked_by_unistellar" } numYields:0 reslen:6790 locks:{ Global: { acquireCount: { r: 5, W: 1 } }, Database: { acquireCount: { r: 2 } }, Collection: { acquireCount: { r: 2 } } } protocol:op_query 258ms

 

아무튼 로그만 따로 카피하고 어서 mongodb자체를 지워야겠다.

로그을 뒤져보다보면 내 Collection을 날리는 부분이 있을것 같긴 한데 지금 우선은 다시 설치하고 포트를 변경 먼저 하기록 한다.

 

2. Mongodb  다시 설치하기

각자의 방법대로 uninstall 후에 install을 해보자.

결과는 아래처럼 다 사라졌다.

> show users
> show dbs
admin  0.000GB
local  0.000GB

 

그리고나서 port도 변경한다.

$ vi /etc/mongod.conf

logappend=true                                                                  

bind_ip = 0.0.0.0                                                               
port = [원하는 포트로] 

변경하고나서 서비스 재시작을 하면 포트가 변경된게 보인다.

$  service mongodb restart
$  sudo lsof -iTCP -sTCP:LISTEN -n -P

$  mongod --port [변경한 포트]
$  mongo --port [변경한 포트]

 

이제 client에서 접속할 때 변경한 포트를 넣어줘야하는 불편함은 있지만 데이터가 날라가는 것보단 편한것 같다.

 

 

 

이번의 교훈은,

소도 잃어봐야 외양간을 고친다.

 

토이 프로젝트 DB여서 웃고 넘긴다.