LINUXSEC

Cara Install dan Konfigurasi Elastic Stack di CentOS 7

Cara Install dan Konfigurasi Elastic Stack di CentOS 7. Di tutorial ini kita akan membahas instalasi Elastic Stack (atau yang sebelumnya dikenal dengan ELK Stack) di CentOS 7. Bagi yang belum tau, ELK adalah akronim dari Elasticsearch, Logstash, dan Kibana.

Elasticsearch berguna untuk menyimpan semua log yang berasal dari server, Logstash merupakan sebuah perangkat lunak open source untuk mengumpulkan dan memparsing log dan juga membuat index untuk log, kemudian disimpan pada elasticsearch. Kibana adalah web interface yang berguna untuk menampilkan log baik dalam bentuk grafik maupun visualisasi lainnya. untuk file agent di perlukan filebeat yang berguna untuk mengirim log dari setiap server kepada logstash.

Komponen utama dari Elastic Stack adalah:

  • Elasticsearch : menyimpan semua log
  • Logstash : komponen pemrosesan data dari Elastic Stack yang mengirimkan data yang masuk ke Elasticsearch.
  • Kibana : Web interface untuk mencari dan memvisualisasikan log.
  • Filebeat : mengirim log ke logstash. Berfungsi sebagai shipping agent untuk log.

Pertama, install Java terlebih dahulu karena Elasticsearch dan Logstash membutuhkan Java.

sudo yum install java-openjdk-devel java-openjdk -y

Install Elasticsearch

Tambahkan repository Elasticsearch 7 ke sistem.

sudo nano /etc/yum.repos.d/elasticsearch.repo

Masukkan isinyya:

[elasticsearch-7.x]  
name=Elasticsearch repository  
baseurl=https://artifacts.elastic.co/packages/7.x/yum  
gpgcheck=1  
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch  
enabled=1  
autorefresh=1  
type=rpm-md

Import GPG key

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Update indexing yum

sudo yum clean all && sudo yum makecache

Lanjut instalasi Elasticsearch

sudo yum install elasticsearch  -y

Tunggu proses instalasi selesai. Selanjutnya enable service agar langsung berjalan saat booting

sudo systemctl enable elasticsearch

Langkah optional:
Jika kalian menggunakan server dengan spesifikasi rendah, kalian bisa menurunkan nilai heap space di Elasticsearch. Defaultnya adalah 1GB.

sudo nano /etc/elasticsearch/jvm.options

Cari bagian

-Xms1g  
-Xmx1g

Lalu ubah menjadi

-Xms256m  
-Xmx512m

Selanjutnya, edit file /etc/elasticsearch/elasticsearch.yml

sudo nano /etc/elasticsearch/elasticsearch.yml

Cari baris network.host dan ubah value nya menjadi

network.host: localhost

Hapus comment didepannya. Hal ini dilakukan untuk membatasi akses agar publik tidak bisa mengakses atau membaca data Elasticsearch melalui REST API.

Lanjut restart Elasticsearch

sudo systemctl restart elasticsearch

Untuk testing, jalankan perintah berikut

curl http://127.0.0.1:9200

Contoh output

Install Kibana
Selanjutnya adalah proses install dan konfigurasi Kibana.

sudo yum install kibana -y

Edit file konfigurasi Kibana

sudo nano /etc/kibana/kibana.yml

Ubah konfigurasi Kibana dengan menghapus seluruh comment atau tanda pagar di ketiga baris berikut

server.port: 5601  
server.host: "localhost"  
server.name: "kibana-server"  
elasticsearch.url: "http://localhost:9200"

Lanjut, kita enable Kibana saat booting.

sudo systemctl enable kibana
sudo systemctl start kibana

Di tutorial ini saya menggunakan web server Nginx. Sekarang kita konfigurasikan Kibana dengan Nginx.
Sebelumnya, kita buat dulu auth untuk login ke Kibana.

sudo mkdir /etc/nginx/web-auth
sudo htpasswd -c /etc/nginx/web-auth/.kibanaauth elklogin

Sesuaikan sendiri nama file htpasswd beserta usernya.

Lanjut setting serverblock untuk Kibana

sudo nano /etc/nginx/sites-enabled/kibana-server

Lalu isikan

server {  
    listen 80;  
    server_name elk.evil-security.com;  
    auth_basic "Restricted Access";  
    auth_basic_user_file /etc/nginx/web-auth/.kibanaauth;  
  
    location / {  
        proxy_pass http://localhost:5601;  
        proxy_http_version 1.1;  
        proxy_set_header Upgrade $http_upgrade;  
        proxy_set_header Connection 'upgrade';  
        proxy_set_header Host $host;  
        proxy_cache_bypass $http_upgrade;  
    }  
}

Sesuaikan sendiri servername dan juga lokasi htpasswd nya.  Selanjutnya reload Nginx dengan perintah

sudo service nginx reload

Jika SELinux kalian aktif, maka SELinux tidak mengijinkan service Nginx mengakses proxied service. Ijinkan dengan menjalankan perintah berikut

sudo setsebool httpd_can_network_connect 1 -P

Terakhir, akses Kibana melalui browser.

elk.evil-security.com

Masukkan user dan password yang kalian atur di proses htpasswd diatas.

Install Logstash
Selanjutnya adalah instalasi logstash

sudo yum -y install logstash

Lanjut buat file konfigurasi Filebat input.

sudo nano /etc/logstash/conf.d/02-beats-input.conf

Isinya:

Lalu

sudo nano /etc/logstash/conf.d/30-elasticsearch-output.conf

Isinya

Lanjut kita tambahkan Konfigurasi log. Kalian bisa baca dokumentasi Elastic. Disini saya akan mengaktifkan filter log untuk Nginx dan Syslog. Untuk filter lain kalian bisa sesuaikan sendiri.

sudo nano /etc/logstash/conf.d/10-syslog-filter.conf

Isinya

Lalu untuk Nginx

sudo nano /etc/logstash/conf.d/11-nginx-filter.conf

Isinya

Next kita test konfigurasinya. Jika outputnya OK berarti tidak ada yang error.

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

Contoh output

Langkah opsional:
Seperti Elasticsearch, untuk membatasi heap space di Logstash edit file konfigurasi Logstash

sudo nano /etc/logstash/jvm.options

Cari bagian

-Xms1g  
-Xmx1g

Lalu ubah menjadi

-Xms256m  
-Xmx512m

Lanjut kita enable Logstash saat booting

sudo systemctl enable logstash
sudo systemctl start logstash

Install Filebat
Terakhir, install Filebat.

sudo yum install filebeat -y

Selanjutnya kita konfigurasi Filebat agar bisa mengirim log ke Logstash

sudo nano /etc/filebeat/filebeat.yml

Cari baris output.elasticsearch dan hosts, beri comment didepannya.Lihat screenshot berikut

Hal ini kita lakukan karena kita tidak butuh Filebat untuk mengirim log langsung ke Elasticsearch.

Masih di file lang sama, cari baris output.logstash dan hosts, dan hapus comment didepannya. Lihat screenshot

Selanjutnya, aktifkan modul system dan juga nginx di Filebat. Modul yang diaktifkan sesuaikan sendiri dengan filter yang kalian aktifkan diatas.

sudo filebeat modules enable system

Enable dan start Filebat

sudo systemctl enable filebeat
sudo systemctl start filebeat

Lanjut, load index template di Elasticsearch

sudo filebeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'

Selanjutnya enable output Elasticsearch

sudo filebeat setup -e -E output.logstash.enabled=false -E output.elasticsearch.hosts=['localhost:9200'] -E setup.kibana.host=localhost:5601

Contoh output

Kembali cek dashboard Kibana.

Sisanya bisa kalian explore sendiri.

Oke mungkin itu saja tutorial kali ini. Semoga bermanfaat. Jika ada yang ingin ditanyakan silahkan tinggalkan komentar.

Komentar

    Tinggalkan Komentar

    Silahkan tinggalkan komentar jika ada masukan, pertanyaan, kritik ataupun dukungan. Namun pastikan untuk berkomentar secara sopan.