mirror of
https://github.com/QubesOS/qubes-doc.git
synced 2025-01-02 19:21:05 -05:00
1364 lines
58 KiB
ReStructuredText
1364 lines
58 KiB
ReStructuredText
================================
|
||
Frequently asked questions (FAQ)
|
||
================================
|
||
|
||
|
||
General & Security
|
||
------------------
|
||
|
||
|
||
What is Qubes OS?
|
||
^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Qubes OS is a security-focused operating system that allows you to
|
||
organize your digital life into compartments called “qubes.” If one qube
|
||
is compromised, the others remain safe, so a single cyberattack can no
|
||
longer take down your entire digital life in one fell swoop. You can
|
||
think of using Qubes OS as having many different computers on your desk
|
||
for different activities but with the convenience of a single physical
|
||
machine, a single unified desktop environment, and a set of tools for
|
||
using qubes together securely as parts of a unified system.
|
||
|
||
Is Qubes OS free and open-source software?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
There are two distinct senses of the word “free” when it comes to free
|
||
software. The difference in commonly expressed by the phrases “free as
|
||
in beer” and “free as in speech.”
|
||
|
||
The first senses is straightforward. Qubes OS is “free as in beer,”
|
||
meaning that it is provided at no cost (*gratis*), though
|
||
`donations <https://www.qubes-os.org/donate/>`__ are greatly appreciated.
|
||
|
||
The second sense is more complicated. Qubes OS is *mostly* “free as in
|
||
speech,” but not entirely. All the software created by the Qubes OS
|
||
Project *itself* is `free (or “libre”) <https://www.gnu.org/philosophy/free-sw>`__ and
|
||
`open-source <https://opensource.org/docs/definition.html>`__ software
|
||
(`FOSS or FLOSS <https://www.gnu.org/philosophy/floss-and-foss.en.html>`__). This
|
||
means that everyone is allowed to use, copy, study, and change the
|
||
software in accordance with its :doc:`license </developer/code/license>`. It also
|
||
means that the :doc:`source code </developer/code/source-code>` is `publicly available <https://github.com/QubesOS/>`__ so everyone can audit and
|
||
contribute to it.
|
||
|
||
However, since Qubes OS is a security-focused operating system, it
|
||
includes some non-free firmware that was not created by the Qubes OS
|
||
Project (such as CPU microcode), which is necessary in order to protect
|
||
against known security vulnerabilities. Moreover, the
|
||
:doc:`architecture </developer/system/architecture>` of Qubes OS as a meta-operating
|
||
system means that it incorporates other software (including entire
|
||
operating systems) from various upstream projects, some of which may
|
||
include non-free software of their own. In order to make the
|
||
installation process easier for a wide range of users across many
|
||
different devices, standard Qubes :doc:`templates </user/templates/templates>` also
|
||
include some non-free firmware and drivers.
|
||
|
||
Also see: `Will Qubes seek to get certified under the GNU Free System Distribution Guidelines (GNU FSDG)? <#will-qubes-seek-to-get-certified-under-the-gnu-free-system-distribution-guidelines-gnu-fsdg>`__
|
||
|
||
Why is OS security important?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Most people use an operating system like Windows or macOS on their
|
||
desktop and laptop computers. These OSes are popular because they tend
|
||
to be easy to use and usually come pre-installed on the computers people
|
||
buy. However, they present problems when it comes to security. For
|
||
example, you might open an innocent-looking email attachment or website,
|
||
not realizing that you’re actually allowing malware (malicious software)
|
||
to run on your computer. Depending on what kind of malware it is, it
|
||
might do anything from showing you unwanted advertisements to logging
|
||
your keystrokes to taking over your entire computer. This could
|
||
jeopardize all the information stored on or accessed by this computer,
|
||
such as health records, confidential communications, or thoughts written
|
||
in a private journal. Malware can also interfere with the activities you
|
||
perform with your computer. For example, if you use your computer to
|
||
conduct financial transactions, the malware might allow its creator to
|
||
make fraudulent transactions in your name.
|
||
|
||
Aren't antivirus programs and firewalls enough?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Unfortunately, conventional security approaches like antivirus programs
|
||
and (software and/or hardware) firewalls are no longer enough to keep
|
||
out sophisticated attackers. For example, nowadays it’s common for
|
||
malware creators to check to see if their malware is recognized by any
|
||
signature-based antivirus programs. If it’s recognized, they scramble
|
||
their code until it’s no longer recognizable by the antivirus programs,
|
||
then send it out. The best of these programs will subsequently get
|
||
updated once the antivirus programmers discover the new threat, but this
|
||
usually occurs at least a few days after the new attacks start to appear
|
||
in the wild. By then, it’s too late for those who have already been
|
||
compromised. More advanced antivirus software may perform better in this
|
||
regard, but it’s still limited to a detection-based approach. New
|
||
zero-day vulnerabilities are constantly being discovered in the common
|
||
software we all use, such as our web browsers, and no antivirus program
|
||
or firewall can prevent all of these vulnerabilities from being
|
||
exploited.
|
||
|
||
How does Qubes OS provide security?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Qubes takes an approach called **security by compartmentalization**,
|
||
which allows you to compartmentalize the various parts of your digital
|
||
life into securely isolated compartments called *qubes*.
|
||
|
||
This approach allows you to keep the different things you do on your
|
||
computer securely separated from each other in isolated qubes so that
|
||
one qube getting compromised won’t affect the others. For example, you
|
||
might have one qube for visiting untrusted websites and a different qube
|
||
for doing online banking. This way, if your untrusted browsing qube gets
|
||
compromised by a malware-laden website, your online banking activities
|
||
won’t be at risk. Similarly, if you’re concerned about malicious email
|
||
attachments, Qubes can make it so that every attachment gets opened in
|
||
its own single-use :doc:`disposable qube </user/how-to-guides/how-to-use-disposables>`. In this way,
|
||
Qubes allows you to do everything on the same physical computer without
|
||
having to worry about a single successful cyberattack taking down your
|
||
entire digital life in one fell swoop.
|
||
|
||
Moreover, all of these isolated qubes are integrated into a single,
|
||
usable system. Programs are isolated in their own separate qubes, but
|
||
all windows are displayed in a single, unified desktop environment with
|
||
unforgeable colored window borders so that you can easily identify
|
||
windows from different security levels. Common attack vectors like
|
||
network cards and USB controllers are isolated in their own hardware
|
||
qubes while their functionality is preserved through secure
|
||
:doc:`networking </developer/system/networking>`, :doc:`firewalls </user/security-in-qubes/firewall>`, and
|
||
:doc:`USB device management </user/how-to-guides/how-to-use-usb-devices>`. Integrated
|
||
:doc:`file </user/how-to-guides/how-to-copy-and-move-files>` and :doc:`clipboard </user/how-to-guides/how-to-copy-and-paste-text>` copy
|
||
and paste operations make it easy to work across various qubes without
|
||
compromising security. The innovative
|
||
:doc:`Template </developer/system/template-implementation>` system separates software
|
||
installation from software use, allowing qubes to share a root
|
||
filesystem without sacrificing security (and saving disk space, to
|
||
boot). Qubes even allows you to sanitize PDFs and images in a few
|
||
clicks. Those concerned about physical hardware attacks will benefit
|
||
from :doc:`Anti Evil Maid </user/security-in-qubes/anti-evil-maid>`.
|
||
|
||
How does Qubes OS provide privacy?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
There can be no privacy without security, since security vulnerabilities
|
||
allow privacy measures to be circumvented. This makes Qubes
|
||
exceptionally well-suited for implementing effective privacy tools.
|
||
|
||
Users concerned about privacy will appreciate the `integration of Whonix into Qubes <https://www.whonix.org/wiki/Qubes>`__, which makes it easy
|
||
to use `Tor <https://www.torproject.org/>`__ securely. For more
|
||
information about how to use this powerful tool correctly and safely,
|
||
please see `Qubes-Whonix Guides <https://www.whonix.org/wiki/Qubes#Guides>`__.
|
||
|
||
For the privacy policies covering our website, repositories, Qubes OS
|
||
itself, and more, please see :doc:`Privacy Policy </introduction/privacy>`.
|
||
|
||
What about privacy in non-Whonix qubes?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
The main way Qubes OS `provides privacy <#how-does-qubes-os-provide-privacy>`__ is via its `integration with Whonix <https://www.whonix.org/wiki/Qubes>`__. Qubes OS does not
|
||
claim to provide special privacy (as opposed to security) properties in
|
||
non-Whonix qubes. This includes
|
||
:doc:`disposables </user/how-to-guides/how-to-use-disposables>`.
|
||
|
||
Privacy is far more difficult than is commonly understood. In addition
|
||
to the `web browser <https://www.torproject.org/projects/torbrowser/design/>`__,
|
||
there is also `VM fingerprinting <https://www.whonix.org/wiki/VM_Fingerprinting>`__ and
|
||
`advanced deanonymization attacks <https://www.whonix.org/wiki/Advanced_Deanonymization_Attacks>`__
|
||
that most users have never considered (and this is just to mention a few
|
||
examples). The `Whonix Project <https://www.whonix.org/>`__ specializes
|
||
in `protecting against these risks <https://www.whonix.org/wiki/Protocol-Leak-Protection_and_Fingerprinting-Protection>`__.
|
||
|
||
In order to achieve the same results in non-Whonix qubes (including
|
||
disposables), one would have to reinvent Whonix. Such duplication of
|
||
effort makes no sense when Whonix already exists and is already
|
||
integrated into Qubes OS.
|
||
|
||
Therefore, when you need privacy, you should use Whonix qubes. Remember,
|
||
though, that privacy is difficult to achieve and maintain. Whonix is a
|
||
powerful tool, but no tool is perfect. Read the
|
||
`documentation <https://www.whonix.org/wiki/Documentation>`__ thoroughly
|
||
and exercise care when using it.
|
||
|
||
How does Qubes OS compare to using a "live CD" OS?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Booting your computer from a live CD (or DVD) when you need to perform
|
||
sensitive activities can certainly be more secure than simply using your
|
||
main OS, but this method still preserves many of the risks of
|
||
conventional OSes. For example, popular live OSes (such as
|
||
`Tails <https://tails.boum.org/>`__ and other Linux distributions) are
|
||
still **monolithic** in the sense that all software is still running in
|
||
the same OS. This means, once again, that if your session is
|
||
compromised, then all the data and activities performed within that same
|
||
session are also potentially compromised.
|
||
|
||
How does Qubes OS compare to running VMs in a conventional OS?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Not all virtual machine software is equal when it comes to security. You
|
||
may have used or heard of VMs in relation to software like VirtualBox or
|
||
VMware Workstation. These are known as “Type 2” or “hosted” hypervisors.
|
||
(The **hypervisor** is the software, firmware, or hardware that creates
|
||
and runs virtual machines.) These programs are popular because they’re
|
||
designed primarily to be easy to use and run under popular OSes like
|
||
Windows (which is called the **host** OS, since it “hosts” the VMs).
|
||
However, the fact that Type 2 hypervisors run under the host OS means
|
||
that they’re really only as secure as the host OS itself. If the host OS
|
||
is ever compromised, then any VMs it hosts are also effectively
|
||
compromised.
|
||
|
||
By contrast, Qubes uses a “Type 1” or “bare-metal” hypervisor called
|
||
`Xen <https://www.xenproject.org/>`__. Instead of running inside an OS,
|
||
Type 1 hypervisors run directly on the “bare metal” of the hardware.
|
||
This means that an attacker must be capable of subverting the hypervisor
|
||
itself in order to compromise the entire system, which is vastly more
|
||
difficult.
|
||
|
||
Qubes makes it so that multiple VMs running under a Type 1 hypervisor
|
||
can be securely used as an integrated OS. For example, it puts all of
|
||
your application windows on the same desktop with special colored
|
||
borders indicating the trust levels of their respective VMs. It also
|
||
allows for things like secure copy/paste operations between VMs,
|
||
securely copying and transferring files between VMs, and secure
|
||
networking between VMs and the Internet.
|
||
|
||
How does Qubes OS compare to using a separate physical machine?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Using a separate physical computer for sensitive activities can
|
||
certainly be more secure than using one computer with a conventional OS
|
||
for everything, but there are still risks to consider. Briefly, here are
|
||
some of the main pros and cons of this approach relative to Qubes:
|
||
|
||
.. important::
|
||
Pros
|
||
|
||
|
||
- Physical separation doesn’t rely on a hypervisor. (It’s very unlikely
|
||
that an attacker will break out of Qubes’ hypervisor, but if one were
|
||
to manage to do so, one could potentially gain control over the
|
||
entire system.)
|
||
|
||
- Physical separation can be a natural complement to physical security.
|
||
(For example, you might find it natural to lock your secure laptop in
|
||
a safe when you take your unsecure laptop out with you.)
|
||
|
||
|
||
|
||
.. code:: bash
|
||
|
||
<i class="fa fa-times"></i> <strong>Cons</strong>
|
||
|
||
|
||
|
||
- Physical separation can be cumbersome and expensive, since we may
|
||
have to obtain and set up a separate physical machine for each
|
||
security level we need.
|
||
|
||
- There’s generally no secure way to transfer data between physically
|
||
separate computers running conventional OSes. (Qubes has a secure
|
||
inter-VM file transfer system to handle this.)
|
||
|
||
- Physically separate computers running conventional OSes are still
|
||
independently vulnerable to most conventional attacks due to their
|
||
monolithic nature.
|
||
|
||
- Malware which can bridge air gaps has existed for several years now
|
||
and is becoming increasingly common.
|
||
|
||
|
||
|
||
(For more on this topic, please see the paper `Software compartmentalization vs. physical separation <https://invisiblethingslab.com/resources/2014/Software_compartmentalization_vs_physical_separation.pdf>`__.)
|
||
|
||
What is the main concept behind Qubes?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
To build security on the “Security by Compartmentalization (or
|
||
Isolation)” principle.
|
||
|
||
What about other approaches to security?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
The other two popular
|
||
`approaches <https://blog.invisiblethings.org/2008/09/02/three-approaches-to-computer-security.html>`__
|
||
are “Security by Correctness” and “Security by Obscurity.” We don’t
|
||
believe either of these approaches are capable of providing reasonable
|
||
security today, nor do we believe that they will be capable of doing so
|
||
in the foreseeable future.
|
||
|
||
How is Qubes different from other security solutions?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Please see this
|
||
`article <https://blog.invisiblethings.org/2012/09/12/how-is-qubes-os-different-from.html>`__
|
||
for a thorough discussion.
|
||
|
||
Is Qubes just another Linux distribution?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
If you really want to call it a distribution, then it’s more of a “Xen
|
||
distribution” than a Linux one. But Qubes is much more than just Xen
|
||
packaging. It has its own VM management infrastructure, with support for
|
||
template VMs, centralized VM updating, etc. It also has a very unique
|
||
GUI virtualization infrastructure.
|
||
|
||
What about safe languages and formally verified microkernels?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
In short: these are non-realistic solutions today. We discuss this in
|
||
further depth in our `Architecture Specification document </_static/arch-spec-0.3.pdf>`__.
|
||
|
||
Why does Qubes use virtualization?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
We believe that this is currently the only practically viable approach
|
||
to implementing strong isolation while simultaneously providing
|
||
compatibility with existing applications and drivers.
|
||
|
||
Does Qubes use full disk encryption (FDE)?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
By default, Qubes OS uses
|
||
`LUKS <https://en.wikipedia.org/wiki/Linux_Unified_Key_Setup>`__/`dm-crypt <https://en.wikipedia.org/wiki/Dm-crypt>`__
|
||
to encrypt everything except the ``/boot`` partition.
|
||
|
||
What do all these terms mean?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
All Qubes-specific terms are defined in the
|
||
:doc:`glossary </user/reference/glossary>`
|
||
|
||
Does Qubes run every app in a separate VM?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
No! This would not make much sense. Qubes uses lightweight VMs to create
|
||
security qubes (e.g., “work,” “personal,” and “banking,”). A typical
|
||
user would likely need around five qubes. Very paranoid users, or those
|
||
who are high-profile targets, might use a dozen or more qubes.
|
||
|
||
Why does Qubes use Xen instead of KVM or some other hypervisor?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
In short: we believe the Xen architecture allows for the creation of
|
||
more secure systems (i.e. with a much smaller TCB, which translates to a
|
||
smaller attack surface). We discuss this in much greater depth in our
|
||
`Architecture Specification document </_static/arch-spec-0.3.pdf>`__.
|
||
|
||
How is Qubes affected by Xen Security Advisories (XSAs)?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
See the `XSA Tracker <https://www.qubes-os.org/security/xsa/>`__.
|
||
|
||
What about this other/new (micro)kernel/hypervisor?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Whenever starting a discussion about another (micro)kernel or hypervisor
|
||
in relation to Qubes, we strongly suggest including answers to the
|
||
following questions first:
|
||
|
||
1. What kinds of containers does it use for isolation? Processes? PV
|
||
VMs? Fully virtualized VMs (HVMs)? And what underlying h/w technology
|
||
is used (ring0/3, VT-x)?
|
||
|
||
2. Does it require specially written/built applications (e.g. patched
|
||
Firefox)?
|
||
|
||
3. Does it require custom drivers, or can it use Linux/Windows ones?
|
||
|
||
4. Does it support VT-d, and does it allow for the creation of untrusted
|
||
driver domains?
|
||
|
||
5. Does it support S3 sleep?
|
||
|
||
6. Does it work on multiple CPUs/Chipsets?
|
||
|
||
7. What are the performance costs, more or less? (e.g. “XYZ prevents
|
||
concurrent execution of two domains/processes on shared cores of a
|
||
single processor”, etc.)
|
||
|
||
8. Other special features? E.g. eliminates cooperative covert channels
|
||
between VMs?
|
||
|
||
|
||
|
||
Here are the answers for Xen 4.1 (which we use as of 2014-04-28):
|
||
|
||
1. PV and HVM Virtual Machines (ring0/3 for PV domains, VT-x/AMD-v for
|
||
HVMs).
|
||
|
||
2. Runs unmodified usermode apps (binaries).
|
||
|
||
3. Runs unmodified Linux drivers (dom0 and driver domains). PV VMs
|
||
require special written pvdrivers.
|
||
|
||
4. Full VT-d support including untrusted driver domains.
|
||
|
||
5. S3 sleep supported well.
|
||
|
||
6. Works on most modern CPUs/Chipsets.
|
||
|
||
7. Biggest performance hit on disk operations (especially in Qubes when
|
||
complex 2-layer mapping used for Linux qubes). No GPU virtualization.
|
||
|
||
8. Mostly WorksTM :)
|
||
|
||
|
||
|
||
Which virtualization modes do VMs use?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Here is an overview of the VM virtualization modes:
|
||
|
||
.. list-table::
|
||
:widths: 42 42
|
||
:align: center
|
||
:header-rows: 1
|
||
|
||
* - VM type
|
||
- Mode
|
||
* - Default VMs without PCI devices (most VMs)
|
||
- PVH
|
||
* - Default VMs with PCI devices
|
||
- HVM
|
||
* - Stub domains - Default VMs w/o PCI devices
|
||
- N/A
|
||
* - Stub domains - Default VMs w/ PCI devices
|
||
- PV
|
||
* - Stub domains - HVMs
|
||
- PV
|
||
|
||
|
||
|
||
What's so special about Qubes' GUI virtualization?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
We have designed the GUI virtualization subsystem with two primary
|
||
goals: security and performance. Our GUI infrastructure introduces only
|
||
about 2,500 lines of C code (LOC) into the privileged domain (Dom0),
|
||
which is very little, and thus leaves little space for bugs and
|
||
potential attacks. At the same time, due to the smart use of Xen shared
|
||
memory, our GUI implementation is very efficient, so most virtualized
|
||
applications really feel as if they were executed natively.
|
||
|
||
Why passwordless sudo?
|
||
^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Please refer to :doc:`this page </user/security-in-qubes/vm-sudo>`.
|
||
|
||
Why is dom0 so old?
|
||
^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Please see:
|
||
|
||
- :doc:`Installing and updating software in dom0 </user/advanced-topics/how-to-install-software-in-dom0>`
|
||
|
||
- :ref:`Note on dom0 and EOL <user/downloading-installing-upgrading/supported-releases:note on dom0 and eol>`
|
||
|
||
|
||
|
||
Do you recommend coreboot as an alternative to vendor BIOS?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Yes, where it is possible to use it an open source boot firmware ought
|
||
to be more trustable than a closed source implementation.
|
||
`coreboot <https://www.coreboot.org/>`__ is as a result a requirement
|
||
for `Qubes Certified Hardware <https://www.qubes-os.org/news/2016/07/21/new-hw-certification-for-q4/>`__. The number
|
||
of machines coreboot currently supports is limited and the use of some
|
||
vendor supplied blobs is generally still required. Where coreboot does
|
||
support your machine and is not already installed, you will generally
|
||
need additional hardware to flash it. Please see the coreboot website /
|
||
their IRC channel for further information.
|
||
|
||
How should I report documentation issues?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
If you can fix the problem yourself, please see :doc:`how to edit the documentation </developer/general/how-to-edit-the-documentation>`. If not, please
|
||
see :doc:`issue tracking </introduction/issue-tracking>`.
|
||
|
||
Will Qubes seek to get certified under the GNU Free System Distribution Guidelines (GNU FSDG)?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
We wish we could, but the unfortunate reality right now is that an
|
||
operating system *cannot be secure* without a certain minimum number of
|
||
proprietary closed-source “blobs” (e.g., CPU microcode updates). A 100%
|
||
free operating system that excludes all such blobs is vulnerable to
|
||
known exploits and is therefore unsuitable for any use case where
|
||
security matters.
|
||
|
||
Instead, Qubes aims to be as free as possible *without sacrificing security*. All of the code created by the Qubes OS Project itself is
|
||
100% free. However, in order for users to actually run that code
|
||
securely on their hardware, we must pair it with a small number of
|
||
non-free blobs, which disqualifies Qubes, `along with the vast majority of open-source Linux distributions <https://www.gnu.org/distros/common-distros.html>`__, from
|
||
GNU FSDG certification.
|
||
|
||
The `four essential freedoms <https://www.gnu.org/philosophy/free-sw.html>`__ are part of
|
||
the core of our philosophy, but so is security. Together, they inform
|
||
our decisions and motivate our actions. Qubes aims to maximize both
|
||
security and software freedom to the extent that they are compatible in
|
||
the world today.
|
||
|
||
Also see `Is Qubes OS free and open-source software? <#is-qubes-os-free-and-open-source-software>`__ and the Qubes
|
||
OS :doc:`software license </developer/code/license>`.
|
||
|
||
Should I trust this website?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
This website is hosted on `GitHub Pages <https://pages.github.com/>`__
|
||
(`why? <#why-do-you-use-github>`__). Therefore, it is largely outside of
|
||
our control. We don’t consider this a problem, however, since we
|
||
explicitly `distrust the infrastructure <#what-does-it-mean-to-distrust-the-infrastructure>`__.
|
||
For this reason, we don’t think that anyone should place undue trust in
|
||
the live version of this site on the Web. Instead, if you want to obtain
|
||
your own trustworthy copy of this website in a secure way, you should
|
||
clone our `website repo <https://github.com/QubesOS/qubesos.github.io>`__, :ref:`verify the PGP signatures on the commits and/or tags <project-security/verifying-signatures:how to verify signatures on git repository tags and commits>`
|
||
signed by the `doc-signing keys <https://github.com/QubesOS/qubes-secpack/tree/master/keys/doc-signing>`__
|
||
(which indicates that the content has undergone
|
||
:ref:`review <developer/general/how-to-edit-the-documentation:security>`), then either
|
||
`render the site on your local machine <https://github.com/QubesOS/qubesos.github.io/blob/master/README.md#instructions>`__
|
||
or simply read the source, the vast majority of which was :ref:`intentionally written in Markdown so as to be readable as plain text for this very reason <developer/general/documentation-style-guide:markdown conventions>`. We’ve
|
||
gone to special effort to set all of this up so that no one has to trust
|
||
the infrastructure and so that the contents of this website are
|
||
maximally available and accessible.
|
||
|
||
What does it mean to "distrust the infrastructure"?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
A core tenet of the Qubes philosophy is “distrust the infrastructure,”
|
||
where “the infrastructure” refers to things like hosting providers,
|
||
CDNs, DNS services, package repositories, email servers, PGP keyservers,
|
||
etc. As a project, we focus on securing endpoints instead of attempting
|
||
to secure “the middle” (i.e., the infrastructure), since one of our
|
||
primary goals is to free users from being forced to entrust their
|
||
security to unknown third parties. Instead, our aim is for users to be
|
||
required to trust as few entities as possible (ideally, only themselves
|
||
and any known persons whom they voluntarily decide to trust).
|
||
|
||
Users can never fully control all the infrastructure they rely upon, and
|
||
they can never fully trust all the entities who do control it.
|
||
Therefore, we believe the best solution is not to attempt to make the
|
||
infrastructure trustworthy, but instead to concentrate on solutions that
|
||
obviate the need to do so. We believe that many attempts to make the
|
||
infrastructure appear trustworthy actually provide only the illusion of
|
||
security and are ultimately a disservice to real users. Since we don’t
|
||
want to encourage or endorse this, we make our distrust of the
|
||
infrastructure explicit.
|
||
|
||
Also see: `Should I trust this website? <#should-i-trust-this-website>`__
|
||
|
||
Why do you use GitHub?
|
||
^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Three main reasons:
|
||
|
||
1. We `distrust the infrastructure <#what-does-it-mean-to-distrust-the-infrastructure>`__
|
||
including GitHub (though there are aspects we’re still `working on <https://github.com/QubesOS/qubes-issues/issues/3958>`__).
|
||
|
||
2. It’s free (as in beer). We’d have to spend either time or money to
|
||
implement a solution ourselves or pay someone to do so, and we can’t
|
||
spare either one right now.
|
||
|
||
3. It has low admin/overhead requirements, which is very important,
|
||
given how little time we have to spare.
|
||
|
||
|
||
|
||
Also see: `Should I trust this website? <#should-i-trust-this-website>`__
|
||
|
||
Why doesn't this website have security feature X?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Although we caution users against `placing undue trust in this website <#should-i-trust-this-website>`__ because we `distrust the infrastructure <#what-does-it-mean-to-distrust-the-infrastructure>`__,
|
||
we have no objection to enabling website security features when doing so
|
||
is relatively costless and provides some marginal benefit to website
|
||
visitors. So, if feature X isn’t enabled, it’s most likely for one of
|
||
three reasons:
|
||
|
||
1. Our GitHub Pages platform doesn’t support it.
|
||
|
||
2. Our platform supports it, but we’ve decided not to enable it.
|
||
|
||
3. Our platform supports it, but we’re not aware that we can enable it
|
||
or have forgotten to do so.
|
||
|
||
|
||
|
||
If it seems like a feature that we can and should enable, please :doc:`let us know </introduction/issue-tracking>`!
|
||
|
||
Why do the mailing lists require a Google account?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
They don’t. This is a common misconception. The mailing lists have never
|
||
required a Google account. It has always been possible to use them
|
||
purely via email (see the :ref:`mailing lists <introduction/support:mailing lists>`
|
||
section for instructions).
|
||
|
||
A lot of people probably see that the mailing lists use Google Groups
|
||
and just assume that a Google account must be required, but it’s not
|
||
true. Google Groups is simply used for the infrastructure. Of course,
|
||
you *can* use the web interface with a Google account, but there are
|
||
many people in the Qubes community who participate on the mailing lists
|
||
without one.
|
||
|
||
Why do you use Google Groups for the mailing lists?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
For the same general reasons as listed in :ref:`FAQ: Why do you use GitHub? <introduction/faq:why do you use github?>`
|
||
|
||
Users
|
||
-----
|
||
|
||
|
||
Can I watch YouTube videos in qubes?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Absolutely.
|
||
|
||
Can I run applications, like games, which require hardware acceleration?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Those won’t fly. We do not provide GPU virtualization for Qubes. This is
|
||
mostly a security decision, as implementing such a feature would most
|
||
likely introduce a great deal of complexity into the GUI virtualization
|
||
infrastructure. However, Qubes does allow for the use of accelerated
|
||
graphics (e.g. OpenGL) in dom0’s Window Manager, so all the fancy
|
||
desktop effects should still work. App qubes use a software-only
|
||
(CPU-based) implementation of OpenGL, which may be good enough for basic
|
||
games and applications.
|
||
|
||
For further discussion about the potential for GPU passthrough on
|
||
Xen/Qubes, please see the following threads:
|
||
|
||
- `GPU passing to HVM <https://groups.google.com/group/qubes-devel/browse_frm/thread/31f1f2da39978573?scoring=d&q=GPU&>`__
|
||
|
||
- `Clarifications on GPU security <https://groups.google.com/group/qubes-devel/browse_frm/thread/31e2d8a47c8b4474?scoring=d&q=GPU&>`__
|
||
|
||
|
||
|
||
Is Qubes a multi-user system?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
No. Qubes does not pretend to be a multi-user system. Qubes assumes that
|
||
the user who controls Dom0 controls the whole system. It is very
|
||
difficult to **securely** implement multi-user support. See
|
||
`here <https://groups.google.com/group/qubes-devel/msg/899f6f3efc4d9a06>`__
|
||
for details.
|
||
|
||
However, in Qubes 4.x we will be implementing management functionality.
|
||
See `Admin API <https://www.qubes-os.org/news/2017/06/27/qubes-admin-api/>`__ and `Core Stack <https://www.qubes-os.org/news/2017/10/03/core3/>`__ for more details.
|
||
|
||
What are the system requirements for Qubes OS?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
See the :doc:`system requirements </user/hardware/system-requirements>`.
|
||
|
||
Is there a list of hardware that is compatible with Qubes OS?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
See the :doc:`Hardware Compatibility List </user/hardware/hcl>`.
|
||
|
||
Is there any certified hardware for Qubes OS?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
See :doc:`Certified Hardware </user/hardware/certified-hardware>`.
|
||
|
||
How much disk space does each qube require?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Each qube is created from a template and shares the root filesystem with
|
||
this template (in a read-only manner). This means that each qube needs
|
||
only as much disk space as is necessary to store its own private data.
|
||
This also means that it is possible to update the software for several
|
||
qubes simultaneously by running a single update process in the template
|
||
upon which those qubes are based. (These qubes will then have to be
|
||
restarted in order for the update to take effect in them.)
|
||
|
||
How much memory is recommended for Qubes?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Please see the :doc:`system requirements </user/hardware/system-requirements>`.
|
||
|
||
Can I install Qubes on a system without VT-x/AMD-V or VT-d/AMD-Vi/AMD IOMMU?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Please see the :doc:`system requirements </user/hardware/system-requirements>` for
|
||
the latest information. If you are receiving an error message on install
|
||
saying your “hardware lacks the features required to proceed”, check to
|
||
make sure the virtualization options are enabled in your BIOS/UEFI
|
||
configuration. You may be able to install without the required CPU
|
||
features for testing purposes only, but VMs (in particular, sys-net) may
|
||
not function correctly and there will be no security isolation. For more
|
||
information, see :doc:`Qubes-certified hardware </user/hardware/certified-hardware>`.
|
||
|
||
Why is VT-x/AMD-V important?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
By default, Qubes uses Xen’s PVH and HVM virtualization modes, which
|
||
require VT-x/AMD-V. This means that, without VT-x/AMD-V, no VMs will
|
||
start in a default Qubes installation. In addition, if your system lacks
|
||
VT-x/AMD-V, then it also lacks VT-d/AMD-Vi/AMD IOMMU. (See next
|
||
question.)
|
||
|
||
Why is VT-d/AMD-Vi/AMD IOMMU important?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
On a system without VT-d/AMD-Vi/AMD IOMMU, there will be no real
|
||
security benefit to having a separate NetVM, as an attacker could always
|
||
use a simple `DMA attack <#what-is-a-dma-attack>`__ to go from the NetVM
|
||
to Dom0. Nonetheless, all of Qubes’ other security mechanisms, such as
|
||
qube separation, work without VT-d/AMD-Vi/AMD IOMMU. Therefore, a system
|
||
running Qubes without VT-d/AMD-Vi/AMD IOMMU would still be significantly
|
||
more secure than one running Windows, Mac, or Linux.
|
||
|
||
What is a DMA attack?
|
||
^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Direct Memory Access (DMA) is mechanism for PCI devices to access system
|
||
memory (read/write). Without VT-d/AMD-Vi/AMD IOMMU, any PCI device can
|
||
access all the memory, regardless of the VM to which it is assigned (or
|
||
if it is left in dom0). Most PCI devices allow the driver to request an
|
||
arbitrary DMA operation (like “put received network packets at this
|
||
address in memory”, or “get this memory area and send it to the
|
||
network”). So, without VT-d/AMD-Vi/AMD IOMMU, it gives unlimited access
|
||
to the whole system. Now, it is only a matter of knowing where to
|
||
read/write to take over the system, instead of just crashing. But since
|
||
you can read the whole memory, it isn’t that hard.
|
||
|
||
Now, how does this apply to Qubes OS? The above attack requires access
|
||
to a PCI device, which means that it can be performed only from the
|
||
NetVM or USB VM, so someone must first break into one of those VMs. But
|
||
this isn’t that hard, because there is a lot of complex code handling
|
||
network traffic. There is a history of bugs in DHCP clients, DNS
|
||
clients, etc. Most attacks on the NetVM and USB VM (but not all of
|
||
them!) require being somewhat close to the target system, for example,
|
||
being connected to the same Wi-Fi network, or in the case of a USB VM,
|
||
having physical access to a USB port.
|
||
|
||
Can I use AMD-v instead of VT-x?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Yes, and see `this message <https://groups.google.com/group/qubes-devel/msg/6412170cfbcb4cc5>`__.
|
||
|
||
Can I install Qubes in a virtual machine (e.g., on VMware)?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Some users have been able to do this, but it is neither recommended nor
|
||
supported. Qubes should be installed bare-metal. (After all, it uses its
|
||
own bare-metal hypervisor!)
|
||
|
||
How many qubes should I have? What's a good way to organize them?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
:doc:`How to organize your qubes </user/how-to-guides/how-to-organize-your-qubes>` walks
|
||
through several examples of how different types of users can set up
|
||
their Qubes OS system to support their unique use cases.
|
||
|
||
What is a terminal?
|
||
^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
A `terminal emulator <https://en.wikipedia.org/wiki/Terminal_emulator>`__, nowadays
|
||
often referred to as just a *terminal*, is a program which provides a
|
||
text window. Inside that window, a
|
||
`shell <https://en.wikipedia.org/wiki/Shell_(computing)>`__ is typically
|
||
running in it. A shell provides a `command-line interface <https://en.wikipedia.org/wiki/Command-line_interface>`__
|
||
where the user can enter and run
|
||
`commands <https://en.wikipedia.org/wiki/Command_(computing)>`__.
|
||
|
||
See introductions on Wikibooks:
|
||
`here <https://en.wikibooks.org/wiki/Fedora_And_Red_Hat_System_Administration/Shell_Basics>`__,
|
||
`here <https://en.wikibooks.org/wiki/A_Quick_Introduction_to_Unix>`__
|
||
and `here <https://en.wikibooks.org/wiki/Bash_Shell_Scripting>`__.
|
||
|
||
Why does my network adapter not work?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
You may have an adapter (wired, wireless), that is not compatible with
|
||
open-source drivers shipped by Qubes. You may need to install a binary
|
||
blob, which provides drivers, from the linux-firmware package.
|
||
|
||
Open a terminal and run ``sudo dnf install linux-firmware`` in the
|
||
template upon which your NetVM is based. You have to restart the NetVM
|
||
after the template has been shut down.
|
||
|
||
Can I install Qubes OS together with other operating system (dual-boot/multi-boot)?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
You shouldn’t do that, because it poses a security risk for your Qubes
|
||
OS installation. But if you understand the risk and accept it, read
|
||
`documentation on multibooting <https://forum.qubes-os.org/t/18988>`__.
|
||
It begins with an explanation of the risks with such a setup.
|
||
|
||
Which version of Qubes am I running?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
See :ref:`here <developer/releases/version-scheme:check installed version>`.
|
||
|
||
My qubes lost internet access after a template update. What should I do?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
See :ref:`Update Troubleshooting <user/troubleshooting/update-troubleshooting:lost internet access after a template update>`.
|
||
|
||
My keyboard layout settings are not behaving correctly. What should I do?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
See :ref:`Hardware Troubleshooting <user/troubleshooting/hardware-troubleshooting:keyboard layout settings not behaving correctly>`.
|
||
|
||
My dom0 and/or template update stalls when attempting to update via the GUI tool. What should I do?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
This can usually be fixed by updating via the command line.
|
||
|
||
In dom0, open a terminal and run ``sudo qubes-dom0-update``.
|
||
|
||
In your templates, open a terminal and run ``sudo dnf upgrade``.
|
||
|
||
How do I run a Windows HVM in non-seamless mode (i.e., as a single window)?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Enable “debug mode” in the qube’s settings, either by checking the box
|
||
labeled “Run in debug mode” in the Qubes VM Manager qube settings menu
|
||
or by running the ``qvm-prefs`` command.
|
||
|
||
I created a USB VM and assigned USB controllers to it. Now the USB VM won't boot.
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
This is probably because one of the controllers does not support reset.
|
||
See the :ref:`USB Troubleshooting guide <user/troubleshooting/usb-troubleshooting:usb vm does not boot after creating and assigning usb controllers to it>`.
|
||
|
||
I assigned a PCI device to a qube, then unassigned it/shut down the qube. Why isn't the device available in dom0?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
This is an intended feature. A device which was previously assigned to a
|
||
less trusted qube could attack dom0 if it were automatically reassigned
|
||
there. In order to re-enable the device in dom0, either:
|
||
|
||
- Reboot the physical machine.
|
||
|
||
|
||
|
||
or
|
||
|
||
- Go to the sysfs (``/sys/bus/pci``), find the right device, detach it
|
||
from the pciback driver and attach back to the original driver.
|
||
Replace ``<BDF>`` with your device, for example ``00:1c.2``:
|
||
|
||
.. code:: bash
|
||
|
||
echo 0000:<BDF> > /sys/bus/pci/drivers/pciback/unbind
|
||
MODALIAS=`cat /sys/bus/pci/devices/0000:<BDF>/modalias`
|
||
MOD=`modprobe -R $MODALIAS | head -n 1`
|
||
echo 0000:<BDF> > /sys/bus/pci/drivers/$MOD/bind
|
||
|
||
|
||
|
||
|
||
|
||
See also :doc:`here </user/how-to-guides/how-to-use-pci-devices>`.
|
||
|
||
How do I play video files?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
If you’re having trouble playing a video file in a qube, you’re probably
|
||
missing the required codecs. The easiest way to resolve this is to
|
||
install VLC Media Player and use that to play your video files. You can
|
||
do this in multiple different template distros (Fedora, Debian, etc.).
|
||
|
||
For Debian:
|
||
|
||
1. (Recommended) Clone an existing Debian template
|
||
|
||
2. Install VLC in that template:
|
||
|
||
|
||
|
||
.. code:: bash
|
||
|
||
$ sudo apt install vlc
|
||
|
||
|
||
3. Use VLC to play your video files.
|
||
|
||
|
||
|
||
For Fedora:
|
||
|
||
1. (Recommended) Clone an existing Fedora template
|
||
|
||
2. :ref:`Enable the appropriate RPMFusion repos in the desired Fedora template <user/how-to-guides/how-to-install-software:rpmfusion for fedora templates>`.
|
||
|
||
3. Install VLC in that template:
|
||
|
||
|
||
|
||
.. code:: bash
|
||
|
||
$ sudo dnf install vlc
|
||
|
||
|
||
4. Use VLC to play your video files.
|
||
|
||
|
||
|
||
How do I access my external drive?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
The recommended approach is to pass only the specific partition you
|
||
intend to use from :doc:`sys-usb </user/advanced-topics/usb-qubes>` to another qube via
|
||
``qvm-block``. They will show up in the destination qube as
|
||
``/dev/xvd*`` and must be mounted manually. Another approach is to
|
||
attach the entire USB drive to your destination qube. However, this
|
||
could theoretically lead to an attack because it forces the destination
|
||
qube to parse the device’s partition table. If you believe your device
|
||
is safe, you may proceed to attach it.
|
||
|
||
In Qubes 4.0, this is accomplished with the Devices Widget located in
|
||
the tool tray (default top right corner, look for an icon with a yellow
|
||
square). From the top part of the list, click on the drive you want to
|
||
attach, then select the qube to attach it to. Although you can also
|
||
attach the entire USB device to a qube by selecting it from the bottom
|
||
part of the list, in general this approach should not be used because
|
||
you are exposing the target qube to unnecessary additional attack
|
||
surface.
|
||
|
||
Although external media such as external hard drives or flash drives
|
||
plugged in via USB are available in the USB qube, it is not recommended
|
||
to access them directly from inside the USB qube. See :doc:`Block (Storage) Devices </user/how-to-guides/how-to-use-block-storage-devices>` for more
|
||
information.
|
||
|
||
My encrypted drive doesn't appear in Debian qube.
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
This is an issue that affects qubes based on Debian Jessie. The problem
|
||
is fixed in Stretch, and does not affect Fedora-based qubes.
|
||
|
||
A mixed drive with some encrypted partitions appears correctly in
|
||
Nautilus. The encrypted partitions are identified and the user is
|
||
prompted for password on attempting to mount the partition.
|
||
|
||
A fully encrypted drive does not appear in Nautilus.
|
||
|
||
The workaround is to manually decrypt and mount the drive:
|
||
|
||
1. Attach USB device to qube - it should be attached as ``/dev/xvdi`` or
|
||
similar.
|
||
|
||
2. ``sudo cryptsetup open /dev/xvdi bk --type luks``
|
||
|
||
3. ``sudo cryptsetup status /dev/mapper/bk`` (Shows useful status info.)
|
||
|
||
4. ``sudo mount /dev/mapper/bk /mnt``
|
||
|
||
|
||
|
||
The decrypted device is now available at ``/mnt`` - when you have
|
||
finished using it unmount and close the drive.
|
||
|
||
1. ``sudo umount /mnt``
|
||
|
||
2. ``sudo cryptsetup close bk --type luks``
|
||
|
||
3. Remove USB from qube.
|
||
|
||
|
||
|
||
Windows Update is stuck.
|
||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
This has nothing to do with Qubes. `It’s a longstanding Windows bug. <https://superuser.com/questions/951960/windows-7-sp1-windows-update-stuck-checking-for-updates>`__
|
||
|
||
Fullscreen Firefox is frozen.
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Press ``F11`` twice.
|
||
|
||
I have weird graphics glitches like the screen turning partially black.
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
If it seems like the issue described in `this thread <https://github.com/QubesOS/qubes-issues/issues/2399>`__, try
|
||
disabling the window compositor:
|
||
|
||
- Q → System Tools → Window Manager Tweaks → Compositor → uncheck
|
||
“Enable display compositing”
|
||
|
||
|
||
|
||
Please report (via the mailing lists) if you experience this issue, and
|
||
whether disabling the compositor fixes it for you or not.
|
||
|
||
My HVM in Qubes R4.0 won't let me start/install an OS
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
I see a screen popup with SeaBios and 4 lines, last one being
|
||
``Probing EDD (edd=off to disable!... ok``.
|
||
|
||
From a ``dom0`` prompt, enter:
|
||
|
||
.. code:: bash
|
||
|
||
qvm-prefs <HVMname> kernel ""
|
||
|
||
|
||
|
||
When I try to install a template, it says no match is found.
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
See :ref:`VM Troubleshooting <user/troubleshooting/vm-troubleshooting:"no match found" when trying to install a template>`.
|
||
|
||
I keep getting "Failed to synchronize cache for repo" errors when trying to update my Fedora templates
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
See :ref:`Update Troubleshooting <user/troubleshooting/update-troubleshooting:"failed to synchronize cache for repo" errors when updating fedora templates>`.
|
||
|
||
I see a "Failed to start Load Kernel Modules" message on boot
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
The full message looks like:
|
||
|
||
.. code:: bash
|
||
|
||
[FAILED] Failed to start Load Kernel Modules.
|
||
See 'systemctl status systemd-modules-load.service' for details.
|
||
|
||
|
||
|
||
This is cosmetic only, and can safely be ignored.
|
||
|
||
Why is Qubes so slow and how can I make it faster?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
During boot, Qubes starts several virtual machines. Having so many qubes
|
||
running at once inevitably strains the resources of your computer and
|
||
causes slowness. The most effective way to speed up Qubes is to get more
|
||
powerful hardware – a fast CPU, a lot of memory and fast SSDs. Qubes is
|
||
slower when reading from the disk because of the VM overhead, which is
|
||
why we recommend installing it on a fast SSD.
|
||
|
||
Could you please make my preference the default?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
It would be great if Qubes were configured just the way we like it by
|
||
default with all of our favorite programs and settings. Then, we could
|
||
just install Qubes without having to install any programs in it or
|
||
adjust any settings. We might even think that if a particular program or
|
||
setting works so well for *us*, it would work well for *everyone*, so
|
||
we’d actually be doing everyone a favor! The problem is that Qubes has
|
||
:doc:`tens of thousands of different users </introduction/statistics>` with radically
|
||
different needs and purposes. There is no particular configuration that
|
||
will be ideal for everyone (despite how much we might feel that our
|
||
preference would be better for everyone), so the best we can do is to
|
||
put power in the hands of users to configure their Qubes installations
|
||
the way they like (subject to security constraints, of course). For this
|
||
reason, we generally do not grant requests for people’s favorite
|
||
programs to be installed by default or for some setting that obviously
|
||
varies by user preference to be changed so that it matches the
|
||
requester’s preference.
|
||
|
||
See also: `What is Qubes’ attitude toward changing guest distros? <#what-is-qubes-attitude-toward-changing-guest-distros>`__
|
||
|
||
Software installed in a qube is gone after restarting. Why?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Software must be :doc:`installed in the template </user/how-to-guides/how-to-install-software>` on which your qube is based.
|
||
|
||
Developers
|
||
----------
|
||
|
||
|
||
Are there restrictions on the software that the Qubes developers are willing to use?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Yes. In general, the Qubes developers will not use a piece of software
|
||
unless there is an *easy* way to verify both its **integrity** and
|
||
**authenticity**, preferably via PGP signatures (see :doc:`Verifying Signatures </project-security/verifying-signatures>`). Specifically:
|
||
|
||
- If PGP signatures are used, the signing key(s) should have
|
||
well-publicized fingerprint(s) verifiable via multiple independent
|
||
channels or be accessible to the developers through a web of trust.
|
||
|
||
- If the software is security-sensitive and requires communication with
|
||
the outside world, a “split” implementation is highly preferred (for
|
||
examples, see :doc:`Split GPG </user/security-in-qubes/split-gpg>` and `Split Bitcoin <https://forum.qubes-os.org/t/19017>`__).
|
||
|
||
- If the software has dependencies, these should be packaged and
|
||
available in repos for a :ref:`current, Qubes-supported version <user/downloading-installing-upgrading/supported-releases:templates>` of Fedora (preferred)
|
||
or Debian (unless all the insecure dependencies can run in an
|
||
untrusted VM in a “split” implementation).
|
||
|
||
- If the software must be built from source, the source code and any
|
||
builders must be signed. (Practically speaking, the more cumbersome
|
||
and time-consuming it is to build from source, the less likely the
|
||
developers are to use it.)
|
||
|
||
|
||
|
||
Why does dom0 need to be 64-bit?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Since 2013 `Xen has not supported 32-bit x86 architecture <https://wiki.xenproject.org/wiki/Xen_Project_Release_Features>`__
|
||
and Intel VT-d, which Qubes uses to isolate devices and drivers, is
|
||
available on Intel 64-bit processors only.
|
||
|
||
In addition, with features like improved ASLR, it is often more
|
||
difficult to exploit a bug on x64 Linux than x86 Linux. While we
|
||
designed Qubes from the beginning to limit potential attack vectors, we
|
||
still realize that some of the code running in Dom0, e.g. our GUI daemon
|
||
or xen-store daemon, however simple, might contain some bugs. Plus since
|
||
we haven’t implemented a separate storage domain, the disk backends are
|
||
in Dom0 and are “reachable” from the VMs, which adds up to the potential
|
||
attack surface. So, having faced a choice between 32-bit and 64-bit OS
|
||
for Dom0, it was almost a no-brainer. The 64-bit option provides some
|
||
(little perhaps, but some) more protection against some classes of
|
||
attacks, and at the same time does not have any disadvantages except the
|
||
extra requirement of a 64 bit processor. And even though Qubes now
|
||
“needs” a 64 bit processor, it didn’t make sense to run Qubes on a
|
||
system without 3-4GB of memory, and those have 64-bit CPUs anyway.
|
||
|
||
What is the recommended build environment for Qubes OS?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Any rpm-based, 64-bit environment, the preferred OS being Fedora.
|
||
|
||
How do I build Qubes from sources?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
See :doc:`these instructions </developer/building/qubes-builder>`.
|
||
|
||
How do I submit a patch?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
See the :doc:`Qubes Source Code Repositories </developer/code/source-code>` article.
|
||
|
||
What is Qubes' attitude toward changing guest distros?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
In general, we try to respect each distro’s culture, but we reserve the
|
||
right to make modifications that we deem appropriate. See the discussion
|
||
on issue `#1014 <https://github.com/QubesOS/qubes-issues/issues/1014>`__
|
||
for an example.
|
||
|
||
The policy is there mostly to ease maintenance, on several levels:
|
||
|
||
- Less modifications means easier migration to new upstream
|
||
distribution releases.
|
||
|
||
- The upstream documentation matches the distribution running in the
|
||
Qubes VM.
|
||
|
||
- We’re less likely to introduce Qubes-specific issues.
|
||
|
||
- Each officially supported distribution (ideally) should offer the
|
||
same set of Qubes-specific features - a change in one supported
|
||
distribution should be followed also in others, including new future
|
||
distributions.
|
||
|
||
|
||
|
||
Why don't you fix upstream bugs that affect Qubes OS?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
First, a bit of background in case you’re new to the open-source
|
||
software world: There are a huge number of different open-source
|
||
projects that each focus on the software they create and maintain. Some
|
||
focus on specific frameworks, libraries, and background subsystems that
|
||
most users never see. Others focus on specific tools and apps that use
|
||
these frameworks, libraries, and background subsystems. Still others
|
||
focus on combining many different tools and apps. And some, like Qubes
|
||
OS, are entire operating systems that include all kinds of other
|
||
software. When one piece of software uses a different piece of software,
|
||
the piece of software being used is said to be “upstream,” while the
|
||
piece of software using it said to be “downstream.” For example, Qubes
|
||
OS uses the Xen hypervisor, so Xen is upstream relative to Qubes, and
|
||
Qubes is downstream relative to Xen (and likewise for the respective
|
||
project that creates and maintains each piece of software).
|
||
|
||
Many open-source operating systems, including Qubes OS, are transparent
|
||
about the fact that they are “compilations” of upstream software. By
|
||
contrast, proprietary, commercial operating systems like Windows and
|
||
macOS tend to either obscure this fact or avoid using upstream software
|
||
in favor of doing everything in-house, because they have the huge
|
||
workforce and commercial revenue that allows them to do so. If you’re
|
||
accustomed to using a proprietary, commercial operating system, then you
|
||
may need some time to get used to the fact that Qubes OS is a
|
||
compilation of many different pieces of open-source software.
|
||
|
||
Now, let’s get to the original question: Why don’t we fix upstream bugs
|
||
that affect Qubes OS? This question can come up in different ways. For
|
||
example, many people, especially those who aren’t familiar with how
|
||
open-source software development works, wonder why we sometimes close
|
||
:doc:`issues </introduction/issue-tracking>` as “not our bug.” Don’t we care about
|
||
the Qubes users who are affected by these bugs? Are we really so cold
|
||
and heartless?
|
||
|
||
On the contrary, it is precisely because we care so much about Qubes
|
||
users that we do this. It’s important to understand that Qubes OS
|
||
combines different pieces of software from a very large number of
|
||
upstream projects (especially since it includes entire separate OSes
|
||
inside of itself) and that many of these projects have much larger
|
||
workforces and much more funding than we do. They are better equipped to
|
||
fix bugs in their own software. Not only are they the ones who wrote the
|
||
code, they’re also more familiar with how best to integrate any fixes
|
||
into the entire code base for maintainability. Besides, they own the
|
||
code. We can’t force any other project to accept a patch, even if we
|
||
sincerely believe it’s a good bug fix. In some cases, we have to
|
||
maintain our own fork of an upstream project, which just adds to our
|
||
ongoing maintenance burden.
|
||
|
||
In contrast to some of the large upstream projects whose software we
|
||
use, the Qubes OS Project is small, lean, and focused on one goal:
|
||
creating and maintaining a reasonably secure operating system for
|
||
regular desktop users. The Qubes core developers are specialists. They
|
||
are among the best in the world at virtualization security, low-level
|
||
system security, and implementing security-by-compartmentalization at
|
||
the operating-system level. There are many aspects of Qubes OS
|
||
engineering work for which they are uniquely qualified. Recognizing
|
||
this, it only makes sense to focus their time where it will provide the
|
||
greatest benefit, on doing security-related work that only they can do.
|
||
By contrast, it would be a wasteful misallocation of skill and talent
|
||
(to the long-term detriment of Qubes users) to have them fixing bugs
|
||
that are in code they didn’t write, that doesn’t belong to them, that
|
||
(in some cases) belongs to a huge upstream project with ample time and
|
||
resources, and that the upstream project is equally capable of fixing
|
||
(and, in many cases, is *better* suited to fix, as that’s *their* area
|
||
of specialization).
|
||
|
||
Moreover, the question is based on a faulty assumption in the first
|
||
place, because we already *do* in fact fix some upstream bugs that
|
||
affect Qubes OS. For example, the Qubes core developers have made
|
||
significant upstream Xen contributions, particularly in the area of
|
||
security, as that’s where our developers specialize. So, the original
|
||
question should really be rephrased to ask, “Why don’t you fix *every*
|
||
upstream bug that affects Qubes OS?” In light of the foregoing
|
||
explanation, we hope you agree that this would be an unreasonable
|
||
expectation.
|
||
|
||
“Very well,” you might be thinking, “but there’s still an upstream bug
|
||
that affects me! What can I do about it?” Recall what we discussed above
|
||
about how the open-source world works. If there’s a bug in some piece of
|
||
upstream software, then there’s an open-source project responsible for
|
||
creating and maintaining that software. They’re the ones who wrote the
|
||
code and who are best equipped to fix the bug. You should file a bug
|
||
report in *that* project’s issue tracker instead. Not only will you be
|
||
helping all other affected Qubes users, you’ll also be helping *all*
|
||
downstream users of that software!
|
||
|
||
(Note: If you’re wondering about cases in which a bug has already been
|
||
fixed upstream but hasn’t yet arrived in your Qubes OS release, please
|
||
see :ref:`backports <introduction/issue-tracking:backports>`. These are *not*
|
||
cases in which an issue is closed as “not our bug.”)
|
||
|
||
Is the I/O emulation component (QEMU) part of the Trusted Computing Base (TCB)?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
No. Unlike many other virtualization systems, Qubes takes special effort
|
||
to keep QEMU *outside* of the TCB. This has been achieved thanks to the
|
||
careful use of Xen’s stub domain feature. For more details about how we
|
||
improved on Xen’s native stub domain use, see
|
||
`here <https://blog.invisiblethings.org/2012/03/03/windows-support-coming-to-qubes.html>`__.
|
||
|
||
Is Secure Boot supported?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
UEFI Secure Boot is not supported out of the box as UEFI support in Xen
|
||
is very basic. Arguably secure boot reliance on UEFI integrity is not
|
||
the best design. The relevant binaries (shim.efi, xen.efi, kernel /
|
||
initramfs) are not signed by the Qubes Team and secure boot has not been
|
||
tested. Intel TXT (used in :doc:`Anti Evil Maid </user/security-in-qubes/anti-evil-maid>`) at
|
||
least tries to avoid or limit trust in BIOS. See the Heads project
|
||
`[1] <https://trmm.net/Heads>`__ `[2] <https://osresearch.net/>`__ for a
|
||
better-designed non-UEFI-based secure boot scheme with very good support
|
||
for Qubes.
|
||
|
||
What is the canonical way to detect Qubes VM?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Check ``/usr/share/qubes/marker-vm`` file existence. Additionally, its
|
||
last line contains Qubes release version (e.g., ``4.0``). The file was
|
||
introduced after the initial Qubes 4.0 release. If you need to support
|
||
not-fully-updated systems, check for the existence of
|
||
``/usr/bin/qrexec-client-vm``.
|
||
|
||
Is there a way to automate tasks for continuous integration or DevOps?
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
|
||
Yes, Qubes natively supports automation via :doc:`Salt (SaltStack) </user/advanced-topics/salt>`. There is also the unofficial `ansible-qubes toolkit <https://github.com/Rudd-O/ansible-qubes>`__. (**Warning:**
|
||
Since this is an external project that has not been reviewed or endorsed
|
||
by the Qubes team, `allowing it to manage dom0 may be a security risk <https://forum.qubes-os.org/t/19075#dom0-precautions>`__.)
|