Hampir setiap panduan tentang Suricata berakhir dengan memasang Elasticsearch, Logstash dan Kibana. Untuk satu VPS itu saran yang buruk: tumpukan itu akan meminta empat gigabita memori dan perhatian terus-menerus, padahal yang Anda inginkan hanyalah melihat apa yang ditangkap IDS sehari terakhir. Suricata bekerja baik-baik saja tanpa mereka — tetapi ia punya satu sifat yang membuat orang memasangnya lalu mencopotnya sepekan kemudian.
Ranjau di pengaturan bawaan
Begitu keluar dari kotak, Suricata menulis lebih dari tiga puluh jenis peristiwa ke eve.json: bukan hanya alert, melainkan setiap permintaan DNS, setiap jabat tangan TLS, setiap transaksi HTTP, ARP, DHCP, flow demi flow. Ditambah stats.log terpisah setiap delapan detik. Dan sementara itu Suricata tidak menyiapkan rotasi log — itu pekerjaan administrator, dan tidak ada tempat yang menuliskannya dengan huruf besar.
Angka dari server sungguhan: 15 gigabita dalam dua hari — sembilan di eve.json dan hampir enam di stats.log. Tersisa sekitar lima hari sebelum disk penuh. Server itu pun tidak punya banyak lalu lintas; pada simpul yang sibuk itu akan jadi soal jam.
Periksa milik Anda sekarang juga:
sudo du -sh /var/log/suricata/*
Simpan hanya yang Anda baca
Kalau Anda melihat alert dan bukan melakukan forensik jaringan, dari eve-log Anda hanya memerlukan tepat satu jenis peristiwa. Di /etc/suricata/suricata.yaml carilah blok outputs lalu pada types untuk eve-log sisakan alert dan komentari sisanya. Di tempat yang sama matikan pula keluaran statistik:
- stats:
enabled: no
Setelah menyunting, pemeriksaan konfigurasi adalah wajib — sebelum menyalakan ulang layanan:
sudo suricata -T -c /etc/suricata/suricata.yaml -v
Urutannya penting: pemeriksaan tidak akan lolos kalau aturannya belum dimuat. Pertama suricata-update, lalu pemeriksaan konfigurasi, baru menyalakan.
Rotasi yang benar-benar bekerja
Berkas /etc/logrotate.d/suricata:
/var/log/suricata/*.log /var/log/suricata/*.json {
daily
rotate 7
maxsize 200M
missingok
compress
delaycompress
create 0664 suricata suricata
su suricata suricata
postrotate
systemctl kill -s HUP suricata
endscript
}
Di sini ada dua baris yang tidak kentara dan keduanya krusial.
su suricata suricata — tanpanya logrotate diam-diam melewati setiap berkas. Direktori /var/log/suricata milik grup suricata, bukan root, dan logrotate menganggap susunan seperti itu tidak aman. Tidak akan ada galat di surat maupun di log; Anda hanya akan yakin bahwa rotasi ada sampai disknya habis. Satu-satunya cara menangkapnya lebih awal adalah menjalankan uji kering:
sudo logrotate -d /etc/logrotate.d/suricata
create 0664 suricata suricata — hak untuk berkas baru. Dengan nilai bawaan (0640), panel atau skrip apa pun yang membaca log sebagai pengguna non-root tidak akan melihat apa-apa setelah rotasi pertama.
Selain log, apa lagi yang perlu disetel
HOME_NET. Ini menjabarkan apa yang dianggap Suricata sebagai miliknya. Nilai bawaannya mendaftar semua rentang privat, sementara VPS punya alamat publik — sehingga sebagian aturan tidak menyala, atau menyala terbalik. Sebutkan jaringan Anda secara eksplisit.
Aturan. Himpunan Emerging Threats Open ditarik oleh suricata-update, yang tempatnya di cron sekali sehari. Tanda tangan berisik satu per satu dimatikan berdasarkan pengenal di /etc/suricata/disable.conf — jangan takut memakainya: himpunan itu dibuat untuk jaringan korporat, dan pada server web biasa akan ada selusin aturan yang menyala terus-menerus tanpa alasan.
Mode. Secara bawaan Suricata mendengarkan salinan lalu lintas dan hanya memperingatkan (IDS). Mode pemblokiran (IPS, lewat nfqueue) pada satu server terutama berisiko bagi diri sendiri: satu hasil positif palsu dan Anda mengunci diri di luar. Mulailah dengan mengamati dan luangkan sebulan untuk melihat apa yang tertangkap.
Cara membacanya tanpa Kibana
Alert singkat ada di /var/log/suricata/fast.log — satu baris per peristiwa, bisa dibaca dengan mata:
sudo tail -50 /var/log/suricata/fast.log
Rinciannya ada di eve.json, satu objek JSON per baris. Semua yang biasanya membuat orang memasang Kibana bermuara pada satu perintah:
sudo jq -r 'select(.event_type=="alert") | .alert.signature' \
/var/log/suricata/eve.json | sort | uniq -c | sort -rn | head -20
Itu dua puluh tanda tangan yang paling sering muncul. Dalam sepekan daftar semacam itu menjawab dengan jujur apa yang terjadi pada server, dan sekaligus menunjukkan aturan mana yang sudah waktunya dimatikan.
Sudah ada Fail2ban, buat apa ini
Keduanya berbeda sifat. Fail2ban membaca log aplikasi dan bereaksi terhadap login yang gagal — yakni terhadap apa yang sudah sampai ke sebuah layanan. Suricata melihat lalu lintasnya sendiri dan melihat apa yang tidak akan pernah ada di log mana pun: pemindaian port, upaya eksploitasi yang cocok dengan tanda tangan yang dikenal, koneksi ke server kendali dari dalam mesin Anda. Yang terakhir sangat berharga: koneksi keluar ke server kendali milik orang lain adalah tanda paling dini bahwa di server sudah ada sesuatu yang berjalan yang tidak Anda jalankan.
Menyimpan keduanya tidak masalah, mereka tidak berbenturan. Satu-satunya pertanyaan adalah apakah ada yang membaca keluarannya lebih sering daripada sekali per triwulan. Bagaimana alert yang sama tampak pada satu halaman, terpisah menurut kategori dan sumber — lihat di demo bawah.