database
- 개발의 테스트 용도로, EC2 인스턴스에서 MySQL 컨테이너를 실행하여 사용하고 있었다. (로컬에서는 데이터베이스 관리 도구로 DBeaver를 사용 중이다.)
- 그런데.. 어제까지만 해도 잘 사용하고 있었는데 오늘 DBeaver를 켜보니..?
- 연결이 거부되었다고 한다. 컨테이너에 문제가 생긴 것 같아 EC2 인스턴스에서 컨테이너가 실행 중인지 확인해봤더니 컨테이너가 중지되어 있었다. 컨테이너가 중지된 이유를 확인하기 위해 컨테이너의 로그를 확인해보았다.
- 어제와 오늘 사이에 발생한 로그가 있었고, 위의 세부 설명처럼 MySQL 서버가 root 사용자로부터 종료 명령을 받았다고 한다. (MySQL 컨테이너는 그 안에서 실행되는 프로세스가 종료되면 종료된다.)
-> 나는 종료한 적이 없다. 따라서 다른 누군가가 MySQL 서버에 root 사용자로 로그인하여 종료했다는 것이므로, 해킹이 의심되었다.
- 컨테이너를 재시작하고 접속한 후, MySQL 서버에 root 사용자로 로그인하여 데이터베이스를 확인해보았다.
- 아니나 다를까, 내가 사용 중이던 “test” 데이터베이스가 없었다. 대신에 “RECOVER_YOUR_DATA”라는 데이터베이스가 있었고, 이 데이터베이스 안에 같은 이름의 테이블이 있었다. 이 테이블에 저장된 데이터는 위의 내용과 같은데, 요약하자면 “데이터를 살리고 싶으면 0.0123BTC를 달라”는 것이었다. (찾아보니 랜섬웨어라고 한다.)
-> 그러나, 테스트용 데이터 밖에 없어서 전혀 살릴 필요가 없었다.
- 컨테이너에 접속해서 MySQL 로그(/var/log/mysqld.log)도 확인해보려고 했지만, 아쉽게도 mysqld.log 파일은 비어있었다.
- MySQL은 기본적으로 로그 기록하는 부분이 OFF 처리되어 있기 때문이다.
- 내 데이터베이스 서버를 해킹한 이유는 모르겠지만, 해킹 당한 이유를 추측해보면 다음과 같다.
- EC2 인바운드 규칙에서 누구나 3306 포트로 접근 가능하도록 설정한 것 + root 사용자의 비밀번호를 1234로 설정한 것
- 앞으로 이런 상황을 염두해서 다음 사항들을 고려하여 개발해나가려고 한다.
- 백업 설정 + root 사용자의 비밀번호 설정 + 포트 번호 설정