domingo 26 de agosto de 2007

Sitios web con aplicaciones dinámicas

Preámbulo

Esta entrada es mi comentario a la noticia aparecida en El Nuevo Diario en

http://www.elnuevodiario.com.ni/2007/08/26/informatica/57270

Elementos en la escena

Al colocar un sitio web con una aplicación en línea son diversos los factores que entran en juego, a saber:
  • Sistema operativo del usuario
  • Navegador del usuario
  • Protocolos usados para la comunicación entre el servidor web y el navegador
  • Protocolos usados para transferir los archivos de la computadora de los desarrolladores hacia el servidor público donde la aplicación descansará
  • Enrutadores intermedios
  • Servidor web
  • Firewall configurado del lado del servidor (en el propio servidor web o en un dispositivo enfrente de él)
  • Sistema operativo del servidor web
  • Lenguaje de programación
  • Sistema de bases de datos relacionales
Sistema operativo del usuario

El sistema operativo que el usuario tiene instalado en su computadora personal. Este puede ser, para mencionar los comunes en nuestro país:
  • MS Windows XP
  • MS Windows Vista
  • GNU/Linux
GNU/Linux tiene reconocimiento mundial por su estabilidad y seguridad. En la práctica puede decirse que no existen virus para sistemas GNU/Linux.

Para cualquier caso, el sistema operativo debe estar licenciado, actualizado, con un sistema antivirus y adecuadas políticas de firewall.

Navegador del usuario

El navegador del usuario, igual que el párrafo anterior, para mencionar los más comunes:
  • Internet Explorer
  • Mozilla Firefox
En Europa, Mozilla Firefox es el preferido según estadísticas internacionales, menos susceptible a ataques (como fraude electrónico).

Protocolos usados para la comunicación entre el servidor web y el navegador

Siempre se usa http que es un protocolo inseguro (la comunicación es enviada en texto claro) lo que quiere decir que cualquier puede "ver" lo que está enviando (correo electrónico o mensajería instantánea). Así, si usa webmails para correo y en el navegador ve http:// quiere decir que alguien ubicado en su red de área local o alguien ubicado en la misma red pública puede leer su usuario / clave y luego tener acceso a sus correos donde usted podría pedir que se le enviaran sus claves.

Adicionalmente, los administradores de los sitios web utilizan ftp para transferir archivos hacia el sitios web. Lo que se dijo en el primer párrafo para http aplica para ftp, es un protocolo inseguro y el nombre / clave de usuario que hace las transferencias de archivos al sitio web puede ser captura y luego entrar al directorio y tener la potestad de alterar archivos. Es lo que mayormente ha pasado en los casos que se documentan en El Nuevo Diario.

Enrutadores intermedios

Los enrutadores intermedios son todos aquellos dispositivos de interconexión de redes entre usted y el servidor web que visita. Se hace la reseña a ellos porque alguien podría apoderarse de uno y colocar rutas falsas (cómo alguien que lo llevara a Granada cuando realmente lo está llevando a Chinandega) y obligarlo a visitar un sitio web falso (por ejemplo, el sitio web de un banco para tener acceso a su nombre de usuario / clave ) para luego hacer una transferencia a una tercera cuenta y ¡zas! el hacker ve su esfuerzo recompensado.

Honestamente, requiere esta técnica de una sólida comprensión de los protocoles TCP/IP y de administración de redes y sistemas para lograr un ataque de este tipo.

Sistema operativo del servidor web

El sistema operativo de servidor ampliamente usado para servicios de Internet es GNU/Linux. De hecho, Internet fue desarrollada bajo sistemas UNIX del cual GNU/Linux es pariente.

Servidor web

El servidor web más usado es Apache según la estadística pública en NetCraf, el servidor web de Microsoft es el más cercano perseguidor del servidor web Apache.

El servidor web de Microsoft ha sucumbido a nivel mundial a numerosos ataques, como el de CodeRed que logró hacer sucumbir miles de servidores web.

El servidor web es lo primero en que entra en contacto el navegador. A partir de allí, se estable conexión con la aplicación dinámica detrás de él.

Un diagrama simple sería:

cliente--navegador--enrutador--Internet--enrutador--servidor web--aplicación--base de datos


Firewall configurado del lado del servidor (en el propio servidor web o en un dispositivo enfrente de él)

La opinión generalizada es incluso no colocar firewall en el servidor web porque solo se dejan los servicios necesarios al público.

Ese enfoque está totalmente equivocado y puede resultar muy perjudicial. Aunque usted tiene abierta la puerta de su casa para que las visitas puedan entrar, no quiere decir que no esté vigilando la puerta cuando alguien entra y si le resulta sospechoso , claro que le cerraría el paso.

Una función similar es la que realiza un firewall cómo netfilter/iptables, que es un firewall con inspección de estado y muy configurable que estando ubicado en la frontera entre los visitantes que llegan de Internet y el servidor web, es la primera línea de defensa contra los intrusos.

Lenguaje de programación

El lenguaje de programación también es importante punto de vulnerabilidades. Los formularios se presentan en la página web pero la lógica detrás de ellos descansa en el lenguaje elegido, PHP es muy común acá y también ASP.

Una violación a la capa de lógica del negocio o una violación a la capa de presentación (a los programas que se encargan de la comunicación usuario/aplicación web), podría implicar una violación al sistema operativo en que descansa y por ende a los procesos a cargo del núcleo del sistema.

En los casos que documenta la noticia, lo que ha ocurrido es la explotación de las malas prácticas de programación por un lado y luego la falta de atención de los administradores de sistemas de no vigilar sistemáticamente el tráfico en el servidor web para notar la excesiva frecuencia de las consultas en corto periodo de tiempo al sistema de bases de datos cuando las inyecciones SQL están ocurriendo (para poner un ejemplo).

Sistema de bases de datos relacionales

El sistema de bases de datos relaciones también puede ser configurado para responder a consultas únicamente generadas desde el sistema local, si nota, el usuario remoto con su navegador únicamente habla con el servidor web, el servidor web habla con la aplicación y la aplicación habla con el sistema de bases de datos.

Los administradores acá normalmente dejan expuesto también el sistema de bases de datos relacional y además, lo dejan con las configuraciones por defecto.

Conclusión

La seguridad informática es una carrera larga donde como dice el dicho popular, la cadena no es más fuerte que el eslabón más débil. Cada parte que entra en juego, sistema operativo del usuario, navegador del usuario, enrutadores intermedios, servidor web, sistema operativo del servidor, programas de la aplicación web y el sistema de bases de datos relacionales, debe ser asegurada.

Cada eslabón de la cadena debe ser fortificado. Algunos eslabones dependen de los administradores de sistemas locales que deben encargarse de tener los sistemas operativos de la red de área local debidamente licenciados, actualizados, con sistemas antivirus al día, adecuadas políticas de firewall en los equipos de escritorio y en el enrutador o servidor de conectividad local. ¿No se ha imaginado que si alguien es capaz de "crackear" un sistema licenciado para ponerlo a disposición sin el pago de la correspondiente licencia también es capaz de agregar algún código de programación para que le informe de sus pulsaciones de teclas, de los sitios que visita o de los correos que manda o de las conversaciones de mensajería instantánea?

Otros eslabones, como los enrutadores intermedios, están fuera de la responsabilidad de los administradores locales o de los administradores de sistemas de los servidores web. Lo único que los salvaría, tratando de dar una respuesta ahora de cómo protegerse, es algún tipo de seguridad no basada en claves ni en direcciones ip sino en certificados de seguridad que identifiquen a servidor web y usuario.

El servidor web, la lógica detrás del servidor web (los programas) y el sistema de bases de datos relacional están bajo la responsablidad del administrador de sistemas del sistema que brinda los servicios de Internet (como web y correo) que debe ser lo suficientemente diligente para detectar anomalías en el tráfico que llega a su servidor, anomalías en los servicios (5 mil correos de un solo usuario en un mismo día deberían llamar su atención o consultas a razón de decenas o centenas por minuto deberían indicar la ocurrencia de un posible ataque de inyección SQL).

Concluyendo, la responsabilidad es compartida pero los casos documentados en El Nuevo Diario apuntan a neglicencia administrativa de los administradores de los sistemas expuestos publicamente que no han sido diligentes en la detección de anomalías ni en los escenarios previos cuando su sistema está siendo perfilado para un ataque. También, es responsabilidad de los programadores de las aplicaciones web que no han aplicado las adecuadas "fortificaciones" en el código que escriben.

1 comentarios:

Fitoria dijo...

muy bueno tu blog gracias por tenerme linkeado ya te agregue tambien