Cómo mantener tu WordPress seguro

Cómo mantener tu WordPress seguro

En nuestro día a día vemos, por desgracia, muchas páginas web y tiendas online infectadas, y ocurre más de lo que se cree. Los ataques a WordPress están automatizados: bots que recorren internet buscando plugins vulnerables y contraseñas débiles, sin importar si tu web es grande o pequeña. La principal causa de las infecciones es la falta de mantenimiento de WordPress.

Existen otras causas que están relacionadas con el hosting y con las medidas que hay que tomar para proteger tu web. En este artículo quiero explicarte las medidas que debes tomar y de todos los aspectos que afectan a la seguridad de tu web. Porque ya sabes que lo importante es que tu página esté siempre operativa y que no pierdas información, tiempo o reputación ante un hackeo.   

Para evitar al máximo los ataques, estas son las medidas que deberías tomar:

Elige un buen hosting para tu WordPress

Para empezar, vamos elegir un buen hosting. Es importante trabajar con proveedores que tengan sus servidores actualizados, que ofrezcan versiones actuales de PHP (WordPress recomienda PHP 8.3 o superior) y que añadan seguridad extra como por ejemplo mod_security, fail2ban e incluso IMUNIFY360.

Características mínimas de un buen hosting WordPress

  • mod_security
  • fail2ban
  • PHP 8.3 o superior
  • cPanel o plesk
  • MySQL 8.0 o superior, o MariaDB 10.11 o superior (lo que recomienda WordPress)
  • Certificado SSL (HTTPS), por ejemplo de Let’s Encrypt
  • SFTP
  • phpmyadmin
  • IMUNIFY360
  • Copias de seguridad recurrentes y externas

Prevenir que accedan a nuestro panel de WordPress

A continuación vamos a darte unos consejos para prevenir el acceso al panel de administrador. No es necesario que estén todas estas medidas activas, pero te ayudarán mucho a evitar ataques o hackeos.

Modificar la URL de acceso a WordPress

Olvídate de utilizar /wp-admin/ o /wp-login.php para iniciar sesión. Es el enlace por defecto al crear un WordPress y es muy conocida. Lo mejor es cambiarla. Ya sabes, si un ladrón quiere entrar a tu casa por la puerta, esconde la puerta. 

Algunos plugins que te pueden ayudar:

Poner un captcha en el acceso de WordPress

¿Eres humano? entonces puedes acceder al panel de administración. Bloquea a esos ladrones bots que rompen las brecha de seguridad. 

Nuestra recomendación actual es Cloudflare Turnstile: es gratuito, normalmente invisible y no obliga a resolver puzles de imágenes. Google reCAPTCHA sigue siendo una opción, pero desde su paso a Google Cloud solo es gratis hasta 10.000 verificaciones al mes.

Establecer contraseña adicional en wp-admin mediante .htpasswd

Desde el servidor podemos establecer un usuario y contraseña que nos solicitará cuando accedamos desde el navegador. Si el ladrón consigue abrir la puerta, se va a encontrar con una caja fuerte detrás.

Poner doble verificación en el acceso de WordPress

No es la opción más cómoda, pero sí la más segura. Para acceder a tu web tendrás que introducir un código que sólo llegará a tu teléfono móvil.  Sólo con un código que te llegará al móvil podrás acceder a tu web.

No tener usuario con nombre «admin»

¿A que no pondrías (espero) de contraseña en tu banco 1234? Pues tampoco tengas un usuario admin en WordPress, si lo tienes, bórralo y crea uno con distinto nombre.

Limitar el número de intentos de inicio de sesión

¿Si intentas poner 3 veces el PIN en tu cajero de forma equivocada te bloquean la tarjeta, verdad? En tu WordPress debería ser lo mismo. No permitas intentos de inicio de sesión infinitos.

En caso de que tu hosting no tenga fail2ban de forma nativa, recomendamos algunos de estos 2 plugins:

Prevención de ataques en WordPress

Los incendios se apagan en invierno. Es decir, es importante hacer un buen trabajo preventivo para reducir la posibilidad de ataques y de disgustos.  Por eso deberías tomar las siguientes medidas:

Instalar un plugin que avisa de vulnerabilidades

Esta pequeña joya en forma de plugin llamada WPVulnerability es recomendable tenerla instalada en todos los WordPress, nos informará y nos notificará cuando un plugin que tenemos instalado, es vulnerable.

Utilizar un firewall

Con un cortafuego podemos evitar muchas peticiones al servidor, evitando así posibles intrusos y además, hará que se consuman menos recursos en el servidor y por lo tanto que la página vaya más rápida. Hay diferentes capas dónde se puede tener un firewall y nos protegerán de:

  • Exploits con fines maliciosos
  • Ataques de denegación de servicio (DDoS)
  • Fallos de seguridad XSS
  • Tráfico no deseado
  • Peticiones no deseadas
  • Inyección de malware

¿Dónde aplicar los Firewall?

Firewall en la capa de DNS

Esta es la primera capa de seguridad, a este nivel recomendamos utilizar y configurar correctamente Cloudflare, además nos añade protección extra contra ataques DDoS.

Firewall en la capa de Servidor

A nivel de servidor, también deberíamos de tener un firewall activo.

Plugin Firewall para WordPress

En este caso, no recomendamos utilizar un plugin de firewall para WordPress ya que ralentiza la página.

Firewall mediante .htaccess

Una opción ligera es la serie de reglas nG Firewall de Perishable Press, que se añaden al .htaccess. Estos artículos explican cómo funciona y cómo se instala:

Atrae a los bots a un agujero negro

Con el plugin Blackhole for Bad Bots, crearás una trampa a los robots maliciosos y podrás bloquearos fácilmente. Plugin muy sencillo de instalar, ligero y efectivo.

Códigos que harán de tu WordPress un poco más seguro

A continuación, vamos a ver cómo hacemos más seguro nuestro wordpress evitando que se accedan a archivos o evitando que se ejecuten procesos cuando no deberían.

Desactivar el editor de código interno de WordPress

Mejor desactivamos la opción para editar archivos desde el propio WordPress, esto lo haremos introduciendo el siguiente código en wp-config.php

define('DISALLOW_FILE_EDIT',true);

Añadir cabeceras de seguridad

Simplemente añadiremos este código al functions.php del tema hijo. La antigua cabecera X-XSS-Protection ya no la usan los navegadores actuales, así que la sustituimos por Referrer-Policy.

function add_header_seguridad() {
	header( 'X-Content-Type-Options: nosniff' );
	header( 'X-Frame-Options: SAMEORIGIN' );
	header( 'Referrer-Policy: strict-origin-when-cross-origin' );
}

add_action( 'send_headers', 'add_header_seguridad' );

Evitar ejecución de archivos .php en /wp-content/uploads/

Finalmente, vamos a generar un archivo htaccess adicional en la carpeta /wp-content/uploads/ para asegurarnos de que solo se puedan ejecutar archivos multimedia y se prohíba la ejecución de cualquier archivo PHP.

Para ello tenemos 2 opciones, especificamos los tipos de archivo que queremos permitir que se ejecuten:

<FilesMatch "(?i)\.(jpg|jpeg|jpe|gif|png|bmp|tif|tiff|doc|pdf|rtf|xls|numbers|odt|pages|key|zip|rar|webp|mp3|mp4|svg)$">
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
Order Allow,Deny
Allow from all
</IfModule>
</FilesMatch>

O directamente bloqueando los archivos .php

<FilesMatch "(?i)\.(php|phtml|php3|php4|php5|pl|py|jsp|asp|html|htm|shtml|sh|cgi|js|suspected)$">
    <IfModule mod_authz_core.c>
        Require all denied
    </IfModule>
    <IfModule !mod_authz_core.c>
        Order Deny,Allow
        Deny from all
    </IfModule>
</FilesMatch>

Protege los archivos wp-config.php y .htaccess

Añade este código también a tu archivo .htaccess

<FilesMatch "^(wp-config\.php|\.htaccess)$">
   <IfModule mod_authz_core.c>
      Require all denied
   </IfModule>
   <IfModule !mod_authz_core.c>
      Order Deny,Allow
      Deny from all
   </IfModule>
</FilesMatch>

Evitar el hotlinking de imágenes

El hotlinking es cuando otra web muestra tus imágenes enlazándolas directamente desde tu servidor: consumen tu ancho de banda sin que tú ganes nada. Con estas reglas en el .htaccess solo tu dominio (y los buscadores) pueden cargarlas. Sustituye tudominio.com por el tuyo:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?tudominio\.com [NC]
RewriteCond %{HTTP_REFERER} !(google|bing)\. [NC]
RewriteRule \.(jpe?g|png|gif|webp|avif)$ - [NC,F,L]

Si usas Cloudflare, puedes activar la protección contra hotlinking desde su panel sin tocar el servidor.

Tener un plan de mantenimiento recurrente

La mayoría de vulnerabilidades ocurren por no mantener los plugins, plantillas o el propio WordPress actualizado. Es por ello que es muy importante tener un  plan de mantenimiento mensual con el que por muy poco al mes vas a tener tu web protegida y además con copias de seguridad para poder recuperar la información en cualquier momento. 

Por supuesto, nosotros podemos ayudarte.

Aquí no voy a extenderme mucho pero en nuestros mantenimientos ofrecemos.

  • Actualizar plugins
  • Actualizar WordPress
  • Actualizar plantillas
  • Eliminar plugins inactivos 
  • Eliminar plantillas que no se utilicen
  • Evita los plugins desactualizados es recomendable buscar una versión alternativa
  • Revisar la versión de PHP y actualizar a la máxima posible.
  • Escáner en busca de vulnerabilidades
  • Revisar Herramientas / Salud del sitio

¡Me han hackeado! ¡Ayuda!

Que no cunda el pánico: la solución más viable a veces es recuperar tu página o tienda online con una copia de seguridad anterior a la infección e intentar aplicar todo lo que hemos visto anteriormente. Si no tienes una copia limpia o no sabes por dónde empezar, nuestro servicio de limpieza de WordPress hackeado se encarga de todo, con opción urgente en menos de 24 h.

¿Y cómo se si me han hackeado?

Herramientas externas

Con estas herramientas externas puedes detectar de forma externa código malicioso que se muestra en el front. No te quedes sólo con una, utilízalas todas, lo que no encuentre una lo encontrará la otra.

Plugins antivirus en WordPress

Estas herramientas recomendamos instalarlas para hacer un análisis interno, pero recomendamos desinstalarlas tras realizar la desinfección ya que hacen que vaya más lenta la web.

Google Search Console

Desde GSC podemos rastrear qué páginas tiene google indexadas y podemos identificar en los gráficos si de repente empiezan a crecer las páginas indexadas o las páginas 404 por ejemplo.

Si han conseguido indexar páginas que no tocan, tras la infección habrá que hacer redirecciones 410 y decirle a google que elimine todas las páginas maliciosas del buscador.

¿Cómo puedo hacer limpieza de mi WordPress hackeado?

  1. Descarga la última versión segura de WordPress desde la web oficial.
  2. Descarga la última versión segura de la plantilla desde la fuente oficial y asegúrate de tener la licencia, si es necesaria.
  3. Descarga las últimas versiones seguras de todos los plugins que necesites.
  4. Sube una copia limpia de las imágenes y archivos de la carpeta /uploads/.
  5. Revisar si tenemos código malicioso en nuestra plantilla hija si la tenemos.
  6. Buscar en la base de datos si hay código malicioso, incluso en los CRON

¿Ya tengo todos los archivos y base de datos bien, qué hago luego?

  • Cambiar todas las contraseñas, y cuando digo todas, son todas. Las de los usuarios de WordPress, las contraseñas de FTP, SSH, Bases de datos… nunca sabemos a lo que han podido llegar a tener acceso.
  • Haz un último escáner en busca de restos de vulnerabilidades o reinfecciones.
  • Si tienes alguna penalización por parte de algún antivirus, puedes solicitar que vuelvan a escanear la página para que te quiten de la lista negra. Te explicamos cómo en cómo notificar a los antivirus tras limpiar tu web de malware.
  • Elimina de google todas las páginas que se hayan podido indexar de forma indebida.

Como habrás visto en este artículo mantener un WordPress seguro no es tarea fácil. Hay muchos frentes a tener en cuenta y muchas variables que pueden darse.  Además, en muchos casos hará falta conocimientos técnicos para poder hacer las instalaciones y las modificaciones de código para asegurar nuestra web o tienda online. 

Lo mejor es delegar la seguridad en una empresa con experiencia y por supuesto, siempre puedes contar con nosotros tanto para desinfectar tu WordPress como para el mantenimiento de tu WordPress.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio