Enkripsi melindungi isi data, tapi transport dan backend tetap punya celah: kredensial bocor, jalur tanpa TLS, atau ransomware yang menghapus snapshot. Episode ini mengamankan transport (SFTP/HTTPS, TLS S3, firewall) dan menerapkan immutability dengan bucket object lock dan repo `--append-only` untuk pertahanan anti-ransomware.

Episode 13 mengamankan isi data. Episode ini mengamankan jalur dan tempat penyimpanannya. Enkripsi yang kuat tidak berguna jika kredensial dikirim telanjang, atau jika ransomware berhasil menghapus seluruh riwayat snapshot.
Tiga lapis yang kita bangun: transport yang terenkripsi, firewall yang membatasi, dan storage yang immutable — tidak bisa diubah bahkan oleh admin sekalipun.
Backend SFTP berjalan di atas SSH — seluruh traffic terenkripsi sejak awal. Berbeda dengan rsync versi lama yang bisa berjalan di atas plaintext rsync:// tanpa lapisan SSH. Aturannya sederhana: data backup tidak pernah boleh melewati jaringan tanpa enkripsi lapisan transport, apa pun yang sudah dilakukan enkripsi aplikasi di episode 13.
https:// — untuk MinIO pastikan TLS diaktifkan di sisi server.--tls bawaan.Cek cepat apakah koneksi terenkripsi:
restic -r s3:https://minio.example.com/bucket snapshots
restic -r rest:https://backup.example.com/repo snapshotsJika endpoint http:// dipakai dan restic tidak mengeluh, kalian sedang mengirim kredensial + blob lewat plaintext.
Warning
Waspadai man-in-the-middle: restic memverifikasi sertifikat TLS secara default. Jangan pasang -o rest.tls.insecure=true atau --insecure-tls kecuali untuk pengujian lokal sesaat — dan pahami bahwa itu mematikan perlindungan.
Aturan dasar untuk backend backup:
443/8000 hanya untuk IP host yang sah.sshd_config dengan AllowUsers backup dan force command agar user hanya bisa restic.Match User restic-backup
ForceCommand restic -r sftp:/srv/backup --backend-sftp-restore-relevant
AllowAgentForwarding no
AllowTcpForwarding noForceCommand memaksa user tersebut hanya menjalankan perintah yang diizinkan — meminimalkan permukaan serangan saat kredensial bocor.
Ransomware meng-encrypt file, lalu menghapus atau menimpa backup agar korban tidak bisa memulihkan. Dua mekanisme immutability:
Saat client terhubung ke rest-server dengan --append-only, ia hanya bisa menambah — tidak bisa menghapus atau menimpa. Bahkan host yang terinfeksi tidak bisa meracuni riwayat:
ExecStart=/usr/local/bin/rest-server --path /srv/restic --append-onlyPengorbanannya: restic forget dan prune tidak bisa dijalankan dari client append-only. Jalankan maintenance (forget/prune) dari mesin terpisah yang punya akses server langsung.
Untuk S3-compatible yang mendukung (AWS S3, MinIO, B2), aktifkan object lock / WORM di level bucket. Setiap object punya retention Compliance atau Governance — data tidak bisa dihapus sebelum masa retention habis:
mc mb minio/backup-bucket --with-lock
mc retention set compliance 180d minio/backup-bucketRetention Compliance bahkan menolak penghapusan oleh root — kekuatan penuh anti-ransomware.
Tip
Kombinasi ideal: append-only untuk mencegah modifikasi, object lock untuk mencegah penghapusan, dan repo kedua di lokasi fisik berbeda sebagai cadangan terakhir. Backup yang bisa dihapus oleh penyerang bukanlah backup.
tls.insecure tanpa alasan kuat.ForceCommand SSH mempersempit permukaan.--append-only mencegah client menghapus/timpa — maintenance terpisah.Di episode 15 selanjutnya kita menerapkan pertahanan di skala banyak tim: hardening & multi-tenant — satu repository per tenant, satu key per repo, isolasi credential, least privilege storage, dan audit akses secara berkala.