Blindando tu WordPress

DISEÑO WEB 2 Comentarios

WordPress es el CMS (Gestor de contenidos) más utilizado en el mundo y eso es bueno ya que significa que un montón de desarrolladores se dedican a mejorarlo ya sea creando plugins nuevos, themes y sobretodo actualizando el propio WordPress mejorando su seguridad y funcionalidades. Pero esto también significa que existe otro grupo de “individuos” que aprovechando su popularidad busquen la forma de hackear los sitios que lo utilizan ya que es más productivo buscar vulnerabilidades de un producto que tiene millones de usuarios que de otro que tenga menos popularidad.

blindando-wordpress

Por eso es necesario tomemos ciertas precauciones extra para proteger nuestro blog WordPress y así al menos librarnos de el 99% de ataques que no suelen ser dedicados en exclusiva a nuestro sitio sino que simplemente algún tipo con demasiado tiempo libre y pocos amigos reales se dedica a rastrear en la red posibles webs basadas en wordpress y que tengan vulnerabilidades.

Una cosa tienes que tener claro, nunca vas a estar protegido al 100% y si alguien realmente quiere hackear tu sitio terminará haciéndolo si es lo suficientemente bueno y emplea el tiempo necesario por lo que mi primer consejo es que tengas en local una copia de seguridad de tu sitio actualizada tanto de los archivos como de la base de datos.

Mi segundo consejo aunque parezca obvio consiste en que no uses el usuario “admin” ni similares y que la contraseña sea robusta con números, letras y caracteres especiales. Lógicamente doy por hecho que mantienes al día tu wordpress, plugins y el tema actualizándolo siempre a la última versión.

Instalación de plugins de seguridad WP

Hay una gran variedad de plugins de seguridad que nos ayudarán a proteger nuestro sitio y como para todo… depende de gustos y de compatibilidades entre ellos para poderlos incorporar.

Plugins de monitorización: Wordfence , WP Security Scan, Ultimate Security Check, Exploit Scanner o WP File Monitor. Gracias a alguno de estos plugins no solo puedes monitorizar los accesos a tu sitio tanto a nivel de administración como de usuario normal, también detectan vulnerabilidades, ocultan la versión de wordpress, cambian el prefijo a la base de datos, etc.

Plugins seguridad autentificación:

Saber donde está la puerta de acceso al panel de administración de tu blog es una vulnerabilidad así que ocultar el acceso a wp-admin y wp-login es muy recomendable. Instala Lockdown WP admin o similar que te permita cambiar la ruta de acceso a la página de login y que de paso te oculte wp-admin mandando al que intente acceder a una página de error 404.

Y ya puestos vamos a complicar un poco más las cosas por si algún avispado lograrse averiguar nuestra nueva página de acceso colocando un plugin como Stealth Login Page que añade una frase de paso además de la clave y que redirige al usuario que introduce mal esos datos a la página que nosotros queramos (como por ejemplo la del FBI, página del Grupo de Delitos Informáticos de la Guardia Civil o la que quieras, jeje).

Plugins antispam:

Protege tu sitio de spam con Akismet, Spam free o similares. Utiliza plugins de captcha (Really Simple Captcha, NuCaptcha).

Configuración de .htaccess

El archivo .htaccess se encuentra en la carpeta raiz del sitio y es el que marca todas las directivas de seguridad así que es el archivo que vamos a editar para añadirle nuevos parámetros que conviertan nuestro wordpress en un sitio nada amigable para hijos de padres desconocidos. Voy a citar las líneas de código mínimas que deberías implementar a tu sitio. Todas estas las añades después de las que tiene el propio WordPress y que serán similares a estas que te coloco aquí de ejemplo:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Vamos al lío… este es el listado de líneas de código que tienes que agregar si no las tienes ya. Te explico para que sirven cada una de ellas para que te preguntes cómo has podido vivir sin ellas antes.

Proteger wp-config.php
Este archivo contiene la información de configuración de tu sitio como los datos de acceso a la base de datos y otras cosas que seguro te gustaría gritar a los cuatro vientos junto al numero PIN de tu tarjeta de crédito ¿verdad?

Añadiremos la siguiente línea para proteger este archivo tan delicado:
wp-config <files wp-config.php> order allow,deny deny from all </files>

Proteger el directorio wp-content
En esta carpeta se almacenan las imágenes, theme, plugins… ¿No crees que tendrías que ponerle una mantita para que no pase frío?

En este caso lo que tendremos que hacer es crear un nuevo archivo .htaccess y colocarlo dentro de la carpeta wp-content. El archivo contrendrá la siguiente línea de código para que no se resfríe:

order deny,allow deny from all <files ~ “.(xml|css|jpe?g|png|gif|js)$”> allow from all </files>

Protección de directorios, impide que se pueda navegar por ellos
Cualquiera que conozca la estructura típica de WordPress podría navegar por los diferentes directorios de tu sitio para recoger información sensible como los plugins que utilizas así que volviendo al archivo .htaccess principal le vamos a poner lo siguiente:

Options All –Indexes

Proteger htaccess
Seguro que a estas alturas ya te ha quedado claro la importancia que tiene este archivo así que no te extrañará que también sea necesario protegerlo de miradas indiscretas y nuestro .htaccess es un tipo tan duro que se protege a si mismo si le añadimos lo siguiente:

<files .htaccess> order allow,deny deny from all </files>

Protegiendonos del hotlinking
No, no estoy hablando de chicas guapas o hombres musculosos que quieran contactar contigo porque les encante tu blog, más bien se trata evitar que webs externas enlacen contenido tuyo como pueden ser imágenes, pdfs, swf y lo embeban a su sitio haciendo que consumas recursos. Para evitar esto debemos añadir el siguiente código, en este caso solo he colocado las extensiones de imágenes pero puedes añadir nuevas si quieres como puede ser swf (archivo flash).

<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?TuDominio [NC] RewriteRule \.(jpg|jpeg|png|gif)$ – [NC,F,L] </IfModule>

Y dos más de regalo:
Si te pones muy quisquilloso quizás quieras también limitar el acceso a la zona de administración por IP. Aunque puedes hacer esto con alguno de los plugins que he mencionado en este mismo artículo te añado la línea de código que necesitarías para hacerlo desde .htaccess

order deny,allow allow from 102.193.69.69 (sustituyelo por tu direccion IP) deny from all

*Ojo con esto porque seguramente tengas una IP dinámica y si reinicias tu router variará así que cada vez que cambies de IP tendrás que cambiarla del archivo .htaccess. Para averiguar tu IP puedes usar algún servicio tipo cualesmiip.com

Y si quieres banear alguna IP (cosa que también puedes hacer usando alguno de los plugin que te he recomendado instalar) se haría con este código tan chulo:

<Limit GET POST> order allow,deny deny from 250.120.69.1 (sustituyelo por la dirección IP que quieres banear) allow from all </Limit>

Y esto es todo por ahora, espero que este post le evite problemas a muchos de vosotros y que los que se dedican a hackear blogs se echen novia o encuentren un trabajo menos repugnante.

Una última curiosidad, los días más sensibles de recibir ataques suelen ser los fines de semana y festivos. Así intentan pillarte desprevenido y además hay menos posibilidades de contactar con tu proveedor de alojamiento en caso de que sea necesario.

Comparte este contenido...Share on Facebook0Tweet about this on TwitterShare on Google+0Share on LinkedIn0Email this to someone

2 respuestas en “Blindando tu WordPress

  1. Jaro

    Tremendo artículo. He instalado Wordfence y he flipado con la cantidad de opciones que tiene. Supongo que un post explicando como configurarlo bien sería demasiado pedir, jajaja.

  2. Manny

    Gracias por las líneas de código sobre todo las de hotlinking asi evitamos perder recursos del servidor en mi caso por las imágenes.