Sécuriser un site indépendant : pare-feu, restrictions de connexion, permissions de fichiers et analyse des malwares

80 % des piratages de sites indépendants passent par cinq failles courantes : extensions non mises à jour, mots de passe faibles, sauvegardes de base de données exposées, contournement de l'envoi de fichiers, attaque par force brute sur SSH. Pas besoin d'acheter des solutions de sécurité coûteuses : quatre étapes suffisent. Le groupe de sécurité cloud n'ouvre que...

独立站安全加固:四层防御与一条红线Site hardening: four layers of defense and one red line 被黑的站 80% 是弱口令和未更新插件,不是0day —— 加固先堵常见入口80% of breaches come from weak passwords and outdated plugins, not zero-days 层Layer 关键动作Key action 量化门槛Quantitative bar 1 防火墙1. Firewall 云安全组 + WAF · 只开80/443/SSHSG + WAF, open only 80/443/SSH SSH 限固定IP,禁密码登录SSH whitelist, key-only login 2 登录限制2. Login lock 失败5次锁30分钟 · 改默认路径Lock after 5 fails, rename admin path 2FA必须开,密码≥16位2FA on, 16-char min password 3 文件权限3. File perms 目录755 文件644 · wp-config只读dirs 755, files 644, wp-config 400 uploads 禁PHP执行No PHP execution in uploads 4 恶意扫描4. Malware scan 每周扫核心文件 · 比对哈希Weekly core-file hash check 插件主题7天内必须更新Patch plugins within 7 days 红线:被黑后第一动作不是查后门,是断开数据库写入并从最近干净备份恢复Red line: after a breach, restore from clean backup before hunting backdoors 在线清理会漏掉藏在cron和数据库里的webshell,恢复比清理更彻底Live cleanup misses DB/cron webshells; restore beats cleaning 常见被黑入口排名Top breach vectors 1. 未更新插件/主题漏洞 2. wp-admin弱口令 3. 数据库备份文件暴露在web目录1. Outdated plugins 2. Weak wp-admin passwords 3. Exposed DB backups 4. 文件上传绕过 5. SSH端口暴露+密码爆破 —— 前五类占独立站被黑事件的80%以上4. Upload bypass 5. SSH brute force — top 5 cover 80%+ of breaches
Sécuriser un site indépendant en quatre couches : pare-feu, restrictions de connexion, permissions de fichiers, analyse des malwares

Sécuriser un site indépendant : pare-feu, restrictions de connexion, permissions de fichiers et analyse des malwares

Conclusion d’abord :80 % des piratages de sites indépendants passent par cinq failles courantes : extensions non mises à jour, mots de passe faibles, sauvegardes de base de données exposées, contournement de l’envoi de fichiers, attaque par force brute sur SSH. Pas besoin d’acheter des solutions de sécurité coûteuses : quatre étapes suffisent. Le groupe de sécurité cloud n’ouvre que les ports 80/443 et le port 22 limité à certaines IP, wp-admin se verrouille 30 minutes après 5 échecs et impose la double authentification, les dossiers sont en 755 et les fichiers en 644 avec l’exécution PHP interdite dans uploads, et une comparaison de hachage des fichiers du cœur est lancée chaque semaine. Après un piratage, le premier réflexe n’est pas de nettoyer en ligne, mais de restaurer à partir de la sauvegarde propre la plus récente.

1. Pare-feu : ajoutez un WAF au groupe de sécurité cloud et fermez d’abord les ports inutiles

Beaucoup croient que le pare-feu est un logiciel installé sur le serveur. En réalité, pour un site indépendant hébergé sur un cloud, la première ligne de défense est le groupe de sécurité du fournisseur cloud. Le plus grand danger est de laisser les ports 3306, 6379 et 9000 ouverts par défaut : la base de données et Redis sont alors directement exposés sur Internet, et un scanner peut les forcer en quelques minutes. La bonne méthode : n’autoriser que les ports 80 et 443 dans le groupe de sécurité, et limiter le port 22 à l’IP de sortie fixe de votre entreprise.

La deuxième ligne de défense est le WAF (pare-feu applicatif web). La version gratuite de Cloudflare suffit : elle bloque automatiquement les injections SQL, les XSS et les scanners courants. N’activez pas des règles WAF trop agressives, sinon vous bloquerez de vrais visiteurs. Commencez par le mode journalisation pendant 3 jours, puis passez en mode blocage si le taux de faux positifs est inférieur à 1 %.

Port/service État par défaut État après sécurisation Raison
80/443 Ouvert à 0.0.0.0/0 Ouvert à 0.0.0.0/0 Doit rester accessible depuis Internet
22 SSH Ouvert à 0.0.0.0/0 Limité à l’IP fixe de l’entreprise, connexion par clé Cible privilégiée des attaques par force brute
3306 MySQL Souvent ouvert par erreur Autoriser uniquement 127.0.0.1 en local Ne jamais exposer sur Internet
6379 Redis Souvent ouvert par erreur Autoriser uniquement en local, définir un mot de passe Un accès non autorisé permet d’y écrire une clé publique
9000 PHP-FPM Socket local Rester en socket local, ne pas ouvrir en TCP Aucun accès Internet nécessaire
8888/Panneau Baota Souvent exposé Limiter par IP et changer le port par défaut Le panneau est une cible d’attaque fréquente

Exemple concret : un site WordPress sous panneau Baota, dont le groupe de sécurité était grand ouvert au lancement. Trois jours plus tard, le CPU du serveur montait à 100 %. En se connectant, on découvrait que le port 3306 était attaqué par force brute depuis des IP étrangères, et que les logs MySQL débordaient d’échecs de connexion. Après avoir limité le groupe de sécurité aux ports 80/443 et le port 22 à l’IP de l’entreprise, le CPU est retombé immédiatement à 5 %. Cet incident se règle en 10 minutes, mais la plupart des gens ne regardent même pas le groupe de sécurité au lancement.

Comment configurer les règles WAF : même logique que l’anti-spam des formulaires de contact: d’abord journaliser et observer, ensuite bloquer. Ne bloquez pas toutes les requêtes suspectes dès le départ.

2. Limiter les connexions : verrouiller la porte d’entrée des attaques par force brute

Sur WordPress, wp-admin est la première porte d’entrée des pirates sur un site indépendant. Nom d’utilisateur admin par défaut, mot de passe simple, page de connexion accessible publiquement : un scanner parcourt tout un dictionnaire en quelques heures. Contre-intuitif, mais vrai : installer une extension de limitation des connexions est plus efficace que n’importe quel produit de scan de sécurité, car la grande majorité des attaques par force brute n’atteignent jamais l’étape d’exploitation d’une faille : elles sont bloquées dès la page de connexion.

Le trio gagnant pour limiter les connexions : verrouillage 30 minutes après 5 échecs, changement du chemin de connexion par défaut (/wp-admin remplacé par une chaîne aléatoire), 2FA obligatoire. Mot de passe d’au moins 16 caractères, généré par un gestionnaire de mots de passe, jamais un mot suivi de chiffres. Idem pour SSH : désactivez l’authentification par mot de passe et n’autorisez que les clés.

Paramètre Valeur par défaut Valeur de durcissement Outil/mise en œuvre
Verrouillage après échecs Illimité Verrouillage 30 min après 5 échecs Wordfence ou fail2ban personnalisé
Chemin de connexion /wp-admin Chaîne aléatoire type /login-7f3k Extension WPS Hide Login
Authentification à deux facteurs Non 2FA TOTP obligatoire Wordfence ou Two Factor
Longueur du mot de passe 6 caractères ≥ 16 caractères aléatoires Généré par gestionnaire de mots de passe
Authentification SSH Connexion par mot de passe Clés uniquement, mot de passe désactivé sshd_config : mettre PasswordAuthentication no
Utilisateur de base de données root à distance Utilisateur dédié, accès local uniquement Créer un compte MySQL distinct

Exemple concret : un SaaS à l’international, page de connexion admin sur /secret-admin, 2FA activée, verrouillage 30 minutes après 5 échecs. Les logs montrent environ 2 000 tentatives de connexion par semaine depuis des IP étrangères, toutes bloquées, aucune réussie. Sans limitation, avec une force de mot de passe moyenne, la probabilité de succès d’une attaque par credential stuffing dépasserait 30 % en 3 mois.

Pour la stratégie globale de choix des extensions et de la stack technique, voir les quatre extensions maison de la stack crater.

3. Permissions de fichiers : empêcher l’exécution des fichiers malveillants téléversés

Les permissions de fichiers sont une couche que beaucoup négligent. Après un piratage WordPress, l’attaquant téléverse généralement un webshell PHP dans wp-content/uploads. Si le dossier uploads autorise l’exécution de PHP, ce webshell prend immédiatement le contrôle du site ; s’il l’interdit, l’attaquant a beau le téléverser, il ne s’exécute pas et reste impuissant.

Les permissions standard : dossiers en 755, fichiers en 644, wp-config.php en 400 (lisible par le propriétaire uniquement). Ne mettez pas tout en 777 par facilité, c’est comme laisser la clé sur la porte. Dans la configuration nginx, ajoutez une règle au dossier uploads pour interdire l’exécution des fichiers .php, .phtml, .php5, etc.

Approche Permission Propriétaire Explication
Racine du site 755 www-data:www-data Ne pas mettre 777
wp-config.php 400 root Illisible par le processus web
wp-content/themes 755 www-data Droits d’écriture nécessaires aux mises à jour automatiques
wp-content/uploads 755 www-data Exécution PHP interdite
wp-content/plugins 755 www-data Écriture nécessaire aux mises à jour d’extensions
Dossier .git Ne pas l’exposer sur le web — L’exposer divulguerait le code source

Autre cause fréquente de piratage : les fichiers de sauvegarde de la base de données stockés directement dans le répertoire web. Beaucoup de plugins de sauvegarde enregistrent par défaut le .sql.gz dans wp-content/backup/, et un attaquant qui tombe dessus le télécharge et récupère toutes les données du site. La bonne pratique : placer les sauvegardes en dehors de la racine web, ou les envoyer automatiquement vers un stockage objet après la sauvegarde et supprimer la copie locale. Voir la stratégie de sauvegarde dans Sauvegarde et restauration : s’entraîner à réagir.

4. Scans malveillants et correctifs : une fois par semaine, corriger sous 7 jours

Un scan malveillant ne se fait pas seulement après avoir été piraté. Lancez chaque semaine une comparaison de hachage des fichiers du cœur : si les fichiers du cœur WordPress ne correspondent pas aux hachages de la version connue, c’est qu’ils ont été modifiés. Les mises à jour des extensions et des thèmes doivent être faites sous 7 jours : entre la divulgation d’une faille publique et son exploitation par des scanners automatisés, la fenêtre moyenne est de 14 jours, donc corriger sous 7 jours permet d’éviter la majorité des attaques.

Il existe trois types d’outils de scan : les extensions comme Wordfence détectent les signatures de webshell connues ; ClamAV effectue une analyse antivirus au niveau du serveur ; l’analyse des logs serveur révèle des schémas d’accès anormaux. Utilisez-les ensemble, ne comptez pas sur un seul outil pour tout couvrir. Pour la méthode d’analyse des logs de robots IA, voir Analyse des logs de crawlers IA, la même méthode d’analyse des logs permet de détecter les scanners malveillants.

Point de contrôle Fréquence Outil Traitement des anomalies
Comparaison de hachage des fichiers du cœur Chaque semaine Intégrité du cœur via Wordfence Écart détecté, restaurer depuis une version propre
Mises à jour des extensions et thèmes Chaque lundi Back-office WP + logs Mise à jour obligatoire sous 7 jours
Scan de webshell Chaque semaine ClamAV ou Wordfence Isoler et supprimer les fichiers malveillants
Connexions suspectes Chaque jour Logs fail2ban Bloquer automatiquement les IP attaquantes
Fichiers récemment modifiés dans le répertoire web Chaque semaine find -mtime -7 Modification inattendue : vérifier immédiatement
Écritures anormales en base de données Chaque semaine Contenu base64 dans wp_posts Nettoyer le code eval caché

Rappel contre-intuitif : après un piratage, ne vous précipitez pas pour nettoyer en ligne. Le problème du nettoyage en ligne, c’est que les webshells et les tâches cron cachés dans la base de données ne sont jamais complètement supprimés, et l’infection revient deux semaines plus tard. La bonne procédure : couper l’accès public au site, restaurer depuis la dernière sauvegarde propre, changer tous les mots de passe et clés, vérifier les résidus dans les tâches cron et la base de données, puis remettre le site en ligne. Pour la procédure complète après un piratage, voir Nettoyage et réindexation après un piratage de site.

Pour la liste de contrôle quotidienne, voir Les six tâches mensuelles de la maintenance d’un site, intégrez-y le renforcement de la sécurité. Pour savoir comment définir les seuils d’alerte, voir Surveillance et alertes du site.

FAQ — Questions fréquentes

Votre site e-commerce a été piraté : que faire en premier ?
Ne nettoyez pas en ligne, cela ne suffit généralement pas. Le bon ordre : premièrement, basculez immédiatement le site en mode maintenance ou retirez-le du répartiteur de charge pour arrêter l’exploitation ; deuxièmement, restaurez tous les fichiers et la base de données depuis la dernière sauvegarde propre ; troisièmement, changez tous les mots de passe — wp-admin, SSH, base de données, FTP, panneau d’hébergement, tous ; quatrièmement, vérifiez les tâches cron et la table wp_options de la base de données pour détecter d’éventuelles portes dérobées ; cinquièmement, une fois la propreté confirmée, remettez le site en ligne et soumettez une demande de réexamen dans Google Search Console. Le nettoyage en ligne ne sert que de pansement temporaire, pas de solution définitive.
Faut-il acheter un WAF payant, ou la version gratuite de Cloudflare suffit-elle ?
Pour la grande majorité des sites B2B indépendants, la version gratuite de Cloudflare suffit. Elle bloque déjà les injections SQL de base, les failles XSS, les scanners les plus courants et applique une limitation de débit globale. Les règles WAF hébergées et la gestion des bots de la version Pro à 20 dollars par mois ne se justifient pas tant que vous n’avez pas de preuve d’attaque. Investissez plutôt dans la limitation des tentatives de connexion et les permissions de fichiers, le retour sur investissement sera meilleur. N’envisagez un WAF payant que si vous avez déjà été mis à terre par une attaque DDoS, ou si le spam de vos formulaires dépasse de plus de 10 fois le volume normal de demandes.
À quelle fréquence mettre à jour les extensions WordPress, et les mises à jour automatiques sont-elles sûres ?
Les correctifs de sécurité doivent être appliqués dans les 7 jours suivant leur publication, car la fenêtre moyenne d’exploitation d’une faille publique par les scanners automatisés est de 14 jours. Le cœur et les extensions de sécurité peuvent être mis à jour automatiquement, mais soyez prudent avec les extensions fonctionnelles : une mise à jour automatique entre parfois en conflit avec le thème et provoque un écran blanc. La bonne approche : activez les mises à jour automatiques pour le cœur, la sécurité et le cache, et testez vos extensions personnalisées en environnement de préproduction avant de les mettre en ligne. Lancez une mise à jour complète tous les premiers lundis du mois, avec une sauvegarde automatique avant chaque mise à jour.
Comment définir les permissions de wp-config.php et du dossier uploads ?
Passez wp-config.php en 400, propriétaire root, pour que le processus Web ne puisse pas le lire : même si le site est compromis, le mot de passe de la base de données reste inaccessible. Les dossiers en 755, les fichiers en 644, et ne cédez pas à la facilité du 777. Ajoutez une règle dans la configuration nginx ou Apache pour interdire l’exécution des fichiers .php, .phtml et .php5 dans le dossier uploads : ainsi, même si un attaquant y dépose un webshell, il ne pourra pas s’exécuter. Après avoir appliqué les permissions, parcourez l’administration WordPress pour vérifier que l’envoi d’images, les mises à jour d’extensions et les mises à jour automatiques fonctionnent normalement, afin qu’un réglage trop strict ne bloque pas votre activité.
Faut-il changer le port SSH par défaut 22, et peut-on garder la connexion par mot de passe ?
La connexion par mot de passe doit être désactivée, seules les clés sont autorisées. Changer le port par défaut bloque la moitié des scanners, mais ne remplace pas l’authentification par clé. La bonne méthode : dans sshd_config, réglez PasswordAuthentication no, PermitRootLogin no, PubkeyAuthentication yes, puis remplacez le port 22 par un port haut comme 52022, et enfin limitez le port SSH à l’IP de sortie fixe de votre entreprise dans le groupe de sécurité du cloud. Protégez votre clé par une phrase secrète et stockez-la dans un gestionnaire de mots de passe ; ne laissez jamais une clé privée sans mot de passe sur le serveur.
Comment détecter qu’un site a été piraté, y a-t-il des signes avant-coureurs ?
Cinq signes avant-coureurs sont fréquents : Google Search Console signale des logiciels malveillants, les outils pour webmasters référencent de nombreux mots-clés chinois de jeux d’argent ou pornographiques, le processeur et le trafic du serveur augmentent soudainement, une IP inconnue se connecte à wp-admin, ou du code suspect de type iframe ou eval apparaît dans le code source des pages. Lancez chaque semaine une vérification de l’intégrité des fichiers principaux avec Wordfence et traitez immédiatement toute différence avec les empreintes officielles. Activez aussi fail2ban pour surveiller les échecs de connexion : toute IP dépassant 50 échecs en une journée est bloquée automatiquement pendant 24 heures. Pour configurer les alertes de surveillance, voir Surveillance et alertes du site cet article.

Pour conclure

En matière de sécurisation, le plus coûteux n’est pas l’outil, c’est l’état d’esprit du “ça devrait aller”. Un site indépendant n’est pas une banque, mais c’est votre porte d’entrée pour les demandes de devis : s’il est piraté ou tombe en panne, vous perdez de vrais prospects. Les quatre couches de défense n’ont pas besoin d’être déployées d’un coup, mais il faut suivre l’ordre : d’abord fermer les ports, puis limiter les connexions, puis ajuster les permissions de fichiers, et enfin lancer l’analyse. Les trois premières étapes se font en un après-midi, avec le meilleur retour sur investissement.

Trois étapes concrètes : premièrement, connectez-vous au groupe de sécurité cloud et fermez les ports 3306, 6379 et 8888 qui ne devraient pas être exposés sur Internet, en limitant SSH à l’IP de l’entreprise ; deuxièmement, changez le chemin de wp-admin, activez la 2FA, verrouillez après 5 échecs et passez SSH en connexion par clé ; troisièmement, lancez une fois par semaine à heure fixe un contrôle de hachage des fichiers principaux et une mise à jour des extensions. Ces trois étapes faites, vous bloquez déjà 80 % des attaques courantes.

Une phrase à retenir : un site indépendant est rarement piraté par un hacker de génie, mais souvent à cause d’un mot de passe faible, d’une extension non mise à jour ou d’une sauvegarde de base de données exposée. Boucher ces trois entrées est plus efficace que d’acheter n’importe quel produit de sécurité.

Cratère
Cratère Expert Cratère

Officiel de l'organisme · Cratère Crater

Cratère (Crater) est une société de services d'expansion internationale spécialisée dans le développement de sites WordPress autonomes, le référencement Google et la croissance globale GEO, au service des secteurs du matériel intelligent, de l'équipement industriel, du SaaS et des énergies nouvelles.

Capacités produitLivre blanc méthodologiqueRapports sectoriels
965partages
78articles de base de connaissances