Introduction
Introduction Statistics Contact Development Disclaimer Help
Title: Introduction to Qubes OS when you do not know what it is
Author: Solène
Date: 03 August 2025
Tags: qubes security
Description: In this article, you will learn about major features of
the Qubes OS operating system and what makes it unique.
# Introduction
Qubes OS can appear as something weird and hard to figure for people
that never used it. By this article, I would like to help other
understanding what it is, and when it is useful.
Qubes OS official project page
Two years ago, I wrote something that was mostly a list of Qubes OS
features, but this was not really helping readers to understand what is
Qubes OS except it does XYZ stuff.
While Qubes OS is often tagged as a security operating system, it only
offers a canvas to handling compartmentalized systems to work as a
whole.
Qubes OS gives its user the ability to do cyber risk management the way
they want, which is unique. A quick word about it if you are not
familiar with risk management: for instance, when running software at
different level, you should ask "can I trust this?", can you trust the
packager? The signing key? The original developer? The transitive
dependencies involved? It is not possible to entirely trust the whole
chain, so you might want to take actions like handling sensitive data
only when disconnected. Or you might want to ensure that if your web
browser is compromised, the data leak and damage will be reduced to a
minimum. This can go pretty far and is complementary to in-depth
defense or security hardening of operating systems.
2023-06-17 Why one would use Qubes OS?
In the article, I will pass on some features that I do not think are
interesting for introducing Qubes OS to people or that could be too
confusing, so no need to tell me I forgot to talk about XYZ feature :-)
# Meta operating system
I like to call Qubes OS a meta operating system, because it is not a
Linux / BSD / Windows based OS: its core is Xen (some kind of
virtualization enabled kernel). Not only it's Xen based, but by design
it is meant to run virtual machines, hence the name "meta operating
system" which is an OS meant to run many OSes make sense to me.
Qubes OS comes with a few virtual machines templates that are managed
by the development team:
* debian
* fedora
* whonix (debian based distribution hardened for privacy)
There are also community templates for arch linux, gentoo, alpine,
kali, kicksecure and certainly other you can find within the community.
Templates are not just templates, they are a ready to work,
one-click/command install systems that integrate well within Qubes OS.
It is time to explain how virtual machines interact together, as it is
what makes Qubes OS great compared to any Linux system running KVM.
A virtual machine is named a "qube", it is a set of information and
integration (template, firewall rules, resources, services, icons,
...).
# Virtual machines synergy and integration
The host system which has some kind of "admin" powers with regard to
virtualization is named dom0 in Xen jargon. On Qubes OS, dom0 is a
Fedora system (using a Xen kernel) with very few things installed, no
networking and no USB access. Those two devices classes are assigned
to two qubes, respectively named "sys-net" and "sys"usb". It is so to
reduce the surface attack of dom0.
When running a graphical program within a qube, it will show a
dedicated window in dom0 window manager, there are no big windows for
each virtual machine, so running programs feels like a unified
experience. The seamless windows feature works through a specific
graphics driver within the qube, official templates support it and
there is a Windows driver for it too.
Each qube has its own X11 server running, its own clipboard, kernel and
memory. There are features to copy the clipboard of one qube, and
transfer it to the clipboard of another qube. This can be configured
to prevent clipboards to be used where you should not. This is rather
practical if you store all your passwords in a qube, and you want to
copy/paste them.
There are also file copy capabilities between qubes, which goes through
Xen channels (some interconnection between Xen virtual machines
allowing to transfer data), so no network is involved for data
transfer. Data copy can also be configured, like one qube may be able
to receive files from any, but never allow file to be transferred out.
In operations involving RPC features like file copy, a GUI in dom0 is
shown to ask confirmation by the user (with a tiny delay to prevent
hitting Enter before being able to understand what was going on).
As mentioned above, USB devices are assigned to a qube named "sys-usb",
it provides a program to pass a device to a given qube (still through
Xen channels), so it is easy to dispatch devices where you need them.
# Networking
Qubes OS offer a tree like networking with sys-net (holding the
hardware networking devices) at the root and a sys-firewall qube below,
from there, you can attach qubes to sys-firewall to get network.
Firewall rules can be configured per qube, and will be applied on the
qube providing network to the one configured, this prevents the qube
from removing its own rules because it is done at a level higher in the
tree.
A tree like networking system also allow running multiple VPN in
parallel, and assign qubes to each VPNs as you need. In my case, when
I work for multiple clients they all have their own VPN, so I dedicate
them a qube connecting to their VPN, then I attach qubes I use to work
for this client to the according VPN. With the firewall rule set on
the VPN qube to prevent any connection except to the endpoint, I have
the guarantee that all traffic of that client work will go through
their VPN.
It is also possible to not use any network in a qube, so it is offline
and unable to connect to network.
Qubes OS come out of the box (except if you uncheck the box) with a
qube encapsulating all traffic network through Tor network
(incompatible traffic like UDP is discarded).
# Templates (in Qubes OS jargon)
I talked about templates earlier, in the sense of "ready to be
installed and used", but a "Template VM" in Qubes OS has a special
meaning. In order to make things manageable when you have a few dozen
qubes, like handling updates or installing software, Qubes OS
introduced Templates VMs.
A Template VM is a qube that you almost never use, except when you need
to install a software or make a system change within it. Qubes OS
updater will also make sure, from time to time, that installed packages
are up-to-date.
So, what are them if there are not used? They are templates for a type
of qubes named "AppVM". An AppVM is what you work the most with. It
is an instance of the template it is configured to use, always reset
from pristine state when starting, with a few directories persistent
across reboot for this AppVM. The directories are all in `/rw/` and
symlinked where useful: `/home` and `/usr/local/` by default. You can
have a single Template VM of Debian 13 and a dozen AppVM with each
their own data in it, if you want to install "vim", you do it in the
template and then all AppVM using Debian 13 Template VM will have "vim"
installed (after a reboot after the change). Note that is also work for
emacs :)
With this mechanism, it is easy to switch an AppVM from a Linux
distribution to another, just switch the qube template to use Fedora
instead of Debian, reboot, done. This is also useful when switching to
a new major release of the distribution in the template: Debian 13 is
bugged? Let's switch back to Debian 12 until it is fixed and continue
working (do not forget writing a bug report to Debian).
# Disposables templates
You learned about Templates VM and how a AppVM inherits all the
template, reset in fresh state every time. What about an AppVM that
could be run from its pristine state the same way? They did it, it is
called a disposable qube.
Basically, a disposable qube is a temporary copy of an AppVM with all
its storage discarded on shutdown. It is the default for the sys-usb
qube handling USB, if it gets infected by a device, it will be reset
from a fresh state next boot.
Disposables have many use case:
* running a command on non-trusted file, to view or try to convert it
to something more trustable (a PDF into BMP?)
* running a known to work system for a specific task, and be sure it
will work exactly the same every time, like when using a printer
* as a playground to try stuff in an environment identical to another
# Automatic snapshot
Last but not least, a pretty nice but hidden feature is the ability to
revert the storage of a qube to a previous state.
Qubes OS documentation: volume backup and revert
qubes are using virtual storage that can stack multiple changes, from a
base image with different layers of changes over time stacked on top of
it. Once the number of revisions to keep is reached, the oldest layer
above the base image is merged. This is a simple mechanism that allows
to revert to any given checkpoint between the base image and the last
checkpoint.
Did you delete important files, and restoring a backup is way too much
effort? Revert the last volume. Did a package update break an
important software in a template? Revert the last volume.
Obviously, it comes as an extra storage cost, deleted files are only
freed from the storage once they do not exist in a checkpoint.
# Downsides of running Qubes OS
Qubes OS has some drawbacks:
* it is slower than running a vanilla system, because all
virtualization involved as a cost, most notably all 3D rendering is
done on CPU within qubes, which is terrible for eye candy effects or
video decoding. It is possible, with a lot of efforts, to assign
second GPU when you have one, to a single qube at a time, to use it,
but as the sentence already long enough is telling out loud, it is not
practical.
* it requires effort to get into as it is different from your usual
operating system, you will need to learn how to use it (this sounds
rather logical when using a tool)
* hardware compatibility is a bit limited due Xen kernel, there is
compatibility list curated by the community
Qubes OS hardware compatibility list
# Conclusion
I tried to give a simple overview of major Qubes OS features. The goal
was not to make you reader an expert or be aware of every single
feature, but to allow you to understand what Qubes OS can offer.
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.