# Sécurité WordPress — snapshot 2026-06-25 (/var/www/toulouse) ## wp-config.php (durcissement) DISALLOW_FILE_MODS = true # OK : bloque install/MAJ/suppr + éditeur plugin/theme via admin DISALLOW_FILE_EDIT = false # redondant (FILE_MODS couvre déjà l'éditeur), à passer true par propreté FS_METHOD = 'direct' # OK WP_DEBUG = false # OK (pas de fuite d'erreurs) Salts/clés : 6 clés présentes # OK : rotées le 2026-06-24 WP_REDIS_* + WP_CACHE = true # cache (hors scope sécu) Permissions wp-config.php : -rw-r--r-- www-data:www-data (644) # OK lisible par FPM ## .htaccess - racine : bloc WordPress standard (rien de spécial sécu) - uploads/.htaccess : TLO-HARDENING -> Require all denied sur php/phtml/phar etc. # OK (anti-webshell) ## Permissions répertoires /var/www/toulouse, wp-content, plugins, uploads : drwxrwxr-x www-data:jerome (775) # le groupe 'jerome' a write -> à surveiller (compte humain dans le groupe d'écriture web) ## SSH (defense-in-depth) PermitRootLogin without-password # OK (clé only, pas de mot de passe root) PasswordAuthentication no # OK PubkeyAuthentication yes # OK KbdInteractiveAuthentication no # OK => SSH correctement durci. ## Mises à jour auto unattended-upgrades : installé + active # OK (patchs sécu OS auto) ## ===== POINTS FAIBLES OUVERTS ===== ### XML-RPC : ACTIVÉ (xmlrpc.php répond, system.listMethods OK) - expose system.multicall (amplification brute-force) + pingback (DDoS/SSRF). - WPML ajoute des méthodes translationproxy.* . - Reco : bloquer xmlrpc.php (Apache deny) sauf si réellement utilisé (Jetpack/app mobile). ### REST API user enumeration : EXPOSÉ - GET /wp-json/wp/v2/users -> 200, renvoie id/name/slug des comptes (ex: id 29 "Communication"). - Donne les logins aux attaquants -> couplé à xmlrpc = brute-force ciblé. - Reco : filtrer rest_endpoints pour users non authentifié, ou restreindre. ### WPML (sitepress-multilingual-cms 4.5.14) : NON À JOUR [CRITIQUE] - update = none via wp-cli car PREMIUM -> MAJ impossible sans licence OTGS. - C'est la faille (CVE-2024-6386, SSTI) qui a servi de vecteur d'intrusion. - Reco : MAJ manuelle via compte OTGS = action prioritaire côté client. ### Plugins obsolètes (update available) imagify, seo-by-rank-math, smart-slider-3, updraftplus, user-role-editor, complianz-gdpr, contact-form-7, advanced-custom-fields-pro, ultimate-social-media-plus. - DISALLOW_FILE_MODS=true => MAJ via admin bloquées : il faut MAJ via wp-cli (`wp plugin update`) ou désactiver temporairement la constante. À planifier. ### Plugin mort advanced-custom-fields (FREE) : inactive mais présent (ACF Pro déjà actif) -> à supprimer. ### Fail2ban : ABSENT (cf fail2ban.conf.txt) ### UFW : pas de rate-limit sur le port 22 (cf ufw.conf.txt) ## Comptes administrateurs (rappel, tous légitimes selon client) 11 bastienhkt747 | 5 ResponsableTLO31 | 27 refonte26 | 28 LRGD | 29 Communication | 30 Stagiaire (editor)