WordPress es seguro, pero el ser humano no. Y partiendo de esta premisa, hay que tener en cuenta que nada es 100 % seguro por sí mismo. Pero, ¿hay alguna manera de mejorar la seguridad de WordPress?
Este contenido forma parte de una serie de entradas sobre WordPress:
- Hosting para WordPress 6.6
- Seguridad para WordPress 6.6
- Caché para WordPress 6.6
- Optimización para WordPress 6.6
Cómo gestiona WordPress, la seguridad
¿Es WordPress seguro? La respuesta rápida y fácil es sencilla: Sí. Pero.
El núcleo de WordPress es un software que está revisado por muchísimas empresas y personas, además de pasar una serie de procesos y tiempos que hacen que cada lanzamiento sea lo más seguro posible. En cualquier caso, como todo software, es mejorable y de tanto en tanto aparecen vulnerabilidades. Aun así, en principio, no has de preocuparte si lo mantienes actualizado a la última versión menor disponible (esto es actualmente válido para la versión de WordPress 4.1 y superiores).
¿Qué es lo que hace que se diga que WordPress no es seguro? Tú. Básicamente, las personas que tienen y mantienen los WordPress son los responsables de que no sea seguro. Y aquí vas a descubrir algunas de las cosas a mejorar.
El punto débil de WordPress
Sí, WordPress tiene un punto débil, fácilmente corregible, que es el inicio de sesión. Lo bueno o malo es que la solución es tan sencilla como poner un usuario y contraseña exclusivos para tu sitio WordPress. Con eso, tienes la mayor parte del trayecto ganado.
WordPress, por defecto, en esta versión, no incluye de forma nativa un sistema contra ataques masivos o de segundo factor de autenticación (2FA), y esto es lo que hace que el punto más débil sea este.
Eso sí, no hace falta que cambies u ocultes la página del login. Da igual. Ese no es el problema.
El hosting
Lo más básico de WordPress es dónde lo vamos a poner. Es como si vamos a abrir una tienda y no tiene una cerradura, alarma, o cosas así.
Cuando hablamos de hosting y seguridad, hemos de ver cinco partes principalmente.
Configuración del hosting
La primera de las partes es la configuración. Necesitamos que, además de usar las versiones recomendadas de PHP, base de datos, servidor web y demás, también se haga una buena configuración.
No sirve de nada tener un PHP configurado como viene por defecto. Hay que revisar los ficheros del estilo a php.ini
, donde van algunos datos.
Lo mismo pasaría con la base de datos. No sirve de nada tener el my.cnf
que viene por defecto cuando se instala.
A esto le podemos sumar la configuración del servidor web (Apache, nginx…) que también deberían estar optimizados para WordPress.
Además de todo esto, que sería lo básico, hemos de instalar los componentes básicos del sistema operativo que el propio WordPress puede usar, o sus plugins. Por ejemplo, los plugins de copias de seguridad es muy probable que necesiten de mysqldump
o programas que permitan hacer los backups.
Otra cosa importante: los permisos de usuarios y ficheros. Cada sitio web debería tener su propio usuario, sus propios permisos de forma que no se compartan recursos con otros sitios y, por tanto, si un sitio es atacado, la afectación a otros sitios se minimice.
Mantenimiento del hosting
Independientemente del hosting que tengas, la empresa ha de preocuparse en hacer los mantenimientos del sistema operativo y de las versiones estables del software que se esté usando. Esto es, de nuevo, el PHP, la base de datos, el servidor web y, como decía, el propio sistema operativo.
Firewall a nivel de hosting
El hosting ha de proporcionarte una serie de medidas de seguridad mínimas. La más básica sería tener un pequeño firewall que controle algunos detalles. Por ejemplo, que todos los puertos estén cerrados, excepto aquellos que realmente se estén utilizando.
No es lo mismo tener un servidor con Plesk, cPanel o sin paneles, ya que cada uno de ellos necesitará una serie de puertos que han de funcionar en cada caso.
Para WordPress, en realidad, solo deberíamos necesitar unos pocos puertos:
- SSH: Por defecto es el puerto 22, pero podrías pedir que lo pongan en otro. Sería recomendable usar esto para el SFTP si hace falta acceder.
- Web: Por defecto deberíamos activar 3 puertos: TCP 80, TCP 443 y UDP 443. Esto cubre que se pueda navegar por el sitio.
¿Hacen falta más puertos? Para WordPress no. Si tu servidor tiene DNS, correo u otros elementos, es probable que tengas que usarlos, pero, como es mejor que WordPress no se mezcle con otros servicios, con esto hay suficiente.
Anti-DDoS
Es importante que tu proveedor de hosting tenga implementadas algunas medidas básicas para evitar ataques masivos. Es posible que sea algo básico, pero lo suficiente para mitigar los ataques más habituales.
Configuraciones extra
Hay unas pocas configuraciones extra que el proveedor de hosting podría darte.
Limitar el wp-login.php
No hace falta limitarlo por sí mismo, pero sí que te podrían dar un par de opciones.
Una de ellas es permitir limitar la cantidad de peticiones por segundo que se pueden ejecutar. Por ejemplo, 1 r/s (1 request / segundo). Con esto se podrían evitar ataques masivos y no sería necesario instalar algún plugin de «limit login» o similares.
Otra de las opciones que se pueden ofrecer es limitar ese fichero a algunas direcciones IP. Por ejemplo, si se trabaja con una VPN o con una IP fija, podría ayudar también a impedir el login en la plataforma.
Certificado TLS
Hoy en día todo el tráfico que se usa en WordPress debería funcionar por HTTPS, lo que significa que es necesaria la configuración de un certificado TLS, y por norma general seguramente será uno gratuito de Let’s Encrypt.
El proveedor debería instalarlo por defecto y dar opciones para el servidor web extras como que se haga un «upgrade» de todas las conexiones inseguras por defecto. De esta forma, si tienes alguna URL que sea HTTP, se pasará automáticamente a HTTPS, sin tener que instalar ningún plugin ni nada parecido que valide ese cambio.
El WordPress
Si nuestro hosting ya es seguro, el siguiente paso es la instalación y configuración de WordPress.
Configuración general de WordPress
Hay algunas cosas sencillas que deberíamos hacer en cualquier instalación nueva, y no tan nueva, que van a ayudar a mejorar algunos detalles.
Algo muy sencillo es verificar que la dirección de correo que hay en los ajustes sea correcta. Esta es la cuenta de correo de administración y este correo debería funcionar correctamente para poder recibir notificaciones de, por ejemplo, cuando falla WordPress, el sistema manda un aviso diciendo que falla…
Esto va asociado a otra medida importante: asegurarse de que llegan correos. Lo mejor, siempre, es tener un plugin de SMTP instalado y configurado. Por defecto, el servidor va a mandar el correo mediante el sistema de envíos de PHP; y puede que el correo no esté validado con el SPF, DKIM y DMARC de la cuenta, y los correos llegarán mal. Así que tener un plugin de SMTP y validar que el correo llega es importante.
Lo mismo, en los ajustes, tener configurada correctamente la zona horaria. Ten en cuenta que suelen estar los valores UTC, pero también los de las capitales de cada huso horario, por lo que, por ejemplo, si estás en España (peninsular), utilizar Madrid es mejor que UTC+1 o UTC+2 (o tener que cambiar la zona en verano e invierno).
Plugins interesantes para seguridad
Uno de los plugins más simples e interesantes de WordPress es [Block List Updater](https://es.wordpress.org/plugins/blacklist-updater/). Este plugin hace una cosa que es muy simple y que puede ayudar mucho contra el spam: rellena el campo de palabras rechazadas en los comentarios que, por defecto, viene vacío.
Este es un sistema nativo de WordPress, por lo que es de las cosas que se ejecuta fácilmente, rápido y que ayuda a mantener un mínimo de control sobre el spam sin necesidad de mandar fuera o analizar elementos que pueden ir en contra del RGPD.
Otro plugin que permite más configuraciones antispam es Antispam Bee, que hace todos los análisis en local, por lo que tu información no se manda a ninguna empresa tercera y permite bastantes limitaciones. En general, es activar y listo.
Otra regla básica (y legal) es tener ciertos datos de logs de cosas que han pasado en el sitio o quién ha hecho qué. Para esto tenemos Stream que permite hacer logs y buscar y filtrar todo lo que pasa. Como esto se puede hacer gigante, recomiendo que los logs solo se guarden durante 7 días.
Un elemento básico hoy en día son los 2FA o segundo factor de autenticación. Es posible que alguna gente te diga que con una limitación de login es suficiente, pero no lo es. Últimamente, tenemos muchos ataques que, con una única prueba de usuario y contraseña, funcionan porque han sacado los datos de contraseñas robadas de otros servicios y el usuario usa la misma contraseña, así que es importante activar el Two Factor en los usuarios de tipo Administrador y Editor, y muy recomendable en los Autor. En general, todos los niveles, excepto los suscriptores, deberían tenerlo obligatorio, y si es posible, directamente, todos.
Otro plugin que te informará de las posibles vulnerabilidades de tu sitio es WPVulnerability (nota, este plugin es mío) que te informará de eso, las vulnerabilidades de plugins, temas, el núcleo, e incluso PHP, Apache o nginx (si es capaz de leer las versiones). Es posible que te dé algún susto y, a la vez, te los evitará en el futuro.
Y aunque no es completamente un plugin de seguridad, el Health Check & Troubleshooting, que amplía la funcionalidad de Salud del Sitio incluido en WordPress, te puede ayudar, cuando el sitio tiene problemas, a encontrar qué es lo que está pasando sin que afecte a lo que los usuarios están haciendo.
¿Por qué no he puesto ningún plugin «de seguridad» o «de firewall» o similares? Porque no son necesarios, siempre y cuando mantengas tu sitio, tu hosting y, en general, todo… Si está todo al día, no deberías necesitar nada extra.
Mantenimientos de WordPress
Mucha gente se queja de que WordPress tiene muchas actualizaciones. WordPress en realidad no tiene muchas, ya que el núcleo suele lanzar versiones cada 3-4 meses, y las versiones menores, por defecto, se instalan automáticamente.
Que los plugins y temas tengan muchas actualizaciones puede ser bueno por varias razones. La primera, porque se añaden nuevas funcionalidades, que se supone que para eso lo tienes instalado. La segunda es que es posible que en esas actualizaciones vengan mejoras de seguridad menores o mayores.
Las vulnerabilidades de WordPress (y en un futuro con la CRA) son bastante públicas, por lo que hacer el esfuerzo de actualizar cada día y si no es posible, cada semana, y como mucho, una vez al mes, es básico.
Hay que tener en cuenta que tenemos 3 posibilidades en cuanto a hacer mantenimientos de nuestros sitios:
- Mantenimiento automático por WordPress. Tan sencillo como irse al panel de WordPress y configurar que todo se actualice. Desde WordPress 6.6 este sistema es bastante fiable, ya que si un plugin falla, el sistema vuelve a instalar la versión anterior.
- Mantenimiento automático por herramientas externas. Hay distintas herramientas que te ayudan con los mantenimientos. Pueden ser plugins propios de WordPress que se instalan y te permiten gestionar uno o varios sitios, o servicios de empresas de terceros.
- Mantenimiento manual. El nombre es bastante claro, ya lo hagas tú o lo haga alguien… revisando manualmente que todo funcione correctamente, haciendo copias de seguridad previas y posteriores, y documentando todo lo que varía.
Copias de seguridad
Tener copias de seguridad de tu sitio es algo imprescindible. Al menos una copia cada día por los «por si acaso».
Las copias de seguridad se deberían tener a varios niveles y en distintos sitios, e incluso con distintas tecnologías. Al menos dos sistemas distintos por dos métodos distintos.
Un sistema habitual te lo suele dar tu proveedor de hosting. Normalmente, suelen darte la posibilidad de configurar copias de seguridad de todo el servidor o cuenta, de forma que si falla algo a un nivel grande, se pueda restaurar todo.
Algunos de los sistemas son más granulares, como por ejemplo los de los paneles cPanel o Plesk, que te podrían permitir recuperar cada elemento por separado (correo, configuración, web…), algo que en general las copias del proveedor no consiguen, sino que te sobrescriben todo (con la posibilidad de perder información).
El otro nivel al que deberíamos ir es al del propio WordPress. Existen decenas de plugins de copias de seguridad y cada uno tiene sus ventajas e inconvenientes, su facilidad o complejidad en recuperar la información.
Algunos se limitan a hacer un ZIP con los ficheros y el SQL de la base de datos, y para restaurar tienes todos los elementos, pero es un proceso manual.
Otros te hacen una copia de seguridad en un sistema que, para recuperarlo, has de montar un WordPress vacío, con ese plugin, y restaurar mediante su propio sistema.
Otros te permiten generar un sistema de recuperación completamente autónomo y funcional y que con esos ficheros que genera puedes recuperar el sitio.
La decisión de qué sistema usar es tuya.
La otra cosa a tener en cuenta es cada cuánto y dónde se van a alojar las copias. Lo ideal sería tener una copia alojada en local, al menos (para una recuperación rápida) y varias copias alojadas en remoto (al menos unas 28 copias, aunque es recomendable algo más).
En remoto puede ser en cualquier sitio. Muchos plugins hoy en día permiten sincronizarse con Google Drive, Dropbox u otros sistemas donde almacenar esos datos.
Los usuarios
Como en cualquier sistema, el usuario es el elemento más débil de toda la cadena.
WordPress genera unas contraseñas medianamente seguras, pero los usuarios siempre tienen la posibilidad de poner una mala contraseña e indicar que se acepte esa contraseña poco segura.
Incluso, como es bastante habitual, los usuarios usan la misma contraseña en varios sitios, de forma que si consiguen el acceso a uno de ellos, gracias al usuario/correo y contraseña, suelen hacerse pruebas en otros sitios donde se conoce ese usuario.
Por eso, en lo que respecta a los usuarios es importante tener varios elementos presentes.
El primero, poner contraseñas seguras a los usuarios y los permisos correctos. En general, no hace falta acceder a los WordPress como Administrador, por lo que sí, tener uno o varios usuarios administradores bien protegidos, pero por norma general acceder con usuarios de nivel Editor o Autor.
Lo segundo, las contraseñas. Intenta que los usuarios actualicen sus contraseñas con cierta frecuencia o que las contraseñas sean seguras.
Ten un sistema que limite la cantidad de accesos permitidos. WordPress por defecto no lo tiene. Si tu hosting no te ofrece la posibilidad de limitar las peticiones, busca algún plugin de «limit login».
En cualquier caso, siempre activa en los usuarios Administrador y Editor un sistema de segundo factor de autenticación.
Tener un sistema que haga seguimiento en logs de lo que pasa en el sitio también es importante, ya que podrás ver, si alguien accede al sitio, qué ha ocurrido; si han instalado plugins, si han modificado contenidos…
Día a día
WordPress tiene muchas ventajas con respecto a otros gestores de contenidos, y en este caso es la de la retrocompatibilidad. WordPress permite que plugins o temas antiguos sigan funcionando relativamente bien aunque no se mantengan, pero con sus respectivos problemas de seguridad.
Hacer mantenimientos con cierta frecuencia (óptimo: diario; recomendado: semanal; mínimo: mensual) es imprescindible si queremos que nuestro sitio siga funcionando correctamente. Y no nos olvidemos de los mantenimientos externos a WordPress, como las versiones de PHP, y todo lo referente al sistema operativo.
Deja una respuesta