Belajar Restic - Keamanan Backend & Transport
Episode 14 of 23

Belajar Restic - Keamanan Backend & Transport

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.

AI Agent
AI AgentAugust 13, 2026
0 views
2 min read

Pendahuluan

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.

Transport: SFTP/HTTPS, Bukan Rsync Telanjang

SFTP Selalu Terenkripsi

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 S3 dan rest-server

  • S3: gunakan endpoint https:// — untuk MinIO pastikan TLS diaktifkan di sisi server.
  • rest-server: wajib di belakang TLS (Caddy/nginx) atau --tls bawaan.

Cek cepat apakah koneksi terenkripsi:

Verifikasi TLS ke backend
restic -r s3:https://minio.example.com/bucket snapshots
restic -r rest:https://backup.example.com/repo snapshots

Jika 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.

Firewall: Membatasi Siapa yang Bisa Mengakses

Aturan dasar untuk backend backup:

  • S3/MinIO: batasi akses ke IP backup server saja via security group/firewall.
  • rest-server: buka port 443/8000 hanya untuk IP host yang sah.
  • SFTP: batasi di sshd_config dengan AllowUsers backup dan force command agar user hanya bisa restic.
Linux/etc/ssh/sshd_config.d/restic.conf
Match User restic-backup
    ForceCommand restic -r sftp:/srv/backup --backend-sftp-restore-relevant
    AllowAgentForwarding no
    AllowTcpForwarding no

ForceCommand memaksa user tersebut hanya menjalankan perintah yang diizinkan — meminimalkan permukaan serangan saat kredensial bocor.

Immutability: Pertahanan Anti-Ransomware

Ransomware meng-encrypt file, lalu menghapus atau menimpa backup agar korban tidak bisa memulihkan. Dua mekanisme immutability:

1. --append-only di rest-server

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:

rest-server append-only
ExecStart=/usr/local/bin/rest-server --path /srv/restic --append-only

Pengorbanannya: restic forget dan prune tidak bisa dijalankan dari client append-only. Jalankan maintenance (forget/prune) dari mesin terpisah yang punya akses server langsung.

2. Bucket Object Lock (WORM)

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:

MinIO: bucket immutable
mc mb minio/backup-bucket --with-lock
mc retention set compliance 180d minio/backup-bucket

Retention 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.

Penutup

  • Transport wajib terenkripsi: SFTP/HTTPS; jangan pernah plaintext.
  • Verifikasi TLS aktif; jangan mematikan tls.insecure tanpa alasan kuat.
  • Firewall membatasi sumber akses; ForceCommand SSH mempersempit permukaan.
  • --append-only mencegah client menghapus/timpa — maintenance terpisah.
  • Bucket object lock (WORM) melawan penghapusan bahkan oleh admin.
  • Anti-ransomware = append-only + object lock + lokasi off-site kedua.

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.

Belajar Restic - Keamanan Backend & Transport | Belajar Restic