[ELK Stack] Phần 5: Cấu hình SSL, HTTPS cho Elasticsearch, Logstash và Kibana

Trong bài viết này mình sẽ hướng dẫn cấu hình SSL, Https cho ELK Stack theo trường hợp mình đã có sẵn Certificate.

Chuẩn bị các file Certificate cho ELK

Tạo thư mục:

sudo mkdir /etc/elasticsearch/ssl
sudo mkdir /etc/logstash/ssl
sudo mkdir /etc/kibana/ssl

Copy các file Certificate sau vào thư mục vừa tạo, ví dụ:
star_hoangits.site.crt
star_hoangits.site.key
star_hoangits.site.ca-bundle

Phân quyền

sudo chown elasticsearch:elasticsearch /etc/elasticsearch/ssl/*
sudo chown logstash:logstash/etc/logstash/ssl/*
sudo chown kibana:kibana/etc/kibana/ssl/*
sudo chmod 600 /etc/elasticsearch/ssl/*
sudo chmod 600 /etc/logstash/ssl/*
sudo chmod 600 /etc/kibana/ssl/*

Cấu hình lại Elasticsearch

sudo nano /etc/elasticsearch/elasticsearch.yml

Thêm đoạn cấu hình sau vào cuối file:

xpack.security.enabled: true 
xpack.security.transport.ssl.enabled: true 
xpack.security.transport.ssl.verification_mode: certificate 
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.key:etc/elasticsearch/ssl/star_hoangits.site.key
xpack.security.http.ssl.certificate:/etc/elasticsearch/ssl/star_hoangits.site.crt
xpack.security.http.ssl.certificate_authorities: /etc/elasticsearch/ssl/star_hoangits.site.ca-bundle

Lưu file và restart Elasticsearch

sudo systemctl restart elasticsearch

Vì ở đây mình chỉ cho các máy chủ giao tiếp nội bộ cùng nhau, nên mình sẽ khai báo file hosts để ánh xạ tên miền đến địa chỉ IP

sudo nano /etc/hosts

IP của máy chủ Elasticsearch là 100.0.0.1 và miền là elasticsearch.hoangits.site

Thêm dòng sau vào file hosts

100.0.0.1  elasticsearch.hoangits.site

Thực hiện cấu hình Kibana để có thể truy cập bằng HTTPS và chuyển giao dữ liệu cùng Elasticsearch được bảo mật

sudo nano /etc/kibana/kibana.yml

Tìm và điều chỉnh các dòng sau:

elasticsearch.hosts: ["https://elasticsearch.hoangits.site:9200"]
server.ssl.enabled: true
server.ssl.certificate: /etc/kibana/ssl/star.hoangits.site.crt
server.ssl.key: /etc/kibana/ssl/star.hoangits.site.key
elasticsearch.ssl.certificateAuthorities: /etc/kibana/ssl/star.hoangits.site.ca-bundle

Lưu file và restart lại Kibana

sudo systemctl restart kibana

Cấu hình Logstash

Các file cấu hình của logstash ở mục Output cần cấu hình bổ sung thêm CA

sudo nano /etc/logstash/conf.d/syslog.conf
output {
       elasticsearch {
       hosts => ["https://elasticsearch.hoangits.site:9200"]
       index => "index_name"
       user => "elastic" 
       password => "password" 
       ssl => true 
       cacert => "/etc/logstash/ssl/star_hoangits.site.ca-bundle"
       }
}

Một số lệnh debug
Kiểm tra log
sudo tail -f /var/log/kibana/kibana.log
Test xem đã thông với Elasticsearch chưa
curl -u ‘elastic:password’ -X GET “https://elasticsearch.hoangits.site:9200” -k