-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 Hello,
I am developing some Salt Formulas for Qubes OS. You may find them in the following link: https://github.com/ben-grande/qusal ## Acknowledgments I can't thank enough for everyone that made this possible. To Unman, as I learned to Salt from his Shaker repository and it served as basis and inspiration in many aspects to the project I am presenting today. To Marmarek, for accepting changes that made the work of packagers easier via drop-in configuration files, accepting adding minimal template dependencies and replying to my Qrexec related questions, in the end, making me understand it better. To Demi, for assigning herself to improve qfile-dom0-unpacker. I also want to thank everyone devoted to Qubes OS and Open Source, without your dedication, each new release of Qubes OS would not be possible. I stand on the shoulder of giants. ## Warning Please read the warning in the main readme, at this moment, it is for testing purposes only so I can breaking changes now instead of maintaining legacy latter. Because of this, it is intended to developers only. This also means that I am not providing support at this time, I know some things are broken and some may become broken. ## To whom this is for This project is for everyone that wants to accomplish the following tasks: - - Networking: - Web browsing with CTAP; - File retrieval with rsync and curl; - E-mail with Mutt; - Messaging with Signal; - Firewall with Qubes Firewall, Pi-Hole or VPN. - - Misc storage: - USB with Cryptsetup or Passkey with CTAP; - Multimedia with VLC, MPV, ffmpeg etc; - File sharing with sshfs, rsync, syncthing. - - Admin: - Remote administration with SSH, Remmina and split-ssh-agent; - Remote task execution with Ansible, Docker and Terraform; - Coding with split-gpg2 and split-git and split-ssh-agent. Daily, I use many of these tools, sporadically I use the rest, but most importantly, you don't need to install everything, the formulas are modular. They may depend on other formulas by including SaltFiles, but this is to avoid code duplication. ## Why minimal templates You may ask why minimal templates, well: - - On a low spec system, to run various qubes, this is the only option, as less services running in each qube will result in a better performance; - - Decreases the attack surface of having less packages installed; - - `apt-cacher-ng` qube is provided, plus with `qubes-vm-update`, it is so easy to update the templates. The con is that it will come with higher disk usage than installing everything in the same template. But templates are not supposed to be backed up most of the times as they can be recreated easily with the formulas; - - Installing external repos can be dangerous, this is a major point of separate templates, but not necessary minimal ones; - - Makes it easier to map the dependencies that each functionality requires, instead of having everything installed, you will know what is really necessary. ## Minimize attack surface But the project doesn't stop at minimizing the qubes size by the template, but also try to be portable to different distributions (mostly tested on Debian, some can run on Fedora). In theory, user just want to use the application provided by the qube, but in practice, a distribution can always have a software lagging behind in security and features, or even bugs that break the interaction with major qubes components, such as updates for Dom0. Packages that are installed via external means such as GitHub and are not signed by the developer, but by GitHub Webflow, are warned before installation, so you think before you install it. This can happen for Mirage Firewall and Pi-Hole. The states also remove unnecessary features from qubes that will never use it, such as audiovm for the vault qube, which is more relevant now as the audio qube is not Dom0 anymore and it can be exposed to the external world via Bluetooth for example, or via networking, as some cards might have audio together with networking. NetVM assignment also follows the same procedure, but I tend not to change it if unnecessary. ## Disposables When possible, the qubes are disposables, disp-sys-net, disp-sys-firewall, but you can always use the AppVMs if you prefer. Different disposable templates are provided for distinct functionalities, dvm-reader is for opening files or URLs, while dvm-dev is for testing new software, dvm-qubes-builder for the Qubes Executor, dvm-browser for browsing the internet. ## User configuration The states will never modify user configuration files: - - /rw/config/rc.local - - /rw/config/qubes-firewall-user-script, - - /etc/qubes/policy.d/30-user.policy. The states will however, modify some files in the user home directory, the dotfiles, mostly for functionality, but some can source a local configuration, such as: - - ~/.gitconfig.local - - ~/.vimrc.local - - ~/.profile.local These will never be managed by the project. You can also clone your own dotfiles instead, but be sure to provide the same directory structure. The dotfiles are very important, especially to adjust the XTerm font size and resolution, but also to provide a smoother interaction in the shell as well as some GUI applications. But it can also serve other purposes, such as verifying Git merge automatically, always signing git commit and tags etc. Unfortunately, we don't support user input through Jinja yet to deeply customize the configuration, it may be done in the future, but no promises. ## Qrexec The Qrexec policy is set to `allow` when not meant to be interactive, else defaults to ask. Allow can appear in some cases where the argument can be set to limit the scope of the call. You can always limit the calls that can be made via customizing the user policy, but if you find something that should be more restricted, I'm open to conversation. We could be more restrictive on the default Qubes OS policies, but this is out of scope (as of now). Improving the Qusal RPC input sanitization is in scope for example. ## Testing Done manually, there is no CI/CD, but it would be a great addition in the future. ## Questions If you have more questions, take a look at the docs directory, if your questions haven't been cleared, just reply to this mail. - -- Benjamin Grande -----BEGIN PGP SIGNATURE----- iHUEARYIAB0WIQRklnEdsUUe50UmvUUbcxS/DMyWhwUCZa7HagAKCRAbcxS/DMyW h8otAP9XDNXRnLDPOoDzvT7L48FY7byugcaUyaUuJcin4eQv3wD/fY3haQNWEslx i5cSh/rgADywcwsh75vBJxJ1xhRehgI= =LGlq -----END PGP SIGNATURE----- -- You received this message because you are subscribed to the Google Groups "qubes-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to qubes-devel+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/qubes-devel/Za7HbE049RObSmlc%40i1zmVEev.