Guía de seguridad en WordPress (III)

Este artículo es el tercero de una serie que será publicada aquí, en WWWhatsnew.com, por el Equipo de The Shock family: iconshock, wpthemegenerator y jqueryslidershock, responsables también por bypeople.com.

Podéis encontrar los otros dos de la serie aquí y aquí.

wordpress

Aumentando el nivel: Problemas complejos de seguridad

Los siguientes son problemas de seguridad que afectan actualmente a WordPress y requieren que haya un conocimiento un poco más complejo de la herramienta.

Ataques exploit: TimThumb y Uploadify


Tal vez hayas oído hablar de esto, básicamente el témino exploit se refiere a un ataque hecho aprovechando una vulnerabilidad de un sistema para lograr un comportamiento erróneo (denegación de servicio, acceso no autorizado, etc.)

El código de TimThumb es vulnerable a ataques de esta clase debido a una de sus funciones que permite al usuario subir imágenes de diferentes sitios y al mismo tiempo permite a estos sitios el acceso a la instalación. Las imágenes son guardadas en un directorio que esta en la raíz de la instalación; el hacker simplemente tendría que subir unos archivos para poder acceder a los recursos de la instalación que quiera.

El mismo problema sucede con Uploadify, como se podría deducir por el nombre, este plugin permite a los usuarios subir subir cualquier tipo de archivos que quieran al sitio. Si esto no es controlado apropiadamente, un hacker puede subir un script en PHP que le permita tomar control del sitio para hacer lo que quiera. Eso puede sonar un poco complejo pero existen personas que pueden hacerlo y de hecho no desaprovechan la oportunidad. El problema no es WordPress sino los plugins usados. La mayoría de problemas de este tipo se pueden mantener a raya simplemente haciendo una actualización apropiada de ellos, y de ser posible siempre revisando las críticas de los usuarios.

Un gran problema: inyección SQL

Hasta ahora, el problema más común es que la instalación de WordPress tenga algunos fallos de seguridad dependiendo de la versión; fallos que pueden ser corregidos si el usuario tiene conocimiento acerca de ellos. La inyección de código SQL es hecha sin la autorización del administrador y asegura al atacante privilegios sobre datos sensitivos como usuarios y contraseñas. El atacante puede tomar control de la base de datos y destruir la información en ella, por eso la recomendación principal es siempre que sea posible hacer backups, así, en el caso hipotético de un ataque siempre puedes apoyarte en ellos. Aunque también hay algunas opciones para asegurar tus archivos.

Puedes configurar el servidor Apache para que cierre todas las puertas y de ese modo, denegar el acceso al atacante. Para que puedas reforzar tu archivo .htaccess, aquí está el código que ayuda a que estos ataques de inyección de código no pasen.

Esto detendrá a la mayoría de atacantes amateur, neófitos, y spammers usando scripts como PHP r57 (Que es un script constantemente actualizado en páginas de hacking para ganar acceso a archivos críticos) y similares; sin embargo, hay otros tipos de ataques.

Edición de Archivos

El escritorio de WordPress permite por defecto la edición de los archivos .php como por ejemplo en temas y plugins, esta es a menudo la primera herramienta que un atacante usará si es capaz de entrar al escritorio, porque permite ejecución de código; sin embargo, WordPress también permite la opción de desactivar la edición desde el escritorio. Simplemente colocando esta línea en wp-config.php se podrá remover la opción para editar plugins, archivos y temas para todos los usuarios.

define(‘DISALLOW_FILE_EDIT’, true);

Esto no podrá impedir que el atacante suba archivos maliciosos, pero te dará una mano en parar una buena parte de ataques.

El archivo wp-config

El archivo wp-config es el que guarda los detalles confidenciales de WordPress, este archivo contiene el nombre, dirección y password de la base de datos que guarda toda la información de usuario; entradas y otros contenidos importantes, y es por ende, un objetivo importante para un atacante.

Entre las opciones que hay para protegerlo están: moverlo al directorio superior al de la instalación; también usar SAL para hacer para un atacante aún más difíciles las cosas; esta página genera cadenas hash bastante complejas que se pueden anexar al archivo wp-config.

Ataques de fuerza bruta

Esta clase de ataques se basa en intentar tantas combinaciones como sea posible; esto es hecho utilizando software especializado y en la mayoría de las veces usando computación distribuida (no sólo un equipo sino a veces cientos  de ellos atacando al mismo tiempo); lo cual reduce el tiempo necesario para encontrar una contraseña; la gravedad de esto es tal en ciertos casos que los ataques de computación distribuida son hechos por cientos equipos que una vez infectados, y sin el conocimiento del administrador, son zombificados para enviar ataques a través de la red.

Sin embargo también hay defensas para parar este tipo de ataques; puedes implementar métodos como

– Definir un límite de intentos: hay herramientas que ayudan a definir el número de intentos de acceso antes de deshabilitar una cuenta por una hora en ejemplo, por lo que un atacante necesitará una cantidad muchísimo mayor de tiempo para descubrir la contraseña. Para WordPress, hay 3 plugins: Limit Login Attempts, Better WP security, y Login Security Solution; de los cuales se hablará más adelante.

– Usar contraseñas robustas: una contraseña robusta contiene números, combinaciones de letras mayúsculas y minúsculas así como símbolos; entre más larga, mejor; también conviene que la contraseña no esté relacionada con el sitio. Hay sitios como este generador de contraseñas que usa código javascript para generar un password y mostrarlo en pantalla, el sitio no envia passwords a través de internet y además da tips útiles de mnemotecnia para recordar el password. También puedes usar frases contraseña (en ejemplo, pA55w0rDdE3j3mp10, sería algo relativamente fácil de recordar y bastante difícil de quebrar).

– Administradores de contraseñas: Si eres de aquellos que tiene que manejar 10, 15 , 25 o más contraseñas, deberías considerar un administrador de contraseñas. Keepass (gratuito), LastPass (gratuito con opción de pago) y 1password (pago) son opciones recomendadas por WordPress y en verdad que valen cada centavo.

También recuerda cambiar el nombre por defecto del administrador (en WordPress generalmente es admin) porque puede hacer las cosas más fáciles al atacante; las versiones más recientes de WordPress permiten cambiar el usuario por defecto pero si ya realizaste la instalación sin hacer el cambio, lo que puedes hacer es crear una nueva cuenta con privilegios de administrador y borrar la anterior.

Accesos directos y URL por defecto

Otro elemento de WordPress que puede ser cambiado para añadir un nivel extra de seguridad es la URL de acceso al sitio; porque si ponemos un ejemplo hipotético en el que el atacante ha robado tu contraseña, el sólo necesitaría la dirección de ingreso y voila! estaría adentro; sin la dirección de ingreso la ventaja sigue siendo tuya. Hay Plugins que permiten el cambio de la URL de acceso como Hide Login, que de hecho permite crear una URL personalizada para facilitar la memorización de la misma mientras se dificulta el acceso de terceros.

El archivo .htaccess

Si tienes un servidor apache, el archivo .htaccess es la primera línea de defensa contra los hackers, hay una gran variedad de reglas que pueden ser aplicadas dependiendo de tus necesidades para lograr este objetivo; las siguientes líneas contienen reglas sugeridas para ser agregadas al .htaccess

Estas líneas se encargarán de asegurar los archivos de la instalación de WordPress

Estas líneas se encargarán de otras funciones:

Prefijo wp_

Es el prefijo por defecto de las tablas de la base de datos. En lo que a seguridad se refiere, entre menos información se da al atacante, por más tiempo se puede permanecer “vivo”; al momento de hacer una nueva instalación de WordPress, el cambio de este prefijo es fácil, ya que el instalador nos pregunta por un prefijo. Si ya tienes tu instalación debes cambiar estos prefijos manualmente, así que debes saber lo que estás haciendo; o de otro modo, mejor usa herramientas profesionales como Better WP Security.

Continuará…

Juan Pablo Sarmiento

Fundador de iconshock (iconos profesionales) y designshock (paquetes para diseñadores) y curador editorial en ByPeople, amante del diseño y la programación web.