Cara mudah untuk mengonfigurasi Koneksi Filebeat-Logstash SSL/TLS

Dalam tutorial ini, kami akan menunjukkan cara mudah untuk mengkonfigurasi Koneksi Filebeat-Logstash SSL/TLS. Untuk mengirim data terenkripsi dari Filebeat ke Logstash, Anda harus mengaktifkan komunikasi timbal balik SSL/TLS di antara mereka.

Cara mudah untuk mengonfigurasi Koneksi Filebeat-Logstash SSL/TLS

Daftar isi

  • Cara mudah untuk mengonfigurasi Koneksi Filebeat-Logstash SSL/TLS
    • Instal dan Siapkan ELK Stack
    • Instal dan Atur Filebeat
    • Hasilkan ELK Stack CA dan Sertifikat Server
      • Konversikan Kunci ke Format Kunci Beats Elastis Standar PKCS#8
    • Konfigurasikan Koneksi Filebeat-Logstash SSL/TLS
      • Uji Konfigurasi Logstash
    • Konfigurasikan Filebeat untuk komunikasi Logstash SSL/TLS
      • Validasi sertifikat server Logstash
      • Menguji Konfigurasi Filebeat
    • Bacaan lebih lanjut
    • Tutorial Terkait

Sebelum Anda dapat melanjutkan, kami berasumsi bahwa Anda telah menginstal dan menyiapkan stack ELK serta Filebeat di titik akhir tempat Anda mengumpulkan data acara.

Instal dan Siapkan ELK Stack

Anda dapat mengikuti salah satu panduan di bawah ini untuk menginstal dan menyiapkan Elastic Stack;

Instal ELK Stack di Ubuntu 20.04

Menginstal ELK Stack di CentOS 8

Terapkan Cluster Stack Elastis Node Tunggal pada Kontainer Docker

Instal dan Atur Filebeat

Ikuti tautan di bawah ini untuk menginstal dan mengatur Filebeat;

Instal dan Konfigurasi Filebeat di CentOS 8

Instal Filebeat di Fedora 30/Fedora 29/CentOS 7

Instal dan Konfigurasi Filebeat 7 di Ubuntu 18.04/Debian 9.8

Hasilkan ELK Stack CA dan Sertifikat Server

Dalam demo ini, kami akan membuat sertifikat TLS menggunakan elasticsearch-certutil.

elasticsearch-certutil adalah utilitas Elastic Stack yang menyederhanakan pembuatan sertifikat X.509 dan permintaan penandatanganan sertifikat untuk digunakan dengan SSL/TLS di Elastic stack.

Dengan elasticsearch-certutil, dimungkinkan untuk menghasilkan sertifikat untuk node tertentu atau beberapa node. Namun, dalam demo ini, karena kami hanya menjalankan Elastic Stack satu node dengan semua komponen di tempatnya, maka kami hanya akan membuat sertifikat untuk satu node ini saja.

Untuk menghasilkan sertifikat node secara diam-diam, buat file YAML untuk menentukan nama khusus node Anda (dapat berupa nama host) dan node FQDN dalam format yang ditunjukkan di bawah ini;

vim $HOME/instances.yml
instances: - name: 'elk' dns: [ 'elk.kifarunix-demo.com' ]

Setelah selesai, jalankan perintah di bawah ini untuk menghasilkan Sertifikat ELK Stack TLS.

/usr/share/elasticsearch/bin/elasticsearch-certutil cert --keep-ca-key --pem --in $HOME/instances.yml --out $HOME/elk-cert.zip --days 365

Perintah tersebut akan membuat kunci CA dan sertifikat, kunci simpul dan sertifikat yang diarsipkan dalam file $HOME/elk-cert.zip yang berlaku selama satu tahun.

Mencantumkan isi file arsip;

unzip -l $HOME/elk-cert.zip
Archive: /root/elk-cert.zip Length Date Time Name --------- ---------- ----- ---- 0 2020-10-16 17:48 ca/ 1200 2020-10-16 17:48 ca/ca.crt 1675 2020-10-16 17:48 ca/ca.key 0 2020-10-16 17:48 elk/ 1188 2020-10-16 17:48 elk/elk.crt 1675 2020-10-16 17:48 elk/elk.key --------- ------- 5738 6 files

Baca lebih lanjut tentang alat elasticsearch-certutil di halaman referensi Elasticsearch.

Ekstrak file sertifikat ke beberapa direktori. Pada perintah di bawah ini, kami mengekstrak ke direktori home saya.

unzip -d $HOME $HOME/elk-cert.zip

Anda sekarang harus memiliki file-file ini;

ls $HOME/ca/ -1
ca.crt ca.key
ls $HOME/elk -1
elk.crt elk.key

Pastikan untuk menyimpan kunci pribadi Anda seaman mungkin.

Konversikan Kunci ke Format Kunci Beats Elastis Standar PKCS#8

Agar Beat terhubung ke Logstash melalui TLS, Anda perlu mengonversi kunci simpul yang dihasilkan ke standar PKCS#8 yang diperlukan untuk komunikasi Elastic Beat – Logstash melalui TLS;

openssl pkcs8 -in $HOME/elk/elk.key -topk8 -nocrypt -out $HOME/elk/elk.pkcs8.key

Konfigurasikan Koneksi Filebeat-Logstash SSL/TLS

Selanjutnya, copy sertifikat node, $HOME/elk/elk.crt, dan kunci standar Beats, ke direktori konfigurasi yang relevan. Dalam pengaturan ini, kami menginstal certs/keys pada /etc/logstashdirektori;

cp $HOME/elk/{elk.pkcs8.key,elk.crt} /etc/logstash/

Konfigurasikan koneksi Filebeat-Logstash SSL/TLS;

vim /etc/logstash/conf.d/test.conf
input { beats { port => 5044  ssl => true ssl_key => '/etc/logstash/elk.pkcs8.key' ssl_certificate => '/etc/logstash/elk.crt' } } output { # elasticsearch { # hosts => ["https://localhost:9200"] # manage_template => false # index => "ssh_auth-%{+YYYY.MM}" # cacert => "/etc/logstash/logstash.ca.crt" #} stdout { } }

Garis yang disorot di atas memungkinkan koneksi Filebeat-Logstash.

Simpan dan keluar dari file konfigurasi.

Uji Konfigurasi Logstash

Sebelum Anda dapat menjalankan Logstash, ada baiknya Anda memeriksa error konfigurasi apa pun;

/usr/share/logstash/bin/logstash --path.settings /etc/logstash -t

Jika semuanya baik-baik saja, Anda akan melihat baris seperti itu dari output perintah;

... Configuration OK [2020-10-16T19:03:05,994][INFO ][logstash.runner ] Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash

Anda sekarang dapat menjalankan Logstash dalam mode debugging hanya untuk melihat apakah ada error yang muncul sesuai dengan file konfigurasi Logstash Anda;

/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/test.conf --path.settings /etc/logstash/
... [INFO ] 2020-10-16 19:07:34.788 [Agent thread] agent - Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]} [INFO ] 2020-10-16 19:07:34.899 [[main]<beats] Server - Starting server on port: 5044 [INFO ] 2020-10-16 19:07:35.212 [Api Webserver] agent - Successfully started Logstash API endpoint {:port=>9600}...

Jika Anda melihat garis, Successfully started Logstash API endpoint, maka Anda siap melakukannya.

Konfigurasikan Filebeat untuk komunikasi Logstash SSL/TLS

Dengan asumsi Anda telah menginstal Filebeat pada sistem yang ingin Anda kumpulkan lognya, konfigurasikan untuk komunikasi Logstash TLS sebagai berikut;

Copy sertifikat CA yang dihasilkan di atas ke sistem jarak jauh jarak jauh.

scp $HOME/ca/ca.crt [email protected]:

Setelah Anda menyalin sertifikat CA ke host jarak jauh yang menjalankan filebeat, lanjutkan untuk mengonfigurasi komunikasi Filebeat-Logstash SSL/TLS.

Tempatkan copyan sertifikat CA di beberapa direktori yang relevan, misalnya /etc/filebeat;

cp $HOME/ca.crt /etc/filebeat

Sekarang konfigurasikan Filebeat untuk menggunakan SSL/TLS dengan menentukan jalur ke sertifikat CA pada output Logstash;

output.logstash: hosts: ["elk.kifarunix-demo.com:5044"] ssl.certificate_authorities: ["/etc/filebeat/ca.crt"]

Lihat contoh file konfigurasi Filebeat kami. Ensure that the Logstash hostname matches the FQDN used while creating the certificates.

filebeat.inputs: - type: log enabled: true paths: - /var/log/auth.log filebeat.config.modules: path: ${path.config}/modules.d/*.yml relo
ad.enabled: false setup.template.settings: index.number_of_shards: 1 setup.kibana: output.logstash: hosts: ["elk.kifarunix-demo.com:5044"] ssl.certificate_authorities: ["/etc/filebeat/ca.crt"] processors: - add_host_metadata: when.not.contains.tags: forwarded - add_cloud_metadata: ~ - add_docker_metadata: ~ - add_kubernetes_metadata: ~

Simpan file konfigurasi.

Validasi sertifikat server Logstash

Sebelum Anda dapat menjalankan Filebeat, Anda perlu memvalidasi kepercayaan sertifikat server Logstash.

curl -v --cacert /etc/filebeat/ca.crt https://elk.kifarunix-demo.com:5044

Jika kepercayaan dapat dibangun antara Logstash dan Filebeat, perintah harus mengembalikan respons kosong dari server.

* Trying 192.168.57.3:5044... * TCP_NODELAY set * Connected to elk.kifarunix-demo.com (192.168.57.3) port 5044 (#0) * ALPN, offering h2 * ALPN, offering http/1.1 * successfully set certificate verify locations: * CAfile: /etc/filebeat/ca.crt CApath: /etc/ssl/certs * TLSv1.3 (OUT), TLS handshake, Client hello (1): * TLSv1.3 (IN), TLS handshake, Server hello (2): * TLSv1.2 (IN), TLS handshake, Certificate (11): * TLSv1.2 (IN), TLS handshake, Server key exchange (12): * TLSv1.2 (IN), TLS handshake, Server finished (14): * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.2 (OUT), TLS handshake, Finished (20): * TLSv1.2 (IN), TLS handshake, Finished (20): * SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384 * ALPN, server did not agree to a protocol * Server certificate: * subject: CN=elk * start date: Oct 17 15:06:00 2020 GMT * expire date: Oct 15 15:06:00 2030 GMT * subjectAltName: host "elk.kifarunix-demo.com" matched cert's "elk.kifarunix-demo.com" * issuer: CN=Elastic Certificate Tool Autogenerated CA * SSL certificate verify ok. > GET / HTTP/1.1 > Host: elk.kifarunix-demo.com:5044 > User-Agent: curl/7.68.0 > Accept: */* > * TLSv1.2 (IN), TLS alert, close notify (256): * Empty reply from server * Closing connection 0 * TLSv1.2 (OUT), TLS alert, close notify (256): curl: (52) Empty reply from server

Jika Anda menggunakan alamat IP saat membuat sertifikat TLS, jalankan verifikasi sebagai berikut;

curl -v --cacert /etc/filebeat/ca.crt https://192.168.57.3:5044

Menguji Konfigurasi Filebeat

Filebeat dalam mode debugging untuk memeriksa apakah semuanya baik-baik saja.

filebeat -e

Anda akan melihat Filebeat mulai memanen file log dan terhubung ke host Logstash.

... 2020-10-16T20:05:49.564Z	INFO	cfgfile/reload.go:224	Loading of config files completed. 2020-10-16T20:05:49.563Z	INFO	log/harvester.go:299	Harvester started for file: /var/log/auth.log 2020-10-16T20:05:52.543Z	INFO	[add_cloud_metadata]	add_cloud_metadata/add_cloud_metadata.go:89	add_cloud_metadata: hosting provider type not detected. 2020-10-16T20:05:53.544Z	INFO	[publisher_pipeline_output]	pipeline/output.go:143	Connecting to backoff(async(tcp://elk.kifarunix-demo.com:5044)) 2020-10-16T20:05:53.547Z	INFO	[publisher]	pipeline/retry.go:219	retryer: send unwait signal to consumer 2020-10-16T20:05:53.549Z	INFO	[publisher]	pipeline/retry.go:223	 done 2020-10-16T20:05:53.624Z	INFO	[publisher_pipeline_output]	pipeline/output.go:151	Connection to backoff(async(tcp://elk.kifarunix-demo.com:5044)) established

Jika Anda menjalankan Logstash dalam mode debugging, maka Anda seharusnya dapat melihat log yang diisi ke keluaran standar;

... { "@timestamp" => 2020-10-16T20:05:52.544Z, "input" => { "type" => "log" }, "tags" => [ [0] "beats_input_codec_plain_applied" ], "@version" => "1", "agent" => { "version" => "7.9.2", "name" => "elk.kifarunix-demo.com", "type" => "filebeat", "hostname" => "elk.kifarunix-demo.com", "ephemeral_id" => "1241500c-8f5f-401b-a9f9-1526e8651878", "id" => "726660dc-4b6b-464f-b19b-62f343792a18" }, "host" => { "containerized" => false, "architecture" => "x86_64", "mac" => [ [0] "08:00:27:5c:05:2a", [1] "08:00:27:7f:84:15" ], "name" => "elk.kifarunix-demo.com", "hostname" => "elk.kifarunix-demo.com", "os" => { "codename" => "focal", "version" => "20.04.1 LTS (Focal Fossa)", "name" => "Ubuntu", "platform" => "ubuntu", "family" => "debian", "kernel" => "5.4.0-51-generic" }, "ip" => [ [0] "10.0.2.15", [1] "fe80::a00:27ff:fe5c:52a", [2] "192.168.57.3", [3] "fe80::a00:27ff:fe7f:8415" ], "id" => "57e55f802e0648f885bfe16101cb8d55" }, "log" => { "offset" => 6926, "file" => { "path" => "/var/log/auth.log" } }, "ecs" => { "version" => "1.5.0" }, "message" => "Oct 16 20:03:50 ubuntu20 sshd[8512]: Failed password for johndoe from 192.168.57.1 port 54196 ssh2"

Sekarang hentikan mode debugging Filebeat dan Logstash dan mulai dan aktifkan service untuk memulai saat boot;

systemctl enable --now logstash
systemctl enable --now filebeat

Dan itu menandai akhir dari cara mudah untuk mengkonfigurasi Koneksi Filebeat-Logstash SSL/TLS. Menikmati.

Bacaan lebih lanjut

Referensi Filebeat: Komunikasi yang aman dengan Logstash

Tutorial Terkait

Instal Nextcloud dengan Nginx dan Sertifikat SSL/TLS di CentOS 8

Konfigurasi Apache dengan Sertifikat SSL/TLS di CentOS 8

Konfigurasikan Nginx dengan sertifikat SSL/TLS di CentOS 8

Pantau Kedaluwarsa Sertifikat SSL/TLS dengan Nagios

Related Posts

© 2022 Tekno Sridianti