Lynis adalah tool audit hardening Linux open-source dari CISOfy yang memindai konfigurasi server secara otomatis, menghitung Hardening Index 0–100, dan memetakan temuan ke kontrol CIS Benchmark, PCI-DSS, HIPAA, serta ISO 27001. Saya menjalankannya pada setiap engagement pentest karena 300+ pemeriksaannya menemukan misconfiguration yang lolos dari OpenSCAP. Contohnya: kernel sysctl yang lupa di-tune, SSH cipher lemah, paket dengan SUID yang tidak perlu. Panduan ini menunjukkan cara memasang Lynis 3.1.4 (rilis Maret 2026), menjalankan audit, dan menaikkan Hardening Index dari sekitar 60 ke 85+ pada Ubuntu 24.04 atau Rocky Linux 9.
Lynis 3.1.4 menjalankan 300+ pemeriksaan hardening tanpa agen. Cukup butuh shell akses dan privilese root selama eksekusi.
Hardening Index dihitung dari rasio test yang lulus terhadap total test relevan. Target realistis untuk server produksi ada di kisaran 80–90.
Profil custom (custom.prf) menyembunyikan kontrol yang tidak relevan untuk role server tertentu, sehingga skor tidak terdistorsi.
Mode --pentest dijalankan tanpa root untuk simulasi attacker yang sudah dapat user shell. Sangat penting bagi tim red team.
Integrasi dengan cron plus Lynis Enterprise (atau Wazuh) mengubah audit one-shot menjadi continuous compliance monitoring.
Lynis melengkapi, bukan menggantikan, OpenSCAP. Lynis menang di temuan praktis, OpenSCAP menang di laporan SCAP-format untuk auditor.
Apa itu Lynis dan kapan menggunakannya?
Lynis adalah security auditing tool berbasis shell script yang dikembangkan oleh CISOfy sejak 2007. Berbeda dengan vulnerability scanner seperti OpenVAS yang fokus mencari CVE pada paket, Lynis menilai cara sistem dikonfigurasi. Ia membaca /etc/ssh/sshd_config, /etc/sysctl.conf, kebijakan PAM, status SELinux, mount option, password aging, dan ratusan parameter lain, lalu memberi rekomendasi sesuai best practice.
Sebagai pentester, saya melihat tool ini paling berguna di tiga skenario. Pertama, baseline audit server baru sebelum masuk produksi. Hardening Index awal biasanya 55–65 untuk image cloud standar dan harus dinaikkan. Kedua, compliance reporting ketika klien meminta bukti kepatuhan CIS Benchmark Level 1 atau PCI-DSS. Ketiga, incident response setelah breach, untuk menemukan misconfiguration mana yang mungkin dimanfaatkan attacker.
Honestly, Lynis open-source (GPL v3) dan gratis sepenuhnya. Versi Lynis Enterprise berbayar menambahkan dashboard sentral, asset management, dan compliance mapping otomatis ke 15+ framework. Saya rekomendasikan ini hanya untuk organisasi dengan 50+ server. Untuk tim kecil, Lynis community edition plus script reporting sendiri sudah lebih dari cukup.
Instalasi Lynis di Ubuntu 24.04 dan Rocky Linux 9
Ada tiga metode instalasi. Untuk audit produksi, saya selalu memilih instalasi dari source git karena versi di repository distro sering tertinggal 6–12 bulan dan menggunakan dataset test yang stale. Pastikan ownership /usr/local/lynis milik root, bukan user non-privileged. Lynis menolak menjalankan audit jika direktori bisa ditulis oleh user lain (security feature, jangan dimatikan).
# Metode 1: Source (RECOMMENDED untuk audit produksi)
cd /usr/local
sudo git clone https://github.com/CISOfy/lynis.git
sudo chown -R root:root lynis
cd lynis
sudo ./lynis show version
# Output: 3.1.4
# Metode 2: Repository CISOfy (Ubuntu/Debian)
curl -fsSL https://packages.cisofy.com/keys/cisofy-software-public.key \
| sudo gpg --dearmor -o /usr/share/keyrings/cisofy-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/cisofy-archive-keyring.gpg] \
https://packages.cisofy.com/community/lynis/deb/ stable main" \
| sudo tee /etc/apt/sources.list.d/cisofy-lynis.list
sudo apt update && sudo apt install -y lynis
# Metode 3: DNF (Rocky Linux 9 / RHEL 9)
sudo dnf install -y epel-release
sudo dnf install -y lynis
Verifikasi integritas binary sebelum digunakan. CISOfy tidak menyediakan signature GPG terpisah untuk source tarball, jadi git clone HTTPS sudah memberi jaminan transport. Jika Anda men-download tarball, periksa SHA256 yang dipublikasikan di halaman download resmi CISOfy.
Menjalankan audit pertama dan membaca Hardening Index
Perintah dasar audit adalah lynis audit system. Mode ini menjalankan seluruh test suite, sekitar 280 test pada Ubuntu 24.04 minimal, lebih banyak jika Docker, MySQL, atau Apache terdeteksi. Lama eksekusi 2–4 menit pada VM modern. Output dibagi menjadi tiga bagian: detail per kategori (mengalir real-time), ringkasan dengan warning plus suggestion count, dan path ke log file.
# Audit penuh dengan output verbose
sudo lynis audit system --verbose
# Ringkasan hasil:
# Hardening index : 64 [########### ]
# Tests performed : 281
# Plugins enabled : 0
# Lihat warning saja (action item prioritas tinggi)
sudo lynis audit system --quick --no-colors 2>&1 | grep -E "^\s+!"
# Detail lengkap di report file
sudo cat /var/log/lynis-report.dat | grep -E "^warning|^suggestion"
Hardening Index dihitung sebagai (tests_passed × bobot) / (tests_relevant × bobot), dikalikan 100. Setiap test punya bobot internal. Kegagalan pada SSH PermitRootLogin jauh lebih berat dari kegagalan pada konfigurasi NTP minor. Skor 60–69 normal untuk install OS default, 70–79 untuk server yang sudah di-hardening dasar, 80–89 untuk produksi yang serius, 90+ jarang dicapai tanpa profil custom.
Dua file output penting: /var/log/lynis.log (transcript lengkap setiap test) dan /var/log/lynis-report.dat (key=value, mesin-readable untuk parsing). Selalu simpan kedua file sebagai baseline sebelum melakukan hardening. Diff terhadap audit berikutnya akan menunjukkan progres yang konkret dan, jujur saja, sangat memuaskan untuk dilihat.
Kategori pemeriksaan utama yang dijalankan Lynis
Lynis mengelompokkan test ke sekitar 60 kategori. Berikut yang paling sering menghasilkan finding pada audit real-world yang saya lakukan:
Pendekatan yang saya gunakan: jangan kejar skor 100. Skor sempurna biasanya berarti Anda menyembunyikan test (skip) tanpa benar-benar memperbaiki, atau menonaktifkan fungsi yang dibutuhkan aplikasi. Target realistis ada di kisaran 82–88, dengan setiap suggestion didokumentasikan sebagai "fixed", "accepted risk", atau "not applicable".
So, mari ke quick wins yang biasanya menaikkan Hardening Index 15–20 poin:
Jalankan ulang sudo lynis audit system setelah setiap kelompok perubahan dan bandingkan field hardening_index= di report.dat. Kenaikan tidak selalu monoton. Beberapa test baru mungkin muncul (misalnya test AIDE setelah AIDE terinstall) yang awalnya gagal sampai konfigurasinya selesai. Saya pernah panik sebentar saat skor turun dari 71 ke 68, sebelum sadar bahwa kategori HIDS baru saja aktif.
Membuat profil custom dan skip test
Test yang tidak relevan akan mendistorsi Hardening Index. Contoh: server headless tidak butuh test X11, web server reverse-proxy tidak butuh test SMTP. Gunakan custom.prf untuk skip test secara eksplisit dengan justifikasi.
# /etc/lynis/custom.prf
# Skip test yang tidak applicable plus alasan
# Server tidak menjalankan mail server
skip-test=MAIL-8818
skip-test=MAIL-8820
# Tidak menggunakan NIS (legacy)
skip-test=AUTH-9216
# Tidak ada GUI / X11
skip-test=BANN-7126
skip-test=BANN-7130
# Customize machine role (server)
machine-role=server
# Customize purpose
purpose="Production web tier - Nginx + PHP-FPM"
# Test yang HARUS lulus (gagalkan audit jika tidak)
test-fail-on=SSH-7408
test-fail-on=AUTH-9282
Jalankan dengan profil: sudo lynis audit system --profile /etc/lynis/custom.prf. Untuk fleet management, simpan profile di config-management repo (Ansible, SaltStack) lalu deploy ke setiap server berdasarkan role. Saya juga sering memakai pendekatan ini saat audit klien dengan compliance framework spesifik, jadi tinggal bikin profile berbeda untuk PCI-DSS, HIPAA, atau ISO 27001 audit framework sehingga laporan langsung relevan.
Mode pentest dan audit forensik
Mode --pentest menjalankan Lynis tanpa privilese root, mensimulasikan attacker yang sudah mendapat unprivileged shell (misalnya via SSRF plus reverse shell). Subset test berkurang ke sekitar 150 (hanya yang bisa dijalankan tanpa root), tapi temuannya cukup brutal: SUID binaries yang exploitable, secret di environment variable, file world-readable yang berisi credential, paket dengan known privilege escalation CVE.
# Jalankan sebagai unprivileged user (TIDAK menggunakan sudo)
lynis audit system --pentest --verbose
# Audit Dockerfile (static analysis)
sudo lynis audit dockerfile /path/to/Dockerfile
# Mode forensik untuk image disk yang di-mount read-only
sudo lynis audit system --forensics \
--rootdir /mnt/forensic-image
Hasil pentest mode adalah daftar paths-of-least-resistance untuk privilege escalation. Pasangkan dengan tool seperti linpeas atau linux-exploit-suggester untuk coverage maksimal. Mode --forensics berguna saat menganalisis disk image dari incident, karena Lynis membaca konfigurasi tanpa booting OS target — cocok untuk investigasi cold-system.
Apa perbedaan Lynis dan OpenSCAP?
Pertanyaan ini sering muncul saat tim compliance mengevaluasi tool audit. Singkatnya: keduanya melengkapi, bukan menggantikan. OpenSCAP menggunakan format SCAP standar NIST dan menghasilkan laporan yang langsung diterima auditor PCI-DSS atau STIG. Lynis menghasilkan finding praktis dengan remediation command, jadi lebih cocok untuk engineer yang men-deploy hardening.
Aspek
Lynis
OpenSCAP
Format laporan
Plain text + report.dat
SCAP XML, HTML, ARF
Skor
Hardening Index 0–100
Pass/fail per rule
Compliance mapping
Manual / Enterprise edition
Native (DISA STIG, USGCB, PCI)
Remediation
Suggestion text + URL
Bash/Ansible playbook otomatis
Dependency
Shell saja
libopenscap + content packages
Frekuensi update content
Mingguan (git)
Per rilis distro
Container audit
Ya, mode dockerfile/image
Terbatas, butuh oscap-docker
Cocok untuk
Engineer, pentester
Auditor, compliance officer
Praktik terbaik di organisasi yang saya audit: jalankan Lynis mingguan via cron untuk continuous hardening monitoring oleh tim ops, lalu jalankan OpenSCAP kuartalan untuk evidence package compliance officer. Dua tool, dua audience, dua tujuan berbeda.
Otomatisasi audit harian dengan cron dan reporting
Audit one-shot hanya berguna sekali. Untuk monitoring continuous, jadwalkan Lynis via cron dan kirim diff ke channel ops (Slack, email, atau SIEM). Strategi yang saya pakai untuk fleet 20+ server kira-kira seperti ini:
# /etc/cron.d/lynis-daily
0 3 * * * root /usr/local/bin/lynis-daily.sh
# /usr/local/bin/lynis-daily.sh
#!/usr/bin/env bash
set -euo pipefail
LOG_DIR=/var/log/lynis-history
mkdir -p "$LOG_DIR"
TODAY=$(date +%Y-%m-%d)
HOST=$(hostname -s)
# Jalankan audit quiet, simpan report
/usr/local/lynis/lynis audit system --quiet --no-colors \
--report-file "$LOG_DIR/report-$TODAY.dat" \
--log-file "$LOG_DIR/audit-$TODAY.log"
# Ekstrak Hardening Index
SCORE=$(grep "^hardening_index=" "$LOG_DIR/report-$TODAY.dat" | cut -d= -f2)
WARN=$(grep -c "^warning\[" "$LOG_DIR/report-$TODAY.dat" || true)
# Compare dengan kemarin
YESTERDAY=$(date -d 'yesterday' +%Y-%m-%d)
PREV_SCORE=$(grep "^hardening_index=" "$LOG_DIR/report-$YESTERDAY.dat" \
2>/dev/null | cut -d= -f2 || echo "$SCORE")
DELTA=$((SCORE - PREV_SCORE))
# Alert via webhook jika skor turun
if [ "$DELTA" -lt 0 ]; then
curl -sS -X POST -H 'Content-Type: application/json' \
-d "{\"text\":\":warning: Lynis score di $HOST turun $DELTA -> $SCORE (warnings: $WARN)\"}" \
"$SLACK_WEBHOOK_URL"
fi
# Rotasi: simpan 90 hari
find "$LOG_DIR" -mtime +90 -delete
Untuk integrasi yang lebih dalam dengan SIEM, parse report.dat dan kirim sebagai JSON ke Elasticsearch atau Wazuh. Field key seperti warning[], suggestion[], dan hardening_index mudah di-extract dengan awk -F=. Untuk perlindungan SSH yang sering jadi sumber warning, lengkapi audit dengan Fail2ban untuk SSH brute force protection.
Integrasi Lynis ke pipeline DevSecOps
Untuk infrastructure-as-code, jalankan Lynis di tahap testing pipeline dan gate deployment jika Hardening Index turun di bawah threshold. Pendekatan ini mencegah configuration drift sekaligus menjadikan hardening bagian dari quality gate, bukan afterthought yang baru diingat menjelang audit eksternal.
# .github/workflows/hardening-audit.yml
name: Lynis Hardening Audit
on:
pull_request:
paths:
- 'ansible/**'
- 'packer/**'
schedule:
- cron: '0 6 * * *'
jobs:
audit:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Build test VM with Packer
run: packer build hardened-base.pkr.hcl
- name: Install Lynis
run: |
sudo git clone https://github.com/CISOfy/lynis.git /opt/lynis
sudo chown -R root:root /opt/lynis
- name: Run audit
run: |
sudo /opt/lynis/lynis audit system --quick --no-colors \
--report-file /tmp/report.dat
- name: Check threshold
run: |
SCORE=$(grep ^hardening_index= /tmp/report.dat | cut -d= -f2)
echo "Hardening Index: $SCORE"
if [ "$SCORE" -lt 80 ]; then
echo "::error::Hardening Index $SCORE di bawah threshold 80"
exit 1
fi
- uses: actions/upload-artifact@v4
with:
name: lynis-report
path: /tmp/report.dat
Untuk GitLab CI atau Jenkins, polanya identik. Yang penting: fail pipeline pada penurunan skor, bukan hanya pada skor mutlak. Pendekatan ini jauh lebih realistis untuk codebase legacy yang sedang ditingkatkan bertahap. Referensi resmi paling lengkap untuk konfigurasi dan plugin ada di dokumentasi Lynis CISOfy, sementara tabel kontrol CIS yang dipetakan tersedia di CIS Benchmarks resmi.
Pertanyaan yang Sering Diajukan
Apakah Lynis gratis untuk penggunaan komersial?
Ya. Lynis community edition dilisensikan di bawah GPL v3 dan boleh digunakan untuk audit komersial, internal, maupun klien tanpa biaya. Yang berbayar hanya Lynis Enterprise (dashboard sentral, compliance mapping otomatis, SLA support) yang ditujukan untuk fleet besar 50+ server.
Bagaimana cara meng-update database test Lynis?
Jika dipasang dari git: cd /usr/local/lynis && sudo git pull. Dari repository CISOfy: sudo apt update && sudo apt upgrade lynis. Periksa versi dengan lynis show version, minimal 3.1.4 untuk dukungan kernel 6.8 dan systemd 256 terbaru.
Berapa skor Hardening Index yang dianggap "baik"?
Tidak ada threshold universal. Sebagai rule of thumb pentester: 80+ baik untuk server produksi internet-facing, 70+ acceptable untuk internal services, di bawah 60 menandakan hardening dasar belum dilakukan. Lebih penting dari skor absolut adalah trend, jadi skor harus naik atau stabil, jangan turun.
Apakah Lynis bisa mengaudit container Docker?
Ya, dengan dua mode: lynis audit dockerfile /path/Dockerfile untuk static analysis Dockerfile, dan lynis audit system dijalankan di dalam container running untuk audit runtime. Untuk image scanning yang fokus CVE, kombinasikan dengan Trivy. Lynis untuk konfigurasi, Trivy untuk vulnerability database.
Mengapa beberapa test Lynis dilewati dengan status "skipped"?
Test dilewati karena tiga alasan: dependency tidak terdeteksi (misalnya test MySQL pada server tanpa MySQL), test di-skip eksplisit di custom.prf, atau Lynis dijalankan tanpa root (banyak test butuh privilege). Periksa baris # - Action : Skipped di /var/log/lynis.log untuk reason persis tiap test.
Panduan praktis deploy Suricata 7 sebagai Network IDS/IPS di Linux 2026. Mode af-packet pasif, NFQUEUE inline, manajemen ruleset ET Open, dan tuning trafik 10 Gbps.
Panduan lengkap auditd dan Linux Audit Framework untuk forensik, deteksi syscall, dan kepatuhan PCI-DSS/HIPAA. Berisi auditctl rules, ausearch, dan integrasi Wazuh.