개인 프로젝트를 배포하고 황당한 일을 겪었다.
프로젝트가 배포 후 다 잘 작동되는 것을 확인하고 여러 상품 데이터들도 추가했었다.
그런데 사이트에 접속하니 상품이 아무것도 안보인다..
Cloud SQL을 사용하므로 Dbeaver로 Cloud SQL에 접속하여 데이터를 확인해봤다.
원래 있던 테이블들은 다 없어지고 웬 README 테이블만 있었다..
확인해봤다.
아.. 해킹 당했다;;
내용은 이렇다.
I have backed up all your databases. To recover them you must pay 0.012 Bitcoin to this address: 1KwnxK8HQiAyfrNfhPaa6UsjGQt2FtA6nV. Backup list: shopping-mall. After your payment email me at rdatabase.2104@onionmail.org with your server IP (34.64.205.124) and transaction ID. Emails without transaction ID will be ignored.
요약하면 데이터 다 훔쳐갔으니까 데이터 다시 살리고 싶으면 비트코인을 지불해라는 것이다. 금액은 0.012 비트코인. 현재 시세로 대략 46만원의 돈이다.
Cloud SQL을 공개 ip로 쓰니깐 바로 이런 일이 일어난다는게 놀라웠다.
회사를 다닐 때도 그렇고 해킹해서 한탕하려는 세력들이 많고 호시탐탐 기회를 노리고 있다는 것을 다시 한번 깨닫는다.
물론 중요한 데이터는 하나도 없으므로 절대 저 돈을 줄 생각은 없다.
공개 ip를 씀으로서 발생하는 위협을 예방하기 위해 VPC를 적용하였다.
vpc는 일종의 가상 네트워크 센터이다. IP 주소 범위 선택, 서브넷 생성, 라우팅 테이블 및 네트워크 게이트웨이 구성 등 가상 네트워킹 환경을 말한다.
위와 같이 GCP를 사용하면 자동으로 생성되는 vpc인 default vpc로 만들어준 DB 인스턴스를 넣어준다.
그리고 해당 vpc 안의 DB 인스턴스에 접근할 수 있는 비공개 ip를 자동으로 할당 받는다.
그리고 해당 비공개 ip 주소를 데이터베이스 연결 DNS에 적용한다.
이제 내 데이터베이스 접근은 비공개 ip로만 가능하여 보안상 안전해질 것으로 생각된다.
개발 편의성을 위해 그냥 공개 ip로 설정했던 것이 안일했던 생각이였다.
앞으로 이런 보안적인 디테일에 신경을 많이 써야겠다.
정보 감사합니다.