Introduction
Introduction Statistics Contact Development Disclaimer Help
Title: OpenKuBSD progress report
Author: Solène
Date: 16 June 2023
Tags: openbsd security
Description: In this news I'm sharing my progress into writing the
OpenBSD based compartimentalization tool OpenKuBSD.
# Introduction
Here is a summary of my progress for writing OpenKuBSD. So far, I've
had a few blockers but I've been able to find solutions, more or less
simple and nice, but overall I'm really excited about how the project
is turning out.
OpenKuBSD source code on tildegit.org (current branch == PoC)
As a quick introduction to OpenKuBSD in its current state, it's a
program to install on top of OpenBSD, using mostly base system tools.
* OpenBSD templates can be created and configured
* Kubes (VMs) inherit an OpenBSD template for the disk, except for a
dedicated persistent /home, any changes outside of /home will be reset
on each boot
* Kubes have a nice name like "www.kube" to connect to
* NFS storage per Kube in /shared/ , this allows data to be shared with
the host, which can then move files between Kubes via the shared
directories
* Xephyr based compartimentalization for GUI display. Each program run
has its own Xephyr server.
* Clipboard manipulation tool: a utility for copying the clipboard from
one Xephyr to another one. This is a secure way to share the clipboard
between Kubes without leakage.
* On-demand start and polling for ssh connection, so you don't have to
pre-start a Kube before running a program.
* Executable `/home/openkubsd/rc.local` script at boot time to
customize an environment at kube level rather than template level
* Desktop entry integration: a script is available to create desktop
entries to run program X on Kube Y, directly from the menu
The Xephyr trick was hard to figure and implement correctly.
Originally, I used `ssh -Y` which worked fine, and integrated very well
with the desktop however:
* ssh -Y allows any window to access the X server, meaning any hacked
VM could access all other running programs
* ssh -X is secure, but super bad: slow, can't have a custom layout,
crashes when trying to do access X in some cases. (fun fact, on Fedora,
ForwardX11Trusted seems to be set to Yes by default, so ssh -X does ssh
-Y!)
* Xephyr worked, but running a program in it didn't use the full
display, so a window manager was required. But all the tiling window
managers I used (to automatically use all the screen) couldn't resize
when Xephyr was resized.... except stumpwm!
* Stumpwm custom configuration to quit when it has no more window
displayed. If you exit your programs then stumpwm quits then Xephyr
stops.
# Demo videos
OpenKuBSD: easily running programs from VMs
OpenKuBSD: NFS shares and desktop entries
OpenKuBSD: Xephyr implementation and clipboard helper
# Roadmap
I'm really getting satisfied with the current result. It's still far
from being ready to ship or feature complete, but I think the
foundations are quite cool.
Next steps:
* tighten the network access for each Kube using PF (only NAT + host
access + prevent spoofing)
* allow a Kube to not have NAT (communication would be restricted to
the host only for ssh access), this is the most "no network"
implementation I can achieve.
* allow a Kube to have a NAT from another Kube (to handle a Kube VPN
for a specific list of Kubes)
* figure how to make a Tor VPN Kube
* allow to make disposable Kubes using the Tor VPN Kube network
Mid term steps:
* support Alpine Linux (with features matching what OpenBSD Kubes have)
Long term steps:
* rewrite all OpenKuBSD shell implementation into a daemon/client
model, easier to install, more robust
* define a configuration file format to declare all the infrastructure
* release to wider audience
* open a bug tracker
# Conclusion
The project is still in its beginning, but I made important progress
over the last two weeks, I may reduce the pace here a bit to get
everything stabilized. I started using OpenKuBSD on my own computer,
this helps a lot to refine the workflow and see what feature matter,
and which design is wrong or correct.
I hope you like that project as much as I do.
You are viewing proxied material from dataswamp.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.