-
[NCP, MongoDB] 인스턴스 랜섬웨어 감염🩸 삽질의 추억 2024. 5. 14. 13:32728x90
목차
- 상황
- 사건의 발단
- 구체적인 상황들
- 추측
- 해결
- 그 외 트러블슈팅
상황:
사건의 발단
팀원들로부터 디비 밀었냐는 연락을 받음 --> 안밀었는데?
스택오버플로우 검색해보니 index에 expireDate 설정하는게 있다고함 --> 그런거 안했는데?
이상하군. 하고 디비랑 컬렉션 다시 만듦
몇시간 뒤에 들어가보니까 또 없어져있음
Gui 로 접속해보니 못보던 디비 발견비트코인 내노란다..
랜섬웨어다..구체적인 상황
1-1. 해당 서버 접속할 땐 공유 와이파이 사용 한 번도x 계속 집 와이파이로만 개발.
1-2. private team repo 에서 작업
1-3. 나 포함 모든 팀원이 ssh pem 키나 비밀번호를 어디 유출하거나 올린적이 없음.1-4. 여러 인스턴스가 있고 여러 스프링부트프로젝트와 몽고디비, mysql, redis 등이 올라가있으나
나만 도커로 스프링+몽고 띄움. 다른 사람들은 원격에서 build.gradle 로 스프링 실행&디비 직접 설치함.
1-5. 다른 조건 모두 동일한 새로 만든 인스턴스에서도 똑같은 상황 발생
추측 :
도커에 문제가 있는건 아닌가 싶음
아마도 공식에서 지원하지 않고 + 낚시용 버전을 다운 받은게 아닌가 싶음
image: mongo:6.0.10
이렇게 작성했었다.실제로 아래 링크에서 확인해보니 Offical Image 뱃지를 단 해당 버전은 존재하지 않았다.
https://hub.docker.com/_/mongo/tags?page=2&page_size=&ordering=&name=
해결:
세부 버전은 지우고 mongo (latest) 로 변경해서 해결했다.
이전에 세부 버전을 작성한 이유는 딱히 없었던 터라.. 그냥 로컬에 설치된 버전이랑 비슷하게 하고 싶었을 뿐..
=> 공식 문서, 공식 버전을 잘 확인할 것!
사실 이 이미지를 docker-compose 에 작성할때만해도 어느 블로그에 적힌 걸 그대로 사용했었다..
매우 반성함
오히려 감사할지도...
그 외 시도해본, 실패한 트러블 슈팅:
1. DB password 쉽지 않은 걸로 변경.
기존엔 root 처럼 매우매우 간단한 비밀번호를 적용했다.
이것 때문에 틀렸을까 싶어 특수문자,영대소문자,숫자를 모두 조합해보았으나 여전히 뚫렸음.
2. 새로운 인스턴스 띄우기
설마 인스턴스가 뚫렸을리는 없지만 혹시나 해서 교체.새로운 인스턴스에서도 도커+몽고가 뚫린 걸 보니 역시 인스턴스 해킹문제는 아니었음.(당연?하지만) ssh 접속기록에도 외부인이 접속한 기록은 없었다.
내가 설치하지 않은 프로그램이 새로 설치된 흔적도 없고..
3. 방화벽 설정
부끄럽지만 기존엔 보안에 크게 신경쓰지 않아서 inbound port만 설정하고 접근할 수 있는 ip에 대해서는 신경쓰지 않았다.
새로 만든 인스턴스는 생성하자마자 방화벽부터 설정했다.
허용한 ip 는 다음과 같다.
- MSA 구조 내에서의 다른 서비스가 담긴 서버의 IP
- 우리집 IP
- 팀원1의 IP
이 설정을 마치고 도커+몽고를 띄웠는데 뚫렸다.
돌고돌아서 해결하긴 했지만 덕분에 다른 서버들도 방화벽 설정 및 비밀번호 등 보안을 업데이트하는 계기가 됨
728x90'🩸 삽질의 추억' 카테고리의 다른 글
[.gitignore] 예외 처리 안됨 (0) 2024.05.27 [CaffeineCache] "RemovalListener 는 GC가 실행된 이후 호출된다." (0) 2024.05.15 [CaffeineCache] caffeineCacheManager iter, .toMap() 안됨 (0) 2024.05.11 [NCP, Spring Boot] NCP 로 HTTPS, SSL, 서브도메인 적용하기 (0) 2024.05.07 [Docker Desktop] 앱 안 열림/ resume 안됨/ restart 안됨 (0) 2024.05.04 - 상황