Corriendo Debian en un server fanless

Debido a una reciente mudanza, he bajado unos servers que tenía corriendo en casa de mis padres. Sin embargo, en mi nuevo hogar estoy en proceso de generar una nueva DMZ, esta vez, sin ventiladores.

El primer paso de este proceso ocurrió en forma de weekend project y consiste en hacerme de un "servidor". Las comillas hacen referencia a que no se trata de un gran server sino un procesador ARM de 200Mhz y 32MB de RAM, lo que es suficiente para que corra Debian y algunos otros servicios que pueden ser interesantes.

Los ingredientes

  • Un all-in-one LAN server que es la forma en que DealExtreme llama a unos dispositivos con chips de la familia str8132. Dado que vamos a instalar snake-os en ellos (en este caso se trata de la versión 1.3.2-20111019), es importante chequear la lista de compatibilidad. En particular me hice de un NS-K330 por 40 dólares.
  • Storage USB, puede ser en la forma de stick o como disco portable.
  • Un RS232 to TTL level converter, también conocido como cable para Nokia N1200/1208/1650/2630/2670. Es para conectarse por serie a la consola. No lo necesitamos ahora mismo, pero está bueno tenerlo a mano en caso de brickearlo, aunque es un procedimiento que no explicaré esta vez.

Instalación de Snake-OS

Es realmente sencillo. Lo primero es bajar snake-os, desde la sección de downloads de la web. Es importante que el archivo sea de la forma snakeos-<versión>-from-original.zip Instalar el que dice from-snake lleva definitivamente al brickearlo y recuperarlo puede ser complejo.
Desde la página de administración del dispositivo hay que subir el archivo snakeos-<versión>-from-original.bin contenido en el zip bajado. Confirmar el md5sum no está de más.

Acceso inicial

Los datos para acceder a la nueva interfaz con el browser:

http://192.168.0.240 (si es que no hay un DHCP en la red)
usuario: admin
contraseña: snake

Por SSH la contraseña de root la misma y, al cambiarla por la página de administración, se cambia en todos los accesos.

Post instalación

Incluso cuando Max opine que el uso de memoria virtual está rumbo a la extinción (lo cierto es que tal vez no es la mejor idea cuando el storage es de estado sólido como en los pendrives), activé el uso de SWAP desde el menú Service-Swapfile.

Si se quieren las mismas prestaciones que se tenían con el firmware original, hay que instalar unos paquetes adicionales. El sistema de paquetes que utiliza snake-os es opkg y tiene que ser primero activado desde Service-Opkg. Los paquetes pueden bajarse desde la página de download de snake-os y se instalan desde System-Packages. En particular, pueden ser interesantes (siempre pensando en los features originales):
Transmission: Es un cliente de BitTorrent, para dejar tus descargas corriendo. Es bastante mejor que el original.
miniDLNA: Es el server de streaming compatible con DLNA/UPnP-AV. Está un poco verde, pero se está trabajando en su mejora.

Corriendo Debian dentro

Las instrucciones están acá. Aunque esto es lo más obvio y necesario:

wget http://snake-os.googlecode.com/files/debian_chroot.tgz
tar -xvf debian_chroot.tgz
mount -o bind /proc /usb/sda1/debian/proc
mount -o bind /dev /usb/sda1/debian/dev
chroot /usb/sda1/debian/

Esta instalación base requiere unos 200MB. Tiene todo el potencial de un Debian (¡porque lo es!).
Claro que falta ajustar varios detalles, pero será la piedra inicial para el resto.

YAPAJ: Yet another post about Jobs

Tengo noticias: Se murió Steve Jobs.

¿Qué? ¿Ya lo sabías? No me extraña, si hoy estuviste conectado aunque sea accidentalmente a Internet, no tuviste forma de esquivar esta novedad. A mí el final del día también me encuentra en esta situación de hastío y me sorprende que aún no hayas dejado de leer dado que este es simplemente-otro-post-acerca-del-fallecimiento-de-Steve-Jobs. Es claro que el evento fue difícil de ignorar, aunque no estoy seguro de que esto hable bien o mal del finado. Y a hablar bien y mal es a lo que dedicaré las siguientes líneas.

Seguramente, como yo, leíste todo el día comentarios a favor y en contra. En general, mucha gente en los extremos. Me parece que en estos momentos es importante el zoom out, porque en los bordes es difícil reflexionar.

Los hechos: Steven Paul Jobs, en adelante SJ, fue el cofundador de Apple, una de las empresas de tecnología más importantes de la actualidad. A los 26 años, cuando Apple salió al mercado de valores, SJ ya era millonario y tapa del Times. ¿La razón? La Apple II, una computadora que no ocupaba una habitación entera para hacer cosas útiles, había iniciado la industria de la informática tal como la conocemos hoy. Y eso fue solo el comienzo.

No tan malo: Ésta es la parte que considero fácil. Posiblemente las buenas características de SJ son también las más obvias y ya la leíste por ahí, así que haré énfasis en lo que yo considero clave para entender la muerte de SJ como una pérdida.

El Macintosh 128K, lanzado en 1982, ya usaba lo que se conoce como la metáfora del escritorio. Es decir una interfaz gráfica de usuario intuitiva que simulaba las características de un escritorio, como carpetas, archivos y papeleras donde tirar las cosas que ya no queremos. ¿Te suena? Hoy es una cosa dada por obvia. Si bien el concepto es anterior, Apple fue el primero que lo comercializó con éxito. Esto se debe en parte a que incluyo un dispositivo llamado mouse (o ratón, si sos ibérico). También te suena, no? Aunque tal vez estoy siendo sobrestimado lo técnico. Después de todo, seguramente la raíz del éxito se deba a que SJ se encargó del marketing y la publicidad. Eran tiempos en donde la computación era cosa, ya no nerds o geeks, sino casi de científicos. Tal vez por esto, lo intrincado y feo estaba a la orden del día. Posiblemente el mayor mérito de SJ sea el haber traído belleza y diseño a ese mundo, así como usabilidad y funcionabilidad. Desde el diseño minimalista del packaging aquel Apple II, hasta los conectores de voltaje magnéticos de las actuales MacBook (llamados MagSafe). Todo parece estar perfectamente pensado para su uso.

La familia de sistemas Mac OS inspiró las hermosas interfaces en programas como iOS (el sistema que corren los iPhone). Su lista de patentes (la gran mayoría referida a diseños más que a elementos técnicos), dan una idea aproximada del impacto de sus creaciones en nuestra realidad.

Todo esto, combinado con un extraordinario carisma, una gran capacidad de oratoria y un managment que, para lo entendidos, es modelo, hacen que hoy mucha gente esté triste por su fallecimiento.

No tan bueno: Acá es donde intento hacer contrapeso a la postura de idolatría que se repitió demasiado hoy. Supongo que es políticamente incorrecto embestir contra un finado. Y es que una vez muerto, todos hablan de tus logros y no tus pifies. Incluso cuando estos fueron del tamaño de un elefante embarazado.

En primer lugar, el mérito inicial del desarrollo técnico de la Apple II (así como de la I) es de Steve Wozniak, a quien no tengo problemas en referirme como genio (por razones que quedarán para otra circunstancia, o para cuando se muera :P). A SJ siempre le importó más lo estético que lo técnico. Como ingeniero esto me rompe un poco, pero no es su peor faceta.

SJ, como CEO de Apple, fue el principal responsable de que sus productos se cuenten entre las cosas más restrictivas que existen en la faz de la tierra. Y quiero dejar afuera el hecho de que el software involucrado en sus dispositivos no sean libre. Me refiero a componentes explícitamente hechos y diseñados para limitar las libertades de los usuarios. Empecemos por donde hay que empezar:

En un principio, era posible hacer clones de los primeros modelos de Apple II. Esta posibilidad era técnica, pero cuando los clones empezaron a ser mejores y más baratos que los producidos por la ya-no-tan-inminente compañía, SJ empezó a perseguir legalmente a sus creadores. El resultado de este trauma infantil puede verse hoy cuando, a diferencia de sus primos PC, no es posible comprar componentes estándares de cualquier fabricante para dispositivos Apple.

Apple fue de las primeras empresas en implementar DRM en sus dispositivos. Esto es, tecnologías con la cuales se puede limitar, por ejemplo, la copia de cierto software o canciones en pro de los "derechos de autor". Podés aprender más acerca de como el DRM limita tu vida aquí.

La interoperabilidad es otra pata de la misma política. Los dispositivos iPod, iPhone, iPod Touch y iPad son muy difíciles de gestionar sin iTunes, del cual no existe una versión libre ya que los protocolos que los dispositivos usan son privativos y fueras de todo estándar. Por otro lado, el iTunes original es en sí mismo un pisoteo a la privacidad de los usuarios porque es monitoriable. Hay un excelente capítulo de The Simpsons que se burla de esta situación (ver 1, 2 y 3).

Esto tipo de cosas convierte a SJ y a Apple en una especie de club en donde la entrada es el sobrevalorado precio de un artículo que lejos está de beneficiar a la sociedad. Lejos de ser un aporte a la humanidad los productos se transforman en obstáculos dentro de la creación colectiva del conocimiento. Guerras de patentes y demandas cruzadas generan miedo a la innovación. Lo que debería ayudar al desarrollo de la sociedad se transforma en lastre. SJ fue uno de los principales promotores de la privatización del conocimiento y de la idea que compartir está mal.

En conclusión: Es importante mantener la perspectiva No estoy seguro de calificar a SJ como un genio. Sin duda modificó la realidad en la que vivimos hoy y es claro que merece reconocimiento. Pero también es claro que pudo haber hecho las cosas distintas para que más personas se beneficien de su capacidad de ver más allá. Ahora tendremos que esperar 70 años (lo que en términos tecnológicos significa nunca) para que algunas de sus creaciones pasen al dominio público. Tal vez un concepto de libertad más completo no hubiese permitido que hoy Apple sea la empresa con mayor capitalización bursátil del mundo. Pero yo esperaría este tipo prioridades en las personas que llamo admirables. ¿qué sus creaciones son bonitas y funcionales? No lo dudo. Pero mucho menos se a dicho de la música que producía el flautista de Hamelín. Al menos así lo veo yo.

Lo que dejé afuera de discusión: Decidí dejar argumentos que creo que ensucian la reflexión. Estos son:

  • Las denuncias sobre trabajo infantil y explotación de trabajadores en fabricas chinas de la compañía. Creo que es algo que va más allá de SJ. Es producto de otros factores y afecta muchísimo al mercado de la tecnología en su conjunto.
  • Filantropía: Al retomar el control de Apple en 1997, SJ eliminó todos los programas de filantropía de la empresa. Hay muchas empresas que no hacen beneficencia y aún así son socialmente responsables. No creo que sea algo criticable, per se.
  • La dieta anti-cancer: Se dice que SJ retrasó su tratamiento contra el cáncer de páncreas (cuya variedad era curable) por intentar curarse con una dieta anti-cancer. Además de tener cuestionable fundamento, creo que es un tema que pertenece a su esfera privada.

operating elements of a finite lattice is now easy(?)

In the context of my recent readings about Information Flow analysis, I wrote a little (tiny) Python module to operate elements of a finite lattice. Here is the code and usage tutorial. Comments are welcome. Patches to my broken English in the main page are very welcome.

my first UserScript

Gracias a Germán Osella Massa y su charla Userscripts - ¡Porque la web no siempre tiene que ser como es! impartida en las 6ºJSL de Junín conocí más acerca de Greasemonkey. Esta simpática extensión de Firefox permite pos-procesar, JavaScript mediante, una página web.

Después de pasar largos ratos recorriendo el repositorio de scripts, instalando y probando, quise escribir mis propios scripts. Mi primera idea era un reproductor embebido de archivos wav para Gmail, dado que necesito escuchar los mensajes de mi contestador automático ahí. Como para primer proyecto resultó un poco complicado, me puse un objetivo más modesto. Así fue como publiqué mi primer UserScript, un previewer de audio para Google Docs. Dado que no suelo escribir mucho JavaScript, comentarios y parches son bienvenidos.

UPDATE Dec 8, 2010 @ 18:43 ART: En vez de forkear el proyecto de Leith Caldwell, decidimos hacer un merge en el suyo, con más tradición. Así que ahora el script está disponible aquí.

eventé, eventando y eventaré

He estado (y lo estaré) de evento en evento. Así que acá va un pequeño resumen. Tal vez a alguien le sea útil o pueda lamentarse de no haber ido a aquellos que ya ocurrieron. Si tenés pensado ir a alguno en donde nos encontremos, no dudes en inscribirme para tomar una cerveza.

En el pasado:

En el futuro:

  • 10º Jornadas Regionales de Software Libre: En San Luis, el 28, 29 y 30 de Octubre. Este año no podré asistir, pero se corre la bola de que va a estar muy muy buena.
  • Google DevFest 2010 Argentina: En Buenos Aires, 1 y 2 de Noviembre. Si bien la inscripción ya debería haber terminado, yo lo hice fuera de termino y parece que tengo la confirmación. El procedimiento requiere dar respuesta un breve quiz.
  • BSDday Argentina 2010 (una web muy geek): En Buenos Aires, 5 y 6 de Noviembre. Me inscribí hace meses y no voy a poder ir (por la razón que se comenta en el siguiente item). El año paso la pasé muy bien y este año las charlas realmente prometen.
  • 6º Jornadas de Software Libre: En Junín, 5 y 6 de Noviembre. Hablaré Linux Capabilities y Hardening. Muchísimas gracias a los organizadores por invitarme. El programa se ve muy interesante y será una excelente oportunidad para reencontrarme con amigos y visitar la ciudad.

sfd @ mdq

Este sábado se celebra en Mar del Plata (tarde pero seguro) el Día de la Libertad del Software, en inglés Software Freedom Day, una celebración internacional cuyo objetivo es promover el uso del Software Libre para el beneficio del público.

El evento es organizado por gulBAC (grupo de usuarios de Software Libre de Buenos Aires central) y tiene un cronograma con temáticas de los más variado.

Así es como esta noche (mañana por la madrugada, para ser estrictos) me voy para MDQ a pasear, desintoxicarme, leer la pila de papers que tengo pendientes y dar una charla sobre seguridad en el susodicho evento, todo gracias al fuerte esfuerzo de los muchachos/as de gulBAC que se vienen portando de mil maravillas

¿Nos vemos alla?

llegar para irse

Todavía no termino de llegar (literalmente, que mi mochila se quedó en Madrid un día más que su dueño) y ya tengo el pasaje salir pasado mañana para Bahía Blanca.

El evento es Jornadas del Sur, durante este fin de semana largo. Hablaré sobre seguridad y empaquetado, además de encontrarme con amigos para beber y divertirse :P

¿Nos vemos allá?

UPDATE Fri, 14 Aug 2009: Las fotos ya están disponibles, a excepción de las de Toledo, que están en una cámara desechable porque me olvidé la digital cuando fui.

Exploiting DSA-1571: How to break PFS in SSL with EDH

( I love acronyms :-D ) Tal vez quieras leer esto en español.

At this point, all of you should know and see how the H D Moore’s toys work. Those toys attack SSH public-key authentication using clone keys and online brute force.

Furthermore, many of you know that there are other effects produced by a biased PRNG besides this one.

Strangely, I could not find more of those toys exploiting these aspects. So, I would like to show you a Wireshark patch which attacks Perfect Forward Secrecy (PFS) provided by Ephemeral Diffie Hellman (EDH).

Introduction to EDH

Let’s put it in plain words (if you know what we are talking about, ignore this and jump to the next heading):
In an insecure communications channel the parties agree a common key to cipher their dialog. This is what happens in SSL (in most of the cases, depending on the cipher suite):

  • The server selects a random prime p and a generator g of the field Z*p (Let’s ignore the mathematical properties of these values). So, the components p and g are public.

  • The server picks a secret random number Xs and calculates Ys=gXs mod p. Ys is public and is sent to the client (just like p and g).
  • The client does something similar, selecting a secret random number Xc and calculating Yc=gXc mod p too. The client makes Yc public by sending it to the server.
  • The shared secret s is the public key of the other part to the exponential of the own private number, all in p modulus. That is, for the client s=YsXcmod p and for the server s=YcXsmod p.
  • With this shared secret the parties can encrypt all the following messages in a secure way.
  • In the Ephemeral Diffie Hellman (EDH), the private numbers are ruled out, so s is mathematically secure and nobody can obtain it even having access to one of the parties after the aforementioned handshake.

The “exploit”

If an eavesdropper can explore the complete private key space (the all possible numbers for Xc or Xs), he/she will be able to get access to the shared secret. With it all the communication can be deciphered. That’s what this patch can do.

A Wireshark with this patch and a list of possible private keys will try to brute force the share secret. If one of the parties is using the vulnerable OpenSSL package the communication is totally insecure and will be decrypted.

  • The patch for Wireshark 1.0.2 can be downloaded from here.

  • Debian packages with the patch applied can be found here.
  • This is a list of all 215 possible 64 and 128 bit DH private keys in systems vulnerable to the predictable OpenSSL PRNG described by DSA-1571.
  • An example of a pcap file can be found here (it was built with a vulnerable client and one of the Moore toys, a hacked getpid by running $ MAGICPID=101 LD_PRELOAD=‘getpid.so’ ./vulnerable-openssl/apps/openssl s_client -connect db.debian.org:443 )

The patch was submitted in order to be committed on the Wireshark trunk. There you can find the patch against the on-develop source revision 25765.

Issues that can be improved

We (the other developers and myself) detected few things to be improved. But we will do nothing for them. So, if you want to contribute with some code, start from these items and submit the patches to the Wireshark’s bugzilla:

  • When the packets are out-of-order the decipher with stop itself.

  • The brute force attack should run in a background process (and with a progres bar)
  • Check the length of the keys before trying to brute force them.
  • The patch also implements the display of public DH parameters in the packet tree. It’s incomplete.

Credits

Paolo Abeni <paolo.abeni at email.it>
Luciano Bello <luciano at debian.org>
Maximiliano Bertacchini <mbertacchini at citefa.gov.ar>

This work was partially supported by Si6 Labs at CITEFA, Argentina.

UPDATE Jul. 21st: See more and updated info here, especially this.

porqué el 'Debian/OpenSSL debacle' no afecta mi creencia de que Debian es el mejor OS del mundo

En estos días escuché cosas como “Seguramente provocaste la mayor migración de usuarios de la historia, ya nadie querrá usar Debian en sus vidas”. Otros párrafos sobre la vergüenza que caía sobre los desarrolladores, sobre nuestros procesos de calidad llovieron de a decenas en mi inbox.

Este tipo de cosas me hizo reflexionar. Y es esta reflexión la que me gustaría compartir con ustedes.

Hace un tiempo ya, cuando casi sin querer y por accidente me encontré con el problema, simplemente me negué a creerlo. No podía ser. Era tan trivial y estuvo ahí, frente a nuestras narices tanto tiempo... parecía ser evidente de que yo estaba haciendo algo mal. Tardé mucho en confirmarlo, y aún con la duda lo reporté.

Junto a mi reporte adjunté un parche ridículo, casi insultante. Consistía en:
-/*
- * Don’t add uninitialised data.
MD_Update(&m,buf,j);
-*/

Esto fue el día 5 de Mayo. Al día siguiente tenía una respuesta, con una clara dirección de trabajo. A los pocos días se me informaron la fecha en la que el DSA saldría. Todo fue tan expeditivo, tan admitido, sin subestimaciones, pero con un fuerte sentido de la responsabilidad. Me pareció de una brillante sensatez el desarrollo de dowkd.pl antes del anuncio.

El 14 de Mayo el usuario tenía todos los elementos para defenderse. El paquete openssh-blacklist resultó ser sumamente útil y fue un aliciente entre el caos generado.

En mi vida no he enviado muchos advisories grandes (es el primero que hago totalmente por mi cuenta). Pero me pregunto: ¿Qué hubiese pasado si un problema como este hubiese surgido en algún otro software de alguna empresa? ¿Qué hubiese pasado si, en vez de ser un desarrollador de Debian el descubridor fuese un empleado de esta compañía? El bug dejaría de ser un vergonzoso accidente para convertirse en un devaluador de acciones. La baja de ingresos por clientes perdidos podría hundir la empresa.

En esta caso la historia hubiese sido distinta.

Es por esto que creo que el modelo de software libre es bueno, y en particular Debian es bueno, porque no responde a presiones comerciales, porque no oculta sus problema y porque su prioridad es el usuario.

Sin duda, problemas en el software habrá siempre. Sin duda, este fue un problema de proporciones épicas. Sin duda, la confianza en Debian se ha visto afectada. Pero la lección está aprendida. Y Debian sigue siendo mi sistema operativo favorito.

Esto no es una justificación, sino una profunda opinión personal.

Libre books

En la última Feria del Libro compré dos obligados para la biblioteca de todo aquel que gusta del software libre en particular y la cultura libre en general:

  • Software libre para una sociedad libre de Richard M. Stallman, disponible para el acceso público desde aquí.
  • Cultura Libre(Cómo los grandes medios usan la tecnología y las leyes para encerrar la cultura y controlar la creatividad) de Lawrence Lessig, disponible bajo licencia Creative Commons by-nc, puede bajarse desde aquí.

Dos visiones distintas de un mismo tema para formar una opinión propia.

UPDATE May 11th:
Sometimes life can be so ironic.

GNUtn rulez!

Creo que es la primera vez que menciono a GNUtn en mi blog. Tal vez sea porque hasta anteayer no le encontraba mucho sentido. GNUtn (a.k.a. Grupo de Nerds Utenianos) es un grupo que fundamos, si la memoria no me falla, junto con Roberto y Nutz hace un par de años. Hoy tiene unos 60 subscriptos en la lista de e-mail. El objetivo, fomentar el uso y la ideología del Software Libre. Siempre tuvimos el desafío de darle ese toque filosófico que sobrepase lo técnico. Y, por primera vez, creo que lo estamos logrando.

Ayer tuvimos una metting presencial en el café frente a la facultad. Grandes conclusiones, grandes proyecto.

O tal vez sea yo, que hoy me levanté optimista.