# Configuration de mon poste de travail > Le matériel/OS que j'utilise, mon environnement, fichiers de configuration et astuces de workflow. Publié le 2024-04-01 | Mis à jour le 2025-03-23 | Tags: dotfiles, arch, hyprland https://xsec.fr/my-configuration/ --- import Callout from '@shared/components/Callout.astro' import { Steps, Step } from '@/components/ui/steps' ## Ordinateur portable Avant de nommer le modèle, j'aimerais d'abord préciser que j'ai fixé certaines limites concernant le budget et les performances de la machine. J'ai besoin d'un ordinateur portable pour **l'école et les événements** et je veux qu'il soit **aussi puissant que possible** (je pensais à un i7 ou Ryzen 7 et 16GB, ce qui semble bien pour quelques machines virtuelles et du pentesting) pour un budget d'environ **550€**. Donc, j'ai cherché un **ordinateur d'occasion** sur des marketplaces connues afin d'obtenir le meilleur rapport qualité-prix. Idéalement, j'aimerais un **capteur d'empreintes digitales**, un **"cache caméra"** inclus et un modèle **léger** (pour les déplacements). En tant que travailleur IT depuis quelques années maintenant, j'ai remarqué que beaucoup d'entreprises (y compris celles où j'étais) **sont passées de diverses marques aux Lenovo Thinkpads** pour de bonnes raisons comme l'apparence, le ressenti, le rapport performance/prix, le clavier, les fonctionnalités et surtout la stabilité et le bon support. J'ai eu beaucoup de Thinkpads en main et je me sens bien avec. J'en prendrai un personnellement. Le contexte étant posé, après quelques semaines de recherche, j'ai trouvé un qui correspond à mes besoins en parfait état pour environ 500€. Le stockage était d'environ **500GB**, donc j'ai commandé un nouveau nvme de **1TB** en même temps pour 80€ et upgradé la mémoire flash à 32GB pour 40€. Voici le modèle précis que j'ai maintenant : **Lenovo ThinkPad P14s Gen 1 - 14"** Avant | Arrière --- | --- ![Sources des photos : OfficeXpress](/media/linux/my-configuration/laptop.webp) | ![Sans aucun sticker ](/media/linux/my-configuration/laptopb.webp) CPU | RAM | ROM --- | --- | --- Ryzen 7 PRO 4750U (8 cœurs physiques) | 32GB 3200Mhz | 1TB Nvme Samsung EVO 775 Pro Toutes les spécifications peuvent être trouvées [ici](https://www.officexpress.fr/10145925-20y1000qfr-lenovo-thinkpad-p14s-gen-20y1-amd-ryzen-pro-4750u-jusqu-ghz-win-pro-bits-radeon-graphics-ram-256-ssd-tcg-opal-encryption-ips-1920-1080-full-noir-clavier-fran-ais-3540260184357). J'ai pensé aux thinkpad avec **IntelME** __partiellement__ désactivé et **libreboot** , mais minifree.org ne fournit pas de machines récentes, j'étais intéressé par le T440p qu'ils ont (littéralement une brique) et il y a un écart significatif entre l'i7 4ème gen et le Ryzen 7 4ème gen du P14S Gen1. ## Système d'exploitation ![](/media/linux/my-configuration/iusearchbtw.webp) Si vous voulez prendre soin des paquets, configurations et scripts vous-même, Arch est la voie à suivre pour garder le contrôle et surtout **APPRENDRE** en faisant et comprendre comment les paquets et GNU/Linux fonctionnent. Puisque l'OS est vraiment minimal par défaut, alors **"FAITES-LE VOUS-MÊME"**. ArchLinux est une distribution **"Rolling release"** ce qui signifie que les paquets sont mis à jour vers la dernière version quand elle est disponible, donc il n'y a pas de "releases". Il y a aussi le "Arch Wiki", que vous pouvez comparer à la "Sainte bible" des utilisateurs d'arch (et oui, c'est assez ÉNORME). L'**"utilisateur Arch"** est **LE** mec intelligent (C'est ce que les utilisateurs disent, pas moi , beaucoup d'humour). Le **"Arch User Repository"** est un énorme dépôt de paquets fourni par la communauté, il vise à compléter les officiels et permet à tous les développeurs de partager leurs paquets. Gardez à l'esprit que ces paquets sont non officiels. ## Environnement de bureau ![](/media/linux/my-configuration/desktop.webp) J'aime les choses simples, modernes et intelligentes. J'ai découvert **Hyprland** il y a quelques années et j'ai décidé de l'essayer sur cet ordinateur portable. J'ai donc cherché des tutoriels pour voir comment installer et personnaliser cet environnement, puis j'ai suivi cette [vidéo consacrée à Hyprland sur Debian GNU/Linux](https://www.youtube.com/watch?v=Qc4VP9JFh2Y) de la [chaîne Ja.KooLit](https://www.youtube.com/@Ja.KooLit). Cette configuration **m'a époustouflé** : elle fonctionnait directement, elle était rapide, réactive et agréable à regarder. Mais attendez, vous avez dit que vous êtes sur Arch maintenant ! Alors oui, j'ai changé quelques semaines plus tard à cause de l'**insoutenabilité de la release SID de debian**, le fait que certains **paquets de base ne sont pas maintenus** et Ja voudrait **arrêter le support de ses configurations sur debian Trixie** pour le moment. **EDIT**: J'ai changé pour les [dotfiles de ML4W](https://github.com/mylinuxforwork/dotfiles), plus à jour, GUI pour modifier les paramètres hyprland et meilleures intégrations. ::github{repo="mylinuxforwork/dotfiles"} **EDIT**: J'ai changé pour les [dotfiles de end-4](https://github.com/end-4/dots-hyprland), mis à jour plus souvent, j'ai découvert **foot terminal**, meilleures intégrations avec ags et installation transparente : chaque commande est affichée avant d'être exécutée depuis l'installateur. ::github{repo="end-4/dots-hyprland"} ![alt text](/media/linux/my-configuration/example.png) ## Outillage Quand vous voulez un **environnement de pentesting**, vous penserez d'abord à une distribution GNU/Linux "Hacking" comme : Kali, Parrot, BlackArch ou AthenaOS. L'énorme inconvénient de ces distributions est que vous **n'avez pas le contrôle sur les paquets installés, l'implémentation des projets python** (sont-ils installés correctement dans des venv, avec des symlinks pour la commodité ?), **les bloatwares** (paquets installés par défaut que vous n'utiliserez jamais et oui, il y en a beaucoup !), oh, et oui encore **les dépendances python qui peuvent entrer en conflit avec le temps**. Pour conclure, séparer le système d'exploitation des outils utilisés est la voie à suivre. C'est ici qu'**exegol** entre en jeu. Pour ceux qui ne sont pas familiers avec exegol, c'est un projet FOSS français réalisé par Shutdown, Dramelac avec le support de capgemini (Une grande entreprise tech) et Hack The Box principalement. Le but est de **garder l'OS propre en gérant des conteneurs avec un backend docker**. Un wrapper python prend soin de toutes les "choses docker" pour vous. Donc, dans un conteneur vous avez : **tous les outils dont vous avez besoin**, vous pouvez attacher un **vpn** à celui-ci (--vpn config.ovpn), ouvrir un navigateur et des apps avec une GUI, attacher des **périphériques usb**, **bureau distant dans l'environnement du conteneur** (en beta, avec --desktop) et plus (Pour toutes les fonctionnalités regardez [La Doc Exegol](https://exegol.readthedocs.io/en/latest/)). Le tout rendu facile comme démarrer un conteneur : ```sh exegol start test nightly ``` ![](/media/linux/my-configuration/exegolstart.webp) Où `test` est le nom du conteneur et `nightly` l'image docker sur laquelle il est basé. Vous pouvez télécharger les images exegol facilement avec : ```sh exegol install ``` Il vous demandera le nom de l'image que vous voulez installer comme le montre le tableau. ![](/media/linux/my-configuration/exegolinstall.webp) Les tests suivants sont exécutés dans un conteneur basé sur l'image nightly : Consommation au repos | Rustscan avec paramètre -- -A :---: | :---: ![](/media/linux/my-configuration/dockerstatsidle.webp) | ![](/media/linux/my-configuration/dockerstatsrustscan.webp) Vous pouvez suivre les étapes d'installation et obtenir quelques astuces ici : [Aide-Mémoire Exegol](offensive/Exegol_Cheat_Sheet.mdx) ## Avertissement important **Note** : Quand Arch a été installé, j'ai rencontré un problème concernant la disposition du clavier dans l'invite cryptsetup (qui était définie sur US). Il semble que ce soit un vieux problème pour beaucoup d'utilisateurs Arch, voici la solution (en chroot après l'installation ou entrez votre phrase de passe en pensant à la disposition QWERTY) : ```sh vim /etc/vconsole.conf ``` ```sh KEYMAP=fr-latin9 ``` ```sh mkinitcpio -P ``` ## Correctif webcam La webcam intégrée ne fonctionnait pas, j'ai dû installer le firmware manquant : ```sh yay -S upd72020x-fw ``` ### IDE J'utilise vscode et `nvchad` (basé sur neovim) pour naviguer et éditer des fichiers facilement dans les répertoires : ```sh nvim ``` ![nvchad](/media/linux/my-configuration/nvchad.webp) ## Virtualisation J'utilise QEMU/KVM et un script pour lancer et faire du RDP automatiquement dans une machine virtuelle de forensics. Assurez-vous de mettre à jour votre système avec un `sudo pacman -Syu` AVANT d'installer les dépendances : ```sh sudo pacman -S qemu virt-manager virt-viewer dnsmasq vde2 bridge-utils openbsd-netcat ebtables iptables libguestfs ``` Éditez `/etc/libvirt/libvirtd.conf` (Changez les lignes suivantes) : ```sh unix_sock_group = "libvirt" unix_sock_rw_perms = "0770" ``` ```sh sudo usermod -a -G libvirt $(whoami) ``` ```shell newgrp libvirt ``` Source : blog de christitus Et le **script Remote Desktop** : ```sh #!/bin/bash # Merci à Stephan Raabe pour le script if [ -f ~/private/win11-credentials.sh ]; then echo "Le fichier d'identification existe. Utilisation du fichier." source ~/private/win11-credentials.sh else win11user="USER" win11pass="PASS" win11ip="IP" win11name="windows11" echo "## Préparation pour accéder à distance à votre machine virtuelle Windows ##" echo -n "Veuillez entrer le nom de votre machine virtuelle [défaut: $win11name]: " read vmname vmname=${vmname:-$win11name} echo -n "Veuillez entrer l'ip de votre machine virtuelle [défaut: $win11ip]: " read vmip vmip=${vmip:-$win11ip} echo -n "Veuillez entrer votre nom d'utilisateur [défaut: $win11user]: " read user user=${user:-$win11user} echo -n "Veuillez entrer votre mot de passe [défaut: $win11pass]: " read password password=${password:-$win11pass} fi # echo "Bonjour, $vmname, $vmip, $user, $password" tmp=$(virsh --connect qemu:///system list | grep " $vmname " | awk '{ print $3}') if ([ "x$tmp" == "x" ] || [ "x$tmp" != "xrunning" ]); then echo "La machine virtuelle $vmname démarre maintenant... Attente de 30s avant de démarrer xfreerdp." notify-send "La machine virtuelle $vmname démarre maintenant..." "Attente de 30s avant de démarrer xfreerdp." virsh --connect qemu:///system start $vmname sleep 30 else notify-send "La machine virtuelle $vmname est déjà en cours d'exécution." "Lancement de xfreerdp maintenant !" echo "Démarrage de xfreerdp maintenant..." fi if command -v xfreerdp >/dev/null 2>&1; then xfreerdp -grab-keyboard /v:$vmip /size:100% /cert-ignore /u:$user /p:$password /d: /dynamic-resolution /gfx-h264:avc444 +gfx-progressive /f & elif command -v xfreerdp3 >/dev/null 2>&1; then xfreerdp3 -v:$vmip -u:$user -p:$password -d: -dynamic-resolution /cert:ignore /f /gfx:AVC444 & else echo "Commande 'xfreerdp' ou 'xfreerdp3' non trouvée." fi ``` ## Gestion des paquets **Pacman** prend soin des paquets core/extra, **yay** des paquets de l'**AUR**, une fois par mois je nettoie les paquets orphelins et le cache : ```sh sudo pacman -Rns $(pacman -Qtdq) && yay -Scc ``` ## Configuration des snapshots automatiques Il est conseillé d'établir un "plan de reprise après sinistre" pour le système d'exploitation lors de la configuration initiale. Les mises à niveau peuvent parfois entrer en conflit les unes avec les autres ou perturber les paquets système, entraînant des problèmes potentiels de démarrage/connexion. J'ai donc employé timeshift pour créer des snapshots quotidiens, en conservant les trois derniers jours. De plus, j'ai incorporé le paquet AUR timeshift-autosnap pour générer automatiquement un snapshot timeshift lorsque des mises à niveau sont initiées via les hooks pacman. Par la suite, j'ai configuré Grub pour rendre ces snapshots accessibles, permettant un démarrage direct dedans. J'ai suivi ce [tutoriel](https://discovery.endeavouros.com/encrypted-installation/btrfs-with-timeshift-snapshots-on-the-grub-menu/2022/02/). Menu de démarrage Grub | Liste des snapshots :---: | :---: ![](/media/linux/my-configuration/menu.webp) | ![](/media/linux/my-configuration/snapshot.webp)