En nuestro día a día vemos, por desgracia, muchas páginas web y tiendas online infectadas Y es que ocurre más de lo que se cree. Según un estudio de Cyberedge Group 2022, el 91,8% de las organizaciones españolas se vieron comprometidas por uno o más ataques. Esto ocurre por diversos motivos, pero la principal causa 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 las últimas versiones de PHP (mínimo 7.4) 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 7.4, 8 y 8.1
- cPanel o plesk
- MySQL versión 5.7 o superior O MariaDB versión 10.3 o superior.
- SSL 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 la url de acceso al 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:
- https://es.wordpress.org/plugins/change-wp-admin-login/ (el más ligero y limpio)
- https://wordpress.org/plugins/wps-hide-login/ (el más utilizado)
- https://wordpress.org/plugins/defender-security/ (evitar soluciones todo en uno)
Poner un recaptcha 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.
Este plugin te ayudará. Te recomiendo la versión V3 de Recaptcha para que sea invisible.
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:
- https://wordpress.org/plugins/limit-login-attempts-reloaded/
- https://wordpress.org/plugins/login-lockdown/
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
Recientemente he descubierto un firewall ligero a nivel de .htaccess que se llama nG Firewall, os dejo con un par de artículos que explican cómo funciona y cómo se instala.
- https://ayudawp.com/mejor-cortafuegos-firewall-wordpress/
- https://ayudawp.com/integrar-cortafuegos-htaccess-firewall-cloudflare/
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 a nuestro functions.php de la plantilla.
function add_header_seguridad() { header( 'X-Content-Type-Options: nosniff' ); header( 'X-Frame-Options: SAMEORIGIN' ); header( 'X-XSS-Protection: 1;mode=block' ); } 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 "\.(jpg|jpeg|jpe|gif|png|bmp|tif|tiff|doc|pdf|rtf|xls|numbers|odt|pages|key|zip|rar|webp|mp3|mp4)$"> <IfModule mod_authz_core.c> Require all granted </IfModule> <IfModule !mod_authz_core.c> Order Deny,Allow Allow from all </IfModule> </FilesMatch>
O directamente bloqueando los archivos .php
<FilesMatch "\.(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>
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 panda el cú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.
¿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?
- Descarga la última versión segura de WordPress desde la web oficial.
- Descarga la última versión segura de la plantilla desde la fuente oficial y asegúrate de tener la licencia, si es necesaria.
- Descarga las últimas versiones seguras de todos los plugins que necesites.
- Sube una copia limpia de las imágenes y archivos de la carpeta /uploads/.
- Revisar si tenemos código malicioso en nuestra plantilla hija si la tenemos.
- 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 worpress, 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 vulerabilidades 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.
- 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 página como para el mantenimiento de tu WordPress.