Belajar Borg Backup - Borg di Remote Server (SSH)
Episode 11 of 23

Belajar Borg Backup - Borg di Remote Server (SSH)

Repository remote adalah inti strategi off-site: backup dikirim ke host lain lewat SSH dengan borg serve. Episode ini mengajarkan setup repo jarak jauh, pasangan SSH key dengan restricted command, menjalankan borg serve tanpa shell penuh, dan praktik keamanan: dedicated user, tanpa password, dan sandboxing seccomp bawaan Borg.

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

Pendahuluan

Sejauh ini repository selalu lokal di server yang sama dengan data. Itu melindungi dari kesalahan manusia, tetapi tidak dari kebakaran ruangan server — prinsip 3-2-1 mengharuskan satu salinan off-site. Episode 11 memindahkan repository ke host terpisah lewat SSH. Di sini keamanan menjadi fokus: kalian tidak akan memberi akses shell penuh ke host backup.

Repository Remote: Konsep Dasar

Format Alamat

Repository remote ditulis sebagai user@host:path:

Format repo remote
borg@backup-host:/srv/borg/backup

Borg mendeteksi pola user@host: dan otomatis memakai SSH. Di sisi server, Borg memanggil borg serve — sebuah daemon yang dibuka lewat SSH untuk melayani permintaan backup. Klien dan server tidak menyalin file mentah; mereka bertukar chunk lewat protokol Borg.

Setup Server

Di host backup, buat user khusus dan install borg:

Setup di backup-host
sudo useradd -m -s /usr/bin/bash borg
sudo apt install -y borgbackup
sudo mkdir -p /srv/borg
sudo chown borg: /srv/borg

Perhatikan: user borg bukan superuser, dan hanya menguasai /srv/borg. Prinsipnya: jauhkan akses backup dari akses administrasi.

Setup SSH Key dengan Restricted Command

Membuat dan Mengirim Key

Dari sisi klien:

Buat key SSH khusus backup
ssh-keygen -t ed25519 -f ~/.ssh/id_borg -N "" -C "borg-backup"
ssh-copy-id -i ~/.ssh/id_borg.pub borg@backup-host

Namun ssh-copy-id menambahkan key dengan akses penuh. Kita ganti dengan restricted command.

Restricted Command di authorized_keys

Restricted command membatasi SSH hanya menjalankan perintah tertentu — di sini borg serve dengan pembatasan path:

/home/borg/.ssh/authorized_keys
command="borg serve --restrict-to-path /srv/borg --restrict-to-repository /srv/borg/backup",restrict,no-pty ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... borg-backup

Mari bedah opsinya:

  • command="borg serve ..." — SSH hanya akan menjalankan borg serve, apa pun yang diminta klien. Tidak ada shell.
  • --restrict-to-path /srv/borg — borg serve hanya mengakses /srv/borg, tidak dapat menyentuh file lain di sistem.
  • --restrict-to-repository /srv/borg/backup — hanya satu repository yang bisa dilayani.
  • restrict — menonaktifkan port forwarding, agent forwarding, dan X11 forwarding.
  • no-pty — tanpa pseudo-terminal (tidak relevan untuk borg serve, tetapi prinsip keamanan yang baik).

Important

Tanpa command= di authorized_keys, SSH key memberi akses shell penuh ke user borg. Kalau key itu bocor, penyerang mendapat shell di host backup. Restricted command menutup pintu itu: penyerang hanya bisa memakai borg serve dalam batas path.

Inisialisasi dan Backup ke Repository Remote

Init Repo Remote

Init repository remote
export BORG_REPO='borg@backup-host:/srv/borg/backup'
export BORG_RSH='ssh -i ~/.ssh/id_borg'
export BORG_PASSCOMMAND='cat /root/.borg-passphrase'
 
borg init --encryption=repokey-blake2

Catatan BORG_RSH: memberitahu Borg perintah SSH mana yang dipakai, termasuk file key. Tanpa ini, Borg memakai ssh default yang mungkin tidak memakai id_borg.

Backup Remote

Backup ke repo remote
borg create --stats "$BORG_REPO"::"{hostname}-{now}" /home /etc

Karena BORG_REPO sudah di-export, perintah di atas tidak perlu menulis path penuh. Borg akan membuka SSH, server menjalankan borg serve, dan chunk terkirim.

Keamanan: Dedicated User, Tanpa Password, seccomp

Dedicated User

Gunakan user khusus (borg) — bukan root, bukan user aplikasi. Jika host backup dibobol lewat jalur ini, dampaknya terbatas pada repository.

Tanpa Password dan Akses Shell

  • Pastikan user borg tidak punya password: sudo passwd -l borg.
  • Shell user dibuat sebatas yang dibutuhkan. Restriction utama bukan di shell, tetapi di command= authorized_keys.
  • Jangan pernah menambahkan key host lain ke authorized_keys yang sama tanpa restricted command.

Sandbox seccomp Bawaan Borg

Saat borg serve berjalan, Borg memanfaatkan seccomp (Secure Computing Mode) di Linux untuk menyandbox syscall yang boleh dilakukan proses server. Ini lapisan pertahanan jika borg serve diserang lewat data repo yang jahat — kemampuannya dibatasi pada syscall yang benar-benar dibutuhkan backup. Kalian tidak perlu melakukan apa-apa: aktif secara default pada platform yang didukung.

Tip

Verifikasi setup dengan uji cepat dari klien: borg list harus menampilkan repository, dan ssh borg@backup-host id harus menolak (karena restricted command menolak perintah selain borg serve). Kalau id berjalan, konfigurasi authorized_keys kalian salah.

Pitfall Umum

  • Key SSH tanpa restricted command: akses shell penuh ke host backup — perbaiki segera.
  • Lupa BORG_RSH: Borg memakai SSH default, gagal karena key tidak ditemukan atau key lain dipakai.
  • Path repo tidak cocok dengan restrict: repo diinisialisasi di luar path yang diizinkan — borg serve menolak akses.
  • User root di host backup: setiap file di host backup bisa dibaca/dihapus. Dedicated user membatasi radius ledakan.
  • Tidak menguji dari environment bersih: uji borg list dari host lain untuk memastikan restricted command berfungsi seperti harapan.

Penutup

  • Repository remote ditulis user@host:path dan dilayani borg serve.
  • Pasangan SSH key dibatasi dengan command="borg serve --restrict-to-path ..." di authorized_keys.
  • restrict, no-pty mematikan fitur SSH yang tidak perlu.
  • Dedicated user borg tanpa password membatasi dampak bila terjadi kebobolan.
  • Sandbox seccomp aktif default di sisi server.
  • Selalu verifikasi: borg list sukses, ssh ... id ditolak.

Di episode 12 kita menjaga kesehatan jangka panjang: check & maintenanceborg check untuk konsistensi, borg check --verify-data untuk verifikasi isi, jadwal bulanan, borg compact, review log, dan pemantauan kesehatan disk.

Belajar Borg Backup - Borg di Remote Server (SSH) | Belajar Borg Backup