Un port SSH exposé reçoit du trafic de credential stuffing en permanence
Les botnets de balayage parcourent tout l'espace d'adressage IPv4 routable et essaient des listes de mots de passe sur chaque hôte qui répond sur TCP/22. Un démon SSH joignable depuis internet reçoit ce trafic, que l'hôte soit un bastion d'entreprise ou un simple VPS.
- Des milliers d'authentifications échouées par jour
- Un nouvel hôte répondant sur TCP/22 commence à journaliser des authentifications SSH échouées quelques heures après que son adresse est devenue routable. Un serveur exposé à internet enregistre chaque jour des milliers d'événements « Failed password » et « Invalid user » dans systemd-journald, provenant de plages d'adresses qui tournent plus vite qu'un administrateur seul ne peut les examiner.
- CPU, mémoire et écritures de journal dépensés pour du trafic qui ne s'authentifiera jamais
- Chaque tentative d'authentification SSH coûte une poignée de main TCP, un échange de clés SSH, un parcours de la pile PAM via /etc/pam.d/sshd et une écriture synchrone dans systemd-journald. Un flux de force brute soutenu maintient donc une charge de fond permanente sur l'hôte, gonfle le stockage du journal et repousse les vraies connexions d'administration derrière la file MaxStartups de sshd - sans que l'attaquant ait jamais eu à s'authentifier pour y parvenir.
- Un seul mot de passe deviné est une compromission complète
- Un seul mot de passe correct ouvre un shell interactif avec les privilèges de ce compte : préparation d'un rançongiciel, exfiltration de données ou spam sortant attribué à l'adresse de l'hôte lui-même. Les mots de passe faibles ou réutilisés depuis une fuite publique tombent en quelques jours face à une attaque par dictionnaire, et le journal d'authentification enregistre la tentative réussie exactement comme n'importe quelle autre ligne.
- pam_faillock transforme l'attaque en verrouillage du véritable administrateur
- La pile PAM configurée dans /etc/pam.d/sshd compte les échecs consécutifs avec pam_faillock et verrouille le compte dès que le seuil deny est atteint. Un attaquant qui n'a deviné qu'un nom d'utilisateur valide - jamais le mot de passe - peut donc déclencher ce compteur délibérément et verrouiller le véritable administrateur hors de l'hôte. Le résultat est un déni de service produit entièrement par le mécanisme de défense.
SSH Protector déplace la décision de l'espace utilisateur vers le hook input de netfilter
Le démon SSH Protector corrèle les événements d'authentification échoués par réseau source et valide une règle nftables qui rejette tout le /24 de l'attaquant. Dès que cette règle existe, netfilter écarte les paquets dans le hook input du noyau - avant que sshd accepte une connexion, avant tout parcours PAM et avant toute écriture dans le journal. La charge CPU, le volume du journal et le nombre de tentatives atteignant la vérification du mot de passe chutent en même temps.

