Backup Anti-Ransomware: Immutable Backup MySQL ke Object Storage

Ilustrasi backup immutable yang aman dari ransomware

Tahun 2021 saya menulis cara dump dan backup MySQL ke DigitalOcean Spaces dengan s3cmd dan cron. Skrip itu masih berjalan, tetapi ada satu kelemahan besar: jika penyerang mendapatkan kredensial yang sama, backup juga bisa dihapus atau dienkripsi. Ransomware modern memang sengaja memburu backup terlebih dahulu.

Prinsip 3-2-1 plus immutability

Simpan 3 salinan data, di 2 media berbeda, 1 di luar lokasi. Tambahkan satu syarat: salah satu salinan harus immutable, yaitu tidak bisa diubah atau dihapus sampai masa retensinya habis.

Diagram strategi backup 3-2-1 dengan object lock

 

1. Buat bucket dengan Object Lock

Pilih penyedia object storage yang mendukung Object Lock (misalnya AWS S3 atau penyedia S3-compatible lain yang mendukungnya). Object Lock harus diaktifkan saat bucket dibuat.

aws s3api create-bucket --bucket backup-db-lrsoft --object-lock-enabled-for-bucket

aws s3api put-object-lock-configuration --bucket backup-db-lrsoft --object-lock-configuration '{"ObjectLockEnabled":"Enabled","Rule":{"DefaultRetention":{"Mode":"COMPLIANCE","Days":30}}}'

 

Pengaturan object lock mode compliance pada bucket

 

2. Skrip backup yang diperbarui

Kredensial database disimpan di file terpisah, bukan di skrip. Akun object storage yang dipakai cukup punya izin upload, tanpa izin hapus.

#!/bin/bash
set -euo pipefail
TGL=$(date +%F_%H%M)
FILE="/tmp/db_${TGL}.sql.gz"
mysqldump --defaults-extra-file=/root/.backup.cnf --single-transaction --routines nama_db | gzip > "$FILE"
aws s3 cp "$FILE" s3://backup-db-lrsoft/mysql/
rm -f "$FILE"

Jadwalkan seperti sebelumnya dengan cron, misalnya setiap tengah malam.

3. Uji restore

Backup yang tidak pernah diuji belum bisa disebut backup. Minimal sebulan sekali, pulihkan ke database uji:

gunzip < db_2026-09-25_0000.sql.gz | mysql nama_db_uji

Dengan Object Lock, serangan terburuk pun hanya bisa menghapus data di server, bukan jaring pengaman kita.

Comments

No comments yet. Why don’t you start the discussion?

Tinggalkan Balasan