WordPress es posiblemente el CMS más utilizado hoy día en todo el mundo, en cuanto a seguridad se refiere, está bien protegido si mantenemos el sistema actualizado, pero deja al descubierto demasiada información que puede comprometer seriamente la seguridad de nuestro sitio web, a la seguridad de WordPress, no se le suele dar la importancia que se merece y esto algo por lo que los desarrolladores deberíamos preocuparnos más. Por si fuera poco, todavía muchos desarrolladores web ni siquiera hacen uso de las “buenas prácticas” o de las opciones de las que dispone el sistema por defecto.

Vamos a enumerar algunas buenas prácticas, consejos, configuraciones y funciones que podemos utilizar para proteger al máximo nuestro WP:

 

Utiliza un servidor seguro

Este aspecto es un pilar muy importante en la seguridad de nuestro sitio web, por ahorrarnos unos euros podemos tener serios problemas, utiliza un hosting profesional y de calidad.

 

Elige una buena contraseña

Utiliza letras, números y caracteres especiales permitidos, puedes ayudarte con la herramienta How Secure is my password

 

Elimina los archivos readme.html y license.txt

Estos archivos dejan al descubierto información como nuestra versión de WP

 

Elimina el archivo wp-config-sample.php

Recuerda cambiar el usuario administrador por defecto

Elimina temas y plugins que no utilices

Protege el directorio wp-admin con contraseña

Puedes proteger este directorio desde tu hosting para evitar el acceso al mismo

 

Instala algún plugin de seguridad

Plugins como Siteguard, iThemes SecurityAll In One WP Security o Wordfence pueden ser de gran ayuda

 

Cambia el prefijo de las tablas por defecto

Por defecto, WP instala las tablas con el prefijo wp_, cambialo por uno menos predecible en el archivo wp-config.php, utiliza letras minusculas y números, por ejemplo “fvghp12sxc4_”.

 

Usa las claves únicas de autentificación

Accede a la herramienta de WP y actualiza tu archivo wp-config.php para proteger el sistema con las claves de autentificación únicas de WordPress

 

Genera un buen archivo robots.txt

Evita que los motores de búsqueda puedan rastrear carpetas o ficheros que puedan dar información sobre tu sistema

User-agent: *
Disallow: /feed/
Disallow: /trackback/
Disallow: /wp-admin/
Disallow: /wp-content/
Disallow: /wp-content/plugins /
Disallow: /wp-content/themes /
Disallow: * /feed /
Disallow: /wp-includes/
Disallow: /xmlrpc.php
Disallow: /wp-

 

Cambia las rutas por defecto del sistema

Podemos cambiar la configuración para mover las carpetas del sistema y protegernos de los robots desde nuestro archivo wp-config.php

/* Cambia la ruta wp-content */
define( 'WP_CONTENT_DIR', dirname(__FILE__) . '/nuevacarpeta/wp-content' );
define( 'WP_CONTENT_URL', '//misitio.com/nuevacarpeta/wp-content' );
/* Cambia el directorio de plugins */
define( 'WP_PLUGIN_DIR', dirname(__FILE__) . '/nuevacarpeta' );
define( 'WP_PLUGIN_URL', '//misitio.com/nuevacarpeta' );
define( 'PLUGINDIR', dirname(__FILE__) . '/nuevacarpeta' );
/* Cambia la carpeta de subida de archivos */
define('UPLOADS', 'nuevacarpeta');

 

Desactiva el editor del panel de administración

Es una buena práctica evitar que todos los usuarios puedan editar archivos del sistema desde el panel de administración

/* Desactiva el editor del panel de administración */
define('DISALLOW_FILE_EDIT', true);

 

Oculta la ruta que da acceso al nombre de los autores y cambia el “Alias” por otro nombre

Es muy importante evitar que se pueda acceder al nombre de usuario del administrador, aunque nos parezca algo poco predecible, es tan sencillo como escribir en el navegador “sitio.com/?author=1” , solo con eso nos dará el nombre del usuario con ID 1, que por lo general, es el administrador del sitio, también podemos usar otros ID para hacernos con nombres de usuario del sistema, ¿Cuanto tardaría un ataque de fuerza bruta en sacar el pass?.

Cambia el Alias para evitar que la url muestre el nombre de usuario con el que se accede al sistema.

Si quieres, puedes bloquear o cambiar el acceso a esta url modificando la ruta o eliminando la misma en tu archivo functions.php, evitando de esta forma que sea accesible:

  /* Restringir el acceso a que se puedan ver los autores */
  add_filter('init', create_function('$a', 'global $wp_rewrite; $wp_rewrite->author_base = ""; $wp_rewrite->flush_rules();'));
  /* Cambiar la ruta de acceso de los autores */
  function cambia_author_permalink() {
      global $wp_rewrite;
      $wp_rewrite->author_base = '';
      $wp_rewrite->author_structure = "/acceso-restringido/" . $wp_rewrite->author_base;
      add_rewrite_rule('usuario/([^/]+)/?$', 'index.php?author_name=$matches[1]', 'top');
  }
  add_action('init','cambia_author_permalink');

 

Utiliza funciones para ocultar información relevante

En nuestro archivo functions.php podemos crear funciones que nos ayuden a ocultar la información que muestra el sistema por defecto:

/* Limpieza de wp_head */
function ddw_head_clean() {
    remove_action('wp_head', 'rsd_link');
    remove_action('wp_head', 'wp_generator');
    remove_action('wp_head', '_wp_render_title_tag', 1);
    remove_action('wp_head', 'feed_links', 2);
    remove_action('wp_head', 'index_rel_link');
    remove_action('wp_head', 'wlwmanifest_link');
    remove_action('wp_head', 'feed_links_extra', 3);
    remove_action('wp_head', 'start_post_rel_link', 10, 0);
    remove_action('wp_head', 'parent_post_rel_link', 10, 0);
    remove_action('wp_head', 'adjacent_posts_rel_link', 10, 0);
    remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
    remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0);
    remove_action('wp_head', 'feed_links', 2);
    remove_action('wp_head', 'feed_links_extra', 3);
}
add_action('init', 'ddw_head_clean');
/* Limpieza de emojis */
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
/* Elimina la versión de WordPress */
add_filter('the_generator', '__return_false');

 

Desactiva los errores de la página de login

/* Desactivar los errores de la página de login */
function ddw_log_err_msg() {
	return '';
}
add_filter('login_errors', 'ddw_log_err_msg');

 

Desactiva el código HTML en los comentarios

/* Desactiva el código HTML en los comentarios */
add_filter('pre_comment_content', 'wp_specialchars');

 

Desactiva XML-RPC

/* Desactiva XML-RPC */
add_filter('xmlrpc_enabled', '__return_false');
function disable_xmlrpc_ping ($methods) {
   unset( $methods['pingback.ping'] );
   return $methods;
}
add_filter( 'xmlrpc_methods', 'disable_xmlrpc_ping');

 

Elimina información de los plugins

/* Eliminar meta qtranslate */
remove_action('wp_head','qtranxf_wp_head_meta_generator');

 

Desactiva las actualizaciones de plugins desde el panel

/* Desactivar actualizaciones de plugins desde el panel */
define('DISALLOW_FILE_MODS', true);

 

Desactiva por completo el acceso al panel

Si no vas a necesitar acceder en un tiempo al panel de administración y tu sitio no necesita esta funcionalidad, puedes desactivar esta opción, pero recuerda que para volver a acceder, necesitarás eliminar esta función de tu archivo functions.php

/* Desactiva por completo el acceso a WP */
add_action('login_form','redirect_wp_admin');
function redirect_wp_admin(){
    $redirect_to = $_SERVER['REQUEST_URI'];
    if(count($_REQUEST)> 0 && array_key_exists('redirect_to', $_REQUEST)){
        $redirect_to = $_REQUEST['redirect_to'];
        $check_wp_admin = stristr($redirect_to, 'wp-admin');
        if($check_wp_admin){
            wp_safe_redirect( '404.php' );
        }
    }
}

 

Modifica la ruta de acceso wp-login

Podemos modificar la ruta de acceso al panel de administración con plugins como Siteguard o utilizar algo más liviano como Rename wp-login.php, para añadir un extra de seguridad a esta funcionalidad, utiliza una ruta con guiones como por ejemplo “gato-45negro” y en tu archivo robots.txt deshabilita “gato-” para que no se indexe la ruta y además no sea visible desde el archivo robots, una muy buena práctica a tener en cuenta.

 

Utiliza un plugin de control de acceso por dispositivo movil

Latch es un plugin que nos permite cerrar el acceso a sitios web bajo demanda y desde dispositivos móviles.

 

Estas son solo algunas de las cosas que podemos hacer para proteger nuestro sistema WordPress de ataques, pero todavía podemos hacer muchas más cosas, como configurar un buen archivo .htaccess, mantener al día nuestras copias de seguridad o ayudarnos con algunas herramientas como: WPScan Vulnerability Database, WPScan, Exploit DB o complementos para Firefox como SQL Inject me, XSS Inject me o Acces me de Security Compass para ver vulnerabilidades en nuestro sistema WP.

 

 

Valoraciones


Sé el primero en valorar

* Tu valoración puede tardar hasta 72 horas en publicarse.

He leido y acepto el Aviso legal y condiciones de uso

CAPTCHA


Utilizamos cookies propias y de terceros para el correcto funcionamiento de la web, personalizar el contenido y mostrar publicidad en función de las preferencias del visitante. Puedes encontrar más información en nuestra Política de cookies.

ACEPTAR
Aviso de cookies