AizuDemy

Tutorial Setup gVisor Runtime di Docker VPS: Isolasi Container & Cegah Escape

Tutorial Setup gVisor Runtime di Docker VPS: Isolasi Container & Cegah Escape
IKLAN
IDCloudHost
๐ŸŽง
Dengarkan Artikel Ini
Suara AI Otomatis โ€ข 2 mnt baca baca
โšก TL;DR

Poin Kunci Artikel Ini:

  • Risiko Sandbox Default Docker & Ancaman Container EscapeDocker default pakai .
  • Fitur guna Linux namespaces dan cgroups.
  • Container berbagi satu kernel host VPS (shared kernel).Aplikasi web proses unggah berkas atau eksekusi script rentan RCE.
๐Ÿ“‹ Daftar Isi Materi Tutup โ–ด

Risiko Sandbox Default Docker & Ancaman Container Escape

Docker default pakai runc. Fitur runc guna Linux namespaces dan cgroups. Container berbagi satu kernel host VPS (shared kernel).

Aplikasi web proses unggah berkas atau eksekusi script rentan RCE. Penyerang eksploitasi syscall kernel host (contoh CVE-2019-5736, CVE-2024-21626), penyerang tembus container. Hasil: penyerang kuasai root host VPS.

Perbandingan Isolasi Container

  • runc (Default Docker): Pakai kernel host langsung. Performa cepat. Surface serangan kernel host luas (300+ syscalls).
  • Virtual Machine (QEMU/KVM): Kernel dan hardware virtual penuh. Sangat aman. Konsumsi RAM besar, boot lambat.
  • gVisor (runsc): Intersepsi syscall di user-space. Keamanan setara VM, efisien setara container.

Cara Kerja gVisor (runsc)

gVisor buatan Google. Komponen utama runsc (run Sandbox Container). Tulis pakai bahasa Go. gVisor cegah container panggil syscall langsung ke kernel host.

Komponen gVisor:

  1. Sentry: Kernel virtual di user-space. Tangani syscall aplikasi (memori, proses, file system). Syscall langsung ke host ditolak.
  2. Gofer: Perantara file system. Isolasi I/O, validasi akses berkas sebelum diteruskan ke host.

Exploit RCE cuma rusak kernel virtual Sentry. Kernel asli host VPS tetap aman.

Panduan Install & Konfigurasi gVisor di Docker VPS

Berikut panduan memasang gVisor pada OS Ubuntu 22.04 LTS atau Debian 12 yang sudah terpasang Docker.

Langkah 1: Unduh Binary gVisor (runsc)

Jalankan perintah berikut untuk mengunduh binary runsc dan containerd-shim-runsc-v1 beserta verifikasi checksum SHA512:

(
  set -e
  ARCH=$(uname -m)
  URL=https://storage.googleapis.com/gvisor/releases/release/latest/${ARCH}
  wget ${URL}/runsc ${URL}/runsc.sha512
  wget ${URL}/containerd-shim-runsc-v1 ${URL}/containerd-shim-runsc-v1.sha512
  sha512sum -c runsc.sha512
  sha512sum -c containerd-shim-runsc-v1.sha512
  chmod a+rx runsc containerd-shim-runsc-v1
  sudo mv runsc containerd-shim-runsc-v1 /usr/local/bin/
)

Langkah 2: Konfigurasi Docker Daemon

Buka berkas konfigurasi /etc/docker/daemon.json menggunakan editor teks:

sudo nano /etc/docker/daemon.json

Tambahkan runsc ke dalam daftar runtime Docker:

{
  "runtimes": {
    "runsc": {
      "path": "/usr/local/bin/runsc"
    }
  }
}

Langkah 3: Restart Service Docker

Muat ulang konfigurasi daemon Docker dengan menjalankan perintah systemctl:

sudo systemctl restart docker

Langkah 4: Uji Coba Container gVisor

Jalankan container pengujian dengan menambahkan parameter --runtime=runsc:

docker run --rm --runtime=runsc alpine uname -a

Output menampilkan kernel gVisor (misalnya Linux ... gVisor), bukan versi kernel host VPS Anda.

Kesimpulan

Isolasi gVisor aktif. Expose RCE terisolasi di user-space. Kernel host aman dari container escape.

Terapkan runtime runsc pada container publik atau pengeksekusi kode tidak terpercaya sekarang.

A
Aizu Dev

Tim penulis AizuDemy yang menyajikan tutorial teknologi, cloud, dan pengembangan perangkat lunak dalam Bahasa Indonesia.

๐Ÿ“– Artikel Terkait