Mejorar la seguridad de WordPress

Mejorar la seguridad de WordPress

22 de febrero 2021

WordPress es uno de los CMS más usados en el mundo del desarrollo web por su gran versatilidad y por contar con una excelente comunidad a su alrededor. Aunque se trata de un gestor bastante seguro, esa relevancia que comentaba antes hace que sea objeto de ataques continuos. Si bien la protección total de un sitio no existe, sí que podemos tomar una serie de medidas de seguridad que nos permitirá al menos añadir un extra de protección a las que el propio WordPress ya incluye. Así que ya sea porque hemos sufrido un ataque con malware o simplemente porque queremos evitar sufrirlo

Ten encuenta que algunos de los puntos que veremos a continución requieren tener ya algunos conocimientos previos sobre desarrollo web, por lo que si avanzando llegas a un punto en el que no estás muy seguro de qué hacer lo mejor es que pares y consultes a un profesional. Si no conoces a ninguno, puedes escribirme a través de mi página de contacto explicando qué necesitas y te atenderé en horario laboral tan pronto como sea posible.

Por otro lado si eres una persona intrépida o simplemente te dedicas a esto del desarrollo web, adelante y vamos al lío, intentaré orientarte del mejor modo posible.

Recomendaciones

Antes de entrar a ver mejoras específicas, voy a haceros algunas recomendaciones de seguridad básicas que si bien por su lógica ya debes saber, no por ello son menos importantes.

  • Usa contraseñas más complejas, que incluyan mayúsculas, minúsculas, números y caracteres especiales siempre que sea posible. Vamos, que tu contraseña no sea 1234, por favor. Y renuévala cada cierto tiempo.
  • No compartas las contraseñas a través de conexiones no seguras. Si vas a pasarlas por email, asegúrate de que tu correo va cifrado y no uses aplicaciones de mensajería que no aseguren este tipo de conexiones.
  • Procura prestar atención a la seguridad de tus dispositivos. Sí, eso de tener un antivirus y antimalware mal no te va a venir.
  • Es un poco lata, pero te diría que de vez en cuando limpies los datos almacenados en el navegador, ya sabes: caché y cookies. Si no lo quieres hacer manualmente puedes usar algún programa tipo CCleaner.

Mejoras de seguridad

Y pasamos a ver algunas mejoras de seguridad para proteger una instalación de WordPress. Te recomiendo que hagas una copia de seguridad de la web antes de ponerte a implementar estas medidas, ya que modificaremos partes relevantes de la web y un descuido puede hacer que empieces a transpirar de manera considerable.

Cambiar prefijo de las tablas en la base de datos

Cuando hacemos una nueva instalación de WordPress se nos permite poner un prefijo a las tablas de la base de datos. Por defecto veremos que vendrá relleno el campo para que sea wp_ pero es muy recomendable poner un prefijo diferente, no importa cuál sea ya que no repercute en el funcionamiento de la web. Esto vamos a hacerlo porque la información relevante se almacena en la base de datos y si dejamos el prefijo predeterminado, estamos dando al posible atacante unos datos muy valiosos sobre cómo se llaman las tablas.

En caso que estés trabajando con una base de datos ya creada de antemano, el asunto es un poco más delicado de hacer. Lo primero será cambiar el prefijo en todas las tablas dentro de la base de datos, si no sabes cómo hacerlodespués deberás ir a las tablas wp_options y wp_usermeta para actualizar el prefijo en los asientos correspondientes dentros. Por último debes ir al archivo wp-config.php y cambiar el valor en $table_prefix = 'wp_'; por el que hayamos definido antes.

Permisos de los archivos

Este es un tema al que generalmente no se le presta mucha antención, pero que si lo tenemos bien controlado permite restringir  la modificación externa de archivos dentro del servidor.

Lo que vamos a hacer es asignar permisos 644 a todos los archivos de la instalación de WordPress y a los directorios aplicaremos 755. Dependiendo de tus conocimientos podrás hacerlo a través de FTP, que es quizá el método más sencillo o bien usando SSH.

Por último el archivo wp-config.php debería tener permisos 444 para protegerlo contra escritura, ya que contiene información muy relevante sobre la base de datos.

Cambiar acceso al login del backend

Ya sabrás que por defecto la ruta de acceso al panel de control es la misma para todos y es algo que no se puede modificar directamente desde WordPress. Esto hace que ante un posible ataque de fuerza bruta se tenga un objetivo claro desde el principio. Por eso es recomendable cambiar la ruta de acceso para despistar un poco más y no ponerlo tan fácil. Por desgracia WordPress no incluye de manera nativa ningún modo para realizar este cambio desde el panel de control, así que tendremos que recurrir a plugins como o directamente realizar nosotros mismo las modificaciones correspondientes en el código.

Por sencillez yo voy a mostraros cómo hacerlo con un plugin llamado WPS Hide Login, pero puede valeros cualquiera en el que tengáis confianza.

Usuario admin para acceder

No es buena idea utilizar como usuario admin para gestionar el backend de WordPress, ya que es el más común y probablemente el pimero que se usará en un ataque de fuerza bruta. Y este otro es secundario, pero si me apuras tampoco te recomiendo que uses el nombre de tu dominio o tu nombre si ya es público, prueba a usar alguno que no se pueda vincular directamente con la web. Siempre podrás poner el alias púbico para los comentarios que quieras.

Claves de seguridad

Este tema ya lo traté hace unos años, pero de manera muy pormenorizada debes saber que desde WordPress cuenta con unas claves de seguridad que añaden elementos aleatorios a las contraseñas de acceso dificultando un posible ataque. Se encuentran en el archivo wp-config.php y puedes añadirlas o cambiarlas siguiendo los pasos que os comento en el enlace anterior.

Límite de intentos de acceso

Otra buena medida adicional para paliar los ataque de fuerza bruta es establecer un límite de intentos de acceso. Sí, un sistema similar al PIN de tu móvil o de las tarjetas de crédito. El atacante intenta probar combinaciones al azar para acceder al backend de tu web y tras x intentos le paras los pies. Tras hacer eso lo más probable es que intenten hacerlo en otro sitio.

Lo más sencillo para esto es usar un plugin para este propósito. Algunas suites de seguridad para WordPress ya incluyen esta medida, pero no soy muy amigo de ellas si no se conocen en profundidad porque incorporan muchas funciones y soy más partidario de que inicialmente te familiarices con estas medidas punto a punto para saber qué estás protegiendo.

Actualizar WordPress, tema y plugins

En la medida de lo posible debemos intentar mantener actualizado todo el entorno de una página web. Esto no es un mero caricho de los desarrolladores, que disfrutamos lanzando diferentes versiones de las aplicaciones para molestar al usuario. Cuando se libera una actualización normalmente es porque se trata de corregir errores existentes en la versión anterior, incluir mejoras o eliminar vulnerabilidades conocidas. Es precisamente este último punto el motivo esencial para recomendar actualizar WordPress, tema y plugins como costumbre saludable.

No obstante aviso a incautos, si bien en la mayoría de los casos una actualización no dará ningún problema, es posible que al hacerlo encontremos incompatibilidades entre los diferentes elementos, sobre todo si hace tiempo que no ponemos al día la web. Para evitar sustos, copia de seguridad y a cotejar las notas de las actualizaciones que vamos a instalar.

Restringir instalación plugins

Accede al archivo wp-config.php y añade al final define( 'DISALLOW_FILE_MODS', true );

El handicap de esto es que no vas a poder instalar plugins desde el panel de control mientras esté activo, pero si tu web ya está desarrollada y no prevés instalar nada nuevo, es una opción más que excelente.

Restringir uso editor archivos de WordPress

Si eres desarrollador sabrás que desde el backend podemos editar los archivos de los temas que tenemos subidos al servidor desde Apariencia >> Editor de temas. Esta herramienta es cómoda cuando no contamos con acceso por FTP por cualquier motivo. Sin embargo lo mismo que nosotros podemos editar, cualquiera podría hacerlo, de modo que es buena idea deshabilitar esta función. Para ello iremos al archivo wp-config.php e introduciremos define( 'DISALLOW_FILE_EDIT', true ); al final.

Esta mejora es más cómoda que la anterior, ya que no suele ser habitual editar el código fuente desde el propio WordPress y de este modo evitamos que alguien con acceso sea capaz de alterar partes importantes de nuestro tema.

Certificado SSL

Actualmente esto es un imprescindible, no solo por temas de seguridad, también por posicionamiento ya que se valora positivamente que una web cuente con uno. Un certificado SSL/TLS sirve para cifrar la conexión que se produce entre un navegador y un servidor autenticando la veracidad del sitio que se visita. Si añades esta capa de seguridad, reduces las posibilidades de que la información pueda quedar comprometida.

Cada vez más proveedores incluyen estos certificados dentro de los planes de hosting de manera predeterminada, pero si no es tu caso puedes contactar con ellos y contratar uno. Su precio dependerá de la empresa con la que estés, algunas se pasan, así que si sospechas que te cobran lo que no deben quizá sea buen momento de hacer las maletas y moverte. Por si te sirve, en este artículo encontrarás los mejores y peores proveedores de hosting con los que he trabajado a lo largo de los años.

Captcha en los formularios

Una de las partes más delicadas de una web son los formularios, ya que a través de éstos se pueden realizar ataques de fuerza bruta o también de tipo SQL injection. Para poner otra capa de seguridad en ellos podemos usar captchas, que son un elementos que ayudan a verificar si quien está rellenando el formulario es una persona o no impidiendo que se pueda realizar el envío hasta que se resuelva. Además como extra reduciréis el spam proviniente de vuestro sitio.

Existen múltiples opciones que ya habrás visto: los típicos con caracteres que son complicados de leer, los que te piden resolver un sencillo problema matemático o esos que te piden marcar determinadas imágenes que incluyan ciertos objetos. Podéis usar diferentes plugins que encontraréis en el repositorio para ellos.

Yo suelo usar los captchas de Google ya que funcionan fenomenal para frenar a los bots. Si estáis interesados en susar éstos, necesitaréis crear una clave API y luego instalar un plugin como Advanced noCaptcha & invisible Captcha si no so queréis complicar la vida insertando código a mano.

Cuantas más medidas de las anteriores incorpores a la página web, mayor serguridad tendrás en el sitio. En cualquier caso ten en cuenta si es importante contar con medidas de seguridad en una página web, más importante es tener un plan de contingencia para cuando rompan esa seguridad, porque tarde o temprano lo harán.

Si ya has sido atacado y crees que puedes estar infectado en este momento, te invito a que visites este artículo en el que hablo sobre cómo eliminar malware en WordPress.

Publicado por Jesús Tovar

Categorías: Programación, WordPress

Etiquetas: , ,

Deja una respuesta

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