Kategori
IT Jaringan Mikrotik Monitoring Security

Pembuatan Custom Decoder & Rules pada Wazuh untuk Router Mikrotik

Beberapa hari ini saya baru mulai mempelajari wazuh, wazuh sendiri adalah sebuah sistem SIEM (Security Information & Event Management) berbasis open source yang mempunyai fitur-fitur cukup lengkap sehingga sangat powerful untuk digunakan. Dalam tulisan saya kali ini saya akan lebih fokus untuk membahas bagaimana membuat custom decoder & rules beserta konfigurasi agar log dari router mikrotik saya bisa terbaca di wazuh dashboard dimana hal itu juga baru selesai saya pelajari, jadi apabila anda ingin mengkoreksi kesalahan saya dengan sangat senang hati akan saya terima :).

Mengenai instalasi awal, saya mengikuti langkah-langkah instalasi dari dokumentasi wazuh yang beralamat di https://documentation.wazuh.com/current/installation-guide/index.html dan untuk instalasi wazuh agent saya mengikuti petunjuk instalasi yang disediakan di dashboard wazuh.

Kemudian karena saya ingin memonitor perangkat mikrotik saya agar lognya bisa terbaca di wazuh dashboard, maka perlu dilakukan beberapa konfigurasi yaitu menggunakan remote syslog dan juga membuat custom decoder dan rule untuk membaca log mikrotik tersebut.

Pertama kali yang saya lakukan adalah mengaktifkan rsyslog server yang berada di server yang sama dengan wazuh server (dalam kasus ini saya menginstal wazuh indexer, wazuh server dan wazuh dashboard di satu server juga) yaitu di ip 192.168.1.245. Saya mengatur agar rsyslog listening di protokol udp dan di port 514 (pastikan iptables atau ufw di setting untuk mengizinkan port ini), kemudian mengatur agar menulis file log dengan nama /var/log/remotedevice.log apabila ada device yang terkoneksi dengan alamat ip yang berawalan “192.168.1.” dan juga mengatur format log yang tersimpan agar memiliki format “YYYY MMM DD hh:mm:ss DP(ini inisial nama saya :p) HOSTNAME firewall,info isi_log” dimana format dari log ini akan sangat berkaitan dengan decoder yang akan dibuat nanti. Pengaturan rsyslog bisa dilihat di file /etc/rsyslog.conf.

module(load="imudp")

input(type="imudp" port="514")

$template Wazuh,"%$year% %timegenerated:1:3:date-rfc3164% %$day% %timegenerated:12:19:date-rfc3339% DP %HOSTNAME% firewall,info%msg%\n"

:fromhost-ip,startswith,"192.168.1." /var/log/remotedevice.log;Wazuh

Setelah konfigurasi selesai, restart rsyslog dengan perintah berikut :

$ sudo systemctl restart rsyslog

Proses selanjutnya saya mengkonfigurasi router mikrotik agar mengirimkan log firewall ke server rsyslog (192.168.1.245).

Gambar 1. Dari winbox, masuk ke menu system -> logging, pilih tab action kemudian klik tanda “+”, buat settingan seperti di gambar kemudian klik OK.
Gambar 2. Masih di logging, klik tab rules, kemudian klik tanda “+”, buat settingan seperti di gambar kemudian klik OK.

Kemudian pindah ke rule firewall pada router anda, pada contoh berikut saya menggunakan rule Port-Scanner yang saya buat sebelumnya. Pada rule tersebut saya mengaktifkan tanda centang pada pilihan “Log” dan juga mengisi Log Prefix untuk membedakan dengan rule firewall lainnya di custom rule nanti, kemudian klik OK. Lakukan lagi dengan rule firewall lainnya yang ingin anda kirim lognya dan dengan menggunakan Log Prefix yang sesuai dengan rule tersebut.

Gambar 3. Beri centang pada pilhan log dan isi Log Prefix untuk membedakan log

Setelah itu cek terlebih dahulu apakah log sudah diterima oleh server rsyslog. Simulasikan serangan ke router mikrotik tersebut untuk generate log, dalam contoh ini saya menggunakan scanning port dengan nmap. Kemudian cek di server (192.168.1.245) apakah ada log yang masuk dengan perintah berikut.

$ tail -f /var/log/remotedevice.log | grep DP

Jika log sudah masuk maka nanti akan muncul file log yang mengikuti format yang telah kita buat sebelumnya tadi contohnya seperti berikut :

2023 Jan 14 13:42:01 DP 192.168.1.1 firewall,info Port-Scanner input: in:ether1-fo out:(unknown 0), connection-state:new src-mac 08:55:31:ef:91:38, proto TCP (SYN), 192.168.1.2:55043->192.168.1.1:54321, len 44

Jika log dari router mikrotik sudah bisa diterima dengan baik, selanjutnya adalah membuat custom decoder. Login ke server wazuh (192.168.1.245) kemudian masuk sebagai user root. Untuk lokasi custom decoder berada di folder /var/ossec/ruleset/decoders. Buat file decoder baru di folder tersebut dengan nama tertentu misalnya 0580-mikrotik_decoders.xml :

# nano /var/ossec/ruleset/decoders/0580-mikrotik_decoders.xml

Berikut adalah isi dari file decoder 0580-mikrotik_decoders.xml yang saya buat :

<!-- Mikrotik Decoders -->

<!-- Modify it at your will. -->
<!-- Copyright (C) 2023, Deny Pradana. -->

<!--
 Log Format : 
 2023 Jan 14 13:42:01 DP 192.168.1.1 firewall,info Port-Scanner input: in:ether1-fo out:(unknown 0), connection-state:new src-mac 08:55:31:ef:91:38, proto TCP (SYN), 192.168.1.2:55043->192.168.1.1:54321, len 44

-->

<decoder name="mikrotik">
  <prematch>\.+ firewall,info</prematch>
</decoder>

<decoder name="mikrotik_router">
  <parent>mikrotik</parent>
  <regex offset="after_parent">^\s(\.+) input: in:(\.+) out:(\.+), connection-state:(\.+) src-mac (\w+:\w+:\w+:\w+:\w+:\w+), proto (\.+), (\d+.\d+.\d+.\d+):(\d+)->(\d+.\d+.\d+.\d+):(\d+),</regex>
  <order>atttype,inif,outif,connstate,sourcemac,proto,sourceip,sourceport,destip,destport</order>
</decoder>

Aturan pembuatan decoder bisa dilihat lebih lengkap di dokumentasi wazuh berikut : https://documentation.wazuh.com/current/user-manual/ruleset/ruleset-xml-syntax/decoders.html.

Setelah menyimpan file decoder tersebut, atur file permission dan grup nya agar bisa diakses oleh wazuh-manager :

# chmod 640 /var/ossec/ruleset/decoders/0580-mikrotik_decoders.xml

# chown root:wazuh /var/ossec/ruleset/decoders/0580-mikrotik_decoders.xml

Setelah selesai membuat custom decoder, restart wazuh-manager dengan perintah berikut :

# systemctl restart wazuh-manager

Selanjutnya adalah membuat custom rule, tetapi sebelum itu ada baiknya mengecek decoder tersebut apakah bekerja dengan baik dengan menggunakan wazuh-logtest. Jalankan wazuh-logtest dengan perintah berikut

# /var/ossec/bin/wazuh-logtest

Kemudian copy & paste contoh log diatas dan enter. Apabila decoder berfungsi dengan baik maka hasilnya kurang lebih akan terlihat sebagai berikut :

Gambar 4. Decoder bekerja dengan baik.

Selanjutnya kita buat custom rules baru, untuk lokasi rule berada di folder /var/ossec/ruleset/rules. Buat file rule baru di folder tersebut dengan nama tertentu misalnya 0940-mikrotik_rules.xml :

# nano /var/ossec/ruleset/rules/0940-mikrotik_rules.xml

Berikut adalah isi dari file rule 0940-mikrotik_rules.xml yang saya buat :

<!-- Mikrotik rules -->

<!-- Modify it at your will. -->
<!-- Copyright (C) 2023, Deny Pradana. -->

<group name="access_denied,syslog,">
 <rule id="100000" level="0">
   <decoded_as>mikrotik</decoded_as>
   <description>Mikrotik Router message</description>
 </rule>

 <rule id="100001" level="3">
   <if_sid>100000</if_sid>
   <decoded_as>mikrotik</decoded_as>
   <field name="atttype">Unauthenticated-Login</field>
   <description>Mikrotik : Credential Theft has been blocked</description>
   <group>firewall_drop</group>
 </rule>

 <rule id="100002" level="3">
   <if_sid>100000</if_sid>
   <decoded_as>mikrotik</decoded_as>
   <field name="atttype">SSHTELNET-Brute</field>
   <description>Mikrotik : SSH and Telnet Brute Force Attack has been blocked</description>
   <group>firewall_drop</group>
 </rule>

 <rule id="100003" level="3">
   <if_sid>100000</if_sid>
   <decoded_as>mikrotik</decoded_as>
   <field name="atttype">FTP-Brute</field>
   <description>Mikrotik : FTP Brute Force Attack has been blocked</description>
   <group>firewall_drop</group>
 </rule>

 <rule id="100004" level="3">
   <if_sid>100000</if_sid>
   <decoded_as>mikrotik</decoded_as>
   <field name="atttype">Port-Scanner</field>
   <description>Mikrotik : Port Scanner has been blocked</description>
   <group>firewall_drop</group>
 </rule>
</group>

Custom rule tersebut sudah saya sesuaikan dengan log firewall apa saja yang dikirim dari mikrotik. Sesuaikan dengan kebutuhan anda. Untuk aturan pembuatan rules bisa dilihat lebih lengkap di dokumentasi wazuh berikut : https://documentation.wazuh.com/current/user-manual/ruleset/ruleset-xml-syntax/rules.html.

Tutorial lain yang juga bisa dipakai untuk pembuatan custom decoder dan rules : https://socfortress.medium.com/understanding-wazuh-decoders-4093e8fc242c.

Setelah menyimpan file rule tersebut, atur file permission dan grup nya agar bisa diakses oleh wazuh-manager :

# chmod 640 /var/ossec/ruleset/rules/0940-mikrotik_rules.xml

# chown root:wazuh /var/ossec/ruleset/rules/0940-mikrotik_rules.xml

Kemudian setelah custom rule selesai dibuat, restart wazuh-manager agar bisa membaca file custom rule kita :

# systemctl restart wazuh-manager

Kemudian lakukan pengecekan dengan wazuh-logtest untuk mengetahui apakah custom decoder dan custom rule tersebut bekerja dengan baik. Jalankan wazuh-logtest dengan perintah berikut :

# /var/ossec/bin/wazuh-logtest

Kemudian copy & paste contoh log diatas dan enter. Apabila decoder dan rule berfungsi dengan baik maka hasilnya kurang lebih akan terlihat sebagai berikut :

Gambar 5. Decoder dan rule bekerja dengan baik.

Langkah terakhir, buka file konfigurasi wazuh-manager dengan perintah berikut :

# nano /var/ossec/etc/ossec.conf

Setelah itu tambahkan konfigurasi berikut pada bagian bawah file ossec.conf diatas tag </ossec_config> agar wazuh manager bisa membaca file log yang sudah kita set sebelumnya di /etc/rsyslog.conf tadi :

<localfile>
    <log_format>syslog</log_format>
    <location>/var/log/remotedevice.log</location>    
</localfile>

Simpan file ossec.conf tersebut dan restart wazuh-manager :

# systemctl restart wazuh-manager

Setelah itu coba trigger rule firewall di mikrotik dengan melakukan serangan, kemudian buka dashboard wazuh menggunakan web browser untuk melihat apakah event tersebut terdeteksi :

Gambar 6. Event firewall berhasil muncul di dashboard wazuh.

Selamat mencoba dan bereksperimen !

6 tanggapan untuk “Pembuatan Custom Decoder & Rules pada Wazuh untuk Router Mikrotik”

Mas saya udh coba ikutin buat kirim dari Mikrotik, tp log nya kenapa ga diterima sama rsyslognya ya?

Konfig di Rsyslog, IP Server Wazuh 10.101.32.7———–

$ModLoad imudp
$UDPServerRun 514

# Untuk Integrasi dengan Mikrotik
$template Wazuh,”%$year% %timegenerated:1:3:date-rfc3164% %$day% %timegenerated:12:19:date-rfc3339% DP %HOSTNAME% firewall,info%msg%\n”
:fromhost-ip,startswith,”10.10.4.” /var/log/NIX.log;Wazuh

konfigurasi di mikrotik——————–
name=”wazuh” target=remote remote=10.101.32.7 remote-port=514 src-address=0.0.0.0
bsd-syslog=no syslog-time-format=bsd-syslog syslog-facility=daemon
syslog-severity=auto

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *