QubesOs¶
Qu’est-ce que QubesOs ?¶
QubesOs est un système d’exploitation basé sur de l’hypervision h24. Le principe est de cloisoner les différents types d’utilisation de son PC (personnel, profesionnel, pentest …) pour éviter qu’une compromission d’un environnement entraîne la compromission de l’ensemble de la machine. En bref, ca semblait cool, j’ai voulu tester.
Installation¶
Configuration¶
J’utilise les VM suivantes :
Template Debian 12 Minimal
A Terme, sys-net, sys-firewall, sys-usb (les vm natives)
Template Debian 12 xfce
untrusted
sysadmin (connexion ssh, ansible, …)
personnal (web, discord, nextcloud)
work (rien pour l’instant)
Pentest-HTB (Base sur une kali, pour le pentest.)
Sécurisation¶
Règles de pare-feu¶
SysAdmin :
Ma VM sysadmin n’a besoin que d’acceder aux ssh des différents serveur sur lequels je me connecte. Tout le reste est bloqué (Donc pas de web).
Personnel :
Ma VM personnelle est la plus large. J’ai autorisé tout le web http/https/quic.
Dans l’état, je ne peux pas lancer de communication sur Discord (je dois voir quoi rajouter).
Elle a aussi les accès au Nas pour l’instant. Je les lui enleverai peut-être un jour, mais comme il est souvent (tout le temps) éteins…
Professionnel :
Elle ne sert pas encore. Peut-être que je la supprimerai.
Pentest-* :
Je pense faire une Kali par plateforme de pentest.
Sinon, je ferai peut-être des Kali jetables (DWM).
VPN¶
La do c Je l’ai mis sur la VM network par defaut car j’ai que lui pour l’instant. Je refléchirai a faire d’autre VM plus tard si le besoin s’en fait sentir. Grosso modo, ca donne :
apt install wireguard resolvconf
cd /etc/wireguard
umask 0077
wg genkey | tee private.key | wg pubkey > public.key
cat <<EOF >luclis.conf
[Interface]
PrivateKey = aXXXXXXXQ=
Address = 192.168.3.200/32
DNS = 192.168.3.193
[Peer]
PublicKey = SBd1QYigNkh0as4/cC6Bpw13rdmyLAnOdGkPPISE4Bs=
Endpoint = vpn.luclis.fr:4500
AllowedIPs = 0.0.0.0/0
EOF
nmcli connection import type wireguard file luclis.conf
Utilisation¶
Par defaut, Qubes propose plusieurs style de machine. Au final, ca ne changera pas grand chose pour nous car on est sur une interface xfce, et les applications se lance en mode fenêtre, donc on ne voit pas vraiment l’os qui est en dessous.
Je suis resté sur une Debian pour faire tourner la plupart de mes applications.
Le template Debian¶
Un Qube est sensiblement séparé en deux partie. D’un côté, on a le template, qui est la base de l’OS et qui doit servir poru toutes les machines qui utilise ce dernier. Il convient d’installer uniquement ce qui peut servir a l’ensemble des machines qui utiiliseront le même OS (ex : vim). De l’autre, il y a les VM. Celles-ci seront dérivées du template, et il sera possible d’y rajouter les applications que l’on souhaite.
~~De facon générale, on va se dire que les applications seront installes sur les vm et non pas sur le template (ex : Discord n’a besoin d’être présent uniquement sur la VM personnelle).~~ Spoiler, ca ne fonctionne pas : tu ne peux pas installer de facon permanente sur les VMs.
Peut-être faire deux templates ? Pro/perso ? Comme ca les applications ne sont pas sur l’autre template ?
Template Kali¶
Pour le pentest, j’ai pris le template Kali. Pour cela, depuis la dom0, lancer la commande suivate :
qvm-template --enablerepo qubes-templates-community-testing install kali-core
Une fois installée, il est possible de lancer le template pour le mettre a jour.
#Sur dom0
#sur la disposable
apt update
apt upgrade -y
apt-mark hold qubes*
apt-mark unhold qubes-gui-agent
apt upgrade -y
# Je crois qu'il y a un autre unhold a faire ici. qubes-core-agent ?
apt full-upgrade -y
apt-mark hold qubes* # On les conserve hold au cas où.
Ensuite, il suffit de faire un Qubes de ce dernier.
Minimisation des vms de service¶
Par defaut, les VM net, usb etc dispose des mêmes applications que les VMs classiques. Deja que ca me dérange d’avoir Discord côté Sysadmin et Work, alors sur les services, c’est complètement inutile. J’ai donc cherché a minimiser ces services.
qvm-template install debian-12-minimal
qvm-run --pass-io -u root debian-12-minimal "apt update && apt full-upgrade -y"
qvm-clone debian-12-minimal deb12-min_net
## qvm-clone debian-12-minimal deb-12-min-usb
#qubesctl --show-output state.sls update.qubes-dom0
qvm-run --pass-io -u root deb12-min_net "apt install --no-install-recommends -y firmware-iwlwifi qubes-core-agent-networking qubes-core-agent-network-manager qubes-core-agent-dom0-updates wpasupplicant" #peut-etre aussi firmware-realtek
qvm-shutdown sys-net
qvm-shutdown sys-firewall
## qvm-shutdown sys-usb
qvm-prefs deb12-min_net template_for_dispvms True
qvm-features deb-12-mini appmenus-dispvm 1
qvm-prefs sys-net template deb12-min_net
Lancer une application au démarrage du Qubes¶
Pour lancer automatiquement une application au démarrage de Qubes, il suffit de copier le fichier application present dans /usr/share/applications/ sous /home/user/.config/autostart/ et le tour est joué.
N.B J’ai un doute sur le path de destination, c’est peut-être plutôt /rw/home/user/.config/autostart/ À vérifier.
Passer le theme Debian en sombre¶
Quoi de plus desagreable que son terminal en blanc ? Ce lien permet de configurer deja sa machine en sombre.
Pour une debian-like (Kali), c’est gsettings :
gsettings set org.gnome.desktop.interface gtk-theme 'Adwaita-dark'
gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
gsettings set org.gnome.desktop.interface accent-color 'purple'
Kali avec les tools qui me plaisent¶
apt update && apt upgrade -y
dpkg -l qubes* | cut -d " " -f 2-4 | tee asd
for i in `cat asd` ; do apt-mark hold $i ; done
apt-mark hold qubes-core-agent
apt-mark hold qubes-core-agent-linux
apt full-upgrade --no-install-recommends python3-qubesdb
apt full-upgrade
apt mark unhold qubes-gui-agent
apt reinstall qubes-gui-agent
apt update
apt upgrade
apt-mark unhold python3-qubesdb
apt install python3-qubesdb
apt install python3-qubesdb qubes-core-agent
vi /etc/apt/sources.list.d/qubes-r4.list
apt full-upgrade
for i in `cat asd` ; do apt-mark unhold $i ; done
apt upgrade pkexec
apt install --no-install-recommends obsidian code-oss pipx burpsuite hashcat seclists xfce4-screenshooter bind9-dnsutils git jq nmap chisel nmap openvpn
sudo mkdir -p /usr/share/wordlists
sudo ln -s /usr/share/seclists/ /usr/share/wordlists/