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 SSH utiles dans ce contexte.
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 chaque élément
La commande de connexion
ssh
| Partie | Signification |
|---|---|
ssh | Lance le client SSH |
monlogin | Votre identifiant FTP/SSH OVH |
@ | Séparateur "utilisateur @ machine" |
ssh01.clusterXXX.gra.hosting.ovh.net | L'adresse du serveur SSH OVH (datacenter Gravelines) |
Le numéro de cluster (XXX) est propre à votre hébergement, visible dans l'espace client OVH sous Hébergements → FTP-SSH.
L'erreur fréquente 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) ~ $
monlogin: vous êtes connecté en tant que cet utilisateur(php/8.2/production/stable64): OVH vous informe de la version PHP active sur cet hébergement~: vous êtes dans votre répertoire personnel (/homez.XXX/monlogin)$: 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 :
| Lettre | Valeur | Signification 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 pour obtenir le chiffre de chaque catégorie : 7 = rwx (tous droits), 5 = r-x (lecture + exécution), 1 = --x (exécution seule).
Pourquoi 0111 bloque tout
0111 = --x--x--x = tout le monde peut traverser le dossier, mais personne ne peut lire son contenu ni écrire dedans. Conséquences pratiques :
- Votre client FTP ne peut pas lister les fichiers → il ne voit rien
- Vous ne pouvez pas supprimer le dossier → son contenu est protégé
- Vous ne pouvez pas modifier les permissions depuis FTP → vous êtes bloqué
Ce type de configuration peut être posé délibérément par un code malveillant pour rendre sa suppression difficile, ou résulter d'une mauvaise manipulation FTP.
La commande chmod
chmod signifie change mode. Elle modifie les permissions :
chmod 755 ~/www/dossier-bloque
755 = propriétaire : 7 (rwx), groupe : 5 (r-x), autres : 5 (r-x) — permission standard pour un dossier web.
Pour corriger tous les dossiers en 0111 d'un coup sous votre racine web :
find ~/www -type d -perm 0111 -exec chmod 755 {} \;
4. L'audit de sécurité : les commandes essentielles
Trouver les dossiers aux noms suspects
find ~/www -type d -name "[0-9a-f]*" 2>/dev/null
Cherche tous les dossiers dont le nom commence par un caractère hexadécimal (0-9 ou a-f). Les dossiers nommés en hash MD5 (32 caractères) peuvent correspondre à du cache légitime d'extensions (sliders, galeries) ou, dans un contexte suspect, à des dossiers déposés par un attaquant. Le contexte et l'emplacement font toute la différence.
Le 2>/dev/null redirige les erreurs vers la corbeille — utile pour éviter d'être noyé sous les messages "Permission non accordée".
Trouver les fichiers cachés
find ~/www -name ".*" -type f 2>/dev/null | grep -v ".htaccess" | grep -v ".well-known"
Sous Unix, un fichier dont le nom commence par un . est caché — invisible dans un listing classique et dans la plupart des clients FTP. On filtre les fichiers légitimes comme .htaccess pour ne garder que les résultats vraiment inhabituels.
Chercher une chaîne suspecte dans les fichiers PHP
grep -r "chaine-suspecte" ~/www --include="*.php" -l
grep -r cherche récursivement dans tous les fichiers PHP. -l affiche uniquement les noms de fichiers correspondants. Utile pour rechercher une URL de serveur externe, un nom de fonction malveillante ou toute signature identifiée.
Analyser les fichiers PHP récemment modifiés
find ~/www -name "*.php" -newer ~/www/configuration.php -mtime -60 2>/dev/null \
| grep -v "/cache/" | grep -v "/vendor/"
-newer ~/www/configuration.php: modifié plus récemment que votreconfiguration.php(référence stable)-mtime -60: modifié dans les 60 derniers jours- Les
grep -vexcluent les dossiers de cache et vendors qui génèrent beaucoup de bruit
5. Les types de menaces rencontrées
Le dossier au nom de hash MD5 dans un répertoire inhabituel
Un dossier nommé avec 32 caractères hexadécimaux situé hors des dossiers de cache habituels (ex. dans /api/language/ ou à la racine de /images/) est un signal d'alerte. Les extensions légitimes créent leurs caches dans des chemins documentés. Un dossier en 0111 dans un tel emplacement mérite une investigation immédiate.
Une fois les permissions rétablies avec chmod 755, on peut lister et supprimer son contenu :
ls -la ~/www/chemin/vers/le/dossier/
rm -rf ~/www/chemin/vers/le/dossier/
Le fichier PHP caché de type SEO cloaking
Un fichier caché (nom commençant par .) contenant du PHP dans un dossier core Joomla comme /libraries/ est caractéristique d'un malware de type SEO cloaking. Ce type de script :
- Détecte si le visiteur est un robot de moteur de recherche (analyse du User-Agent)
- Si oui, contacte un serveur externe et retourne du contenu frauduleux à la place de vos vraies pages
- Reste totalement invisible aux visiteurs humains
Résultat : le moteur de recherche indexe du contenu frauduleux à votre place (jeux, paris, contenu adulte), votre référencement se dégrade sans raison apparente visible.
Pour lire le contenu d'un tel fichier avant de le supprimer :
cat ~/www/libraries/.nomfichier
Puis le supprimer :
rm ~/www/libraries/.nomfichier
6. Checklist d'audit SSH en cas de suspicion
| Étape | Commande | Objectif |
|---|---|---|
| Débloquer dossiers verrouillés | find ~/www -type d -perm 0111 -exec chmod 755 {} \; | Rétablir l'accès |
| Dossiers suspects (hash MD5) | find ~/www -type d -name "[0-9a-f][0-9a-f][0-9a-f]*" | Identifier les droppers |
| Fichiers cachés hors légitimes | find ~/www -name ".*" -type f | grep -v ".htaccess" | Trouver les fichiers masqués |
| Fichiers PHP récents | find ~/www -name "*.php" -mtime -30 | grep -v cache | grep -v vendor | Détecter les ajouts récents |
| Recherche de signature | grep -r "eval\|base64_decode\|system(" ~/www --include="*.php" -l | Repérer du code obfusqué |
| Vérifier les JS injectés | grep -r "document.write\|unescape" ~/www --include="*.js" -l | Détecter les injections JS |
7. Ce que SSH permet que FTP ne peut pas faire
| Action | FTP | SSH |
|---|---|---|
| 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 | ❌ | ✅ |
| Lancer des recherches récursives sur tout le site | ❌ | ✅ |
SSH est un outil de diagnostic et d'intervention indispensable pour tout administrateur de site sérieux. Il permet de débloquer des situations impossibles à résoudre via FTP, et constitue le premier outil à maîtriser en cas de suspicion de compromission.
Articles liés :
- Se connecter en SSH à son hébergement OVH — guide débutant
- Permissions de fichiers et malware caché : l'attaque Joomla décryptée
Besoin d'un audit de sécurité de votre site Joomla ? Contactez web54.fr pour une analyse complète de votre hébergement.

