Profile picture

[해킹 이슈] MySQL 데이터베이스 탈취 이슈

JaehyoJJAng2023년 03월 23일

사건 발단

  1. API 테스트 용으로 열어둔 서버가 하나 있는데 해당 서버랑 연동된 데이터베이스가 탈취당함.
  2. 아마도 DB 서버 포트를 외부에서도 접속 가능 하도록 허용 해줬던 것이 가장 큰 문제이지 않았나 생각이 듬
  3. 더 문제는 root 계정 비밀번호가 root 라는 사실 ㅋㅋ

아래 이미지는 해커가 남겨놓은 무시무시한 멧시지

image

데이터 복구하고 싶으면 48시간 이내에 비트코인 돈 입금해라 .. 아니면 니 데이터 못 찾는다 대충 이런 소리

해결 방법

image

저게 테스트용이었으니 망정이지 중요 DB였으면 큰일 났었겠다 싶었다.

아무리 테스트용이라지만 너무 허술하게 배포한 게 아니었나 하는 생각도 든다

  1. 데이터베이스의 경우 외부에서 접속 못하게 외부로 오픈한 포트를 막고 내부에서 DB로 접근할 수 있도록 하는 것을 추천한다고 함.
    • DB 접속 파이썬 코드도 수정
  2. DB의 root 계정 비밀번호를 어려운 비밀번호로 수정하기

YAML 수정

ports 옵션 삭제

mysql:
  #ports:
  #- "3306:3306"

.mysql.env 파일로 환경변수 관리되도록 수정

mysql:
  env_file:
    - ".mysql.env"

MySQL - Python 서버 연동

python:
  links:
   - "db:mysql"

.env 파일의 HOST를 아래와 같이 수정

# 기존
HOST=www.waytothem.shop
..
..

# 변경 후
HOST=mysql
..
..
  • 기존에 외부 포트 3306 열어둔 것을 주석 처리하고 내부 컨테이너끼리만 통신하도록 수정하였음
  • 기존에 environment 옵션을 통해 .yaml 내에서 환경변수 주었던 것을 파일로 관리하도록 함.
    • .mysql.env 파일을 .gitignore 에 등록하여 로컬에서만 관리하도록 수정
  • python 컨테이너에서 db 컨테이너 연동 : 연동 시 aliasmysql 로 지정

Loading script...