Halo sobat sekolahlinux, pada part3 kali ini saya akan membuat tutorial tentang bagaimana cara membuat plugin baru pada ossim, jadi jika kalian ingin menambahkan log dari aplikasi tertentu yang belum ada di ossim kalian bisa menggunakan tutorial ini, nanti bisa kalian sesuaikan.
berikut ini log ssh failed yang akan kita olah dengan plugin yang kita buat, lalu ditampilkan pada ossim
May 16 22:04:06 websrv sshd[2030]: Failed password for root from 192.168.100.1 port 1971 ssh2 May 16 22:08:54 websrv sshd[2034]: Accepted password for root from 192.168.100.1 port 2015 ssh2
lalu kita akan memparsing log tersebut, silahkan kalian parsing di http://pythex.org/ atau di https://regex101.com/ namun biasa saya lebih sering parsing di http://pythex.org/ dan berikut ini regex parsing nya untuk log diatas.
(?P<date>S+sd+sd+.d+.d+)s(?P<dstip>[^,]*)s(?P<service>S+)[d+].s(?P<status>S+)sS+sS+s(?P<user>w+)sS+s(?P<srcip>d+.d+.d+.d+)
masuk ke konsol ossim alienvault, lalu jailbreak, dalam menetukan plugin_id sebaiknya jangan sembarangan karena nanti malah bentrok jadi lebih baik kita lakukan cek dahulu ke database ossimnya bahwa plugin_id yang kita inginkan belum digunakan plugin lainnya, yaitu dengan cara mengetikkan perintah dibawah ini
ossim-db
lalu ketikkan perintah mysql ini (*ganti angka 90001 dengan angka yang kalian kehendaki)
select * from plugin_sid where plugin_id="90001";
jika hasilnya seperti dibawah berarti id tersebut bisa digunakan
mysql> select * from plugin_sid where plugin_id="90004"; Empty set (0.00 sec)
sekarang buat file sekolahlinux.cfg pada direktori /etc/ossim/agent/plugins/
cd /etc/ossim/agent/plugins touch sekolahlinux.cfg
lalu isikan file sekolahlinux.cfg dengan rule dibawah ini
# Alienvault plugin # Description: # http://sekolahlinux.com # [DEFAULT] plugin_id=90001 [config] type=detector enable=yes source=log location=/var/log/sekolah.log create_file=false #process=rsyslogd process= start=no stop=no startup= shutdown= [translation] Failed=1 Accepted=2 [01 - sekolahlinux - Login Failed] regexp="(?P<date>S+sd+sd+.d+.d+)s(?P<dstip>[^,]*)s(?P<service>S+)[d+].s(?P<status>S+)sS+sS+s(?P<user>w+)sS+s(?P<srcip>d+.d+.d+.d+)" event_type="event" plugin_sid={translate($status)} date={normalize_date($date)} dst_ip={resolv($dstip)} src_ip={resolv($srcip)} username={$user} userdata1={$service} userdata2={$status} [02 - sekolahlinux - Login Success] regexp="(?P<date>S+sd+sd+.d+.d+)s(?P<dstip>[^,]*)s(?P<service>S+)[d+].s(?P<status>S+)sS+sS+s(?P<user>w+)sS+s(?P<srcip>d+.d+.d+.d+)" event_type="event" plugin_sid={translate($status)} date={normalize_date($date)} dst_ip={resolv($dstip)} src_ip={resolv($srcip)} username={$user} userdata1={$service} userdata2={$status}
penjelasan script diatas:
- regexp = regex untuk parsing log
- translation = untuk mendklarasikan (status) menjadi angka yang mana angkanya nanti untuk dijadikan plugin_sid
- location = untuk menentukan tempat dimana file log yang masuk yang akan kita parsing dan kita jadikan event
untuk value yang lainnya dari rule diatas kalian silahkan googling ya, karena jujur saya sendiri belum tau semuanya.
lalu buat file sekolahlinux.sql pada direktori yang sama untuk memudahkan kita.
touch sekolahlinux.sql
jika sudah tambahkan rule dibawah ini
-- sekolahlinux_login -- plugin_id: 90001 DELETE FROM plugin WHERE id = "90001"; DELETE FROM plugin_sid where plugin_id = "90001"; INSERT IGNORE INTO plugin (id, type, name, description) VALUES (90001, 1, 'sekolahlinux_login', 'Linux Login authentication'); INSERT IGNORE INTO plugin_sid (plugin_id, sid, category_id, class_id, name) VALUES (90001, 1, NULL, NULL, 'Linux Login: Failed'); INSERT IGNORE INTO plugin_sid (plugin_id, sid, category_id, class_id, name) VALUES (90001, 2, NULL, NULL, 'Linux Login: Success');
penjelasan script diatas:
- sekolahlinux_login = nama datasource / plugin yang akan tampil di web
- 90001 = adalah plugin_id, harus sama dengan di sekolahlinux.cfg
- type = 1 = adalah type untuk plugin ini nanti kalian bisa lihat di dalam web gui
- sid = 1 = adalah id untuk untuk rule linux login failed (harus sama dengan di plugin_sid sekolahlinux.cfg)
- sid = 2 = adalah id untuk untuk rule linux login success (harus sama dengan di plugin_sid sekolahlinux.cfg)
jika sudah sekarang saatnya import data sekolahlinux.sql kedalam database ossim
cat /etc/ossim/agent/plugins/sekolahlinux.sql | ossim-db
selanjutnya restart ossim-server dan ossim-agent
/etc/init.d/ossim-server restart && /etc/init.d/ossim-agent restart
lalu kita aktifkan plugin pada text gui alienvault ossim
alienvault-setup
lalu ikuti urutan dibawah ini untuk mengaktifkan plugin yang kita buat
- configure data sensor
- configure data source plugins
- (*)sekolahlinux >> klik OK
- klik BACK
- apply all changes >> klik OK
sekarang kita login ke web gui untuk melihat apakah plugin buatan kita berhasil atau tidak
https://192.168.100.100
lalu setelah login ikutin tahapan seperti gambar dibawah ini, jika kurang besar silahkan klik gambar dibawah.
- pilih ANALYSIS
- pilih SECURITY EVENT (SIEM)
- pilih DATA SOURCE (sekolahlinux_login)
- hasil dari log yang diparsing oleh plugin yang baru saja kita buat
jika no.3 & no.4 tidak muncul coba lakukan action pada server client kalian agar tercipta lognya, karena data source dan event akan tampil jika ada log yang berhasil terparsing. jika belum juga coba restart server ossim kalian (*harusnya tidak perlu restart).
nah sampai sini berarti kalian sudah berhasil membuat plugin ossim sendiri untuk perangkat server kalian, selanjutnya silahkan dikembangkan ya, selamat mencoba 😀 semoga bermanfaat