elk with dionaea cowrie
TRANSCRIPT
Daftar Konten:
1 Intro 11.1 Instalasi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Penggunaan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.3 Pengembangan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.4 Catatan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
i
CHAPTER 1
Intro
ELK (Elasticsearch, Logtash, dan Kibana) adalah SIEM yang cukup terkenal karena memang fungsinya yang sangatberguna dengan penggunaan yang memudahkan. Pada kesempatan ini, kami akan membahas cara instalasi, konfig-urasi, dan penggunaan ELK dengan Dionaea dan Cowrie yang sering ditemukan pada Honeypot. Selain itu, kami jugaakan membahas pengembangan yang dapat dilakukan seperti menambah keamanan dan sensor serta beberapa catatandalam pembuatan sistem ini.
1.1 Instalasi
Pada manual ini akan dijelaskan tahap instalasi dalam membuat dashboard malware monitoring menggunakan ELKStack dan Snort3 dengan cara mengambil dependencies langsung dari repository masing-masing tools.
1.1.1 Menyiapkan ELK Stack
ELK Stack merupakan sekumpulan tools open source yang terdiri dari Elasticsearch, Logstash dan Kibana yang memi-liki fungsi masing-masing Elasticsearch berguna untuk menyimpan semua log yang berasal dari server, Logstash meru-pakan sebuah perangkat lunak open source untuk mengumpulkan dan memparsing log dan juga membuat index untuklog, kemudian disimpan pada elasticsearch. Kibana adalah web interface yang berguna untuk menampilkan log baikdalam bentuk grafik maupun visualisasi lainnya.
1.1.2 Install Java 8
Elasticsearch memerlukan Java 8 untuk dapat berjalan, oleh karena itu diperlukan instalasi Oracle Java 8.
tambahkan repository Java 8 kemudian dilanjutkan dengan update system dan instalasi.
Perintahnya:
add-apt-repository ppa:webupd8team/javaapt-get updateapt install oracle-java8-set-default
1
ELK with Dionaea Cowrie, Release 0.0.1
Setelah instalasi pastikan versi java sudah benar dengan menggunakan perintah berikut
java-versionecho $JAVA_HOME
Update versi ELK
Lakukan update versi ELK menjadi versi 7.8.x agar mendapatkan fitur tambahan dan tampilan interface yang terbaru
pertama dengan perintah wget untuk mengunduh Elasticsearch dengan kunci publiknya
sudo wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add→˓-
selanjutnya mengunduh tools untuk mengirimkan paket dengan https
sudo wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add→˓-
menambahkan repositorynya
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /→˓etc/apt/sources.list.d/elastic-7.x.list
setelah semua selesai lakukan update daftar repository dan install paketnya
1.1.3 Elasticsearch
Elasticsearch adalah tools open-source, mesin pencarian dan analisis berdasarkan mesin Apache Lucene dan dibangundengan RESTful API. Elasticsearch menawarkan kemudahan untuk pengolahan data dengan cara dapat menyimpan,mencari dan analisa data yang berukuran besar. Fungsinya yang digunakannya yaitu untuk melakukan filtering danquery dari data.
lakukan install Elasticsearch versi 7.8, perintah instalasi
apt-get install elasticsearch
pastikan bahwa layanan sudah berjalan
systemctl status elasticsearch
ketika layanan berjalan, lakukan konfigurasi file elasticsearch.yml dengan mengubah network.host dan http.port men-jadi
---------- Paths ----------
path.data: /var/lib/elasticsearchpath.logs: /var/log/elasticsearch
---------- Network ---------
network.host: 103.133.56.233http.port: 9200
setelah disimpan dan keluar, lakukan kembali restart sistem layanan. Lakukan cek instalasi dengan perintah
2 Chapter 1. Intro
ELK with Dionaea Cowrie, Release 0.0.1
curl http://localhost:9200
1.1.4 Logstash
Logstash adalah tools untuk menyimpan data secara pipeline. Berfungsi untuk menyimpan data input dan memberikanke Elasticsearch. Logstash mengambil semua tipe data dari berbagai sumber dan dibuat agar dapat digunakan untukberbagai kegunaan. Fungsi yang digunakan adalah analisa berbagai struktur/non-struktur data dan events.
Perintahnya untuk instalasi Logstash
apt-get install logstash
lakukan cek status layanan logstash
systemctl status logstash
pada logstash terdapat tiga file konfigurasi yang menghubungkan input log dari server berbeda seperti cowrie, dionaeadan snort berikut adalah file konfigurasinya
logstash-cowrie.conf
input {
file {path => ["/home/cowrie/cowrie/var/log/cowrie/cowrie.js$codec => jsontype => "cowrie"
}output {
if [type] == "cowrie" {elasticsearch {
hosts => ["103.133.56.233:9200"]index => "kel4-cowrie-%{+YYY.MM.dd}"
}file {
path => "/tmp/cowrie-logstash.log"codec => json
}
logstash-dionaea.conf
input {beats {
port => 5044}
}filter {
if [document_type] == "dionaea" {json {
source => "message"}
if [remote_host] {mutate {
copy => { "remote_host" => "remote_hostname" }}
(continues on next page)
1.1. Instalasi 3
ELK with Dionaea Cowrie, Release 0.0.1
(continued from previous page)
dns {reverse => [ "remote_hostname" ]nameserver => [ "8.8.8.8", "8.8.4.4" ]action => "replace"hit_cache_size => 4096hit_cache_ttl => 900failed_cache_size => 512failed_cache_ttl => 900
}
geoip {source => "remote_host"target => "geoip"
}}
mutate {remove_tag => [ "beats_input_codec_plain_applied"]remove_field => [ "source", "offset", "input_type" ]
}}
}
output {if [document_type] == "dionaea" {
elasticsearch {hosts => ["103.133.56.233:9200"]index => "kel4-dionaea-%{+YYYY.MM.dd}"
}
logstash-snort.conf
input {file {
path => "/var/log/snort/alert_json*"start_position => "beginning"sincedb_path => "/dev/null"
}}
output {elasticsearch {
hosts => "http://103.133.56.233:9200"index => "kel4-snort3-%{+YYYY.MM.dd}"
}stdout { }
}
1.1.5 Kibana
Kibana adalah visualisasi data yang melengkapi ELK Stack. Tools ini digunakan untuk visualisasi file yang sudahanalisa dan diparsing oleh Elasticsearch untuk memudahkan pengembang dalam melihat data. Dashboard Kibanamenawarkan berbagai diagram interactive, data geospatial, dan graph untuk visualisasi data kompleks.
Perintah untuk instalasi Kibana
4 Chapter 1. Intro
ELK with Dionaea Cowrie, Release 0.0.1
apt-get install kibana
lakukan cek layanan Kibana
ssytemctl status kibana
lakukan konfigurasi Kibana di file konfigurasinya yaitu kibana.yml, lakukan dengan perintah berikut:
vim /etc/kibana/kibana.yml
kemudian ubah beberapa konfigurasi pada filenya disesuaikan dengan sistem. Simpan dan keluar, kemudian lakukanrestart layanan Kibana
server.port: 5601
server.host: "103.133.56.233"
elasticsearch.host: [http://103.133.56.233:9200:]
dan ubah perintah server hostnya menjadi localhost. Simpan dan keluar, kemudian lakukan restart layanan Kibana
Meskipun ELK Stack hanya terdiri dari tiga tools utama yaitu Elasticsearch, Logstash dan Kibana. Namun terdapatbeberapa tools pendukung lain yang diperlukan agar fungsi dashboard malware ini dapat berjalan sempurna, beberapadependenciesnya yang diinstal sebagai berikut:
Filebeat
apt-get install filebeat
lakukan cek layanan Filebeat untuk memastikan sudah berjalan
systemctl status filebeat
ubah beberapa konfigurasi pada file filebeat.yml
filebeat.inputsL- type: log
paths:- /opt/dionaea/var/dionaea/json/dionaea.json*
fields:document_type: dionaea
fields_under_root: trueoutput:
logstash:host: ["103.133.56.233:5044"]bulk_max_size: 2048
SqliteToJson
SqliteToJson berguna untuk melakukan konversi struktur data SQL menjadi struktur data JSON yang digunakan olehELK, data SQL yang diambil dari server dionaea.
Tools diunduh dari repository yang ada di github, sehingga perintahnya:
1.1. Instalasi 5
ELK with Dionaea Cowrie, Release 0.0.1
wget https://raw.githubusercontent.com/eva2A/dionaeaToJSON/master/dionaeaSqliteToJson.→˓py
Nginx
Penggunaan nginx pada ELK Stack adalah sebagai reverse proxy untuk keamanan jaringan dengan menjadi serveryang menjadi penyimpanan logs
cara instalasinya
apt install nginx apache2-utils
1.2 Penggunaan
1.2.1 ELK (Elasticsearch, Logstash dan Kibana)
Elasticsearch, Logstash dan Kibana adalah tools yang berguna untuk mengumpulkan log dan juga menvisualisasi ataumenampilkan log , Elasticsearch berguna untuk menyimpan semua log yang berasal dari server, Logstash merupakansebuah 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 dalambentuk grafik maupun visualisasi lainnya. Untuk file agent, diperlukan filebeat yang berguna untuk mengirim log darisetiap server kepada logstash Log yang tersentralisasi sangat berguna jika suatu saat seorang DevOps akan melakukanidentifikasi masalah pada server atau aplikasi. Hal tersebut membuat mereka mampu mencari histori data atau log.Pada kesempatan ini, seluruh log kami dapatkan dari server Dionaea dan Cowrie yang berfungsi sebagai Honeypot.Kami juga menggunakan log yang dihasilkan dari sensor yang kami buat, dalam hal ini Snort.
1.2.2 Komponen ELK
Pada praktikum ini dimana membuat bank data terkait malware maka ELK memiliki tugas dan fungsi sebagai berikut:
a. Logstash : memproses log dari malware dan membuat index log malware.
b. Elasticsearch : menyimpan semua log malware.
c. Kibana : Web interface untuk mencari dan memvisualisasikan log malware dalam grafik yang di inginkan.
d. Filebeat : mengirim log ke logstash. Berfungsi sebagai shipping agent untuk log. Menggunakan lumberjacknetworking protocol untuk berkomunikasi dengan logstash. Filebeat akan dipasang di server yang mempunyailog (yang akan diproses).
1.2.3 Tampilan
Berikut merupakan tampilan dari Kibana dan Log
a. Tampilan Kibana (putih)
Pada bagian ini ditampilkan tampilan Kibana yang lebih menonjolkan informasi serangan berdasarkan negara peny-erang. Setiap warna yang ada pada gambar di bawah ini mengindikasikan banyaknya serangan yang dilakukan olehnegara-negara tersebut kepada server. Pada tampilan ini juga memberikan informasi tentang apa saja yang dilakukanoleh penyerang dan malware apa saja yang dimasukkan penyerang ke dalam server.
6 Chapter 1. Intro
ELK with Dionaea Cowrie, Release 0.0.1
b. Tampilan Kibana (hitam)
Pada bagian ini ditampilkan perubahan tampilan terakhir yang kami lakukan. Pada tampilan ini, kami lebih mengede-pankan informasi yang informatif tentang serangan yang dilakukan penyerang. Kami menampilkan map dengan in-dikator border putih untuk menunjukkan asal negara penyerang secara total, data penyerang terbanyak, dan malwareterbanyak yang dimasukkan pada server. Selain itu, kami juga menunjukkan grafik serangan setiap hari dan waktu.Hal ini digunakan agar monitoring pada sistem lebih terjaga.
c. Tampilan Log
Pada bagian ini ditampilkan log yang kami dapatkan dari server. Semua log ini memiliki ketentuan-ketentuan tertentuyang kemudian kami olah menjadi seperti pada tampilan-tampilan Kibana sebelumnya. Adapun semua log yang kamiolah ini, memiliki format file JSON.
1.2. Penggunaan 7
ELK with Dionaea Cowrie, Release 0.0.1
1.3 Pengembangan
ELK merupakan tumpukan yang terdiri dari tiga software: Elasticsearch, Logstash dan Kibana. Dengan kemampuandari ketiga software yang digabungkan menjadi satu kesatuan, ELK Stack dapat digunakan untuk pencarian, pemros-esan data, agregasi, dan visualisasi.
Tidak hanya sebatas dengan kemampuan tersebut, dimana tujuannya adalah memvisualisasikan banyak data yangdiperoleh agar human-readable. ELK Stack dapat dikembangakan dengan menambahkan konfigurasi atau diinte-grasikan dengan software yang mendukung. Seperti dalam projek ini kami menambahkan & mengintegrasikan Cowrie,kemudian Snort ditambah pengamanan yang didapat dari X-pack
1.3.1 Snort 3
Snort adalah tools open-source untuk Network-Based Intrusion Detection System (NIDS) yang memiliki fitur untksniff lalu lintas jaringan dan melakukan monitoring paket data yang masuk dan keluar dari jaringan kllien ke server atausebaliknya. Fitur yang digunakan adalah fungsi snort untuk analisa setiap paket dari aktivitas malicious yang berjalanmelalui jaringan. Seluruh instalasi snort dilakukan pada direktori ~/Kelompok_4/snort_src/ , instalasi berdasarkanrefrensi dari Noah Dietrich dalam bukunya Snort 3 on Ubuntu.
Snort banyak membutuhkan dependencies agar dapat berjalan sesuai dengan fungsinya
Gperftools
unduh dan install gperftools 2.7. tcmalloc adalah memory allocator untuk optimisasi concurrency tinggi dan menye-diakan kecepatan cepat untuk penukaran penggunaan memory
sudo apt-get install -y build-essential autotools-dev libdumbnet-dev \ libluajit-5.1-→˓dev libpcap-dev zlib1g-dev pkg-config libhwloc-dev \cmakesudo apt-get install -y liblzma-dev openssl libssl-dev cpputest \libsqlite3-dev uuid-→˓dev
Snort DAQ (Data Acquisition Library) memiliki beberapa kebutuhan untuk dapat berjalan
8 Chapter 1. Intro
ELK with Dionaea Cowrie, Release 0.0.1
sudo apt-get install -y bison flex libcmocka-d
lakukan build dan instalasi dari gperftools
sudo apt install -y libundwind-devcd ~/snort_srcwget https://github.com/gperftools/gperftools/releases/download/gperftools-2.7.90/→˓gperftools-2.7.90.tar.gztar xzvf gperftools-2.7.90.tar.gzcd gperftools-2.7.90./configuremakesudo make install
Hyperscan
Snort 3 menggunakan hyperscan untuk menyamakan pattern dengan cepat, Hyperscan membutuhkan Ragel dan BoostHeader. Kegunaan Boost adalah untuk libraries C++ untuk Hyperscan.
wget https://dl.bintray.com/boostorg/release/1.72.0/source/boost_1_72_0.tar.gztar -xvzf boost_1_72_0.tar.gz
Ragel
wget http://www.colm.net/files/ragel/ragel-6.10.tar.gztar -xzvf ragel-6.10.tar.gzcd ragel-6.10./configuremakesudo make install
Install hyperscan dari source langsung, dengan berada pada direktori yang sama pada Boost Header untuk digunakanlibrariesnya
cd ~/snort_srcwget https://github.com/intel/hyperscan/archive/v5.2.1.tar.gztar -xvzf v5.2.1.tar.gzmkdir ~/snort_src/hyperscan-5.2.1-buildcd hyperscan-5.2.1-build/cmake-DCMAKE_INSTALL_PREFIX=/usr/local -DBOOST_ROOT=~/snort_src/boost_1_72_0/ ../→˓hyperscan-5.2.1makesudo make install
untuk menguji apakah hyperscan sudah dapat bekerja dengan menjalankan perintah berikut pada direktorinya
cd ~/snort_src/hyperscan-5.2.1-build/./bin/unit-hyperscan
Flatbuffer
salah satu kebutuhan dari snort adalah flatbuffer, untuk efisiensi memory serialization library.
1.3. Pengembangan 9
ELK with Dionaea Cowrie, Release 0.0.1
cd ~/snort_srcwget https://github.com/google/flatbuffers/archive/v1.12.0.tar.gz \-O flatbuffers-v1.12.0.tar.gztar -xzvf flatbuffers-v1.12.0.tar.gzmkdir flatbuffers-buildcd flatbuffers-buildcmake ../flatbuffers-1.12.0makesudo make install
Libdaq
lakukan instalasi Data Aquisition Library (DAQ) dari website snort. Kemudian lakukan update library snortnya
cd ~/snort_srcgit clone https://github.com/snort3/libdaq.gitcd libdaq./bootstrap./configuremakesudo make installsudo ldconfig
Snort3
Sekarang sudah dapat untuk mengunduh, kompile dan install Snort 3 dari repository Github.
cd ~/snort_srcgit clone git://github.com/snortadmin/snort3.gitcd snort3./configure_cmake.sh --prefix=/usr/local --enable-tcmalloccd buildmakesudo make install
langkah terakhir dalam tahap instalasi Snort adalah untuk verifikasi bahwa Snort terinstall dan dapat berjalan.
/usr/local/bin/snort -V
maka akan terlihat output sebagai berikut
,,_ -*> Snort++ <*o" )~ Version 3.0.1 (Build 2)'''' By Martin Roesch & The Snort Team
http://snort.org/contact#teamCopyright (C) 2014-2020 Cisco and/or its affiliates. Allrights reserved.Copyright (C) 1998-2013 Sourcefire, Inc., et al.Using DAQ version 3.0.0Using LuaJIT version 2.1.0-beta3Using OpenSSL 1.1.1f 31 Mar 2020Using libpcap version 1.9.1 (with TPACKET_V3)Using PCRE version 8.43 2019-02-23Using ZLIB version 1.2.11Using FlatBuffers 1.12.0
(continues on next page)
10 Chapter 1. Intro
ELK with Dionaea Cowrie, Release 0.0.1
(continued from previous page)
Using Hyperscan version 5.2.1 2020-04-25Using LZMA version 5.2.4
Jika output terlihat seperti pada gambar maka Snort sudah terinstall dan bekerja. Selanjutnya uji Snort dengan filekonfigurasi defaultnya.
snort -c /usr/local/etc/snort/snort.lua
Snort successfully validated the configuration (with 0 warnings).o")~ Snort exiting
Menambahkan Rules
Sebelumnya kita buat direktori untuk menyimpan log snort yang nantinya akan berguna untuk ELK Stack
sudo mkdir /var/log/snort
Pembuatan rules dapat kita lakukan sendiri, dengan membuat sendiri local rules atau menambahkan rules yang adadari internet.
Untuk membuat local rules bisa dilakukan dengan cara sebagai berikut.
sudo mkdir /usr/local/etc/rulessudo touch /usr/local/etc/rules/local.rulessudo vi /usr/local/etc/rules/local.rules
Isikan rules yang kita inginkan dalam hal ini kami memberikan rules untuk pendeteksian protokol ICMP.
alert icmp any any -> any any (msg:"ICMP Traffic Detected";sid:10000002;)
Kemudian jalankan snort untuk memuat rules yang telah dibuat.
snort -c /usr/local/etc/snort/snort.lua \-R /usr/local/etc/rules/local.rules
Untuk menambahkan rules dari internet kita dapat melakukan dengan cara sebagai berikut.
Pertama-tama buat folder built_rules, folder ini berisi referensi dan info untuk rules bawaan
sudo mkdir /usr/local/etc/builtin_rules
Kemudian download rules dari internet. Untuk rules ini kami peroleh dari website resmi Snort dengan nama filesnortrules-3000
cd ~/snort_src/mkdir snortrules-3000tar -xvzf snortrules-snapshot-3000.tar.gz -C ./snortrules-3000cd snortrules-3000sudo cp ./rules/*.rules /usr/local/etc/rules/sudo cp ./builtins/builtins.rules /usr/local/etc/builtin_rules/sudo cp ./etc/* /usr/local/etc/snort/
Ubah konfigurasi dalam file snort.lua
1.3. Pengembangan 11
ELK with Dionaea Cowrie, Release 0.0.1
sudo vi /usr/local/etc/snort/snort.lua
Perubahan yang dilakukan adalah sebagai berikut.
HOME_NET = '103.133.56.233'
ips ={
-- use this to enable decoder and inspector alertsenable_builtin_rules = true,-- use include for rules files; be sure to set your path-- note that rules files can include other rules files--include = 'snort3-community.rules',-- The following include syntax is only valid for ...-- RULE_PATH is typically set in snort_defaults.luarules = [[
include $BUILTIN_RULE_PATH/builtins.rules
include $RULE_PATH/snort3-app-detect.rulesinclude $RULE_PATH/snort3-browser-chrome.rules
...}
Cek file konfigurasi dan pastikan tidak ada error
snort -c /usr/local/etc/snort/snort.lua \-R /usr/local/etc/rules/local.rules
Passing File PCAP ke Snort dan Output Alert JSON
File PCAP yang dapat digunakan untuk menghasilkan peringatan dari rules builtin dan rules tambahan lainnya.
mkdir pcapscd pcapswget https://download.netresec.com/pcap/maccdc-2012/maccdc2012_00000.pcap.gzgunzip maccdc2012_00000.pcap.gzwget https://download.netresec.com/pcap/maccdc-2012/maccdc2012_00001.pcap.gzgunzip maccdc2012_00001.pcap.gz
Edit file konfigurasi snort.lua
sudo vi /usr/local/etc/snort/snort.lua
Aktifkan alert JSON
alert_json ={
file = true,limit = 10,fields = 'seconds action class b64_data dir dst_addr \dst_ap dst_port eth_dst eth_len eth_src eth_type gid icmp_code \icmp_id icmp_seq icmp_type iface ip_id ip_len msg mpls pkt_gen \pkt_len pkt_num priority proto rev rule service sid src_addr \src_ap src_port target tcp_ack tcp_flags tcp_len tcp_seq \tcp_win tos ttl udp_len vlan timestamp',
}
12 Chapter 1. Intro
ELK with Dionaea Cowrie, Release 0.0.1
Pertama-tama kita menggunakan opsi file untuk mengaktifkan alert file berformat json. Selanjutnya kita tentukanopsi limit untuk memberi tahu Snort kapan harus membuat file baru, ketika file alert mencapai 10 MB. Limit ini bisadiubah sesuai keinginan dan kemampuan dari server. Kemudian menentukan opsi bidang, untuk mengidentifikasisecara spesifik dari alert harus diinput dalam file json.
Jika kita menjalankan snort dengan perintah sebagai berikut.
sudo snort -c /usr/local/etc/snort/snort.lua --pcap-filter \*.pcap \--pcap-dir ~/pcaps -l /var/log/snort -s 65535 -k none -m 0x1b
Dilayar terminal tidak akan terjadi apa-apa, karena output alert akan dimasukkan ke dalam file json yang tersimpan didirektori log snort.
Membuat Snort Berjalan Startup
Kami membuat menambahkan skrip systemd untuk menjalankan snort secara otomatis saat server menyala, denganperintah sebagai berikut.
sudo groupadd snortsudo useradd snort -r -s /sbin/nologin -c SNORT_IDS -g snortsudo rm /var/log/snort/*sudo chmod -R 5775 /var/log/snortsudo chown -R snort:snort /var/log/snortsudo vi /lib/systemd/system/snort3.service
[Unit]Description=Snort3 NIDS DaemonAfter=syslog.target network.target
[Service]Type=simpleExecStart=/usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 \-k none -l /var/log/snort -D -u snort -g snort -i eth0 -m 0x1b
[Install]WantedBy=multi-user.target
Aktifkan layanan snort3
sudo systemctl enable snort3sudo service snort3 start
Cek status layanan
service snort3 status
Jika berhasil maka snort bisa selalu aktif dan dapat dijalankan.
1.3. Pengembangan 13
ELK with Dionaea Cowrie, Release 0.0.1
Integrasi Snort ke ELK
Untuk dapat mengintgrasikan file log snort agar dapat dikumpulkan oleh Logstash, kami membuat file konfigurasidengan nama logstash-snort.conf di direktori /etc/logstash/conf.d dengan perintah sebagai berikut.
input {file {
path => "/var/log/snort/alert_json*"start_position => "beginning"sincedb_path => "/dev/null"
}}
filter {json {
source => "message"}mutate {
convert => {"pkt_num" => "integer""pkt_len" => "integer""src_port" => "integer""dst_port" => "integer""priority" => "integer"
}gsub => ["timestamp", "\d{3}$", ""]
(continues on next page)
14 Chapter 1. Intro
ELK with Dionaea Cowrie, Release 0.0.1
(continued from previous page)
}date {
match => [ "timestamp", "yy/MM/dd-HH:mm:ss.SSS" ]}geoip { source => "src_addr" }
}
output {elasticsearch {
hosts => "http://103.133.56.233:9200"index => "kel4-snort3-%{+YYYY.MM.dd}"
}stdout { }
}
Kemudian save dan restart layanan logstash.
1.3.2 Cowrie
Cowrie merupakan tools yang dirancang untuk mencatat serangan brute force dan interaksi shell yang dilakukan olehpenyerang. Dalam mode interaksi sedang (shell) ia mengemulasi sistem UNIX dengan Python, dalam mode interaksitinggi (proxy) berfungsi sebagai SSH dan proxy telnet untuk mengamati perilaku penyerang ke sistem lain.
ELK sendiri dapat diintegrasikan dengan tools ini. Caranya sma dengan mengintegrasikan Snort ke ELK yaitu denganmenuliskan skrip di direktori /etc/logstash/conf.d kami simpan dengan nama logstash-cowrie.conf seperti berikut.
input {# arahkan ke tempat file log cowriefile {
path => ["/home/cowrie/cowrie/var/log/cowrie/cowrie.json*"]codec => jsontype => "cowrie"
}# gunakan ini jika input dari tcp#tcp {# port => 3333# type => "cowrie"#}
}filter {
if [type] == "cowrie" {json {
source => message}date {
match => [ "timestamp", "ISO8601" ]}if [src_ip] {
dns {reverse => [ "src_host", "src_ip" ]action => "append"
}geoip {
source => "src_ip"target => "geoip"
(continues on next page)
1.3. Pengembangan 15
ELK with Dionaea Cowrie, Release 0.0.1
(continued from previous page)
database => "/opt/GeoLite2-City.mmdb"}
}}
}output {
if [type] == "cowrie" {elasticsearch {
hosts => ["103.133.56.233:9200"]index => "kel4-cowrie-%{+YYY.MM.dd}"
}file {
path => "/tmp/cowrie-logstash.log"codec => json
}stdout {
codec => rubydebug}
}}
1.3.3 Set Up X-Pack
X-pack merupakan serangkaian kode yang dikembangakan oleh pihak elastic.co sendiri untuk memaksimalkan peng-gunaan ELK dengan memiliki banyak fitur didalamnya.
ELK yang kami gunakan adalah versi 7.8 maka X-Pack sudah terinstall otomatis untuk versi X-pack yang gratisdengan fitur monitoring, file maps, Grok Debugger, dan Search Profiler.
Sedangkan untuk pengembangan ini kami melakukan fitur keamanan yang didapat dari versi X-pack yang berbayar.
Aktifkan Trial Version
Untuk kegiatan promosi sendiri ELK menyediakan Trial Version 30 Hari. Versi ini akan mengaktifkan beberapafitur yang sebelumnya tidak ada di versi gratisnya, misalnya dalam pengembangan ini adalah fitur keamanan denganusername dan password untuk mengakses dashboard Kibana.
Caranya sendiri dapat dilakukan di dashboard Kibana > Kemudian pilih menu yang ada di pojok kiri layar Kibana >Stack Management > Licence Management > Start Trial.
16 Chapter 1. Intro
ELK with Dionaea Cowrie, Release 0.0.1
Jika sudah maka tampilannya akan seperti ini.
Setting Password
Setelah diaktifkan trial version kita akan mendapatkan lisensi untuk menjalankan beberapa fitur yang ada seperti fitukeamanan username dan password.
Berikut cara membuat men-setting Password secara interactive
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive
Akan muncul diterminal seperti pada gambar berikut.
1.3. Pengembangan 17
ELK with Dionaea Cowrie, Release 0.0.1
Jika berhasil maka saat kita ingin mengakses dashboard Kibana tampilannya akan seperti pada gambar berikut.
Untuk login dapat dilakukan dengan password yang telah kita atur sesuai dengan username default-nya.
1.4 Catatan
Dalam pengerjaan projek ELK Stack ini, kami menemukan beberapa kendala yang mempengaruhi, sehingga dalamhasil dokumentasi kurang detail dan maksimal.
Kendala-kendala tersebut adalah sebagai berikut.
18 Chapter 1. Intro
ELK with Dionaea Cowrie, Release 0.0.1
1.4.1 Meow Attack
Tanggal 25 Juli 2020, kami mencoba mengakses dashboard Kibana tetapi tidak dapat diakses seperti pada gambarberikut
Kami mencoba untuk me-restart layanan yang berhubungan dengan hal tersebut, dashboard bisa diakses kembali,tetapi untuk database dari elasticsearch hilang. Index Pattern yang sebelumnya sudah dibuat tiba-tiba hilang yangmenyebabkan visualisasi dashboard tidak dapat dilakukan, juga pada halaman Discover data-data dari semua log tidakbisa ditampilkan.
Setelah itu kami mencoba untuk mencari tau mengapa hal tersebut terjadi, dengan mengakses elasticsearch di browser.
URL :103.133.56.233:9200/_cat/indices?v
Kemudian memunculkan daftar index yang ada seperti pada gambar berikut.
1.4. Catatan 19
ELK with Dionaea Cowrie, Release 0.0.1
Dari gambar tersebut terdapat keanehan dimana terdapat index yang tidak ada sebelumnya dan mencurigakan. Indextersebut selalu berakhiran “-meow” dalam penamaannya. Ternyata setelah dicari tau penyebabnya. ELK stack kamitelah terkena Meow Attack.
20 Chapter 1. Intro
ELK with Dionaea Cowrie, Release 0.0.1
Serangan ini menyerang database yang tidak terlindungi untuk elasticsearch dan MonggoDB. Hacker menggunakanbot untuk menghapus semua database dan meninggalkan jejak dengan akhiran kata “-meow”. Database dihapus tanpaperingatan, tidak seperti serangan hacker yang meyabotase database dan biasanya meminta uang tebusan, tetapi seran-gan ini hanya sekedar iseng belaka tanpa kita ketahui motivasi dibalik serangan tersebut.
Serangan ini 2 kali menyerang ELK Stack kami, untuk yang kedua setelah diinstall ulang untuk ELK Stack laluditambahkan fitur X-Pack untuk antisipasi. Serangan yang kedua terjadi lagi pada tanggal 29 Juli 2020. Saat sedangmengkonfigurasi keamanan login dari X-Pack dimana kami mematikan sesaat fitur dan sedang melakukan pembuatanvisualisasi untuk dashboard tiba-tiba saja terjadi serangan itu lagi, karena dirasa pengumpulan projek sudah mendekatihari H, kami memutuskan untuk serangan terakhir tersebut tidak dilakukan upaya penanggulangan seperti install ulang.
Mitigasi
Tindakan yang kami ketahui saat ini adalah dengan menambahkan fitur keamanan yang kuat di server VPS supayahacker tidak bisa menyusupi kembali dengan bot yang mereka sebar di internet. Untuk fitur keamanan yang dapatditambahkan di fitur ELK Stack adalah dengan set up username dan password menggunakan X-Pack.
Untuk tindakan mitigasi lainnya yang lebih efektif masih belum bisa kami ketahui, dikarenakan Meow Attack ini yangbaru muncul akhir Juli 2020 dan belum ada yang membahas terutama setelah terjadi serangan atau penanggulanganserangan tersebut.
1.4.2 Saran Pengerjaan Project ELK Stack
Pengerjaan projek agar maksimal dan tidak terjadi kendala dari eksternal maupun internal.
Hal pertama saat sebelum melakukan instalasi adalah pastikan space storage atau RAM server mumpuni untuk men-ginstall tools atau software yang diperlukan, kemudian karena tujuannya adalah menyimpan data log yang sangatbanyak untuk divisualisasikan.
Kemudian setelah selesai melakukan instalasi ELK Stack, tambahkan fitur keamanan X-Pack yang lisensinya tersediasaat mengaktifkan trial version. Hal ini wajib dilakukan karena belum diketahui tindakan penanggulangan yang terjaditerhadap Meow Attack yang menjadi keleamahan database yang tidak ada fitur keamanan terutama pada elasticsearchdan MonggoDB.
22 Chapter 1. Intro