Cara Install Elastic Stack di Ubuntu 20.04

Cara Install Elastic Stack di Ubuntu 20.04

Dalam melakukan analisa log, dibutuhkan bantuan tools agar dapat lengkap dan spesifik dalam menganalisa serta memvisualisasikan log, untuk hal tersebut dapat menggunakan salah satu tools stack yaitu Elastic Stack atau ELK Stack. Bagaimana cara install elastic stack di Ubuntu 20.04? Simak artikel di bawah ini ya!

ELK Stack

ELK Stack adalah sekumpulan dari open-source software yang memungkinkan user untuk mencari, menganalisa, dan memvisualisasikan logs. Pembuatan log berasal dari berbagai sumber dalam format apapun, praktik seperti ini disebut sebagai centralized logging. Centralized logging berguna ketika mencoba untuk mengidentifikasi suatu masalah pada server atau aplikasi.

Elastic Stack terbagi menjadi 4 komponen utama:

  • Elasticsearch: Search engine RESTful terdistribusi yang menyimpan semua data yang dikumpulkan.
  • Logstash: Komponen pemrosesan data dari Elastic Stack yang mengirimkan data masuk ke Elasticsearch.
  • Kibana: Web Interface atau User Interface untuk mencari dan memvisualisasikan log.
  • Beats: Pengirim data yang bertugas untuk mengirim data dari banyak mesin ke Logstash atau Elasticsearch.

Pada tutorial ini, kami akan membahas mengenai Cara Install Elastic Stack di Ubuntu 20.04.

Persyaratan

  • Terdapat beberapa persyaratan sebelum melakukan instalasi.
  • Memiliki VPS yang aktif dengan OS Ubuntu 20.04.
  • Memiliki akses root.

Point

Terdapat beberapa rangkuman point instalasi pada artikel ini.

  • Update Server
  • Install Firewall
  • Install Nginx Web Server
  • Install & Configure Elasticsearch
  • Install & Configure Kibana
  • Install SSL Let’s Encrypt
  • Setting Virtual Host Nginx
  • Install & Configure Logstash
  • Install & Configure Filebeat
  • Testing

Cara Install Elastic Stack di Ubuntu 20.04

Update Server

Login sebagai root ke server dan update server untuk memastikan packages nya sudah up-to-date.

$ apt-get update -y
$ reboot

Install beberapa packages yang dibutuhkan.

$ apt-get install nano perl wget curl -y

Install Firewall

Sebelum memulainya, perlu instalasi Firewall supaya lebih secure. Pada Firewall ini menggunakan CSF (ConfigServer Security & Firewall). Instalasinya dengan perintah di bawah ini:

$ cd /usr/src/
$ wget https://download.configserver.com/csf.tgz
$ tar -xzf csf.tgz
$ cd csf/
$ sh install.sh

Pada konfigurasi CSF rubah “make TESTING=’1’ menjadi 0”.

$ nano /etc/csf/csf.conf

Tambahkan port 9200, 5601 dan 5044 untuk elasticsearch, kibana dan logstash. Tambahkan pada TCP_IN dan TCP_Out.

Jika sudah save dan exit.

Kemudian restart CSF supaya reload konfigurasi yang ter-update.

$ csf -r

Install Nginx Web Server

Untuk dapat menampilkan ELK melalui domain, diperlukan Web Server, disini kami menggunakan Nginx Web Server.

$ apt-get install nginx -y

Install & Configure Elasticsearch

Gunakan perintah curl untuk import elasticsearch public GPG key ke APT.

$ curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Tambahkan Elastic source list ke source.list.d directory.

$ echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

Update package list.

$ sudo apt update -y

Install Elasticsearch.

$ apt-get install elasticsearch -y

Ubah konfigurasi pada file elasticsearch.yml.

$ nano /etc/elasticsearch/elasticsearch.yml

Ubah pada value network.host
network.host : localhost

Save dan exit.

Start & enable on-boot elasticsearch service.

$ systemctl start elasticsearch
$ systemctl enable elasticsearch

Lakukan testing elasticsearch service menggunakan curl.

$ curl -X GET “localhost:9200”

Output:

{
"name" : "elk",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "ec8l6JjsTtWfdUVGWweOQw",
"version" : {
"number" : "7.17.8",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "120eabe1c8a0cb2ae87cffc109a5b65d213e9df1",
"build_date" : "2022-12-02T17:33:09.727072865Z",
"build_snapshot" : false,
"lucene_version" : "8.11.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}

Elasticsearch sudah up dan berjalan, selanjutnya install Kibana.

Install & Configure Kibana

$ apt-get install kibana -y

Start dan enable on-boot untuk service kibana.

$ systemctl start kibana
$ systemctl enable kibana

Untuk mengamankan akses Kibana Admin, perlu gunakan perintah openssl. Di sini kami menggunakan nama kibananinja sebagai username dan akan membuat password lalu disimpan pada htpasswd.users file.

$ echo "kibananinja:`openssl passwd -apr1`" | tee -a /etc/nginx/htpasswd.users

Output:

kibananinja:$apr1$iJVtEb7s$NSMgS5HgnHmXCUPF6DMSb/

Install SSL Let’s Encrypt

Agar lebih secure, diperlukan SSL. Instalasi SSL Let’s Encrypt ini menggunakan Snapd.

$ apt-get install snapd -y
$ systemctl enable --now snapd.socket
$ ln -s /var/lib/snapd/snap /snap
$ snap install certbot --classic
$ ln -s /snap/bin/certbot /usr/bin/certbot
$ cd ~

Clone & Install Let’s Encrypt

$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt
$ systemctl stop nginx
$ certbot certonly --standalone
$ systemctl start nginx

Setting Virtual Host Nginx

Buat Virtual Host Nginx domain yang akan digunakan pada ELK.

$ nano /etc/nginx/conf.d/vps201.dewiweb.conf

Paste script di bawah:

server {
listen 80;
listen [::]:80;
server_name vps201.dewiweb.net;
return 301 https://$server_name$request_uri;
}

server {
listen 443 vps201.dewiweb.net;
tcp_nopush on;
tcp_nodelay on;
client_body_buffer_size 16k;
client_body_timeout 1200s;
client_header_timeout 1200s;
gzip on;
gzip_comp_level 9;
gzip_disable "MSIE [1-6]\.";
gzip_types *;
#SSL
ssl on;
# Use certificate and key provided by Let's Encrypt:
ssl_certificate /etc/letsencrypt/live/vps201.dewiweb.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/vps201.dewiweb.net/privkey.pem;
ssl_session_timeout 15m;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDH+AESGCM:!DH+AESGCM:ECDH+AES256:!DH+AES256:ECDH+AES128:!DH+AES:ECDH+3DES:!DH+3DES:!DH+AES128:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS:!LOW:!MEDIUM'; ssl_stapling on;
ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; ssl_trusted_certificate /etc/letsencrypt/live/vps201.dewiweb.net/fullchain.pem;
# add_header Strict-Transport-Security "max-age=31536000";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $http_host;

auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/htpasswd.users;

location / {
add_header X-Static no;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
proxy_intercept_errors on;
proxy_read_timeout 300000;
proxy_connect_timeout 6h;
proxy_buffer_size 64k;
proxy_buffering off;
proxy_buffers 4 64k;
proxy_busy_buffers_size 64k;
proxy_pass http://localhost:5601;
}
location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc|css|js)$ {
proxy_pass http://localhost:5601;
}
}
#http redirects to https
server {
listen 80;
server_name vps201.dewiweb.net;
rewrite ^/.*$ https://$host$request_uri? permanent;
}

Kemudian coba akses domain yang sudah di setting sebelumnya.

cara install elastic stack - install & configure kibana

Install & Configure Logstash

Meskipun Beats dapat mengirimkan data langsung ke database Elasticsearch, Logstash biasanya digunakan untuk memproses data. Ini akan memberikan kamu lebih banyak fleksibilitas untuk mengumpulkan data dari sumber yang berbeda, mengubahnya menjadi format umum dan mengekspornya ke database lain.
$ apt-get install logstash -y

Create file configuration dengan nama 02-beats-input.conf.

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

Pastekan script di bawah ini.

input {
beats {
port => 5044
}
}

Save dan exit.

Buat file configuration lagi dengan nama 30-elasticsearch-output.conf.

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

Pastekan script di bawah ini.

output {
if [@metadata][pipeline] {
elasticsearch {
hosts => ["localhost:9200"]
manage_template => false
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
pipeline => "%{[@metadata][pipeline]}"
}
} else {
elasticsearch {
hosts => ["localhost:9200"]
manage_template => false
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
}
}
}

Save dan exit.

Start dan enable on-boot untuk service logstash.

$ systemctl start logstash
$ systemctl enable logstash

 

Install & Configure Filebeat

Elastic Stack menggunakan beberapa pengirim data ringan yang disebut dengan Beats, untuk mengumpulkan data dari berbagai sumber dan memindahkannya ke Logstash atau Elasticsearch. Beats yang tersedia saat ini dari Elastic:

  • Filebeat: Mengumpulkan dan mengirimkan file log.
  • Metricbeat: Mengumpulkan metrics dari system dan services.
  • Packetbeat: Mengumpulkan dan menganalisis network data.
  • Winlogbeat: Mengumpulkan log event logs.
  • Auditbeat: Mengumpulkan data framework audit linux dan monitor file integrity.
  • Heartbeat: Monitor service untuk ketersediaannya dengan pemeriksaan aktif.

Pada tutorial ini, kami akan menggunakan Filebeat untuk meneruskan local logs ke Elastic Stack.

$ apt-get install filebeat -y

Ubah konfigurasi filebeat.

$ nano /etc/filebeat/filebeat.yml

Pada output.elastic.search, ubah seperti di bawah ini.

#output.elasticsearch:
# Array of hosts to connect to.
#hosts: ["localhost:9200"]

Kemudian pada output.logstash, ubah seperti di bawah ini.

output.logstash:
# The Logstash hosts
hosts: ["localhost:5044"]

Enable Filebeat module.

$ filebeat modules enable system

Cek list enabled & disabled modules:

$ filebeat modules list

Output:

Enabled:
system

Disabled:
activemq
apache
auditd
aws
awsfargate
azure
barracuda
bluecoat
cef
checkpoint
cisco
coredns
crowdstrike
cyberark
cyberarkpas
cylance
elasticsearch
envoyproxy
f5
fortinet
gcp
google_workspace
googlecloud
gsuite
haproxy
ibmmq
icinga
iis
imperva
infoblox
iptables
juniper
kafka
kibana
logstash
microsoft
misp
mongodb
mssql
mysql
mysqlenterprise
nats
netflow
netscout
nginx
o365
okta
oracle
osquery
panw
pensando
postgresql
proofpoint
rabbitmq
radware
redis
santa
snort
snyk
sonicwall
sophos
squid
suricata
threatintel
tomcat
traefik
zeek
zookeeper
zoom
zscaler

Set up Filebeat.

$ filebeat setup --pipelines --modules system

Load template.

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

Output:

Index setup finished.

Disable Logstash output dan enable elasticsearch output:

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

Output:

Index setup finished.
Loading dashboards (Kibana must be running and reachable)
Loaded dashboards
Setting up ML using setup --machine-learning is going to be removed in 8.0.0. Please use the ML app instead.
See more: https://www.elastic.co/guide/en/machine-learning/current/index.html
It is not possible to load ML jobs into an Elasticsearch 8.0.0 or newer using the Beat.
Loaded machine learning job configurations
Loaded Ingest pipelines

Start dan enable on-boot untuk service filebeat.

$ systemctl start filebeat
$ systemctl enable filebeat

Untuk memverifikasi bahwa Elasticsearch memang menerima data ini, lakukan query index filebeat dengan perintah ini.

$ curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

Output:

{
"took" : 70,
"timed_out" : false,
"_shards" : {
"total" : 2,
"successful" : 2,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 10000,
"relation" : "gte"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "filebeat-7.17.8-2022.12.20",
"_type" : "_doc",
"_id" : "7TblLYUBCkUvcNwqpj37",
"_score" : 1.0,
"_source" : {
"agent" : {
"hostname" : "elk",
"name" : "elk",
"id" : "6979a958-82ba-4a3f-9c1d-0ea4145204ec",
"type" : "filebeat",
"ephemeral_id" : "e0cee375-4d34-40a3-baba-e1ca74611b73",
"version" : "7.17.8"
},
...

Testing

Setelah itu lakukan testing dengan akses ke domain yang sudah kamu setting sebelumnya.

cara install elastic stack - testing

Kamu bisa explore pada menu-menu yang terdapat pada Dashboard. Seperti contohnya pada Discover, kamu bisa melihat filebeat data.

testing

Kesimpulan

Untuk instalasi ELK memang banyak step yang harus dilalui, namun tidak sulit jika kamu mengikuti instruksi yang kami berikan. Jika kamu mengikuti artikel ini dari awal sampai akhir, artinya kamu sudah melakukan Instalasi Elastic Stack di Ubuntu 20.04. Demikian artikel ini, jangan sungkan untuk meninggalkan ide-ide topik yang ingin Anda baca di blog Dewaweb. Semoga artikel ini membantu