Archive for July 2010
Sintetizando el debate de la seguridad en la nube
La nube y la virtualización son los temas modernos que cambian a partir de este momento los paradigmas de la construcción de infraestructura para dar soporte a los servicios de tecnologías de información.
Sin duda todo tipo de nuevas aplicaciones estarán orientadas a la disponibilidad a través de Internet y la rapidéz y economía con que podrán desplegarse a través de un servicio de nube.
Pero sin embargo, con respecto al tema de la seguridad, se esta levantando justificadamente un intenso debate, puesto que si ya con las infraestucturas de TI tradicionales en casa había mucha incomprensión por parte de quienes las crean y operan, ahora con la percepción de la nube por parte de los arquitectos de soluciones de TI se vuelve a sacudir la cultura de la seguridad ante la pregunta de ¿donde estan realmente los servicios?
El debate sobre la seguridad en la nube se centra en 3 temas: la responsabilidad, la jurisdicción y la privacidad.
La responsabilidad
A mis alumnos les digo que si alguien quiere venderles seguridad, que lo regresen por donde vino. La palabra seguridad es tan grande, tan comprometedora, tan deceptiva, tan incompresible que si algun vendedor la usa para promocionar su producto, o no sabe lo que dice, o está tratando de verles la cara.
Solo para empezar a medio visualizar los elementos básicos todo lo que debería de comprender cuando menos el concepto y activiades de la seguridad en la información, denle una hojeada a la ISO17799 o al cuerpo de conocimiento para la certificación CISSP, y comparen, ¿lo que les está ofreciendo un vendedor cumple con muchas de esas cosas? La seguridad no se puede comprar ni vender, sólo puede construirse.
Entonces revisen la publicidad que les ofrece un proveedor de hosting o un servicio de nube en internet, todos hablan de seguridad, pero las actividades que ofrecen en favor de una función de protección del servicio son muy escasas como: redundancia de enlaces, disponibilidad de energía eléctrica, discos de datos en espejo y algunas actualizaciones de sistemas.
Si tu hosting te dice que es seguro, avienta un escaneo de vulnerabilidades a tu sitio, y para empezar, verás que todos los ataques pasan los aparentes filtros que dicen que tienen y todas llegan a tocar hasta tu servidor. Si hay un error de configuración, si tienes sistema operativo o servicos desactualizados, o si tu aplicación de capa 7 tiene agujeros que se pueden explotar, tu ISP no podrá hacer nada para protegerte y si reclamas, te dirán que en contrato de servicios no viene especificado que habría una protección hasta ese nivel.
Así que si pensamos en la nube para establecer la infraestructura de TI, se debe de considerar que así como si estuviera tu servidor a tu lado o de forma remota, el proceso de seguridad sigue siendo completamente responsabilidad del dueño del sistema, y que tiene que establecerse como parte del plan de seguridad y contrato con la compañía de hospedaje, que tipo mecanismos de protección establecerán ellos.
La jurisdicción
Aún cuando tu empresa esté establecida legalmente en tu país y regida por sus leyes, el sacar el hospedaje de tus servicios de TI para llevarlos a un hosting o nube en otro país, cambia automáticamente el contexto legal de los sistemas, servicios y datos a los de ese país por el simple hecho de que la empresa de hospedaje no puede quedar exenta de la leyes y regulaciones que apliquen a los contenidos alojados en ella aunque sean clientes de otro país.
Así que leyes como DMCA, Patriot Act, comerciales, bancarias, etc., pueden afectar a tus sistemas y ser afectados por cualquier cuestion legal que ocurra en el país donde esten tus datos, como por simple ejemplo el que en tu sistema haya material con derechos de autor de forma ilegal, o que por alguna razón legal, las llaves criptográficas privadas y certificados digitales puedan ser obtenidas por alguién que no debería. Simplemente las autoridades de ese país tiene que seguir sus propios procedimientos legales para obtener de cualquier hosting o nube el acceso a tus datos.
La privacidad
Derivado un poco del punto anterior, con el simple hecho de que el almacenamiento final de tus datos sale de tu control y realmente sólo esta respaldado por una promesa de que la empresa de hospedaje tendrá un buen cuidado de ellos. No tenemos realmente ninguna forma de saber que ha estado pasando con los discos y bases de datos virtuales almacenados en quien sabe que otra parte del mundo, ni que hacen con los respaldos, ni los registros que toman de ellos. Y si añadimos que por estar en la jurisdicción de otras autoridades con otras reglas, los datos siempre estarán en al alcance de ojos extraños.
También tener en mente que muchos de los servicios de hospedaje y nube, la compañía que te ofrezca el servicio para poder controlar simultáneamente sus recursos para todos sus clientes, pues tiene que establecer sus propios parámetros de configuración y operación, que para empezar podrían ser diferentes o incompatibles con una política de seguridad que se realize para tu empresa, o que también no sean realmente tan buenos para definir y administrar los mecanismos de protección de sus propios sistemas, y que ocurran cosas por ejemplo, como que una intrusión a la red de ellos afecte a todos los clientes o que un sistema de otra persona en otra parte de esa red tenga un incidente y por ahí el intruso pueda ingresar a los sistemas de otros clientes.
Así en uno de los más grandes retos de los sistemas en la nube es asegurar que operen en un contexto de privacidad sin importar lo que ocurra a su alrededor o los servicios que ofrezcan para ellos, desde cosas tan sencillas como evitar que los registros de actividad de tu sistema y tus usuarios no puedan ser diseminados sin control o hasta cosas más complejas como construir un sistema cuya base de datos tenga todos sus registros de forma cifrada, lo cual no es lo mismo que tener un disco cifrado, puesto que el disco cifrado podría ser abierto por quien instala el sistema operativo en la empresa de hospedaje y los sistemas con tablas y registros cifrados realmente no se programan igual aprendieron en la escuela, si no con mucho más cuidado para el manejo de las llaves y asegurarse de la integridad de un protocolo critográfico.
Como vén, pues el concepto de nube aunque novedoso, con ventajas y que ahora es lo que viene, dentro del contexto de seguridad de la información, no cambia nada de lo que ya se debe de hacer en cualquier organización si no es que hasta se tiene que tener mayores cuidados.
31 Jul, 2010 |
hmier |
Los terminos técnicos más satanizados en un proyecto de software de la politica mexicana - parte 1
El punto es muy simple con este artículo, en política, todo lo que digas y no te entiendan será usado en tu contra, así que para aprender a lidiar con políticos y que no te estén metiendo riesgos y presión inncesaria a tu capa 8 y 9 de seguridad, mejor ni menciones estas palabras para nada o preparate muy buenos argumentos de antemano para lidiar con ellos.
Es un hack social por así llamarlo, pero también es una exhortación a tener una conciencia de calidad en nuestra profesión de sistemas.
Tambien contempla aqui las palabras de la prensa, les da por inventar sus propias historias de repente.
La caída del sistema
La más nefasta y común frase que escucharemos siempre en todos los noticieros y grillas en los consejos electorales. Esta es la peor pesadilla de los ingenieros y el máximo deseo de los políticos grilleros que saben moverse mejor en medio del caos.
El sistema siempre se cae a los ojos de cualquiera, a lo largo de los años las malas experiencias con proyectos de ingeniería desastrosos, así como la oscura nube de dimes y diretes que logran trascender desde la mesa de los políticos hasta la opinión pública se manifiesta todo con la críptica frase de "se cayó el sistema".
Como ingenieros en proyectos de software, este es el más difícil enemigo a vencer, el lograr lo que llamaremos un hack de seguridad de capa 9, el lograr que los riesgos innatos de cualquier proyecto tecnológico no lleguen a manifestarse y defender al proyecto ante los ataques de naturaleza no técnica que nos lanzaran siempre.
Recuerden siempre que un sistema no solo es hardware y software, si no verlo como nos lo enseñan en la ingeniería de software: herramientas, procesos y personas.
Con respecto a las herramientas, manejamos siempre productos tecnológicos que son de gran complejidad interna y que tienen puntos muy buenos a aprovechar, pero también tienen puntos muy débiles que pueden provocar una falla inoportuna e iniciar toda una cadena de desastres. Aunque nunca lo sabremos a ciencia cierta, las más grandes caidas de los sistemas en México que han creado mala fama a nuestra profesión se han debido seguramente a fallas en las herramientas y omisiones en su planeación y usos.
La recomendación es muy sencilla, no se va a la guerra con armas en mal estado o con armas que no sabemos usar. Cosas como tener hardware "barato" o "genérico", software pirateado, herramientas obsoletas o mal seleccionadas, solo le añaden una inmensa variable de riesgo desconocida al proyecto que se manifestaré desde formas tan desastrosas como una base de datos corrupta hasta cosas tan tontas como que se le fundió una lámpara a un cañon, y por consiguiente, la frase de pánico de "se cayó el sistema". No se rian, todo eso ya ha pasado o cosas tan tontas como que en medio de una reunión de consejeros electorales se activa el protector de pantalla de windows y no se diga el caos que empieza cuando sale un pantallazo azul.
Con respecto a los procesos, no inventen, así de sencillo, hagan los proyectos con toda la conciencia, seriedad, profesionalismo, orden, sencillez, humildad y calidad. Y para esto, los unicos que deberían de preocuparles este punto son los que son un verdadero desastre de profesionistas que todo lo hacen al hack and slash volviendo a inventar el hilo negro en cada proyecto. Todos los ingenieros en sistemas, administradores de proyectos, ciencias de la calidad, etc, pasan años, cursos completos, toneladas de libros para mostrarnos muchisimas técnicas para tener toda nuestra vida profesional en orden, o como se llama políticamente correcto en la profesión, tener un nivel de maduréz (del 1 al 5, lol). Como dice mi amiga Vanesa ( @vanessa_amaya ), "
bienaventurados los que no documentan sus proyectos por que buscarán a Dios muy seguido". No se rian, me ha tocado ver a alguien pedir estampitas de la virgen para pegar en los servidores.
Con respecto a las personas, la capacitación, el entrenamiento, las pruebas constantes, la frialdad en los análisis, la humildad en las decisiones, los valores y la ética, deben de formar parte siempre de la preparación mental de la gente que formará parte de un proyecto de ingeniería como cualquier otro. Si estas realizando un proyecto pensando exclusivamente en como se puede obtener o tranzar la mayor cantidad de dinero, siempre ha pasado que esos proyectos por estar mal concecibos fallarán, y terminarán perdiendo más de lo que estaban tratando de ganar. Y los políticos, para darle salida al escándalo, para tener más munición para atacarse entre ellos, no dudarán en poner a los ingenieros en el altar de los sacrificios para apaciguar la ira de las deidades del poder, así lo dictan las reglas no escritas de la política mexicana. Selecciona bien a tu gente, recorta cabezas y quedate con las mejores, que no sean más los burócratas y oportunistas en lo alto del proyecto que la gente que de verdad esta haciendo las cosas y ofreceles una buena motivación y apoyalos preferentemente en capacitación y orden, lo peor que puedes hacer es transmitirles el estrés que se produce por haber hecho las cosas mal desde el inicio y con otras intenciones. Pon tus mejores recursos a hacer que el proyecto inicie bien y termine mejor, aunque hay mucho dinero de por medio, son proyectos de alto riesgo que necesitas evaluar prudentemente como puedes obtenerlo de forma segura.
El algoritmo
Como ingenieros de sistema, toda nuestra vida son algoritmos. Hay algoritmos para cualquier cosa, desde operaciones sencillas, hasta inteligencias artificiales complejas. Recordando la definición de libro de texto, son los pasos ordenados para lograr un objetivo, y eso es lo que nos pagan por hacer.
Pero en el contexto político es un reverendo malentendido, aderezedado con malicia y multiplicado por la ignorancia y falta de sutileza.
La palabra algoritmo es tán exótica para cualquier no técnico que cada vez que veo que alguién la menciona en público, todos los demas tragan saliva. Es porque en el contexto político, despues de tantas fallas que ha habido en diversos sistemas y luego al tratar de rescatar o defender lo que se percibe publicamente como una falla, muchos ingenieros gritan a veces que "
así estaba diseñado el algoritmo".
Para mostrarlo de una forma tan sencilla, ante los sucesos que muchos califican como inexplicables o cuestionables, cuando la gente escucha que se defiende al algoritmo del sistema, lo interpretan como que dentro de la computadora hay un ente extraño, intangible, sentiente y con capacidad de tomar decisiones y actuar. Eso es lo que hace en parte un algoritmo, pero su intangibilidad y falta de comprensión es lo que lo provoca que la gente entre en pánico al escucharlo. Vean los cartones cómicos de los periodicos despues de cada elección, siempre verán que alguién dibuja a un ente raro, amorfo, antropomofizado que llaman algoritmo y que tiene algo que ver con las acciones vistas en un sistema.
Y el remate final, si alguién con poca noción sobre sistemas y programación pide que le permitan ver el diseño del algoritmo, el ingeniero del sistema dice que no lo puede mostrar "por seguridad", lo que sólo hace que los políticos y la prensa refuerzen su teoría de que dentro de la computadora se ha creado un fantasma que tiene una misión oscura que complir y nadie lo puede tocar.
Continuará en otro post con más términos...
29 Jul, 2010 |
hmier |
Te conscience of a hacker: A un año de cumplir un cuarto de siglo
Hoy he decidido leer y releer el manifiesto.
Tantas cosas que ocurren a nuestro alrededor. Tantas maravillas que el mundo moderno ha puesto a nuestro alcance. Tanto avance de la tecnología, de la ciencia, del arte. Pero tambien ha habido retrocesos en la Ley, en la sociedad y la humanidad. A todos se nos olvida que navegamos en el este mismo barco que llamamos mundo, y causa tristeza que siempre estamos tratando de comernos unos a los otros.
El mundo necesita mas hackers, mas pensadores, mas gente creativa, mas gente apasionada en progresar. Los retos del mundo modernos son muchos, y parece que lo que nos enseñan en las escuelas es que lo más importante es acumular votos o dolares.
Para todos aquellos que son muy jovenes en nuestra profesion y estilo de vida. Solo recuerden que su deber es ser más listos y más inteligentes que la gente que esta por encima de ustedes y los que les precedieron.
Pero tomen siempre como advertencia, que por tener mayores capacidades intelectuales, de conciencia y sentido de acción, habrá siempre quienes querrán ponerles un alto a como de lugar. Esa es la vida del hacker.
The Hacker Manifesto
by
+++The Mentor+++
Written January 8, 1986
Another one got caught today, it's all over the papers. "Teenager Arrested in Computer Crime Scandal", "Hacker Arrested after Bank Tampering"...
Damn kids. They're all alike.
But did you, in your three-piece psychology and 1950's technobrain, ever take a look behind the eyes of the hacker? Did you ever wonder what made him tick, what forces shaped him, what may have molded him?
I am a hacker, enter my world...
Mine is a world that begins with school... I'm smarter than most of the other kids, this crap they teach us bores me...
Damn underachiever. They're all alike.
I'm in junior high or high school. I've listened to teachers explain for the fifteenth time how to reduce a fraction. I understand it. "No, Ms. Smith, I didn't show my work. I did it in my head..."
Damn kid. Probably copied it. They're all alike.
I made a discovery today. I found a computer. Wait a second, this is cool. It does what I want it to. If it makes a mistake, it's because I screwed it up. Not because it doesn't like me... Or feels threatened by me.. Or thinks I'm a smart ass.. Or doesn't like teaching and shouldn't be here...
Damn kid. All he does is play games. They're all alike.
And then it happened... a door opened to a world... rushing through the phone line like heroin through an addict's veins, an electronic pulse is sent out, a refuge from the day-to-day incompetencies is sought... a board is found. "This is it... this is where I belong..." I know everyone here... even if I've never met them, never talked to them, may never hear from them again... I know you all...
Damn kid. Tying up the phone line again. They're all alike...
You bet your ass we're all alike... we've been spoon-fed baby food at school when we hungered for steak... the bits of meat that you did let slip through were pre-chewed and tasteless. We've been dominated by sadists, or ignored by the apathetic. The few that had something to teach found us willing pupils, but those few are like drops of water in the desert.
This is our world now... the world of the electron and the switch, the beauty of the baud. We make use of a service already existing without paying for what could be dirt-cheap if it wasn't run by profiteering gluttons, and you call us criminals. We explore... and you call us criminals. We seek after knowledge... and you call us criminals. We exist without skin color, without nationality, without religious bias... and you call us criminals. You build atomic bombs, you wage wars, you murder, cheat, and lie to us and try to make us believe it's for our own good, yet we're the criminals.
Yes, I am a criminal. My crime is that of curiosity. My crime is that of judging people by what they say and think, not what they look like. My crime is that of outsmarting you, something that you will never forgive me for.
I am a hacker, and this is my manifesto. You may stop this individual, but you can't stop us all... after all, we're all alike.
17 Jul, 2010 |
hmier |
Anotaciones personales sobre requisitos funcionales para PREP
Mis amigos dirán que estoy obsesionado con los sistemas de PREPs de las elecciones en México, pero es que tienen en un solo proyecto todos los posibles escenarios que uno vería en la vida real, de forma que son un excelentísimo ejercicio de Ingeniería de Software orientada a la seguridad y confianza en la información.
Sin mencionar que en nuestro país ha habido muchos de estos proyectos, unos buenos otros malos, unos con un desarrollo excelente y otros con fracasos escandalosos, unos hackeados, otros sólo mal interpretados, siempre en cada periodo electoral me pongo a estudiarlos y llevo ya una buena cantidad observados.
También recientemente tuve oportunidad de ver por dentro como funciona una de las tres grandes que hacen sistemas PREP en méxico y la verdad, no vi nada excepcional de lo que veo en otros lugares, pero si preocupante, puesto que uno esperaría que tuvieran cuando menos una CMM 3 o mayor y pues no, jajajaja.
He aquí una lista de requisitos y consideraciones que yo tomaría para mi propio proyecto de PREP, y es más, no se que estoy esperando para hacer uno:
Sobre diseño del sistema:
*No enviar para la presentación de gráficas un archivo de 800kb de flash. Es decir, que sea pesadísimo para cualquier visitante y calcular la carga de visitantes por hora en un solo servidor.
*No enviar lógica de negocio a la aplicación del lado del cliente.
*No dejar marcas de comentarios o versiones sobre los componentes o fragmentos de código usados de librerías o proyectos facilmente localizables en internet. Se encontraron aparte de violaciones de licencia que se podían localizar información acerca de vulnerabilidades en librerias gracias a poder ver las anotaciones que se quedaban en el código fuente de las paginas que se descargaban al cliente.
*No dejar al alcance del público de internet el acceso a la parte administrativa de forma directa.
*No dejar de una manera tan obvia el acceso al sistema de captura por medio de añadir un /prep a la dirección de publicación.
*No hacer consultas directamente sobre la base de datos de captura para sacar reportes para el público. Replica la base de datos o lo que sea, pero no hay que cargarle estrés demás.
*Tratar de aligerar lo más que se pueda la transmisión de datos XML, HTML, imagenes, etc.
*Diseñar para distribuir la carga de trabajo en diversos componentes.
*Uso extensivo y bien diseñado de sistema de bitácoras de todos los tipos que usan en un servidor. Además de incluir un sistema de bitácoras para las operaciones del sistema tanto aciertos como errores.
*Asegurarse que las operaciones del sistema se cumplan aunque sea parcialmente y que puedan ser retomadas, o transferida a puntos de emergencia.
*Válidar absolutamente todas las entradas del lado del servidor de acuerdo a los criterios de OWASP. Pide que alguién externo al equipo de desarrollo te las audite al estilo pen-test.
*Realizar una buena interfáz de usuario para la captura. Lo estético es secundario.
*No añadir controles de seguridad excesivos que puedan hacer muy lento la operación de captura. La gente espera que para la media noche ya estes sobre el 70-80% de toda la información capturada.
*En el diseño de sistema, verifica casos de excepciones y todos los posibles estados de los datos (pequeños, grandes, fraccionarios, diferentes, negativos, letras, ceros, etc...).
*Realiza ejercicios y simulacros extensivos de preferencia todos los días, que el personal de captura este super entrenado desde mínimo un mes antes.
*Usa linux si es posible, no por que sea mejor, es por cambiar los riesgos comunes y tontos como virus, pantallas azules o cosas así inesperadas por algo que sacará de la jugada a un posible agente malicioso accidental o intencional. Pero tienes que saber lo que usas.
*Si nunca has hecho un sistema de misión crítica, o puesto un server con alta seguridad, capáz de atender más de un millón de hits en 24 horas, no seas soberbio y necio y busca integrar a tu equipo a gente que ya tenga esa experiencia. Quien sabe cuantos PREPs no han fracasado por esto mismo.
*Te van a atacar SIEMPRE, metete esa idea en la cabeza y dalo por hecho. Así que hay que tener preparativos listos. Aquí no hay espacio para omisiones, errores o negligencias. Podrás haber tenido 30 exitos antes pero tu enemigo solo necesita uno para vencerte. Recuerda que sólo un hacker puede detener a otro hacker.
Sobre las comunicaciones:
*No poner un servidor dentro del hospedaje de una compañía de cable. Se observo que su infraestructura no esta diseñada para prestar estos servicios. Buscar siempre ir sobre un datacenter diseñado justamente para eso.
*No apostarle a poner los servidores de publicación “en casa”. Es decir dentro del mismo edificio con conexiones de internet genéricas.
*No poner servidores con múltiples servicios. Ej. Web, mail, etc en la misma caja.
*No apostarle a que otros se encargarán de poner la red. Verificar que haya múltiples enlaces y no “solo un infinitum”.
*No apostarle a que “otros” hacen la seguridad. Por ejemplo, que los del datacenter dicen que se encargan. Si lees el contrato verás que solo cubren las capas bajas de comunicaciones y ni así es certero.
*Tienes que hacer del proceso de seguridad tu primer objetivo y DE FORMA PERSONAL. Hay 7 capas técnicas a cubrir más 2 capas no técnicas, 11 segmentos de la ISO17799, 10 cuerpos de conocimiento de una CISSP y cientos de cosas adicionales sin contar lo invaluable de la experiencia de alguien que ya haya peleado estas batallas. Si no sabes sobre esto, entonces te tengo malas noticias y preocupate o retirate a tiempo. Solo se pelean las batallas que de antemano se ha preparado uno para ganar (Sun-Tzu).
*Verificar que el enlace de internet no este “capeado” a X cantidad de conexiones TCP/IP simúltaneas, o que tengas una tasa de transferencia/quota fija que se pueda acabar.
*No seas aváro, si hay que gastar en fierros grandes ve por ellos. Creanme que lo que menos te va a preocupar es el dinero si las cosas se salen de control por algo imprevisto por consecuencia de la inexperiencia.
*Verificar que el proveedor de hosting este preparado/advertido de que ingresara por un periodo de 24 horas repentinamente una inmensa cantidad de visitantes. Y pedir comprobar que tenga experiencia soportando tráfico superior a los 50mbps. (Esa cantidad ha sido el pico más alto observado personalmente)
*Advertir a los equipos de vigilancia de seguridad de los proveedores de hosting que habrá gran cantidad de tráfico repentino, de forma que no entren en pánico y no realizen acciones correctivas o de bloqueos por su cuenta pensando que se trata de un ataque cibernético a gran escala.
*Absolutamente cero inalámbricas con capacidad de acceso a la parte importante de la red.
*Diseña en forma de capas toda la red. No necesitas gente merodeando en partes internas de la red. Puedes poner IDS y honeypots solo para tu propia referencia, usualmente estos temas los veo que son un poco avanzados y “oscuros” para el mundo político de forma que no recomiendo que los menciones publicamente pero que si los uses internamente.
*Redundancia y continuidad es la ley. Realiza una prueba completa cortando la energía electríca del edificio y verifica personalmente el impacto. Si hay que gastar dinero, metele lo doble de lo que necesitas.
*No usar servicios tradicionalmente reconocidos como obsoletos (FTP, Telnet, etc..) y cuida/cierra los que están ahí y aun no se usan mucho (Ipv6, DNSSEC, etc..) y endurece concientemente todos los demás.
Sobre los servicios:
*No instalar ni terminar de configurar servidores ya estando en línea y accesible desde internet. En ese periodo de tiempo son muy susceptibles a ser invadidos tempranamente.
*La vigilancia y defensa de un servidor comienza desde el momento en que se registran los dominios que usará el sistema, sean semanas o meses desde antes. La seguridad se establece para cuidar el servidor desde el primer momento que hay información acerca de su posible localización revisando los registros Whois de nuevos dominios. Nunca enfocarse a cuidar el servidor solo el día de la elección.
*Debes de estar preparado desde antes con capacidad total y de sobra. Hacer cambios de servidores, comunicaciones, código en medio del proceso de captura es excesivamente riesgoso. Solo se necesita un solo minuto que no se muestren resultados para que se desate el infierno sobre tí.
*Afina los planes de emergencia con el mismo tiempo y dedicación que el plan principal.
*Cumplir con los mandamientos de tener Firewall bien afinado en el server y tener software parchado al día.
*Cortar accesos en el Firewall para localidades que no esperas vistantes. Es decir, acotar origenes de comunicaciones y bloquear por anticipado origenes tradicionalmente latosos (china, lituania, croacia, korea, etc...)
*No experimentar con técnologia o productos nuevos por primera vez.
*Realizar todo tipo de auditorías y pruebas de penetración desde diversos puntos del sistema.
*No usar software pirateado, es impredecible saber si está en buen estado y no vaya a provocar cuando menos un pantallazo azul inesperado ante el público.
Administración de la percepción
*En las partes que verá el público, especialmente en centros de prensa y representantes de partido, usa de preferencia equipos nuevos probados previamente. No querras que te llenen de grilla por cosas tan tontas como que un cañon se le fundio la lámpara o que una pantalla ya se quemo por uso. Aunque sea de risa pero no se la acaban cuando algo así pasa.
*No incluir en el sistema el envío de mensajes de error, colores en rojo o cosas que den lugar a mostrar algo más grave de lo que realmente es.
*Haz que las cosas se vean buenas y profesionales a como de lugar ( documenta!! ). Muchos ingenieros somos del tipo hack & slash pero eso nunca nunca se ve bien en la política.
*Eres del mundo de la técnología, demuestralo!!!!, que no te vean pegando etiquetas en un checklist de cartón colgado de la pared. Por fuera del sistema le puedes hechar toda la crema a los tacos que quieras, nada más, que sean cosas que te ayuden y no te estorben o fallen.
*No dejar que los ayudantes usen sus computadoras personales en el centro de trabajo, alguién podría toparse con algo inoportuno y dar pie a largas grillas (como que a un asistente le de un pantallazo azul, toque musica inoportuna o le bote de repente una chica desnuda en la pantalla).
*No digas nunca “No falla y no fallará jamás”, esa es la infame maldición invocación al fracaso en este negocio.
*No dejes que un político se dirija a golpear a tu equipo de desarrollo, recuerda que a los ingenieros nos hacen falta muchos soft skills y esa gente son trolls profesionales. *No discutas nunca con un troll, significa que ellos ganan.
*Recuerda que tu también puedes entrar al juego de la grilla. Nada agradable pero debes de defenderte siempre. Sin embargo, debes de estar absolutamente seguro siempre que tu proyecto está hecho como la ciencia manda, si no, mejor retirate a tiempo con dignidad. Ya una vez que te metiste en esto, lo ultimo que importa es el dinero.
*Si puedes, consigue a alguien externo al equipo de desarrollo dedicado 100% del tiempo a intentar derribar el sistema. Preferible que sea uno de los tuyos a que sea un atacante a la mitad de la captura. (suerte encontrandolo, no hay muchos por ahí que no sean wannabes de hacker).
*Establece con tu gente un reglamento estricto de confidencialidad, que nadie bloguee o twittee cosas.
*Que la cara pública del proyecto sea una sola persona, pero que sepa hablar, tratar a la gente, que conozca al cliente y el proyecto por dentro y por fuera, de lo técnico y lo no técnico. También considera que siempre tu mejor defensa será cerrar la boca.
*Como todo proyecto de ingeniería de software: Caminar sobre el agua y cumplir con los requisitos del cliente es posible siempre y cuando estén congelados. Procura defender a morir que no le estén haciendo cambios a las cosas. Apunta a tener todo listo un mes antes.
*Procura que la gente este descansada y despierta sobre todo para la parte más crítica. Nos hemos aventado jornadas de trabajo de 20 horas diarias por semanas y el día más importante son al menos 36 horas seguiditas. Consigue más personal, mandalos a dormir en turnos, programales alimentación balanceada (que cruel soy T_T ) pero debes de hacer todo lo que se pueda para evitar errores humanos. Se vale tener una buena dotación a la mano de cafeína. Si hiciste todo bien, estarás listo completamente días o semanas antes, SI SE PUEDE!!!
Al final de cuentas, no tengas miedo, los políticos son solo un cliente más, la verdad, a veces nos encontramos en la industria gente más díficil.
12 Jul, 2010 |
hmier |
Cosas que no hay que hacer en un proyecto de software para el mundo politico mexicano
por Helios Mier
OK, se preguntaran que tiene que ver este tema con la seguridad, pues yo digo que mucho. Recientemente estuve muy de cerca en algo de esto y vi muchisimas cosas que dejan lecciones profesionales muy importantes.
Podrás ser un excelente técnico, un genial codesmith, un hacker vivillo, pero justamente esos puntos fuertes son nuestras principales debilidades cuando nos enfrentamos a otras personas, tenemos que admitir que nuestro propio ego de ingenieros no nos ayuda mucho profesionalmente.
Y en el mundo de la política, saben perfectamente esto, por eso desprecian mucho a los ingenieros sobre todo a los de sistemas, y saben perfectamente los puntos de donde pueden tomarnos por el cuello y doblarnos a su voluntad.
En el mundo de la política hay oportunidades importantes de hacer buenos negocios y sistemas, pero también es un ambiente muy hóstil para nosotros los ingenieros, de forma que hay que cuidar no solo las 7 capas de los sistemas, sino tembién las otras dos que no nos enseñan muy bien en las escuelas: la capa política (8) y la capa de usuario (9). Todas forman parte del sistema, todas tienen las mismas oportunidades de fallar y hacer fracasar cualquier proyecto.
- Sobre hablar con términos técnicos ante políticos. Orale, esta es la espada de doble filo, puedes ser muy elocuente y rollero y marear a cualquiera hablando en el otro idioma técnico y ser suficientemente contundente para hacer que cualquiera no te responda, pero si eres muy rollero, terminaras enredandote en tus propias palabras y es ahí donde se daran cuenta si eres de los buenos o de los que se pueden comer vivo con chile y limón. Ellos pueden oler nuestro miedo. Si vas a hablar, habla con seguridad y de las cosas que sabes. NO ESTES INVENTANDO COSAS. Si no estas seguro de algo, mejor ni lo menciones y pongas esos temas sobre la mesa. También preocupate por desarrollar la habilidad de comunicarte, asiste a cursos de oratoria y declamacion, aprende a explicar el mundo técnico a la gente no técnica con simplicidad y claridad que al final termines brindando confianza aun a la gente más brava que te pongan enfrente.
- No inventes cosas que no existen, apegate a lo que se hace y usa en nuestro negocio. No menciones que inventaste algo nuevo y que por eso es mejor que todos los demas, y peor aun, no digas que si alguien lo quiere revisar, no se lo puedes mostrar "por seguridad". Cuando dices este tipo de cosas solo te exhibes de egocentrico, inseguro y desubicado. Hace muchisimo tiempo que en nuestra profesion se maduro para pasar este tipo de cosas. Los esquemas de seguridad modernos para comunicaciones y arquitectura de sistemas se basan actualmente en que todos pueden conocer los algoritmos y procedimientos, pero la fortaleza de los sistemas radica en la resistencia y cuidados de las llaves que abren sus puertas.
- Muestra profesionalidad y madurez. Le explique esto a un cosejero electoral una vez, nuestra profesion es joven, muuuuy joven y esta en un proceso de madurez que aún no termina. Si bien en nuestro negocio hay mucho espacio para desarrollo de personas que son de genialidad asombrosa y hacen funcionar las cosas, en la práctica la mente de ese tipo de personas se aprecia desde afuera como un caos impredecible. De forma que la otra forma de desarrollar un sistema es justamente por medio de poner orden hasta las cosas mas simples. Por eso existen todos los modelos de ingenieria de software, los modelos de madurez, los estándares y certificaciones. Cumple cuando menos con lo que aprendiste en la escuela y no des espacio a que alguien dude y pregunte acerca de donde salió o porque se justificó tal idea o implementación.
- No tengas miedo a decir NO. Pero un no convincente, decir no a algo que no tienes porque no se aplica a lo que haces tiene que estar amparado por los razonamientos y conclusiones que usaste. No te limites a las conclusiones de tu propio equipo de trabajo. Nuestra profesión se basa mucho en la revisión y retroalimentación de nuestros pares colegas.
- Forma un equipo de pruebas profesional. Con todas sus reglas bien hechas. Un equipo externo al de tu desarrollo, que trabajo de forma independiente, que desarrolle su documentación y realize sus experimentos de casos de prueba. Este es un parámetro importantísimo porque podrán hacer un sanity check y un reality check sobre nosotros cuando tengamos los humos del ego hasta los cielos, y encontrar nuestras fallas antes de que alguien malicioso más lo haga y nos lo muestre enfrente de todos (especialmente enfrente de una rueda de prensa).
- Si vas a hacer algo novedoso, hazlo conforme a las reglas de la ciencia. Si vas a inventar algo, no digas que es tuyo exclusivo y que porque nadie más lo conoce es mejor. Esto siempre sera sospechoso, siempre se va a entender mal, y la política mexicana esta llena de casos asi. En nuestra profesión se respalda el avance de la tecnologia por toda una estructura de costumbres y protocolos para avalar que algo nuevo es bueno o mejor que algo que ya existe. Realiza la construcción de tu solución conforme a los protocolos básicos de investigacion científica, pide revisión de pares, demostraciones formales, publica white papers. Asi cualquier revisor o auditor que te manden, verá que hiciste las cosas bien, si no, será un clavo más con el que te crucificarán. También acepta que si ya en la industria existe y se usa una tecnología que te sirve para lo que buscas, no seas egocentrico y usala, un buen ingeniero no resuelve los mismos problemas dos veces.
- Haz las cosas con tiempo, forma tu plan de trabajo como cualquier profesión demanda. Anticipate a todo lo que puedas, haz infinidad de pruebas, ejercicios periodicos y simulacros y que la gente que te ayudara este entrenada al punto de poder hacer las cosas con los ojos vendados. No vayas a estar un día antes levantando tus servidores apenas.
- Presenta una sola cara ante el público, que quiero decir, que no hayan personas hablando y diciendo cosas por su cuenta, porque siempre caeran en contradicciones. Incluye tambien que gente de tu equipo de trabajo no este blogeando o twitteando mostrando informacion confidencial desde dentro del proyecto porque siempre los de afuera se van a enterar de eso y tendran munición para atacarte. Esa persona que hable tiene que saber presentarse, saber de relaciones publicas, saber de lo técnico y de lo administrativo y conocer a fondo el proyecto y las necesidades del cliente.
- Cuida tu reputación y credenciales. En este negocio de los sistemas, mas importante que ser bueno o malo, es parecer bueno y ser famoso. La educación y formación tienen peso, el reconocimiento de la comunidad también, las publicaciones, presentaciones con papelitos que hablan son muy importantes para ganar credibilidad, respeto y porque no, tambien imponer temor jajajajja. Pero cuida tambien las cosas negativas que se quedan sueltas, escándalos, proyectos fracasados, lo que pones en blogs y twitts. Todo lo que cae en internet nunca se borra, recuerdalo eso cuando estes buscando un nuevo trabajo.
- No les tengas miedo a las auditorias, si hiciste las cosas bien, todo estará bien. Los unicos que les temen a las revisiones son los que hicieron las cosas mal y los que tienen algo que esconder. En la seguridad, el karma es la perra mas brava y siempre muerde cuando más complicadas están las cosas. Pero eso si, si te tienen que auditar, pide que verifiquen las credenciales de quienes vendrán, porque si te envían a un novato inexperto, seguramente sabrá menos que tú y complicará todo. (Ya nos pasó una vez que nos mandaron a revisar a un técnico que ni la prepa termino y no sabia ni siquiera que era una VNC y abrio la boca diciendo una tonteria e hizo un despapaye total >_
- KISS - Keep It Simple Stupid! La máxima regla para reducir riesgo a un proyecto es poner las cosas de la forma mas sencilla posible. Hay cosas muy impresionantes y tecnología novedosa cada día, que son una tentación para ofrecer y experimentar, pero definitivamente en un proyecto con tintes políticos no es el mejor lugar para jugar con ellas.
- Estudia los antecedentes, siempre siempre revisa que cosas han ocurrido antes, que proyectos y documentación dejaron otros, que exitos y fracasos a habido. Y sobre todo, deja la documentación para los que vendrán despues de tí. También mantente siempre actualizado en tu profesión, como te menciono, es muy jóven aún y siguen apareciendo cosas nuevas y encontrando fallas en lo que ya tenemos, no vayas a resultar como un bobo que me dijo enfrente de su equipo de trabajo que desde que salio de la escuela nunca más volvió a tomar un libro.
- Seguro por diseño - siempre se debe de empezar a diseñar la arquitectura de un sistema comenzando por los requisitos de seguridad. Y sobre ellos se construye el resto de la aplicación. No cometas el error que nos meten en la cabeza las escuelas que la seguridad es un modulo más, y que si se puede, pues se la ponemos. Todos los proyectos de ese tipo son un fracaso aún antes de empezar. Y si no sabes, pide ayuda o contrata consultores que demuestren experiencia en lo que tu estas haciendo, lo peor que puedes hacer es ocultar tu ignorancia porque los agujeros que no encontraste tu en tu sistema, alguien más los explotará en el momento más critíco. Y toma en tu mente siempre esto: en cualquier proyecto con fines políticos es absolutamente certero que siempre recibirás al menos intentos de ataque, con tanto que podrá haber en juego, ten por seguro que alguién querra cuando menos intentar ver si puede hacer daño, y aqui los más perjudicados serán los que no hicieron nada para protegerse.
- Manten una correcta perspectiva, como ingenieros, cometemos el error de ver el mundo exclusivamente por el monitor. La gente afuera espera que las cosas sean perfectas, pero siempre tienes que recordar que la tecnología siempre será imperfecta y tiene una probabilidad de que va a fallar cerceramente. El sistema no podrá ser perfecto, pero tus precauciones para que no falle en el momento más crítico pueden ser completamente confiables. No escatimes ni seas aváro con esas precauciones, al final de cuentas alguien más pagara por ellas, lo unico que no se vale es que fracases en determinarlas y aplicarlas.
Como verán hay mucho que comentar sobre este punto, todo lo demás que aplica es todo lo que aprendemos en las clases de ingeniería de software y administración de proyectos, así que no queda otra mas que aceptar un poco de humildad y sentido común para hacer este tipo de proyectos, al final de cuentas, los políticos son solo un cliente más.
Todavía me falta hablar sobre los terminos y topicos satanizados de los sistemas para politicos, pero esa es otra historia.
10 Jul, 2010 |
hmier |