12 rue de Blénod, 54700 Maidières +33 6 87 42 95 30 Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. Lun-Ven: 8h/12h 14h/17h

SSH expliqué de A à Z : comprendre ce que nous venons de faire

Ce tutoriel a été rédigé à la suite d'une session de diagnostic et de nettoyage de sécurité réalisée sur un hébergement OVH mutualisé. L'objectif est de comprendre, pas à pas, ce que signifient chaque commande et chaque concept abordés lors de cette intervention.

1. SSH : qu'est-ce que c'est vraiment ?

L'analogie du téléphone sécurisé

Imaginez que votre serveur est une salle des machines à laquelle vous n'avez pas accès physiquement. FTP, c'est comme glisser des papiers sous la porte — vous pouvez déposer ou récupérer des fichiers, mais vous ne pouvez pas interagir avec ce qui se passe à l'intérieur.

SSH, c'est comme avoir un téléphone sécurisé, chiffré, directement relié à cette salle. Vous pouvez donner des ordres, lancer des programmes, modifier des fichiers, lire des logs — tout ce qu'un technicien ferait s'il était physiquement présent.

Le chiffrement

SSH signifie Secure Shell. Le mot « secure » est important : toute communication entre votre ordinateur et le serveur est chiffrée. Même si quelqu'un intercepte le trafic réseau, il ne voit que du bruit incompréhensible.

Client et serveur

SSH fonctionne en mode client/serveur :

  • Le serveur SSH tourne en permanence sur le serveur OVH, à l'écoute des connexions (port 22 par défaut)
  • Le client SSH est le programme que vous lancez sur votre ordinateur — sous Windows 10/11, il est intégré nativement dans le Terminal

2. La connexion : décryptage de ce que nous avons tapé

La commande de connexion

ssh 
PartieSignification
ssh Lance le client SSH
cfdtinteht-serge Votre identifiant sur le serveur OVH
@ Séparateur "utilisateur @ machine"
ssh01.cluster111.gra.hosting.ovh.net L'adresse du serveur SSH OVH (datacenter Gravelines)

L'erreur du :22

Le :22 collé au nom d'hôte est la syntaxe utilisée par les navigateurs web et les clients FTP, mais pas par SSH. En SSH, le port se spécifie avec l'option -p :

ssh -p 22 

Comme 22 est le port par défaut, on ne le précise généralement pas du tout.

Le prompt de connexion réussie

 (php/8.2/production/stable64) ~ $
  • cfdtinteht-serge : vous êtes connecté en tant que cet utilisateur
  • (php/8.2/production/stable64) : OVH vous informe de la version PHP active
  • ~ : vous êtes dans votre répertoire personnel
  • $ : le serveur attend votre prochaine commande

3. Les permissions Unix : comprendre le 0111

Le système de permissions

Chaque fichier ou dossier Unix possède des permissions appliquées à trois catégories : propriétaire, groupe, autres. Chaque catégorie dispose de trois droits :

LettreValeurSignification sur un dossier
r 4 Lire — lister le contenu
w 2 Écrire — créer/supprimer des fichiers dedans
x 1 Exécuter — entrer dans le dossier / le traverser

On additionne les valeurs : 7 = rwx, 5 = r-x, 1 = --x.

Pourquoi 0111 est dangereux

0111 = --x--x--x = tout le monde peut traverser le dossier, personne ne peut lire ni écrire. Votre client FTP ne peut pas lister les fichiers, vous ne pouvez pas supprimer le dossier, vous ne pouvez pas modifier les permissions depuis FTP. C'est une technique utilisée par les attaquants pour rendre leur code plus difficile à supprimer.

La commande chmod

chmod signifie change mode. Elle modifie les permissions :

chmod 755 /homez.533/cfdtinteht/www/api/language/cddbafc1d1d63a1b5983231ae33fcc25

755 = propriétaire : 7 (rwx), groupe : 5 (r-x), autres : 5 (r-x) — c'est la permission standard pour un dossier.

Pour corriger tous les dossiers en 0111 d'un coup :

find ~/www -type d -perm 0111 -exec chmod 755 {} \;

4. L'audit de sécurité : les commandes utilisées

Trouver les dossiers aux noms suspects

find ~/www -type d -name "[0-9a-f]*" 2>/dev/null

Cette commande cherche tous les dossiers dont le nom commence par un caractère hexadécimal. Les dossiers nommés en hash MD5 correspondent souvent à du cache légitime ou, comme ici, à des dossiers déposés par des attaquants. Le 2>/dev/null redirige les erreurs vers la corbeille.

Trouver les fichiers cachés

find ~/www -name ".*" -type f 2>/dev/null

Sous Unix, un fichier dont le nom commence par un . est caché — il n'apparaît pas dans un listing classique ni dans la plupart des clients FTP. Le fichier malveillant .tmp était précisément de ce type.

Chercher des signatures de malware

grep -r "thapi1.com" ~/www --include="*.php" -l

grep -r cherche récursivement dans tous les fichiers. -l affiche uniquement les noms de fichiers. Ici on cherche la signature du serveur de commande du malware.

Analyser les fichiers PHP récemment modifiés

find ~/www -name "*.php" -newer ~/www/configuration.php -mtime -60 2>/dev/null
  • -newer ~/www/configuration.php : modifié plus récemment que configuration.php
  • -mtime -60 : modifié dans les 60 derniers jours

5. Ce que nous avons trouvé et ce que ça signifie

Le dossier cddbafc1d1d63a1b5983231ae33fcc25

Situé dans /api/language/, ce dossier au nom de hash MD5 est caractéristique d'un webshell déposé par un attaquant. Les permissions 0111 avaient été positionnées pour empêcher sa suppression. Une fois chmod 755 appliqué, nous avons pu le supprimer avec rm -rf.

Le fichier .tmp dans libraries/

C'était le malware principal : un script PHP de type SEO cloaking qui détectait Googlebot et lui servait du contenu frauduleux depuis un serveur externe, tout en restant invisible aux visiteurs humains.

6. La session SSH en résumé : ce que nous avons fait

ÉtapeCommandeObjectif
Connexion ssh ... Accéder au serveur
Trouver dossiers bloqués find ~/www -type d -perm 0111 Identifier le dossier en 0111
Corriger permissions chmod 755 /chemin/du/dossier Débloquer la suppression
Supprimer le dossier rm -rf /chemin/du/dossier Éliminer le webshell
Audit dossiers suspects find ~/www -type d -name "[0-9a-f]*" Chercher d'autres anomalies
Audit fichiers cachés find ~/www -name ".*" -type f Trouver le .tmp malveillant
Analyse du .tmp cat ~/www/libraries/.tmp Lire le contenu du malware
Suppression du .tmp rm ~/www/libraries/.tmp Éliminer le malware
Vérification propagation grep -r "thapi1.com" ~/www --include="*.php" -l S'assurer de l'isolation
Déconnexion exit Fermer proprement la session

7. Ce que SSH permet que FTP ne peut pas faire

ActionFTPSSH
Déposer/récupérer des fichiers
Modifier des permissions bloquantes
Chercher du texte dans des milliers de fichiers
Voir les fichiers cachés (.htaccess, .tmp…) ⚠️ Parfois ✅ Toujours
Supprimer des dossiers imbriqués d'un coup
Lire les logs serveur

SSH est un outil de diagnostic et d'intervention que tout gestionnaire de site sérieux devrait maîtriser. Sans SSH, le malware .tmp serait resté indétectable, et le dossier 0111 aurait résisté à toute tentative de suppression via FTP.

Articles liés :

Besoin d'un audit de sécurité de votre site Joomla ? Contactez web54.fr pour une analyse complète de votre hébergement.