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.
| Brique | Objectif fonctionnel | Niveau minimal attendu | Durée d'acquisition |
|---|---|---|---|
| Linux CLI | Navigation, administration basique, lecture de logs | Automatismes sur 15-20 commandes | 4-12 semaines |
| Réseau | Comprendre le trajet d'un paquet | OSI, TCP/IP, DNS, HTTPS, TLS | 3-6 semaines |
| Python + Bash | Automatisation simple | Script API + JSON + fichier ; boucle Bash | 6-12 semaines |
| Git | Gestion de version personnelle | 10 commandes + branches + conflits | 1-2 semaines |
| Virtualisation | Lab local autonome | VirtualBox, UTM ou WSL2 opérationnel | 1 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 localhostRessources
- 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 -10Ressources
- 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 initial | Durée totale | Linux | Réseau | Python/Bash | Git | VM |
|---|---|---|---|---|---|---|
| Développeur confirmé | 2-4 semaines | 0 | 1 sem | 0 | 0 | 0 |
| Administrateur système | 2-4 semaines | 0 | 0 | 2 sem | 0 | 0 |
| Helpdesk 2+ ans | 6-10 semaines | 3 sem | 2 sem | 4 sem | 1 sem | 1 sem |
| Reconversion totale sans IT | 3-6 mois | 8 sem | 4 sem | 8 sem | 1 sem | 1 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.






