Logo
Overview
Configuration de mon poste de travail

Configuration de mon poste de travail

1 avril 2024
8 min de lecture
Disponible en :

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”

AvantArrière
Sources des photos : OfficeXpressSans aucun sticker 😉
CPURAMROM
Ryzen 7 PRO 4750U (8 cœurs physiques)32GB 3200Mhz1TB Nvme Samsung EVO 775 Pro

Toutes les spécifications peuvent être trouvées ici.

Note

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

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

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, donc j’ai cherché des tutoriels sur youtube pour voir comment les gens ont réussi à l’installer, le personnaliser et les résultats. Je suis tombé sur la chaîne youtube de Ja Kool.it et j’ai suivi la vidéo “My Hyprland Dots v2 on Debian 13 Linux minimal using netinstaller and Debian-Hyprland install script” vidéo. Cette config m’a époustouflé, elle fonctionnait directement, elle était rapide, réactive et jolie à 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, plus à jour, GUI pour modifier les paramètres hyprland et meilleures intégrations.

mylinuxforwork
/
dotfiles
Waiting for api.github.com...
00K
0K
0K
Waiting...

EDIT: J’ai changé pour les dotfiles de end-4, 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.

end-4
/
dots-hyprland
Waiting for api.github.com...
00K
0K
0K
Waiting...

alt text

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).

Le tout rendu facile comme démarrer un conteneur :

Terminal window
exegol start test nightly

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 :

Terminal window
exegol install

Il vous demandera le nom de l’image que vous voulez installer comme le montre le tableau.

Les tests suivants sont exécutés dans un conteneur basé sur l’image nightly :

Consommation au reposRustscan avec paramètre — -A

Vous pouvez suivre les étapes d’installation et obtenir quelques astuces ici :

Aide-Mémoire Exegol

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) :

  1. Éditez le fichier vconsole.conf :

    Terminal window
    vim /etc/vconsole.conf
  2. Définissez le mappage du clavier sur fr :

    Terminal window
    KEYMAP=fr-latin9
  3. Et ensuite reconstruisez l’image (nécessite des privilèges root) :

    Terminal window
    mkinitcpio -P

Correctif webcam

La webcam intégrée ne fonctionnait pas, j’ai dû installer le firmware manquant :

Terminal window
yay -S upd72020x-fw

IDE

J’utilise vscode et nvchad (basé sur neovim) pour naviguer et éditer des fichiers facilement dans les répertoires :

Terminal window
nvim

nvchad

Virtualisation

J’utilise QEMU/KVM et un script pour lancer et faire du RDP automatiquement dans une machine virtuelle de forensics.

  1. Installation QEMU : Assurez-vous de mettre à jour votre système avec un sudo pacman -Syu AVANT d’installer les dépendances :

    Terminal window
    sudo pacman -S qemu virt-manager virt-viewer dnsmasq vde2 bridge-utils openbsd-netcat ebtables iptables libguestfs
  2. Éditez /etc/libvirt/libvirtd.conf (Changez les lignes suivantes) :

    Terminal window
    unix_sock_group = "libvirt"
    unix_sock_rw_perms = "0770"
  3. Puis ajoutez votre utilisateur :

    Terminal window
    sudo usermod -a -G libvirt $(whoami)
  4. Et créez un groupe :

    Terminal window
    newgrp libvirt

    Source : blog de christitus

Et le script Remote Desktop :

#!/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 :

Terminal window
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.

Menu de démarrage GrubListe des snapshots