Membangun Log Event Management Server pada CentOS 7 dengan ELK-Stack

Arifin
6 min readAug 30, 2018

--

Pada tulisan kali ini saya ingin berbagi hasil percobaaan saya dalam membangun sebuah log event management server dalam contoh kasus log ssh server.

Sebetulnya percobaan ini ter-inspirasi dari beberapa tutorial seperti: Magazine CDEF I, ELK-Stack Tutorial Digital Ocean, dll. Jadi saya ingin menambahkan sedikit hal yang baru dari tutorial tersebut :D

Percobaan ini saya buatkan dalam Topologi Jaringan seperti berikut:

Topologi Jaringan Percobaan

Terdapat 3 buah Server Client (yang nanti nya server tersebut akan kita pantau log ssh nya) dan 1 buah Server ELK-Stack.

Server Client menggunakan OS Ubuntu Server 14.04, dan Server ELK-Stack menggunakan OS CentOS 7.

Tabel IP Address tiap server

Sebelum lebih jauh, saya akan menerangkan apa saja komponen yang digunakan dalam membangun ELK-Stack ini dan bagaimana alur proses nya

Komponen masing-masing server

Jadi pada Server ELK-Stack tentu komponen nya dari si ELK-Stack itu sendiri yaitu Elasticsearch, Logstash, Kibana.

Kemudian pada Server Client kita hanya menggunakan Filebeat (bagian dari ELK komponen) dan tentunya SSH server sebagai percobaan log yang nantinya kita pantau.

Untuk alur prosesnya, seperti berikut ini:

Alur Proses Log Server Client — Server ELK-Stack

Terlihat pada proses tersebut, log services SSH di server-client akan dikirim oleh Filebeat ke Logstash, jadi Filebeat berguna sebagai log shipper nya disini dan Logstash menjadi gerbang awal ketika Log Server Client masuk ke Server ELK-Stack. Logstash sendiri nantinya berfungsi sebagai filterisasi log yang sudah dikirim, tujuannya adalah membuat log tersebut bisa dibagi jadi beberapa kategori.

Kemudian setelah diproses pada Logstash, log tersebut akan dikirim ke Elasticsearch untuk ditampung, dan terakhir divisualisasikan pada Kibana.

Oke kita mulai masuk tahap konfigurasinya sekarang~

Konfigurasi yang pertama akan kita lakukan pada Server ELK-Stack terlebih dahulu, yaitu kita install paket-paket aplikasi ELK-Stack nya. Saya sudah buatkan simple bash script untuk otomatis install aplikasi ELK-Stack berikut ini:

Setelah semuanya selesai di-install, kita konfigurasikan yang pertama pada elasticsearch dengan mengkonfigurasi pada file /etc/elasticsearch/elasticsearch.yml untuk mengatur url port dan host elasticsearch kita

elasticsearch.yml

Kemudian pada file /usr/lib/systemd/system/elasticsearch.service tambahkan LimitMEMLOCK=infinity tujuannya adalah agar elasticsearch kita memlock nya tidak terbatas

elasticsearch.service

Selanjutnya pada file /etc/sysconfig/elasticsearch hilangkan tanda pagar / uncomment pada bagian berikut ini

/etc/sysconfig/elasticsearch

Jalankan perintah berikut ini untuk autostart elasticsearch ketika server di-restart

systemctl daemon-reload
systemctl enable elasticsearch
systemctl start elasticsearch

Konfigurasi selanjutnya pada Kibana, yang pertama pada file /etc/kibana/kibana.yml untuk mengatur port dan host kibana kita nantinya dan elasticsearch url kita

kibana.yml

Seperti biasa kita buat Kibana autostart dengan perintah berikut ini

systemctl enable kibana
systemctl start kibana

Oiya kita install nginx terlebih dahulu supaya Kibana kita dapat kita akses ketika kita buka url IP dari Server-ELK Stack kita nantinya.

Kemudian setting nginx.conf nya agar web server default nginx nya kita matikan dan kita ganti oleh kibana.

nginx.conf

Lalu buat 1 file lagi pada /etc/nginx/conf.d/ dengan nama kibana.conf

Kemudian jalankan perintah berikut ini untuk membuat user&pass untuk mengakses Kibana kita

sudo htpasswd -c /etc/nginx/.kibana-user NAMAUSER

Lalu jalankan nginx dan kita buat autostart nginx ketika di-restart

nginx -t
systemctl enable nginx
systemctl start nginx

Dan konfigurasi yang terakhir yaitu pada Logstash. Konfigurasi pada Logstash ini terbagi menjadi 3 bagian, yaitu Input, Filter, dan Output. Pertama, konfigurasikan untuk input pada Logstash yang bertujuan menerima input dari Filebeat dari masing-masing server-client.

Lalu kita buat konfigurasi filter pada Logstash, disini saya menggunakan grok dalam proses filter nya. Sebetulnya masih banyak lagi filter pada Logstash kalian bisa baca disini.

Dalam proses filter dengan grok untuk lebih detailnya bagaimana bisa dibaca pada tautan link diatas, nanti juga akan saya buatkan sedikit mengenai grok parse (kamingsun :D)

Pada dasarnya tujuan dilakukan filter ini adalah ketika log tersebut masuk elasticsearch sudah ada beberapa tag yang akan membedakan tiap log, dan nantinya kita bisa visualisasikan pada Kibana sesuai apa yang sudah kita kategorikan tersebut.

Kemudian yang terakhir kita buat untuk output Logstash nya ke elasticsearch

Kalau kita lihat pada bagian file konfigurasi input logstash diatas, terdapat bagian ssl_certificate dan ssl_key maka kita akan generate ssl certificate dan key tersebut, sebelum itu kita konfigurasikan file /etc/pki/tls/openssl.cnf untuk memasukkan IP Server ELK-Stack nya

openssl.cnf

Lalu generate ssl certificate dan key dengan perintah berikut

openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout /etc/pki/tls/private/logstash-forwarder.key -out /etc/pki/tls/certs/logstash-forwarder.crt

Kemudian start logstash

systemctl enable logstash
systemctl start logstash

Okee sampai sini kita sudah selesai untuk konfigurasi pada Server ELK-Stack nya. Selanjutnya kita konfigurasikan pada sisi Server Client nya.

Konfigurasi pada sisi clientnya, kita hanya konfigurasikan pada Filebeat tadi dengan tujuan mengatur log apa saja yang ingin dikirim, lalu output nya akan dikirimkan kemana.

Pertama tentunya kita install terlebih dahulu Filebeat nya.

wget -qO — https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-amd64.deb
dpkg -i filebeat-5.1.1-amd64.deb

Kemudian konfigurasikan Filebeat pada /etc/filebeat/filebeat.yml

filebeat.yml

Lalu kita copy kan file ssl certificate logstash-forwarder.crt yang sudah di-generate pada Server ELK-Stack sebelumnya, bisa menggunakan scp

scp root@192.168.1.100:~/logstash-forwarder.crt .

Kemudian buat folder certs pada /etc/pki/tls/ dan copy file logstash-forwarder.crt ke folder tersebut.

mv logstash-forwarder.crt /etc/pki/tls/certs/

Terakhir kita jalankan Filebeat

service filebeat start

Kemudian lakukan hal yang sama pada 2 server client berikutnya

Setelah semua konfigurasi selesai baik pada Server ELK-Stack maupun 3 Server Client nya, langkah selanjutnya adalah kita setup Kibana nya. Karena pada defaultnya kibana harus kita setting terlebih dahulu index-pattern nya.

Kita buka url kibana nya dengan mengakses http://192.168.1.100 (ip server elk-stack) kemudian akan muncul tampilan awal berikut, dan klik pada Set up Index Pattern

Lalu akan muncul form Define Index Pattern, dan masukkan filebeat-*

Setelah Set up index pattern, kita sebetulnya bisa langsung melihat log-log server client yang sudah masuk ke Server ELK-Stack pada menu Discover Kibana

Namun karena kita sudah melakukan filter pada log tersebut, kita buat visualisasi nya sesuai dengan kategorinya.

Berikut ini adalah nama visualisasi dan type chart visualisasinya:

Kemudian setelah dibuat visualisasinya, kita masukkan juga visualisasi tersebut ke dalam Dashboard agar kita bisa memantau lewat 1 halaman Dashboard tersebut. Berikut ini adalah hasil Dashboard nyaa~

Terakhir kita tinggal uji coba beberapa kesalahan login ssh pada server-client, dan lihat hasilnya pada Kibana.

FYI! Ketika kita sudah buat Log Event Management ini, walaupun log asli nya pada server-client dihapus tidak akan merubah keadaan yang ada pada server elk-stack nya lho. Jadi akan tetap seperti terakhir kali log itu terjadi :D

Sekian tutorial kali ini, semoga bermanfaat yaa!

Apabila ada pertanyaan lebih lanjut bisa menghubungi saya di Telegram ( @iPinn)

--

--