Skip to content

Shell sandboxing using QEMU and virtiofsd. Just enter qsandbox run to open your current working dir in a temporary QEMU vm.

Notifications You must be signed in to change notification settings

mawalu/qsandbox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

qemu-sandbox

PoC shell sandboxing using QEMU and virtiofsd. Simply enter qsandbox run to open your current working dir in a temporary QEMU vm.

Installation

Clone the repo and link qsandbox somewhere in your path. The script currently expects the image and ssh folder next to its location on disk.

Setup

You'll need a few things for the script to work:

  • A ssh key pair in ssh/qemu_ssh & ssh/qemu_ssh.pub. You can link your default key pair or use the chance to generate one without a passphrase.
  • image/image.qcow2, image/vmlinuz-linux, image/initramfs-linux-custom.img. The build.sh script can build these based on arch

These requirements are currently hard coded but should be configurable in the future.

Usage

Usage:
       qsandbox run [dir]  - start sandbox and mount current working dir
       qsandbox list       - list running sandboxes
       qsandbox enter      - open ssh connection to a sandbox
       qsandbox qemu       - start the qemu process for a new sandbox, used by run

qsandbox run

Starts a new vm using systemd-run and qsandbox qemu, mounts the current working dir or the specified directory and opens an ssh session.

qsandbox list

Lists all running sandboxes and their ssh ports.

qsandbox enter

A wrapper around ssh. Takes port as only argument but defaults to 5555.

qsandbox qemu

Starts the actual sandbox.

Accessing the sandbox

By default, QEMU exposes two ports for each sandbox. An ssh port (starting at 5555) and an "app port" that can be used by some app in the vm (starting at 8000). Ports should be configurable in the future.

Tips for custom images

Mount the default share automatically:

echo -e "share.1\t/mnt\tvirtiofs\trw,_netdev\t0\t0" >> /etc/fstab

Disable auth on the QEMU serial console:

mkdir -p /etc/systemd/system/serial-getty@ttyS0.service.d
echo -e "[Service]\nExecStart=\nExecStart=-/usr/bin/agetty --autologin root -s %I 115200,38400,9600 vt102" > /etc/systemd/system/serial-getty@ttyS0.service.d/autologin.conf

License

MIT

About

Shell sandboxing using QEMU and virtiofsd. Just enter qsandbox run to open your current working dir in a temporary QEMU vm.

Topics

Resources

Stars

Watchers

Forks