Port Knocking - Slides de Présentation pour Développeurs Slide 1: Introduction et Contexte Titre : Port Knocking - Sécuriser SSH de façon Élégante
Contenu :
Qu'est-ce que c'est ? Une technique de sécurisation des serveurs SSH (née en 2005-2006)
Le problème : En France, 680 000 serveurs SSH sont exposés publiquement
Vulnérabilités constantes
Scans de ports massifs
Spam de logs intensif
La solution : Masquer le service derrière un firewall et l'ouvrir à la demande
Avantage clé : Ouverture temporaire et limitée à une adresse IP
Slide 2: Fondamentaux Techniques - TCP et Firewall Titre : Comment ça marche ? Les bases réseau
Contenu - TCP :
4 paramètres : IP source + destination, port source + destination
Poignée de main en 3 étapes : SYN → SYN-ACK → ACK
Contenu - Actions du Firewall :
Action Résultat Serveur Visible ? Accept Paquet autorisé ✅ Oui (vulnérable) Reject Paquet refusé (RST) ✅ Oui (fermeture confirmée) Drop Paquet supprimé ❌ Non (invisible) Le fondement du port knocking : Exploiter la différence entre Drop et Reject pour masquer un service tout en offrant un accès contrôlé
Slide 3: Principe du Port Knocking Titre : Le concept - Frapper à la porte
Analogie : Comme annoncer sa présence en frappant sur une porte avec une séquence rythmique
Fonctionnement en 5 étapes :
Firewall bloque le port 22 (DROP) → Service invisible
Client envoie séquence sur ports spécifiques (3000 → 4000 → 5000)
Firewall reconnaît la séquence → Port 22 s'ouvre
Connexion SSH établie et persistante (keyword established)
Timeout atteint → Port 22 se ferme automatiquement
Caractéristiques :
Ouverture temporaire (ex: 30 secondes)
Limitée à une adresse IP spécifique
Le service ne semble jamais exposé aux yeux du monde
Slide 4: Implémentation Pratique Titre : Mettre en place le Port Knocking
Environnement testé :
Debian 12 + iptables
Côté Serveur :
text Configuration firewall : - Policy : INPUT DROP - Interface : Écoute tous les paquets - Séquence : Ports à frapper (3000, 4000, 5000) - Timeout : Durée de validité de la séquence - Commande : Ajoute règle iptables + SSH timeout 30s - Cron : Nettoie les règles expirées Côté Client :
Installation similaire (démon inactif)
CLI uniquement pour la séquence
Fourniture : IP serveur + ports de la séquence
Résultat :
✅ Port 22 introuvable par scan (filtré)
✅ Après séquence correcte : connexion SSH normale
✅ Après 30s : port se referme automatiquement
Slide 5: Améliorations et Alternatives Titre : Évolution - De fixe à dynamique et au-delà
Port Knocking Classique - Limitation :
❌ Séquence fixe = Vulnérable aux attaques par rejeu
Attaquant écoute la séquence → La rejoue → Accès obtenu
Solution 1 : Port Knocking + TOTP :
Séquence change toutes les minutes
Basée sur clé partagée + temps
Éphémère et jetable
✅ Élimine vulnérabilité par rejeu
Solution 2 : Single Packet Authorization (SPA) :
Approche moderne et plus efficace
Un seul paquet UDP au lieu de séquence
Contient instruction (ex: ouvrir port 22)
Chiffré (clé publique serveur)
Outils : fwknop, implémentations Rust
Recommandation :
Cas simples : Port Knocking + TOTP
Robuste : Passer à SPA (Single Packet Authorization)
Notes de Présentation Pour Slide 1 Accroche : "Vous avez 680 000 raisons de sécuriser votre SSH"
Amener le problème avant la solution
Montrer la simplicité du concept
Pour Slide 2 Dessiner les 3 actions du firewall avec symboles visuels
Souligner la différence DROP vs REJECT (le cœur du concept)
Aider les développeurs à visualiser les flux réseau
Pour Slide 3 Utiliser l'analogie de la caverne d'Alibaba (mentionnée dans la présentation)
Montrer un diagramme des étapes avec des flèches
Insister sur la persistance de la connexion (keyword established)
Pour Slide 4 Montrer une démo en parallèle (optionnel)
Terminal client vs Terminal serveur
Montrer progression : filtré → ouvert → filtré (après 30s)
Code iptables si public DevOps/SysAdmin
Pour Slide 5 Tableau comparatif : Port Knocking vs TOTP vs SPA
Matricer sécurité / complexité / commodité
Proposer un chemin d'adoption progressif
Mentionner que SPA est "l'avenir" mais complexe