27 ene 2012

Navegar de forma segura y sin filtrado de contenido

Muchas veces estamos trabajando en oficinas de un cliente y nos topamos con la molestia de que tienen filtrado de contenido y no nos permite navegar en las páginas que necesitamos, incluido nuestro correo web.


Esto no sólo nos puede frustrar o molestar a la hora de trabajar, sino que nos plantea dudas sobre que tan seguros son nuestros datos al estar siendo monitoreados por la empresa. Demás está decir que muchas veces se traduce en tener que conectar nuestra preciada tarjeta BAM o celular con 3G/4G para poder navegar de una forma cómoda.

También nos ha pasado que vamos a sitios como Starbucks, Sanborns, VIPs, etc. para conectarnos, exponiendo nuestra conexión a quienes estén conectados en la red.

Aún recuerdo de los tiempos en que Internet no era tan popular que los principales hackers del país (actuales consultores en seguridad) se podían encontrar en los cyber-cafés. No creo que eso haya cambiado mucho, dado que es una excelente forma de conseguir conexiones "anónimas", especialmente en el café de la sirenita, donde todos llevan equipos móviles y hablan de negocios a la vista de todos (y escuchan).


Ante estos retos del día a día mi paranoia me llevó a armar un pequeño mecanismo que desde hace unos años me ha evitado dolores de cabeza: "Proxy usando Tunnel de SSH"



Lo que suena un poco complicado para algunos y conocido para otros se puede configurar en un rato y sin inventar el agua tibia.

Manos a la obra

Que necesitamos:

1) Internet en la casa u oficina y que tenga una IP pública (puede ser dinámica, no necesita ser IP fija)
2) Una computadora, servidor o vieja laptop que tengamos tirada en un rincón y que podamos dejar encendida cuando salgamos de casa.
3) Windows, Linux o Unix instalado en el Servidor/PC/Laptop
4) OpenSSH: Ok, quienes tenga Unix o Linux lo tienen por default y sólo necesitan configurarlo correctamente para evitar intrusos. En el caso de Windows les recomiendo el OpenSSH que se puede descargar de http://bit.ly/Azu4E8

Que debemos hacer en nuestro "Servidor"

1)  En el "Servidor" dejar configurado el OpenSSH, evitando que se puedan firmar como root, administrador o administrator, para evitar que nos hackeen el equipo facilmente.
2) Si tenemos Windows podemos instalarlo usando la siguiente guía http://bit.ly/yV9huA
3) Vamos a la página http://www.no-ip.com y creamos una cuenta gratuita y un nombre de host (en Hosts/Redirections) en alguno de los dominios gratuitos que nos ofrecen. Hay un ejemplo de como hacerlo en :
http://orlandohc-rcht.blogspot.com/2011/09/how-to-servidor-web-casero-2wire.html

4) En el router de nuestro proveedor de Internet debemos configurar un "forward" del puerto de SSH hacia nuestro "Servidor", para abrir el puerto a Internet. Podemos hacerlo desde las reglas del Firewall que traen los routers ADSL sin mucha dificultad. Aquí pueden encontrar una guía para un modem de Infinitum: http://bit.ly/wmOEOG

Que debemos hacer en nuestra Notebook/Laptop

En el caso de nuestra notebook o laptop la cosa está bastante simple:
1) Les recomiendo instalar el navegador Opera, dado que soporta Proxy Socks 5 y puede activarse/desactivarse el firewall facilmente presionando F12.
2) Descargamos el PuTTy COMPLETO con el Plink.exe, que permite ejecutar desde línea de comandos. Mi recomendación es copiar/instalar los archivos en c:\PuTTY
3) Creamos un archivo de texto proxy.bat dentro de c:\PuTTY con el siguiente comando:
plink -C usuario@<nombre_de_servidor> -D 8080
4) Creamos un acceso directo a nuestro escritorio para ese archivo, a fin de que sea cómodo de ejecutar
5) En el Opera configuramos el proxy:

Como Funciona?


Cuando estemos fuera de casa simplemente nos conectaremos a la red donde estemos y ejecutaremos el programa que dejamos en el escritorio. Nos abrirá una ventana y pedirá una clave de usuario (la que indicamos en el servicio de SSH) que pondremos para conectarnos a nuestros servidor y ya podremos minimizar la ventana.

Abriremos Opera y podremos navegar de forma segura, así de sencillo. Todo el tráfico viajará hasta nuestra casa u oficina y navegaremos desde ahí, sin mayor dificultad.

NOTA:Si queremos usar Opera sin emplear el Proxy podemos presionar F12 y desmarcar la casilla de Proxy.

11 ene 2012

Re-escribir o no re-escribir, esa es la cuestión - Modernización de aplicaciones y pantallas

A menudo nos topamos con problemas que nos hacen pensar en que debemos tomar entre las manos nuestro trabajo, hacer una bola y aventarlo al cesto de la basura.

Muchas de nuestras aplicaciones (o las de nuestros clientes) tienen años, y por lo general han sido modificadas por decenas y hasta cientos de programadores a lo largo de su ciclo de vida, sufriendo extrañas mutaciones, agregando interfaces crípticas o que no cumplen con los estándares de seguridad o de funcionalidad, con módulos desarrollados en diversos lenguajes de programación e interactuando entre distintos equipos de múltiples marcas y tecnologías.

Podemos pensar que esto es propio de las empresas que desarrollan sus propios sistemas, pero no es del todo cierto. Existen productos que han sido tan modificados que ni su propio creador podría reconocerlo.

Como muestra:

* Bancos y aseguradoras: Cuentan con aplicaciones de hasta 30 años corriendo en entornos monolíticos (mainframes, mini-computadoras, sistemas propietarios). Necesitan estrictos sistemas de seguridad por reglamentos del sector y las corporaciones que los administran.
* Empresas de distribución de mercancía: Cuentan con sistemas de hasta 10 años, por lo general son desarrollos internos, pero también existen sistemas comerciales que han sido modificados de forma radical.
* Industria: Suelen contar con sistemas bastante antiguos, de hasta 15 o 20 años, y dependiendo de su dependencia de estos la capacidad de inversión.
* Gobierno y empresas de servicio: Sus aplicaciones vienen de gestiones anteriores. Por lo general tienen reglas de negocio muy particulares y eso hace que se vuelvan enormes rompecabezas. Hay sistemas realmente antiguos corriendo en estas empresas.

Cada giro de negocio tiene una problemática particular, pero lo que es común a todos es que los tiempos cambian, las necesidades avanzan, y muchas veces necesitamos que nuestras aplicaciones hagan algo para lo cual no fueron pensadas: conectarse mediante Internet usando tecnologías como WebServices, funcionar desde una tablet, poder funcionar desde "la nube" o simplemente funcionar en web.

Cuando nos enfrentamos a esto nos invaden palabras como: Middleware, Web-Enable, Application Modernization, ESB, Message Queues, Screen Scrapping, Rehosting, o simplemente pensamos en un reemplazo de las aplicaciones, siempre que sea posible.

Pero no existe una forma de transición entre un ambiente y otro?

Los números dicen que muchas veces es más económico comprar un sistema nuevo que reparar uno existente. Pero la realidad dice que eso es en costos de adquisición, nuestros negocios no siempre están preparados para soportar un cambio tan radical.

Si pensamos en hacer convivir lo antiguo con lo nuevo existen alternativas:

Normalmente el middleware permite interconectar nuestro sistema "legacy" con nuevos módulos, pero hay que tener cuidado porque el middleware se puede convertir en un sistema por si mismo, de acuerdo al tamaño de la infraestructura.

Desde un punto de web-enable y application modernization podemos encontrar soluciones que pueden publicar sistemas de pantallas de texto como páginas web. Claro, no podemos considerar esto como una  solución definitiva, dado que conforme los usuarios van usando las aplicaciones en versión web van solicitando mejoras y modificaciones que requieren soluciones diseñadas especialmente para este ambiente, pero puede ser un primer paso. Ejemplos: Webfacing, IBM Rational HATS, Attachmate.

Algunas empresas tienen diseños en sus aplicaciones que permiten crear mecanismos de múltiples capas para separar las reglas de negocio de la capa de presentación. Un ejemplo de esto son aplicaciones de modo "batch" o stored procedures en un lenguaje nativo y un desarrollo visual en .NET o Java para la interacción con los usuarios.

Lo importante es comprender que los negocios ya necesitan de este tipo de cambios y mejoras en sus aplicaciones, que los directores y gerentes necesitan acceder a las aplicaciones todo el tiempo, y sin importar el mecanismo, sea un iPad o un celular.


Seguridad en las empresas de hoy

Cuando nos mencionan el tema de seguridad viene a nuestras mentes las imágenes de candados, firewall, policías, cajas fuertes, etc. Obviamente que los vendedores de soluciones de seguridad han acudido a estas imágenes tan simples para hablarnos de sus productos.
Pero la seguridad en nuestras áreas de TI es mucho más compleja y requiere de nuestra comprensión para poder tomar acción.

Nuestras infraestructuras de cómputo actuales se han vuelto realmente muy complejas y eso impacta en la administración de su seguridad. Si imaginamos a nuestra infraestructura como una casa, podemos decir que últimamente hemos abierto muchas puertas, a las cuales debimos poner complejos sistemas de alarmas y cerraduras para evitar que entren intrusos.

Las grandes consultoras señalan que la inversión en seguridad aumentará en el orden del 25% anual durante los próximos 3 años. Los empleos en el sector de seguridad han aumentado y existe una gran demanda de puestos gerenciales en estas áreas.

Para permitir que nuestras empresas puedan contar con páginas web, VPNs, intercambio de datos con otras empresas, etc, hubo que abrir esas "puertas" y agregar firewalls para asegurar el perímetro.
Si la cantidad de accesos y firewalls es importante generaremos una gran cantidad de logs, para lo cual necesitaremos un IPS con correlación de eventos, para que analice comportamientos sospechosos y descarte eventos inocuos.

La mayoría de las consultoras internacionales señalan que los ataques suelen venir desde dentro (estiman que en un 60% a 70% de los casos), por lo que adquirimos productos de monitoreo de aplicaciones (BPM y BAM) para asegurar los flujos de trabajo y productos de monitoreo y auditoría de bases de datos (DAM) para evitar que alguien altere la información en su beneficio.

Esto plantea 3 grandes dilemas:

1) Que sucede si se comete un fraude usando el sistema de forma adecuada, dentro de los horarios establecidos de trabajo, en equipos que tienen permitido hacerlo, pero valiéndose de errores en las políticas o en las aplicaciones?

2) Que sucede cuando el volumen de información es tan grande que un humano no puede analizarlo?

3) Que sucede cuando la falla de seguridad es la suma de eventos en diferentes niveles. Ejemplo: Si una persona se conecta desde una determinada terminal con un usuario específico, dentro de un horario permitido y ejecuta una acción.

He hecho pruebas simples en diversas aplicaciones publicadas en la web y puedo decirles que es alarmante el que se puedan ver datos de clientes sin tener que esforzarse demasiado.
Los buscadores como Google son también herramientas de búsqueda de errores en aplicaciones y de huecos de seguridad en nuestra infraestructura.

Recordemos que normalmente la seguridad se basa en el desconocimiento, desconocimiento de claves, desconocimiento de mecanismos, desconocimiento de direcciones, etc.

Pero este desconocimiento cuenta para gente externa a la organización, o no? Que sucede en la época del outsourcing y el desarrollo en empresas en otros continentes? Que ocurre con los ex-empleados? Y las aplicaciones que tenemos corriendo en  esquema de cloud computing?
Las preguntas son muchas y los desafíos aumentan cada año.

Pero no todo es malas noticias, si hay forma de resolver estos problemas, y se llama correlación de eventos y control de accesos. Existen productos que permiten consolidar los logs de los servidores, firewalls, herramientas de seguridad, etc. y rearmar la historia de lo ocurrido.
Podemos configurar estos productos para que nos envíen alertas, generen reportes y respalden la información para futuras consultas.
También existen productos que permiten revisar y auditar el código de los programas para ayudarnos a encontrar posibles fallas de seguridad.

La clave en todo esto es nuestro conocimento del negocio, nuestro enfoque en la seguridad, y el ser realmente concientes del riesgo que significa el no estar preparados.

Cómo conectarme a un servidor remoto en una red protegida - Versión actualizada

En un artículo anterior describí cómo conectarse a un equipo remoto en una red protegida http://diego-k.blogspot.mx/2014/12/como-conectarme...