[ELK]Elasticsearch built-in security features are not enabled. 경고(문제) 해결 - 사진 O

데스크탑에서 ELK 환경을 구성하던 도중 설치 이후 Kibana Dev Tools을 통해 ElasticSearch와의 연동이 정상적인지 확인하던 와중 아래와 같은 경고 메시지를 발견하였다.

보안 관련 경고문

해당 메시지를 확인해보면 다음과 같다.

#! Elasticsearch built-in security features are not enabled.
Without authentication, your cluster could be accessible to anyone.
See https://www.elastic.co/guide/en/elasticsearch/reference/7.17/security-minimal-setup.html to enable security.
엘라스틱 서치의 내장된 보안 기능이 비활성화 되어있다. 인증이 없다면, 현재 ELK 클러스터는 누구나 접근이 가능하다.
보안 기능을 활성화하려면 다음의 문서를 참고해라

경고 문구에서 안내한 문서

해당 문서를 차차 짚어보면서, 어떤 과정을 사용하는지에 대해 알아보자.

 

작성하기에 앞서 현재 사용중인 환경은 다음과 같다.

 

  • OS: Ubuntu-20.04.6-desktop-amd64.iso
  • ElasticSearch: 7.17.11
  • Kibana: 7.17.11
  • 방화벽: 해제

추가적인 VM 환경


해결 과정

1. 현재 실행중인 ElasticSearch & Kibana 중지

root@MGMT-0702:~# systemctl stop elasticsearch
root@MGMT-0702:~# systemctl stop kibana

2. elasticsearch.yml 파일에 아래 내용 추가 - 단일 노드일 경우 추가 구성

xpack.security.enabled: true

discovery.type: single-node # 단일 노드일 경우 추가

위의 예시이다.

3. ELK 내장 사용자의 암호 생성

본인은 이 과정에서 문제를 겪었는데, 설치한 ElasticSearch와 Kibana의 실행 바이너리 파일들의 위치를 못찾아서 한참을 헤멧다. 더 스마트한 분들은 바로 찾으셨수도..

저 위치가 어딘교...

아무튼 이곳 저곳 뒤져보다가, ElasticSearch 설정 관련 문서에서 설마 저기에 있는걸까 해서 확인해보니 실행파일들의 위치는 다음과 같았다. - /usr/share

root@MGMT-0702:~# ls /usr/share/elasticsearch/bin/
elasticsearch           elasticsearch-env            elasticsearch-node             elasticsearch-shard                systemd-entrypoint
elasticsearch-certgen   elasticsearch-env-from-file  elasticsearch-plugin           elasticsearch-sql-cli              x-pack-env
elasticsearch-certutil  elasticsearch-geoip          elasticsearch-saml-metadata    elasticsearch-sql-cli-7.17.11.jar  x-pack-security-env
elasticsearch-cli       elasticsearch-keystore       elasticsearch-service-tokens   elasticsearch-syskeygen            x-pack-watcher-env
elasticsearch-croneval  elasticsearch-migrate        elasticsearch-setup-passwords  elasticsearch-users

아마 지금까지 CentOS7 환경만 사용해서 몰랐다고 생각되기도 한다..

 

아무튼간에 저 위치를 찾았기 때문에, 문서에서 안내하는 방식을 모두 사용이 가능하다!


실행 파일의 위치를 찾고 나서 다음의 과정을 거치면 된다.

3-1. ElasticSearch 실행

본인은 ./bin/elasticsearch 명령어를 통해 실행시킬 때 아래의 오류가 발생했다.

root@MGMT-0702:/usr/share/elasticsearch# ./bin/elasticsearch
[2023-07-03T00:28:53,079][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [MGMT-0702] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
	at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:173) ~[elasticsearch-7.17.11.jar:7.17.11]
	at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:160) ~[elasticsearch-7.17.11.jar:7.17.11]
    
    ... 생략 ...

이는 ElasticSearch가 root 사용자로부터 실행되었기 때문에 발생하는 오류였다.

따라서, 그냥 서비스 데몬에게 실행을 맡겨 수행했다. - systemctl start elasticsearch

 

3-2. 암호 생성 및 설정

이제 2가지 방법으로 ELK에서 사용하는 기본 사용자의 암호를 설정할 수 있다.

 

첫번째는 자동으로 암호를 생성하는 방법(auto)이고,

두번째는 사용자가 직접 암호를 입력하여 생성하는 방법(interactive)이다.

 

이를 수행하려면 각각 아래와 같다.

./bin/elasticsearch-setup-passwords auto # 자동 생성

./bin/elasticsearch-setup-passwords interactive # 직접 생성

주의할 점은 setup-passwords로 비밀번호를 생성할 경우 최초 한번만 가능하고, 위의 명령어를 다시 사용한다고 해서 비밀번호가 재설정 되는 것이 아니다.

 

본인은 처음에 auto로 생성했다가 이를 까먹어서 그냥 test123으로 지정하여 모든 기본 사용자의 비밀번호를 지정했다. 지정하는 과정은 아래와 같다.

root@MGMT-0702:/usr/share/elasticsearch# ./bin/elasticsearch-setup-passwords interactive
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y


Enter password for [elastic]: 
Reenter password for [elastic]: 
Enter password for [apm_system]: 
Reenter password for [apm_system]: 
Enter password for [kibana_system]: 

... 생략 ...

=> 각 비밀번호를 직접 입력하는 과정을 거친다.

4. 비밀번호를 통해 ElasticSearch에 접속하기 위해 Kibana 설정

/etc/kibana/kibana.yml 설정 파일에 아래와 같은 부분을 추가한다.

이는 elasticsearch에 접속할 때 사용할 사용자 명과 비밀번호를 지정한 것이다.

해당 부분. kibana_system의 각자의 비밀번호를 넣어주자.

더보기

./bin/kibana-keystore create 등의 과정을 통해서 인증 관련된 파일을 생성하려고 할 때, 이미 존재하는 파일이 있다고 해서, 위의 설정만 수행했다.

이제, 키바나를 다시 실행시키면 된다.


결과 확인

이제 키바나 서비스 포트에 접속하면 제공되는 기본 화면

이제 키바나가 인증을 요구하게 설정되었다.

로그인을 원한다면 앞서 설정했던 사용자 중에 elastic을 사용하면 된다.

elastic & [앞서 설정한 비밀번호] 를 통해서 로그인을 하면 아래와 같이 메인 화면이 제공된다.

elastic 사용자로 로그인된 상태

 

최종적으로 이 경고를 발생시켰던 쿼리를 다시 실행시켜보면, 아래와 같다!

해결!

728x90
반응형