Aktifkan Koneksi HTTPS Antara Elasticsearch Nodes

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.

Aktifkan Koneksi HTTPS Antara Elasticsearch Nodes

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

Related Posts

© 2022 Tekno Sridianti