Database 해킹당하다.

유알·2023년 6월 4일

[프로젝트]

목록 보기
2/3

제목은 거창하게 썼지만, 그리 심각한 문제는 아니었다.
시간이 없어 빠르게 적겠다.

문제 상황

유튜브 클론 그룹 프로젝트를 진행하고 있었다. 근데 어느 순간 보니, DB scheme 이 모두 지워져 있었다.

처음에는 누가 테스트코드를 운영 DB로 돌렸나 라고 생각하고 가볍게 다시 DB를 띄웠으나 또 얼마후 다 지워져 있었다.
문제점을 찾던 중 이런 것을 발견했다.

"누구냐 너"

자세히 읽어보니, 무슨 해적도 아니고 협박을 하고 있었다.

한마디로 너의 데이터는 납치되었다. 비트코인 보내면 돌려준다. 이런말이다.

이게 그 해킹이라는 것인가?

문제 원인

문제 원인은 간단했다. 보안이 약해서 그런 것이다.
포트도 mysql 기본 포트를 그대로 외부로 열어 놓고 있었고, root의 비밀번호도 유추하기 쉬운 비밀번호로 되어 있었다.
또 클라우드에서 네트워크 보안도 딱히 없었기 때문에,,,

그냥 공격자들보고 들어오라고 환영하는 수준이었다.

문제의 해결 - 복구

사실 개발용으로 띄워놓은 데이터베이스라 다시 테이블을 만들어도 별 문제는 없었지만, 마침 또 해킹을 당한 김에 복구도 해보기로 하였다.

생각보다 해킹이라고 하기에는 복구하기가 너무 쉬웠다. 대신 실제 운영서버였으면 데이터 유출로 큰 고통을 겪었을 것이다.

실무를 해본건 아니지만, 실무에서 분명히 복구해야할 일은 꽤나 있을 것이다.

이 글을 참고하였다.
https://hudi.blog/mysql-pit-recover/
바이너리 로그를 이용해서 복구를 시키는 방법이다. 너무 잘 정리해 놓으셔서 링크를 첨부하는게 나을 것 같다.

바이너리 로그를 보니, 해커가 언제 무슨짓을 했는지도 볼 수 있었다. 새벽 두시쯤에, 저 협박성 테이블을 만들고, DROP TABLE을 한 후, ROOT유저의 권한을 뺏어버렸다, INSERT 부터 DROP 등등

해커가 한 부분을 주석처리하고, db에 밀어넣음으로서 복구하였다.

문제의 해결 - 예방

다음에 이와같은 문제를 예방하려면 어떻게 해야할까

  • 포트를 기본포트를 그대로 노출하는 것은 방지하자
  • 비밀번호를 너무 뻔한거는 사용하지 말자
  • 가능하면 네트워크를 잘 설정하여 외부에서 함부로 접근할 수 없도록 하자
profile
더 좋은 구조를 고민하는 개발자 입니다

0개의 댓글