BerandaSecurity Advisory
Dokumentasi Resmi

Unila Sentinel

Sistem "kesehatan siber" berlapis untuk seluruh aset web Universitas Lampung — deteksi, mitigasi, dan investigasi malware (judol/cloaking, backdoor/web‑shell) secara terpusat di bawah CSIRT UNILA.

Versi 1.10.0Lisensi GPL‑2.0WordPress + RESTWajib (standar institusi)
Untuk siapa dokumen ini?
Pengelola situs/aplikasi tiap unit kerja (fakultas, lembaga, UPT) yang ingin memasang perlindungan Unila Sentinel pada situs WordPress. Panduan publik ini memuat ringkasan, pemasangan, dan verifikasi keaslian. Detail integrasi teknis (kontrak API, contoh payload, konfigurasi agent, SOP kunci/rollback) tersedia bagi staf CSIRT terautentikasi.
Pembaruan Platform Konsol CSIRT — Juli 2026
Konsol pusat diperkuat (tanpa mengubah cara pasang plugin — plugin terpasang tetap kompatibel):
  • BARU (v1.10): Verifikasi KNOWN-GOOD — seluruh berkas inti WordPress dicocokkan dengan checksum resmi wordpress.org; yang menyimpang dapat DIPULIHKAN otomatis dari sumber resmi (berkas lama diarsip sebagai bukti).
  • BARU: Model RS Pusat–Poliklinik — operator unit/fakultas (role PIC) login SSO & memantau aset unitnya sendiri; temuan kritis otomatis tereskalasi ke CSIRT pusat.
  • Rantai pasok tepercaya: manifest rilis, SBOM, endpoint tanda tangan, & daftar cabut (revocation) — verifikasi keaslian paket makin kuat.
  • Pengerasan kanal perintah: setiap perintah kini berkadaluarsa, ber-nonce, & ditandatangani server; aksi destruktif butuh persetujuan dua-pihak.
  • Pemantauan: skor kesehatan aset (0–100), deteksi agent offline, & kolom Integritas Inti di fleet.
  • Kepercayaan publik: berkas security.txt (RFC 9116) & halaman kunci publik CSIRT.

Ringkasan

Unila Sentinel adalah agen keamanan yang dipasang pada tiap aset web. Ia memindai berkas & database untuk pola berbahaya (doorway judol/cloaking, backdoor & web‑shell, injeksi konten, akun admin liar), mengisolasi temuan secara reversibel ke karantina, mengeraskan titik lemah (mis. blokir eksekusi PHP di folder unggahan), lalu melapor ke Konsol Pusat CSIRT dan menarik "vaksin" (signature terbaru) secara berkala.

  • Deteksi: judol/cloaking doorway, backdoor eval/exec, web‑shell, injeksi DB, admin baru mencurigakan.
  • Mitigasi: auto‑karantina (reversibel) + hardening folder unggahan.
  • Pelaporan: temuan & spesimen dikirim ke Konsol CSIRT; insiden kritis otomatis jadi tiket.
  • Kendali jarak jauh: tim CSIRT bisa memicu scan / karantina / pulihkan dari pusat.

Arsitektur Berlapis (analogi rumah sakit)

Model berlapis seperti sistem kesehatan: pasien dirawat sedekat mungkin dengan lokasinya, kasus berat dirujuk ke pusat.

LapisanPeran
Agent (Plugin)"Dokter di tempat" — scan, karantina, hardening pada aset itu sendiri.
Poliklinik Fakultas/UnitRujukan pertama: operator unit (role PIC, login SSO Unila) memantau rekam medis aset unitnya sendiri; kasus berat otomatis dirujuk (eskalasi) ke pusat.
Pusat Kendali CSIRT"Rumah Sakit Rujukan" — fleet seluruh aset, Lab Spesimen, terbitkan vaksin, perintah jarak jauh.

Cara Kerja

  1. 1Scan terjadwal (harian) memindai berkas + database memakai ruleset/vaksin terbaru.
  2. 2Temuan berbahaya diisolasi ke karantina (reversibel, dengan chain‑of‑custody hash SHA‑256).
  3. 3Ringkasan + spesimen (hash‑first) dikirim ke Konsol CSIRT; temuan kritis → tiket insiden otomatis (terkorelasi per kampanye agar tidak banjir tiket).
  4. 4Agent menarik perintah dari pusat (scan/karantina/pulihkan/hapus/hardening) dan melapor hasilnya.
  5. 5Agent menarik vaksin (hash + kata kunci) untuk memperbarui deteksi tanpa update plugin.

Known‑Good & Pemulihan Inti (v1.10)

Paradigma terbalik: deteksi berbasis signature mencari pola "jahat" yang sudah dikenal — malware jenis baru bisa lolos. Verifikasi known‑good bekerja sebaliknya: setiap berkas inti WordPress dicocokkan dengan checksum resmi wordpress.org untuk versi yang terpasang, lalu semua yang menyimpang dari asli ditandai — apa pun jenis malware-nya, dikenal atau belum.

KategoriArtiTindakan
Berubahisi berkas inti ≠ rilis resmi (indikasi injeksi/backdoor)Pulihkan otomatis dari sumber resmi
Asingberkas yang BUKAN bagian WordPress berada di direktori inti (lokasi favorit backdoor)tinjau → karantina
Hilangberkas inti resmi tidak ditemukanPulihkan otomatis

Pemulihan inti satu-klik — aman berlapis:

  • Berkas asli diunduh dari sumber resmi WordPress; md5 unduhan WAJIB cocok dengan manifest resmi sebelum ditulis (proteksi anti-korupsi/MITM).
  • Berkas lama TIDAK dibuang — diarsip ke karantina (chain-of-custody, bukti forensik, dapat dikembalikan).
  • Hanya berkas yang terdaftar di manifest resmi yang dapat dipulihkan (tidak bisa dipakai menulis path lain).
  • Verifikasi berjalan otomatis harian; juga tersedia di menu plugin (Integritas Inti) dan dari Konsol CSIRT (perintah jarak jauh dengan persetujuan dua-pihak).
  • Plugin dari repo wordpress.org juga diverifikasi checksum-nya (report-only).
Di mana melihat hasilnya?
Di situs Anda: menu Unila Sentinel → Integritas Inti (tombol Verifikasi Sekarang / Pulihkan Semua). Di Konsol CSIRT: kolom Inti pada tabel fleet & panel Integritas Inti WordPress di detail aset.

Prasyarat

  • WordPress 5.6+ dengan PHP 7.4+ (disarankan PHP 8.x).
  • Akses Administrator ke wp‑admin situs.
  • Server bisa melakukan koneksi keluar (outbound HTTPS) ke Konsol CSIRT.
  • URL Konsol CSIRT + Agent Key — diminta ke tim CSIRT UNILA (lihat Dukungan).

Instalasi Plugin WordPress

unila-wp-sentinel-1.10.0.zip
Paket plugin resmi · GPL‑2.0 · siap upload ke WordPress
Unduh Plugin

Cara A — via wp‑admin (paling mudah)

  1. 1Unduh paket plugin unila-wp-sentinel.zip dari tim CSIRT / repositori TIK.
  2. 2Masuk wp‑admin → Plugins → Add New → Upload Plugin.
  3. 3Pilih berkas zip → Install NowActivate.
  4. 4Buka menu Unila Sentinel → tab Pengaturan, isi konfigurasi (URL Konsol + Agent Key dari CSIRT).

Cara B — manual / WP‑CLI (untuk admin server)

bash
# Manual: salin ke folder plugin lalu aktifkan
cd /path/ke/wordpress/wp-content/plugins
unzip unila-wp-sentinel.zip
wp plugin activate unila-wp-sentinel

# Atau langsung dari berkas zip
wp plugin install ./unila-wp-sentinel.zip --activate
Setelah aktif
Plugin otomatis membuat tabel temuan, folder karantina, dan blokir eksekusi PHP di wp-content/uploads. Jalankan Scan Sekarang sekali untuk baseline.

Keaslian & Anti‑Tamper

Wajib diverifikasi sebelum instal
Penyerang mengincar sumber unduhan plugin keamanan — satu berkas yang diracun bisa menyusupi ratusan situs. Hanya unduh dari domain CSIRT resmi dan verifikasi keaslian paket. Jangan instal dari link tak resmi (mis. share drive yang diteruskan orang lain).

Lapisan pengaman otomatis yang sudah berjalan:

  • Gerbang unduhan memverifikasi SHA‑256 paket di server SEBELUM melayani — bila isi berubah, unduhan ditolak & CSIRT mendapat alarm seketika.
  • Paket ditandatangani kriptografis (Ed25519) — modifikasi apa pun membatalkan tanda tangan.
  • Plugin memeriksa integritas berkasnya sendiri saat aktivasi & tiap scan — bila kode dimodifikasi di situs, ia melapor ke CSIRT (situs mana, berkas apa).
  • Setiap unduhan dicatat (audit) & konsol memantau sidik jari kode tiap agent.

1. Verifikasi SHA‑256 (wajib, mudah)

SHA‑256 resmi424ee4cdb57d22cca6100a63001ed8c455e5b4db96559a719c2bdfcf53719993
verify-sha256
# Linux / macOS
sha256sum unila-wp-sentinel-1.10.0.zip
# Windows (PowerShell)
Get-FileHash unila-wp-sentinel-1.10.0.zip -Algorithm SHA256
# Hasilnya HARUS persis sama dengan SHA-256 resmi di atas. Jika beda → JANGAN instal.

2. Verifikasi tanda tangan Ed25519 (lanjutan)

Kunci publik CSIRTMCowBQYDK2VwAyEAZQhzWIQ/99KumDtc1flJPJVjG5y7B+juril+LrxYmGY=
verify-signature
# Simpan kunci publik CSIRT ke csirt-pubkey.pem, lalu:
curl -s "https://csirt.unila.ac.id/api/download/plugin?part=sig" -o unila-wp-sentinel-1.10.0.zip.sig
openssl pkeyutl -verify -pubin -inkey csirt-pubkey.pem \
  -rawin -in unila-wp-sentinel-1.10.0.zip -sigfile unila-wp-sentinel-1.10.0.zip.sig
# Output yang benar: "Signature Verified Successfully"
Status integritas langsung
Cek https://csirt.unila.ac.id/api/download/checksum untuk SHA‑256, sidik jari, & status terkini paket di server.

3. Tata kelola rantai pasok (rilis tepercaya)

Endpoint publik untuk verifikasi & audit distribusi paket:

EndpointIsi
/api/download/manifestmetadata rilis: versi, kanal, sha256, sidik jari, kompatibilitas, rollback
/api/download/signaturetanda tangan Ed25519 (.sig) paket
/api/download/sbomSBOM (CycloneDX) komponen paket
/api/download/revokeddaftar cabut — versi yang tak boleh dipakai lagi
Perlindungan rollback & cabut
Jika suatu versi bermasalah, konsol dapat menandainya revoked — gerbang unduhan menolaknya & paket versi sebelumnya tersedia untuk rollback. Agent (plugin versi mendatang) dapat memeriksa daftar cabut sebelum memperbarui.

Detail Integrasi (Area Internal)

Untuk mengurangi paparan informasi operasional ke publik, kontrak API lengkap, contoh payload, konfigurasi agent, dan SOP kunci/rollback/penghentian darurat dipindahkan ke area terautentikasi. Materi ini hanya diperlukan oleh staf yang mengintegrasikan atau mengoperasikan agent.

Runbook Integrasi Sentinel

Kontrak REST (X‑Sentinel‑Token), contoh curl/Python, tabel pengaturan agent, dan prosedur cabut/rotasi kunci & rollback.

Buka Runbook (perlu login)
Butuh Agent Key / akses?
Ajukan ke CSIRT / UPA TIK melalui Kontak. Agent Key & URL Konsol final disalurkan lewat kanal internal agar tetap rahasia.

Status Aset di Konsol

Belum Dipantau

terdaftar di inventaris, agent belum terpasang

Sehat

discan, tidak ada temuan terbuka

Tinjau

ada temuan rendah/sedang

Tinggi

ada temuan tinggi

Kritis

ada temuan kritis — segera tindak

Saat agent dipasang & melapor pertama kali, status otomatis berubah dari Belum Dipantau ke kondisi nyata.

Keamanan & Privasi

  • Karantina bersifat reversibel (bisa dipulihkan) — bukan hapus permanen tanpa konfirmasi.
  • Spesimen dikirim hash‑first; berkas penuh hanya bila Lab Pusat memintanya.
  • Setiap aset memakai Agent Key sendiri (dapat dicabut tanpa mengganggu aset lain).
  • Data PII penanggung jawab (PIC) tidak ikut tersebar ke konsol — tetap di sumber dengan masking per‑role.
  • Token tidak pernah ditampilkan utuh di antarmuka (mis. sk-••••last4).

Log Pengembangan (Changelog)

v1.10.02026‑07‑10Known‑Good: verifikasi checksum resmi & pemulihan inti
  • Verifikasi KNOWN-GOOD: seluruh berkas inti WP dicocokkan dengan checksum resmi wordpress.org — berkas berubah/asing/hilang ditandai (tahan malware jenis baru apa pun), berjalan otomatis harian.
  • Pemulihan inti satu-klik: unduh berkas asli dari sumber resmi (md5 diverifikasi sebelum ditulis), berkas lama diarsip ke karantina (bukti forensik). Menu baru "Integritas Inti" di plugin.
  • Verifikasi checksum plugin repo wordpress.org (report-only) + perintah jarak jauh core_verify/core_repair dari Konsol (persetujuan dua-pihak).
  • Konsol: model RS Pusat–Poliklinik — operator unit (role PIC) melihat aset unitnya sendiri; kolom Integritas Inti di fleet.
v1.9.32026‑07‑09Scan tahan cache halaman admin & host timeout pendek
  • Halaman admin plugin kini anti-cache (nonce selalu segar — perbaikan scan macet "0 berkas" di situs ber-LiteSpeed).
  • Checkpoint scan lebih rapat (1,5 dtk + checkpoint dini) — tahan host yang memutus request sangat cepat.
v1.9.0–1.9.22026‑07‑09Pemindaian bertahap (anti-timeout) untuk situs besar
  • Scan berjalan bertahap (resumable) dengan checkpoint — tidak lagi terputus batas waktu server pada situs besar (50 ribu+ berkas); browser melanjutkan otomatis dari titik terakhir.
  • Respons proses dibersihkan dari output tema/plugin "berisik" (JSON anti-cemar).
v1.8.02026‑06‑29Mode tampilan ganda (dark & light)
  • Antarmuka admin plugin mendukung dual‑view: mode gelap (default) & terang, dengan tombol toggle ☀/🌙 di header.
  • Preferensi tema tersimpan per‑pengguna (anti‑kedip, dirender server‑side) dan mengikuti preferensi sistem saat pertama kali.
v1.7.02026‑06‑28Pembaruan otomatis (ala repo WP) & manajemen agent
  • Plugin terpasang otomatis mendeteksi versi baru dari konsol → notifikasi "Update tersedia" + changelog di halaman Plugins, update sekali‑klik (paket terverifikasi integritas).
  • Konsol: panel manajemen agent — daftar situs enrolled + tombol Cabut kunci.
v1.6.02026‑06‑28Enrollment mandiri & kunci per‑agent
  • Form "Enroll ke Pusat": situs baru mendaftar dengan bootstrap key → menerima kunci agent UNIK (revocable), bukan token bersama.
  • Endpoint enrollment; semua endpoint agent menerima token bersama (legacy) maupun kunci enrolled.
  • Setelah enroll otomatis tarik vaksin + scan baseline → aset langsung muncul di fleet.
v1.5.02026‑06‑28Anti‑tamper & keaslian rantai pasok
  • Paket ditandatangani Ed25519 + checksum SHA‑256 publik; unduhan lewat gerbang yang memverifikasi integritas (tolak + alarm bila berkas di server diubah).
  • Self‑integrity plugin: manifest hash per‑berkas + cek otomatis saat aktivasi/scan → lapor SITUS yang kodenya dimodifikasi.
  • Sidik jari kode dikirim pada tiap laporan; konsol menandai agent dengan plugin tak resmi.
  • Audit unduhan (IP/klien) + panel "Integritas & Distribusi" + heartbeat pemantau drift.
v1.4.02026‑06‑28Skala & efisiensi
  • Poll adaptif (read‑before‑claim + next_poll idle/aktif) — hemat beban di ribuan agent.
  • Korelasi kampanye di pusat: 1 signature menjangkiti banyak aset = 1 tiket (anti badai tiket).
  • Dashboard pusat: agregat per‑fakultas, paginasi & filter, status inventaris "Belum Dipantau".
  • Jembatan aman Webometrics → fleet (inventaris non‑PII).
v1.3.02026‑06‑28Akurasi & kendali
  • Allowlist false‑positive ("Tandai Aman") — dismissal menempel lintas‑scan.
  • Kecualikan opsi tema/page‑builder (td_*) dari heuristik; supersede temuan lama (anti‑duplikat).
  • Pulihkan/Hapus karantina langsung dari dashboard pusat.
v1.2.02026‑06‑27Command channel
  • Perintah jarak jauh (pull): scan / karantina / pulihkan / hapus / hardening dari konsol.
  • Poller wp‑cron + pelaporan hasil perintah.
v1.1.02026‑06‑27Integrasi konsol
  • Lapor temuan & spesimen ke Konsol CSIRT (header X‑Sentinel‑Token).
  • Tarik vaksin (signature) dari pusat secara berkala.
v1.0.02026‑06‑27Rilis awal — 3 fase
  • Fase 1: scan (judol/cloaking, backdoor/web‑shell, injeksi DB, admin liar) + karantina reversibel + hardening + laporan CSIRT (PDF).
  • Fase 2: monitor realtime + alert (webhook/email).
  • Fase 3: fondasi konsol terpusat (fleet).

Dukungan & Kontak

Untuk meminta Agent Key, paket plugin, atau bantuan integrasi platform lain, hubungi CSIRT / UPA TIK Universitas Lampung.

Catatan distribusi
URL Konsol final & paket plugin resmi disalurkan melalui kanal internal TIK agar Agent Key tetap rahasia. Dokumen ini bersifat publik sebagai panduan umum.