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