Cómo hacer tu WordPress más seguro

Cómo hacer tu WordPress más seguro 1

WordPress es una de las plataformas más atacadas de Internet y por tanto una de las más hackeadas. Mantener nuestras webs lo más herméticas posible es algo necesario y que tendremos que hacer desde el principio para evitar futuros problemas.

A través de ocho sencillos pasos vamos a conseguir asegurar nuestras páginas web para ponerlas a la altura de la mítica base militar de Fort Knox.

Para ello vamos a utilizar tanto el archivo .htaccess, que encontraremos en el archivo raíz de nuestra instalación de WordPress, como el functions.php que encontraremos en la carpeta de la plantilla que estemos utilizando.

#1 – Proteger el archivo .htaccess

Con el siguiente código lo que conseguiremos es, gracias al patrón que vamos a utilizar, evitar el acceso externo a cualquier archivo que contenga los caracteres hH, tT y eE sin importar la combinación de mayúsculas y/o minúsculas utilizada.

# .htaccess file protect
<files ~ "^.*\.([Hh][Tt][Aa])">
  order allow,deny
  deny from all
  satisfy all
</files>

#2 – Blindar el wp-config.php

Este es, sin duda alguna, uno de los archivos más importantes de WordPress y por ello deberemos prestar especial atención en su seguridad.

El archivo wp-config.php se encuentra en el directorio raíz de nuestra instalación de WordPress y se encarga, entre otras muchas cosas, de conectar con nuestra base de datos.

# wp-config.php file protect
<files wp-config.php>
  order allow,deny
  deny from all
</files>

#3 – Ocultar los directorios

No les pongas las cosas fáciles a los «curiosos», no permitas que se visualicen, exploren o naveguen los archivos de tus directorios.

# disable directory listing
Options All -Indexes

#4 – Bloquear la carpeta wp-includes

La carpeta wp-includes contiene archivos que son estrictamente necesarios para el funcionamiento del núcleo de WordPress. Nadie, incluso nosotros, necesita acceder a ella. Por ello bloquearemos el acceso total a esta carpeta utilizando el siguiente código.

# block wp-includes folder and files
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^wp-admin/includes/ - [F,L]
  RewriteRule !^wp-includes/ - [S=3]
  RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
  RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
  RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

#5 – Ataques por fuerza bruta

Entendemos por un ataque por fuerza bruta a la realización de una serie de intentos en los que se combinan distintos usuarios y contraseñas para intentar acceder al panel de administración de una determinada plataforma.

Recuerda modificar la línea que pone davidcostales.com por tudominio.extension en el siguiente código:

# deny access to no referrer requests (comment spam)
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_METHOD} POST
  RewriteCond %{REQUEST_URI} .(wp-comments-post|wp-login)\.php*
  RewriteCond %{HTTP_REFERER} !.*davidcostales.com.* [OR]
  RewriteCond %{HTTP_USER_AGENT} ^$
  RewriteRule (.*) http://%{REMOTE_ADDR}/$1 [R=301,L]
</ifModule>

#6 – Evitar el hot-linking de imágenes

Se produce hot-linking de imágenes cuando alguien enlaza una imagen en su página web que esta guardada en otro servidor que no es el suyo. Esto produce un aumento del consumo del ancho de banda del servidor que tiene alojada la imagen original y puede causar problemas a largo plazo.

Tan solo tendrás que modificar davidcostales\.com/ por tudominio\.extension/ y todo listo. Por supuesto puedes cambiar http://i.imgur.com/3qW63MJ.gif por la imagen que quieras mostrar.

# disable image hot-linking
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTP_REFERER} !^http://(.+\.)?davidcostales\.com/ [NC]
  RewriteCond %{HTTP_REFERER} !^$
  RewriteRule .*\.(jpe?g|gif|bmp|png)$ http://i.imgur.com/3qW63MJ.gif [L]
</IfModule>

#7 – Ocultar las versiones de archivos

WordPress controla las versiones de todos los archivos que carga nuestra plantilla, incluida la versión del propio WordPress. Esto, además de comprometer la velocidad carga de nuestra página web, le da pistas a cualquier individuo que quiera hacernos un hijo de madera. Por lo cual, lo mejor es eliminar cualquier rastro. Para ello tendremos que abrir el archivo functions.php de nuestra plantilla y añadir el siguiente código:

/**
 * Remove query strings from static resources
 */
function _remove_script_version($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', '_remove_script_version');
add_filter('style_loader_src', '_remove_script_version');

/**
 * Remove WordPress header information
 */
function _remove_wp_header_info() {
  remove_action('wp_head', 'rsd_link');
  remove_action('wp_head', 'wlwmanifest_link');
  remove_action('wp_head', 'wp_generator');
}
add_filter('init', '_remove_wp_header_info');

#8 – Bonus

Al margen de lo que hemos hecho con el archivo .htaccess -y con el functions.php- hay infinidad de cosas que también deberemos tener en cuenta, os las enumero a continuación:

  • Actualiza siempre WordPress, plantillas y plugins.
  • No utilices ningún usuario con nombre «admin».
  • Utiliza una contraseña segura.
  • No tengas muchos plugins instalados.
  • Instala Login LockDown para limitar los intentos de acceso.
  • Mantén un control sobre los comentarios de spam que te lleguen.
  • Realiza copias de seguridad periódicamente.
  • Busca un alojamiento de calidad.

Espero que, gracias a estos pequeños consejos, nuestros WordPress se sientan más seguros. Os animo a que compartáis vuestras experiencias y propongáis algún «tip de seguridad» extra para añadir a la lista.

Imagen cedida por @tomeversley

Deja una respuesta

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