Dalam tutorial ini, Anda akan belajar cara mengaktifkan koneksi HTTPS antara node Elasticsearch. Salah satu fitur keamanan Elastic adalah mengaktifkan enkripsi antar node cluster Elasticsearch menggunakan koneksi HTTPS.
Jika Anda ingin mempelajari cara mengonfigurasi dan mengatur cluster Elasticsearch, lihat panduan kami sebelumnya dengan mengikuti tautan di bawah ini;
Konfigurasikan Cluster Elasticsearch Multi-node
Lihat juga;
Aktifkan Koneksi HTTPS Kibana
Aktifkan Koneksi HTTPS Antara Elasticsearch Nodes
Node Elasticsearch dalam sebuah cluster berkomunikasi melalui protokol transport yang menggunakan port TCP 9300. Perhatikan bahwa koneksi HTTP antara Elasticsearch dan client REST seperti Kibana, Filebeat berkomunikasi melalui port TCP 9200.
Dengan asumsi Anda sudah memiliki cluster Elasticsearch yang sedang berjalan, lanjutkan sebagai berikut untuk mengaktifkan koneksi HTTPS antara node Elasticsearch.
Memeriksa node Cluster kami;
curl -XGET es-node-01.kifarunix-demo.com:9200/_cat/nodes?v
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name 192.168.59.19 29 84 1 1.90 1.31 1.06 cdhilmrstw * es-node-03 192.168.59.17 48 86 2 1.49 1.46 1.17 cdhilmrstw - es-node-01 192.168.59.18 22 84 1 1.61 1.35 1.14 cdhilmrstw - es-node-02
Hasilkan Sertifikat TLS/SSL Elasticsearch
Anda perlu membuat sertifikat x509 TLS/SSL untuk memungkinkan Anda mengenkripsi komunikasi antar node.
Anda dapat membuat sertifikat dan kunci TLS menggunakan elasticsearch-certutil alat.
Hasilkan Elasticsearch Sertifikat TLS yang Ditandatangani Sendiri menggunakan elasticsearch-certutil
Untuk menghasilkan sertifikat TLS Elasticsearch menggunakan elasticsearch-certutil alat:
- Buat direktori untuk menyimpan file sertifikat;
mkdir /etc/elasticsearch/certs/
- Hasilkan CA dalam format PKCS#12
Perintah di bawah ini menghasilkan sertifikat CA dan kunci pribadi dan menyimpannya di bawah direktori yang dibuat di atas dengan nama elk-cluster-ca.p12. Perintah juga akan meminta Anda memasukkan password untuk mengamankan file CA.We use an empty password by just pressing ENTER in this setup.
/usr/share/elasticsearch/bin/elasticsearch-certutil ca --out /etc/elasticsearch/certs/elk-cluster-ca.p12 --days 3650
- Hasilkan CA dalam format PEM
Jika Anda ingin membuat CA dalam format PEM, jalankan perintah di bawah ini. Perintah menghasilkan file zip yang berisi file individual untuk sertifikat CA dan kunci pribadi.
/usr/share/elasticsearch/bin/elasticsearch-certutil ca --pem --out /etc/elasticsearch/certs/elk-cluster-ca.zip --days 3650
- Hasilkan sertifikat dalam format PKCS#12:
Secara default, perintah menghasilkan file output tunggal yang berisi: sertifikat, kunci pribadi, dan sertifikat CA. Ini juga meminta password CA, jika Anda mengatur password di atas, dan password sertifikat.
/usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca /etc/elasticsearch/certs/elk-cluster-ca.p12 --out /etc/elasticsearch/certs/elk-cluster-cert.p12 --days 3650
- Hasilkan sertifikat dalam format PEM:
Buka zip sertifikat CA dan file kunci;
unzip /etc/elasticsearch/certs/elk-cluster-ca.zip -d /etc/elasticsearch/certs/
Selanjutnya, buat sertifikat dalam format PEM;
/usr/share/elasticsearch/bin/elasticsearch-certutil cert --pem --ca-cert /etc/elasticsearch/certs/ca/ca.crt --ca-key /etc/elasticsearch/certs/ca/ca.key --days 3650 --out /etc/elasticsearch/certs/elk-cluster-cert.zip
Buka zip file;
unzip /etc/elasticsearch/certs/elk-cluster-cert.zip -d /etc/elasticsearch/certs/
Setel kepemilikan file sertifikat ke elasticsearch user.
chown -R elasticsearch: /etc/elasticsearch/certs/
Aktifkan Fitur Keamanan Elasticsearch
Instalasi default Elasticsearch menggunakan lisensi dasar yang dilengkapi dengan fitur keamanan yang dinonaktifkan secara default.
Untuk mengaktifkan fitur keamanan Elasticsearch, setel nilai xpack.security.enabledketrue dengan menjalankan perintah di bawah ini di every node di cluster Elasticsearch.
echo "xpack.security.enabled: true" >> /etc/elasticsearch/elasticsearch.yml
Demikian pula, Anda perlu mengaktifkan pengaturan SSL/TLS transport node Elasticsearch;
echo "xpack.security.transport.ssl.enabled: true" >> /etc/elasticsearch/elasticsearch.yml
Aktifkan Koneksi HTTPS Antara Elasticsearch Nodes
Setelah hal di atas selesai, Anda perlu menentukan jalur ke file sertifikat yang dihasilkan di atas.
Jika Anda menggunakan PKCS#12 format, masukkan baris berikut di elasticsearch.yml file di setiap node di Elasticsearch.
xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.keystore.path: certs/elk-cluster-cert.p12 xpack.security.transport.ssl.truststore.path: certs/elk-cluster-cert.p12
Jika Anda menggunakan PEM files, lalu masukkan baris di bawah ini di elasticsearch.yml file di setiap node di Elasticsearch.
xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.key: certs/instance/instance.key xpack.security.transport.ssl.certificate: certs/instance/instance.crt xpack.security.transport.ssl.certificate_authorities: certs/ca/ca.crt
Tambahkan Kata Sandi Sertifikat ke Elasticsearch Keystore
Jika Anda mengamankan sertifikat Anda dengan password, Anda perlu menambahkan password ke keystore Elasticsearch on all the cluster nodes.
Jika Anda menggunakan sertifikat dalam format PKCS#12, jalankan perintah di bawah ini untuk menambahkan password sertifikat ke keystore:
/usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
/usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
Jika Anda menggunakan sertifikat dalam format PEM, gunakan perintah di bawah ini untuk menambahkan kunci sertifikat ke keystore:
/usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.transport.ssl.secure_key_passphrase
Mulai ulang Elasticsearch
Selanjutnya, restart service Elasticsearch untuk melakukan perubahan;
systemctl restart elasticsearch
Buat Kata Sandi untuk Pengguna Elastis Bawaan
Saat Anda mengaktifkan fitur keamanan Elastic dasar, Anda perlu mengatur password untuk user Elasticsearch bawaan, terutama untuk elastic dan kibana_system user untuk memungkinkan Anda menjalankan kueri REST.
Ambil contoh, Anda ingin memeriksa node di cluster dengan menjalankan perintah;
curl -XGET es-node-01.kifarunix-demo.com:9200/_cat/nodes?pretty --cacert /etc/elasticsearch/certs/elk-cluster-ca.p12
keluaran sampel;
{ "error" : { "root_cause" : [ { "type" : "security_exception", "reason" : "missing authentication credentials for REST request [/_cat/nodes?pretty]", "header" : { "WWW-Authenticate" : "Basic realm="security" charset="UTF-8"" } } ], "type" : "security_exception", "reason" : "missing authentication credentials for REST request [/_cat/nodes?pretty]", "header" : { "WWW-Authenticate" : "Basic realm="security" charset="UTF-8"" } }, "status" : 401 }
Kata sandi dapat dibuat secara acak atau dapat diatur secara manual menggunakan elasticsearch-setup-passwords kegunaan.
You can only run the password creation ONCE on any node in the cluster.
Untuk secara otomatis menghasilkan password acak untuk user Elastis bawaan, jalankan perintah;
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto
Saat perintah berjalan, konfirmasikan prosesnya.
keluaran sampel;
Changed password for user apm_system PASSWORD apm_system = eXvv3x7zs9O7qbYgMvLW Changed password for user kibana_system PASSWORD kibana_system = mLhDnalWA8yPpPuE0GFB Changed password for user kibana PASSWORD kibana = mLhDnalWA8yPpPuE0GFB Changed password for user logstash_system PASSWORD logstash_system = p4nAxkl1MGss7VU18TzT Changed password for user beats_system PASSWORD beats_system = L1Xm8xnUM7yKAfBAR3Nx Changed password for user remote_monitoring_user PASSWORD remote_monitoring_user = uNHAxTVX0LSXwnX54hzr Changed password for user elastic PASSWORD elastic = o8u1zQm93o5Py3huqqt1
Simpan password di tempat yang dapat Anda ambil dengan mudah saat dibutuhkan.
Dalam kebanyakan kasus, kami akan menggunakan password untuk elastic dan kibana_system user.
- elastic adalah user super bawaan di stack Elastis.
- kibana_system adalah user yang digunakan Kibana untuk terhubung dan berkomunikasi dengan Elasticsearch.
Misalnya, Anda sekarang dapat menentukan nama user dalam perintah curl yang dijalankan di atas.
curl -XGET es-node-01.kifarunix-demo.com:9200/_cat/nodes?pretty --cacert /etc/elasticsearch/certs/elk-cluster-ca.p12 -u elastic
Masukkan password yang dibuat di atas untuk elastic user.
keluaran sampel;
192.168.59.17 19 75 1 0.23 0.37 0.58 cdhilmrstw - es-node-01 192.168.59.18 53 73 0 0.01 0.26 0.62 cdhilmrstw * es-node-02 192.168.59.19 42 73 0 0.04 0.28 0.62 cdhilmrstw - es-node-03
Konfigurasi Keamanan di Kibana
Ada beberapa permintaan internal yang Kibana buat ke Elasticsearch. Karena Anda telah mengaktifkan otentikasi HTTPS Elasticsearch, permintaan yang dibuat oleh Kibana, juga perlu diautentikasi. Kredensial untukkibana_system digunakan dapat digunakan dalam hal ini iklan sehingga Anda perlu menambahkannya ke Kibana.
Kredensial untuk user dapat didefinisikan dalam teks biasa di file konfigurasi Kibana, kibana.yml atau dapat ditambahkan ke keystore Kibana.
Kredensial dibuat di atas.
Untuk menambahkan kredensial dalam file konfigurasi Kibana, masukkan baris di kibana.yml.
vim /etc/kibana/kibana.yml
elasticsearch.username: "kibana_system" elasticsearch.password: "mLhDnalWA8yPpPuE0GFB"
Untuk menambahkan kredensial ke Keystore alih-alih memakainya /etc/kibana/kibana.yml, buat keystore Kibana dan tambahkan seperti yang ditunjukkan di bawah ini;
chmod g+w /etc/kibana/
sudo -u kibana /usr/share/kibana/bin/kibana-keystore create
Tambahkan user, kibana_system:
sudo -u kibana /usr/share/kibana/bin/kibana-keystore add elasticsearch.username
Tambahkan password:
sudo -u kibana /usr/share/kibana/bin/kibana-keystore add elasticsearch.password
Mulai ulang Layanan Kibana
Selanjutnya, restart service Kibana;
systemctl restart kibana
Anda juga dapat memeriksa panduan kami tentang cara mengaktifkan koneksi HTTPS Kibana.
Cara Cepat untuk Mengaktifkan Koneksi HTTPS Kibana
Mengautentikasi ke Interface Web Kibana
Setelah Anda mengaktifkan fitur Keamanan, Anda akan diminta untuk mengautentikasi dengan user yang valid sebelum Anda dapat mengakses interface web Kibana.
Dalam pengaturan ini, Anda dapat menggunakan user super Elastis yang dibuat di atas, elastic.
Dan itu menandai panduan kami tentang cara mengaktifkan koneksi HTTPS antara node Elasticsearch.
Referensi
Mengonfigurasi TLS di Elasticsearch
Tutorial lainnya
Integrasikan Wazuh Manager dengan ELK Stack
Konfigurasikan ELK Stack Alert dengan ElastAlert
Pantau Metrik Sistem Linux dengan ELK Stack