본문 바로가기
Data/ELK

[2021.05.25~28] 인턴 +85 ELK install (Ubuntu20.04) + XPack(Security 설정 및 User Create) + jdbc on Azure

by injekim97 2021. 5. 25.
반응형

[2021.05.25~28] 인턴 +85  ELK install (Ubuntu20.04) + XPack(Security 설정 및 User Create) + jdbc  on Azure

 

 

 

Detection 기능을 사용하기 위해, elk에 아이디와 비밀번호를 설정해줘야 한다.

자, Security(ID & PASSWORD)를 설정하는 방법에 대해 알아보자

 

* Linux(Ubuntu20.04) version

 

 

-----------------------------------------------------------------------------------------------------------------------------------

* Azure에서 VM을 만들어서 ~ ELK-Xpack 기능 설정 까지(최대한 요약함, 다른 게시글에서 많이 했기 때문)

 

 

 

 

<Git Bash 접속>

 ssh -i ELK-Xpack_key.pem azureuser@20.194.48.93

 

 

 

---------------------------------------------------------------------------------------------------

1. Linux(Ubuntu20.04)에서 JAVA 설치

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install openjdk-11-jdk
java -version



 

2. ELK 설치전에 각 홈페이지 들어가서 최신 버전 확인 후, 설치

elasticsearch 
-> https://www.elastic.co/kr/downloads/elasticsearch 

Kibana를 설치한다.
-> www.elastic.co/kr/downloads/kibana  


Logstash 
-> www.elastic.co/kr/downloads/logstash  

filebeat 설치
-> www.elastic.co/kr/downloads/beats/filebeat

 

* DEB X86_64 에 마우스 커서를 가져다 놓으면,  deb 파일 링크가 7시 방향에 뜨는것을 확인할 수 있음

-> DEB X86_64 에 오른쪽 마우스를 눌러 링크 복사 

-> 링크 복사후 Liunx에서 wget 컨트롤 + V

 

 

<Linux에서 elastic,logstash,kibana,filebeat 파일 가져오는 방법>

* arm이 아닌, amd64로 가져와야함.(elastic,kibana : DEB X86_64 logstash, filebeat: DEB 64-BIT)

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.13.0-amd64.deb
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.13.0-amd64.deb
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.13.0-amd64.deb
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.13.0-amd64.deb

 

-> 버전이 업그레이드가 됐으면, 해당 링크를 복사 후 숫자만 바꿔주면 됨 ex)7.13.0 -> 7.14.0


 
<해당 명령어 수행시>

 

 

------------------------------------------------------------------------------------

이제, dpkg 명령어를 통해 deb 파일들을 풀어 설치해보자
3. ELK 및 파일 비트 설치

sudo dpkg -i elasticsearch-7.13.0-amd64.deb
sudo dpkg -i logstash-7.13.0-amd64.deb
sudo dpkg -i kibana-7.13.0-amd64.deb
sudo dpkg -i filebeat-7.13.0-amd64.deb



 

 

 

----------------------------------------------------------------------------------

4. elasticsearch 디렉토리로 접근하기 위한 권한 설정 후, elasticsearch.yml 설정

 

elasticsearch 실행을 위한 권한 설정(azureuser는 ubuntu에 나타나는 @앞 id를 뜻함)

* 복사해서 전부 실행

sudo chown -R azureuser:azureuser /etc/elasticsearch 
sudo chown -R azureuser:azureuser /usr/share/elasticsearch/bin
sudo chown -R azureuser:azureuser /etc/default/elasticsearch
sudo chown -R azureuser:azureuser /var/log/elasticsearch
sudo chown -R azureuser:azureuser /var/lib/elasticsearch

 

 

/etc/elasticsearch/elasticsearch.yml

network.host: 0.0.0.0
http.port: 9200
discovery.type: single-node
xpack.security.enabled: true

 

 

* elasticsearch 실행

/usr/share/elasticsearch/bin$ ./elasticsearch

 

 

 

* 만약, elasticsearch 실행시 아래와 같은 에러발생

 

에러내용

Unexpected response code [500] from calling GET http://172.17.0.2:9200/_security/_authenticate?pretty It doesn't look like the X-Pack security feature is enabled on this Elasticsearch node. Please check if you have enabled X-Pack security in your elasticsearch.yml configuration file. ERROR: X-Pack Security is disabled by configuration.

해결방법 : [500]에러는, elasticsearch가 실행중이여서 에러가 발생함. 실행 -> 종료후 -> 재실행.


재실행시 아래와 같은 에러가 발생 (chown -R 이 아닌, chmod로 줄 것)

sudo chmod 777 /etc/default/elasticsearch
sudo chmod 777 -R /etc/default/elasticsearch
chmod -R 777 /etc/default/elasticsearch
./elasticsearch

--------------------------------------------------------------------------------------------------

5. kibana 디렉토리로 접근하기 위한 권한 설정 후, kibana.yml 설정(/etc/kibana)

 

* kibana 실행을 위한 권한 설정 및 디렉토리 생성
* 복사해서 전부 실행 (무조건 차례대로 명령어 복사해서 수행 할 것) 

 

sudo chown -R azureuser:azureuser /etc/kibana
sudo mkdir /usr/share/kibana/config
sudo mkdir /usr/share/kibana/data
sudo chown -R azureuser:azureuser /usr/share/kibana

 

<kibana.yml 수정>

server.port: 5601
server.host: 0.0.0.0
elasticsearch.hosts: ["http://localhost:9200"]

 

 

<kibana.yml 수정 후, 아래 명령어 복붙 후 수행>

sudo cp kibana.yml /usr/share/kibana/config/kibana.yml
sudo chmod 777 /usr/share/kibana/data/
sudo chown -R azureuser:azureuser /usr/share/kibana/config

 

 

 

이렇게 수행한 후, kibana 실행시 에러가 발생함

 

 

--------------------------------------------------------------------------------------------

<Elasticsearch,kibana(로그인 기능 설정 - XPACK)>

 

 

 

elasticsearch,kibana 실행한 상태에서, 아래와 같은 명령어 수행

sudo ./elasticsearch-setup-passwords auto

 

★ 아래와 같은 사진이 안뜨면, 계속 elasticsearch,kibana 연결 끊었다가, 다시 실행 후

sudo ./elasticsearch-setup-passwords auto

 

 

<비번 따로 txt 파일에 저장하기>

Changed password for user apm_system
PASSWORD apm_system = U0lZ9C9FNySqXK6QkfLd

Changed password for user kibana_system
PASSWORD kibana_system = ZTS9jtJzedK0o1DJ61F0

Changed password for user kibana
PASSWORD kibana = ZTS9jtJzedK0o1DJ61F0

Changed password for user logstash_system
PASSWORD logstash_system = nhXXYDc8SB0pWwhew35w

Changed password for user beats_system
PASSWORD beats_system = Uguj1h6jKmGAiriUOMgv

Changed password for user remote_monitoring_user
PASSWORD remote_monitoring_user = vadQTnJCeOTGjGHhyNRf

Changed password for user elastic
PASSWORD elastic = WJxMUyU17wXrLba5jlWX




<해당 명령어 순서대로 수행>

sudo systemctl stop elasticsearch && sudo systemctl stop kibana
/usr/share/elasticsearch/bin 
./elasticsearch 실행
curl -XGET -u elastic:WJxMUyU17wXrLba5jlWX http://localhost:9200/_cluster/health?pretty

 

azureuser@ELK-Xpack:/$ curl -XGET -u elastic:WJxMUyU17wXrLba5jlWX http://localhost:9200/_cluster/health?pretty
{
  "cluster_name" : "elasticsearch",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 1,
  "active_shards" : 1,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

* -u elastic : 바뀐 비밀번호를 입력해야함(auto로 정해진 password 젤 아래(elastic)꺼

 

 

 

 

 

 

 

 

----------------------------------------------------------------------------------------------
< kibana.yml 수정 2가지 경로 모두 해줘야함 ★>

* ★ kibana.yml에선 username은 kibana, password는 kibana 비밀번호를 적어줘야함

sudo vi /etc/kibana/kibana.yml
sudo cp /etc/kibana/kibana.yml /usr/share/kibana/config/kibana.yml

 

elasticsearch.username: "kibana"          # kibana_system -> kibana로 변경
elasticsearch.password: "ZTS9jtJzedK0o1DJ61F0"

  auto로 저장된 비밀번호 값 적어줌(kibana_system 이 아닌, kibana 비밀번호임  

또한, auto로 저장된 순서(맨위에서 3번쨰 - kibana임)

->elastic 비번이 아니다.

 


---------------------------------------------------------------------------------------------------
<위의 2가지에 kibana.yml 업데이트 안할시 에러발생>

 log   [03:07:34.722] [info][monitoring][monitoring][plugins] config sourced from: production cluster
  log   [03:07:35.023] [info][savedobjects-service] Waiting until all Elasticsearch nodes are compatible with Kibana before starting saved objects migrations...
  log   [03:07:35.149] [error][savedobjectservice] Unable to retrieve version information from Elasticsearch nodes.



 

해결방법 (두 가지 경로에 있는 kibana.yml를 수정해줘야함)

sudo vi /etc/kibana/kibana.yml
sudo vi /usr/share/kibana/config/kibana.yml
elasticsearch.username: "kibana"          # kibana_system -> kibana로 변경
elasticsearch.password: "ZTS9jtJzedK0o1DJ61F0"

 

<logstash 실행 하기 위한 권한 설정>

sudo chown -R ubuntu:ubuntu /usr/share/logstash/data/
sudo chown -R ubuntu:ubuntu /var/lib/logstash/
sudo chown -R ubuntu:ubuntu /usr/share/logstash/logstash-core/lib/logstash/settings.rb

sudo mkdir /usr/share/logstash/data/queue
sudo chown -R ubuntu:ubuntu /usr/share/logstash/data/queue
sudo chown -R ubuntu:ubuntu /var/log/logstash/

 

 

--------------------------------------------------------------------------------------------------------------------------

* 해당 에러가 발생할 때 해결방법

[FATAL] 2021-05-21 07:17:18.402 [main] runner - An unexpected error occurred! {:error=>#<ArgumentError: Path "/usr/share/logstash/data/queue" must be a writable directory. It is not writable.>, :backtrace=>["/usr/share/logstash/logstash-core/lib/logstash/settings.rb:530:in `validate'", "/usr/share/logstash/logstash-core/lib/logstash/settings.rb:290:in `validate_value'", "/usr/share/logstash/logstash-core/lib/logstash/settings.rb:201:in `block in validate_all'", "org/jruby/RubyHash.java:1415:in `each'", "/usr/share/logstash/logstash-core/lib/logstash/settings.rb:200:in `validate_all'", "/usr/share/logstash/logstash-core/lib/logstash/runner.rb:326:in `execute'", "/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/clamp-0.6.5/lib/clamp/command.rb:67:in `run'", "/usr/share/logstash/logstash-core/lib/logstash/runner.rb:274:in `run'", "/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/clamp-0.6.5/lib/clamp/command.rb:132:in `run'", "/usr/share/logstash/lib/bootstrap/environment.rb:88:in `<main>'"]}

 

error=>#<ArgumentError: Path "/usr/share/logstash/data/queue" must be a writable directory. It is not writable.

-> 해당 디렉토리(/usr/share/logstash/data/queue)에 쓰기 권한이 없어서 오류가 발생

-> 해결 하기 위해 아래와 같은 명령어를 붙여 넣기 하면 된다. 

sudo mkdir /usr/share/logstash/data/queue
sudo chown -R azureuser:azureuser /usr/share/logstash/data/queue

 

 

아래와 같은 Error 발생시

/var/log/logstash/logstash-plain.log java.io.IOException: Permission denied


* 해결방법 (권한 부여)

sudo chown -R azureuser:azureuser /var/log/logstash/

 

 

 

만약 logstash 실행 시 아래와 같은 에러가 발생했다면? 

[FATAL] 2020-08-01 13:57:01.895 [LogStash::Runner] runner - Logstash could not be started because there is already another instance using the configured data directory.  If you wish to run multiple instances, you must change the "path.data" setting.


해결 방법 :  

ps -ef | grep logstash  후에 (숫자가 두개 나오는데 맨앞에꺼 적어줌)

kill -9 맨앞에(숫자 입력)

-> 그런 후에 다시, ps -ef | grep logstash 하면 종료된 것을 확인할 수 있음 (logstash재실행)


----------------------------------------------------------------------------------------------------------------------

<ELK - XPACK 적용화면>

id : elastic
password: WJxMUyU17wXrLba5jlWX   # ★elastic 전용 비밀번호로 들어가야함(auto로 설정한 비번 젤 마지막꺼) ★

 

 

<ELK 아이디 생성방법>

-> search 창에 users

 

 

-> create user 클릭

 

-> create user 

 

 

-> ID가 생성된 것을 확인할 수 있다.

 

 

<생성한 아이디로 접속해보자>

 

-> 정상적으로 로그인 되었다. 

 

 

 

* 4일만에, ELK - XPACK 기능 설정을 완료 하였다. (원인 : 구글에 제대로 된 자료 및 설명이 없다)

 

 

------------------------------------------------------------------------------------------------------------------------

jdbc_plguin 설치 방법(20.04 version)

* jdbc_plugin도, ubuntu에 버전에 맞게 설치해줘야 함.

 

 

 

자, logstash를 실행하기 앞서, jdbc_driver를 설치해야 한다.

 

dev.mysql.com/downloads/connector/j/-

 

MySQL :: Download Connector/J

MySQL Connector/J 8.0 is highly recommended for use with MySQL Server 8.0, 5.7 and 5.6. Please upgrade to MySQL Connector/J 8.0.

dev.mysql.com

-> 해당 링크로 들어가면 jdbc_driver를 다운로드할 수 있다.(각 OS에 맞게)

 

 

No thanks, just start my download. 에 마우스 커서를 가져다 놓으면, 7시방향에 링크주소가 뜸.

 

 

2021-08-02 version 아래 명령어 복붙해서 리눅스에 그대로 사용

wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java_8.0.26-1ubuntu20.04_all.deb

 

 

sudo dpkg -i mysql-connector-java_8.0.23-1ubuntu20.04_all.deb

-> deb 파일을 풀기 위해선, sudo dpkg -i 파일명. deb

 

 

 

 

 

 

-------------------------------------------------------------------------------------------------------------------

* Linux에서(Mysql 설치 및 외부접속 허용방법)

https://injekim97.tistory.com/184

 

[2021.04.15] 인턴 +45 가상머신(Ubuntu_Azure)에서 MySQL 설치

[2021.04.15] 인턴 +45  가상 머신(Ubuntu_Azure)에서 MySQL 설치하기 나의 실습환경은 Azure에서 제공해주는 가상머신(Ubuntu)를 만든 상태이다. dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/ MySQL :: A..

injekim97.tistory.com

 

반응형

댓글