Belajar dengan berlatih: Keamanan Dengan Harga Murah – Tumpukan Elastis Awal

  • Whatsapp
Belajar dengan berlatih: Keamanan Dengan Harga Murah - Tumpukan Elastis Awal
Belajar dengan berlatih Keamanan Dengan Harga Murah Tumpukan Elastis

News.nextcloud.asia

Pada posting pertama, kami menginstal Elasticsearch. Di pos kedua, kami menginstal Kibana. Dalam posting ini, kami sekarang menyediakan beberapa keamanan dasar untuk komunikasi antara Elasticsearch dan Kibana. Perhatikan, ada banyak lagi yang dapat Anda lakukan untuk mengamankan lingkungan ini, memanfaatkan keystore, dll.

Dalam membuat sertifikat Certificate Authority (CA), saya memilih untuk menggunakan format PKCS#12. Dalam format ini, file ini berisi sertifikat CA dan kunci pribadinya. Ini mungkin menjadi penyebab kekhawatiran di beberapa lingkungan.

Selain itu, saya membuat satu file sertifikat untuk digunakan oleh setiap komponen. Ini berarti berbagai komponen harus dapat membaca file. Ini jelas membuat data dalam file dapat diakses oleh pengguna tersebut. Dalam posting ini, saya membuatnya sederhana. Jika Anda ingin mengamankan lingkungan Anda secara menyeluruh, posting ini adalah sesuatu yang pada dasarnya dapat Anda bangun jika Anda mau.

Jika Anda bertanya-tanya mengapa kita perlu mengamankan komunikasi antara Elastic dan Kibana, berikut adalah alasan sederhananya.

[email protected]:~# tcpdump -nnti any host 10.0.0.1 and port 9200 -A
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked v1), capture size 262144 bytes
IP 10.0.0.1.60100 > 10.0.0.1.9200: Flags [P.], seq 3727928959:3727929473, ack 22660352, win 9203, options [nop,nop,TS val 4105791837 ecr 4105786838], length 514

[email protected]@.!"..........#..3...Y....#........
..i]..U.POST /.reporting-*/_search HTTP/1.1
content-type: application/json
Host: 10.0.0.1:9200
Content-Length: 374
Connection: keep-alive

{"seq_no_primary_term":true,"_source":{"excludes":["output.content"]},"query":{"bool":{"filter":{"bool":{"minimum_should_match":1,"should":[{"term":{"status":"pending"}},{"bool":{"must":[{"term":{"status":"processing"}},{"range":{"process_expiration":{"lte":"2020-08-14T01:02:35.764Z"}}}]}}]}}}},"sort":[{"priority":{"order":"asc"}},{"created_at":{"order":"asc"}}],"size":1}

IP 10.0.0.1.9200 > 10.0.0.1.60100: Flags [P.], seq 1:247, ack 514, win 512, options [nop,nop,TS val 4105791839 ecr 4105791837], length 246
E..*[email protected]@...........#....Y...3.......u.....
..i_..i]HTTP/1.1 200 OK
content-type: application/json; charset=UTF-8
content-length: 159
....

Seperti yang ditunjukkan di atas, menggunakan tcpdump, kami dapat mengendus lalu lintas melalui kabel, sehingga mendapatkan visibilitas ke dalam komunikasi aktual yang terjadi di jaringan. Pada titik ini, jika kita bisa melihat datanya, orang lain bisa.

Dengan menyingkir, mari kita menyediakan beberapa keamanan dasar untuk lingkungan ini melalui Transport Layer Security (TLS).

Pertama-tama, kami memodifikasi “elasticsearch.yml“berkas untuk disertakan”xpack.security.enabled: benar“. Berikut adalah tampilan konfigurasi saya.

[email protected]:~# cat /etc/elasticsearch/elasticsearch.yml | grep "xpack.security.enabled: true"
xpack.security.enabled: true

Agar TLS berfungsi dengan baik, kami memerlukan sertifikat. Ada banyak cara untuk mendapatkan sertifikat. Namun, bagi kami, kami akan menggunakan bawaan “elasticsearch-certutil” utilitas, untuk menghasilkan otoritas sertifikasi kita sendiri.

[email protected]:~# /usr/share/elasticsearch/bin/elasticsearch-certutil ca ca-dn securitynik.local
This tool assists you in the generation of X.509 certificates and certificate signing requests for use with SSL/TLS in the Elastic stack.

The 'ca' mode generates a new 'certificate authority'. This will create a new X.509 certificate and private key that can be used to sign certificate when running in 'cert' mode.


Use the 'ca-dn' option if you wish to configure the 'distinguished name' of the certificate authority

By default the 'ca' mode produces a single PKCS#12 output file which holds:

    * The CA certificate
    * The CA's private key


If you elect to generate PEM format certificates (the -pem option), then the output will be a zip file containing individual files for the CA certificate and private key

Please enter the desired output file [elastic-stack-ca.p12]: SecurityNik-CA.p12

Enter password for SecurityNik-CA.p12 :

Di atas, sertifikat CA saya bernama “KeamananNik-CA.p12“. Anda juga memiliki opsi untuk menentukan kata sandi untuk sertifikat CA. Saya tidak menentukan kata sandi. Dalam contoh saya, file disimpan di:

[email protected]:~# ls /usr/share/elasticsearch/SecurityNik-CA.p12 -al
-rw------- 1 root root 2527 Aug 13 21:49 /usr/share/elasticsearch/SecurityNik-CA.p12

Dengan sertifikat CA yang dihasilkan, sekarang mari buat sertifikat untuk node kita di “10.0.0.1”.

[email protected]:~# /usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca /usr/share/elasticsearch/SecurityNik-CA.p12  --days 1825 --dns monitoring,monitoring.securitynik.local --ip 10.0.0.1 --keysize 2048 --name 10.0.0.1 --out /usr/share/elasticsearch/10.0.0.1.p12 --pass "" --silent

Enter password for CA (/usr/share/elasticsearch/SecurityNik-CA.p12) :

Di bawah ini kita melihat file yang telah dibuat.

[email protected]:~# ls -al /usr/share/elasticsearch/10.0.0.1.p12 -al
-rw------- 1 root root 3529 Aug 13 22:23 /usr/share/elasticsearch/10.0.0.1.p12

Salin sertifikat ini ke “/etc/elasticsearch/” folder.

[email protected]:~# cp /usr/share/elasticsearch/10.0.0.1.p12 /etc/elasticsearch/ -v 
'/usr/share/elasticsearch/10.0.0.1.p12' -> '/etc/elasticsearch/10.0.0.1.p12'

Selanjutnya saya mengubah izin sertifikat sehingga dapat dibaca dunia. Belum tentu hal terbaik untuk dilakukan tetapi ini untuk kesederhanaan.

[email protected]:~# chmod 644 /etc/elasticsearch/10.0.0.1.p12
[email protected]:~# ls -al /etc/elasticsearch/10.0.0.1.p12
-rw-r--r-- 1 root elasticsearch 3529 Aug 13 22:32 /etc/elasticsearch/10.0.0.1.p12

Karena sertifikat kami dalam format PKCS#12, kami akan menambahkan baris berikut ke “elasticsearch.yml“.

xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: 10.0.0.1.p12
xpack.security.transport.ssl.truststore.path: 10.0.0.1.p12

Inilah konfigurasi Elasticsearch saya sekarang setelah perubahan itu.

[email protected]:~# tail --lines 6 /etc/elasticsearch/elasticsearch.yml
# Configuration added by Nik for security
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: "10.0.0.1.p12"
xpack.security.transport.ssl.truststore.path: "10.0.0.1.p12"

Saatnya memulai kembali Elasticsearch dan berdoa agar semuanya berjalan seperti yang diharapkan.

[email protected]:~# systemctl status elasticsearch.service
● elasticsearch.service - Elasticsearch
     Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2020-08-13 22:40:44 EDT; 3min 50s ago
       Docs: https://www.elastic.co
   Main PID: 24533 (java)
      Tasks: 61 (limit: 4563)
     Memory: 1.2G
     CGroup: /system.slice/elasticsearch.service
             ├─24533 /usr/share/elasticsearch/jdk/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddres>
             └─24725 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller

Aug 13 22:40:17 securitynik-monitoring systemd[1]: Starting Elasticsearch...
Aug 13 22:40:44 securitynik-monitoring systemd[1]: Started Elasticsearch.

Di atas, semua terlihat baik-baik saja. Melihat port jaringan melalui “ss“. Catatan Anda juga dapat menggunakan “status bersih“.

[email protected]:~# ss --numeric --listen --tcp | grep 9200
LISTEN  0       4096     [::ffff:10.0.0.1]:9200              *:*

Luar biasa!

Langkah selanjutnya, sekarang mari kita buat sertifikat untuk komunikasi HTTP. Misalnya, antara Kibana dan Elastic dan akhirnya antara browser kita dan Kibana. Sekali lagi, kami menggunakan “elasticsearch-certutil“, kali ini dengan “http“argumen.

[email protected]:~# /usr/share/elasticsearch/bin/elasticsearch-certutil http --silent
## Elasticsearch HTTP Certificate Utility
## Do you wish to generate a Certificate Signing Request (CSR)?
Generate a CSR? [y/N]N
## Do you have an existing Certificate Authority (CA) key-pair that you wish to use to sign your certificate?
Use an existing CA? [y/N]Y
## What is the path to your CA?
CA Path: /usr/share/elasticsearch/SecurityNik-CA.p12
Password for SecurityNik-CA.p12:
## How long should your certificates be valid?
For how long should your certificate be valid? [5y]
## Do you wish to generate one certificate per node?
Generate a certificate per node? [y/N]N
## Which hostnames will be used to connect to your nodes?

securitynik-monitoring

securitynik-monitoring.securitynik.local

You entered the following hostnames.

 - securitynik-monitoring
 - securitynik-monitoring.securitynik.local

Is this correct [Y/n]y

## Which IP addresses will be used to connect to your nodes?
10.0.0.1

You entered the following IP addresses.

 - 10.0.0.1
Is this correct [Y/n]y
## Other certificate options
Key Name: securitynik-monitoring
Subject DN: CN=securitynik-monitoring

Key Size: 2048

Do you wish to change any of these options? [y/N]n
## What password do you want for your private key(s)?
Provide a password for the "http.p12" file:  [<ENTER> for none]
## Where should we save the generated files?

What filename should be used for the output zip file? [/usr/share/elasticsearch/elasticsearch-ssl-http.zip]

Mengonfirmasi file berhasil dibuat.

[email protected]:~# ls /usr/share/elasticsearch/elasticsearch-ssl-http.zip -l
-rw------- 1 root root 7334 Aug 13 23:22 /usr/share/elasticsearch/elasticsearch-ssl-http.zip

Pertama kita install”buka ritsleting”. Dengan unzip terinstal, kita sekarang dapat melihat ke dalam file zip

[email protected]:/usr/share/elasticsearch# apt install unzip
[email protected]:/usr/share/elasticsearch# unzip -l elasticsearch-ssl-http.zip
Archive:  elasticsearch-ssl-http.zip
  Length      Date    Time    Name
---------  ---------- -----   ----

        0  2020-08-13 23:22   elasticsearch/
     1091  2020-08-13 23:22   elasticsearch/README.txt
     3499  2020-08-13 23:22   elasticsearch/http.p12
      657  2020-08-13 23:22   elasticsearch/sample-elasticsearch.yml
        0  2020-08-13 23:22   kibana/
     1306  2020-08-13 23:22   kibana/README.txt
     1200  2020-08-13 23:22   kibana/elasticsearch-ca.pem
     1056  2020-08-13 23:22   kibana/sample-kibana.yml
---------                     -------
     8809                     8 files

Mengekstrak konten dari “elasticsearch-ssl-http.zip” ke dalam folder bernama “sertifikat” dan memverifikasi ekstraksi.

[email protected]:/usr/share/elasticsearch# unzip -d certs/ elasticsearch-ssl-http.zip
Archive:  elasticsearch-ssl-http.zip
   creating: certs/elasticsearch/
  inflating: certs/elasticsearch/README.txt
  inflating: certs/elasticsearch/http.p12
  inflating: certs/elasticsearch/sample-elasticsearch.yml
   creating: certs/kibana/
  inflating: certs/kibana/README.txt
  inflating: certs/kibana/elasticsearch-ca.pem
  inflating: certs/kibana/sample-kibana.yml
[email protected]:/usr/share/elasticsearch# ls certs/
elasticsearch  kibana

Saatnya menyalin”certs/elasticsearch/http.p12“mengajukan ke”/etc/elasticsearch/” folder.

[email protected]:~# cp /usr/share/elasticsearch/certs/elasticsearch/http.p12 /etc/elasticsearch/ -v 
'/usr/share/elasticsearch/certs/elasticsearch/http.p12' -> '/etc/elasticsearch/http.p12'

Saya kemudian menambahkan baris berikut ke bagian bawah “elasticsearch.yml“.

# This turns on SSL for the HTTP (Rest) interface
xpack.security.http.ssl.enabled: true
# This configures the keystore to use for SSL on HTTP
xpack.security.http.ssl.keystore.path: "http.p12"

Untuk konsistensi saya juga mengganti nama “elasticsearch-ca.pem“mengajukan ke”SecurityNik-CA.pem

[email protected]:/usr/share/elasticsearch/certs# cd /etc/kibana/
[email protected]:/etc/kibana# mv elasticsearch-ca.pem SecurityNik-CA.pem
[email protected]:/etc/kibana#

Selanjutnya file “kibana/SecurityNik-ca.pem” telah disalin ke folder “/etc/kibana”

[email protected]:/usr/share/elasticsearch/certs# cp /usr/share/elasticsearch/certs/kibana/SecurityNik-ca.pem /etc/kibana/ -v
'/usr/share/elasticsearch/certs/kibana/SecurityNik-ca.pem' -> '/etc/kibana/SecurityNik-ca.pem'

Selanjutnya saya memodifikasi “kibana.yml“perubahan berkas”elasticsearch.hosts: [“http://10.0.0.1:9200”]” ke “elasticsearch.hosts: [“https://10.0.0.1:9200”]“. Perhatikan https. Saya juga menambahkan “elasticsearch.ssl.certificateOtoritas: [ “/etc/kibana/SecurityNik-CA.pem” ]

Dengan tidak adanya konfigurasi ini, mari mulai ulang Elasticsearch dan Kibana.

[email protected]:/etc/kibana# systemctl stop elasticsearch.service
[email protected]:/etc/kibana# systemctl start elasticsearch.service
[email protected]:/etc/kibana# systemctl stop kibana.service
[email protected]:/etc/kibana# systemctl start kibana.service

Sekarang mari kita konfigurasikan Kibana agar kita terhubung melalui HTTPS.

Pertama saya salin “10.0.0.1.p12” sertifikat simpul yang sebelumnya dibuat ke folder Kibana.

[email protected]:~# cp /etc/elasticsearch/10.0.0.1.p12 /etc/kibana/ -v 
'/etc/elasticsearch/10.0.0.1.p12' -> '/etc/kibana/10.0.0.1.p12'

Sekali lagi, memodifikasi “kibana.yml“, kita tambahkan baris berikut.

server.ssl.keystore.path: "/etc/kibana/10.0.0.1.p12"
server.ssl.enabled: true
server.ssl.keystore.password: ""

Setelah selesai, mulai ulang Kibana

[email protected]:/etc/kibana# systemctl stop kibana.service
[email protected]:/etc/kibana# systemctl start kibana.service

Sebelum kita login, mari kita setup pengguna default menggunakan “elasticsearch-setup-password“.

[email protected]:~# /usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive --silent

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_system]:
Reenter password for [kibana_system]:
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]:

Sekarang setelah pengguna diatur, file konfigurasi Kibana sekarang harus mencerminkan nilai nama pengguna dan kata sandi untuk akun “kibana_system”.

[email protected]:~# cat /etc/kibana/kibana.yml | grep "kibana_system" --after-context 1
elasticsearch.username: "kibana_system"
elasticsearch.password: "WelcomeToSecurityNikElastic"

Di bawah ini mewakili beberapa perubahan yang saya buat pada “kibana.yml

[email protected]:~# tail --lines 8 /etc/kibana/kibana.yml

# Below added by Nik
server.ssl.enabled: true
elasticsearch.ssl.certificateAuthorities: ["/etc/kibana/SecurityNik-CA.pem"]
server.ssl.keystore.path: "/etc/kibana/10.0.0.1.p12"
server.ssl.keystore.password: ""
xpack.encryptedSavedObjects.encryptionKey: 'fhjskloppd678ehkdfdlliverpoolfcr'
xpack.security.session.idleTimeout: "30m"
xpack.security.session.lifespan: "8h"

Dengan perubahan-perubahan itu, kita sekarang harus baik-baik saja.

Mari kita autentikasi ke Kibana menggunakan nama pengguna dan kata sandi yang kita siapkan untuk “elastis” pengguna. Setelah diautentikasi, Anda harus membuat beberapa pengguna tambahan berdasarkan peran mereka.

Halaman Masuk HTTPS

Setelah Anda berhasil mengautentikasi, Anda sekarang akan melihat yang berikut.

Sebelum kami pergi, jika Anda ingat, ketika kami mulai, kami dapat melihat data teks yang jelas melintasi kawat. Jika kita lari tcpdump sekali lagi, kami tidak melihat data apa pun dengan jelas.

[email protected]:/etc/elasticsearch# tcpdump -nnti any host 10.0.0.1 and port 9200 -A -c 5
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked v1), capture size 262144 bytes
IP 10.0.0.1.36344 > 10.0.0.1.9200: Flags [P.], seq 2879060748:2879061003, ack 1452891267, win 512, options [nop,nop,TS val 2724200057 ecr 2724168569], length 255
[email protected]@.>...........#.....V.......~.....
[email protected]/....Ls}..E...
.l.;........x.^..u..3S...A.,.O...2e.h...../.).*@.a15ou.u.^D...~.3..HyW'.../....D.ahL..H...q;...j....$..L.0<%J..._..k]..TMQj.B
m....n.id.O....5.....S...=1.Iq.|Ox...}[email protected]&...&X.>....R.u'I.-U*!|.Z..._.Z.[%7=...K.6m...
IP 10.0.0.1.9200 > 10.0.0.1.36344: Flags [P.], seq 1:238, ack 255, win 512, options [nop,nop,TS val 2724200061 ecr 2724200057], length 237
[email protected]@...........#...V...........l.....
._.}._.y..............{.m6!....ZK^...
.j..$-.......4(..Y6...y=j.....T0v..J.yG..8.I.....'.+%w.6...y..z...r...*K..L......t..cc.Pk...RZ.%.N.....l...Zq......qw.W..!05."...{...I..g..)(.H..........Q...H..<X...1...X4.W..).
.eoB...w..i.....[......+.W
IP 10.0.0.1.36344 > 10.0.0.1.9200: Flags [.], ack 238, win 511, options [nop,nop,TS val 2724200061 ecr 2724200061], length 0
[email protected]@.?...........#.....V.]p...........
._.}._.}
IP 10.0.0.1.36294 > 10.0.0.1.9200: Flags [.], ack 2500636561, win 512, options [nop,nop,TS val 2724200281 ecr 2724199268], length 0
[email protected]@.............#.3.1................
._.Y._.d
IP 10.0.0.1.9200 > 10.0.0.1.36294: Flags [.], ack 1, win 512, options [nop,nop,TS val 2724200281 ecr 2724199268], length 0
[email protected]@...........#.......3.1............

Pada titik ini, saatnya untuk melanjutkan, karena kami dapat memberikan beberapa keamanan dasar untuk Kibana dan Elastis.

Postingan dalam seri ini:

Keamanan Dengan Harga Murah – Elastic Stack Awal – Menginstal Elastic 7.9 di Ubuntu 20.04
Keamanan Dengan Harga Murah – Elastic Stack Awal – Menginstal Kibana 7.9 di Ubuntu 20.04
Keamanan Dengan Harga Murah – Elastic Stack Awal – Menyediakan Keamanan Dasar untuk komunikasi Elastic dan Kibana 7.9 di Ubuntu 20.04
Keamanan Dengan Harga Murah – Elastis Awal – Memasang dan Memberikan Keamanan Dasar ke Metricbeat – Elastic Stack 7.9 di Ubuntu 20.04
Keamanan Dengan Harga Murah – Elastis Awal – Menginstal dan Memberikan Keamanan Dasar ke Auditbeat – Elastic Stack 7.9 di Ubuntu 20.04
Keamanan Dengan Harga Murah – Elastis Awal – Memasang dan Memberikan Keamanan Dasar ke Filebeat – Elastic Stack 7.9 di Ubuntu 20.04
Elastis Awal – Menginstal, Mengonfigurasi, dan Memberikan Keamanan Dasar ke Packetbeat
Keamanan Dengan Harga Murah – Elastis Awal – Memasang dan Memberikan Keamanan Dasar ke Winlogbeat

Referensi:

https://www.elastic.co/blog/getting-started-with-elasticsearch-security
https://www.elastic.co/guide/en/elasticsearch/reference/7.8/configuring-tls.html#node-certificates
https://www.elastic.co/guide/en/elasticsearch/reference/current/get-started-built-in-users.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/get-started-kibana-user.html
https://www.youtube.com/watch?v=nMh1HWWe6B4&feature=youtu.be
https://www.elastic.co/guide/en/elasticsearch/reference/current/trb-security-sslhandshake.html

https://www.elastic.co/guide/en/kibana/7.9/using-kibana-with-security.html

Pos terkait

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan.