Webdev del picudo

Hardening en WordPress

Deja un comentario

48795576Muy bien mis niños, ya que estamos hermanados en el desarrollo de sitios con WordPress, pues vamos a ver un tema no menos importante, pero este es el Hardening de nuestro sitio.

Hardening para quienes van comenzando en el business de las TI, es la serie de procedimientos de seguridad para evitar en la medida de lo posible que un hacker pueda entrar en un sistema, para el mero caso de WordPress, es necesario tener varias medidas de seguridad, mismas que explicaremos en las líneas siguientes. He de aclarar que una de las leyes supremas es “Un sistema no es 100% seguro, quien te venda un sistema así, te ha timado”, por lo que el seguir estos consejos no significa que dejes de ser vulnerable a hackers, sino que se las vas a poner más difícil para que puedan darte en la torre. Pues bien, comencemos con el contenido de hoy.

Proteger WordPress es una de las cosas más sencillas que puede haber en el desarrollo web, hay soluciones para evitar el hack de tu página desde las más básicas hasta las más avanzadas. Las opciones básicas son las siguientes:

DESHABILITA EL USUARIO ADMIN

El usuario admin es el usuario usado por default por la mayoría de los desarrolladores primerizos para tener el usuario “root”, esto puede que lo hagan por practicidad (o pendejez), pero el usar dicho usuario hace que un hacker pueda aplicar scripts de fuerza bruta para obtener el password de admin. Lo que se sugiere es eliminarlo dentro de la página, pero ¡OJO! Para eliminarlo debes crear otro usuario administrativo que lo reemplace (con nombre diferente, obviamente). En lo subsecuente, al crear una nueva página con WordPress no uses el nombre “admin”.

CREA CONTRASEÑAS SEGURAS

Normalmente creamos contraseñas inseguras por la sencillez que implica el recordarlas, sin embargo, esto puede ser aprovechado para poder ser detectado por los intrusos, por lo que la sugerencia aquí es que armes una contraseña con una combinación de letras mayúsculas, minúsculas, símbolos y dígitos para que esta sea más difícil de encontrar.

MANTÉN ACTUALIZADA LA INSTANCIA WORDPRESS DE TU PÁGINA

WordPress siempre está en constante actualización y el no tener actualizada tu instancia, implica el que tengas algún hueco de seguridad que un intruso puede aprovecharse del mismo y provocar desde cambios en la información hasta colapso o leak de la misma. Entonces la solución a esto es mantener siempre actualizada tu instancia de WordPress. A la fecha que escribí este artículo, WordPress había liberado la versión 3.9 y es sobre la que están montadas todas las instancias en las que trabajo (hashnslash.net y My 2 Bitcoin Cents).

Esto aplica también para plugins, puesto que también pueden contener vulnerabilidades dentro de sus scripts que pueden ser aprovechados por intrusos.

LIMITA EL ACCESO AL ADMIN

La base de un ataque por fuerza bruta es que nuestra instancia permita infinidad de veces los intentos de accesar a admin, para evitar esto, podemos instalar el plugin que les doy aquí (aclaro, no es de mi propiedad, es el que me ha echado la mano en varias ocasiones). Es sencillo y no pesa prácticamente nada, sirve sobre todo cuando estás limitado de espacio en tu hosting jejejeje. Este plugin te ayudará a identificar IP’s maliciosas y con ella empezar a armar una lista negra de posibles atacantes a tu instancia.

Estas acciones pueden ser emprendidas por cada uno de ustedes como usuarios. Lo que a continuación viene, es recomendable que sea implementado por expertos en el business, puesto que si no insertas bien las líneas indicadas puedes provocar un hermoso error 500, aunque también pueden practicar qué chingaus. Vamos ahí pues 😀

PROTECCION POR .HTACCESS (Los snippets son tomados del artículo de Dragan Nikolic. Pueden buscar la edición original aquí).

Un archivo .htaccess nos ayuda a sobreescribir algunos valores de la configuración principal de Apache, llamado también archivo de configuración distribuida, con el que podemos cambiar la configuración de una o varias carpetas en cuanto a permisos y accesos se refiere. Este puedes armarlo hasta con el triste bloc de notas (que tanto adora Yagarasu), solo con la condición que el archivo debe llamarse .htaccess (sí, solamente como se los indico) y guardarlo en las carpetas que crean convenientes. Yo recomiendo guardarlo en las siguientes:

  • wp-includes
  • wp-content
  • Raíz de la instancia

Estos son los snippets principales para proteger nuestra instancia.¡¡¡ HORA DE ENSUCIARSE LAS MANOS CON CODIGO, NIÑOS !!!

En la raíz de la instancia ya deben de tener un .htaccess que contiene lo siguiente:

# 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

El resto de snippets debemos insertarlos después de este bloque.

Snippet para proteger wp-config.php (wp-config es el archivo de configuración de WordPress)

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

Snippet para denegar el acceso al árbol de contenido de una carpeta. Este árbol aparece por default cuando Apache no detecta un archivo index.

Options All -Indexes

Snippet para evitar hotlinking. El hotlink es que tomen tu contenido para compartirlo en otro servidor (por ejemplo que te chingues el link de una imágen para ponerselo a tu novia en Facebook) provocando gasto de ancho de banda en el servidor del link.

 

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

¡¡¡ AGUAS !!! No lo pongas tal cual, sustituye TuDominio por la url (sin www) de tu dominio.

Snippet para proteger el .htaccess de sí mismo

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

Finalmente, en otro archivo .htaccess que guardaremos dentro de la carpeta wp-content, insertaremos el último snippet:

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

Este último snippet únicamente permitirá el acceso a archivos XML, CSS, JPG, JPEG, PNG, GIF y JS, denegando el acceso a otro tipo de archivos.

Siguiendo estas indicaciones, puedes asegurar tu instancia WordPress en contra de ataques maliciosos o uno que otro gañan que se quiera pasar de lanza con la misma, lo vuelvo a repetir, no es 100% seguro pero por lo menos si quieren metertela, aunque sea el consuelo del puto, cágasela :).

Me despido dejándoles esta infografía para que sepan las consecuencias de no proteger sus instancias de WordPress cortesía de StartBloggingOnline.com. Saludos y happy coding.

Infograph

Anuncios

Autor: RZEROSTERN

Solamente soy un desarrollador que se dedica de tiempo completo a armar una que otra pendejada en la web xD. Fan de Phineas y Ferb, del merol y de muchas otras cosas más.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s