Seguridad WordPress para novatos

Esto no pretende ser ni por asomo un artículo exhaustivo sobre seguridad, lo escribo porque habitualmente me toca hacer este tipo de recomendaciones a alumnos, clientes y usuarios en general que están empezando con WordPress.  Voy a explicar una serie de medidas básicas de seguridad que cualquier usuario puede aplicar a su web.

Como disclaimer diré que muchas de estas mejoras se pueden (y deben) hacer directamente con código pero, dado que el objetivo de esta entrada es informar a la gente que está empezando, voy a sugerir soluciones basadas en plugin.

¿Sabes si tienes copias de seguridad?

Antes de nada asegúrate de que dispones de copias de seguridad actualizadas de tu web. Para esto primero pregunta a tu proveedor de hosting cada cuánto realizan ellos copias de tu servidor y si tiene algún coste hacer una restauración (algunos te cobran).

«El mejor plugin de seguridad es uno de backups»
– José Conti

Además de las copias que hace tu hosting es recomendable hacer también tú copias de seguridad de manera periódica y almacenarlas en un lugar distinto a donde está tu propia web, de manera que si por accidente se borra todo no pierdas también las copias de seguridad. Para esto se pueden usar plugins (yo he usado mucho Updraft Plus) o un servicio externo (en este momento uso ManageWP pero durante mucho tiempo usé VaultPress, que pertenece a Automattic). Para la primera opción, plugins, os dejo este enlace al sitio de Juan Aranda y este otro a Web Empresa. De la segunda opción, servicios externos, ya hablé en mi charla sobre mantenimiento web.

Finalmente, es importante que comprobéis que vuestras copias de seguridad y/o sistema de restauración funciona correctamente. ¡No esperéis a tener un problema para descubrir que vuestras copias de seguridad no sirven!.

¿Tienes todo tu software al día?

El siguiente paso es asegurarte de que tienes tu versión de WordPress, plugins, y el tema que estés usando actualizados a la última versión. Si no lo tienes claro existen varios servicios online (por ejemplo https://wpscans.com) que te permite hacer un análisis rápido para saber si estás usando software vulnerable. Usar sotfware «nulled» implica que tarde o temprano vas a tener un susto.

Todo actualizadito, gracias.

Y en general para estar al tanto de temas de seguridad os recomiendo suscribiros a la newsletter de WordFence.

¿A dónde vas con todo eso? Síndrome de Diógenes

Se deriva casi automáticamente del punto anterior, pero quiero mencionar expresamente que es muy recomendable borrar todos los plugins que no estemos usando. Y lo mismo en lo que se refiere a los temas (que por definición solo necesitamos tener uno).

Un plugin o tema desactualizado pueden convertirse un agujero de seguridad incluso aunque no estén activos así que ya sabes, borra todo lo que no estés usando. Si lo necesitas más adelante ya lo volverás a instalar.

¿Estás dando más información de la necesaria? Listado de autores

WordPress está pensado para que muchos usuarios distintos puedan colaborar en la publicación de contenidos y permite que estos contenidos se organicen y muestren por autores. En muchos Temas veremos que las entradas van firmadas («publicado por Menganito») y que el nombre del autor es un enlace a un listado con todas su publicaciones. Si os fijáis en la URL que os da suele ser algo parecido a esto:

https://example.com/author/menganito

Para ello WordPress usa como slug de esa URL (la parte que va al final) el nombre de usuario del autor (username), es decir, el mismo que se usa para iniciar sesión. Esto supone «regalar» a un posible atacante una de las tres cosas que necesita saber (que son URL de acceso, usuario y contraseña).

Quizá penséis que si vuestro tema no muestra un enlace a «Ver todas las entradas de Menganito» estáis a salvo, pero no es así. Podemos pedirle a WordPress que nos muestre todos los posts del autor con id=1 (que normalmente será el administrador) muy fácilmente.

Si probáis www.example.com/?author=1 veréis que os redirije https://example.com/author/menganito.

Para solucionarlo podemos hacer varias cosas. Lo más sencillo, sobre todo si solamente hay un autor en tu web, es deshabilitar estos listados por autor. Podéis instalar un plugin ad-hoc para ello, pero si estáis ya usando el plugin de SEO de YOAST viene con una opción de configuración de Títulos y metas para hacer que redirijan a la página de inicio.

Yoast SEO disable author pages

Si por el contrario resulta que sí que usáis distintos autores y queréis mantener estas páginas de listado os recomiendo usar el plugin Edit Author Slug que da la posibilidad de modificar el slug de los autores y hacer que sea distinto al nombre de usuario. Además el plugin nos permite cambiar las bases de las URLs también para poner «autor» en lugar de «author», por ejemplo. Podemos incluso definir bases distintas en función de los roles de cada usuario.

Bonus point: Es recomendable publicar siempre los posts con un autor que no tenga privilegios de administrador, preferiblemente que tenga permisos solo de colaborador. De esta manera si por lo que sea consiguen llegar a acceder con ese usuario todo lo que van a poder hacer es editar los contenidos pero nunca instalar plugins ni hacer ninguna otra cosa «seria».

¿Hay un robot llamando a tu puerta? Ataques de fuerza bruta

Un ataque de fuerza bruta consiste en probar usuarios y contraseñas hasta dar con la correcta. Si no protegemos nuestra instalación de WordPress esto es relativamente fácil de conseguir. Sobre todo si dejamos nuestro nombre de usuario accesible o -$deity no lo quiera- estamos usando uno llamado «admin», como hemos visto en el punto anterior.

Para evitar esto basta con instalar un plugin que «bloquee» de manera temporal la IP desde la que accede el atacante si falla varias veces la contraseña. La mayoría de los plugins de seguridad «gordos» traen este módulo pero si no queremos complicarnos la vida hay plugins que hacen eso y nada más que eso: se instalan, se activan y listo.

¿Hay alguien escuchando? Cifrado: HTPS & SSL

Todas las medidas descritas anteriormente de nada sirven su tus usuarios van por ahí diciendo en alto sus nombre de usuario y contraseña a todo aquel que pasa a su lado por la calle. El problema es que el protocolo HTTPS no va cifrado por defecto, de manera que si cuando tus usuarios inician sesión envían sus credenciales por HTTP usando una red pública (o si su ISP quiere espiarles) cualquiera que ande escuchando su conexión podría robarlas.

Para evitar esto existe la posibilidad de cifrar ese tráfico usando HTTPS y un certificado SSL. Hace unos años solamente los bancos y las webs más grandes cifraban su tráfico mediante HTTPS y SSL porque los certificados SSL tienen un coste anual y además modificar el tráfico tu web para pasarlo a HTTPS puede ser técnicamente complicado.

Por suerte hace un par de años se puso en marcha el proyecto Let´s Encrypt que a día de hoy casi todos los hostings ofrecen (si no te lo ofrecen, sospecha). Simplemente necesitaremos activarlo en el panel de control de nuestro hosting y a continuación instalar un plugin que se encarge de forzar el tráfico para que los usuarios accedan por HTTPS, el más usado para hacer esto es Really Simple SSL.

 

Actualización: Me ha contactado Bill Hess de PixelPrivacy mandándome este artículo que explica de manera muy detallada qué es un certificado SSL y por qué es importante usarlo, os lo enlazo a continuación:

What Is an SSL Certificate and Why You Should Care

Desactiva todo lo que no uses: XML-RPC & REST API

Además de todo lo mencionado anteriormente existen varias funcionalidades en el núcleo de WordPress que la mayoría de los usuarios no saben que existen y nunca llegan a usar. Entre ellas están el protocolo XML-RPC (que sirve para publicar entradas por email) y la Rest API (un sistema para acceder a la información de tu web de manera directa).

Estas funcionalidades no son en si intrínsecamente vulnerables, pero sí han sufrido vulnerabilidades que han sido explotadas para atacar WordPress y si no las vamos a usar siempre es preferible desactivarlas. Para esto, como en el caso de los ataques de fuerza bruta, podemos activar el módulo correspondiente en nuestro plugin de seguridad -si usamos uno tipo WordFence o iThemes- o usar uno pequeño que haga solamente eso, tanto parar desactivar el XML-RPC como la REST API.

Edit: Me dicen Fernando Tellado y José Conti que algunos plugins -entre ellos JetPack- necesitan que esté activo el XML-RPC para funcionar, así que ojo con este último consejo. Podéis leer más al respecto en este post de Wordfence.

Bonus track: Cambiar la URL de acceso

Si sigues todos los pasos descritos en los puntos anteriores estás relativamente a salvo. A mi como toque final me gusta cambiar la URL desde la que se accede a la página. Además de motivos de seguridad (evita ataques al login) creo que tiene la ventaja de a los usuarios les resulta más fácil recodar que a su web se entra por www.example.com/acceder que www.example.com/wp-admin ¿no?. Para ello yo suelo usar WPS Hide Login.

Si sigues todos estos pasos podrás dormir mucho más tranquilo 😀

5 comentarios en “Seguridad WordPress para novatos”

  1. ¡Guau, esta guía es genial! Es justo lo que necesitaba para mi web y la explicación me ha parecido muy fácil de seguir <3 Os agradezco mucho el esfuerzo que hacéis en esta blog para hacernos la vida más fácil al resto 🙂 ¡Un abrazo!

  2. Excelente Let’s Encrypt de a poco muchos Hosting los está soportando, la verdad que es automático y transparente en la mayoría de los paneles de ISP y luego es cuesitón de verificar los sitios.

Deja una respuesta

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