viernes, febrero 20, 2009

Las Mejores Practicas Contra la Pirateria

Hoy en día, la mayoría de las páginas web se construyen en torno a las aplicaciones para proporcionar servicios de calidad a sus usuarios. En particular, son ampliamente utilizados para crear, editar y administrar su contenido. Debido a la naturaleza interactiva de estos sistemas, donde la entrada de los usuarios es fundamental, es importante pensar en la seguridad, a fin de evitar explotaciones maliciosas por terceras personas y para garantizar la mejor experiencia al usuario.

Algunos tipos de intento de hacking y cómo prevenirlos

Hay muchos tipos diferentes de ataques que los hackers pueden llevar a cabo con el fin de tener un control total o parcial de un sitio web. En general, los más comunes y peligrosos son los de inyección de SQL y de cross-site scripting (XSS).

La inyección de SQL es una técnica para introducir un trozo de código malicioso en una aplicación web, si la base de datos es vulnerable se puede cambiar su comportamiento. Es una técnica poderosa si tienes en cuenta que permite manipular las URL (dentro de String Query en la base de datos) o cualquier otro formulario (búsqueda, acceso, correo electrónico de registro, etc.) para inyectar el código malicioso. Puedes encontrar algunos ejemplos de inyección de SQL en la Web Application Security Consortium.
Las precauciones que se pueden tomar para evitar este tipo de ataque. Por ejemplo, es una buena práctica agregar una capa de un formulario en la parte delantera y en la parte final de la base de datos. En PHP, la extensión PDO se usa a menudo para trabajar con parámetros (a veces llamados marcadores o variables de obligación) en lugar de integrar lo que los usuarios introducen en las declaraciones. Otra técnica realmente fácil es el caracter de escape, todos los caracteres peligrosos que pueden tener un efecto directo sobre la estructura de la base de datos deben se escapados. Por ejemplo, cada aparición de una comilla simple [ '] en un parámetro debe ser sustituido por dos comillas simples [''] para formar una cadena SQL válida. Estos son sólo dos de las acciones más comunes que puedes hacer para mejorar la seguridad de un sitio y evitar las inyecciones SQL. En la red puedes encontrar muchos recursos que pueden satisfacer tus necesidades (lenguajes de programación, aplicaciones web específicas ...).



La otra técnica que voy a introducir aquí es de cross-site scripting (XSS). XSS es una técnica para inyectar código malicioso en una página web, explotando vulnerabilidades de seguridad en aplicaciones web. Este tipo de ataque es posible cuando la aplicación web procesa los datos obtenidos a través de la entrada del usuario y no hace ningún tipo de verificación o validación antes de devolverla al usuario final. Puedes encontrar algunos ejemplos de cross-site scripting en la Web Application Security Consortium.

Hay muchas maneras de asegurar una aplicación web en contra de esta técnica. Algunas acciones fáciles que se pueden tomar:

* Extrayendo los input que pueden ser insertados en un formulario (por ejemplo, ver la función strip tags de PHP);
* Utilizando la codificación de los datos para evitar la inyección directa de caracteres potencialmente maliciosos (por ejemplo, véase la función htmlspecialchars de PHP);
* Creando una capa entre la entrada de datos y la parte final para evitar la inyección directa de código en la aplicación.

Algunos recursos sobre la seguridad CMSS

La inyección de SQL y el cross-site scripting son sólo dos de las muchas técnicas utilizadas por los hackers para atacar y explotar sitios inocentes. Como norma general en materia de seguridad, es importante mantenerse al día sobre cuestiones de seguridad y, en particular cuando se utiliza software de terceros, para asegurarte de que tienes instalada la última versión disponible. Muchas aplicaciones web están hechas en torno a grandes comunidades, ofreciendo apoyo y actualizaciones constantes.
Por dar algunos ejemplos, cuatro de las mayores comunidades de Open Source en sistemas de gestión de contenidos -Joomla, Wordpress, PHP-Nuke y Drupal- proporcionan guías útiles sobre la seguridad en sus sitios web y hospedan una gran comunidad de foros donde los usuarios pueden hablar de sus temas y pedir ayuda. Por ejemplo, en la sección de WordPress Hardening WordPress, ofrece documentación sobre la manera de fortalecer la seguridad de su CMS. Joomla ofrece muchos recursos en materia de seguridad, en particular, una Lista de control con una lista de las acciones que los webmasters deberían tomar para mejorar la seguridad de un sitio web basado en Joomla. En el sitio de Drupal, puedes acceder a información sobre cuestiones de seguridad, dirigiéndote a su sección de Seguridad. También puedes suscribirte a su lista de correo sobre seguridad que se actualiza constantemente sobre los temas en curso. PHP-Nuke ofrece documentación sobre la Seguridad en el capítulo 23 de su sección Cómo (How to), dedicada a la gestión del sistema de este CMS. También tienen una sección llamada he sido hackeado - ¿Y ahora qué?, que ofrece una guía para resolver los problemas relacionados con el hacking.



Algunas formas de identificar el hackeo de tu sitio

Como antes he mencionado, existen muchos tipos diferentes de ataques que los piratas pueden realizar en un sitio, y hay diferentes métodos de explotación de un sitio inocente. Cuando los piratas son capaces de tomar el control completo de un sitio, puede desfigurarlo (cambiando la página de inicio), borrar todo el contenido (bajando las tablas de tu base de datos), o insertar programas maliciosos o ladrones de cookies. También pueden explotar un sitio para hacer spam, por ejemplo, ocultando los vínculos que apuntan a mis recursos o creando paginas que redireccionan a sitios de malware. Cuando estos cambios en tu aplicación son evidentes (como la desfiguración de tu web), puedes darte cuenta fácilmente de que has sido hackeado, pero otras vulnerabilidades, en particular aquellas que tienen la intención de hacer spam, no son tan evidentes. Google, a través de algunos de sus productos, ofrece a los webmasters algunas formas de detectar si un sitio ha sido hackeado o modificado por un tercero sin autorización. Por ejemplo, usando la búsqueda de Google puedes buscar palabras típicas añadidas por los piratas a tu sitio web e identificar las páginas que se han sido comprometidas. Simplemente abre google.es y pon cadena_a_buscar_en_tu_sitio site: tu_site, buscando palabras que los hackers usan normalmente para el spam (viagra, porno, mp3, juegos de apuestas, etc.):

[site:ejemplo.com viagra] [site: ejemplo.com viagra] [viagra site:ejemplo.com]

Si no estás familiarizado con el operador de búsqueda site:, es una forma de hacer la consulta a Google restringiendo su búsqueda a un sitio específico. Por ejemplo, la búsqueda site: googleblog.blogspot.com sólo dará resultados del Blog Oficial de Google. Cuando añadimos palabras del spam a este tipo de consulta, Google mostrará todas las páginas indexadas del sitio web que contienen esas palabras de spam y en este caso es muy probable que haya sido hackeado. Para comprobar estas páginas sospechosas, abre la versión en caché que tiene el Google y podrás detectar el cambio de comportamiento, si lo hubiere. De esta forma, podrías limpiar tus páginas comprometidas y también comprobar si existen anomalías en los archivos de configuración de tu servidor (por ejemplo, en servidores web Apache:. Htaccess y httpd.conf).
Si tu sitio no aparece más en los resultados de búsqueda de Google, podría significar que Google ha descubierto malas prácticas en tu sitio web como consecuencia del piratereo y puede retirarte temporalmente de su índice, debido a la violación de las directrices de calidad del webmaster.

A fin de mantener constantemente un ojo en la presencia de palabras sospechosas en tu sitio web, puedes también utilizar las Alertas de Google para supervisar cuestiones como:

site:example.com viagra OR casino OR porn OR ringtones

Recibirás un aviso por e-mail cada vez que una de estas palabras clave se encuentren en el contenido de tu sitio.

También puedes utilizar las Utilidades del Webmaster de Google para detectar cualquier actividad de hackeo en tu sitio. Las Herramientas del Webmaster proporcionan estadísticas sobre las consultas de búsqueda más habituales de tu sitio. Esta información te ayudará a controlar si tu sitio es clasificado como sospechoso de tener palabras de spam no relacionadas. El "Qué datos ve el bot de Google" es también útil, verás si Google detecta cualquier palabra inusual en tu sitio, independientemente de si estás en su clasificación o no.

Si tienes una cuenta de Herramientas para webmasters y Google considera que tu sitio ha sido hackeado, serás notificado según el tipo de ataque de tu sitio:

* Si una tercera persona de forma maliciosa está utilizando tu sitio web para hacer comportamiento de spam (tales como ocultar enlaces o la creación de páginas de spam) y ha sido detectado por su rastreador, se te notificará en el Centro de mensajes con información detallada (una muestra de la URL hackeada o un texto de los enlaces ocultos);
* Si tu sitio es hackeado para alojar programas maliciosos (malware), verás un aviso de malware en la "Descripción" en la página de las Herramientas para webmasters.

Comportamiento del hacker eliminado, ¿y ahora qué?

¿Tu sitio ha sido hackeado o está sirviendo malware? Primero hay que limpiar el desorden del malware y a continuación, realiza una de las siguientes acciones:

* Si tu sitio ha sido hackeado con propósitos de spam, visita el sitio reconsideration request a través de las Herramientas para el Webmasters de Google para solicitar la reconsideración de tu sitio;
* Si tu sitio estaba proporcionando malware a los usuarios, envía una solicitud de reconsideración de malware en la pagina de "Descripción" de las Herramientas para webmasters.

Espero que hayas encontrado útiles estos consejos.

Traducción y añadidos de Carmelo del articulo y otros:

http://googlewebmastercentral.blogspot.com/2009/02/best-practices-against-hacking.html

No hay comentarios: