제목은 거창하게 썼지만, 그리 심각한 문제는 아니었다.
시간이 없어 빠르게 적겠다.
유튜브 클론 그룹 프로젝트를 진행하고 있었다. 근데 어느 순간 보니, DB scheme 이 모두 지워져 있었다.
처음에는 누가 테스트코드를 운영 DB로 돌렸나 라고 생각하고 가볍게 다시 DB를 띄웠으나 또 얼마후 다 지워져 있었다.
문제점을 찾던 중 이런 것을 발견했다.

"누구냐 너"

자세히 읽어보니, 무슨 해적도 아니고 협박을 하고 있었다.
한마디로 너의 데이터는 납치되었다. 비트코인 보내면 돌려준다. 이런말이다.
이게 그 해킹이라는 것인가?
문제 원인은 간단했다. 보안이 약해서 그런 것이다.
포트도 mysql 기본 포트를 그대로 외부로 열어 놓고 있었고, root의 비밀번호도 유추하기 쉬운 비밀번호로 되어 있었다.
또 클라우드에서 네트워크 보안도 딱히 없었기 때문에,,,
그냥 공격자들보고 들어오라고 환영하는 수준이었다.
사실 개발용으로 띄워놓은 데이터베이스라 다시 테이블을 만들어도 별 문제는 없었지만, 마침 또 해킹을 당한 김에 복구도 해보기로 하였다.
생각보다 해킹이라고 하기에는 복구하기가 너무 쉬웠다. 대신 실제 운영서버였으면 데이터 유출로 큰 고통을 겪었을 것이다.
실무를 해본건 아니지만, 실무에서 분명히 복구해야할 일은 꽤나 있을 것이다.
이 글을 참고하였다.
https://hudi.blog/mysql-pit-recover/
바이너리 로그를 이용해서 복구를 시키는 방법이다. 너무 잘 정리해 놓으셔서 링크를 첨부하는게 나을 것 같다.
바이너리 로그를 보니, 해커가 언제 무슨짓을 했는지도 볼 수 있었다. 새벽 두시쯤에, 저 협박성 테이블을 만들고, DROP TABLE을 한 후, ROOT유저의 권한을 뺏어버렸다, INSERT 부터 DROP 등등

해커가 한 부분을 주석처리하고, db에 밀어넣음으로서 복구하였다.
다음에 이와같은 문제를 예방하려면 어떻게 해야할까