ProHoster > blog > administrasi > Elastic under lock and key: mengaktifkan opsi keamanan cluster Elasticsearch untuk akses dari dalam dan luar
Elastic under lock and key: mengaktifkan opsi keamanan cluster Elasticsearch untuk akses dari dalam dan luar
Elastic Stack adalah alat yang terkenal di pasar sistem SIEM (sebenarnya, bukan hanya mereka). Itu dapat mengumpulkan banyak data dengan ukuran berbeda, baik sensitif maupun tidak terlalu sensitif. Tidak sepenuhnya benar jika akses ke elemen Elastic Stack itu sendiri tidak dilindungi. Secara default, semua elemen Elasticsearch (Elasticsearch, Logstash, Kibana, dan Beats collector) berjalan pada protokol terbuka. Dan di Kibana sendiri, otentikasi dinonaktifkan. Semua interaksi ini dapat diamankan dan dalam artikel ini kami akan memberi tahu Anda cara melakukannya. Untuk kenyamanan, kami membagi narasi menjadi 3 blok semantik:
Model akses data berbasis peran
Keamanan data dalam klaster Elasticsearch
Mengamankan data di luar cluster Elasticsearch
Detail di bawah potongan.
Model akses data berbasis peran
Jika Anda menginstal Elasticsearch dan tidak menyetelnya dengan cara apa pun, akses ke semua indeks akan terbuka untuk semua orang. Nah, atau mereka yang bisa menggunakan curl. Untuk menghindari hal ini, Elasticsearch memiliki model peran yang tersedia mulai dari langganan Dasar (yang gratis). Secara skematis terlihat seperti ini:
Apa yang ada di gambar
Pengguna adalah setiap orang yang dapat login menggunakan kredensialnya.
Sumber daya adalah indeks, dokumen, bidang, pengguna, dan entitas penyimpanan lainnya (model peran untuk beberapa sumber daya hanya tersedia dengan langganan berbayar).
Secara default, Elasticsearch memilikinya pengguna kotak, tempat mereka dilampirkan peran kotak. Setelah Anda mengaktifkan pengaturan keamanan, Anda dapat segera mulai menggunakannya.
Untuk mengaktifkan keamanan dalam pengaturan Elasticsearch, Anda perlu menambahkannya ke file konfigurasi (secara default ini adalah elasticsearch/config/elasticsearch.yml) garis baru:
xpack.security.enabled: true
Setelah mengubah file konfigurasi, luncurkan atau mulai ulang Elasticsearch agar perubahan diterapkan. Langkah selanjutnya adalah menetapkan kata sandi untuk pengguna kotak. Mari kita lakukan ini secara interaktif menggunakan perintah di bawah ini:
[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-setup-passwords interactive
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y
Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [apm_system]:
Reenter password for [apm_system]:
Enter password for [kibana]:
Reenter password for [kibana]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Enter password for [remote_monitoring_user]:
Reenter password for [remote_monitoring_user]:
Changed password for user [apm_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]
Kami memeriksa:
[elastic@node1 ~]$ curl -u elastic 'node1:9200/_cat/nodes?pretty'
Enter host password for user 'elastic':
192.168.0.2 23 46 14 0.28 0.32 0.18 dim * node1
Anda dapat menepuk punggung Anda sendiri - pengaturan di sisi Elasticsearch telah selesai. Sekarang saatnya mengkonfigurasi Kibana. Jika Anda menjalankannya sekarang, kesalahan akan muncul, jadi penting untuk membuat penyimpanan kunci. Ini dilakukan dalam dua perintah (user kibana dan kata sandi yang dimasukkan pada langkah pembuatan kata sandi di Elasticsearch):
Jika semuanya sudah benar, Kibana akan mulai meminta login dan kata sandi. Langganan Dasar mencakup model peran berdasarkan pengguna internal. Dimulai dengan Gold, Anda dapat menghubungkan sistem autentikasi eksternal - LDAP, PKI, Direktori Aktif, dan sistem masuk tunggal.
Hak akses terhadap objek di dalam Elasticsearch juga dapat dibatasi. Namun, untuk melakukan hal yang sama pada dokumen atau bidang, Anda memerlukan langganan berbayar (kemewahan ini dimulai dengan level Platinum). Pengaturan ini tersedia di antarmuka Kibana atau melalui API Keamanan. Anda dapat memeriksanya melalui menu Dev Tools yang sudah familiar:
Ketika Elasticsearch berjalan di sebuah klaster (yang umum terjadi), pengaturan keamanan di dalam klaster menjadi penting. Untuk komunikasi yang aman antar node, Elasticsearch menggunakan protokol TLS. Untuk mengatur interaksi aman di antara keduanya, Anda memerlukan sertifikat. Kami menghasilkan sertifikat dan kunci pribadi dalam format PEM:
[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-certutil ca --pem
Setelah menjalankan perintah di atas, di direktori /../elasticsearch arsip akan muncul elastis-stack-ca.zip. Di dalamnya Anda akan menemukan sertifikat dan kunci pribadi dengan ekstensi crt ΠΈ kunci masing-masing. Dianjurkan untuk menempatkannya pada sumber daya bersama, yang harus dapat diakses dari semua node di cluster.
Setiap node sekarang memerlukan sertifikat dan kunci pribadinya sendiri berdasarkan yang ada di direktori bersama. Saat menjalankan perintah, Anda akan diminta untuk mengatur kata sandi. Anda dapat menambahkan opsi tambahan -ip dan -dns untuk verifikasi lengkap node yang berinteraksi.
Sebagai hasil dari menjalankan perintah, kita akan menerima sertifikat dan kunci pribadi dalam format PKCS#12, dilindungi oleh kata sandi. Yang tersisa hanyalah memindahkan file yang dihasilkan p12 ke direktori konfigurasi:
Kami meluncurkan semua node Elasticsearch dan mengeksekusi keriting. Jika semuanya dilakukan dengan benar, respons dengan beberapa node akan dikembalikan:
Ada opsi keamanan lain - pemfilteran alamat IP (tersedia dalam langganan dari tingkat Emas). Memungkinkan Anda membuat daftar putih alamat IP yang memungkinkan Anda mengakses node.
Mengamankan data di luar cluster Elasticsearch
Di luar cluster berarti menghubungkan alat eksternal: Kibana, Logstash, Beats, atau klien eksternal lainnya.
Untuk mengonfigurasi dukungan untuk https (bukan http), tambahkan baris baru ke elasticsearch.yml:
Setelah menambahkan kunci, node Elasticsearch siap terhubung melalui https. Sekarang mereka bisa diluncurkan.
Langkah selanjutnya adalah membuat kunci untuk menghubungkan Kibana dan menambahkannya ke konfigurasi. Berdasarkan sertifikat yang sudah ada di direktori bersama, kami akan membuat sertifikat dalam format PEM (PKCS#12 Kibana, Logstash, dan Beats belum mendukung):
Kuncinya ada di sana, jadi yang tersisa hanyalah mengubah konfigurasi Kibana agar dapat mulai menggunakannya. Pada file konfigurasi kibana.yml, ubah http menjadi https dan tambahkan baris dengan pengaturan koneksi SSL. Tiga baris terakhir mengonfigurasi komunikasi aman antara browser pengguna dan Kibana.
Dengan demikian, pengaturan selesai dan akses ke data di cluster Elasticsearch dienkripsi.
Jika Anda memiliki pertanyaan tentang kemampuan Elastic Stack pada langganan gratis atau berbayar, memantau tugas, atau membuat sistem SIEM, tinggalkan permintaan ke formulir umpan balik di situs web kami.