Pulsa ESC para cerrar

Curso WordpressCurso Wordpress

Endurece todos los WordPress de tu servidor cPanel

Hay tres ajustes básicos que todo WordPress en un servidor compartido debería tener, y que suelen quedar olvidados al crear una cuenta o migrar un sitio. endurecer-wordpress.sh los aplica a todos los sitios a la vez y no toca lo que ya está bien, así que se puede correr las veces que quieras.

Antes de empezar

  • Necesitas un VPS o servidor dedicado con cPanel/WHM y acceso root (desde WHM → Terminal basta).
  • Los scripts se probaron en AlmaLinux 10 con cPanel 138, PHP 8.3 de EasyApache (/opt/cpanel/ea-php83) y WP-CLI instalado en /usr/local/bin/wp. Si tu servidor usa otra versión de PHP, cambia la ruta ea-php83 en el script.
  • Pruébalos primero en un horario tranquilo y lee lo que hace cada uno antes de ejecutarlo. Se comparten tal cual, sin garantía: adáptalos a tu servidor.

Qué hace

  • Desactiva el editor de archivos del panel de WordPress (DISALLOW_FILE_EDIT): si alguien entra al panel con una contraseña robada, no puede inyectar código desde ahí.
  • Deja wp-config.php con permisos 600: solo el dueño de la cuenta puede leer las contraseñas de la base de datos.
  • Deja public_html en 750 con grupo nobody: el servidor web puede mostrar el sitio, pero una cuenta no puede leer los archivos de otra.

Instalación

Entra a WHM → Terminal (como root) y pega este bloque completo de una vez. El siguiente código crea el archivo /root/endurecer-wordpress.sh, le da permisos y comprueba que quedó bien escrito:

cat > /root/endurecer-wordpress.sh <<'EOF'
#!/bin/bash
PHPCLI=/opt/cpanel/ea-php83/root/usr/bin/php
for cfg in /home/*/public_html/wp-config.php; do
  W=$(dirname "$cfg"); U=$(stat -c %U "$W")
  if grep -q "DISALLOW_FILE_EDIT" "$cfg"; then
    echo "$U: editor ya desactivado"
  else
    sudo -u "$U" -- $PHPCLI /usr/local/bin/wp --path="$W" --skip-plugins --skip-themes \
      config set DISALLOW_FILE_EDIT true --raw --type=constant >/dev/null 2>&1 \
      && echo "$U: editor desactivado" || echo "$U: ERROR al desactivar el editor, revisar"
  fi
  [ "$(stat -c %a "$cfg")" != "600" ] && chmod 600 "$cfg" && echo "$U: wp-config.php ajustado a 600"
done
for d in /home/*/public_html; do
  U=$(stat -c %U "$d")
  if [ "$(stat -c '%a %G' "$d")" != "750 nobody" ]; then
    chgrp nobody "$d" && chmod 750 "$d" && echo "$U: public_html ajustado a 750 nobody"
  fi
done
echo "Revision terminada"
EOF
chmod 700 /root/endurecer-wordpress.sh && bash -n /root/endurecer-wordpress.sh && echo SCRIPT_OK

Si al final aparece SCRIPT_OK, el script está listo. Si no aparece, el bloque se pegó incompleto o con comillas cambiadas: vuelve a pegarlo.

Cómo usarlo

/root/endurecer-wordpress.sh

Cómo leer el resultado

  • Por cada cuenta indica qué ajustó («editor desactivado», «wp-config.php ajustado a 600», «public_html ajustado a 750 nobody») o «editor ya desactivado» si no había nada que hacer.
  • Termina con «Revision terminada». Si aparece «ERROR al desactivar el editor», revisa esa cuenta a mano.

Cuándo usarlo

  • Después de crear una cuenta nueva con WordPress.
  • Después de migrar un sitio al servidor.
  • Si el chequeo completo marca «Editor desactivado: NO».

Los permisos 750 con grupo nobody funcionan cuando PHP corre con el usuario de cada cuenta (PHP-FPM, el modo por defecto en cPanel moderno). Pruébalo primero en un sitio y confirma que sigue cargando.