Satu perintah, ratusan tes, dan satu angka di akhir. Itulah gambaran singkat Lynis, alat audit keamanan yang sudah jalan sejak 2007 dan masih dirawat CISOfy sampai hari ini. Bedanya dengan fail2ban atau CrowdSec: Lynis tidak memblokir siapa pun. Dia memeriksa konfigurasi server kita dari dalam, lalu memberi daftar kerja yang jelas — dan itu justru yang sering kita butuhkan sebelum menyentuh firewall atau sysctl.
Jadi kalau VPS kita sudah pakai SSH key, firewall aktif, dan update rutin, terus apa gunanya? Gunanya untuk tahu hal yang tidak kita sadari belum diatur. Audit keamanan VPS yang rapi bukan soal mengejar skor, tapi soal menemukan satu-dua celah kecil yang selama ini lolos dari ingatan.
Oke, lanjuutt.. kita pasang Lynis, jalankan pemindaian pertamanya, dan belajar membaca hasilnya tanpa panik.
Apa Itu Lynis dan Kenapa VPS Perlu Diaudit
Lynis adalah alat audit keamanan sumber terbuka (GPLv3) untuk sistem UNIX-like: Linux, BSD, macOS. Bentuknya kumpulan skrip shell, tanpa agen, tanpa daemon, tanpa database. Dia membaca kondisi sistem apa adanya — file permission, konfigurasi layanan, parameter kernel, paket yang belum dipatch — lalu menyimpulkan mana yang berpotensi melemahkan pertahanan.
Menariknya, Lynis juga bisa dipakai di luar audit sistem penuh:
lynis audit system— audit sistem yang sedang berjalan, ini yang paling sering dipakai.lynis audit dockerfile <file>— memeriksa Dockerfile sebelum image-nya dibangun.lynis audit system remote <host>— menyiapkan pemindaian jarak jauh.
Bagi kita yang mengelola VPS sendiri, nilai terbesarnya ada di dua hal: struktur temuan yang bisa dilacak (setiap temuan punya ID tetap, misalnya SSH-7408 atau KRNL-6000) dan laporan yang bisa dibandingkan dari bulan ke bulan.
Pasang Lynis di VPS dalam Tiga Langkah
1. Pasang dari paket, atau dari Git kalau mau versi terbaru
Distro biasanya menyediakan paket lynis, tapi versinya sering tertinggal. CISOfy menyarankan menambahkan repositori mereka dulu supaya paket yang terpasang benar-benar versi terbaru:
sudo apt update
sudo apt install lynis
# RHEL, Rocky, AlmaLinux, Fedora
sudo dnf install lynis
Kalau lebih suka jalur Git (selalu dapat kode terbaru):
cd /usr/local
sudo git clone https://github.com/CISOfy/lynis
cd lynis
sudo ./lynis --version
Per 2026, versi stabil terakhir yang tercatat di changelog resmi adalah Lynis 3.1.7 (25 Juni 2026), sementara cabang master sudah menyiapkan 3.1.8 yang masih berstatus pre-release. Cek versi kita dulu supaya tidak bingung saat membaca ID tes yang muncul.
2. Jalankan pemindaian pertama sebagai root
sudo lynis audit system --quick
Opsi --quick (-Q) membuat Lynis tidak berhenti menunggu tombol Enter di antara bagian. Tanpa sudo Lynis tetap jalan, tapi banyak tes yang butuh akses ke file sistem akan dilewati — hasilnya lebih rendah bukan karena server kita buruk, melainkan karena tesnya tidak bisa melihat apa-apa.
Pemindaian biasanya selesai dalam satu sampai tiga menit. Jangan diinterupsi di tengah jalan.
3. Cek bagian akhir output-nya
Di layar akan muncul ringkasan berisi hardening index, jumlah tes yang dijalankan, lalu daftar warning dan suggestion. Dua berkas juga ikut ditulis:
/var/log/lynis.log— log detail: alasan sebuah tes gagal atau dilewati, plus saran perbaikannya. Berkas ini dibersihkan setiap kali scan baru, jadi kalau perlu bukti, salin dulu./var/log/lynis-report.dat— data temuan dalam formatkunci=nilai, inilah yang enak dipakai untuk membandingkan hasil antar audit.
Membaca Hasil: Skor, Warning, dan Suggestion
Hardening index adalah angka 0–100 yang merangkum seberapa banyak tes yang lolos. Angka ini berguna sebagai tren, bukan sebagai nilai rapor. VPS baru yang baru dipasang dan belum dihardening hampir selalu dapat skor rendah, dan itu normal. Yang penting: skor yang sama dua bulan berturut-turut berarti tidak ada yang kita perbaiki.
Urutan membaca yang saya pakai:
- Warning dulu. Ini temuan yang dianggap benar-benar bermasalah, bukan sekadar bisa lebih baik. Jumlahnya biasanya sedikit, dan sering kali satu warning menjelaskan beberapa suggestion di bawahnya.
- Suggestion kedua. Di sini isinya campuran: sebagian memang layak dikerjakan, sebagian tidak relevan dengan peran server kita.
- Abstrak (
OK) terakhir. Tidak perlu dibaca semua — itu cuma konfirmasi bahwa tes tertentu lolos.
Setiap baris temuan membawa ID dengan prefiks yang menunjukkan areanya: SSH- untuk OpenSSH, KRNL- untuk kernel dan sysctl, AUTH- untuk autentikasi dan akun, ACCT- untuk accounting dan auditd, FIRE- untuk firewall. ID inilah yang kita catat di tiket kerja, bukan kalimat panjangnya.
Lima Temuan yang Paling Sering Muncul di VPS
1. Konfigurasi SSH yang terlalu longgar (SSH-7408)
Ini kontrol paling berat di hampir semua VPS: satu ID memeriksa belasan parameter sekaligus — login root, autentikasi password, MaxAuthTries, X11 forwarding, sampai LogLevel.
Kalau temuan ini muncul, jangan tempel seluruh sshd_config baru. Cukup tambahkan file terpisah supaya tidak hilang saat paket di-update:
sudo tee /etc/ssh/sshd_config.d/10-hardening.conf <<'EOF'
PermitRootLogin no
PasswordAuthentication no
MaxAuthTries 3
X11Forwarding no
LogLevel VERBOSE
EOF
sudo sshd -t && sudo systemctl reload ssh
sshd -t wajib dijalankan lebih dulu: kalau ada salah ketik, konfigurasi ditolak dan sesi SSH kita tidak putus. Langkah lengkap soal kunci SSH dan brute force sudah pernah kita bahas di artikel pengamanan SSH VPS, jadi di sini cukup pastikan temuan Lynis-nya tertutup.
2. Parameter kernel masih bawaan (KRNL-6000)
Lynis punya daftar nilai sysctl yang dianggap aman, dan akan menyebut satu per satu parameter yang masih berbeda. Yang paling sering: redirect ICMP diterima, kptr_restrict masih 0, dan tcp_syncookies mati. Perbaikannya cukup satu file:
sudo tee /etc/sysctl.d/99-hardening.conf <<'EOF'
kernel.dmesg_restrict = 1
kernel.kptr_restrict = 2
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
EOF
sudo sysctl --system
Jangan langsung mengiyakan semua saran KRNL-. Kalau VPS kita juga berperan sebagai router atau menjalankan WireGuard, beberapa nilai justru perlu dibiarkan. Ini contoh temuan yang benar-benar bergantung pada peran mesin.
3. Firewall belum aktif atau aturannya masih kosong
Ini klasik: ufw terpasang tapi inactive, atau nftables jalan tanpa policy default yang jelas. Cek dulu keadaan sebenarnya, jangan percaya ingatan:
sudo ufw status verbose
sudo nft list ruleset | head -40
Yang dicari Lynis sederhana: ada firewall yang aktif, ada aturan default yang menolak, dan tidak ada port manajemen yang terbuka ke seluruh internet.
4. Ada paket yang belum di-update
Lynis juga memeriksa repositori keamanan dan paket yang tertinggal. Kalau daftar apt list --upgradable panjang, selesaikan dulu itu sebelum mengejar temuan lain — patch yang belum dipasang jauh lebih berisiko daripada sysctl yang belum dioptimalkan.
5. Accounting dan auditd belum jalan (ACCT-9622, ACCT-9628)
Dua tes ini memeriksa apakah sistem mencatat aktivitas penting. Di VPS kecil, auditd sering dianggap berat. Pendapat saya: kalau servernya menyimpan data pengguna, aktifkan; kalau cuma lab pribadi, cukup catat sebagai risiko yang diterima — jangan pura-pura tidak ada.
Urutan Kerja yang Aman
- Snapshot atau backup dulu. Ubah sysctl dan SSH tanpa jalan pulang adalah cara cepat membuat VPS tidak bisa diakses.
- Buka dua sesi SSH. Satu untuk mengubah konfigurasi, satu lagi dibiarkan login sebagai cadangan.
- Perbaiki warning, bukan suggestion, di putaran pertama. Satu perubahan, satu pengujian.
- Jalankan ulang
sudo lynis audit system --quickdan bandingkan skornya. Kenaikan kecil tetap bukti. - Catat ID yang sengaja tidak dikerjakan beserta alasannya.
Kalau Ada Temuan yang Memang Tidak Relevan
Jangan matikan tes dengan mengedit default.prf. Buat profil sendiri:
sudo touch /etc/lynis/custom.prf
sudo tee -a /etc/lynis/custom.prf <<'EOF'
# VPS ini single-disk, partisi terpisah tidak mungkin
skip-test=FILE-6310
EOF
Beri komentar alasannya. Enam bulan lagi kita akan lupa kenapa tes itu dilewati, dan komentar itu yang menyelamatkan. Cek juga profil mana yang benar-benar aktif dengan sudo lynis show profiles.
Jadikan Audit Sebagai Kebiasaan, Bukan Panik Tahunan
Lynis sudah menyediakan mode untuk dijalankan otomatis. Opsi --cronjob membuang karakter khusus dan tidak pernah menunggu input, sedangkan --quiet hanya menampilkan warning:
echo '0 4 * * 1 root /usr/sbin/lynis audit system --cronjob --quiet > /var/log/lynis/$(date +\%Y\%m\%d).log 2>&1' \
| sudo tee /etc/cron.d/lynis-weekly
Perhatikan \% — di crontab, tanda persen harus di-escape, kalau tidak perintahnya terpotong. Simpan juga /var/log/lynis-report.dat ke nama bertanggal supaya trennya bisa dibandingkan.
Kalau kita ingin memeriksa satu area saja tanpa scan penuh:
sudo lynis show groups
sudo lynis audit system --tests-from-group authentication
sudo lynis audit system --tests SSH-7408
Kesimpulan
Lynis bukan pengganti firewall, bukan pengganti CrowdSec, dan jelas bukan jaminan server jadi kebal. Dia adalah peta: memberi tahu bagian mana dari konfigurasi kita yang masih longgar, dengan ID yang bisa kita lacak dan skor yang bisa kita bandingkan.
Saran praktisnya: jalankan sekali sekarang, abaikan skornya, baca warning-nya, lalu bereskan satu per satu. Setelah tiga atau empat putaran, biasanya yang tersisa hanya temuan yang memang tidak masuk akal untuk VPS kita — dan itu tanda auditnya sudah selesai, bukan tanda kita kurang berusaha.
Selamat mengaudit. Semoga temuan pertamanya tidak sebanyak dugaan kita sendiri, hehehe.

