From 5ed2eaf3fefdd5f01581697588c3e80a68d42935 Mon Sep 17 00:00:00 2001 From: rafa Date: Fri, 31 Jul 2026 19:44:57 -0400 Subject: [PATCH] cutover: Wordfence entra en el plan (son 8 plugins, no 7) CDMON tiene ModSecurity a nivel de hosting: fue lo que detecto las subidas de wp-cl.php y health-check.php durante el incidente #183. En Hetzner, con Traefik, NO hay WAF ninguno. Migrar tal cual estrenaria servidor con una capa defensiva menos que la que tenia el sitio comprometido. Wordfence 8.2.2 instalado limpio desde wordpress.org en el staging y verificado: portada 200, wp-login 200, sin fatales, y fea-cloudflare-realip.php presente (sin el veria todas las visitas como si vinieran de Cloudflare). Queda en proteccion basica: el extended protection exige auto_prepend_file desde su asistente y eso se hace despues del cutover, no en la ventana. Anotado tambien que Wordfence y limit-login-attempts-reloaded solapan en el bloqueo de login; hay que decidir cual manda. Y documentada en el paso 6 la retirada de wordfence_core_options, que pese al nombre no es de Wordfence sino el payload de spam del atacante. Co-Authored-By: Claude Opus 5 --- docs/cutover/RUNBOOK-cutover-wordpress.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) mode change 100755 => 100644 docs/cutover/RUNBOOK-cutover-wordpress.md diff --git a/docs/cutover/RUNBOOK-cutover-wordpress.md b/docs/cutover/RUNBOOK-cutover-wordpress.md old mode 100755 new mode 100644 index e46219d..c675244 --- a/docs/cutover/RUNBOOK-cutover-wordpress.md +++ b/docs/cutover/RUNBOOK-cutover-wordpress.md @@ -108,6 +108,26 @@ Doble cinturón: además del rol retirado, el mu-plugin `fea-security-blocked-us `wp_authenticate_user` y `allow_password_reset` para esos tres IDs. **Va en el manifiesto de `docs/cutover/mu-plugins-manifest.txt`, no en un glob `fea-*`** — un glob se lo dejaría fuera. +El script retira además la opción **`wordfence_core_options`**, que **no es de Wordfence**: es el +payload de SEO spam que dejó el atacante (div oculto con enlaces a un casino, cifrado con un césar +de una letra). Está inerte —quien lo leía era `wp-highlits`, en cuarentena— pero **viaja dentro del +dump y cada import lo reintroduce**. + +## 6b. Plugins de seguridad — son 8, no 7 + +A los 7 plugins de producción se añade **Wordfence** (8.2.2, instalado limpio desde wordpress.org el +31-jul). Motivo: CDMON tenía **ModSecurity** delante a nivel de hosting —fue lo que detectó las +subidas de `wp-cl.php` y `health-check.php` en el #183—, y **en Hetzner con Traefik no hay WAF +ninguno**. Sin Wordfence, el servidor nuevo estrenaría con una capa defensiva menos que la que tenía +el sitio comprometido. + +⚠️ Wordfence queda con **protección básica** (a nivel de plugin). El *extended protection* exige +configurar `auto_prepend_file` desde su asistente; se hace **después** del cutover y con calma, no +en la ventana. + +⚠️ Wordfence y `limit-login-attempts-reloaded` solapan en el bloqueo de login. No es un conflicto, +pero conviene decidir cuál manda para no acabar con dos contadores distintos. + ## 7. Quitar el WP_HOME/WP_SITEURL del staging ```