Dev/Troubleshoot

Elasticsearch 인덱스가 자꾸 삭제된다면 ?!

두넌 2024. 3. 22.

배경

프로젝트 진행 중, 효율적인 검색 등 여러 이점을 취하기 위하여 ELK 스택을 프로젝트에 도입하게 되었다

가끔 이틀에 한번씩 계속 인덱스가 삭제되어서, NoSuchIndexException 이 발생하였고

왜 이런 현상이 발생하는 지 계속 찾게 되었다

2024-03-21 01:54:44.252 [http-nio-8080-exec-1]
ERROR org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet]
- Servlet.service() for servlet [dispatcherServlet] in context with path []
threw exception [Request processing failed; nested exception is org.springframework.data.elasticsearch.NoSuchIndexException:
Index [books] not found.; nested exception is [books] ElasticsearchStatusException[Elasticsearch exception [type=index_not_found_exception,
reason=no such index [books]]]] with root cause

 

원인

http://{엘라스틱서치 서버 주소}/_cat/indices?v

위 명령어로 인덱스를 조회해 보았다

 

왠 모르는 read_me 라는 인덱스가 생성되어 있었고

 

내 모든 데이터가 백업되었고, 삭제했으니 이를 찾고싶으면 비트코인을 입금하란다

아무래도 랜섬웨어에 당한 것 같다. 찾아보니 이런 경우가 많다고 한다

 

왜?

Elasticsearch 를 도입할 때, 어떠한 보안적인 사항을 고려하지 않았다

포트도 기본 서비스 포트(9200) 을 사용했으며, 인스턴스에서 해당 포트로 접근하는 IP 정책도 설정하지 않았으며, username이나 password 도 지정해주지 않았었다

연습하기 위해서 생성했던 인스턴스라서 다음에 고쳐야지 하다가 이렇게 당하게 되었다

 

하지만 백업 해놔서 괜찮다(이번이 한번이 아니었기에..)

 

해결 방안

해결 방안으로는 많은 방법이 존재할 것 같다. 위에서 말했듯

  • 포트 번호를 기본 서비스 포트(9200) 에서 다른 임의의 포트번호로 실행시킨다
  • 서버 인스턴스에 접근하는 IP주소를 제한한다(내부 IP 등)
  • username, password를 생성하여 보안을 유지한다

 

나는 아이디와 패스워드를 도입하여, 보안을 적용했고 그 이후에는 이런 현상이 발생하지 않고 있다

elasticsearch, kibana, logstash 및 spring 프로젝트에서 해당 설정을 하는 방법은 아래 링크를 참조하면 될 것이다!

 

댓글