Reconversion cybersécurité

Quelles bases techniques avant de se lancer en cybersécurité ?

Les prérequis techniques à maîtriser avant une reconversion cybersécurité : Linux, réseau, Python, virtualisation, git. Niveau attendu et ressources.

Naim Aouaichia
13 min de lecture
  • Prérequis
  • Fondamentaux
  • Linux
  • Python
  • Réseau
  • Virtualisation
  • Git

Le socle technique minimal avant une formation cybersécurité tient en cinq briques cumulatives : Linux en ligne de commande quotidienne, protocoles réseau (TCP/IP, DNS, HTTP/HTTPS, TLS), programmation Python et Bash, git opérationnel, et virtualisation locale. Un candidat sans ces acquis démarre une formation avec 4 à 8 semaines de retard quasi irrattrapable. L'acquisition complète prend 1 à 6 mois selon le profil de départ, à raison de 8 à 12 heures hebdomadaires sur des ressources gratuites (OverTheWire, TryHackMe Pre Security, CS50, documentations officielles). Cet article détaille le niveau réellement attendu au premier jour d'une formation sérieuse, les commandes et concepts à maîtriser, les ressources pour les acquérir, et un auto-test structuré pour vérifier son propre niveau avant signature.

1. Les cinq briques du socle technique

Les cinq briques sont cumulatives, pas alternatives. Un candidat qui maîtrise Linux et le réseau mais pas Python bloquera sur les rooms pentest. Un profil qui code en Python sans Linux sera inutilisable sur une machine HackTheBox.

BriqueObjectif fonctionnelNiveau minimal attenduDurée d'acquisition
Linux CLINavigation, administration basique, lecture de logsAutomatismes sur 15-20 commandes4-12 semaines
RéseauComprendre le trajet d'un paquetOSI, TCP/IP, DNS, HTTPS, TLS3-6 semaines
Python + BashAutomatisation simpleScript API + JSON + fichier ; boucle Bash6-12 semaines
GitGestion de version personnelle10 commandes + branches + conflits1-2 semaines
VirtualisationLab local autonomeVirtualBox, UTM ou WSL2 opérationnel1 semaine

Les durées correspondent à un rythme de 8-12 heures hebdomadaires sur ressources gratuites. Un rythme plus élevé les réduit proportionnellement ; un rythme plus faible les étend avec un seuil d'inertie qui détruit la progression en dessous de 5 heures hebdomadaires.

2. Linux en ligne de commande : le niveau vraiment attendu

Linux est la première brique et la plus profonde. Les bootcamps cyber supposent dès le premier jour une fluidité sur les commandes quotidiennes d'un administrateur système junior.

Les commandes à avoir en automatisme

# Navigation et inspection
pwd && ls -la && cd /etc && cat /etc/os-release
 
# Permissions POSIX
chmod 755 script.sh && chown user:group fichier.txt
stat -c '%a %n' /etc/passwd
umask
 
# Recherche et filtrage
find /var/log -name "*.log" -mtime -7
grep -rn "error" /var/log/ | head -20
awk -F: '$3 >= 1000 {print $1, $3}' /etc/passwd
sed 's/foo/bar/g' input.txt > output.txt
 
# Processus et services
ps aux | grep sshd
systemctl status ssh
journalctl -u ssh --since "1 hour ago"
 
# Réseau depuis Linux
ss -tulpn
ip -4 addr show
curl -I https://example.com
dig +short example.com A
 
# Archives et transferts
tar czf backup.tar.gz /home/user/
scp fichier.txt user@host:/tmp/
rsync -av /src/ user@host:/dst/

Ces quinze-vingt commandes doivent être utilisables sans consulter la documentation. L'apprentissage par cœur est contre-productif — c'est l'usage répété quotidien qui produit l'automatisme attendu.

Ressources gratuites

  • OverTheWire Bandit : parcours progressif, 34 niveaux, 20-30 heures totales. Référence absolue en autodidaxie Linux.
  • Linux Journey (linuxjourney.com) : cours structuré gratuit pour débutants.
  • The Linux Command Line de William Shotts : livre gratuit en PDF, 500 pages.
  • explainshell.com : explique chaque composant d'une ligne de commande complexe.

Script d'auto-test

#!/bin/bash
# Self-test du niveau Linux minimal attendu en pre-preparation
# Usage : bash linux_autotest.sh
 
set -u
tests_passed=0
total_tests=5
 
echo "Test 1 - parsing /etc/passwd (awk)..."
users=$(awk -F: '$3 >= 1000 && $3 < 65000 {print $1}' /etc/passwd | wc -l)
[ "$users" -ge 1 ] && tests_passed=$((tests_passed + 1))
 
echo "Test 2 - interface reseau..."
ip -4 addr show scope global | grep -q 'inet ' && tests_passed=$((tests_passed + 1))
 
echo "Test 3 - lecture logs (journalctl ou syslog)..."
if command -v journalctl > /dev/null; then
  journalctl -n 10 --no-pager > /dev/null 2>&1 && tests_passed=$((tests_passed + 1))
else
  tail -n 10 /var/log/syslog > /dev/null 2>&1 && tests_passed=$((tests_passed + 1))
fi
 
echo "Test 4 - requete HTTP via curl..."
code=$(curl -s -o /dev/null -w "%{http_code}" https://example.com)
[ "$code" = "200" ] && tests_passed=$((tests_passed + 1))
 
echo "Test 5 - lecture permissions octales..."
stat -c '%a' /etc/passwd 2>/dev/null | grep -qE '^6[0-9]{2}$' && tests_passed=$((tests_passed + 1))
 
echo ""
echo "Resultat : $tests_passed / $total_tests tests reussis"
[ "$tests_passed" -eq "$total_tests" ] && echo "Niveau Linux minimal atteint."
[ "$tests_passed" -lt "$total_tests" ] && echo "Reprendre le socle Linux avant formation principale."

Réussir les 5 tests signifie que le socle Linux minimal est acquis. Moins de 5 = reprendre OverTheWire Bandit et les commandes ci-dessus.

3. Réseau et protocoles : les concepts à maîtriser

Sans compréhension réseau, les concepts cyber (injection, exfiltration, mouvement latéral, pivot) restent abstraits et inutilisables en entretien technique.

Concepts non négociables

  • Modèle OSI : sept couches, rôle fonctionnel de chacune, et ce qui est manipulé par les outils courants (Nmap couche 3-4, Wireshark 2-7, Burp 7).
  • TCP/IP : handshake three-way (SYN, SYN-ACK, ACK), rôle des flags (SYN, ACK, FIN, RST, PSH, URG), fermeture ordonnée versus RST abrupt.
  • IP et routage : adressage IPv4, notation CIDR (/24, /16, /8), masque réseau, adresses privées RFC 1918, distinction publique/privée.
  • DNS : enregistrements A, AAAA, MX, CNAME, TXT, NS. TTL, résolveur récursif, cache local.
  • HTTP et HTTPS : méthodes (GET, POST, PUT, DELETE, PATCH), codes de statut (200, 301, 302, 400, 401, 403, 404, 500, 502, 503), headers clés (User-Agent, Cookie, Authorization, Host, Referer).
  • TLS : handshake simplifié, rôle du certificat X.509, chaîne de confiance, différence entre TLS 1.2 et TLS 1.3.
  • NAT, proxy, VPN, pare-feu : distinction conceptuelle claire, cas d'usage de chacun.

Commandes d'exploration réseau à maîtriser

# Resolution DNS multi-types
dig +short example.com A
dig +short example.com AAAA
dig +short example.com MX
dig +short example.com TXT
 
# Inspection TLS d'un serveur
openssl s_client -connect example.com:443 -servername example.com < /dev/null 2>/dev/null \
  | grep -E 'subject=|issuer=|Not Before|Not After'
 
# Route reseau vers une cible
traceroute -q 1 example.com 2>/dev/null | head -10
 
# Requete HTTP complete avec headers
curl -sI https://example.com | head -15
 
# Scan de ports basique (uniquement sur sa propre machine)
nmap -sT -p 22,80,443 localhost

Ressources

  • Beej's Guide to Network Programming : référence gratuite en ligne.
  • TryHackMe : rooms Intro to Networking, Networking Fundamentals, Wireshark 101.
  • Practical Networking (practicalnetworking.net) : vidéos gratuites structurées.
  • TCP/IP Illustrated Vol. 1 de Stevens : référence payante dense.

4. Python et Bash : le seuil minimal de programmation

Python niveau attendu

Un script autonome qui interroge une API, gère les erreurs et persiste le résultat. Exemple type à savoir produire en pré-préparation :

"""
Exemple niveau minimal attendu en fin de pre-preparation.
Interrogation API GitHub publique, parsing JSON, persistance JSONL.
"""
import json
import sys
from pathlib import Path
from urllib.request import urlopen, Request
from urllib.error import URLError, HTTPError
 
 
def fetch_github_repos(username: str, max_repos: int = 10) -> list[dict]:
    """Retourne les repos publics d'un utilisateur, jusqu'a max_repos."""
    url = f"https://api.github.com/users/{username}/repos?per_page={max_repos}"
    request = Request(url, headers={"User-Agent": "reconversion-cyber-prereq"})
    try:
        with urlopen(request, timeout=10) as response:
            if response.status != 200:
                raise RuntimeError(f"HTTP {response.status}")
            data = json.loads(response.read())
    except (URLError, HTTPError) as exc:
        print(f"[ERREUR] appel API echoue : {exc}", file=sys.stderr)
        return []
    return [
        {
            "name": repo["name"],
            "stars": repo["stargazers_count"],
            "language": repo.get("language") or "unknown",
        }
        for repo in data
    ]
 
 
def save_repos_jsonl(repos: list[dict], path: Path) -> None:
    """Sauvegarde au format JSON Lines (un objet par ligne)."""
    with path.open("w", encoding="utf-8") as f:
        for r in repos:
            f.write(json.dumps(r, ensure_ascii=False) + "\n")
 
 
if __name__ == "__main__":
    username = sys.argv[1] if len(sys.argv) > 1 else "torvalds"
    output = Path(f"{username}_repos.jsonl")
    repos = fetch_github_repos(username, max_repos=5)
    save_repos_jsonl(repos, output)
    print(f"{len(repos)} repos sauvegardes dans {output}")

Un candidat qui ne sait pas produire un équivalent de ce script en 30-45 minutes avec accès à la documentation n'est pas prêt pour une formation cyber sérieuse.

Bash niveau attendu

Chaînage de commandes, variables, conditions, boucles, gestion d'erreurs. Exemple type :

#!/bin/bash
# Test de connectivite sur une liste d'hotes, log structure.
# Usage : bash connectivity_check.sh
 
set -euo pipefail
 
LOG_FILE="/tmp/connectivity.log"
HOSTS=("example.com" "google.com" "1.1.1.1")
 
echo "[$(date -Iseconds)] demarrage test connectivite" >> "$LOG_FILE"
 
for host in "${HOSTS[@]}"; do
  if ping -c 1 -W 2 "$host" > /dev/null 2>&1; then
    echo "[$(date -Iseconds)] OK : $host" >> "$LOG_FILE"
  else
    echo "[$(date -Iseconds)] FAIL : $host" >> "$LOG_FILE"
  fi
done
 
echo "[$(date -Iseconds)] termine" >> "$LOG_FILE"
cat "$LOG_FILE" | tail -10

Ressources

  • Documentation Python officielle : docs.python.org/3/tutorial (chapitres 1 à 10).
  • Automate the Boring Stuff with Python (Al Sweigart) : gratuit en ligne, pragmatique.
  • Black Hat Python (Justin Seitz) : livre payant, orientation offensive, après socle.

5. Git et virtualisation : les outils d'infrastructure personnelle

Git : workflow minimal attendu

# Configuration initiale (a faire une fois)
git config --global user.name "Prenom Nom"
git config --global user.email "email@domaine.fr"
git config --global init.defaultBranch main
 
# Workflow quotidien
git init
git clone https://github.com/user/repo.git
git add fichier.py
git commit -m "feat: ajout parseur logs"
git push origin main
 
# Branche et merge
git checkout -b feature/nouveau-parseur
# modifications locales
git add . && git commit -m "feat: parseur initial"
git checkout main
git merge feature/nouveau-parseur
git branch -d feature/nouveau-parseur
 
# Resolution d'un conflit (une fois en entretien)
# Apres un git merge conflictuel, ouvrir le fichier affecte,
# reperer les marqueurs <<<<<<<, =======, >>>>>>>
# editer a la main, puis :
git add fichier_conflit.py
git commit -m "fix: resolution conflit parseur"

Un candidat qui n'a jamais résolu un conflit de merge sans chercher sur Google démarre sa formation avec un handicap structurel sur l'étape 6 de la reconversion (portfolio).

Virtualisation : lab local autonome

Options selon le système hôte :

  • Linux natif : KVM + virsh ou libvirt, ou Docker pour une isolation ciblée.
  • macOS : UTM (gratuit, open source), VMware Fusion Player (gratuit pour usage personnel), Parallels (payant).
  • Windows : WSL2 pour Linux intégré, VirtualBox pour VMs complètes, Hyper-V si Windows Pro.

Minimum attendu : savoir installer une VM Kali Linux ou Ubuntu Server, lui allouer 2 à 4 Go de RAM, attacher une interface réseau en bridge ou NAT, la démarrer et s'y connecter en SSH. Cette manipulation doit être réalisable en moins de 15 minutes, outil et image ISO disponibles.

6. Plan d'acquisition structuré sur 1 à 6 mois

Le plan se dimensionne selon le profil de départ. Un plan-type pour chaque grand profil :

Profil initialDurée totaleLinuxRéseauPython/BashGitVM
Développeur confirmé2-4 semaines01 sem000
Administrateur système2-4 semaines002 sem00
Helpdesk 2+ ans6-10 semaines3 sem2 sem4 sem1 sem1 sem
Reconversion totale sans IT3-6 mois8 sem4 sem8 sem1 sem1 sem

Plan YAML exploitable pour un profil reconversion totale avec 4 mois de pré-préparation à 10 heures hebdomadaires :

plan_pre_preparation:
  profil: "reconversion totale, aucun bagage IT"
  duree_totale_mois: 4
  heures_hebdo: 10
  heures_totales_cumulees: 160
 
  mois_1_socle_linux:
    semaine_1:
      - "Linux Journey modules 1-5 (navigation, permissions, texte)"
      - "OverTheWire Bandit niveaux 0-5"
    semaine_4:
      - "OverTheWire Bandit niveaux 15-20"
      - "auto-test Linux (script de la section 2)"
    livrable_fin_mois: "50 commandes Linux automatiques, 5/5 au self-test"
 
  mois_2_socle_reseau:
    - "TryHackMe Pre Security, section Networking"
    - "maniement dig, openssl s_client, curl"
    - "modele OSI et handshake TCP/TLS explicables a haute voix"
    livrable_fin_mois: "trajet d'un paquet HTTPS explique de bout en bout"
 
  mois_3_socle_programmation:
    - "docs.python.org tutoriel chapitres 1-9"
    - "3 scripts Python : fichier, API, JSON"
    - "3 scripts Bash : boucle, condition, pipe"
    livrable_fin_mois: "6 scripts personnels sur GitHub public"
 
  mois_4_consolidation:
    - "git init + branch + merge + resolution conflit"
    - "VirtualBox ou UTM avec Kali Linux et Ubuntu Server"
    - "projet croise : script Python deploye sur VM via SSH"
    livrable_fin_mois: "projet complet demontrable en entretien"
 
  critere_passage_formation:
    - "self-test Linux 5/5"
    - "script Python API fonctionnel sans aide"
    - "VM Kali operationnelle et accessible en SSH"
    - "5+ commits GitHub publics etales sur 4 semaines"

7. Auto-test : les 10 questions à se poser

Grille de dix questions à vérifier avant signature d'une formation principale. Répondre « oui » honnêtement à 7 sur 10 minimum pour être prêt.

autotest_socle_technique:
 
  linux:
    - "Je connais les 15-20 commandes Linux les plus courantes par automatisme."
    - "Je sais lire 'ps aux' et identifier un processus anormal en production."
    - "Je sais naviguer /var/log et filtrer journalctl par unite et periode."
 
  reseau:
    - "Je peux expliquer le handshake TCP three-way a l'oral en 2 minutes."
    - "Je comprends ce que fait 'dig +short example.com MX' et pourquoi le resultat."
 
  programmation:
    - "J'ai ecrit un script Python qui interroge une API REST sans aide."
    - "J'ai ecrit un script Bash avec boucle, condition et gestion d'erreurs."
 
  git:
    - "J'ai cree un depot git public avec 10+ commits reels etales dans le temps."
    - "J'ai deja resolu un conflit de merge a la main, sans GUI ni tutoriel."
 
  virtualisation:
    - "Je peux creer, demarrer, et me connecter en SSH a une VM Linux en 15 minutes."
 
  regle_decision:
    - "Moins de 7/10 : reprendre la pre-preparation avant formation principale."
    - "7-9/10 : pret pour formation avec 1-2 semaines de consolidation ciblee."
    - "10/10 : pret sans reserve pour bootcamp intensif ou autodidaxie structuree."

Points clés à retenir

  • Cinq briques cumulatives : Linux, réseau, Python/Bash, git, virtualisation. Sauter une brique casse l'ensemble.
  • Niveau Linux attendu : automatismes sur 15-20 commandes (ls, grep, find, awk, ps, ss, systemctl, journalctl, curl, dig).
  • Niveau réseau attendu : expliquer le trajet d'un paquet HTTPS, handshake TCP et TLS, résolution DNS multi-types.
  • Niveau programmation attendu : script Python API + JSON + fichier, script Bash avec boucle et condition.
  • Git et virtualisation : non négociables pour commits hebdomadaires (portfolio) et labs locaux.
  • Durée d'acquisition : 2-4 semaines (dev), 3-6 mois (reconversion totale). Plan et auto-test à suivre rigoureusement.

Pour l'étape structurée de pré-préparation dans la reconversion globale, voir Les vraies étapes d'une reconversion en cybersécurité. Pour le calibrage du profil initial, voir Entrer en cybersécurité en partant de zéro. Pour la méthode autodidacte complète avec les ressources gratuites structurées, voir Apprendre la cybersécurité en autodidacte. L'accompagnement cyber 6 mois intègre une phase de pré-préparation cadrée de 4 à 12 semaines avant le bootcamp principal, avec auto-test hebdomadaire sur les cinq briques.

Questions fréquentes

  • Quel niveau Linux faut-il atteindre avant une formation cyber ?
    Un niveau opérationnel quotidien : naviguer dans l'arborescence, manipuler les permissions POSIX (chmod, chown), rediriger les flux standard, gérer les processus et les services systemd, lire les logs journalctl, utiliser un éditeur en ligne de commande (vim ou nano). Une quinzaine de commandes courantes (ls, grep, find, awk, sed, ps, ss, curl, ssh, tar) doivent être automatiques. Sans ce niveau, le premier jour d'un bootcamp ou d'une room TryHackMe devient un blocage qui contamine toute la suite.
  • Faut-il savoir coder pour entrer en cybersécurité ?
    Oui, au minimum à un niveau Python intermédiaire. Un script qui interroge une API REST, parse du JSON et écrit un fichier structuré est le seuil attendu en sortie de pré-préparation. Les postes défensifs (SOC L1, GRC) se contentent de Python simple et de Bash. Les postes offensifs (pentest, AppSec, DevSecOps) exigent un Python plus élaboré et du C de base pour le reverse engineering. Aucun poste cyber sérieux ne se contente de « aucune programmation ».
  • Quelles notions réseau minimales avant de commencer ?
    Le modèle OSI, TCP/IP, l'adressage IPv4 et CIDR, DNS (enregistrements A, AAAA, MX, CNAME, TXT), HTTP et HTTPS, TLS avec son handshake, NAT, proxy, VPN, pare-feu. Savoir lire une capture Wireshark basique, expliquer le trajet d'un paquet d'un navigateur à un serveur, et utiliser Nmap pour un scan de reconnaissance local. Sans ces notions, la moitié des concepts cyber (injection, exfiltration, mouvement latéral) reste abstraite et inutilisable en entretien technique.
  • Git est-il vraiment indispensable avant une formation cyber ?
    Oui. Git structure tout le portfolio public (étape 6 de la reconversion) : commits hebdomadaires, writeups, contributions open source. Un candidat qui arrive en formation sans savoir faire un commit, une branche ou résoudre un conflit simple démarre avec 4 à 6 semaines de retard sur la consolidation du portfolio. Le minimum à maîtriser : git init, clone, add, commit, push, pull, branch, merge, et résolution d'un conflit de fichier simple à la main.
  • Combien de temps pour acquérir le socle technique complet ?
    De 1 à 6 mois selon le point de départ. Un profil développeur ou administrateur système confirmé termine en 2 à 4 semaines de révision ciblée. Un profil helpdesk avec bases Linux et réseau arrive prêt en 6 à 10 semaines. Un profil sans aucun bagage IT prévoit 3 à 6 mois à 8-10 heures hebdomadaires, avec des jalons mensuels vérifiables. Cette durée n'est pas une option : sauter cette phase rallonge le parcours total de 3 à 6 mois via un retard cumulé en formation principale.

Écrit par

Naim Aouaichia

Expert cybersécurité et fondateur de Zeroday Cyber Academy

Expert cybersécurité avec un master spécialisé et un parcours hybride : développement, DevOps, DevSecOps, SOC, GRC. Fondateur de Hash24Security et Zeroday Cyber Academy. Formateur et créateur de contenu technique sur la cybersécurité appliquée, la sécurité des LLM et le DevSecOps.