Stoppez le brute-force SSH sur vos serveurs Linux

SSH Protector est un démon Linux léger qui arrête les attaques par force brute SSH : il analyse les journaux d'authentification en temps réel et rejette automatiquement les adresses IP malveillantes par des règles nftables/iptables dans le noyau, pour moins de 10 Mo de mémoire résidente. Le démon SSH Protector lit systemd-journald - ou /var/log/auth.log sur les hôtes qui utilisent encore rsyslog - compte les événements « Failed password » et « Invalid user » par adresse source, et dès qu'une source franchit le seuil configuré, le démon valide une seule règle netfilter couvrant tout le /24 de l'attaquant. Chaque verdict est calculé sur l'hôte protégé lui-même : la protection contre le brute-force SSH continue donc pendant une panne du plan de contrôle, et le jeu de règles est reconstruit depuis le disque après un redémarrage.

Installer en une commande
curl -fsSL https://sshprotector.com/download/installer | sudo sh

La version gratuite inclut une protection complète pour un serveur. Protection contre le brute-force SSH pour serveurs Linux

Un binaire statique, toute distribution Linux basée sur systemd

  • Debian · Ubuntu · Fedora
  • RHEL · Alma · Rocky · Alpine
  • x86-64 · ARM64 · backends nftables et iptables
  • moins de 10 Mo RSS · CPU quasi nul

Installer l'agent

Un seul binaire pour tout le monde, aucun compte requis pour le télécharger. Installez maintenant et connectez le serveur quand vous voulez : l'agent demande un jeton d'inscription de votre portail et ne protège rien avant que vous ne le colliez.

Télécharger le script d'installation

Toute distribution Linux moderne à base de systemd - Debian, Ubuntu, RHEL/CentOS/Alma/Rocky, Fedora - sur x86-64 ou ARM64. Le script installe le même service et convient mieux à un parc de serveurs.

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.

Des forfaits fixes, sans surprise par serveur

Free reste gratuit pour toujours, sans carte. Les forfaits payants ont un prix fixe avec un nombre de serveurs inclus.

Free

1 serveur
$0/mois

Protection SSH de base pour un serveur.

  • Protection SSH anti-force brute
  • Liste blanche souple
  • Statistiques minimales

Solo

1 serveur
$9/mois

Protection complète d'un serveur de production.

  • Tout de Free
  • Protection FTP anti-force brute
  • Statistiques complètes
  • Notifications par e-mail
  • Audit de base

Pro

PopulaireJusqu'à 5 serveurs
$15/mois

Pour les équipes et les petits parcs de serveurs.

  • Tout de Solo
  • Liste blanche stricte et groupes
  • Audit complet avec export
  • Statistiques étendues
  • Liste de blocage comportementale partagée

Enterprise

Jusqu'à 50 serveurs
$99/mois

Pour les entreprises avec un grand parc de serveurs.

  • Tout de Pro
  • Rôles d'administrateur et de modérateur
  • Support prioritaire
  • Liste de blocage comportementale partagée

Besoin d'un serveur de plus que votre formule ? Ajoutez des serveurs à l'unité pour 3 $ par serveur et par mois, sans changer de formule.

14 jours de Pro offerts - sans carte

Inscrivez-vous et testez sur votre propre serveur le blocage de sous-réseaux, les alertes Telegram, GeoIP et la base de menaces partagée. À la fin, le compte revient de lui-même à Free et la protection continue. Rien n'est débité et il n'y a rien à résilier.

Démarrer l'essai gratuit

Comment arrêter les attaques par force brute SSH sous Linux (3 méthodes)

Trois changements de configuration réduisent ce qui atteint sshd, et ils se cumulent. Les deux premiers ne demandent rien d'autre qu'OpenSSH et le pare-feu de l'hôte ; c'est sur le troisième que Fail2ban, CrowdSec, SSHGuard et SSH Protector se disputent le terrain. Voici l'ordre dans lequel les mener.

  1. 01Désactiver l'authentification par mot de passe dans sshd_config

    Une attaque par devinette de mot de passe n'a plus rien à deviner dès que sshd refuse totalement les mots de passe. Les directives PasswordAuthentication no et KbdInteractiveAuthentication no dans un fichier drop-in sous /etc/ssh/sshd_config.d/ suppriment toute la surface de devinette d'identifiants, et PermitRootLogin prohibit-password conserve l'accès root par clé tout en fermant le nom de compte le plus attaqué. L'ordre compte plus que les directives : installer d'abord la clé publique, vérifier ensuite dans une seconde session encore ouverte que la clé authentifie, et seulement alors recharger sshd - une faute de frappe appliquée dans le mauvais ordre verrouille l'administrateur hors d'un hôte distant sans retour possible.

    # /etc/ssh/sshd_config.d/10-keys-only.conf
    PasswordAuthentication no
    KbdInteractiveAuthentication no
    PermitRootLogin prohibit-password
    Guide complet
  2. 02Réduire la part d'internet qui atteint le port

    Déplacer sshd vers un port non standard avec la directive Port supprime le trafic de balayage non ciblé et rien d'autre ; un balayage de toute la plage de ports retrouve le démon en quelques secondes, un changement de port achète donc des journaux plus calmes, pas de la sécurité. Filtrer le port supprime en revanche l'attaquant : une règle nftables qui n'accepte le port SSH que depuis une plage VPN ou un préfixe de bureau fixe signifie qu'une source non listée ne termine même pas la poignée de main TCP. AllowGroups dans sshd_config resserre la même exposition au niveau du démon, en restreignant quels comptes locaux peuvent s'authentifier. Sur un hôte dont l'ensemble des administrateurs est connu, les deux ont leur place dans la configuration.

    # /etc/ssh/sshd_config.d/20-exposure.conf
    Port 2202
    AllowGroups ssh-admins
    
    # nftables: only the VPN and the office reach it at all
    nft add rule inet filter input tcp dport 2202 \
      ip saddr { 10.8.0.0/24, 203.0.113.7 } accept
    Guide complet
  3. 03Bannir le réseau source avant qu'il accumule assez de tentatives

    Fail2ban est la première réponse standard, et une réponse raisonnable : le processus fail2ban-server analyse le journal d'authentification, compte les échecs à l'intérieur de findtime et appelle une action qui programme iptables ou nftables pour la durée de bantime. Les limites de cette conception sont structurelles et non accidentelles : une jail par défaut bannit une adresse à la fois, le bannissement expire sur un minuteur, rien n'est partagé entre hôtes, et une jail à base d'expressions régulières peut cesser silencieusement de correspondre après un changement de format de journal, sans aucun signal indiquant que la protection s'est arrêtée. CrowdSec répond au problème du partage avec une liste de blocage communautaire et un processus bouncer distinct ; SSHGuard garde son état en mémoire ; DenyHosts écrit dans /etc/hosts.deny, ce qui dépend des TCP wrappers, auxquels les builds actuels d'OpenSSH ne sont plus liés. Le démon SSH Protector bannit tout le /24 de l'attaquant en une règle nftables, conserve le jeu de règles au fil des redémarrages et partage ce qu'un hôte protégé a appris avec tous les autres.

    # /etc/fail2ban/jail.d/sshd.local
    [sshd]
    enabled  = true
    backend  = systemd
    maxretry = 4
    findtime = 10m
    bantime  = 1h
    Guide complet

Ce que couvre une seule règle de sous-réseau

Déplacez les curseurs. C'est de l'arithmétique, pas un benchmark.

Bannir une adresse à la fois

32 règles de pare-feu

128 tentatives atteignent quand même sshd

Bannir tout le /24

1 règles de pare-feu

4 tentatives atteignent quand même sshd

Un /24 contient 256 adresses. Avec des bannissements par adresse, un bot qui passe à la suivante retrouve son quota à chaque fois ; quand le bannissement couvre la plage, jamais. Rien ici n'est mesuré : c'est le même comptage que fait l'agent.

SSH Protector, Fail2ban, CrowdSec, SSHGuard, DenyHosts et Wazuh

Six outils qui répondent à la même question sur un hôte Linux. Le tableau décrit chacun dans sa configuration par défaut, parce que c'est celle qu'un hôte exécute réellement tant que personne n'y consacre de travail supplémentaire.

OutilUnité du bannissementÉtat après un redémarrageSource des journauxPoint d'applicationRéputation entre hôtes
SSH ProtectorTout le /24, tenant compte de l'ASNJeu de règles reconstruit depuis le disqueAPI systemd-journald, auth.log, journaux du démon FTPEnsemble nftables au hook input de netfilterOui - agrégée sur tous les hôtes protégés
Fail2banUne adresse par jail par défautBase SQLite, restaurée au redémarrage jusqu'à l'expiration de bantimeInterrogation d'auth.log, pyinotify ou backend = systemdiptables, nftables ou ipset via une actionNon - chaque hôte décide seul
CrowdSecAdresse ou plage, selon le scénarioBase de décisions locale, restauréeAcquisition de journaux via des parseurs configurésnftables ou iptables via un processus bouncer distinctOui - liste de blocage communautaire
SSHGuardUne adresseGardé en mémoire ; persisté seulement avec un fichier de liste noire expliciteFlux de journaux depuis journald ou un fichier syslogBackend nftables, iptables, pf ou ipfwNon
DenyHostsUne adresse/etc/hosts.deny, persiste sous forme de fichierauth.log uniquement, SSH uniquementTCP wrappers, auxquels les builds actuels d'OpenSSH ne sont plus liésServeur de synchronisation central facultatif
WazuhUne adresseLa réponse active expire sur son propre délaiCollecteur de journaux de l'agent alimentant un manager centralScript de réponse active firewall-drop sur l'agentManager central - au prix de son exploitation

Chaque cellule décrit le comportement par défaut. On peut faire bannir un préfixe CIDR à Fail2ban avec une action personnalisée, pointer un bouncer CrowdSec vers un ipset et donner un fichier de liste noire à SSHGuard - la colonne indique ce qui se passe sans ce travail. La ligne SSH Protector est la seule que ce site peut vérifier de l'intérieur ; les autres sont lues dans la documentation de chaque projet et détaillées dans le guide ci-dessous.

Lire le comparatif complet avec Fail2ban

Où une tentative de force brute SSH est réellement arrêtée sous Linux

Tous les outils de cette catégorie - Fail2ban, CrowdSec, SSHGuard, DenyHosts, Wazuh et le démon SSH Protector - lisent les mêmes journaux et écrivent dans le même pare-feu. Ce qui les sépare, c'est l'étape du chemin d'authentification Linux sur laquelle chacun agit, et ce que l'hôte a déjà dépensé à ce moment-là.

sshd et la pile PAM
Une connexion entrante atteint sshd, qui termine la poignée de main TCP et l'échange de clés SSH avant que le moindre identifiant soit examiné, puis transmet celui-ci à la pile PAM déclarée dans /etc/pam.d/sshd : pam_unix vérifie le mot de passe, pam_faillock compte les échecs consécutifs. Rien sur ce chemin ne refuse du trafic - sshd a déjà alloué une session et dépensé du CPU au moment où le premier mot de passe est vérifié. MaxAuthTries et LoginGraceTime bornent ce qu'une seule connexion peut tenter, pas le nombre de connexions qu'un attaquant ouvre : c'est pourquoi sshd_config seul ne répond pas à une attaque par force brute distribuée.
systemd-journald et /var/log/auth.log
Chaque résultat d'authentification est écrit dans systemd-journald, et sur les hôtes qui utilisent encore rsyslog les mêmes enregistrements atteignent aussi /var/log/auth.log sur Debian et Ubuntu, ou /var/log/secure sur RHEL, CentOS, AlmaLinux et Rocky Linux. Le journal d'authentification est le seul endroit où « cette source a échoué quarante fois en deux minutes » devient connaissable, car un paquet dans le noyau ne porte aucun résultat d'authentification. Le coût d'analyse des journaux est le prix de cette connaissance, et tous les outils de la catégorie le paient : le démon SSH Protector lit le journal via son API native plutôt qu'en suivant un fichier texte, ce qui supprime le coût d'une expression régulière par ligne ainsi que la classe de pannes où une distribution change un format de journal et où une jail cesse silencieusement de correspondre.
netfilter : nftables, iptables et ensembles
Un bannissement n'existe qu'une fois qu'une règle existe dans le noyau. nftables et l'ancien iptables programment tous deux netfilter, dont le hook input s'exécute avant qu'un paquet soit remis à une socket sshd ; un paquet rejeté ne coûte donc aucun processus en espace utilisateur, aucune session et aucune écriture de journal. Un ensemble nftables - ou un ipset derrière iptables - garde de nombreux préfixes derrière une seule consultation de règle, et c'est pourquoi le nombre de règles, et non le nombre d'adresses bannies, détermine le coût réel d'un dispositif de liste noire d'IP à la cadence des paquets. SSH Protector écrit une entrée d'ensemble nftables par /24 banni et conserve l'ensemble, de sorte que le filtrage de paquets au niveau du noyau, et non un démon en espace utilisateur, fait le travail par paquet.
eBPF et XDP, et ce qu'ils ne résolvent pas
Les programmes eBPF attachés à XDP rejettent un paquet dans le pilote réseau, plus tôt que netfilter et à une cadence de paquets supérieure, ce qui fait d'eBPF le bon outil contre une inondation volumétrique. Un programme XDP ne peut cependant pas lire /var/log/auth.log, ne voit aucun résultat PAM et ne distingue pas un mot de passe faux d'un mot de passe juste : la décision du préfixe à rejeter naît donc toujours de l'analyse de journaux en espace utilisateur, quelle que soit la conception. Pour le trafic de force brute SSH - une faible cadence de paquets portant une tentative d'authentification à forte valeur - le hook input de netfilter écarte le trafic bien avant que l'hôte ne remarque la charge, et toute la difficulté d'ingénierie tient dans la décision de ce qu'il faut rejeter.
La liste noire d'IP, et pourquoi l'unité du bannissement compte
Une liste noire d'IP ne tient que tant que l'attaquant conserve l'adresse qui a mérité le bannissement. Les botnets de balayage tournent à l'intérieur d'une allocation : un bannissement par adresse accorde donc à chaque adresse suivante du même /24 un quota de tentatives entier et neuf - jusqu'à 256 quotas par plage. Un bannissement exprimé sous forme de préfixe CIDR accorde ce quota exactement une fois pour toute la plage. C'est de l'arithmétique et non un banc d'essai, et le calculateur ci-dessous montre le même décompte que celui qu'effectue le démon SSH Protector.

Du téléchargement au serveur protégé en quelques minutes

Pas de fichiers de configuration ni de ligne de commande : téléchargez l'installateur, lancez-le, confirmez l'invite sudo.

  1. Créez un compte

    Inscription par e-mail ou via Google/GitHub. Aucune carte bancaire nécessaire.

  2. Téléchargez l'installateur

    Vous recevez un installateur personnel signé avec votre jeton d'accès déjà intégré.

  3. Lancez-le sur le serveur

    L'agent détecte le port SSH tout seul et ajoute votre IP actuelle à la liste blanche pour que vous ne puissiez pas vous bloquer vous-même.

  4. Terminé

    Le serveur apparaît en ligne dans le panneau en quelques secondes et commence à bloquer les attaquants avec des réglages par défaut raisonnables.

Protection anti-force brute, réputation partagée, politique géo et gestion de parc

Filtrage de paquets au niveau du noyau piloté par l'analyse du journal d'authentification, étendu par une réputation d'attaquants partagée entre clients, une politique géographique, l'accès juste-à-temps et la gestion centralisée du parc.

Protection SSH, SFTP et FTP contre la force brute

Le démon SSH Protector lit les événements d'authentification échoués depuis systemd-journald et depuis le journal propre du démon FTP, les corrèle par préfixe source et écrit le bannissement dans nftables sur ce même hôte. Le chemin de décision ne quitte jamais la machine : un bannissement est donc validé dans le noyau même lorsque le plan de contrôle est injoignable.

Bannissement par préfixe CIDR plutôt que par adresse

Les botnets de balayage font tourner leurs adresses à l'intérieur d'une même allocation ; un bannissement par adresse offre donc à chaque adresse suivante un quota neuf. SSH Protector résout la source vers son préfixe annoncé à l'aide des données ASN et bannit tout le /24 comme une entrée unique dans un ensemble nftables consolidé.

Réputation d'attaquants partagée entre clients

Une attaque contre un hôte protégé élève le score de réputation de ce préfixe source pour tous les autres hôtes de la plateforme. Les préfixes dont la réputation agrégée est la pire sont rejetés au hook input de netfilter avant d'avoir effectué la moindre tentative d'authentification contre un serveur donné.

Politique géographique évaluée localement

La politique géographique restreint l'authentification SSH et FTP aux pays depuis lesquels l'organisation travaille réellement. La table de correspondance des pays est livrée à l'agent et évaluée localement : le filtrage géo n'ajoute aucun aller-retour réseau et continue de fonctionner avec un plan de contrôle hors ligne.

Accès juste-à-temps avec MFA

L'accès juste-à-temps garde le port SSH filtré par défaut et l'ouvre pour une seule adresse source après une demande confirmée par MFA, avec minuteur d'expiration et fermeture automatique. La règle nftables est retirée à la fin du minuteur, que quelqu'un pense ou non à la révoquer.

Liste blanche et mode strict

Les adresses et noms DNS dynamiques en liste blanche sont exemptés de tout chemin de bannissement, et la liste blanche est évaluée avant toute règle de blocage. En mode strict, la politique nftables n'accepte le port protégé que depuis des sources en liste blanche et rejette tout le reste sans même évaluer la réputation.

Alertes et journal d'audit en ajout seul

Les pics de cadence de bannissement, un agent qui passe hors ligne et la dérive de configuration sont livrés par e-mail, Telegram, Slack ou webhook. Chaque changement de politique, bannissement, levée de bannissement et modification de liste blanche est écrit dans un journal d'audit en ajout seul, avec l'auteur et l'adresse source.

Un binaire statique, moins de 10 Mo résidents

L'agent est un exécutable lié statiquement tournant comme unité systemd, avec un jeu résident sous 10 Mo et une consommation CPU qui reste proche de zéro entre deux événements d'authentification. Le même binaire couvre toute distribution à base de systemd sur x86-64 et ARM64, sans interpréteur, sans runtime Python et sans dépendances de paquets à résoudre.

Gestion centralisée sans port entrant

Le panneau tient l'inventaire des serveurs, les modèles de politiques, l'épinglage et le retour arrière de version d'agent, les groupes et les actions de masse sur le parc. Le trafic d'administration est un HTTPS sortant initié par l'agent : aucun port entrant n'est ouvert sur un hôte protégé pour faire fonctionner la gestion centralisée.

Protection permanente contre le verrouillage pam_faillock

La protection permanente contre le verrouillage garantit que pam_faillock ne peut pas être retourné contre le compte qui administre l'hôte : le démon SSH Protector bannit le préfixe source avant que le seuil deny de /etc/pam.d/sshd soit atteint, et remet à zéro le compteur faillock des comptes protégés. Le comportement est activé par défaut sur toutes les formules, y compris la gratuite.

Quand la protection d'un serveur Linux devient réellement nécessaire

Quinze situations dans lesquelles l'accès distant à une machine Linux cesse d'être un risque théorique pour devenir un risque quotidien. Si vous reconnaissez votre propre serveur dans l'une d'elles, ses mots de passe sont déjà testés.

0.0.0.0/022 · 21LISTEN 0.0.0.0$sshduptime 412dno consoleone host · always on

Quand il est nécessaire de protéger un serveur SSH sous Linux

Le premier groupe porte sur la machine elle-même : où elle se trouve, qui l'atteint et ce qui écoute d'autre dessus. Aucune de ces situations ne relève de l'erreur. Ce sont des manières ordinaires et raisonnables d'exploiter un serveur Linux, et chacune place une demande de mot de passe devant l'Internet tout entier.

  1. 01

    SSH est joignable de partout et les mots de passe fonctionnent encore

    Le port 22 répond à toutes les adresses du monde, sans VPN devant lui et sans machine bastion. C'est l'état par défaut d'une machine louée : l'hébergeur fournit une adresse publique, le serveur se configure justement par SSH, et une fois l'installation terminée le port reste simplement là où il était - le plus souvent avec l'authentification par mot de passe toujours active à côté des clés.

    Balayer toute la plage IPv4 est une affaire de minutes, pas de jours. Une adresse fraîchement attribuée reçoit ses premières tentatives de connexion quelques heures après son apparition sur le réseau, bien avant que le serveur n'ait un nom, un certificat ou le moindre utilisateur réel. À partir de cet instant, la machine répond à des inconnus vingt-quatre heures sur vingt-quatre.

    • Un VPS ou une instance cloud joignable à son adresse publique
    • Un poste de bureau derrière un routeur, avec le port 22 redirigé vers lui
    • Un serveur ouvert « temporairement » pour une migration et jamais refermé
    • Une machine dont l'adresse n'a jamais été publiée, mais qui se trouve tout de même dans une plage balayée
  2. 02

    L'image cloud arrive avec un nom d'utilisateur que tout le monde connaît déjà

    Les images de distributions et d'hébergeurs sont livrées avec un premier compte connu : root sur un VPS nu, ubuntu sous Ubuntu, ec2-user, debian, admin, pi. La moitié du problème - trouver un identifiant valide - est résolue avant même que la machine ait fini son premier démarrage.

    C'est pourquoi un serveur exposé voit toute la journée la même courte liste de noms dans son journal. L'attaquant n'a rien à découvrir : le compte est standard, il existe sur une grande partie des hôtes Linux d'Internet, et sur beaucoup d'entre eux il permet encore de se connecter directement.

  3. 03

    Un seul VPS loué porte le site, la base et les sauvegardes

    Les petites structures et les projets d'un seul développeur font souvent tout tenir sur une machine : le serveur web, la base, la file d'attente, le dump nocturne. Il n'y a pas de second hôte vers lequel basculer ni d'administrateur dédié - celui qui se connecte pour déployer est celui qui entretient la machine.

    La protection de l'hébergeur ne couvre pas cela. Les hébergeurs filtrent les déluges volumétriques, pas la devinette de mots de passe : quelques tentatives par seconde depuis des adresses qui changent sans arrêt ressemblent à du trafic ordinaire du point de vue du réseau, et le service abus ne les verra jamais.

    • Aucune marge : en cas de compromission, le projet ne ralentit pas, il s'arrête
    • Les sauvegardes sont souvent sur le même disque - c'est précisément ce sur quoi comptent les rançongiciels
    • Personne n'est payé pour lire auth.log, alors les tentatives s'accumulent sans être vues
  4. 04

    La machine Linux est un routeur, un NAS ou un équipement que personne ne considère comme un serveur

    Un boîtier pare-feu, un stockage réseau, un Raspberry Pi qui fait tourner la caisse d'un magasin, un automate dans un local technique, un mini-PC sous un bureau qui lance les sauvegardes : tout cela est du Linux, tout cela a SSH activé, et rien de tout cela ne figure sur la liste des serveurs de qui que ce soit.

    Ce sont justement ces machines-là que l'on oublie. Elles sont installées une fois, elles continuent de fonctionner, et des années séparent le jour où le mot de passe a été choisi du jour où quelqu'un les regarde à nouveau. Pendant ce temps, le port répond à Internet sans interruption.

  5. 05

    FTP écoute sur le même hôte que SSH

    Un serveur Linux publie rarement un seul service. Un accès FTP pour échanger des fichiers avec un client ou un graphiste, et SSH pour l'administration, cohabitent couramment sur la même adresse - et les comptes FTP sont en général plus anciens que tout le reste de la machine.

    Chaque port ouvert est une porte distincte avec sa propre demande d'identifiants, et les attaquants ne se spécialisent pas. La même infrastructure de balayage essaie les deux l'une après l'autre, et c'est la plus faible qui décide du sort de tout l'hôte, car celui qui entre par l'une ou l'autre se retrouve dans le même système d'exploitation.

    • Des comptes FTP créés une fois pour un prestataire et jamais revus
    • Le FTP simple fait circuler les identifiants en clair sur le réseau
    • Un compte de dépôt partagé dont la moitié du bureau connaît le mot de passe
users triedrootadminubuntudeploypostgrestestpassword:PasswordAuthentication yesfailed9 999

Quand les comptes et les clés échappent au contrôle

Le deuxième groupe porte sur qui détient des identifiants vers la machine. Les clés, les comptes de déploiement, les prestataires et les vieux mots de passe s'accumulent plus vite que personne ne les révise, et tous aboutissent à la même invite. C'est là que commencent la plupart des intrusions réelles.

  1. 06

    Les développeurs et les prestataires ont leurs propres accès

    Un développeur externe, une graphiste qui doit déposer une version, une agence qui maintient le site, l'éditeur d'une application métier : chacun a demandé un accès, chacun a reçu un compte ou une clé ajoutée dans authorized_keys, et la plus grande partie de ces accès est encore vivante des années après la fin des travaux.

    Vous ne voyez pas comment ces identifiants sont conservés. Une clé privée peut se trouver en clair sur un portable, dans un dossier cloud partagé, ou dans le répertoire personnel d'un salarié qui a quitté cette société il y a un an. Un accès accordé une fois survit généralement au projet comme à la personne à qui il était destiné.

    • Des clés ajoutées pour un seul déploiement et jamais retirées
    • Un compte unique pour toute l'équipe du prestataire au lieu d'un compte par personne
    • Personne ne vous prévient quand le personnel du prestataire change
  2. 07

    Les comptes de déploiement et d'automatisation ne peuvent pas utiliser de second facteur

    Les chaînes d'intégration continue, les scripts de sauvegarde, les agents de supervision, les tâches rsync et les outils de configuration doivent se connecter sans humain présent. Ils ne peuvent donc être protégés par rien qui demande un code à une personne - et ils détiennent généralement des droits plus larges que n'importe quel individu.

    Ces comptes restent donc tels quels : des noms prévisibles, des clés ou des mots de passe inchangés depuis des années, et un chemin de connexion qui fonctionne à trois heures du matin sans que personne ne le remarque. C'est eux que vise un attaquant, précisément parce qu'ils ne changent jamais.

  3. 08

    L'authentification par mot de passe est restée activée « au cas où »

    La connexion par clé est en place, et les mots de passe restent actifs en secours - pour le jour où une clé sera perdue, pour le collègue qui n'en a pas, pour la console que personne n'a testée depuis un an. L'intention est raisonnable ; l'effet est que toute la politique de clés devient facultative du point de vue de l'attaquant.

    La devinette se moque de l'existence des clés. Tant que PasswordAuthentication vaut yes pour un compte quelconque de la machine, l'attaque par dictionnaire dispose d'un chemin, et la clé la plus solide du serveur ne la ralentit pas d'une seconde.

  4. 09

    Des mots de passe qui figurent déjà dans une fuite

    La plupart des intrusions réussies n'ont rien d'astucieux. Quelqu'un a réutilisé un mot de passe d'un forum, d'une boutique ou d'une vieille boîte mail depuis divulguée, et cette même chaîne figure aujourd'hui dans un dictionnaire que chaque robot de balayage parcourt.

    Deviner cesse alors d'être une question de probabilité pour devenir une question de calendrier : le bon mot de passe est déjà sur la liste, reste seulement à savoir quand le robot arrivera à votre adresse. Les règles de complexité n'aident en rien ici, car un tel mot de passe peut très bien satisfaire toutes celles que vous avez écrites.

    • Un mot de passe identique entre un compte serveur et un service personnel
    • Des identifiants échappés des systèmes d'un prestataire, et non des vôtres
    • Des motifs qu'une politique accepte et qu'un dictionnaire contient déjà - Ete2024!, NomSociete1
  5. 10

    Une clé privée sans phrase de passe sur le portable de quelqu'un

    Les clés sont plus solides que les mots de passe, jusqu'au moment exact où le fichier de clé est copié. Un id_rsa non chiffré sur un portable volé, dans un dossier cloud synchronisé, dans une image de conteneur poussée vers un registre public ou dans un dépôt où il a été commité par inadvertance est un accès opérationnel qu'il n'y a même pas à deviner.

    Le serveur ne fait pas la différence. La signature est valide, le compte est réel, et la session ressemble exactement à celle du développeur. C'est pourquoi la bonne question n'est pas seulement qui détient une clé, mais ce qui se passe quand quelqu'un se connecte depuis un endroit où ce développeur n'a jamais mis les pieds.

/var/log/auth.log22:0023:0124:0225:0326:0427:0528:0629:07this month12 480blockedexported · signed

Quand le journal, l'auditeur ou l'hébergeur posent la question

Le troisième groupe porte sur les conséquences qui arrivent avant toute intrusion. Des tentatives qui n'ont jamais abouti coûtent malgré tout du disque, du processeur, de l'attention et de la crédibilité. Et tôt ou tard, quelqu'un hors de l'équipe technique pose une question à laquelle il faut répondre par des preuves et non par des assurances.

  1. 11

    Un auditeur, un assureur ou un client demande comment l'accès distant est protégé

    Les questionnaires de cyberassurance, les revues de sécurité des grands comptes et les cadres réglementaires sur les données de paiement ou à caractère personnel posent la même question avec des mots différents : qu'est-ce qui arrête la devinette répétée de mots de passe sur votre accès distant, et comment savez-vous que cela fonctionne ?

    « Nous utilisons des clés » ne survit pas à la question suivante, car celle-ci portera sur les comptes qui acceptent encore des mots de passe et sur les tentatives qui atteignent le port de toute façon. Ce qui est attendu, c'est une mesure indépendante de tout identifiant particulier, et une trace montrant qu'elle était en vigueur pendant toute la période examinée.

    • Un questionnaire de cyberassurance avant l'émission ou le renouvellement d'une police
    • L'évaluation fournisseur d'un grand client avant la signature d'un contrat
    • Des exigences sur les données de paiement ou personnelles imposant un contrôle anti-force brute
  2. 12

    auth.log et le disque se remplissent d'échecs de connexion

    Chaque tentative rejetée est consignée. Sur un serveur exposé, cela représente des dizaines de milliers de lignes par jour, et l'effet s'aggrave : la rotation évacue les vrais événements en quelques heures, l'expédition des journaux se facture au volume ingéré, et une petite partition racine peut réellement se remplir à cause d'un trafic qui n'allait jamais être admis.

    Le coût ne se limite pas au stockage. Chaque tentative consomme une connexion TCP, un échange de clés et une vérification d'identifiants ; la machine passe donc une part mesurable de la journée à répondre à des gens qu'elle ne laissera jamais entrer. Sur un VPS à un cœur, cette part est assez grande pour que le travail réel du serveur la ressente.

  3. 13

    Les listes de blocage tenues à la main sont devenues un travail à part entière

    La première réaction habituelle est un filtre local et une pile croissante de règles de pare-feu. Cela marche, un temps - puis le jeu de règles fait des milliers de lignes, plus personne ne se rappelle à quoi sert la moitié, une agence s'est retrouvée bloquée un matin chargé, et les mêmes plages d'adresses sont redécouvertes de zéro sur chaque nouvelle machine.

    Ce dont un parc a réellement besoin, c'est d'une politique décidée une fois et appliquée partout, d'exceptions consignées plutôt que mémorisées, et d'un blocage qu'il ne faut pas reconstruire à la main à chaque réinstallation d'un serveur.

  4. 14

    Un seul administrateur suit les serveurs de nombreux clients

    Les infogéreurs, les administrateurs système indépendants et les petites sociétés d'hébergement portent des dizaines de machines Linux chez des clients différents, chez des hébergeurs différents et dans des architectures réseau différentes. Chacune a ses règles, ses comptes et sa tolérance propre à l'interruption.

    Les configurer une à une à la main ne passe pas à l'échelle - pas plus que découvrir un problème au moment où le client téléphone. Un tel parc a besoin d'une base commune appliquée partout, d'exceptions au niveau de la machine là où un client diffère réellement, et d'un endroit unique où tout se voit d'un coup.

    • Des machines réparties sur plusieurs hébergeurs et plages d'adresses
    • Un client dont l'agence ne doit jamais être bloquée, si inhabituelle qu'elle paraisse
    • Des passations entre administrateurs sans perdre la raison d'être d'un réglage
  5. 15

    La liaison vers le serveur est instable, et la protection doit tenir quand même

    Les liens tombent, les opérateurs reroutent, le DNS casse, et une machine dans une baie distante peut passer des heures sans route vers l'extérieur. Les attaques ne s'interrompent pas pour autant ; au contraire, une panne réseau est exactement le moment où le serveur est le moins observé.

    Ce qui défend la connexion doit donc décider localement, sur la machine, sans dépendre de la joignabilité d'un service extérieur. Tout ce qui cesse d'appliquer ses règles en l'absence d'Internet ne protège que les jours où l'on n'en avait pas besoin.

Questions fréquentes

Est-il sûr d'installer SSH Protector sur un serveur de production ?

Est-il sûr d'installer SSH Protector sur un serveur de production ?

Oui. L'agent SSH Protector lit le journal d'authentification de son propre système d'exploitation et écrit des règles nftables qui filtrent le trafic entrant vers les ports protégés de ce même hôte. L'agent n'ouvre aucune socket en écoute, n'expose aucun canal de commandes à distance et n'initie que du HTTPS sortant. Rien dans l'agent ne peut agir contre une autre machine.

En quoi SSH Protector diffère-t-il de Fail2ban ?

En quoi SSH Protector diffère-t-il de Fail2ban ?

Fail2ban analyse le journal d'authentification, compte les échecs à l'intérieur de findtime et programme le pare-feu pour la durée de bantime, une adresse à la fois et sur ce seul hôte. SSH Protector résout la source vers son préfixe annoncé et bannit tout le /24 en une entrée d'ensemble nftables, conserve l'ensemble au fil des redémarrages au lieu de le laisser expirer sur un minuteur, lit systemd-journald via son API native plutôt que d'apparier des lignes de texte par expression régulière, et partage la réputation obtenue avec tous les autres hôtes protégés. Le tableau ci-dessus place les deux comportements par défaut côte à côte, et /guides/fail2ban-limitations traite les différences en détail.

SSH Protector utilise-t-il iptables ou nftables ?

SSH Protector utilise-t-il iptables ou nftables ?

SSH Protector programme nftables par défaut, à l'aide d'un ensemble nommé pour que de nombreux préfixes bannis tiennent derrière une seule consultation de règle au hook input de netfilter. Sur les hôtes dont le noyau ou la distribution suit encore l'ancien chemin, l'agent bascule sur iptables avec ipset, ce qui produit le même comportement au niveau des paquets. L'agent détecte le backend en usage au lieu de le supposer, et ne purge jamais des règles qu'il n'a pas créées.

Quels sont l'empreinte mémoire et le coût CPU ?

Quels sont l'empreinte mémoire et le coût CPU ?

L'agent est un exécutable lié statiquement dont le jeu résident reste sous 10 Mo et dont la consommation CPU reste proche de zéro entre deux événements d'authentification, car le travail par paquet a lieu dans le noyau et non dans l'agent. Le coût d'analyse des journaux est borné par la lecture de systemd-journald via son API native, plutôt que par le suivi ligne à ligne et l'appariement par expression régulière de /var/log/auth.log.

La protection fonctionne-t-elle sans connexion internet ?

La protection fonctionne-t-elle sans connexion internet ?

Oui. Chaque décision de bannissement est calculée sur l'hôte protégé à partir de son propre journal d'authentification : la protection contre le brute-force SSH continue donc sous la dernière politique appliquée pendant que le plan de contrôle est injoignable. Seule la réputation partagée a besoin de connectivité, et son absence réduit la couverture au lieu d'arrêter la protection locale.

Pourquoi ne pas utiliser eBPF ou XDP à la place ?

Pourquoi ne pas utiliser eBPF ou XDP à la place ?

Un programme eBPF attaché à XDP rejette les paquets dans le pilote réseau, ce qui est la bonne réponse à une inondation volumétrique. Un programme XDP ne peut pas lire /var/log/auth.log, ne peut pas observer un résultat PAM et ne peut pas distinguer un mot de passe faux d'un mot de passe juste : la décision du préfixe à rejeter provient donc toujours de l'analyse de journaux en espace utilisateur. Le trafic de force brute SSH est une faible cadence de paquets portant une tentative d'authentification à forte valeur, et le hook input de netfilter l'écarte bien avant que la cadence de paquets ne devienne la contrainte.

Que se passe-t-il si le port SSH a été changé ?

Que se passe-t-il si le port SSH a été changé ?

L'agent lit le port effectif dans sshd_config, dans ses fichiers drop-in sous /etc/ssh/sshd_config.d/ et dans les sockets en écoute de l'hôte, puis reconstruit ses règles nftables lorsque ce port change. Le port du démon FTP est découvert de la même façon : un port non standard est détecté plutôt que configuré.

SSH Protector peut-il verrouiller l'administrateur dehors ?

SSH Protector peut-il verrouiller l'administrateur dehors ?

Non. L'installateur ajoute à la liste blanche l'adresse depuis laquelle l'installation a été lancée avant que la première règle soit validée, et les sources en liste blanche sont évaluées avant tout chemin de blocage. La protection permanente contre le verrouillage bannit en outre un préfixe attaquant avant que le seuil deny de pam_faillock dans /etc/pam.d/sshd soit atteint : une attaque par force brute ne peut donc pas verrouiller le compte réel non plus.

Quelles distributions Linux sont prises en charge ?

Quelles distributions Linux sont prises en charge ?

Toute distribution à base de systemd sur x86-64 ou ARM64 : Debian, Ubuntu, RHEL, CentOS, AlmaLinux, Rocky Linux, Fedora et Alpine avec systemd. L'agent est livré comme un binaire lié statiquement : aucun interpréteur, aucun runtime Python et aucune dépendance de paquet n'a besoin d'être résolu sur l'hôte protégé.

Comment fonctionne le paiement ?

Comment fonctionne le paiement ?

Les paiements internationaux sont traités par PayPro Global en tant que marchand de référence, les paiements en Russie par YooKassa, la cryptomonnaie restant disponible en repli. La formule gratuite est permanente, couvre un serveur avec la protection complète contre la force brute et n'exige aucune carte.

Protection SSH avec authentification par mot de passe activée

J'ai laissé PasswordAuthentication activé et SSH a écouté sur l'adresse publique du serveur Linux. Il existe des milliers de mots de passe échoués provenant de différentes adresses IP et connexions dans auth.log, le déplacement du port 22 n'aide pas et l'accès ne peut pas être complètement bloqué. Comment puis-je configurer la protection SSH contre la force brute du mot de passe avant une connexion réussie ?

Avec SSH Protector, j'installe l'agent en tant que service systemd : il lit le journal d'authentification localement, détermine le port sshd réel et après un seuil d'une fenêtre de temps, bloque le réseau source dans le pare-feu système. J'ajoute à l'avance mon adresse ou mon VPN à la liste blanche, je contrôle l'historique dans le panneau et j'enregistre la dernière politique lorsque je perds Internet.

Gratuit sans SSH Protector Je désactive PasswordAuthentication et PermitRootLogin, laisse les clés sur Ed25519, limite AllowUsers/AllowGroups et autorise uniquement le port depuis VPN ou CIDR de confiance. Si un mot de passe est temporairement requis, je configure fail2ban à l'aide de journald/auth.log, vérifie nftables/iptables, définit findtime, maxretry et bantime, et teste régulièrement les exceptions à partir de la console de sauvegarde.

Protéger la connexion standard d'une image cloud Linux

J'ai déployé Ubuntu/Debian/RHEL à partir d'une image de cloud public, de sorte que le nom d'utilisateur Ubuntu, Debian, ec2-user ou root soit connu à l'avance des robots. Même avec un bon mot de passe, le journal est rempli de tentatives ciblées et un mot de passe erroné rend le compte vulnérable. Comment puis-je sécuriser SSH sur un VPS cloud avec une connexion standard ?

Avec SSH Protector, je bloque la source sur les échecs de connexion, quel que soit le nom essayé, et je peux étendre l'interdiction au réseau de l'attaquant. Je vérifie le port SSH trouvé, ajoute le VPN administratif à la liste blanche et utilise une solution d'agent local pour que la protection ne dépende pas de la disponibilité du panel.

Gratuitement, je désactive le mot de passe et les connexions root, crée un utilisateur distinct avec sudo, télécharge une clé unique via cloud-init et ferme le groupe de sécurité sur le VPN/mes réseaux. Je supprime les authorized_keys inutilisées, active MFA sur le bastion, configure les alertes fail2ban et de mot de passe/clé publique acceptés pour les sources inconnues ; J'envisage de changer le port uniquement pour réduire le bruit.

Protéger un seul VPS Linux avec un site Web et une base de données

J'ai un VPS Linux, où le site Web, la base de données et les sauvegardes fonctionnent simultanément, et SSH est nécessaire pour l'administration. Une connexion réussie en tant qu'utilisateur sudo donnera à l'attaquant l'accès à toutes les couches et lui permettra de supprimer les fichiers de sauvegarde locaux. Comment puis-je sécuriser SSH sur un VPS critique avec une charge minimale ?

Avec SSH Protector, j'installe un agent statique qui lit les événements locaux et bloque la source dans le pare-feu jusqu'à ce que le compte soit compromis. J'utilise la protection gratuite du premier serveur, je mets ma chaîne sur liste blanche et je m'assure que l'agent continue de fonctionner hors ligne ; Je laisse la sauvegarde et le moindre privilège en tant que couches distinctes.

Gratuitement, je verrouille SSH derrière WireGuard/Tailscale, désactive les mots de passe et root, exige une clé avec une phrase secrète et me limite à sudo. Je stocke les sauvegardes en dehors du VPS avec des informations d'identification distinctes, j'active les mises à jour de sécurité automatiques, fail2ban et l'audit des connexions réussies ; Je vérifie la console d'urgence du fournisseur avant de resserrer le pare-feu.

Protection SSH sur routeur, NAS et appareil Linux

Je gère un routeur Linux, un périphérique NAS ou ARM, que je ne considère pas comme un serveur à part entière, mais il exécute sshd et le port est accessible depuis le réseau externe. L'appareil est rarement mis à jour, les ressources sont rares et tout compromis lui permettra de prendre pied au sein du réseau local. Comment sécuriser SSH sur un appareil Linux basse consommation ?

Avec SSH Protector, j'utilise un binaire statique pris en charge pour l'architecture et systemd appropriés, j'active l'analyse des journaux locaux et le blocage du pare-feu sans port de contrôle entrant. Je vérifie la compatibilité du système d'exploitation et du pare-feu avant l'installation, je configure une liste blanche de gestion et je m'assure que l'agent ne surcharge pas les ressources limitées de l'appareil.

Gratuitement, je ne publie pas du tout SSH en externe : je connecte l'appareil via VPN, désactive le mot de passe et le root, autorise une clé et un sous-réseau de contrôle. Je mets à jour le firmware, désactive les services inutilisés, définis le fail2ban minimum uniquement s'il y a suffisamment de mémoire et enregistre la configuration du pare-feu ; Pour un système d'exploitation non pris en charge, je choisis une passerelle externe plutôt qu'un binaire inconnu.

Sécurité unifiée SSH et FTP sous Linux

J'ai SSH et FTP ouverts sur un hôte Linux, et les robots parcourent les deux services via différents journaux. L'adresse IP bloquée par le script sshd continue d'attaquer FTP et les chaînes iptables manuelles divergent. Comment puis-je bloquer de manière centralisée la recherche de mots de passe via SSH et FTP ?

Avec SSH Protector, j'active la lecture des journaux SSH et FTP pris en charge, je laisse l'agent déterminer les ports et j'applique une règle locale unique au réseau source. J'ajoute des intégrations fiables à la liste blanche, vérifie l'historique dans le tableau de bord et prends en compte le fait que la protection FTP avancée et les fonctionnalités supplémentaires peuvent dépendre du tarif.

Gratuitement, je remplace le FTP classique par SFTP sur SSH ou FTPS, si le protocole est vraiment nécessaire, et je ferme le service sur tout Internet. Je crée des prisons fail2ban distinctes pour sshd et FTP, je les dirige vers un nftables défini avec un délai d'attente, je vérifie le format du journal après les mises à jour et je désactive les comptes partagés.

Contrôler les connexions SSH des développeurs et des sous-traitants

J'ai fourni des identifiants Linux et des clés SSH distincts aux développeurs et aux sous-traitants, mais certaines clés ont été copiées sur des ordinateurs portables personnels et la liste des propriétaires était obsolète. Je dois arrêter la force brute, rappeler rapidement une personne et comprendre qui est entré sans utiliser une seule clé commune. Comment sécuriser l’accès SSH multi-utilisateurs ?

Avec SSH Protector, je laisse le blocage automatique du réseau sur toutes les sources externes et je mets sur liste blanche uniquement le VPN contrôlé, et non toutes les adresses IP domestiques. J'utilise le panneau pour les attaques, mais je sauvegarde l'identité dans des comptes et des clés Unix séparés : l'agent protège le périmètre et je révoque l'accès en supprimant une clé spécifique.

Gratuitement, je gère les authorized_keys de manière centralisée via Ansible, j'émets une clé par personne et par appareil avec un commentaire clair, je désactive les comptes partagés et je limite sudo. J'active VPN/MFA sur le bastion, fixe la période d'accès dans l'inventaire, collecte la clé publique acceptée avec empreinte digitale dans SIEM et supprime automatiquement la clé à la fin du contrat.

Sécuriser les comptes SSH professionnels sans MFA

J'ai des comptes de déploiement/sauvegarde qui sont utilisés par CI et l'automatisation, donc l'AMF interactive ne s'applique pas à eux. Leurs clés devraient fonctionner sans opérateur, mais compromettre le coureur ou répéter les mots de passe pourrait ouvrir le serveur. Comment puis-je protéger l’accès SSH de la machine sans interrompre le déploiement ?

Avec SSH Protector, je sépare les adresses des coureurs de confiance via une liste blanche précise et laisse toutes les autres sources bloquées en cas d'échec de connexion. Je ne considère pas que cela remplace le contrôle des clés : l'agent réduit la force brute de l'extérieur tandis que les restrictions du compte de service lui-même contiennent les conséquences d'une authentification réussie.

Gratuitement, j'utilise une clé Ed25519 distincte pour le travail, je la stocke dans un magasin secret, je la limite dans authorised_keys via from=, command=, no-port-forwarding, no-agent-forwarding et no-pty. J'autorise uniquement SSH à partir du réseau d'exécution, j'émets un minimum de commandes sudo, je fais régulièrement pivoter la clé et j'enregistre une empreinte digitale dans le journal de déploiement.

Désactivez en toute sécurité la connexion par mot de passe via SSH

J'ai laissé le mot de passe de connexion SSH "juste au cas où" car j'ai peur de perdre la clé ou d'être bloqué après avoir modifié sshd_config. En conséquence, PasswordAuthentication yes reste pendant des années et auth.log affiche constamment une sélection. Comment passer aux clés SSH sans risquer de perdre l’accès au serveur ?

Avec SSH Protector, j'installe d'abord une couche de protection supplémentaire et mets en liste blanche l'adresse administrative actuelle pendant que j'effectue la migration. L'agent bloque la force brute active, prend automatiquement en compte le port réel et laisse la stratégie hors ligne, mais après avoir vérifié avec succès les clés, je désactive toujours la connexion par mot de passe.

Gratuitement, j'ouvre une deuxième session SSH et la console du fournisseur, j'ajoute une clé unique, je vérifie les autorisations ~/.ssh 700 et authorised_keys 600, j'exécute sshd -t et je recharge sans fermer la première session. Ensuite, je définis le numéro de PasswordAuthentication, le numéro de KbdInteractiveAuthentication et le numéro de PermitRootLogin, vérifie la nouvelle connexion et enregistre la clé d'urgence séparément.

Réaction à la fuite du mot de passe SSH

J'ai découvert que le mot de passe de l'utilisateur Linux avait été divulgué et que des tentatives avec son nom provenant de plusieurs pays sont apparues dans auth.log. Je ne sais pas si la connexion a réussi car le serveur est utilisé à partir de différents réseaux. Comment puis-je fermer de toute urgence la recherche SSH et vérifier toute compromission ?

Avec SSH Protector, je bloque immédiatement les sources et les réseaux actifs, vérifie l'historique des attaques et laisse l'accès uniquement via une liste blanche de confiance. Ensuite, je change le mot de passe/clé publique, mets fin aux sessions et analyse séparément le mot de passe/clé publique accepté ; le blocage réduit la fenêtre d'attaque, mais ne prouve pas l'absence d'une connexion déjà réussie.

Gratuitement, je ferme temporairement le groupe de sécurité SSH ou nftables au VPN, bloque l'utilisateur, révoque les clés et modifie les secrets associés. Je vérifie last/lastlog, journalctl, sudo, les nouveaux utilisateurs/clés, les unités cron/systemd, les processus et les connexions réseau, puis restaure l'accès par clé uniquement et désactive les mots de passe réutilisés.

Protection par clé privée SSH sans phrase secrète

J'ai trouvé une clé SSH privée sans phrase secrète sur l'ordinateur portable d'un employé ; la clé est autorisée sur plusieurs serveurs et aurait pu se retrouver dans une sauvegarde ou un malware. Une telle connexion ne créera pas une série de mots de passe incorrects, donc une force anti-brute régulière ne l'arrêtera pas. Comment limiter les dégâts et protéger correctement les clés SSH ?

Avec SSH Protector, je continue de bloquer la force brute externe et de détecter les sources suspectes, mais je ne m'y fie pas pour trouver la bonne clé volée. Je supprime immédiatement l'empreinte digitale de tous les serveurs, émets une nouvelle clé avec une phrase secrète et laisse la liste blanche uniquement pour le VPN ; J'examinerai séparément les entrées réussies.

Gratuitement, je recherche l'ancienne clé publique sur toutes les authorized_keys, la révoque par gestion de la configuration et vérifie la clé publique acceptée par empreinte digitale et source. J'émets un matériel FIDO2/ed25519-sk ou une clé avec une phrase secrète et un délai d'expiration de l'agent ssh, je désactive le transfert d'agent sauf si nécessaire et je tiens un registre du propriétaire, de l'appareil et des dates de rotation.

Confirmer la sécurité SSH pour l'audit

Je dois montrer à l'auditeur, au client ou à l'assureur comment l'accès administratif SSH est protégé : quels ports et hôtes sont contrôlés, comment la sélection automatique est bloquée, qui est dans la liste blanche et que se passe-t-il en cas de perte d'Internet. Comment puis-je collecter des preuves vérifiables de la protection contre la force brute SSH ?

Avec SSH Protector, je joins un historique des attaques et des blocages, des paramètres de politique, une liste des services protégés et des exceptions approuvées. Je documente la solution locale de l'agent, le canal TLS sortant et l'absence de port de contrôle entrant, puis j'effectue de mauvaises connexions contrôlées et j'enregistre les lignes de journal, la règle de pare-feu et la notification.

Gratuitement, j'exporte sshd_config, nftables/ufw, fail2ban jail et changelog depuis Git, et j'envoie auth.log/journald vers un stockage sécurisé. Je vérifie chaque mois l'authentification par mot de passe, PermitRootLogin, MFA/VPN et teste la révocation des clés, signe le résultat et stocke les preuves pendant la période requise.

Diminution du volume auth.log en raison de la force brute SSH

Mon auth.log ou journald est rempli d'un mot de passe échoué et d'un utilisateur invalide, l'historique utile est perdu en raison de la rotation et l'analyseur de journaux gaspille des ressources. Je ne souhaite pas désactiver l'audit, car une connexion réussie doit faire l'objet d'une enquête. Comment puis-je réduire le flux d’événements de force brute SSH ?

Avec SSH Protector je bloque la source dans le pare-feu après une série d'échecs, donc les prochaines connexions TCP n'atteignent pas sshd et ne créent pas autant d'entrées. Je conserve un audit du système, contrôle séparément la taille/conservation du journal et utilise l'historique des attaques dans le panneau comme index, et non comme remplacement du journal d'origine.

Gratuitement, je ferme SSH au VPN/liste autorisée, désactive les mots de passe et les connexions standard et envoie fail2ban aux nftables définis avec un délai d'attente. Je configure SystemMaxUse et la rotation journald/rsyslog, j'envoie les événements Accepted et Key Failed à un syslog externe et je ne réduis pas LogLevel en dessous de la valeur nécessaire à l'enquête.

Automatisation du blocage Linux au lieu d'une liste noire manuelle

Je copie manuellement l'IP de auth.log vers ufw/iptables, mais les adresses changent rapidement, les anciennes règles ne sont pas supprimées, la chaîne s'agrandit et une erreur peut fermer mon accès. La prise en charge des listes noires est devenue une tâche quotidienne distincte. Comment puis-je automatiser le blocage par force brute SSH en toute sécurité ?

Avec SSH Protector, je définis le seuil et la fenêtre une fois, après quoi l'agent crée et libère les verrous localement et la liste blanche est prioritaire. J'utilise une interdiction de réseau où l'attaquant fait alterner les adresses voisines, vérifie les modifications dans le panneau et enregistre une console de sauvegarde avant la première politique.

Gratuitement, je remplace les règles iptables éternelles individuelles par nftables définies avec une action timeout ou fail2ban, je définis maxretry/findtime/bantime et ignoreip pour VPN. Je teste le filtre sur de vraies lignes de journal, j'active soigneusement la récidive, je limite la taille définie et je surveille les erreurs de rechargement après une mise à jour de la distribution.

Gestion de la sécurité SSH sur plusieurs clients

Je maintiens des serveurs Linux pour plusieurs clients sur Debian, Ubuntu, RHEL et ARM, chacun avec ses propres ports, réseaux de confiance et contacts. Les configurations locales de fail2ban et de pare-feu divergent, et une liste blanche commune entre les clients est inacceptable. Comment centraliser la sécurité SSH dans une flotte multi-tenant ?

Avec SSH Protector, je connecte les hôtes avec un agent pris en charge, je vois les ports et les attaques détectés à partir d'un seul panneau, mais je conserve les exceptions et les politiques dans les limites du serveur/client souhaité. J'applique les valeurs de référence, documente les écarts séparément et en informe le client responsable.

Gratuitement, je décris sshd, fail2ban et nftables dans des rôles Ansible avec un inventaire et un coffre-fort séparés pour chaque client, vérifie les modifications dans CI et collecte les journaux dans Wazuh/central syslog avec les balises de locataire. Je compare automatiquement la configuration avec la ligne de base et je ne combine jamais les clés, les CIDR et les secrets de différents clients.

Protection SSH hors ligne sur Internet instable

Mon serveur Linux est dans une succursale ou derrière un canal instable : le panneau cloud et DNS sont parfois indisponibles, mais SSH à l'intérieur ou via un port redirigé continue de répondre. La sécurité n'a pas besoin d'attendre une API distante pour chaque solution. Comment puis-je maintenir le blocage par force brute SSH hors ligne ?

Avec SSH Protector, j'applique la politique à l'agent à l'avance ; il continue de lire le journal local et de modifier le pare-feu du système vers la dernière configuration lorsque la communication avec le panneau est perdue. Je synchronise la liste blanche avant l'arrêt, vérifie l'historique accumulé après la restauration et n'ouvre pas le port de contrôle de l'agent entrant.

Gratuitement, je rends le contrôle entièrement local : nftables/ufw autorise SSH uniquement à partir d'un VPN ou des sous-réseaux requis, et fail2ban fonctionne via journald sans réseau externe. J'enregistre les règles de chargement, mets en place une file d'attente locale pour les notifications, teste un redémarrage sans DNS et quitte la console physique/fournisseur pour restaurer la règle erronée.

Remplacer fail2ban sans trou dans la protection

fail2ban tourne depuis deux ans sur ce serveur Linux et la jail sshd fonctionne. Je veux essayer un agent managé à la place, mais je ne peux pas laisser le port 22 sans protection, même quelques minutes, et je ne veux pas que deux outils se disputent les mêmes règles de pare-feu. Comment remplacer fail2ban par SSH Protector sans interruption ?

J'installe l'agent SSH Protector pendant que fail2ban continue de tourner. L'agent possède sa propre table nftables (inet sshprotector, ou un espace de noms ipset préfixé sur les hôtes plus anciens) et ne reconstruit que celle-là : il ne touche donc jamais aux chaînes de fail2ban et aucun des deux n'annule l'autre. À l'installation je mets d'abord ma propre adresse en liste blanche, puis je regarde le panneau pendant une journée pour vérifier que l'agent attrape les mêmes sources que la jail. Ce n'est qu'ensuite que j'arrête fail2ban et retire ses règles. Si je change d'avis, désinstaller l'agent emporte ses propres règles et laisse le pare-feu tel qu'il était.

Sans aucun agent, le passage entre deux outils qui lisent un journal se fait de la même façon. Laissez l'ancien tourner, donnez au nouveau son propre nom de chaîne ou de table pour que les règles ne se heurtent pas, comparez sur une journée complète de trafic réel ce que chacun a attrapé, et ne désactivez l'ancien qu'une fois que le compteur de bannissements du nouveau a cessé d'être le plus bas des deux. Ne retirez jamais l'outil qui marche en premier : quelques minutes sans protection sur un port SSH exposé suffisent à un botnet qui vous scanne déjà.

Choisir entre CrowdSec et un agent managé

Je compare les options de protection anti-brute-force SSH pour un petit parc Linux et CrowdSec revient sans cesse : open source, blocklist communautaire, couverture au-delà du seul SSH. Qu'est-ce que SSH Protector fait que CrowdSec ne fait pas, et comment trancher ?

Les deux résolvent des problèmes qui se recouvrent, mais par des bouts différents, et je choisis sur la forme plutôt que sur une note. CrowdSec est un moteur : un langage de scénarios, des composants de blocage à installer et raccorder soi-même, et une blocklist alimentée par tous ceux qui le font tourner ; sa portée dépasse largement SSH. SSH Protector est un binaire qui fait une chose : il lit le journal d'authentification SSH, SFTP et FTP, bannit tout le /24 de l'attaquant dans sa propre table nftables, garde ce bannissement après un redémarrage, détecte le vrai port sshd au lieu de supposer 22, et rend compte à un panneau qui me prévient quand un serveur protégé se tait. La réputation se partage entre comptes protégés, pas avec l'internet public.

La décision porte donc sur ce que j'ai réellement. S'il me faut de l'étendue - HTTP, bases de données, sources de journaux arbitraires, mes propres scénarios de détection -, CrowdSec a la place pour ça et ne coûte rien à faire tourner. Si ce que j'ai est une poignée de machines Linux avec un port SSH exposé et personne pour entretenir une pile de détection, je veux la chose étroite qui est juste sans configuration. Je n'ai pas mesuré les deux l'un contre l'autre sur le même hôte, donc je ne choisis pas sur des chiffres de performance - et ceux qui m'en citent ne devraient pas non plus.

Protégez votre premier serveur dès aujourd'hui

Le forfait Free reste gratuit pour toujours. Passez à un forfait supérieur en un clic quand vous en avez besoin.

Qui écrit ce logiciel, qui vous payez, et ce que l'agent peut faire sur votre serveur

Trois questions qui méritent une réponse avant d'installer quoi que ce soit avec des droits d'administrateur sur un serveur de production.

Qui écrit ce logiciel

SSH Protector est écrit par Victor G. Bobrov, spécialiste principal de la sécurité des serveurs chez Recovery Toolbox : 20+ ans en ingénierie système et sécurité, certifications Microsoft MCSD/MCDBA. Les règles de détection, la logique de blocage et les articles de ce site sont son travail, publiés sous son nom et non sous une marque anonyme. À propos de l'auteur →

Qui vous payez

L'éditeur est File Master LLC, société enregistrée en Bulgarie (UE) - Bulstat/TVA 180842207, bureau à Varna, joignable par téléphone et par e-mail. Les paiements sont traités par PayPro Global en tant que marchand officiel ; les conditions, la politique de confidentialité et l'accord de traitement des données sont publiés intégralement, pas résumés. Conditions d'utilisation · Politique de confidentialité · DPA

Ce que l'agent peut et ne peut pas faire

L'agent lit le journal d'authentification SSH de son propre hôte et écrit des règles nftables sur ce même hôte. Il n'ouvre aucun port entrant, n'a aucun canal de commande à distance et ne parle vers l'extérieur qu'en HTTPS. Il n'a aucune capacité offensive : rien en lui ne peut attaquer une autre machine. Les décisions de blocage sont prises localement, la protection continue donc de fonctionner même sans le cloud, et votre IP actuelle est mise en liste blanche à l'installation - l'agent ne peut pas vous enfermer dehors de votre propre serveur. L'installateur est signé. Comment ça marche →

Ressources : le protocole, les attaques et les normes dans lesquelles tout cela s'inscrit

La protection SSH contre la force brute n'est pas un sujet en soi : c'est le point de rencontre d'un protocole, d'une classe d'attaques et d'un ensemble de normes publiées. Voici les sources qui définissent chacun d'eux.

Recovery Toolbox / File Master LLC

Contacter Recovery Toolbox

Coordonnées de Recovery Toolbox et de File Master LLC, ainsi que le profil de Victor G. Bobrov, spécialiste sécurité principal de l'entreprise.

Bureau de l'entreprise

File Master LLC est l'entité juridique derrière les services en ligne et les logiciels de Recovery Toolbox.

File Master LLC
Serena app., office C13
Golden Sands, Varna, 9007
Bulgarie, Union européenne
Bulstat/TVA
180842207
Téléphone
+359 88 2253194

À propos de Recovery Toolbox

File Master LLC développe et maintient les services en ligne et les logiciels Recovery Toolbox pour réparer les fichiers, bases de données et formats de messagerie endommagés. L'entreprise se concentre sur des outils de récupération pratiques pour les utilisateurs, les informaticiens et les entreprises qui doivent restaurer l'accès à des données corrompues.

Vos commentaires et suggestions sont les bienvenus. Merci de nous envoyer votre avis sur le site web par e-mail : webmaster@recoverytoolbox.com

Victor G. Bobrov, server security specialist and author of SSH Protector
Spécialiste sécurité

Victor G. Bobrov

Spécialiste de la sécurité des serveurs · 20+ ans en ingénierie système et sécurité

Victor G. Bobrov dirige l'ingénierie de sécurité chez File Master LLC / Recovery Toolbox. Il conçoit la logique de détection et de blocage de SSH Protector : lecture du journal d'authentification SSH, distinction entre une attaque par force brute ou par pulvérisation de mots de passe et une simple faute de frappe, blocage du sous-réseau attaquant par une seule règle nftables, et partage de la réputation des attaquants entre les parcs protégés.

  • Protection contre la force brute
  • Durcissement de Linux et SSH
  • nftables et politiques réseau
  • MCSD
  • MCDBA
À propos de l'auteur →

Certifications Microsoft

Microsoft Certified Solutions Developer - MCSD. Microsoft Certified Database Administrator - MCDBA.

MCSD MCDBA