Siguiendo con el tema de la anterior entrada, otro de los aspectos a tener muy en cuenta cuando utilizamos WordPress para montar un sitio web es la seguridad. Debido a la gran cantidad de webs que funcionan en este sistema, WordPress se ha convertido en el blanco de muchos ataques que buscan explotar vulnerabilidades en dudoso beneficio de anónimos piratas. Esto puede comportar que utilicen tu web para enviar SPAM, que te roben cuota de tráfico del servidor para fines ilegales, que instalen malware y que este capte desde tu web datos personales de tus visitantes. Nada que sea deseable, desde luego.
¿En qué medida me afecta?
La forma en la que estos infractores suelen realizar sus actividades invasivas es inyectando código en tu web, ya sea introduciéndolo por una grieta de seguridad o rompiendo tu protección por contraseña a través de ataques de fuerza (saturando el servidor con múltiples peticiones).
Algunos podréis argumentar que vuestra web no es la de un banco, que ni siquiera tenéis tienda online o que no sois tan importantes cómo para que los piratas se fijen en vosotros. Pero nada más alejado de la realidad: los daños son mayoritariamente causados por máquinas que van peinando la web automáticamente en busca de fallos o debilidades que explotar. Cualquier recurso fácil de conseguir es bienvenido para estos modernos piratas.
¿Qué podemos hacer en primer lugar?
Aunque lo mejor es tomarnos lo más en serio posible la seguridad de nuestra web, hay una lista de medidas a tener en cuenta cuando instalamos WordPress que, a pesar de variar un poco de unos autores a otros, tiene unas bases fijas útiles, algunas de las cuales son relativamente sencillas de llevar a cabo.
Preparando la instalación
Antes de realizar la instalación es importante elegir una buena contraseña al crear la base de datos que albergará la información dinámica de nuestro sistema. Más adelante explico qué significa una buena contraseña.
Cuando rellenemos el fichero de configuración config.php, todavía previo a la instalación, podemos cambiar el prefijo de las tablas de la base de datos, cosa que dificultará la tarea de intrusos que pretendan acceder a ella. Esto se consigue cambiando $table_prefix = ‘wp_’; por algo más elaborado cómo $table_prefix = ‘56kY34_oh6e78h_’; (Sólo admite números, letras y guiones bajos).
Otras recomendaciones menos obvias y fáciles serían ocultar la versión de WordPress, cambiar las claves de seguridad, reubicar u ocultar el archivo config.php, proteger el archivo .htaccess, deshabilitar la navegación entre directorios, etc. Podéis encontrar más información aquí.
Ya en la instalación WordPress nos preguntará por un nombre de usuario y una contraseña. Estos son los datos para el usuario administrador por defecto, lo que supone que va a tener acceso a todas las áreas del back-end o panel de administración. Que estos datos sean seguros es de vital importancia ya que tanto los motores que buscan vulnerabilidad como las personas que intenten acceder a nuestro espacio de administración de la web lo van a tener más o menos fácil.
El nombre de usuario no debe de ser ninguno del tipo “admin”, “administracion”, etc. Tampoco es seguro ninguno de los nombre que incluyan el dominio o un usuario visible en los datos que aparecen públicos en la web. En caso de esta web en la que escribo, “organigrafic”, “organigrafic2015”, “jose2015”, etc. están altamente desaconsejados.
Una contraseña fiable debe de hacer uso de todas las opciones que nos brinda el sistema. En este caso en concreto tendremos hasta un máximo de 31 caracteres entre los cuales están las letras, números y símbolos. Una buena contraseña hará uso de todos estos y además en un orden totalmente aleatorio, sin que se intuya ningún significado. Un ejemplo: 3Kb\,K}\Bp5Wq=/“‘sRft{++bM@kq%$. Otro tipo de contraseñas, como la de acceso a la base de datos o a la cuenta FTP pueden estar más limitados en el número de caracteres y sobretodo en el uso de caracteres especiales (seguramente sólo permitirán números y letras).
Más allá de la instalación
Una vez instalado WordPress debemos fijarnos en la seguridad de el tema y los plugins que utilicemos.
Los temas de pago conseguidos gratuitamente en la red son una potencial fuente de agujeros de seguridad que han podido dejar aquellos que los distribuyen ilegalmente. En cuanto a los temas gratuitos que descarguemos fuera del repositorio del propio WordPress, debemos asegurarnos de que son de autores de los que nos podamos fiar. Los temas no utilizados es recomendable que los desinstalemos para minimizar el riesgo y el trabajo de mantenimiento.
Los plugins son una gran fuente de vulnerabilidad en nuestro WordPress. Para mí, como para muchos otros, la clave está en instalar sólo los necesarios y elegir los que tengan una buena reputación entre estos últimos. Otra medida más que útil es desinstalar todos los plugins que no vayamos a utilizar en un futuro, evitándonos riesgos deliberádamente innecesarios.
Mantenimiento
Otra de las medida imprescindibles es mantener nuestro sistema al día, instalando todas las actualizaciones que salgan, tanto del propio WordPress como del tema y especialmente de los plugins. En cuanto las vulnerabilidades son conocidas y se esparcen por la Red, es más que probable que incluso aficionados intenten explotarlas. Los creadores de plugins con buena reputación suelen sacar con bastante rapidez una actualización que soluciona el problema de un agujero de seguridad descubierto.
El problema que suele presentarse con las actualizaciones es que en algunos casos, sobretodo en el caso del tema si hemos personalizado su código, es que posteriormente algunas funcionalidad no se comporten como lo hacían hasta ahora. Para ello es recomendable realizar copias de seguridad antes de cada actualización e incluso disponer de un entorno de prueba si el riesgo que corremos es alto. Este trabajo, si podemos, es mejor dejarlo en manos de un profesional.
Copias de seguridad
Las copias de seguridad regulares son la mejor idea para evitar desastres causados por ataques o por fallos propios o del servidor. Limpiar una web infectada con código inyectado es trabajoso, incluso utilizando aplicaciones que nos ayuden a identificar los cambios, como DiffMerge, para Mac. Una vez identificado el ataque (cuanto antes mejor) podemos restaurar la web en el punto anterior a este y habremos perdido sólo los últimos cambios (los comentarios son lo más difícil de recuperar).
Yo utilizo el plugin BackUpWordPress para hacer tanto copias de seguridad de la base de datos como completas (base de datos + ficheros). A mí es la que más cómoda me resulta, pero hay varias más de calidad, es cuestión de gustos.
¿Cómo sabemos que nuestra web ha sido atacada?
Dependiendo de donde tengamos alojada la web —y sobretodo de si nuestra infección afecta el funcionamiento de otras webs alojadas en el mismo lugar— en algunos casos será nuestro proveedor de “hosting” mismo quien nos avise de nuestro problema. Normalmente este aviso viene precedido de la suspensión temporal del servicio, de manera que nuestra web ya no está accesible al público y/o nuestro servicio de correo electrónico no está operativo.
Otra forma de enterarnos puede ser que al intentar acceder a nuestra web nos sorprenda un mensaje de alerta en el navegador indicando que es probable que la web contenga contenido malicioso y recomendándonos no acceder a ella.
También puede ocurrir nuestros correos enviados lleguen marcados como SPAM (lo cual sería ya grave), etc.
Conclusión
Incluso muchas de las medidas citadas anteriormente en el artículo pueden tornarse inservibles si tenemos nuestra web alojada en un servidor compartido (la mayoría lo son) y nuestros compañeros de piso se dejan la puerta abierta.
Como en todo caso debemos de estar preparados para lo peor, es recomendable ayudarse de diversos plugins que nos faciliten la ardua tarea de velar por la seguridad de nuestra web en WordPress.
Añadiendo a los plugins de copia de seguridad podemos hacer uso de otros como son los que previenen el SPAM (esta vez el que entra en nuestras páginas), los que buscan código malicioso, los que previenen de ataques de fuerza, etc.
En este enlace tenéis un artículo con copiosa información al respecto.
Yo, personalmente, además de lo anterior, utilizo el plugin de seguridad Wordfence en las webs en las que me ocupo del mantenimiento. Bloquea ataques de fuerza bruta, chequea la web en busca de código malicioso o de diferencias entre el código original de WordPress y plugins o temas del repositorio, repara modificaciones en el código, oculta la versión del sistema, comprueba que las contraseñas elegidas sean seguras, nos ofrece información sobre IP’s que intentan entrar en el sistema, etc. Con la opción gratuita tengo suficiente, pero existe una versión Premium de pago más completa. El plugin iThemes Security también es muy común y tiene buena reputación aunque yo no lo he probado.
También estoy suscrito a la newsletter de Wordfence, que me mantiene al día de las vulnerabilidades que se descubren el los plugins más conocidos y utilizados, lo que resulta de mucha utilidad, echa un vistazo por ahí que seguro que hay listas de correo u otros donde puedas estar al día de estos temas.
Un vídeo interesante para aprender cómo funciona todo este mundo es la clase abierta y grabada de Desarrollo Web sobre seguridad.
En todo caso, decidas lo que decidas, la seguridad de tu WordPress es una cosa seria a tener muy en cuenta.