Kenapa backup terakhir belum tentu aman
Menentukan waktu kompromi dari log cPanel
/usr/local/cpanel/logs/. Beberapa file yang biasanya relevan:
login_logmencatat percobaan login ke cPanel, WHM, dan webmail.session_logmencatat pembuatan dan penutupan sesi.access_logmencatat request ke cpsrvd, yaitu layanan yang melayani antarmuka cPanel dan WHM.
/var/log/secure atau /var/log/auth.log (tergantung distro) dan waktu modifikasi file mencurigakan. Ingat juga, waktu modifikasi file bisa dipalsukan dengan mudah, jadi jangan dijadikan satu-satunya patokan.
Ketiga, perhatikan zona waktu. Log, jadwal backup, dan laporan dari pelanggan bisa memakai zona waktu yang berbeda. Selisih beberapa jam cukup untuk membuat kita salah memilih backup.
Begitu batas waktu paling awal sudah ketemu, beri jarak aman. Penyerang sering melakukan probing atau pengujian sebelum aktivitas yang jelas terlihat. Backup yang dibuat beberapa hari sebelum jejak pertama biasanya lebih bisa dipercaya daripada backup yang dibuat beberapa jam sebelumnya.
Berikut contoh pemeriksaan read-only. IP, tanggal, dan path di bawah hanya contoh, jadi sesuaikan dengan server kamu:
BASH
# 1) Cari aktivitas dari IP mencurigakan di log cPanel (read-only)
# 203.0.113.10 hanya contoh IP
grep -h '203.0.113.10' /usr/local/cpanel/logs/login_log /usr/local/cpanel/logs/session_log | head -n 20
# 2) Lihat daftar isi backup akun beserta waktu modifikasi file, tanpa mengekstrak
# Path backup tergantung pengaturan di WHM Backup Configuration
tar -tvf /backup/2026-10-05/accounts/namaakun.tar.gz | grep -E 'cron|authorized_keys|\.php$' | lessMemeriksa isi backup sebelum dipercaya
- Cron job milik akun. Di arsip backup akun, crontab biasanya tersimpan di folder terpisah. Cari perintah yang mengunduh sesuatu dari luar atau menjalankan file PHP dari lokasi yang aneh.
- File PHP baru di tempat yang tidak seharusnya, misalnya folder upload WordPress atau folder cache.
.ssh/authorized_keysdi home directory akun. Satu baris kunci tambahan cukup untuk memberi akses SSH tanpa password.- File
.htaccessdengan rewrite rule yang disuntikkan. Pembahasan lengkapnya ada di Auditing .htaccess Files for Injected Redirects After a cPanel Server Compromise. - Database. Dump SQL di dalam backup bisa saja sudah berisi user admin WordPress baru atau opsi yang diubah. Cara paling aman untuk memeriksanya adalah me-restore dump ke database sementara, lalu cek tabel user-nya. Jangan restore langsung ke database produksi.
/etc/ld.so.preload. Untuk yang terakhir, ada pembahasan di Checking /etc/ld.so.preload to Confirm Hidden Malware Processes. Celah yang memberi akses ke WHM berarti penyerang berpotensi punya akses root. Jadi backup akun yang bersih sekalipun tidak membersihkan server tempat backup itu di-restore.
Kesalahan yang sering terjadi
public_html.
Yang ketiga, me-restore backup bersih ke server yang belum di-patch atau masih terkompromi. Celahnya masih terbuka, persistensi di level sistem masih ada, dan penyerang bisa masuk lagi dengan cara yang sama. Kalau ada indikasi akses root, pendekatan yang lebih aman biasanya adalah menyiapkan server baru yang sudah di-patch, lalu me-restore backup akun yang sudah diperiksa ke sana.
Yang keempat, lupa mengganti kredensial. Backup yang bersih tetap menyimpan password lama, dan password lama itu mungkin sudah bocor. Setelah restore, ganti password cPanel, password database, API token, dan kunci SSH. Pemilik situs juga perlu mengganti password admin aplikasinya.
Yang kelima, tidak menghitung data yang hilang. Restore ke backup yang lebih lama berarti pesanan, komentar, atau posting setelah tanggal itu ikut hilang. Kalau datanya penting, ada kompromi yang bisa diambil: kembalikan kode dan file dari backup bersih, lalu ambil data konten terbaru dari database setelah diperiksa dengan teliti. Cara ini lebih repot, dan risikonya tergantung seberapa teliti pemeriksaan databasenya. Keputusannya perlu dibicarakan dengan pemilik situs, bukan diputuskan diam-diam.
Urutan kerja yang masuk akal
/usr/local/cpanel/logs/ dan cocokkan dengan sumber lain. Tentukan batas waktunya, lalu mundur sedikit sebagai jarak aman. Periksa isi backup kandidat, termasuk cron, kunci SSH, file baru, dan database. Restore ke server yang sudah di-patch, lalu ganti semua kredensial. Kalau ada langkah yang tidak bisa dipastikan, misalnya log sudah dirotasi atau ada indikasi log diedit, pilih backup yang lebih tua. Kehilangan data beberapa hari memang tidak enak, tapi masih lebih mudah ditangani daripada membersihkan server yang sama dua kali.