오랜만에 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여서 웃고 넘긴다.