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.
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.
Kamu bisa explore pada menu-menu yang terdapat pada Dashboard. Seperti contohnya pada Discover, kamu bisa melihat filebeat data.
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