El mito de la seguridad de los Unix/Linux

Es muy común entre los aficionados a las computadoras hablar de lo inseguro que es Windows y lo confiables que son los sistemas operativos Unix o sus derivados como por ejemplo el OS X, e incluso Linux que aunque no es un Unix de pura sangre, si cumple los estándares POSIX. Lo divertido de muchos de estos debates en foros, blogs y demás espacios de discusión públicios que muchas veces toman giros radicales, es que quienes más defienden los sitemas Unix/Linux, son aquellos que no los usan diariamente. Y es que aquellos que trabajamos con estos entornos de forma cotidiana tenemos que convivir con sus limitaciones y las imprudencias de los usuarios (es decir los aficionados).

Si hicieramos una comparación con el fútbol, el hincha que está en la tribuna gritando y peleandose con los del otro equipo son los usuarios. Los sufridos system administrator, somos los que estamos en la cancha de la web 2.0 sufriendo los golpes del adversario y la ira de los hinchas cada vez que algún error se comete, y es que como dice el refrán, los toros se ven mejor de lejos. Yo soy un profesional de la informática, es decir me pagan por hacer esto, y hay días en los que me arrepiento de ganarme la vida de esta forma, aunque esos son los menos. La mayor parte del tiempo soy un aficionado más de la informática también, es decir lo hago porque me gusta y tengo mi equipo (Linux), lo cuál no quita que pueda jugar (cobrando) por otro u otros equipos.

Los comentarios anteriores eran porque he leído una nota en CBC News, en donde se describe como un grupo de cybercriminales consiguió montar la primera red de mac-bots, es decir una red de computadoras zombies constituída por Macs. La forma como lo hicieron fue escondiendo un trojano dentro de programas comerciales que se distribuyen a través de torrents públicos, es decir se aprovecharon de la piratería para infectar las computadoras de las víctimas. Lo cuál es básicamente lo que pasa también con los usuarios de Windows, y creanlo o no con los usuarios Linux también.

Por ejemplo es muy común que los usuarios de mis servidores, por facilidad no configuren apropiadamente un directorio al que le otorgan privilegios 777, y si el CMS que están utilizando posee alguna vulnerabilidad, sencillamente están dejando la puerta abierta para que un atacante remoto pueda instalar código arbitrario en el servidor. El año pasado publique un post titulado "Colección de exploits" en el que discutía lo peligroso de los permisos 777, pero como suele pasar el mito de la seguridad de los Unix/Linux puede más que la realidad de que un sistema no puede ser más seguro que sus usuarios.

Pero para ello estan las herramientas que nos permiten detectar si hemos sido invadidos por estos molestos programas, que una vez instalados usan nuestras computadoras como plataformas para lanzar ataques contra otras redes. Es por ello que si Ud. tiene un Linux, se tome la molestia de al menos una vez a la semana utilizar cualquiera de estos detectores de rootkits chkrootkit y rkhunter. Además de verificar mensualmente con Nessus si alguno de sus servidores es vulnerable. Así que no crean que por qué están en Unix/Linux pueden tener el mismo comportamiento descuidado que tenían en Windows, porque podrían tener una desagradable sorpresa.

Adicionalmente a las medidas anteriores recomiendo instalar tambien denyhosts, un scripts en Python que bloquea cualquier intento de ataque basado en fuerza bruta, luego de leer el artículo publicado por Peter Hansteen en su blog That gumpy BSD guy, le eche una ojeada a mi /var/log/auth.log para ver si había intentos de hacking usando el puerto ssh como describía Hansteen en su artículo y quede sorprendido de lo frecuentes que eran y lo diverso del origen. Fue por ello que le aplique el denyhosts a todos mis servers. En caso de que seamos más paranoicos y no deseemos que nadie pueda siguiera tener el prompt podemos usar los TCP wrappers para bloquear todo intento de conexión al ssh desde fuera de nuestra red, pero eso tiene el terrible inconveniente de dejarnos fuera incluso a nosotros mismos cuando estamos en el camino y necesitamos urgentemente arreglar algo en el servidor, en ese sentido denyhosts ofrece la mejor combinación flexibilidad/seguridad.

Espero que esta información les haya sido de utilidad y sirva para clarificar algunas ideas. Pero lo más importante, que haya servido para asegurar nuestros servidores Linux.

El poderoso PowerDNS

Actualmente ando desarrollando un proyecto llamado cix.pe, que tiene por objetivo ofrecer dominios gratis en dicho dominio. La palabra "cix" es la abreviatura que usan las líneas aereas para hacer referencia a Chiclayo, la ciudad de donde es mi familia y donde crecí. La idea es potenciar el uso de Internet en la ciudad de Chiclayo ofreciendo un dominio gratuito al cual todos, desde simples usuarios hasta empresas puedan utilizar para desarrollar su identidad en Internet. El mayor problema que tenía era el implementar un par de servidores DNS que utilizara una base de datos, la opción más fácil sería usar MyDNS, proyecto Open Source que ofrece un servidor DNS que registra sus valores sobre una base de datos MySQL, ya lo utilizo actualmente para mis dominios pero me he dado cuenta de que es lento además de poco flexible y tengo en mente que el dominio cix.pe sea usado por miles, no por decenas. Por dicha razón inicie una búsqueda en la web para encontrar la solución a mi problema.

Las dos opciones que encontre y sobre las que me enfoque fueron MySQL BIND SDB Driver y Bind DLZ, ambos son parches sobre el popular servidor DNS BIND, el problema que encontre en ambos es que funcionan sobre versiones específicas de BIND y dichas versiones tienen vulnerabilidades conocidas, así que eso me desanimaba de usar dichas opciones, pensaba que tendría que utilizar MyDNS de todas formas, hasta que revisando distintos foros encontre una referencia a PowerDNS, que es un servidor DNS Open Source que tiene muy positivos comentarios, puede utilizar MySQL, PostgreSQL, SQLite, Oracle, DB2, LDAP y ODBC, además de ser multiplataforma. Lo mejor de todo es que Debian Etch y Lenny lo incluyen dentro de sus repositorios.

¿Por qué utilizar un servidor DNS que almacene sus configuraciones en una base de datos?, bueno hay dos razones para ello, la primera y más evidente es que es la forma más sencilla de contruir un control panel que permita a los usuarios actualizar sus configuraciones. La segunda razón es que si se almacena la configuración en una base de datos el proceso de reiniciar el servidor DNS cada vez que se aplique un cambio a la configuración de un dominio se evita completamente. Ofreciendo de esta manera actualización automática de las configuraciones, algo que en el caso de mi proyecto es altamente deseable.

La pregunta sería entonces ¿por qué seguir usando BIND o PowerDNS con archivos de configuración?, la respuesta esta en la forma como se opera. Tener toda la configuración en un archivo de texto significa que todos los dominios y sus configuraciones deben ser cargados a la RAM en el momento que se incia el servidor de nombre de dominio, esto por un lago agiliza enormente el procesamiento de las consultas, pero obliga a que cada cambio en el archivo de configuración necesite que el servidor DNS sea reiniciado. Si se resuelven cientos de miles de dominios, esta es sin duda la opción más eficiente, pero demanda de que el servidor cuente con suficiente RAM, algo que no es un problema en nuestros dias.

En el caso de poner la configuración en una base de datos, como MySQL por ejemplo, implica que cada consulta al servidor DNS deba generar un query a la base de datos para extraer la información necesaria desde alli. Como veran esto introduce un overhead en cada consulta, pero nos da la ventaja de que el servidor de nombre no deba ser arrancado si algun usuario cambio la configuración de su dominio, pues los cambios son dinámicos. En nuestros días los servidores son tan potentes que el overhead de cada query es bastante bajo, incluso en un servidor que deba de procesar miles de queries por segundo. Además si a eso le usamos lo sencillo que es construir un sistema de alta disponibilidad con una configuración de MySQL en master-slave las ventajas de usar un servidor de base de datos como backend para almacenar las configuraciones de los dominios son más que evidentes.

La instalación de un servidor PowerDNS en Debian Etch o Lenny es tan sencilla como ejecutar este comando como root:

# apt-get install mysql-server-5.0 mysql-client-5.0 mysql-common pdns-server pdns-doc pdns-backend-mysql

Tenga presente de que no es buena idea poner en un mismo servidor los servidores DNS Authoritative y Recursive (tambien conocido como DNS de cacheo), es por ello que intensionalmente no hemos instalado el paquete "pdns-recursor", queda a su criterio hacer eso.

Finalmente la configuración de PowerDNS con soporte para MySQL debe hacerse siguiendo los pasos descritos en el manual del producto en el Capítulo 4. Espero como siempre que esta información les haya sido de utilidad.

Tiene sentido una computadora de $10

Para nadie es un secreto el mal estado en que se encuentra el proyecto OLPC, que se ha separado de Sugar como una forma de reducir gastos, además de que ha anunciado una nueva generación de laptops con una pantalla doble, las XO-2, que en teoría deberían de costar $75. Pero como ya todos sabemos el funcionamiento de las estructuras de costo en la OLPC Foundation, probablemente los países que compren ese tipo de laptops terminaran pagando entre $200 a $300 por cada una. Como una alternativas a las XO-1 Intel lanzó las Classmate, que sin embargo no han sido mucho más populares que las XO-1. Pero la sorpresa en este tipo de computadoras vino de la mano de Asus que tratando de producir un producto capaz de competir con las XO-1, fabricadas por su némesis Quanta Computer, terminó creando la categoría de las netbook que en la actualidad es el segmento de más rápido crecimiento en computadoras personales.

Sin embargo por más que para alguien que tenga un ingreso de $7.50 la hora, que es el mínimo en los Estados Unidos en nuestros días; una computadora de $100 puede sonar muy económica, esos mismos $100 pueden ser un monto muy alto para alguien gana solamente $2 al día, como es el caso de los habitantes de los países menos desarrollados a los que esta orientado este tipo de computadoras. Es por ello que el gobiernos de la India inició un proyecto de una computadora de $10, las ventajas son obvias, con el mismo dinero que se puede comprar una computadora de $100, se puede comprar 10 de $10, lo cual es un orden de magnitud superior. Pero este proyecto no ha estado excento de problemas y limitaciones, hasta el punto que ha limitado sus expectativas a un punto tal que la computadora de $10 ya no es una computadora, sino un dispositivo sin teclado o pantalla que se conectara a alguna laptop convencional y servirá para que los estudiantes puedan imprimir contenido, lo peor de todo es que el precio inicial no será $10 sino $30.

De manera paralela Derek Lomas y Jesse Austin-Breneman, iniciaron el año pasado un proyecto para proveer de computadoras que costaran menos de $12 usando como base un Famiclón, aprovechando que las patentes de la consola de juegos de Famicon de Nintendo ha expirado y se pueden usar chips que implementan toda la consola en un sólo chip, es más existen clones que incorporan un teclado y un BASIC pirata, que son vendidos por $12 a $15 en India, y sólo necesitan de un TV para ser completamente operativos, algo que todo hogar de la India tiene en estos días. Basado en la idea de Lomas, se ha creado el proyecto Playpower que tiene por objetivo desarrollar un framework que haga fácil crear software educativo para este tipo de computadoras.

Desde mi punto de vista, para un país como el Perú resultaría interesante ofrecer este tipo de soluciones, pues requieren un presupuesto que es una fracción de lo que hemos invertido en las OLPC. Claro los kits que entregaríamos a los alumnos no serían laptops que pueden llevar a la escuela, pero si computadoras que podrían conectar al TV de casa, para desarrollar las actividades que son asignadas por los maestros y para el famoso efecto multiplicador. En lo personal en lugar de apostar un famiclón que usa un procesador derivado del 6502, podríamos apostar a las MSX en un chip, que se desarrollan sobre el más versátil Z80, que ofrece además una entrada SD en la cuál podríamos poner un OS derivado un CP/M-80 por ejemplo con un GUI no muy sofisticado pero que permita por ejemplo el desarrollo de juegos educativos y lenguages como el LOGO, que fuera desarrollado por el mismo Seymour Papert, que ahora esta también dentro del proyecto de la OLPC.

La principal ventaja de usar un clon MSX, es que se puede acceder a una gran biblioteca de software de desarrollo que ya existe, con lenguajes como BASIC, Pascal, Fortran, Logo, C o Assembler, y librerías ya existentes que permiten hasta reproducir formatos modernos como mp3. En volúmenes de producción de decenas de millares, podríamos tener estas computadoras a precios que esten por debajo de $50 la unidad y personalidas para incluir un chip Wifi.

Sin embargo el mayor problema que enfrentaríamos no sería técnico sino humano, carecemos de los cuadros profesionales que puedan llevar acabo este tipo de proyecto. Es decir nos enfrentamos ante el clásico problema de que es primero el huevo y la gallina. Así no tenemos suficiente material humano porque nuestro sistema educativo es deficitario, pero no podemos arreglarlo porque carecemos del material humano, entrando a un ciclo perverso del cual sólo es posible escapar saliendo del país. Además ya esta probado que comprando tecnología desarrollada por otros tampoco resuelve los problemas, sino bastaría con darle una mirada de cerca a como va el proyecto OLPC en el Perú.

TRS-80 Color Computer

TRS-80 Color ComputerHace 25 años tuve mi primer microcomputador en casa, era un TRS-80 Color Computer, las siglas TRS significan Tandy-Radio Shack. Algunos lo conocen como "CoCo", pero para mi siempre fue "La Color Computer" o "La Color". Los amigos que tenían microcomputadoras se habían decidido o por una VIC-20, una C-64 o incluso los más adinerados por una "IBM-PC Compatible". En aquellos tiempos hasta la hoy omnipresente PC era una microcomputador más, hasta la gran homogenización ocurrida a principios de los 90, co-exitieron una gran variedad de plataformas completamente incompatibles unas con otras, para aquellos que deseaban tener una microcomputadora en casa. Cada uno defendía su decisión, después de todo tu "micro" te definía. Ahora se que es muy tonto pensar así pero espero que comprendan que en aquellos años era un adolescente de 16 años. Además el que decidió comprarla fue mi padre, y el tenía la clara intención de usarla para sus propios propósitos, así que tuve que adaptarme a esa realidad y compartir la computadora con toda la familia, aunque al final todos se cansaron de ella y yo podía usarla la mayor parte del tiempo.

La computadora que compramos no era nueva, ya era de segunda mano (pero tenía 16KB de RAM), pero se consiguió con varios juegos extras y un par de Joysticks, que hicieron bastante atractiva la compra. Desde un punto de vista estricatamente técnico era la mejor microcomputadora que uno podía comprar, su procesador Motorola 6809E era de lejos el más potente de todos los que existían, es más era mucho más rápido a sus 0.89 MHz de velocidad que un IBM PC con su Intel 8088 de 4.77MHz. Pero había un gran problema con esta microcomputadora, no tenía un chip gráfico equivalente al de las Commodore o las Atari, y el sonido que generaba podíamos calificarlo como simplón. El que la diseño no lo hizo pensando en los juegos, sólo en poner la mayor cantidad de RAM y poder de cálculo al más bajo precio, como aprovechar ese poder nunca le pasó por la cabeza al diseñador. Además de que el soporte era pobre, en adición al manual de uso, no era posible encontrar mayor información sobre la microcomputadora en la ciudad donde vivía.

Un problema adicional era que los programas que tipeaba en la computadora sólo podía grabarlos en un casette de audio, muchas veces no podía leerlos nuevamente, en aquel entonces comprar una controladora de disco y una disquetera costaba casi lo mismo que pagamos por la máquina, así que nunca consideramos esa opción y sufrimos los tormentos de almacenar nuestros datos y programas en cintas de cassette. Claro que esos tormentos no duraron eternamente, para 1987 llegó a casa la compurtadora personal que me acompañó durante toda la vida universitaria la Decision Mate V.

Sin embargo debo agradecer a todas las dificultades encontradas en "La Color Computer", esos inconvenientes me motivaron a investigar como resolver los problemas que se me presentaban y como hacer que esta pequeña máquina pueda hacer lo que mis otros amigos hacían sin tanto problema. Ahora, 25 años después he sentido algo de nostalgia y he decidido volver a probar "La Color Computer", para ello he intentado usar el emulador xmess del cual hable hace tiempo en el post "Un viaje al pasado". Pero otra vez tuve el inconveniente de que una vez apagado el emulador, el programa se evaporaba, esta vez como todo es virtual, me propuse usar una disquetera virtual que me costaría la extraordinaría cantidad de $0.00, pueden ver como lo hice en la sección de Tutoriales y howtos.

Como ahora ya puedo grabar todos los programas que quiero en estos discos virtuales, puedo tener hasta 4 en simultaneo en xmess, es que me he puesto a pensar que sería bueno tener una sección del blog dedicado a "La Color Computer" o iniciar otro nuevo blog con esa temática, cualquiera que sea mi decisión final, se las hare saber por este medio. Por lo pronto a disfrutar de la programación en BASIC y Assembler.

Obama, recesión y Open Source

En un artículo de Ryan Paul, aparecido en ArsTechnica, se comenta el hecho de que Scott McNealy, co-fundador y ex-CEO de Sun Microsystems, ha declarado que ha sido contactado por miembros de la administración Obama, para que ayude en la elaboración de un plan que tendría por objetivo reducir los gastos TIC en las diversas esferas del gobierno norteamericano, federal y local. A través del uso del Open Source, esto sería una forma de enfrentar la actual crisis presupuestal y hacer mucho más con menos recursos. Hay varias formas en las que el gobierno federal puede ahorrar utilizando el Open Source, por ejemplo grandes despliegues de PC con Linux en escuelas públicas, que ha probado ser bastante efectivo en el pasado. Y hay ejemplos como los del parlamento francés, que podrían seguirse en la administración pública norteamericana. Adicionalmente a la reducción de costos, que es algo prioritario en estos momentos, el uso de tecnologías Open Source, también mejora la interoperatividad con otras tecnologías, dandole a los departamentos TIC mayor flexibilidad al momento de usar y administrar su software.

Pero las dudas de la comunidad Open Source no están relacionadas a las verdaderas intensiones de la nueva administración Obama, que ha dado muestras de auténtico interés por el Open Source, sino a la persona que ha sido designada para ayudar a rediseñar las políticas del gobierno federal. Ya que McNealy, se ha caracterizado por su temperal y borrascosa relación con la comunidad Open Source. Incluso algunos críticos han dicho que pedirle a McNealy escribir un documento que de las pautas sobre la adopción del Open Software en la administración pública, es como pedirle a Dick Cheney, que escriba un documento sobre las pautas para conseguir transparencia gubernamental. Ciertamente no parece la mejor opción para pedir consejo.

Pero a quien pedir consejo entonces, Ryan Paul, sugiere a Sue C. Payton, asistente de la secretaría de la Fuerza Aérea para Adquisiciones. Ella ha sido la autora de un documento que proponía una hoja de ruta para el despligue de tecnologías Open Source en el Ministerio de Defensa, mientras fue una comisionada de la sub-secretaría de defensa en el 2006. Obviamente alguien que conoce al estado y al Open Source es mucho más recomendable, que alguien que ha tenido una relación de amor/odio con el Open Source como es el caso de Scott McNealy.

De cualquier forma, si el plan se lleva acabo, aunque sea parcialmente, representaría el modelo a seguir para una gran cantidad de administraciones públicas en el mundo, con lo que quizá uno de los clientes más importantes de Microsoft cerraría muchas de sus cuentas, y con él un grupo tambien numeroso de importantes clientes, compuesto en su mayoría por gobiernos extranjeros. Si en Microsoft conocían de estas conversaciones, es fácil entender por qué han estado tan preocupados últimamente en Redmond y colocaron al Open Source como una de las grandes amenazas a su modelo de negocio. Al parecer la recesión no será el fin del Open Source como muchos han estado anunciando, sino tal vez el catalizador para que salga de los centros de investigación y grandes centros de datos, para hacer su entrada al mercado de consumo masivo.