Salt Formulas for Qubes OS.
Go to file
2024-01-02 23:09:34 +01:00
.github fix: issue template confused with comments 2023-11-13 17:58:20 +00:00
.reuse fix: missing reuse license information 2024-01-02 23:09:34 +01:00
LICENSES refactor: initial commit 2023-11-13 14:33:28 +00:00
minion.d refactor: initial commit 2023-11-13 14:33:28 +00:00
rpm_spec/template refactor: initial commit 2023-11-13 14:33:28 +00:00
salt fix: signal state uses idempotent state 2024-01-02 23:03:10 +01:00
scripts refactor: initial commit 2023-11-13 14:33:28 +00:00
.editorconfig refactor: initial commit 2023-11-13 14:33:28 +00:00
.gitignore refactor: initial commit 2023-11-13 14:33:28 +00:00
.gitlint refactor: initial commit 2023-11-13 14:33:28 +00:00
.gitmodules refactor: initial commit 2023-11-13 14:33:28 +00:00
.pre-commit-config.yaml refactor: initial commit 2023-11-13 14:33:28 +00:00
.salt-lint refactor: initial commit 2023-11-13 14:33:28 +00:00
.yamllint refactor: initial commit 2023-11-13 14:33:28 +00:00
BOOTSTRAP.md doc: inform how to bootstrap a new system 2024-01-02 23:04:36 +01:00
CONTRIBUTING.md refactor: initial commit 2023-11-13 14:33:28 +00:00
README.md fix: update minimum Qubes version to 4.2 2023-12-27 20:13:33 +01:00

qusal

Salt Formulas for Qubes OS.

Warning

Warning: Not ready for production, development only. Breaking changes can and will be introduced in the meantime. You've been warned.

The following projects are incomplete (not a complete list):

  • sys-net: can't be provisioned automatically due to the minimal template
  • sys-firewall: can't be provisioned automatically due to the minimal template
  • sys-audio: not working on R4.1, waiting for R4.2
  • sys-wireguard: unfinished firewall port to nft, waiting for R4.2
  • sys-syncthing: broken firewall script functionality with disposable netvm

Other projects might also have drastic changes, the above are simply not ready at all.

Table of Contents

Description

Qusal providers a Free and Open Source solution to customizing various tasks in Qubes OS, from switching PCI handlers to be disposables or app qubes, installing different pieces of software on dedicated minimal templates for split agent operations for separating the key store from the client.

Each project is in a separate directory, but they may interact with other projects.

If you want to edit the access control for any service, such as resolution to allow, ask, deny or the intended target, you should always use the Qrexec policy at /etc/qubes/policy.d/30-user.policy, as this file will take precedence over the packaged policy.

Design

Every project creates its own template, client and server (when necessary) with only the required packages and configuration. You don't need to use a separate template for everything, but if you want to do that, you will have adjust the target of the qubesctl call or write Salt Top files.

Qubes global settings (qubes-prefs) that will be managed:

  • clockvm: disp-sys-net, sys-net
  • default_dispvm: reader
  • default_netvm: sys-pihole, sys-firewall or disp-sys-firewall
  • management_dispvm: dvm-mgmt
  • updatevm: sys-pihole, sys-firewall or disp-sys-firewall

To be implemented:

  • default_audiovm: sys-audio
  • default_guivm: sys-gui

Prerequisites

You current setup needs to fulfill the following requisites:

  • Qubes OS R4.2
  • Internet connection

Installation

DomU

  1. Install git in the downloader qube, if it is an AppVM, install it in the TemplateVM.

  2. Clone this repository in an app qube:

git clone --recurse-submodules https://github.com/ben-grande/qusal.git

If you made a fork, before cloning it, fork the submodule(s). Clone your own project instead of this one, the submodules will be from your fork also.

  1. Verify the commit or tag signature.

Dom0

Before copying anything to Dom0, read Qubes OS warning about consequences of this procedure.

  1. Copy this repository from some qube to Dom0 from Dom0:
mkdir -p ~/QubesIncoming/<QUBE>
qvm-run -p <QUBE> tar -cC </PATH/TO> qusal | tar -xvC ~/QubesIncoming/<QUBE> qusal
## Example: mkdir -p ~/QubesIncoming/dev
## Example: qvm-run -p dev tar -cC /home/user qusal | tar -xvC ~/QubesIncoming/dev qusal
  1. Copy the project to the Salt directories:
cd ~/QubesIncoming/<QUBE>/qusal
./scripts/setup.sh

Usage

Qusal is now installed. Please read the README.md of each project for further information on how to install the desired package.

The intended behavior is to enforce the state of qubes and their services. If you modify the qubes and their services and apply the state again, there is a good chance your choices will be overwritten. To enforce your state, write a SaltFile to specify the desired state, do not do it manually, we are past that.

The only Qrexec policy file you should change is /etc/qubes/policy.d/30-user.policy as this file will take precedence over the ones provided by this project. If you modify the policies provided by Qusal, your changes will be overwritten next time you install/upgrade the packages.

Please note that when you allow more Qrexec calls than the default shipped by Qubes OS, you are increasing the attack surface of the target, normally valuable qube that can hold secrets or pristine data. A compromise of the client qube can extend to the server, therefore configure the installation according to your threat model.

Contribute

There are several ways to contribute to this project. Spread the word, help on user support, review opened issues, fix typos, implement new features, donations.

Please take a look at contribution guidelines before contributing code or to the documentation, it holds important information on how the project is structured, why some design decisions were made and what can be improved.

Donate

This project can only survive through donations. If you like what we have done, please consider donating. Contact us for donation address.

This project depends on Qubes OS, consider donating to upstream.

Support

Free Support

Free support will be provided on a best effort basis. If you want something, open an issue and patiently wait for a reply, the project is best developed in the open so anyone can search for past issues.

Paid Support

Paid consultation services can be provided. Request a quote from us.

Contact

You must not contact for free support.

Credits

I stand on the shoulders of giants. This would not be possible without people contributing to Qubes OS SaltStack formulas. Honorable mention(s): unman.

This project is REUSE-compliant. It is difficult to list all licenses and copyrights and keep them up-to-date here.

The easiest way to get the copyright and license of the project with the reuse tool:

reuse spdx

You can also check these information manually by looking in the file header, a companion .license file or in .reuse/dep5.

All licenses are present in the LICENSES directory.

Note that submodules have their own licenses and copyrights statements, please check each one individually using the same methods described above for a full statement.