Hardening & Automatisation de postes Linux — Preseed + Ansible

2 min read Page Views

Contexte

En stage, ma mission : automatiser le déploiement de postes Linux (postes utilisateurs et postes de pentest) — installation, sécurisation et configuration, sans intervention manuelle.

Le problème

Une installation manuelle de poste = temps perdu, configuration non reproductible, et risque d’incohérences de sécurité entre les machines (services inutiles actifs, outils mal isolés, pas de chiffrement par défaut).

Ce que j’ai mis en place

  • Installation automatisée de Debian via fichier Preseed (zéro clic, zéro saisie manuelle)
  • Playbooks Ansible pour le déploiement des applications de base (VSCode, Thunderbird, Bitwarden, USBGuard…)
  • Chiffrement du disque automatisé (VeraCrypt) via script Bash
  • Environnement pentest dédié : déploiement automatisé de Go + outils offensifs (ffuf, amass, subfinder, gowitness, dnsx, gau…), outils Python isolés en venv (Bypass URL Parser, Droopescan), SecLists intégré
  • Documentation complète des procédures pour rendre le déploiement reproductible par toute l’équipe

Résultat

Un poste — travail ou pentest — entièrement provisionné, durci et prêt à l’emploi en une seule exécution de playbook, sans configuration manuelle ni risque d’oubli de sécurité.

Stack : Debian, Preseed, Ansible, Bash, VeraCrypt, USBGuard, Go, Python (venv)

Rapport explicatif complet

Exemplde de playbook réalisé

---
- name: Install basic apps
  hosts: all
  become: true

  tasks:
    - name: Install base utilities
      apt:
        name:
          - curl
          - wget
          - gnupg
          - ca-certificates
          - git
          - thunderbird
          - usbguard
        state: present
        update_cache: yes

    - name: Ensure keyrings directory exists
      file:
        path: /usr/share/keyrings
        state: directory
        mode: '0755'

    
    - name: Add Microsoft GPG key
      shell: |
        curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | \
        gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
      args:
        creates: /usr/share/keyrings/microsoft-prod.gpg

    - name: Add VS Code repository
      ansible.builtin.apt_repository:
        repo: >-
          deb [arch=amd64,arm64,armhf signed-by=/usr/share/keyrings/microsoft-prod.gpg]
          https://packages.microsoft.com/repos/code stable main
        state: present
        filename: vscode
        update_cache: yes

    
    - name: Add Element Nightly GPG key
      get_url:
        url: https://packages.element.io/debian/element-io-archive-keyring.gpg
        dest: /usr/share/keyrings/element-io-archive-keyring.gpg
        mode: '0644'

    - name: Add Element Nightly repository
      ansible.builtin.apt_repository:
        repo: deb [signed-by=/usr/share/keyrings/element-io-archive-keyring.gpg] https://packages.element.io/debian/ default main
        state: present
        filename: element-nightly
        update_cache: yes

    - name: Install main applications
      apt:
        name:
          - code
          - element-nightly
        state: present
        update_cache: yes