Enter

Seguridad en WordPress / 9 min de lectura

7 prácticas avanzadas de seguridad en WordPress.

Estas prácticas avanzadas de seguridad para WordPress te van a ayudar a proteger tu sitio web incluso más, después de que hayas implementado las medidas básicas mínimas de seguridad para protegerlo.

WordPress es uno de los CMS más comúnmente atacados, principalmente porque es el más popular a nivel mundial. Como resultado, los dueños de sitios web deberían actualizar constantemente los componentes del sitio y tomar otras medidas de seguridad.

Aplica estas siete prácticas avanzadas de seguridad para WordPress para mantenerte protegido.

Bloquear el hotlinking de imágenes

Una mujer escribiendo una URL

El “hotlinking” de imágenes significa incrustar una imagen en una página web enlazando su URL original, que apunta al servidor que la aloja. Funciona así: el Sitio A incrusta una imagen del Sitio B, por lo que cada vez que un visitante del Sitio A carga esa imagen, es el servidor del Sitio B el que utiliza ancho de banda y recursos informáticos para proporcionarla.

Esto significa que el servidor del Sitio B está usando recursos para proporcionar una imagen sin recibir tráfico, lo cual es de mal gusto, incrementa los costos de hosting para los dueños del Sitio B y puede exponer a los usuarios del Sitio A a brechas de seguridad si el contenido del enlace cambia a algo malicioso.

Dependiendo de la marca del servidor que uses, esto es lo que necesitás hacer.

En servidores Apache

Si tu sitio está alojado en un servidor Apache, necesitás editar o crear el archivo .htaccess para incluir el siguiente fragmento:

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^$

RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?tudominio.com [NC]

RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?google.com [NC]

RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?bing.com [NC]

RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yahoo.com [NC]

RewriteRule .(jpg|jpeg|png|gif|svg)$ - [F]

Donde dice “tudominio.com”, sustituilo por el nombre de tu dominio. 

Este comando le dice a tu servidor lo siguiente: “si estás sirviendo un archivo .gif, .png, .jpeg, .jpg, o .svg, solo servilo para estos dominios: Google, Bing, Yahoo, y el dominio de mi propio sitio web. Si el dominio que solicita el archivo no es uno de estos, devolvé un error 403.”

Estás permitiendo motores de búsqueda populares porque el tráfico de los mismos es bueno ya que te están dirigiendo tráfico a vos en lugar de consumir el ancho de banda de tu servidor.

En servidores Nginx

Si tu sitio está alojado en un servidor Nginx, abrí tu archivo de configuración y agregá el siguiente fragmento:

location ~ .(gif|png|jpe?g|svg)$ {

     valid_referers none blocked ~.google. ~.bing. ~.yahoo. tudominio.com *.tudominio.com;

     if ($invalid_referer) {

        return 403;

    }

}

Donde dice “tudominio.com”, sustituilo por el nombre de tu dominio.

Desactivar XML-RPC

XML-RPC es un protocolo que permite a la instalación central de WordPress comunicarse con otros sistemas. Utiliza HTTP como mecanismo de transporte y XML para la codificación. El XML-RPC es necesario para usar la app de WordPress desde tu smartphone Android o iOS, lo cual te permite gestionar tu sitio web mientras estás en movimiento. 

Aunque es útil, este protocolo tiene vulnerabilidades de seguridad conocidas que pueden exponer tu sitio a ataques de denegación de servicio y más. Si estás dispuesto a sacrificar la gestión de tu sitio desde tu teléfono, podés protegerlo más desactivando la función XML-RPC.

La forma más rápida de desactivarlo es instalando el plugin “Disable XML-RPC-API”, que lo bloqueará inmediatamente.

Filtrar la entrada de usuario

Una mujer escribiendo

Filtrar la entrada de usuario es esencial para prevenir ataques que se basan en inyectar código a un sitio web a través de campos de entrada de usuario como comentarios, búsquedas y formularios. Los atacantes pueden introducir comandos y scripts maliciosos en estos campos si no se implementan las verificaciones de seguridad adecuadas.

Los ataques comunes que aprovechan esta vulnerabilidad incluyen ataques de scripting entre sitios (XXS) y de inyección SQL. Algunas de las medidas que podés tomar para prevenir entradas maliciosas incluyen las siguientes:

  • Consultas preparadas: probablemente la mejor manera de prevenir ataques de inyección SQL. Las consultas preparadas aseguran que el código SQL se envíe al servidor de base de datos y se analice por separado de los datos, lo que dificulta o hace imposible que un hacker inyecte código SQL malicioso. 
  • Procedimientos almacenados: una secuencia de instrucciones que se pueden almacenar en la base de datos para su reutilización posterior. A menudo se crean para manejar secuencias de consultas aplicadas frecuentemente al modelo de la base de datos, ejecutándolas cuando sea necesario. También son excelentes para prevenir inyecciones SQL maliciosas.
  • Preferir listar o incluir en lista blanca la entrada: crear listas extensas de entradas permitidas. Cualquier entrada de usuario se compara con esta lista y, si no coincide, se descarta.
  • Escapar la entrada de usuario: una técnica para evitar que la entrada de usuario sea interpretada como código en lugar de como una cadena de texto. Generalmente, implica agregar un carácter especial justo antes de los datos proporcionados por el usuario.

Hay muchos métodos para aplicar el filtrado de entradas. Algunos tipos serán más útiles que otros en casos específicos, tantos que van más allá del alcance de este artículo. Sin embargo, es algo a tener en cuenta si querés evitar ataques de inyección en los campos de entrada.

Cambiá el prefijo de tus tablas de base de datos.

La base de datos de tu sitio contiene información sobre nombres de usuario, contraseñas, comentarios y otros elementos de tu sitio web. Su prefijo por defecto es “wp_”. Si dejás el valor por defecto, tu sitio puede ser vulnerable a ataques ya que los atacantes pueden intentar ese prefijo primero. Protegé tu sitio cambiándolo a uno menos predecible.

La forma más fácil de cambiar el prefijo de tu base de datos es usar el plugin “Brozzme DB Prefix & Tools Addons”. Recordá hacer una copia de seguridad de tu sitio antes de hacer cualquier cambio.

El proceso es así:

  • Una vez instalado, deslizá el cursor sobre el botón Brozzme en el panel lateral izquierdo de tu tablero y elegí DB Prefix.
  • En la página siguiente, verás dos campos. El primero, Existing prefix, representa el prefijo actual de tu base de datos. No podés modificar Existing prefix. Solo está para mostrarte el prefijo actual. El otro es New prefix, que podés modificar.
  • Cambiá el texto en New prefix para modificar el prefijo de tu base de datos, luego presioná el botón Change DB prefix abajo para actualizarlo.

Ocultar la versión de WordPress.

Esto puede parecer irrelevante, pero las versiones de WordPress dicen mucho sobre la seguridad del sitio. Cada vez que los desarrolladores de WordPress.org lanzan una nueva versión con actualizaciones de seguridad, también publican un registro con todas las vulnerabilidades que parchearon.

Los posibles atacantes leen estos registros como una fuente de información sobre qué técnicas pueden usar para atacar versiones desactualizadas de WordPress (aquellas que no tienen estas protecciones más nuevas). Dado que muchos sitios web funcionan con versiones desactualizadas de WordPress, tienen muchas víctimas a su disposición.

Tu versión de WordPress aparece en el código fuente de tu sitio web, pero podés eliminarla manualmente o con un plugin. Para hacerlo manualmente, necesitás agregar el siguiente fragmento de código a tu archivo functions.php:

* Ocultar la versión de WP en scripts y estilos

 * @return {string} $src

 * @filter script_loader_src

 * @filter style_loader_src

 */

function social9_remove_wp_version_strings( $src ) {

     global $wp_version;

     parse_str(parse_url($src, PHP_URL_QUERY), $query);

     if ( !empty($query['ver']) && $query['ver'] === $wp_version ) {

          $src = remove_query_arg('ver', $src);

     }

     return $src;

}

add_filter( 'script_loader_src', 'social9_remove_wp_version_strings' );

add_filter( 'style_loader_src', 'social9_remove_wp_version_strings' );

/* Ocultar las versiones de WP en la etiqueta de meta generador */

function s9bg_remove_version() {

return '';

}

add_filter('the_generator', 's9bg_remove_version');

Otra opción es usar un plugin. Muchos plugins ocultan tu versión de WordPress. En este caso, usaremos WP Security Safe. Otros plugins pueden utilizar procesos ligeramente diferentes. Para ocultarla, hacé lo siguiente:

  • Andá a WP Security Safe en el panel lateral izquierdo de tu tablero.
  • Accedé a la pestaña Privacy.
  • Marcá la casilla Hide WordPress Version Publicly.
  • Hacé clic en Save Settings al final para confirmar.

Eliminar la cuenta por defecto “admin”.

La cuenta “admin” existe por defecto, lo que significa que toda persona que sepa algo sobre WordPress sabe que existe. Esto es conveniente para los administradores, pero también facilita el trabajo de un atacante porque solo tiene que conocer la contraseña en lugar de la combinación de nombre de usuario y contraseña.

Antes de hacer cualquier cambio, realizá una copia de seguridad de tu base de datos y asegurate de que haya al menos una otra cuenta de administrador activa que puedas usar después de eliminar la cuenta por defecto.

Para eliminar la cuenta por defecto “admin”, dirigite a Usuarios > Todos los Usuarios en tu tablero. Encontrá la cuenta “admin” y presioná Eliminar. Se te mostrará una pantalla preguntando si querés asignar todo el contenido actualmente asignado a la cuenta “admin” a otro usuario.

Elegí el usuario y confirmá la eliminación.

Ocultar tu URL de inicio de sesión por defecto

Pantalla mostrando a alguien intentando ingresar al inicio de sesión de WordPress

La URL de inicio de sesión de tu sitio es “www.tusitio123.com/wp-admin/” por defecto. Esto es conveniente para los administradores pero también para los atacantes que intentan forzar su entrada a tu tablero mediante la fuerza bruta.

Deberías cambiar tu URL de inicio de sesión a una ubicación menos predecible. Al ocultarla de los usuarios fuera del círculo de administradores, tomás un paso significativo hacia la seguridad de tu sitio.

Leé nuestra guía sobre cómo usar el plugin WPS Hide Login para cambiar la ubicación de la URL de inicio de sesión.

Conclusión

Asegurar tu sitio con prácticas avanzadas de seguridad para WordPress es un constante juego de actualizaciones y ajustes. Puede parecer abrumador al principio, pero cuanto más te metés en el tema, más fácil se vuelve.

Combiná estos pasos con medidas básicas como agregar un buen plugin de seguridad, limitar los intentos fallidos de inicio de sesión y exigir contraseñas fuertes para todas las cuentas relacionadas con WordPress. Estarás en una mucho mejor posición para prevenir amenazas comunes de seguridad.