사건 발단
- API 테스트 용으로 열어둔 서버가 하나 있는데 해당 서버랑 연동된 데이터베이스가 탈취당함.
- 아마도 DB 서버 포트를 외부에서도 접속 가능 하도록 허용 해줬던 것이 가장 큰 문제이지 않았나 생각이 듬
- 더 문제는 root 계정 비밀번호가 root 라는 사실 ㅋㅋ
아래 이미지는 해커가 남겨놓은 무시무시한 멧시지
데이터 복구하고 싶으면 48시간 이내에 비트코인 돈 입금해라 .. 아니면 니 데이터 못 찾는다 대충 이런 소리
해결 방법
저게 테스트용이었으니 망정이지 중요 DB였으면 큰일 났었겠다 싶었다.
아무리 테스트용이라지만 너무 허술하게 배포한 게 아니었나 하는 생각도 든다
- 데이터베이스의 경우 외부에서 접속 못하게 외부로 오픈한 포트를 막고 내부에서 DB로 접근할 수 있도록 하는 것을 추천한다고 함.
- DB 접속 파이썬 코드도 수정
- 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
컨테이너 연동 : 연동 시alias
를mysql
로 지정