Hace un rato terminó el paso previo a la eliminación del cluster lobogris. Tuve que poner por 30 minutos fuera del aire esta cuenta (con sus 12 dominios), pero ya la restablecí.
admin
Defensas contra MITM, parte 1
Aunque no se ha definido bien de donde viene el problema, y que el internet ya se resolvió en la oficina, no podemos dejar de lado que las redes Wan son bastante mas inseguras.
Hay dos o tres razones que justifican la inestabilidad anterior:
1 ) Cable troceado
2 ) Intercepción pasiva o Sniffing
3 ) Tampering o Intercepción activa. Paso previo a un ataque de MITM.
Los ataques de MITM Son especialmente problemáticos con la naturaleza del trabajo que realizamos en la empresa, y una red WAN es un problema serio que facilita estos ataques. Pasamos a tener demasiados puntos de falla.
La solución evidente es tener acceso nosotros a una conexión independiente o cableada, así que podríamos estar mas seguros de si hay o no un MITM. La red cableada restringe el campo de posibles MITM, y una conexión tipo BAM o Ego ayudaría.
Pensando en esto, y que el código que enviamos por correo puede ser interceptado, me pareció bueno usar el método de aescrypt.zip, un software de encriptado via AES que usé hace tiempo, que edita archivos de texto con passphrase. El problema fue que no corre en Windows 7 home premium, y cambiar la plataforma de los programadores de aquí no sería opción porque las máquinas virtuales no correrian en windows 7 home, que sería el downgrade a la licencia que tenemos en las laptops.
Así que la alternativa es simple.. y el problema mayor. Independientemente de la posibilidad de MITM la necesidad de un cifrado Rijndael o similar para notas de juntas confidenciales, está presente.
Descargué varios editores con criptografia pero no regresan el texto como debía ser cuando no vienen en UTF-8 (y si la idea implica en cierto nivel manejo de correo, mejor sigo al RFC 1642 para envío seguro por correo, y por lo tanto no es UTF8 sino
UTF7). Por lo mismo, decidí hacer un editor rijndael propio (fueron unas dos horas y 70 SLOC en PHP). Incluso este texto lo estoy capturando en ese editor y luego el texto lo subiré al blog. El lunes edito el mensaje para poner el código.
Básicamente para un editor hecho en casa me quedaban dos alternativas: Twofish o rijndael. Para evitar complicaciones elegí Rijndael.
Que necesita para mi un editor seguro de texto seguro ?
1 ) Evidentemente contraseña reversible
2 ) No necesitar login, pero guardar passphrase en memoria
3 ) No preguntar demasiado la passphrase. Los editores que use en su momento eran molestos en ese aspecto.
4 ) Permitir desconexión rápida para ir al baño, por ejemplo.
5 ) Permitirme abrir tres archivos fijos a la vez. Como pueden ser enviados por correo en scripts, manejaré como archivos editables editor.txt editor2.txt y editor3.txt
Estos objetivos se cumplieron muy rápido con CURL y unos cambios en mcrypt. Como los programadores de php tienen puesto WAMPSERVER, el editor puede ser un solo archivo, y los archivos texto finales pueden copiarse a un USB o enviarse por correo, sin que sean crackeables.
En una etapa posterior, el no usar utf8 permite que este editor evolucione a un editor de código PHP que mande la información a un Sftp seguro o via post CURL. Tiene que ser un FTP con SSL porque a pesar que en el server destino se implemente un ftp, si no tiene SFTP el password del ftp es texto plano y un sniffer o MITM obtiene la credencial, haciendo lo demás inútil. Un post de información via CURL tiene limitaciones prácticas en tamaño a menos uqe revises un crc32 del post, pero es poco fiable, asi que de entrada la solución actual me permite una tercera opción. Enviar por un correo bajo socket seguro, y que el server lo lea del correo. Así el password estaría menos expuesto.
El objetivo previo se cumple: Editor seguro con estándar Rijndael en pocas SLOC de PHP.
Otra función práctica podría ser en la casa como clipboard. Se pone el dato en un sitio sin problemas. No sirve en ese caso como defensa ante MITM, pero es otra posible aplicación.
Edit del 7 de febrero:
Se coloca en http://www.alfonsoorozcoaguilar.com/codigo/rijndael.txt el codigo fuente del editor rijndael, y se deja un ejemplo operativo en
http://www.alfonsoorozcoaguilar.com/codigo/editor.php
Cambios de licencia y datos varios
Por lo que veo si quiero dedicar mas tiempo de nómina al analizador de código será via un cambio de licencia. El proyecto puede servir para el software SaaS que estamos usando, así que habrá mas respaldo usandolo como LGPL que como GPL, eso si, versión 2.
Por otra parte ayer instalé una Maquina virtual con XP para pruebas del tunneling en el windows 7. No me gustan las máquinas virtuales, pero como necesito acceso a ciertos correos de outlook express por las pruebas, no se puede hacer con windows 7. Así que en el windows xp irá outlook express.
Noté que por no estar usando lightspeed, en ocasiones algunos procesos de apache usan cada uno 6% de CPU en el servidor.
Actividades autoasignadas de hoy:
1 ) Terminar el analizador de Reporte de TD, porque la información origen viene dañada.
2 ) Instalar Tunneling.
3 ) Preferentemente avanzar en el mecanismo de parser
Tunneling, interferencias y vpn
La perdida de paquetes de ayer no coincide con lo que yo emití.
¿Tendremos una PC en modo promiscuo respondiendo paquetes ajenos?
Haciendo una revisión por encima, el hecho que usemos redes WAN crea ruido en el sentido que no toda la señal se está utilizando, y los problemas de celulares y la zona pueden ser de saturación.
Se me ocurren dos alternativas:
1 ) Tunneling via un file_get_contents sobre un servidor con timeout de 5 minutos. Si el problema es sniffer o interferencia debe mejorarse. Lo que si es que no tenemos autoridad para cambiar la contraseña del hub, y tampoco creo que sea el problema. La instrucción debería ser un CPM para ver si hay modo promiscuo activado en la red.
2 )E-go.
A final de cuentas el problema no se ve bien, y es solo del recurso técnico, vamos a seguir con problemas secundarios como los cambios de organigrama.
Si no usan los principios básicos de la dirección, menos pueden controlar los recursos de la red. Así que una vez mas la medida provisional es hacer enlaces para quitar los parásitos.
Resumen de Scrum y escupir metodologías
Vi la posibilidad que traten de implementar scrum en el trabajo. Esto sería recomendable pero un poco estúpido.
Yo tuve Scrum funcionando en el área hasta que los cambios del corporativo (24 nov) dejaron fuera esa manera de trabajar. Curiosamente varias comunidades en línea y dos razones sociales que manejo usan la misma fecha pero este no es un evento relacionado.
Lo extraño del caso es que , como dije, Tanto SAEM como XFB y AGB ya estaban usando Scrum con su lista de labores del día, pendiente del día y demás. Todo en basde al procedimiento, sabiendo que era SCRUM pero sin decirlo. Funciona.
Hace unos años empezó este problema en varias consultorías que he visto. Personas que tienen idea de vocabulario, escupen metodologías y no implementan ninguna. En este caso, no solo están regresando al repositorio, sino que supongo se darán cuenta de que ya estaba implementado 5s y CMMI 2, además de los 12 pasos de Joel on Software (entre otras).
No me gusta decir se los dije, pero como se los dije, probablemente usen otra metodología y no Scrum.
Un resumen de Scrum tomado de :
===================================================
http://www.ingenierosoftware.com/equipos/scrum.php
estión de proyectos con SCRUM
Por Joaquin Gracia
4 de Septiembre de 2006
¿Qué es SCRUM? SCRUM es una forma de gestionar proyectos de software. No es una metodología de análisis, ni de diseño, como podría ser RUP, es una metodología de gestión del trabajo.
Una de las características más importantes es que es muy fácil de explicar y de entender, lo que ayuda mucho a su implantación.
Por otra parte SCRUM puede ser aplicado a distintos modelos de calidad (como podría ser CMMI) puesto que estos te dicen qué tienes que hacer, es decir, te dicen que tienes que gestionar el proyecto, pero no te dicen cómo. Ahí es donde entra SCRUM como modelo de gestión del proyecto.
Pero vamos a la materia, los siguientes son los elementos básicos de SCRUM.
Una lista con las funcionalidades de la aplicación ordenadas de mayor a menor importancia. Esta lista se llama «Product Backlog». No hace falta que esta lista contenga todas las funcionalidades inicialmente.
De la lista anterior, se toman las primeras funcionalidades, se descomponen en tareas y son anotadas en una lista que se llama «Sprint Backlog». Estas tareas serán realizadas en el siguiente mes.
Además de estos elementos tenemos unas cuantas reglas básicas y sencillas que tenemos que cumplir.
Una vez que se pasan las tareas más prioritarias del «Product Backlog» al «Sprint Backlog», estas no se pueden cambiar, esto quiere decir, que el trabajo de un mes queda fijado. Esta es la regla más importante de todas.
Al final del mes, este periodo se le llama «Sprint», se tiene que tener un ejecutable con las funcionalidades del «Sprint Backlog».
Todo el mundo puede añadir funcionalidades al «Product Backlog», pero sólo una persona puede ordenarlo. A esta persona se le denomina «Product Owner». Es el responsable del producto final.
Cada día se hace una reunión de menos de 15 minutos, en la que se reúne todo el equipo: ingenieros y gestor (llamado «Scrum Master») en la que cada miembro del equipo expone sólo los siguientes temas:
¿Qué es lo que se hizo el día anterior?
¿Qué es lo que se va a hacer hoy?
¿Qué impedimentos tengo para realizar mi trabajo?
Sólo se tratan estos temas para que la reunión sea rápida y no malgastemos el tiempo de los demás. Si se tiene que tratar otro tema se hace otra reunión sólo con las personas implicadas. ¿Recordáis la serie de TV «Canción triste de Hill Street» en la que el sargento tenía una reunión matutina con sus agentes y que terminaba con un «Tengan cuidado ahí fuera»? pues viene a ser algo parecido.
Al final del mes, es decir, al final del Sprint, se presenta el producto y se toma del «Product Backlog» ordenado las funcionalidades para cubrir en el siguiente mes.
Básicamente esto es todo. Como podéis observar las reglas son sencillas y claras.
La duración del Sprint se puede modificar. Hay gente que prefiere Sprints más largos al comienzo, mes y medio o dos meses, ya que al principio cuesta más obtener un ejecutable y al final Sprints más cortos, una semana o dos, cuando se está en la fase final de refinamiento. Pero básicamente el proceso es el mismo de principio a fin.
Para gestionar el proyecto sólo necesitamos dos listas, el «Product Backlog» y el «Sprint Backlog». Podemos usar Excel para manejarlas.
BAM casi obligatorio
Las 2 conexiones de Internet del trabajo están fallando. Ya se verificó que del servidor de dns al internet se cae la conexión. Mi propia PC me muestra una pérdida de 14%, lo que equiviale a que se caiga internet seis veces por minuto, y po lo mismo me cierre las comunicaciones via SSH y parte de las ftp.
En resumen: Será poco posible trabajar con esta latencia. No es problema de interferencia, así que será lo mismo que de costumbre. Es extraño que en unas oficinas como las anteriores el problema fuera al revés, que ni mi BAM ni celulares funcionaban. Aquí no he visto de celulares (no me gustan), pero tampoco he visto a nadie hablar por celular desde aqui recientemente.
Sea lo que sea, probar con BAM es casi obligatorio.
Analizador de código y Documentador GPL para código de PHP
Uno de los problemas actuales del área de desarrollo de la empresa en que estoy por nómina, es el que los dos programadores jovenes no tienen idea de como usar una librería, ni de sus ventajas. Desde los ajustes de noviembre, uno de ellos se ha dedicado a la implementación y el otro a los formatos PDF, pero falta verificar las desviaciones al estándar.
La mayoría de los documentadores GPL y no GPL que he visto tienen el problema de ser «verbose», es decir, dan información inútil. Una vez en el año 2000, recuerdo que me quisieron dar en un lugar un archivo de 600 páginas generado con Data Architect de Sybase, y yo me NEGUE a recibirlo. Mi argumento fue simple: Generaste esa documentación con Data Architect, así que si me das la impresión del esquema entidad relación, Se entiende mucho mas rápido. El archivo que me das en este momento es inútil.
Mas adelante En otra empresa una persona que no era técnica (teóricamente si pero en realidad hacía powerpoints) me dio tres esquemas de datos para integrarlo a mi reporteador al mismo tiempo. Uno era powerpoint, otro excel y un tercero word… con estructura de campos diferentes.
En esa ocasión ya había avisado a mi superior inmediato, que si manejaba esquemas identidad relación. El asunto estuvo bastante ridículo, porque todo el mundo menos la powerpointera estuvo de acuerdo que debía ella darme un solo esquema, y preferentemente en un sistema entidad relación. Como dato al margem se acabó ignorando completamente su trabajo e hice un reporteador autoconfigurable.
La premisa básica de la documentación es:
La documentación se debe enfocar a quien va dirigida.
Necesitamos un reporte simple de dependencias, duplicados, contenido, porcentaje de documentación, duplicados e información relevante sobre código fuente para uso de los programadores y líderes de proyecto.
¿Cual es el problema en este momento?
Hay código que no sabemos de que depende, ni a que llama. Ya Tenemos especificaciones funcionales que hice yo, que documentan los límites, pero lo que necesitamos en este momento es un analizador de código que verifique por requires e includes que llama a qué , así como si hay funciones repetidas, etc.
¿De donde sale y Cual es la idea general?
En el año 95 hice un sistema de código Turbo Pascal que revisaba archivos *.pas y reemplazaba llamadas de Tp3 a Tp4, además de varias correcciones y quitar espacios sobrantes. Lo que busco es hacer algo similar, además de dar un reporte simple que me indique funciones documentadas, jerarquía de archivos, relevancia y analizador de archivos sobrantes.
¿Bajo que licencia?
GPL 2.0. Básicamente por que la versión GPL3 sigue en borrador y la gpl3 identifica de manera clara «Unless specifically stated, the Program has not been tested for use in safety critical systems.», lo cual causa bastantes quebradores de cabeza adicionales y subidas en fianzas para sistemas que deben cumplir con HIPAA, http://en.wikipedia.org/wiki/Health_Insurance_Portability_and_Accountability_Act
Dns Poisoning por cambio de servidores
Ayer noté una lentitud tremenda en el server original que acabo de mover dominios. Lo primero que noté fue un problema en el tamaño del log de messages. Tenía mas de 90 mil líneas en dos dias. Al abrirlo, noté intentos de dns poisoning .
Este es el código simple que hice para verificar incidencias de dns poisoning en el log de messages bajo var/log/
Requisitos: Primero alteré el nombre de messages a messages.txt
Proceso lógico y ampliaciones para estadística en pseudocódigo
inicia bucle fin archivo
esperado=»NO»;
$cadena=lee linea;
avisa que linea estoy leyendo
si encuentra dominio sube contador uno
si «view internal: received notify for zone» {suma contador propio; esperado=»SI»;}
si «view external: query (cache)» suma contador propio
si «sending notifies»
si «host pure-ftpd:»
si «host kernel: Firewall: *TCP_IN Blocked*»»
si «internal: loaded serial»
si esperado==»NO» {contadoresperado+1; mostrar cadena}
termina bucle
El código implementado me mostró problemas de 50% de incidencias en el messages.
Cofigo PHP:
https://alfonsoorozcoaguilar.com/codigo/dnspoisoning.txt
Boliche, repositorio y accidentes
Ayer volvieron a implementar el repositorio de tareas que hice hace unos meses, porque no les quedó otro remedio. Soy previsor.
Ayer, antes de salir al boliche para lo que se había hablado en el corporativo, le comenté a Angel del problema que se veia en el panel de patcheo de las nuevas oficinas: No se ve numeración de nodos.
Hoy en la mañana, le comenté a uno de los socios y al «director» del corporativo la necesidad de poner extinguidores y hacer un programa de simulacros, de manera que idealmente cada semana tengamos un simulacro de ahogamiento, infarto, incendio y evacuación. Como baja las primas de seguro no es mala idea.
Diez minutos despues, se bautizó con sangre la oficina.
El mismo socio al que le comenté, se abrió la cabeza con material del panel de patcheo, lo malo es que el en el pasado fue voluntario de la cruz rojam, y por lo mismo nuestro «experto» en el tema.
Es cuestión de esperar a las medidas de seguridad de incendios.
Para los que no ubican que es un panel de patcheo:
http://esp.hyperlinesystems.com/catalog/patch-panels/
Oficina nueva
Había quedado de escribir ciertas cosas hoy, pero lo tendré que hacer mañana. En la oficina nueva del trabajo tenemos un internet lentísimo y no podré hacer las pruebas necesarias.
Noto dos o tres cosas, que comentaré después.
Ayer me autorizaron a que el sistema para documentar lo que han hecho SAEM y ABG, se maneje por GPL. Mañana doy los datos del proyecto de documentador de código PHP.