Sei sulla pagina 1di 73

DVD

Arranque
Este DVD contiene dos caras, con LinuxMint 12 por un lado y OpenSUSE 12.1 por el otro. LinuxMint viene en versin Live y de instalacin, por lo que puede ser arrancada y probada sin instalar nada en el disco duro. OpenSUSE slo viene en versin de instalacin. Para empezar a usar tu Linux, inserta el DVD en el reproductor y rearranca el ordenador. Si no aparece el men del DVD, tienes que ajustar la BIOS para arrancar desde el disco. Para hacerlo, normalmente has de pulsar una tecla durante las primeras fases del arranque del ordenador (habitualmente F2 o Supr), buscar el men que permite cambiar la secuencia de arranque de dispositivos y colocar el lector de DVDs en el primer lugar de la secuencia. Posteriormente se guardan los cambios y se sale de la herramienta de configuracin para que se reinicie el arranque. Como cada BIOS es diferente, recomendamos consultar la documentacin del fabricante para realizar esta operacin.

DVD s que tu DVD ess para diagnostica e


e.e Si cre agazin nux-m o. dvd@li o nuev s un nviemo te e

nos a O? escrbe CTUOS n mal estado, rlo o para que DEFE t e

LINUX MINT LISA Y OPENSUSE 12.1


inux Mint lleva encabezando el Top 100 (DistroWatch) desde hace ya algunos meses, siendo la primera distro comunitaria, no apoyada por ninguna empresa en particular, que consigue mantenerse consistentemente en este puesto en mucho tiempo. A pesar de basarse en Ubuntu, Linux Mint est siguiendo su propio camino en muchos aspectos. Por ejemplo, decidiendo no implementar Unity, sino una versin muy modificada de Gnome3, con un aspecto muy similar a Gnome2. Esta decisin se basa en el hecho de que los desarrolladores consideran que se facilita la transicin de un concepto de escritorio a otro. Tambin trae de serie otro escritorio llamado MATE (en honor

DVD de Dos Caras


Este DVD es de dos caras, aunque funciona igual que un DVD convencional, es decir, el lector siempre lee la cara que est hacia abajo. Para evitar confusiones, la etiqueta de cada distro est en la cara opuesta a la de sus datos. Por tanto, para empezar a usar LinuxMint 12, la etiqueta con la palabra LinuxMint tiene que estar hacia arriba, y viceversa para usar OpenSUSE.

da la tradicional bebida uruguaya), que es un fork para seguir desarrollando Gnome2. Por la cara B traemos OpenSUSE 12.1, una de las distros tradicionalmente grandes que incluye muy interesantes novedades. Por citar dos, y aparte de los nuevos escritorios KDE 4.7 y Gnome 3.2, OpenSUSE es la primera en implementar gestin de color para estos escritorios, una tecnologa habitual en plataformas Mac y que unifica el aspecto de color en todos los dispositivos. Tambin viene con Snapper, una tecnologa basada en el nuevo sistema de ficheros Btrfs que permite ver y volver a versiones de archivos anteriores sin tener que implementar aplicaciones especficas para esa tarea. I

RECURSOS
[1] Sitio de LinuxMint: http://linuxmint.

com/
[2] OpenSUSE en Castellano: http://

www.opensuse.org/es/

WWW.LINUX- MAGAZINE.ES

Nmero 78

EDITORIAL

NO LO DIGAS
no de las subtramas ms interesantes de 1984 de George Orwell sigue los esfuerzos del partido en el poder para crear un diccionario definitivo de la lengua inglesa que corresponda con la ortodoxia del rgimen. Cabe preguntarse por qu es tan importante la elaboracin de un diccionario para un rgimen ntegramente dictatorial y por qu es tan importante para Orwell, que llega a dedicarle un apndice en el libro. Orwell sostiene que el control del lenguaje es crtico para el control de los pensamientos. No en vano tenemos un dilogo interior que se expresa con palabras. De hecho, el esfuerzo de los acadmicos del rgimen totalitario descrito en el libro es eliminar palabras y reducir acepciones para dejar un lenguaje de utilidad puramente transaccional, que impida que las voces dentro de nuestras cabezas puedan expresar ninguna forma de disensin. Desafortunadamente, no es slo en la distopa Orwelliana donde se busca la eliminacin de vocablos, y es doblemente desafortunado que no sea slo el estado el que se encarga de ese sucio trabajo. Ahora mismo, la palabra libre est siendo objeto de un ataque concertado y premeditado para su descrdito y eliminacin del contexto de la industria del software. Se pretende cambiar por el de abierto, mucho ms manipulable, algo que permite que, de manera similar al trmino neutralidad, pueda ser retorcido para que signifique todo o nada y, a menudo, ambas cosas a la vez. Nunca oirs ninguna de las grandes corporaciones de software (o hardware) hablar de nada que no sea cdigo abierto, ni siquiera a las consideradas como las ms amigables con la tecnologa. Ni Intel, ni IBM, ni Oracle, ni Google se atreven a usar Software Libre en sus notas de prensa o descripciones de productos. Es una medida preventiva: libre es un trmino demasiado poco ambiguo. Abierto, por otro lado, es otro cantar. Hace unas semanas asist a una conferencia de un representante de Microsoft

que pretenda vender la moto de lo abierto de la empresa sin que ninguna de las polticas que mencion contemplara el mostrar ni una lnea de cdigo de sus productos. Unos das despus un profesor de universidad me confesaba que no se atreva a utilizar el trmino Software Libre en una encuesta porque no era polticamente correcto. Si ste es el caso, lo mojigata oera de lo PC debe ser descartada definitivamente de una vez por todas. Asociar la liberacin de cdigo con algo ofensivo es totalmente injustificable y demostrara que a los censores modernos les mueven las mismas motivaciones que a los antiguos: el control y los intereses. Curiosamente, la disputa sobre el uso de la palabra libre no trasciende fuera del mbito TI. Es ms, no trasciende fuera del mbito TI que tenga que ver con el software libre. Es cierto que el trmino cdigo abierto fue acuado en el seno de la comunidad (por razones que ahora parecen triviales si se compara con el dao que puede ocasionar), pero tambin es cierto que ha sido apropiado por agentes que no tienen ningn inters en que el modelo al que originariamente describe (en principio y a efectos prcticos, idntico al del Software Libre) perdure. Tal y como demuestra la campaa de Microsoft Building Bridges citada arriba, considerndose completa la primera fase consistente en denigrar el trmino libre, la segunda, consistente en redefinir abierto, ya est en marcha. Pero, insisto, es dentro de la comunidad y, sobre todo en la industria del Software Libre, donde el debate libre versus abierto ms se disputa. A la mayora de las empresas a las cuales la tecnologa podra servir les da igual un trmino u otro, en la mayora de los casos ni siquiera saben la diferencia entre free software y freeware, y en ese contexto la palabra libre es de todo menos sucia. No puede ser de otra manera. El empresario que alegue que no le importa la libertad, est cayendo en una falacia similar a la del empresario que declara que una empresa slo est para hacer dinero. Si volvemos a

Orwell, uno de los fundamentos de la tirana es la ausencia de libertad, y segn Christopher Hitchens, una definicin de tirana es que es aquel rgimen en el que las leyes o se basan en principios arbitrarios, son en s arbitrarias, se aplican de manera arbitraria, son imposibles de cumplir, o una combinacin de todo lo anterior. Aplicado al tema que nos ocupa, un principio arbitrario es, por ejemplo, que diferentes ciudadanos, por mor de su extraccin social, sexo, raza o credo, tengan diferente trato ante la ley. Imagina por ejemplo que a los gitanos o mujeres, por citar a dos colectivos que han sido tradicionalmente discriminados en Espaa, no se les permitiera regentar un negocio. Una aplicacin arbitrara de la ley es que uno, por ser familiar de un alto funcionario por ejemplo, pueda optar a un licencia de obra que se deniega a los dems. Por tanto, las tiranas, es decir los regmenes donde los ciudadanos no disfrutan de libertad, son intrnsecamente corruptos, y una buena vara para medir el grado de libertad de una sociedad es medir su corrupcin: a ms corrupcin, ms represin. La correlacin entre corrupcin y tirana es fcilmente comprobable empricamente: no tenemos ms que examinar los ndices de percepcin de corrupcin publicadas por Transparency International. Su lista muestra que, mientras que hay alguna democracia que suspende en el ranking, no hay ninguna dictadura que apruebe. Hay cnicos que alegarn que las dictaduras, aunque malas para el individuo, son buenas para los negocios, y probablemente estn pensando en China. Oh, s, China! Puede que la falta de libertades fundamentales funcione a nivel de pas (aunque no siempre: vanse Corea del Norte o Ruwanda), pero permite que dude que este rgimen autocrtico en el que, siguiendo la definicin de Hitchens, las reglas son arbitrarias y la vasta mayora de la poblacin vive en un estado de semi-esclavitud, y siendo uno de los pases con mayor
Contina en pgina 89

Nmero 78

WWW.LINUX- MAGAZINE.ES

EDITORIAL

NO LO DIGAS
Viene de pgina 4
corrupcin del mundo, sea un modelo sostenible para el desarrollo econmico a largo plazo. Desde luego, como siempre ocurre en estos sitios, los negocios funcionan muy bien para quienes participan en la corrupcin del sistema, pero no se puede construir un mercado saludable a base de chanchullos, soborno, estafas, negociaciones a puerta cerrada, nepotismo, apadrinamiento y falsificacin de estadsticas. En esa economa no rige la industria los emprendedores ms competentes, sino los que ms polticos tienen comprados. Y su fuerza es la fuerza bruta, la de la explotacin sistemtica y deshumanizante de sus semejantes. Eso funcionar durante algn tiempo, pero es un sistema inestable abocado al fracaso. Este es el quid de la cuestin: una economa, para ser consistentemente prspera ha de ser estable. No es casualidad que las economas con legislaciones ms justas, ms cimentadas en los derechos fundamentales y en el sentido comn, es decir, ms libres, suelan ser economas ms estables, con una mayor igualdad social y una mayor prosperidad en general. Incluso si bajamos varios niveles de lo macro a lo microeconmico de las empresas individuales, es fcil ver cmo la libertad, incluso la del software, es, por lo general, inmediatamente beneficiosa para el negocio. Stallman alega que renunciar a la libertad en el cdigo conlleva inevitablemente a la renuncia de la libertad en otros mbitos. Es fcil ver que tiene razn: estamos habituados a or cmo muchas de las cajas negras del software propietario violan sistemticamente la privacidad de sus usuarios remitiendo datos confidenciales sobre sus actividades a terceros. El derecho a la privacidad en las comunicaciones, el derecho a mantener los datos de la empresa, ya sean los detalles de los clientes, los planes de marketing o las especificaciones de un nuevo producto, constituyen un derecho que no se puede garantizar con software propietario, pero s con software libre. Y hay ms: El derecho a elegir libremente a tu proveedor, a poseer el software que compras, la libertad de usar las aplicaciones en el entorno de tu negocio (o domstico, que lo mismo da) de la manera que consideres oportuna, son cosas intrnsecas al software libre, pero no al software propietario. Y son libertades, no aperturas. As que la prxima vez que creas que es ms apropiado hablar de abierto en vez de libre porque temes ofender a un empresario, pinsalo muy bien, que es muy fcil quedar como un tonto en esta cuestin. Decir que no hace falta libertad para un negocio, es como decir que no hace falta oxgeno. Si los empleados pueden pasar sin respirar, nada que objetar, pero permite que lo dude. Si no te convence, considera relocalizar tu propia empresa a Corea del Norte y ya me dirs cmo te va.

Paul C. Brown Director

WWW.LINUX-MAGAZINE.ES

Nmero 78

79

NOTICIAS

NOTICIAS
Doom 3 y sus Patentes
John Carmack creador de juegos legendarios como Wolfenstein, Doom y Quake, nunca ha sentido simpata por las patentes de software. Despus de las tribulaciones que le han causado ltimamente, sospechamos que su desprecio no ha hecho ms que aumentar. La historia va como sigue: Todo comenz cuando Carmack pretendi liberar el motor Doom 3, cosa que haba prometido hacer, tal y como viene haciendo con todos los juegos de su empresa, Id. El motor contiene un algoritmo denominado Carmacks Reverse [1], un sistema para el clculo de sombras en escenarios 3D y utilizado extensamente en el juego (y en casi todos los First Person Shooters posteriores). Pero aqu viene el quid de la cuestin: aunque como su nombre indica, el algoritmo fue creado y utilizado por Carmack para sus juegos, fue patentado por Creative. Cuando Creative amenaz a Id con llevarlos a juicio por infraccin, apareci un tercer actor, Sim Dietrich de Nvidia, quien ya haba postulado los principios del sistema de sombreado en una charla de 1999. An as, Id fue obligado a pactar con Creative y tuvo que incorporar tecnologas Creative en Doom 3 para evitar una potencialmente costosa pelea legal. Y as qued la cosa hasta que llega la hora de liberar el cdigo. Despus de varias demoras sin explicar, Carmack revel el 16 de diciembre en su Twitter: Los abogados siguen nerviosos con el tema de las patentes de Carmacks Reverse. Voy a escribir nuevo cdigo para el lanzamiento [de la versin GPL] de Doom3. Un da despus y como respuesta a un seguidor que le preguntaba si no encontraba frustrante tener que reescribir el cdigo, twitte: Esto demuestra la idiotez de la patente las solucin ha consistido en aadir cuatro lneas de cdigo y modificar otras dos. Finalmente, el 23 de noviembre, el cdigo fuente de Doom 3 se public bajo I licencia GPL v3.

RECURSOS
[1] Carmacks reverse: http://en. wikipedia.org/wiki/Shadow_volume [2] John Carmack rescribe las partes afectadas: https://twitter.com/#!/ ID_AA_Carmack/status/ 136614459887202305

Derechos Humanos antes que Derechos de Autor


Segn el Tribunal de Justicia de la Unin Europea, la monitorizacin para detectar infracciones contra los derechos de autor es ilegal. En una nota de prensa emitida por el alto tribunal europeo se deja muy claro que, a pesar de que los derechos derivados del copyright estn muy asentados en la jurisprudencia europea, no se dice en ningn sitio que sean inviolables. Sin embargo, la intimidad de los usuarios, incluso la de aquellos sospechosos de utilizar redes P2P para la diseminacin de obras protegidas, s lo es. La nota viene a raz de Scarlet Extended SA, un proveedor de servi-

cios de Internet, contra SABAM, el equivalente de la SGAE belga. El segundo exiga al primero que instalara una infraestructura de monitorizacin para detectar violaciones cometidas por sus clientes. Scarlet decidi recurrir a los tribunales al entender que esto violara un derecho bsico, el de la confidencialidad de las comunicaciones de sus clientes, y el Tribunal de Justicia de la Unin Europea de Justicia le ha dado la razn. Esta sentencia tiene profundas implicaciones para legislaciones que pretenden cortar o acotar conexiones o tomar medidas legales contra usuarios bajo sospecha de compartir obras protegidas. Estas leyes, que las empresas de

medios estn intentando que se implementen a lo largo y ancho de Europa, se vuelven ineficaces, ya que no se podra contar en ningn caso con mecanismos para ayudar a establecer si de verdad se est produciendo la infraccin. I

RECURSOS
[1] Enlace a la nota de prensa: http:// curia.europa.eu/jcms/upload/docs/ application/pdf/2011-11/cp110126en. pdf [2] Sentencia completa: http://curia. europa.eu/jurisp/cgi-bin/form. pl?lang=EN&Submit=rechercher&nu maff=C-70/10

Nmero 78

WWW.LINUX- MAGAZINE.ES

PORTADA Montando un Cluster

HPC del mundo real paso a paso

DE CERCA
Montamos un cluster HPC real con Kickstart, SSH, Son of Grid Engine y otras herramientas libres. POR GAVIN W. BURRIS
os clusters de computacin de alto rendimiento, High-Performance Computing (HPC) en ingls, se caracterizan por sus procesadores de mltiples ncleos, por sus grandes cantidades de memoria, la red de alta velocidad y enormes almacenes de datos todos ellos compartidos entre mltiples servidores montados en racks. Los programas de usuario que se ejecutan en un cluster son llamados trabajos, y se gestionan normalmente mediante un sistema de colas para un uso ptimo de todos los recursos disponibles. Un cluster HPC est formado por muchos servidores separados, llamados nodos, que posiblemente llenan completamente un centro de datos con docenas de racks que consumen mucha potencia elctrica. Los HPC se usan habitualmente para simular modelos numricos o anlisis de datos procedentes de la instrumentacin cientfica. En el centro del HPC hay hardware fcil de manejar y software de sistema gestionado por los programadores de sistemas, los cuales permiten a los investigadores concentrar sus energas en desarrollar sus programas. Este artculo describe un conjunto de software bsico que puede ser el punto de inicio de nuestro propio cluster HPC A qu se parece un cluster HPC? El cluster tpico para un grupo de investigacin puede contener un rack com-

pleto de servidores 1U (Figura 1). El cluster puede ser tan pequeo como cuatro nodos, o puede llenar un rack completo con equipamiento. (Vase el cuatro titulado Especificaciones Hardware para ms informacin sobre la configuracin hardware usada para este artculo).

Antes de Empezar
Antes de que profundicemos sobre cules son los pasos de configuracin, comenzaremos viendo algunos puntos sobre planificacin y compra. Al ser un programador de sistemas acostumbrado a trabajar slo con cdigo, con frecuencia me sorprendo por la cantidad de problemas de logstica que necesitan considerarse en el mundo real. Antes de que encarguemos nuestro hardware, ser mejor que pensemos acerca de algunas cuestiones bsicas. Por qu necesitamos un cluster? Qu hacen nuestros usuarios? Es un cluster la solucin adecuada? Se han tomado los requisitos del sistema y se ha decidido una especificacin base? Deberemos comenzar por un presupuesto inicial de la marca que seleccionemos. A partir de ah nos moveremos hasta conseguir como mnimo otros dos presupuestos de marcas de la competencia similares. An con estos presupuestos que pueden compararse, deberemos avanzar un poco ms. Solicitaremos si podemos ejecutar algn trabajo tpico que esperamos usar en nuestro cluster sobre el hardware ofertado en algn laboratorio del vendedor para poder hacer mediciones de rendimiento. Cules son los cuellos de botella de la aplicacin? podemos usar el presupuesto inicial para maximizar el rendimiento medido? Antes de lanzar la orden de compra deberemos considerar los problemas de espacio y logsticos. El hardware ser montado, cableado y verificado por el

EL AUTOR
Gavin W. Burris es programador senior de sistemas de la Escuela de Artes y Ciencias de la Universidad de Pennsylvania. En su puesto en el grupo de Seguridad de Sistemas Unix trabaja con clusters HPC, gestin de habitaciones de servidores, ordenadores de escritorio de investigacin, gestin de contenidos web y sistemas de almacenamiento masivo. Mantiene un blog en: http://idolinux.blogspot.com

vendedor? Dentro o fuera de nuestro local? Hemos reservado espacio suficiente en el rack para alojar el equipo? Un cluster genera mucho calor, as que es importante la localizacin de la sala de servidores. Este espacio debe tener una capacidad de enfriamiento adecuada. Estamos intercalando los servidores que ms calor disipan en la sala de servidores? Una vez decidido el lugar, deberemos pedir cita para un presupuesto de un electricista, sin olvidar gestionar todas las peticiones necesarias para el alta de la red, el inventario y las tarjetas/llaves de acceso para los principales administradores del sistema. No importa cunto planifiquemos, al final siempre surgir algn imprevisto. Deberemos asegurarnos de plantear un esquema de copias de seguridad e incluirlo en el presupuesto. Los backups pueden duplicar el coste de almacenamiento, y pueden fundir el resto del presupuesto, si an queda algo. Siempre deberemos asegurarnos de que tenemos la configuracin rack adecuada, el voltaje correcto para los PDUs y los enchufes apropiados, y slo los sistemas necesarios conectados al UPS. Tambin deberemos asegurarnos de antemano de que hemos adquirido todas las licencias del software y los medios de instalacin. Si es posible, solicitaremos al vendedor que lo ensamble y lo integre fuera de la sala. El vendedor debe proporcionar un equipo entrenado, con un seguro de servicio de entrega para entregas al

10

Nmero 78

WWW.LINUX- MAGAZINE.ES

Montando un Cluster PORTADA

interior de la sala donde se ha reservado la zona de instalacin, mediante un camin con gra, y elimina-

cin de los residuos. Un rack ya equipado puede pesar literalmente una tonelada. Si se cae en el camin de entrega, seguramente no querrs ser ni el responsable ni el que est debajo. Y otra cosa, ya sabemos que NO es posible realizar entregas no programadas dentro de la sala de servidores.

La Configuracin
Una vez tengamos todo planificado, hayamos seleccionado al vendedor y realizado la entrega del sistema, es hora de la instalacin del software y su configuracin. Para algo tan complicado como un cluster HPC, todas las configuraciones que vamos a mostrar pueden cambiar, pero la configuracin de ejemplo descrita en este artculo es suficiente para dar una idea del tipo de decisiones a las que nos enfrentaremos si lo intentamos por nuestra cuenta. Para este artculo hemos supuesto que se tienen ciertos conocimiento en la

gestin y configuracin de entornos lar un sistema de colas de trabajo Linux. La mayora de los comandos para hacerlos funcionar conjuntamencionados en l estn documentados mente como un cluster de alto renen su pgina de manual, aunque tamdimiento. bin podemos buscar informacin adiEn este punto, asumiremos que tenecional en la documentacin de Red Hat mos el rack de equipos perfectamente Enterprise Linux [1] o en la de CentOS cableado (Figura 2) y enchufado a la [2]. Concretamente, la Gua de Instalacorriente, y alojado en las instalaciones cin de Red Hat Enterprise Linux adecuadas. Llamaremos al sistema com[3] y la seccin de instalaciones pleto Fiji, un nombre corto y fcil de con Kickstart (para instalaescribir. Antes de ir a la sala de servidociones desatendidas) [4] res, el primer paso es descargar y queson lecturas mar un DVD de instalacin de CentOS importantes. para 64-bits [5], cuya versin actual es Los pasos la 5.6. esenciales para Una vez tengamos el disco, pasarelevantar y hacer que mos a instalarlo en el nodo de adminisfuncione nuestro cluster tracin, que actuar como servidor de HPC son: instalacin desatendida para automati1. Crear el nodo de admizar la instalacin de todos los nodos de nistracin y Especificaciones Hardware configu 42U rack rarlo para 1U KVM 3000VA UPS 208 Volt que acte Dell PowerConnect 6248 gigE switch como servidor 2x Dell PowerEdge R610 para los nodos de cabeza/identificade instalacin cin y almacenamiento / administracin para los nodos 2x Dell PowerVault MD1000 para 12TB de almacenamiento 29x Dell PowerEdge R410 nodos de cmputo de cmputo 29x quad data rate HBAs & 1x switch InfiniBand interconecdel cluster. tado de fbrica de QLogic Esto incluye configurar el sistema para recibir conexiones PXE de cliente, as como la configuracin necesaria para posibilitar las instalaciones automticas desatendidas con Kickstart. 2. Arrancar los nodos de cmputo uno a uno, conectndolo al servidor de administracin y lanzando la instalacin. 3. Cuando tengamos todos los nodos encendidos y en funcionamiento, insta- Figura 1: Un cluster nuevo an sobre el pal.

WWW.LINUX- MAGAZINE.ES

Nmero 78

11

PORTADA Montando un Cluster

Figura 2: El cableado del cluster se puede ir mente, as que sea cuidadoso.

cmputo que forman el resto del cluster. Aunque este artculo est orientado a la instalacin de un cluster con hardware suficiente para cubrir las necesidades de una empresa, no hay razones para que uno no pueda seguir estos pasos sobre ordenadores de escritorio conectados mediante un modesto hub de 10Mb, al menos mientras los servidores sean capaces de arrancar desde una red con PXE [6]. PXE (siglas de Preboot eXecution Environment) nos permite instalar y configurar los nodos de cmputo sin tener que parar y arrancar cada nodo desde un CD. Cuando desplegamos un cluster multi-usuario, donde los usuarios se identifican mediante SSH, VNC o NX, es buena idea tener un nodo cabeza separado para entradas al sistema interactivas. Para un cluster de tamao pequeo o mediano, no es mala idea combinar lo que se conoce como nodo de almacenamiento con el nodo de administracin. En este artculo asumiremos que el cluster consta de un solo rack de equipos completo, pero podemos extender la tcnica descrita aqu para replicar el proceso N veces para un

cluster de mayor tamao. Los nodos de administracin/ almacenamiento y el nodo cabeza/ identificacin tienen mltiples interfaces Ethernet. La primera interfaz (eth0) conecta a la red privada interna (192.168.1.0) mediante un switch de un gigabit, donde sucede toda la comunicacin interna entre los nodos y las interfaces de gestin. La segunda interfaz Ethernet (eth1) conecta la red pblica para usuarios remotos y entrada del admide las manos rpida- nistrador. Es importante tenerlo en cuenta, ya que en este caso, las placas base de gestin de tarjetas controladoras (BMC/RAC), que se controlan con IPMI [7], estn configuradas para compartir el primer puerto Ethernet. Esto significa que veremos dos direcciones MAC diferentes y dos IPs diferentes en el puerto eth0; queremos que ambas estn en la red interna. Comenzaremos enganchando el conmutador teclado-vdeo-ratn (KVM) al nodo de administracin y lo encenderemos. Comprobaremos la configuracin de la BIO, estableceremos una contrasea y eligiremos un orden en las unidades de arranque. Luego configuraremos el BMC, estableciendo un nombre de usuario para el administrador y una contrasea, y configuraremos la direccin IP interna del dispositivo. Todo debera ser redundante en los nodos de administracin/almacenamiento y cabeza/identificacin, incluidas las unidades raz, que almacenarn el sistema operativo. Configuraremos un espejo RAID 1 para la unidad raz interna mediante la BIOS RAID. En este punto necesitaremos configurar los gabinetes de almacenamiento de

datos externos. Nuestro laboratorio tiene unos 10TB, que hemos configurado como RAID 6 mas uno de repuesto de emergencia. Recomendamos que se inicialice completamente el almacenamiento antes de continuar. Despus de la completa inicializacin del RAID, apagaremos el nodo y desenchufaremos el gabinete RAID externo antes de instalar el sistema operativo, ya que el particionador del instalador del sistema puede tener problemas con discos duros muy grandes.

Montar el Nodo de Administracin


El primer paso es instalar el nodo de administracin que har tambin de servidor de almacenamiento y de instalacin desatendida del cluster con Kickstart. Para comenzar con la instalacin del nodo de administracin, insertaremos el DVD de instalacin de CentOS en el sistema que har de nodo de administracin. Arrancaremos el instalador y dejaremos casi todas las opciones por defecto. Los nicos pasos diferentes son: establecer una contrasea para el arranque, la configuracin de los dos interfaces de red y cambiar SELinux a modo permisivo. Para este ejemplo llamaremos al nodo de administracin/ almacenamiento fijistor, con IP interna 192.168.1.2. Para la seleccin de paquetes, no tocaremos los seleccionados por defecto. Ntese que los paquetes cluster en el instalador anaconda de CentOS no se refieren en este contexto a un cluster HPC. Una vez finalizada la instalacin, apagaremos el sistema, engancharemos la unidad de RAID externa, quitaremos la opcin de la BIOS de arrancar desde DVD y lo encenderemos. Ya podemos admirar la nueva ventana de login. Observe que podemos completar la mayora de los siguientes pasos de forma remota usando SSH. La nica vez que necesitaremos estar fsicamente en la sala de servidores es cuando estemos tocando la BIOS y encendiendo los nodos por primera vez (Figura 3). Puesto que SSH en la principal entrada al sistema, necesitaremos bloquear sshd. Instalaremos y probaremos una clave SSH personal para el usuario root, y luego limitaremos a que slo puedan identificarse en el nodo de administracin los usuarios del grupo

14

Nmero 78

WWW.LINUX- MAGAZINE.ES

Montando un Cluster PORTADA

de administracin y usando slo firmas digitales. Para eso slo tenemos que aadir unas cuantas lneas en el fichero de configuracin de sshd /etc/ssh/sshd_ config:
PermitRootLogin without-password AllowGroups fijiadmin

grfica comentando una lnea en el fichero /etc/inittab. Con esto liberaremos algo de memoria:
# Ejecutamos xdm en # el runlevel 5 #x:5:respawn:/etc/X11/prefdm U -nodaemon

cin de los ficheros de log, cambiando la configuracin del fichero /etc/ logrotate.conf:
# mantiene 4 semanas los logs # rotate 4 rotate 999

Luego aadiremos el grupo de administracin y reiniciaremos sshd:


# groupadd fijiadmin # usermod -G fijiadmin root # service sshd restart

Activaremos el reenvo de paquetes de red Ahora realizaremos la primera actualien el nodo de administracin, para que as zacin completa de paquetes del sistodos los nodos de ejecucin puedan accetema instalaremos las herramientas de der a servicios pblicos cuando lo necesidesarrollo y reiniciaremos para Listado 1: /etc/sysconfig/iptables cargar el nuevo 01 *filter kernel: 02 :INPUT ACCEPT [0:0]
# yum -y update # yum -y U install U @development-U tools # reboot
03 :FORWARD ACCEPT [0:0] 04 :OUTPUT ACCEPT [0:0] 05 :RH-Firewall-1-INPUT - [0:0] 06 -A INPUT -j RH-Firewall-1-INPUT 07 -A FORWARD -j RH-Firewall-1-INPUT 08 -A RH-Firewall-1-INPUT -i lo -j ACCEPT 09 -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT 10 -A RH-Firewall-1-INPUT -p 50 -j ACCEPT 11 -A RH-Firewall-1-INPUT -p 51 -j ACCEPT 12 -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT 13 #-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT 14 #-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT 15 -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 16 ### begin ssh 17 #-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT 18 -A RH-Firewall-1-INPUT -p tcp --dport 22 --syn -s 192.168.1.0/255.255.255.0 -j ACCEPT 19 -A RH-Firewall-1-INPUT -p tcp --dport 22 --syn -m limit --limit 6/m --limit-burst 5 -j ACCEPT 20 ### end ssh 21 ### begin cluster 22 -A RH-Firewall-1-INPUT -i eth0 -s 192.168.1.0/255.255.255.0 -j ACCEPT 23 -A RH-Firewall-1-INPUT -i eth0 -d 255.255.255.255 -j ACCEPT 24 -A RH-Firewall-1-INPUT -i eth0 -p udp --dport 67:68 -j ACCEPT 25 -A RH-Firewall-1-INPUT -i eth0 -p tcp --dport 67:68 -j ACCEPT 26 ### end cluster 27 ### begin log 28 -A RH-Firewall-1-INPUT -m limit --limit 10/second -j LOG 29 ### end log 30 -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited 31 COMMIT 32 ### begin nat 33 *nat 34 :PREROUTING ACCEPT [0:0] 35 :POSTROUTING ACCEPT [0:0] 36 :OUTPUT ACCEPT [0:0] 37 -A POSTROUTING -o eth1 -j MASQUERADE 38 #-A PREROUTING -i eth1 -p tcp --dport 2222 -j DNAT --to 192.168.1.200:22 39 COMMIT 40 ### end nat

Generaremos la clave SSH para la cuenta root de fijistor, que distribuiremos a los nodos de cmputo:
# ssh-keygen # pulsar enter, U sin frase de paso # cp /root/.ssh/id_rsa.pub U /root/.ssh/U authorized_keys.fijistor # chmod -R go= /root/.ssh

Si no planeamos acceder al nodo de administracin por medio de la GUI, podemos desactivar la identificacin

Es importante mantener los logs del sistema, por lo que no debemos olvidar ampliar el tiempo de reten-

Figura 3: La buena programacin minimiza el tiempo usado en el KVM.

WWW.LINUX- MAGAZINE.ES

Nmero 78

15

PORTADA Montando un Cluster

gos. En este caso limitaremos la velocidad a la que se pueden reintentar las conexiones SSH, para as atajar los ataques de fuerza bruta a SSH. Todo el trnet.ipv4.ip_forward = 1 fico desde la red interna del cluster est permitido. Los paquetes descartados se El siguiente paso es ajustar las configuraregistrarn para una futura depuracin ciones del cortafuegos con iptables, o una opcin que siempre podremos nada podr pasar a travs del cortafuecomentar y desactivar si la vamos a necesitar ms adelante. Listado 2: Configuracin de las Particiones Finalmente, a todo trfico de salida 01 # cat /proc/partitions procedente de la 02 # dd if=/dev/urandom of=/dev/sdx bs=512 count=64 red interna se le 03 # pvcreate --metadatasize 250k /dev/sdx 04 # pvs -o pe_start realizar NAT. 05 # vgcreate RaidVolGroup00 /dev/sdx Vase el Listado 1 06 # lvcreate --extents 100%VG --name RaidLogVol00 para las configuraRaidVolGroup00 ciones importantes 07 # mkfs -t ext3 -E stride=32 -m 0 -O del fichero /etc/ dir_index,filetype,has_journal,sparse_super sysconfig/iptables. /dev/RaidVolGroup00/RaidLogVol00
08 # echo /dev/RaidVolGroup00/RaidLogVol00 /data0 ext3 noatime 0 0 >>/etc/fstab 09 # mkdir /data0 ; mount /data0 ; df -h

ten. Para activar el reenvo IP en el nodo de administracin debemos aadir lo que sigue en el fichero /etc/sysctl.conf:

Ahora recargaremos los parmetros sysctl del kernel y reiniciaremos el cortafuegos:


# service iptables restart

El siguiente paso del proceso es formatear la unidad de almacenamiento RAID externa de 10TB que est en /dev/sdx naturalmente, sustituyendo la unidad correcta por sdx. Si nuestra configuracin no incluye ninguna unidad de almacenamiento externa adicional, podremos saltarnos este paso. Observe que podemos sobrescribir la informacin de particionamiento previamente existente en el dispositivo y usar luego LVM directamente (Listado 2). Yo suelo establecer el tamao de los metadatos para ajustar un alineamiento

Listado 4: /etc/yum.repos.d/fiji.repo
01 ### Base de CentOS desde los medios de instalacin 02 [base] 03 name=CentOS-$releasever - Base 04 #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os 05 #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ 06 baseurl=file:///repo/CentOS/$releasever/os/$basearch/ 07 gpgcheck=1 08 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KE Y-CentOS-5 09 protect=1 10 ### Actualizaciones CentOS va espejos rsync 11 [update] 12 name=CentOS-$releasever - Updates 13 #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates 14 #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/ 15 baseurl=file:///repo/CentOS/$releasever/updates/$basearch/ 16 gpgcheck=1 17 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KE Y-CentOS-5 18 protect=1 19 ### Paquetes Extra para Enterprise Linux (EPEL) 20 [epel] 21 name=Extra Packages for Enterprise Linux 5 - $basearch 22 #baseurl=http://download.fedora.redhat.com/pub/ep el/5/$basearch 23 #mirrorlist=http://mirrors.fedoraproject.org/mirr orlist?repo=epel-5&arch=$basearch 24 baseurl=file:///repo/epel/$releasever/$basearch 25 enabled=1 26 protect=0 27 failovermethod=priority 28 gpgcheck=1 29 gpgkey=http://download.fedora.redhat.com /pub/ epel/RPM-GPG-KEY-EPEL

Listado 3: Configuracin Sistema de Instalacin


01 # mkdir -p /data0/repo/CentOS/5.6/iso/x86_64 02 # ln -s /data0/repo /repo 03 # cd /repo/CentOS 04 # ln -s 5.6 5 05 # wget http://mirrors.gigenet.com/centos/RPM-GPG-KEY-Cen tOS-5 06 # cd /repo/CentOS/5.6/iso/x86_64 07 # cat /dev/dvd > CentOS-5.6-x86_64-bin-DVD-1of2.iso 08 # wget http://mirror.nic.uoregon.edu/centos/5.6/isos/x86 _64/sha1sum.txt 09 # sha1sum -c sha1sum.txt 10 # mount -o loop CentOS-5.6-x86_64-bin-DVD-1of2.iso /mnt 11 # mkdir -p /repo/CentOS/5.6/os/x86_64 12 # rsync -avP /mnt/CentOS /mnt/repodata /repo/CentOS/5.6/os/ 13 # mkdir -p /repo/CentOS/5.6/updates/x86_64 14 # rsync --exclude=debug --exclude=*debug info* --exclude=repoview \ 15 --exclude=headers -irtCO --delete-excluded --dele te \ 16 rsync://rsync.gtlib.gatech.edu/centos/5.6/updates/x86_64 /repo/CentOS/5.6/updates/ 17 # mkdir -p /repo/epel/5/x86_64 18 # cd /repo/epel 19 # wget http://download.fedora.redhat.com/pub/epel/RPM-GP G-KEY-EPEL 20 # rsync --exclude=debug --exclude=*debuginfo* --exclude=repoview --exclude=headers \ 21 -irtCO --delete-excluded --delete rsync://archive.linux.duke.edu/fedora-epel/5/x86_ 64 /repo/epel/5/ 22 # mv /etc/yum.repos.d/* /usr/src/ 23 # cat /dev/null >/etc/yum.repos.d/CentOS-Base.repo 24 # cat /dev/null >/etc/yum.repos.d/ CentOS-Media. repo

16

Nmero 78

WWW.LINUX- MAGAZINE.ES

Montando un Cluster PORTADA

cano [8] que ofrezca el servicio rsync. Los comandos del Listado 3 tambin traen el repositorio EPEL [9] para tener algunos paquetes adicionales. Creacin de un Fichero de Ahora creamos una configuracin de Repositorio repositorio para yum en el fichero Con el almacenamiento listo, es hora de /etc/yum.repos.d/fijo.repo (Listado 4). construir un fichero de repositorio, el Luego creamos un script para actualizar cual alimentar a todas las actualizacioel repositorio de ficheros (Listado 5). nes por Yum del sistema y a todas las Ya tenemos un repositorio de ficheros instalaciones de los nodos usando el con todos lo paquetes RPMs, que podeprograma Kickstart. Primero crearemos mos compartir va NFS junto con los una estructura de directorio con los directorios /data0 y /usr/global/. En este paquetes de instalacin de base del cluster, los directorios home de los usuaDVD de instalacin de CentOS, y luego rios estarn en /data0/home/. Usaremos traeremos las ltimas actualizaciones /usr/global/ como /usr/local/, excepto desde un espejo de ficheros rsync cerque estar montado en todos los nodos cano (Listado 3). Recomendamos buspor NFS. El script global.sh (Listado 6) car nuestro propio servidor espejo cerestar como enlace simblico en todos los nodos en /etc/profile.d/global Listado 5: /root/bin/update_repo.sh .sh y establecer 01 #!/bin/bash las variables de 02 entorno del usuaOPTS=-vrtCO --delete --delete-excluded --exclude= i386* --exclude=debug \ rio.
03 --exclude=*debuginfo* --exclude=repoview --exclude =headers 04 rsync $OPTS rsync://rsync.gtlib.gatech.edu/centos/5.6/updates/x86_64 /repo/CentOS/5.6/updates/ 05 rsync $OPTS rsync://archive.linux.duke.edu/fedora-epel/5/x86_ 64 /repo/epel/5/

de 129KB. El comando pvs informa que si solicitamos 250KB obtendremos una configuracin de 256KB.

El fichero NFS /etc/exports describe qu directorios van a ser exportados a otros ordenadores (ver Listado 7). Cuando la configuracin est lista, lanzaremos el servidor NFS:
# chkconfig nfs on # service nfs start

Activamos los logs remotos en syslog de los nodos aadiendo la siguiente lnea en el fichero /etc/ sysconfig/ syslog:
SYSLOGD_OPTIONS=-m 0 -r U -s fiji.baz.edu

Y reiniciamos syslog:
# service syslog restart

Todos los nombres de los nodos del cluster junto con sus IPs deben aparecer listados en el fichero /etc/hosts (Listado 8). Tampoco hay que olvidar activar la

Listado 8: /etc/hosts
01 127.0.0.1 localhost.localdomain localhost 02 ::1 localhost6.localdomain6 localhost6 03 192.168.1.1 fiji.baz.edu fiji 04 192.168.1.2 fijiistor.baz.edu fijistor 05 192.168.100.9 ib 06 192.168.1.101 node01 07 192.168.1.102 node02 08 192.168.1.103 node03 09 192.168.1.104 node04 10 192.168.1.200 fiji-bmc 11 192.168.1.201 node01-bmc 12 192.168.1.202 node02-bmc 13 192.168.1.203 node03-bmc 14 192.168.1.204 node04-bmc

Listado 6: /usr/global/etc/profile.d/global.sh
01 # Grid Engine 02 export SGE_ROOT=/usr/global/sge 03 . /usr/global/sge/default/common/settings.sh 04 alias rsh=ssh 05 alias qstat=qstat -u * 06 07 # Compiladores Intel 08 . /usr/global/intel/Compiler/11.1/064/bin/iccvars.sh intel64 09 . /usr/global/intel/Compiler/11.1/064/bin/ifortvars.sh intel64 10 . /usr/global/intel/Compiler/11.1/064/mkl/tools/env ironment/mklvars64.sh 11 export INTEL_LICENSE_FILE=/usr/global/intel/licenses:$IN TEL_LICENSE_FILE

Listado 9: Instalacin de Kickstart


01 # yum install dhcp xinetd tftp tftp-server syslinux 02 # mkdir -p /usr/global/tftpboot ; ln -s /usr/global/tftpboot /tftpboot 03 # mkdir -p /tftpboot/pxelinux.cfg /tftpboot/images/centos/x86_64/5.6 04 # cd /tftpboot/images/centos/x86_64/ ; ln -s 5.6 5 05 # rsync -avP /mnt/isolinux/initrd.img /mnt/isolinux/vmlinuz /tftpboot/images/centos/x86_64/5.6/ 06 # cd /usr/lib/syslinux 07 # rsync -avP chain.c32 mboot.c32 memdisk menu.c32 pxelinux.0 /tftpboot/ 08 # mkdir -p /usr/global/kickstart ; ln -s /usr/global/kickstart /kickstart ; cd /kickstart 09 # mkdir -p /kickstart/fiji/etc ; cd /kickstart/fiji/etc 10 # mkdir -p rc.d/init.d profile.d ssh yum/pluginconf.d yum.repos.d 11 # touch rescue.cfg ks-fiji.cfg ; ln -s ks-fiji.cfg ks.cfg

Listado 7: /etc/exports
01 /data0 fiji(rw,async,no_root_squash) 192.168.1.0 <A7><A7> 02 /255.255.255.0(rw,async,no_root_squash) 03 /usr/global 192.168.1.0/255.255.255.0(rw,async,no_root_squash ) 04 /kickstart 192.168.1.0/255.255.255.0(ro) 05 /repo 192.168.1.0/255.255.255.0(ro)

WWW.LINUX- MAGAZINE.ES

Nmero 78

17

PORTADA Montando un Cluster

sincronizacin de tiempo por red para tener logs consistentes:


# ntpdate -u -b U -s 1.centos.pool.ntp.org # hwclock --utc --systohc # chkconfig ntpd on ; U service ntpd start

# cp /etc/hosts U /kickstart/fiji/etc/ # cp /root/.ssh/id_rsa.pub U /kickstart/fiji/authorized_keys # cp /etc/yum.repos.d/*.repo U /kickstart/fiji/etc/yum.repos.d/

xinetd.d/tftp a no (tal y como se muestra en el Listado 12). Ahora cargaremos los servicios que acabamos de configurar:
# service xinetd restart # chkconfig dhcpd on # service dhcpd restart

Lanzando Kickstart
El siguiente paso es instalar los servicios necesarios para tener un servidor de instalacin desatendida con Kickstart (Listado 9) y construir una estructura de ficheros para poder arrancar usando PXE, TFTP y NFS. Este paso nos permitir que un nuevo nodo de cmputo pueda arrancar usando la red de forma similar a como lo hara mediante un CD o DVD. Primero editaremos el men PXE del fichero /tftpboot/pxelinux.cfg/default (Listado 10). Luego generaremos nuestra propia contrasea que reemplazaremos en el Listado 10. Las contraseas cifradas con SHA-1 comienzan con $4$:
# sha1pass password $4$gS+7mITP$y3s1L4Z+5Udp2vlZHChU NXd8lhAg$

Ahora podemos pasar al siguiente paso del proceso, que es editar el fichero /kickstart/fiji/etc/ntp.conf y cambiar el servidor al nodo de administracin:
#server 0.centos.pool.ntp.org #server 1.centos.pool.ntp.org #server 2.centos.pool.ntp.org server 192.168.1.2

Copiamos todos los ficheros que deseamos tener sincronizados en todos los nodos:

Cuando arranquemos los nodos de cmputo, podremos copiar cada una de las direcciones MAC en el fichero /etc/dhcpd.conf (Listado 11), y luego reiniciaremos el proceso dhcpd. El nodo podr entonces inicializar la red con la IP ya configurada. Arrancar los nodos uno a uno y pasar su direccin al fichero Listado 11: /etc/dhcpd.conf /etc/dhcpd..conf es 01 ddns-update-style interim; tedioso, pero puede 02 ignore client-updates; ser automatizado 03 option option-128 code 128 = string; 04 option option-129 code 129 = text; con tcnicas de ges05 tin ms avanza06 subnet 192.168.1.0 netmask 255.255.255.0 { das. 07 option routers 192.168.1.2; Estableceremos 08 option subnet-mask 255.255.255.0; 09 option nis-domain fiji.baz.edu; la opcin de desac10 option domain-name fiji.baz.edu; tivado de /etc/

Con una estructura de fichero PXE ya colocada, podemos ir al paso principal en la preparacin de los ficheros de configuracin de Kickstart. Los ficheros de configuracin de Kickstart son ficheros de texto plano que almacenan todas las opciones que el instalador puede aceptar, adems de todos los scripts de pre- y post- instalacin que deseemos aadir. El Listado 13 muestra un fichero de configuracin de Kickstart simple, que lo nico que hace es arrancar en el modo de rescate del instalador. Este fichero es bueno tenerlo a mano cuando toque depurar los nodos que inevitablemente fallen.

Listado 10: /tftpboot/pxelinux.cfg/default


01 DEFAULT menu.c32 02 PROMPT 0 03 TIMEOUT 100 04 ONTIMEOUT local 05 NOESCAPE 1 06 ALLOWOPTIONS 0 07 MENU TITLE Fiji Cluster PXE Menu 08 09 LABEL local 10 MENU LABEL Boot local hard drive 11 LOCALBOOT 0 12 13 LABEL centos 14 MENU LABEL CentOS 5 Fiji Node Install 15 KERNEL images/centos/x86_64/5/vmlinuz 16 APPEND ks=nfs:192.168.1.2:/kickstart/ks.cfg initrd=images/centos/x86_64/5/initrd.img ramdisk_size=100000 ksdevice=eth0 ip=dhcp 17 18 LABEL rescue 19 MENU PASSWD $4$XXXXXX 20 MENU LABEL CentOS 5 Rescue 21 KERNEL images/centos/x86_64/5/vmlinuz 22 APPEND initrd=images/centos/x86_64/5/initrd.img ramdisk_size=10000 text rescue ks=nfs:192.168.1.2:/kickstart/rescue.cfg

123.123.123.123; 11 option domain-name-servers 12 option time-offset -18000; # Eastern 13 option ntp-servers 192.168.1.2; 14 default-lease-time 21600; 15 max-lease-time 43200; 16 17 allow booting; 18 allow bootp; 19 next-server 192.168.1.2; 20 filename /pxelinux.0; 21 22 host node01 { 23 hardware ethernet 00:11:22:33:44:a0; 24 fixed-address 192.168.1.101; 25 } 26 27 host node01-bmc { 28 hardware ethernet 00:11:22:33:44:8d; 29 fixed-address 192.168.1.201; 30 } 31 32 host node02 { 33 hardware ethernet 00:11:22:33:44:83; 34 fixed-address 192.168.1.102; 35 } 36 37 host node02-bmc { 38 hardware ethernet 00:11:22:33:44:61; 39 fixed-address 192.168.1.202; 40 }

18

Nmero 78

WWW.LINUX- MAGAZINE.ES

PORTADA Montando un Cluster

El fichero completo de Kickstart para el arranque de un nodo de cmputo, /kickstart/ks.cfg, puede ser descargado desde la web de Linux Magazine[10]. Recomiendo editar este fichero de configuracin Kickstart para principiantes y comprobarlo continuamente instalando el primer nodo de cmputo. Podemos editarlo una y otra vez, haciendo pequeos ajustes en cada paso, y luego reinstalar completamente el primer nodo hasta que quede una instalacin perfecta. Una vez tengamos el primer nodo correctamente, procederemos a encender el resto de los nodos del cluster. No hay que olvidar generar y reemplazar el lugar reservado para la contrasea con la nuestra propia. Las contraseas cifradas en formato MD5 comienzan por $1$:
$ grub-md5-crypt Password: Retype password: $1$d6oPa/$iUemCR50qSyvGSVTX9NrX1

todos los nodos de computacin que ejecutarn los trabajos enviados al cluster.

4.

Instalacin de los Nodos de Cmputo

Con el nodo de administracin instalado y el fichero de configuracin de Kickstart establecido y listo para la accin, el siguiente paso es instalar y configurar

Una vez tengamos toda la infraestructura en su lugar, estaremos listos para empezar a instalar los nodos de computacin. Los pasos exactos pueden variar dependiendo de la configuracin que tengamos, pero la clave est en ser metdicos y en minimizar el tiempo dedicado a cada nodo. Ntese que el nodo cabeza/identificacin, que tiene como nombre host fiji, puede instalarse de forma manual o automtica de la misma manera que los nodos de cmputo, con el caso adicional de configurar eth1 como interfaz hacia la red pblica. Un ejemplo del procedimiento de instalacin de un nodo de cmputo podra incluir los siguiente pasos: 1. Enchufamos el KVM y pulsamos el botn de encendido. # yum -y install OpenIPMI-tools 2. F12 para arranque por PXE. # ipmitool -H 192.168.1.2XX U 3. Ctrl + S para conseguir la direccin Ethernet MAC del sisListado 15: /root/bin/update_etc.sh tema. 01 rsync -a fiji:/etc/passwd /root/etc/

Ctrl + E para conseguir la direccin Ethernet MAC del BMC. 5. Establecemos los parmetros LAN: Fuente de Direcciones IP IPv4: DHCP. 6. Establecemos la configuracin de usuario LAN: pulsamos enter y confirmamos la password. 7. Pulsamos Esc; almacenamos los cambios y salimos. 8. Aadimos la direccin MAC al fichero /etc/dhcpd.conf de fijistor, y luego escribimos service dhcpd restart. 9. Pulsar enter en el men de instalacin PXE del nodo de cmputo para el cluster Fiji. 10. Esperar la comprobacin de dependencias de paquetes. 11. Pasar al siguiente nodo. Quizs deseemos usar una herramienta de gestin como IPMI para controlar el DRAC/BMC, y poder encender y apagar remotamente los nodos bloqueados:

Listado 12: /etc/xinetd.d/tftp


01 service tftp 02 { 03 socket_type 04 protocol 05 wait 06 user 07 server 08 server_args 09 disable 10 per_source 11 cps 12 flags 13 } = dgram = udp = yes = root = /usr/sbin/in.tftpd = -s -v /tftpboot = no = 11 = 100 2 = IPv4

02 rsync -a fiji:/etc/shadow /root/etc/ 03 rsync -a fiji:/etc/group /root/etc/ 04 rsync -a /root/etc/passwd /root/etc/shadow /root/etc/group /etc/ 05 rsync -a /root/etc/passwd /root/etc/shadow /root/etc/group /kickstart/fiji/etc/ 06 for NODE in `cat /etc/machines.list | grep -v ^#`; do 07 rsync -a /kickstart/fiji/etc $NODE:/ 08 done

Listado 16: Instalacin de Son of Grid Engine


01 # mkdir /usr/global/sge-6.2u5_PLUS_3-26-11 02 # ln -s /usr/global/sge-6.2u5_PLUS_3-26-11 /usr/global/sge 03 # export SGE_ROOT=/usr/global/sge 04 # cd /usr/global/sge 05 # adduser -u 186 sgeadmin 06 # mkdir src ; cd src 07 # wget http://bioteam.net/dag/gridengine-courtesy-binaries/sge-6.2u5_PLUS_3-26-11-common.tar.g z 08 # wget http://bioteam.net/dag/gridengine-courtesy-binaries/sge-6.2u5_PLUS_3-26-11-bin-lx26-amd 64.tar.gz 09 # cd /usr/global/sge 10 # tar xzvf src/sge-6.2u5_PLUS_3-26-11-common.tar.gz 11 # tar xzvf src/sge-6.2u5_PLUS_3-26-11-bin-lx26-amd64.tar.gz 12 # chown -R sgeadmin.sgeadmin .

Listado 13: /kickstart/rescue.cfg


01 lang en_US 02 keyboard us 03 mouse none 04 nfs --server=192.168.1.2 --dir=/repo/CentOS/5/iso/x86_64 05 network --bootproto=dhcp

Listado 14: /root/bin/ssh_loop.sh


01 #!/bin/sh 02 for I in `grep -v \# /etc/machines.list`; do 03 echo -n $I ; ssh $I $@ 04 done

20

Nmero 78

WWW.LINUX- MAGAZINE.ES

Montando un Cluster PORTADA

-U root -P PASSWORD U -I lanplus chassis status # ipmitool -H 192.168.1.2XX U -U root -P PASSWORD U -I lanplus chassis power cycle

Configuracin del Grid


El ltimo paso es activar la cola de trabajos para gestionar la carga de trabajo. Usaremos los binarios, cortesa de BioTeam, de Son of Grid Engine [13]. Son of Grid Engine es un proyecto basado en la comunidad que parte del proyecto Sun Grid Engine. Cuando Oracle compr Sun y eliminaron la versin libre de su Grid Engine, los desarrolladores de Son of Grid Engine decidieron mantener una versin libre. Para ms informacin sobre cmo trabajar con Son of Grid Engine, ir a los documentos y manuales de la pgina del proyecto [15]. Recuerde que los directorios de inicio de los usuarios y /usr/global/ estn exportados a todo el cluster mediante NFS. De esta forma los usuarios tendrn las claves SSH que permiten hacer SSH y enviar comandos remotos y sin contrasea desde el nodo de cabeza a todos los nodos de computacin. Para empezar con Son of Grid Engine seguiremos los pasos del Listado 16. Podemos instalar de forma interactiva el

En un cluster de servidores Linux, muchas veces es deseable ejecutar los mismos comandos en todos los nodos de cmputo. Podemos ejecutar estos comando ms comunes usando un sencillo bucle for en un script, o podemos usar un shell especfico para cluster como el Shell de Dancer [11] o ClusterSSH [12]. Para ejecutar los comandos crearemos un fichero llamado /etc/machines.list, que constar de la lista de todos los nodos, uno por lnea, luego usaremos el script /root/bin/ssh_ loop.sh (Listado 14). Deberemos mantener sincronizada la autenticacin del usuario entre todos los nodos. Aunque hay mejores maneras de hacerlo, en pos de la brevedad, haremos una simple sincronizacin de los ficheros de autorizacin desde el nodo cabeza/ identificacin al resto de los nodos usando el script /root/bin/update_ etc.sh (Listado 15).

equipo maestro en el nodo de administracin usando la configuracin por defecto, excepto lo siguiente: instalar como usuario sgeadmin, establecer los puertos de red con el entorno, el puerto 6444 para sge_qmaster, puerto 6445 para sge_execd, nombre de clula por defecto, nombre de cluster p6444, decir que no a pkgadd y que s a la verificacin de permisos, decir que no al servidor JMX Mbean, seleccionar el mtodo de encolado clsico, GID en el rango 20000-20100, introducir cada nombre de los equipos y establecer no shadow host.
# cd /usr/global/sge/ # ./install_qmaster

Luego estableceremos las variables de entorno del usuario:


. /usr/global/sge/default/U common/settings.sh

Los logs de SGE se pueden encontrar en: /usr/global/sge/default/spool/qmaster/messages, /tmp/qmaster_messages (durante el inicio de qmaster), /usr/glo-

PORTADA Montando un Cluster

bal/sge/default/spool/HOSTNAME/messages y /tmp/execd_messages (durante el inicio de execd). Necesitaremos instalar SGE en todos los nodos de cmputo. Este paso se hace fcilmente con la configuracin automated install. El Listado 17 muestra un ejemplo del fichero SGE cluster.conf, pero sin comentarios. Para iniciar la instalacin automtica:
# cd /usr/global/sge/ # cp util/install_modules/U inst_template.conf cluster.conf # vim cluster.conf # ./inst_sge -x -auto U /usr/global/sge/cluster.conf U automated install log U sge_root/spool/U install_HOSTNAME_TIMESTAMP.log

# su - testuser $ qsub /usr/global/sge/examplesU /jobs/simple.sh $ qstat

Conclusin
Ahora ya disponemos de un cluster de super computacin funcional con gestin de trabajos y de recursos. Qu es lo siguiente? Deberamos instalar Blender

[16] y empezar a renderizar pelculas con todas las opciones activadas? Instalar MPI y explorar la computacin en paralelo [17]? Quizs ejecutar las pruebas de rendimiento de Linpack y competir en el Top 500 [18]? Bueno, esto depende de nuestra rama de trabajo, pero supongo que el grupo de investigadores tiene ya suficiente trabajo para mantener al sistema ocupado. I

RECURSOS
[1] Documentacin de Red Hat Enterprise Linux: http://docs.redhat.com/docs/en-US/ Red_Hat_Enterprise_Linux/index.html [2] Documentacin de CentOS-5: http://www.centos.org/docs/5/ [3] Gua de instalacin de RHEL: http://docs.redhat.com/docs/en-US/ Red_Hat_Enterprise_Linux/5/html/Installation_Guide/index.html [4] Instalaciones Kickstart: http://docs.redhat.com/docs/en-US/ Red_Hat_Enterprise_Linux/5/html/Installation_Guide/ch-kickstart2.html [5] Espejos para la ISO de CentOS: http://isoredirect.centos.org/centos/5/isos/x86_64/ [6] PXE: http://en.wikipedia.org/wiki/Preboot_Execution_Environment [7] IPMI: http://en.wikipedia.org/wiki/Intelligent_Platform_Management_Interface [8] Espejos CentOS para la zona de Norteamrica: http://www.centos.org/modules/ tinycontent/index.php?id=30 [9] Espejos pblicos activos de Fedora EPEL: http://mirrors.fedoraproject.org/publiclist/ EPEL/ [10] Cdigo para este artculo: http://www.linux-magazine.es/Magazine/Downloads/78/ HPC [11] Dancers Shell: http://www.netfort.gr.jp/~dancer/software/dsh.html.en [12] ClusterSSH: http://clusterssh.sourceforge.net/ [13] Son of Grid Engine: https://arc.liv.ac.uk/trac/SGE [14] Binarios de BioTeam Grid Engine: http://bioteam.net/dag/ gridengine-courtesy-binaries/ [15] Grid Engine HowTo: http://arc.liv.ac.uk/SGE/howto/howto.html [16] Blender: http://www.blender.org/ [17] Introduccin a la computacin paralela: https://computing.llnl.gov/tutorials/ parallel_comp/ [18] Prueba de rendimiento Linpack: http://www.top500.org/project/linpack

Tras la ejecucin con xito del instalador, verificaremos que Son of Grid Engine est funcionando y comprobaremos la configuracin con:
$ ps ax | grep sge $ qconf -sconf

Un buen primer paso es enviar un trabajo sencillo de pruebas al cluster como un usuario normal:
# adduser testuser # update_etc.sh

Listado 17: Ejemplo de SGE cluster.conf


01 SGE_ROOT=/usr/global/sge 02 SGE_QMASTER_PORT=6444 03 SGE_EXECD_PORT=6445 04 SGE_ENABLE_SMF=false 05 SGE_ENABLE_ST=true 06 SGE_CLUSTER_NAME=p6444 07 SGE_JMX_PORT=6666 08 SGE_JMX_SSL=false 09 SGE_JMX_SSL_CLIENT=false 10 SGE_JMX_SSL_KEYSTORE=/tmp 11 SGE_JMX_SSL_KEYSTORE_PW=/tmp 12 SGE_JVM_LIB_PATH=/tmp 13 SGE_ADDITIONAL_JVM_ARGS=-Xmx256m 14 CELL_NAME=default 15 ADMIN_USER=sgeadmin 16 QMASTER_SPOOL_DIR= /usr/global/sge/default/spool/qmaster 17 EXECD_SPOOL_DIR=/usr/global/sge/default/spool 18 GID_RANGE=20000-20100 19 SPOOLING_METHOD=classic 20 DB_SPOOLING_SERVER= 21 DB_SPOOLING_DIR=spooldb 22 PAR_EXECD_INST_COUNT=20 23 ADMIN_HOST_LIST=fijistor 24 SUBMIT_HOST_LIST=fiji 25 EXEC_HOST_LIST=node01 node02 node03 node04 26 EXECD_SPOOL_DIR_LOCAL= 27 HOSTNAME_RESOLVING=true 28 SHELL_NAME=ssh 29 COPY_COMMAND=scp 30 DEFAULT_DOMAIN=none 31 ADMIN_MAIL=none 32 ADD_TO_RC=true 33 SET_FILE_PERMS=true 34 RESCHEDULE_JOBS=wait 35 SCHEDD_CONF=1 36 SHADOW_HOST= 37 EXEC_HOST_LIST_RM= 38 REMOVE_RC=true 39 WINDOWS_SUPPORT=false 40 WIN_ADMIN_NAME=Administrator 41 WIN_DOMAIN_ACCESS=false 42 CSP_RECREATE=true 43 CSP_COPY_CERTS=false 44 CSP_COUNTRY_CODE=DE 45 CSP_STATE=Germany 46 CSP_LOCATION=Building 47 CSP_ORGA=Organisation 48 CSP_ORGA_UNIT=Organisation_unit 49 CSP_MAIL_ADDRESS=name@yourdomain.com

22

Nmero 78

WWW.LINUX- MAGAZINE.ES

PRCTICO Cygwin

Ejecucin de aplicaciones Linux en Windows con Cygwin

ENTRE DOS MUNDOS


Si ha estado trabajando con Linux durante algn tiempo, seguro que se habr acostumbrado a las opciones que ofrece. Aunque los usuarios de Windows tambin pueden beneficiarse de diversas funciones de Linux gracias a Cygwin. POR FLORIAN EFFENBERGER
ygwin es una capa de compatibilidad que proporciona un entorno operativo tipo Unix en los sistemas Windows. El entorno Cygwin tiene el aspecto de Linux, pero bajo su superficie, los comandos son ejecutados en Windows. Al contrario que otras herramientas alternativas que proporcionan entornos virtuales para sistemas Linux huspedes completos, Cygwin no es realmente Linux, sino que es una API y una DLL (Dynamic Link Library) que se ejecuta en Windows y ofrece el soporte para la ejecucin de aplicaciones Linux.
Florian Effenberger lleva muchos aos de evangelista del software libre. Es fundador y miembro del comit Document Foundation, anteriormente estuvo trabajando en el proyecto OpenOffice.org durante siete aos, donde su ltimo puesto fue de Marketing Project Lead. Tambin escribe de forma regular para diversas publicaciones tanto en lengua alemana como inglesa.

Podra decirse que Cygwin es lo conherramientas prcticas y programas de trario a Wine, la famosa API que permite aplicacin. que las aplicaciones Windows se puedan Instalacin de Cygwin ejecutar en Linux. Cygwin permite a las aplicaciones Linux ejecutarse en WinCygwin se instala fcilmente. Tras descardows. Sin embargo, al contrario que gar el fichero de instalacin desde el sitio Wine, Cygwin no soporta la ejecucin web oficial [1] y hacer doble clic en directa de los ficheros binarios de Linux. setup.exe, hay que responder afirmativaCualquier aplicacin que se vaya a ejecumente al aviso que se muestra. Tras este tar en Cygwin debe compilarse para el paso aparece un asistente que guiar al entorno Cygwin. usuario por todo el proceso de instalacin. Cygwin permite la migracin a un entorno de aplicaciones Linux incluso si, por alguna razn, se necesita tener Windows para otros sistemas. Adems de la DLL y los componentes de compatibilidad, Cygwin tambin proporciona una coleccin de utilidades Linux y un entorno de comandos de la terminal. Cygwin simplifica la tarea de portar los programas al sistema operativo de Microsoft, y los usuarios finales de Windows pueden beneficiarse de los numerosos programas del mundo Figura 1: Un cuadro de dilogo tpico de Windows Linux, entre los que se incluyen avisa de los posibles peligros

24

EL AUTOR

Nmero 78

WWW.LINUX- MAGAZINE.ES

Cygwin PRCTICO

Cygwin ofrece su software en forma de paquetes en un estilo similar al de Linux, por lo que deberemos descargarlos de Internet antes de que comience el proceso de instalacin. Para instalarlo en una mquina con conexin a Internet hay que seleccionar la opcin Install from Internet (Figura 1); en este paso se almacenan temporalmente los paquetes de forma local. Si slo se desea descargar los paquetes para instalarlos en otra mquina, habr que seleccionar Download Without Installing. Luego, en el ordenador en el que se deseen instalar los paquetes sin conexin a Internet deber seleccionarse Install from Local Directory. En algunos casos, la identificacin del directorio raz, como Windows se refiere a l frecuentemente, puede ser un problema. En mi sistema de pruebas, ejecutando una versin de 64 bits de Windows 7 Ultimate, ya tena instalado el cliente x2go, el cual proporciona su propio entorno. El asistente de instalacin originariamente quera actualizar esta copia; tuve que cambiar manualmente la ruta a C:\Program Files (x86)\Cygwin. El programa de instalacin se quej posteriormente por los espacios en blanco, que ignor completamente; despus de todo, esta es la configuracin por defecto. Si el sistema va a ser utilizado por ms de una persona, es posible elegir entre hacer que Cygwin se encuentre disponible para todos los usuarios del sistema All users (opcin recomendada) o slo para el usuario actual. El siguiente paso consiste en especificar el directorio en el que temporalmente se almacenarn los paquetes descargados, para el caso en el que se quiera instalar en otra mquina. Luego se puede especificar un servidor proxy; la mayora de los usuarios querrn seleccionar Direct Connection aqu; pero si tiene duda, puede probar la opcin Use Internet Explorer Proxy Settings. Antes de seleccionar los paquetes que se van a utilizar hay que seleccionar un servidor mirror, que ser el que proporcionar los ficheros necesarios. La experiencia nos dice que la seleccin de un mirror en nuestro propio pas acelerar el proceso de descarga. Tras finalizar estos pasos, que parecen ms complicados de lo que realmente son, se pueden seleccionar los paquetes

(Figura 2). Los que estn disponibles se har falta para instalar posteriormente encuentran organizados en varios grualgunos paquetes. pos; Cygwin tambin elige la Comenzamos configuracin que proporcione al usuaCygwin se instala dentro del sistema de rio un sistema bsico slido. forma modesta. Slo una entrada en el Para instalar programas adicionales men Inicio y un pequeo icono en el hay que usar el cuadro desplegable que escritorio revelan su presencia. Haciendo se encuentra junto al nombre del clic en el icono aparecer la consola paquete dentro del grupo expandido. En (Figura 3), e inmediatamente podr la lista desplegable existen varias opcioverse el intrprete de comandos Bash, nes: Skip sirve para omitir el paquete que contiene por defecto diversos es decir, el paquete no se instalar. comandos tpicos de Linux. Siempre que Para instalar un paquete slo hay que sea posible, Cygwin emular los comanhacer clic en l; en este caso se podr ver dos y las funciones del mundo Linux en el nmero de la versin en vez de Skip. Windows: El comando uname devuelve Si hay varias, por ejemplo las versiones la informacin del sistema Windows; el 1.4 y 1.5 de Mutt, se puede hacer clic directorio home se encuentra fsicamente para cambiar entre ellas hasta llegar de en C:\Program Files nuevo a Skip. Para instalar el cdigo (x86)\Cygwin\home\username (desaforfuente adems de la versin binaria del tunadamente, no se encuentra dentro del paquete hay que pulsar Src. directorio de usuario de Windows). AunAdems de instalar paquetes indivique el directorio /proc se encuentra disduales pueden instalarse grupos compleponible, tecleando cat /proc/loadavg slo tos. Normalmente se podr ver la etimostrar una carga de 0.00 todo el queta Default junto al nombre del grupo. tiempo. Tambin pueden encontrarse Esto se refiere a la seleccin de paquetes otros directorios tpicos del mundo por defecto, es decir, los paquetes que se Linux; por ejemplo, var, lib, etc y dev. instalarn por defecto en una instalacin El kernel no podr encontrarse en bsica. Si se hace clic en la etiqueta y se boot, lo que es comprensible; despus de cambia al modo Install, se instalarn todo, Cygwin no es una herramienta de todos los paquetes del grupo. Si ya se virtualizacin. Dicho de otro modo, no han seleccionado o instalado algunos se va a trabajar con un kernel de Linux, paquetes, podrn verse las opciones sino con programas compilados de Reinstall (reinstala todos los paquetes forma nativa para Windows. Cygwin utiexistentes) y Uninstall (desinstala los liza una capa de compatibilidad para paquetes instalados). emular interfaces como el directorio Por ahora basta con mantener los valo/proc. Esta solucin es probablemente res por defecto y hacer clic en Next para ms similar al proyecto MacPorts, que comenzar la descarga; este proceso hace que diversas aplicaciones Linux se puede llevar un rato dependiendo de la encuentren disponible para OS X. conexin a Internet disponible, aunque El comando mount indica las unidades slo tard tres minutos en nuestra montadas: /usr/bin y /usr/lib vienen de mquina de pruebas. Finalmente hay que seleccionar dnde se quieren los enlaces a Cygwin y listo. O casi en mi caso, apareci un asistente de Windows preguntando si el software se instal correctamente. Se puede confirmar haciendo clic en The program installed correctly. Pero no hay que borrar todava setup.exe; Figura 2: Una gran seleccin de software disponible.

WWW.LINUX- MAGAZINE.ES

Nmero 78

25

PRCTICO Cygwin

Figura 3: A pesar de los avisos, todo se ha instalado correctamente.

Figura 4: El aspecto de bash en Windows cortesa de Cygwin.

los subdirectorios correspondientes en el directorio raz de Cygwin, que se encuentra montado. El disco C: lo est en /cygdrive/c y tiene permisos de escritura. Hay que tener en cuenta que cualquier unidad que se conecte, como las unidades USB, se montarn de forma automtica por Cygwin en tiempo real, lo que es una caracterstica interesante. Los recursos compartidos de red por medio de Samba/CIFS tambin estn soportados y pueden encontrarse en //servername/share. Un simple mount //fileserver/pool /home/max/share, por ejemplo, montar los ficheros en el servidor de ficheros en el directorio home.

SSH en Windows
Proporcionar un intrprete de comandos Bash no es, obviamente, la principal tarea de Cygwin, aunque trabajar con l es muy til Cygwin posee muchas ms funciones. Adems de proporcionar a los desarrolladores una forma fcil y rpida de portar sus aplicaciones, los usuarios pueden disponer de multitud de aplicaciones Linux para poder utilizarlas en Windows (por ejemplo, SSH). Aunque Windows posee su propia solucin para la administracin remota por medio de los servicios de terminal, se necesita un cliente RDP para ello. Adems, slo puede conectarse a la GUI, por lo tanto, hace falta el ancho de banda correspondiente. Por otro lado, Cygwin proporciona a los usuarios el uso de SSH. Para esto es necesario salir de Cygwin tecleando exit en el intrprete de comandos y luego ejecutar el programa de instalacin anterior. En la seleccin de paquetes, hay que buscar ssh y luego instalar el paquete SSH. Esto presentar otra funcin de Cygwin con la que,

seguro que el lector ya estar familiaride que ocurriera, har falta modificar la zado gracias a los gestores de paquetes instalacin de SSH. Finalmente hay que de Linux la resolucin automtica de modificar los permisos de varios ficheros dependencias (Figura 4). Para instalar tecleando ssh-user-config -n. SSH hacen falta otras herramientas y Tngase en cuenta que nunca debera libreras, que Cygwin instalar automtiejecutar Windows como un servidor SSH camente. sin un cortafuegos adicional. Un router Desafortunadamente, el servidor SSH estndar o un sistema de filtrado de viene sin la configuracin, al contrario paquetes basado en iptables en la puerta que en la mayora de las distribuciones de enlace Linux ser suficiente. de Linux. En la web [2] se encuentran El servidor SSH estar disponible tras disponibles varios how-to para facilitar reiniciar el sistema. Por otro lado, se la instalacin. Hay que ejecutar Cygwin puede teclear en la lnea de comandos con una cuenta de administracin de net start sshd, pero no en Cygwin, sino Windows de lo contrario no podr insen la lnea de comandos de Windows. talarse el servicio y teclear ssh-host-config -y. El script muestra un nmero de lneas y mensajes y luego pide al usuario que defina la contrasea del usuario Windows llamado cyg_server, que habr que crear. Debe elegirse una contrasea segura y asegurarse de que no se olvide en el caso Figura 5: Los paquetes normalmente vienen en grupos.

Figura 6: Moving entre los mundos: de un Mac a Windows, y luego a bash.

26

Nmero 78

WWW.LINUX- MAGAZINE.ES

Cygwin PRCTICO

Luego hay que modificar el cortafuegos de Windows para permitir las conexiones al puerto 22. La configuracin se encuentra disponible en Inicio | Panel de Control | Cortafuegos de Windows | Configuracin Avanzada | Reglas de Entrada | Nuevas Reglas Es imprescindible permitir las conexiones en el puerto 22 por medio de TCP en todos los perfiles e introducir el nombre Cygwin SSHD Server. Por supuesto, esta solucin es un parche, pero la recompensa consiste en una conexin SSH directa al ordenador Windows (Figura 5)!

sitio. Adems, x2go es una solucin ideal para un servidor de un centro de datos (Figura 8). Aunque las mayoras de las soluciones de virtualizacin proporcionan un sencillo soporte basado en la lnea de comandos, si se tiene un problema con la VM (por ejemplo, un puente de red que no funcione), no estar mal echarle un vistazo a su monitor. Con x2go se puede hacer en un par de segundos y lo que hace que x2go se pueda ejecutar en Windows viene de la mano de Cygwin.

cin, comandos y herramientas del mundo Linux. Como desarrollador, se pueden portar rpida y fcilmente aplicaciones. El entorno X11 ofrece diversas opciones excitantes, con x2go se puede ver la punta del iceberg de lo que representan las sesiones remotas. Hay que recordar que Cygwin no ha sido diseado para emular un sistema grfico Linux completo; posee restricciones el original es an mejor. I

RECURSOS
[1] Cygwin: http://www.cygwin.com [2] HOW-TO de Cygwin SSHD: http:// www.noah.org/ssh/cygwin-sshd. html [3] Cygwin/X: http://x.cygwin.com [4] x2go: http://www.x2go.org

Conclusiones
La potencia de Cygwin salta a la vista una vez que se mira con detalle. La capa de compatibilidad con Linux permite el uso en Windows de programas de aplica-

Uso de Programas de Aplicacin


Cygwin no est diseado para ejecutar servicios; los usuarios con programas tpicos de Linux pueden tambin beneficiarse. Por ejemplo, Cygwin incluye el programa de correo Mutt, el editor vi y el administrador de archivos mc (Midnight Commander) (Figura 6). Hay que reconocer que existen versiones Windows de muchas de estas herramientas, pero su ejecucin en un entorno completo tiene sus beneficios. Los scripts de copias de seguridad son aplicaciones tiles. Muchos usuarios han escrito sus propios programas Bash que se basan en rsync para copiar los ficheros que se desean respaldar en un sistema remoto. Aunque rsync se encuentra disponible para Windows, las sofisticadas funciones de Bash son difciles de programar en Windows, por ello, es conveniente tener un entorno similar a Linux.

Figura 7: El aspecto de Midnight Commander en Windows.

La X Marca la Diferencia
Pero esto no es todo. Cygwin tambin incluye Cygwin/X [3], una implementacin del sistema X11 que permite ejecutar aplicaciones grficas directamente en Windows (Figura 7). Hay que admitir que la ejecucin de programas X clsicos de los primeros das de la informtica ya no es excitante. Lo que hace interesante el servidor X, sin embargo, es su protocolo diseado para redirigir la salida de un dispositivo a otro. Gracias a las tecnologas actuales, este es un proceso rpido que es ligero de recursos, incluso con conexiones con poco ancho de banda. Un ejemplo de ello es x2go [4], que permite acceder a un PC Linux de casa desde cualquier

Figura 8: Simples programas grficos ejecutndose en Windows gracias a Cygwin/X.

WWW.LINUX- MAGAZINE.ES

Nmero 78

27

PRCTICO Koha

Administracin fcil de bibliotecas con Koha

El Guard n de los Libros


La Tecnologa de la Informacin juega un papel clave en entornos de la biblioteca moderna. Este mes echamos un vistazo a Koha, un sistema integrado de software libre que puede ayudar a administrar sus operaciones diarias en una biblioteca. POR EVELTHON PRODROMOU
bimos Koha y, ms especficamente, la configuracin de Koha 3.02 en un servidor openSUSE de 64 bits [2].

David Maska, 123RF

Configuracin Inicial
Instalar Koha en un servidor es muy fcil. Lo primero que deberamos hacer es instalar los paquetes bsicos necesarios: el servidor web Apache [3], algunos mdulos de Perl y la base de datos MySQL [4]. Comenzamos por abrir una consola y teclear:
yast -i apache2U apache2-mod-perl mysql-community-server make gcc

os catlogos de biblioteca se basaron originalmente en un sistema de tarjetas que era tedioso y lento para actualizar manualmente. Afortunadamente, esto se hace hoy da a travs de modernos sistemas electrnicos que permiten una administracin central de los catlogos en las bibliotecas de manera fcil. Recientemente he tenido el placer de instalar un sistema de este tipo, Koha. Koha [1] es un sistema para bibliotecas en software libre que fue desarrollado inicialmente por Katipo Communications Ltd. en Nueva Zelanda. El sistema Koha incluye mdulos para gestionar la circulacin, catalogacin, adquisicin, publicacin seriada, reservas, gestin de clientes (usuarios) y mucho ms. Koha utiliza la bien conocida base de datos MySQL y es fcilmente accesible tanto para los clientes como para el personal a travs de una intuitiva interfaz web. La configuracin es un sistema piloto para las escuelas secundarias de Chipre. En este esfuerzo se encuentran participando tres liceos, mientras que la Biblio-

teca de la Universidad de Chipre est ayudando en la creacin, puesta a punto y alojamiento del proyecto. Para el banco de pruebas inicial, import el catlogo de la biblioteca de otro sistema a Koha. El siguiente paso sera importar el Catlogo de la Unin de Chipre a Koha (previsto para un futuro prximo. El catlogo colectivo incluye los datos bibliogrficos de 38 bibliotecas diferentes de toda la isla, con ms de medio milln de registros, lo que dar un gran impulso al proyecto. Por ejemplo, una biblioteca de una escuela ya no tendr que catalogar sus libros, porque la mayora de ellos ya estarn all a travs del catlogo colectivo. Adems, la solucin beneficiar a todos los que participan en este catlogo colectivo de las escuelas. Una instalacin sirve una cantidad arbitraria de las bibliotecas a travs de acceso basado en web sin necesidad de tener ningn cliente instalado localmente. Este sistema requiere menos horas de soporte y ser ms fcil de mantener y actualizar. En este artculo descri-

Despus de instalar estos paquetes, es necesario ajustar la configuracin regional

Listado 1: Locale del Sistema


01 locale 02 LANG=en_US.UTF-8 03 LC_CTYPE=en_US.UTF-8 04 LC_NUMERIC=en_US.UTF-8 05 LC_TIME=en_US.UTF-8 06 LC_COLLATE=en_US.UTF-8 07 LC_MONETARY=en_US.UTF-8 08 LC_MESSAGES=en_US.UTF-8 09 LC_PAPER=en_US.UTF-8 10 LC_NAME=en_US.UTF-8 11 LC_ADDRESS=en_US.UTF-8 12 LC_TELEPHONE=en_US.UTF-8 13 LC_MEASUREMENT=en_US.UTF-8 14 LC_IDENTIFICATION=en_US.UTF-8 15 LC_ALL=

28

Nmero 78

WWW.LINUX- MAGAZINE.ES

Koha PRCTICO

del sistema, de Apache y de MySQL. El locale de su sistema debe estar en UTF-8. Para ver si es el caso, vamos a una consola de comandos y tecleamos locale. Deberamos obtener una respuesta como la que se muestra en el Listado 1. Si nuestro resultado es diferente, podemos seguir el procedimiento del cuadro Configuracin regional en UTF-8. Descargamos Koha con el comando:
wget http://download.U koha-community.org/U koha-version.tar.gz

habilitado en el firewall. Desde esta herramienta tambin podemos activar o desactivar los mdulos de Apache y otros parmetros del servidor web.

Listado 2: Variables MySQL y sus Valores


01 mysql> show variables like char%; 02 +--------------------------+----------------------------+ 03 | Variable_name | Value | 04 +--------------------------+----------------------------+ 05 | character_set_client | utf8 | 06 | character_set_connection | utf8 | 07 | character_set_database | utf8 | 08 | character_set_filesystem | binary | 09 | character_set_results | utf8 | 10 | character_set_server | utf8 | 11 | character_set_system | utf8 | 12 | character_sets_dir | /usr/share/mysql/charsets/ | 13 +--------------------------+----------------------------+ 14 8 rows in set (0.00 sec)

Configuracin de MySQL

y lo extraemos con tar:


tar xvfz koha-version.tar.gz

Si llegamos a este punto, MySQL ya est instalado. Por tanto, es necesario asegurarse de que se inicia en el arranque, se activa y cuida de los aspectos de seguridad:
chkconfig mysql on rcmysql start /usr/bin/U mysql_secure_installation

los paquetes perl-XML-SAX y perl-XMLlibxml estn instalados. En caso contrario, podemos instalarlos desde un intrprete de comandos:
yast -i perl-XML-SAXU perl-XML-LibXML

que va al directorio koha-version.

Configuracin de Apache
El siguiente paso es configurar la codificacin de Apache. Para establecer la codificacin por defecto a UTF-8 creamos un archivo de configuracin local y aadimos la directiva AddDefaultCharset: .
vi /etc/apache2/httpd.conf.local

Aadimos lo siguiente al archivo:


AddDefaultCharset UTF-8

y guardamos. A continuacin, tecleamos:


a2enmod perl5 chkconfig apache2 on rcapache2 restart

Los comandos anteriores habilitan el Perl scripting, reiniciamos Apache y nos aseguramos de que se inicie en el arranque.

Configuracin de Apache a travs de YaST


En nuestro caso se configur el sistema en openSUSE, que utiliza la herramienta de configuracin YaST. Los pasos bsicos para otras distribuciones son similares, pero los detalles pueden diferir. En los sistemas de openSUSE, puede utilizar YaST e instalar el paquete yast2-http, que ofrece una herramienta con interfaz grfica de usuario para gestionar fcilmente el servidor HTTP. Tras instalar este paquete, volvemos a cargar Yast y nos dirigimos a Servicios de Red | servidor http. Debemos asegurarnos de que el servidor HTTP est

El ltimo comando refuerza la seguridad y nos permite eliminar las bases de datos de prueba y las cuentas de usuario annimas creadas por defecto. Este paso es muy recomendable en servidores de produccin. Adems de establecer una contrasea de root, el resto de las preguntas es mejor dejarlas en sus valores predeterminados, presionando Enter sin ms. Ahora sera un buen momento para asegurarnos de que la codificacin de MySQL se establece a UTF-8. Para cambiarla, vamos a un smbolo del sistema MySQL simplemente tecleando mysql -p, contestamos la peticin con la contrasea de root, y luego, con show, comprobamos que la configuracin de la codificacin sea como la del Listado 2. En este caso, todas las configuraciones estn en UTF-8, por lo que no es necesario hacer cambios. El ltimo paso con MySQL es la concesin de permisos al usuario koha para la base de datos de Koha. Podemos hacer esto a travs de la interfaz de comandos de MySQL. Para generar una base de datos con xito, primero tendremos que crear un usuario MySQL, y concederle los permisos necesarios para la base de datos de Koha. En el caso descrito en este artculo, el usuario de MySQL se llama kohaadmin (vase el Listado 3).

Seguidamente debemos comprobar qu analizador XML est usando el sistema. Afortunadamente, Koha incluye una utilidad de shell que podemos utilizar para esto:
koha_root_folder/U misc/sax_parser_print.pl

En mi caso, al ejecutar el verificador del analizador SAX de Koha, se gener el contenido del Listado 4. Como indica la lnea 5, tiene mala pinta, pero no se preocupe, arreglar este error es muy fcil: slo tenemos que localizar un archivo llamado ParserDetails.ini, del siguiente modo: :
find / -iname ParserDetails.ini

Obtendremos una respuesta similar a esta:


/usr/lib/perl5/vendor_perl/U 5.12.1/XML/U SAX/ParserDetails.ini

El siguiente paso es editar ParserDetails.ini y cambiar la lnea que

Configuracin Regional en UTF-8


1. Iniciar Yast. 2. Ir a Sistema | Idiomas. 3. Pulsar en Detalles. Aparecer una nueva ventana. Nos aseguramos de que Configuracin regional para el usuario root est configurado a S y la casilla Usar codificacin UTF-8 est marcada. 4. Aceptamos los cambios.

Configuracin del Analizador SAX


Koha est basado principalmente en Perl, por lo que debemos asegurarnos de que

WWW.LINUX- MAGAZINE.ES

Nmero 78

29

PRCTICO Koha

dice [XML:: SAX::PurePerl] a [XML:: LibXML:: SAX:: Parser] y guardar. Para verificar, volvemos a ejecutar sax_parser_print.pl. Deberamos obtener un mensaje con buen aspecto, como el que se muestra en el Listado 5.

Instalacin de Mdulos Perl


Una vez hemos terminado con el analizador de XML, es necesario instalar unos cuantos mdulos Perl. Para descubrir qu mdulos son necesarios ejecutamos perl Makefile.PL. En este punto, esperaba recibir algn tipo de mensaje de instalacin, pero no fue as. En su lugar apareci un aviso del instalador diciendo Cant locate ZOOM.pm in @INC (@INC contains. Una investigacin posterior en Makefile.PL mostr que me faltaba el paquete perl-Net-Z3950-ZOOM. Este paquete no se encuentra en los repositorios estndar de openSUSE (los que se aaden cuando el sistema se instala por primera vez). Lo ms fcil es buscar el paquete [5], perl_net-Z3050. Ahora seguimos el procedimiento descrito en el cuadro Instalacin de Servicio con 1-Click para instalarlo. Esto agrega el repositorio devel:languages:perl [6] a la lista de repositorios.

La lista de mdulos Perl necesarios se muestra despus de ejecutar el instalador, el cual proporciona una lista de requisitos previos no satisfechos tras responder a una serie de preguntas. Para ahorrarle la molestia de ir y venir de un lado a otro, he creado una lista (vase la Tabla 1). Todos estos mdulos deben instalarse al configurar Koha con todas las opciones habilitadas. La columna de la izquierda muestra el mdulo de Perl requerido. La columna de la derecha lista el mdulo de Perl tal y como se denomina en el repositorio Perl de openSUSE. No todos los mdulos necesarios existen en el repositorio de Perl. Los que no tienen un equivalente deben instalarse a travs de CPAN [7]. Adems, se tendrn que instalar dos paquetes ms en el sistema: perl-CacheMemchached y memcached. Para instalarlos a travs de CPAN, ejecutamos el comando cpan mediante una consola de comandos. Si es la primera vez que ejecutamos este comando, tendremos que configurarlo, para lo cual podemos utilizar un proceso de configuracin automtica. Una vez realizado, deberamos ver un smbolo de sistema CPAN:
Enter h for help. cpan[1]>

A partir de aqu podemos instalar mdulos con install module_name, por ejemplo install Authen::CAS::Client.

Instalacin de Koha
Lo primero que tenemos que hacer es crear un usuario y un grupo para Koha. Debemos asegurarnos de configurar la contrasea de Koha. Los comandos que necesitamos son useradd nombreusuario, passwd nombreusuario, groupadd nombregrupo. Para mayor comodidad, podemos configurar el mismo nombre para el usuario y el nombre del grupo. Para iniciar la instalacin ejecutamos Makefile.PL. El script de instalacin genera una gran cantidad de lneas. Cada parmetro se explica en el script de instalacin, por lo que este procedimiento debe llevar slo unos minutos. Despus de configurar las opciones de parmetros, el script de instalacin genera una lista de los parmetros configurados, as como las instrucciones sobre cmo se pueden modificar. A continuacin ejecutamos make, make test y make install. Si hemos introducido las opciones de configuracin correctas, debemos observar un mensaje diciendo que se instalaron los archivos de Koha.

Listado 3: Creacin y Configuracin Usuario MySQL


01 mysql -u root -p 02 Enter password: 03 Welcome to the MySQL monitor. Commands end with ; or \g. 04 Your MySQL connection id is 53 05 Server version: 5.1.53-log SUSE MySQL RPM 06 07 Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. 08 This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license 09 10 Type help; or \h for help. Type \c to clear the current input statement. 11 12 mysql> create database `koha` default character set utf8 collate utf8_unicode_ci; 13 Query OK, 1 row affected (0.00 sec) 14 15 mysql> grant all on koha.* to kohaadmin@localhost identified by kohapassword; 16 Query OK, 0 rows affected (0.00 sec) 17 18 mysql> flush privileges; 19 Query OK, 0 rows affected (0.00 sec) 20 21 mysql> quit 22 Bye

Listado 4: Configuracin Errnea Analizador SAX


01 Koha wants something like: 02 XML::LibXML::SAX::Parser=HASH (0x81fe220) 03 You have: 04 XML::SAX::PurePerl=HASH(0x9a2bd0) 05 Looks bad, check INSTALL.* documentation.

Listado 5: Verificacin Correcta Analizador XML


01 misc/sax_parser_print.pl 02 Koha wants something like: 03 XML::LibXML::SAX::Parser=HASH (0x81fe220) 04 You have: 05 XML::LibXML::SAX::Parser=HASH (0x9a0240) 06 Looks good.

Listado 6: Instalar un Nuevo Idioma


01 ./tmpl_procd /usr/share/koha/misc/translator 02 ./tmpl_process3.pl install -i /usr/share/koha/opac/htdocs/opac-tmpl/prog/en/ -o /usr/share/koha/opac/htdocs/opac-tmpl/ prog/ el-GR -s /home/koha/koha-3.02.00/misc/translator/po/el-GR-i-opac-t-prog-v-3002000.po -r 03 ./tmpl_process3.pl install -i /usr/share/koha/intranet/htdocs/intranet-tmpl/prog/en/ -o /usr/share/koha/intranet/htdocs/intranet-tmpl/prog/el-GR -s /home/koha/koha-3.02.00/misc/translator/po/el-GR-i-staff-t-prog-v-3002000.po 04 Charset in/out: UTF-8 at ./tmpl_process3.pl line 267. 05 Copying /usr/share/koha/intranet/htdocs/intranet-tmpl/prog/en/columns.def... 06 The install seems to be successful.

30

Nmero 78

WWW.LINUX- MAGAZINE.ES

Koha PRCTICO

Tabla 1: Paquetes Perl y sus Nombres en openSUSE


Paquete Perl Algorithm::CheckDigits Authen::CAS::Client Biblio::EndnoteStyle Business::ISBN CGI::Session CGI::Session::Serialize::yaml Class::Accessor Class::Factory::Util DBD::SQLite2 DBD::mysql Data::ICal Date::Calc Date::ICal Date::Manip DateTime Email::Date GD GD:Barcode:UPCE Graphics::Magick HTML::Scrubber HTML::Template::Pro HTTP::OAI JSON Lingua::Stem Lingua::Stem::Snowball List::MoreUtils Locale::Currency::Format Locale::PO MARC::Charset MARC::Crosswalk::DublinCore MARC::File::XML MARC::Record perl-Locale-PO perl-Marc-Charset perl-MARC-Crosswalk-DublinCore perl-MARC-File-XML perl-MARC-Record perl-JSON perl-Lingua-Stem perl-Lingua-Stem-Snowball perl-List-MoreUtils perl-Biblio-EndnoteStyle perl-Business-ISBN perl-CGI-Session perl-CGI-Session-Serialize-yaml perl-Class-Accessor perl-Class-Factory-Util perl-DBD-SQLite perl-DBD-mysql perl-Data-ICal perl-Data-Calc perl-Date-ICal perl-Date-Manip perl-DateTime perl-Email-Date perl-GD perl-GD-Barcode perl-GraphicsMagick perl-HTML-Scrubber perl-HTML-Template-Pro Paquete openSUSE 11.3 perl-Algorithm-CheckDigits Paquete Perl MIME::Lite Mail::Sendmail Memoize::Memcached Net::LDAP Net::Z3950::ZOOM Net::LDAP::Filter Net::Server Number::Format PDF::API2 PDF::API2::Page PDF::API2::Simple inc::Module::Install PDF::API2::Util PDF::Reuse PDF::Reuse::Barcode PDF::Table POE SMS::Send Schedule::At Text::CSV Text::CSV::Encoded Text::CSV_XS Text::Iconv UNIVERSAL::require XML::Dumper XML::LibXSLT XML::RSS XML::SAX::Writer YAML YAML::Syck HTML::Template::Pro DublinCore::Record perl-Text-CSV_XS perl-Text-Iconv perl-UNIVERSAL-require perl-XML-Dumper perl-XML-LibXSLT perl-XML-RSS perl-XML-SAX-Writer Perl-YAML perl-YAML-Syck perl-HTML-Template-Pro perl-DublinCore-Record perl-POE perl-SMS-Send perl-Schedule-At perl-Text-CSV perl-PDF-Reuse perl-PDF-Reuse-Barcode perl-Module-Install perl-Net-Server perl-Number-Format perl-PDF-API2 perl-Net-Z3950 Paquete openSUSE 11.3 perl-MIME-Lite perl-Mail-Sendmail

Para utilizar los procesos por lotes de la lnea de comandos de Koha, establecemos las variables de entorno:
export KOHA_CONF=U /etc/koha/koha-conf.xml export PERL5LIB=U /usr/share/koha/lib

export PERL5LIB=U /usr/share/koha/lib

ese archivo en el directorio del host virtual de Apache. Podemos hacerlo tecleando:
ln -s /etc/koha/koha-httpd.confU /etc/apache2/vhosts.d/koha.conf

Ahora, para activar las variables, salimos y volvemos a loguearnos en la shell.

Configurar Apache
Debido a que es una aplicacin web, tendremos que crear una mquina virtual. En openSUSE, los archivos de la mquina virtual se configuran en el directorio /etc/ apache2/vhost.d. Cualquier archivo con la extensin .conf es ledo y se considera un archivo de configuracin del host virtual. Adems, el instalador de Koha ya ha creado un archivo de configuracin con todas las directrices necesarias en /etc/koha/ koha-httpd.conf. Lo nico que queda es crear un enlace simblico que apunte a

Adems, tenemos que habilitar los mdulos rewrite y env con el comando:
a2enmod rewrite a2enmod env

Para otras tareas posteriores a la instalacin, por favor consulte el archivo README. Tal y como se indica en las notas posteriores a la instalacin, tendremos que establecer las variables de entorno. Para ello slo hay que crear /etc/bash.bashrc.local y aadir:
export KOHA_CONF=U /etc/koha/koha-conf.xml

Luego debemos editar /etc/koha/kohahttpd.conf y aadir lo siguiente al final del archivo para permitir la exploracin de koha:
<Directory /usr/share/koha> Order allow,deny

WWW.LINUX- MAGAZINE.ES

Nmero 78

31

PRCTICO Koha

Figura 1: La intranet vista por un administrador.

su contrasea, y se mostrarn algunas preguntas ms para terminar la instalacin. En caso de no completarla, la interfaz web koha quedar bloqueada en modo de mantenimiento. Cuando visit por primera vez mi interfaz del instalador web, recib una advertencia diciendo que el paquete perl-Date-ICal no se haba instalado, a pesar de que se instal a travs de YaST. Para resolver esto, lo elimin desde Yast y luego lo instal a travs de CPAN.

Instalar Idiomas Adicionales


Como con cualquier aplicacin multilinge, nuestra configuracin puede necesitar soporte para otros idiomas adems del ingls. Para traFigura 2: Activacin de idiomas adicionales en Koha. ducir la interfaz grfica Allow from all de usuario a otro idioma debemos comple</Directory> tar un proceso de dos pasos. El primero de ellos es localizar los archivos .po del No debemos olvidar reiniciar Apache. idioma que queramos e instalarlos. El Al visitar http://tuTLD:8080, se mossegundo paso es activar el idioma recin trar un formulario de acceso para iniciar instalado desde la interfaz web de admiel instalador web. Necesitaremos el nomnistracin de Koha. Vamos a mostrar bre de usuario de administrador de koha y cmo aadir el idioma griego, aunque el procedimiento es el Listado 7: Salida del Comando rebuild mismo para cualquier otro idioma soportado. de Zebra Comenzamos cre/usr/share/koha/bin/migration_tools/ rebuild_zebra.pl -r -v -a -b ando la jerarqua para Zebra configuration information Greek (el-GR), para lo ================================ Zebra biblio directory = /var/lib/koha/zebradb/biblios que tenemos que crear Zebra authorities directory = dos directorios: /usr/ /var/lib/koha/zebradb/authorities share/ koha/ opac/ Koha directory = /usr/share/koha/intranet/cgi-bin BIBLIONUMBER in : 001$@ htdocs/ opac-tmpl/ prog/ BIBLIOITEMNUMBER in : 090$a el-GR y /usr/share/ ================================ koha/intranet/htdocs/ exporting authority ==================== intranet- tmpl/ prog/ elGR. El primer directorio ==================== REINDEXING zebra incluye la interfaz OPAC ==================== (Online Public Access 15:24:24-21/12 zebraidx(5218) [log] zebra_start 2.0.43 Catalog), y el segundo abd433d1a315576cf1f4a53f2c70365f9a76477f 15:24:24-21/12 zebraidx(5218) [log] config la interfaz de la intranet. /etc/koha/zebradb/zebra-biblios.cfg Suponiendo que hemos 15:24:24-21/12 zebraidx(5218) [warn] zebra_lock_create extrado Koha en la carfail fname=/var/lock/koha/zebradb/biblios/norm..LCK [Permission denied] peta koha del directorio

de usuario, podemos ejecutar el comando mostrado en el Listado 6 para instalar la traduccin griega. Si aparece el mensaje The install seems to be successful, podemos proceder al segundo paso, que es activar el nuevo idioma. Si no es as, puede que no hayamos creado un directorio necesario, o puede que haya escrito incorrectamente alguna de las rutas en los comandos. Para continuar, nos logueamos en la interfaz de la intranet como administrador. La primera interfaz que ve un administrador es la que se muestra en la Figura 1. A partir de ah, nos vamos a Home | Administration | System Preferences | OPAC | I18N/L10N. En esa pgina se nos dar la opcin de habilitar el idioma que acabamos de instalar, como se ve en la Figura 2.

Instalacin y Configuracin de Zebra


Si estamos creando un servidor de produccin, es probable que queramos instalar el motor de indexacin de texto y de recuperacin Zebra [8]. Sin l, buscar algo ser lento y frustrante. Sin embargo, si slo estamos haciendo una prueba, todo ir bien sin l. Para instalar Zebra, simplemente escribimos:
yast -i idzebra idzebra-doc

Una vez instalado, podemos ejecutar el comando rebuild:


/usr/share/koha/binU /migration_tools/U rebuild_zebra.pl -r -v -a -b

En mi caso, Zebra no funcion a la primera. Tuve que hacer algunos ajustes. El comando rebuild devolvi problemas de propiedad, como se muestra en el Listado 7. Para solucionar este problema, di una propiedad adecuada al directorio zebradb de la siguiente manera:
chown -R [koha_user]:U [koha_group]U /var/lock/koha/zebradb

Entonces, emit el comando rebuild de nuevo, y funcion sin ningn tipo de problemas. Sin embargo, pareca que no se

32

Nmero 78

WWW.LINUX- MAGAZINE.ES

Koha PRCTICO

haban cargado los mdulos de filtro. El problema se encontraba en la ruta de las bibliotecas de 64 bits. Para localizar la ruta correcta podemos hacer:
find / -iname mod-alvis.so /usr/lib64/idzebra-2.0/U modules/mod-alvis.so

Una vez corregida la ruta, edit el archivo de configuracin zebra biblios.cfg y reemplac:
modulePath: U /usr/lib/idzebra-2.0/modules

buscar materiales en el catlogo de la biblioteca, y es posible acceder para adaptar la informacin a nuestras propias necesidades. Adems, pueden almacenar los resultados de bsqueda como listas, aadir etiquetas, enviar sugerencias de compra y mucho ms. Existen manuales detallados [9] para explicar todo tipo de operaciones.

Figura 4: Bsqueda de clientes.

con
modulePath: U /usr/lib64/idzebra-2.0/modules

Agregar Clientes

En entornos de biblioteca, a los usuarios se les llama clientes. AaFinalmente, se pudo inicializar Zebra con: dir uno en Koha es slo cuestin de un par de /usr/bin/zebrasrvU clics. Para hacerlo Figura 5: Configuracin de permisos. -f /etc/koha/koha-conf.xml & vamos a Patrons | New. Pulsando en New se abre un formulario en tran en la Figura 5. Deberamos tener en Debemos asegurarnos de que este el que podemos aadir los detalles de un cuenta algunas consideraciones antes de comando se agrega a /etc/init.d/after.local cliente. Tenga en cuenta los campos login asignar los permisos a los usuarios. para que Zebra se inicialice cada vez que y password de OPAC hacia el final del forConclusin arranca el servidor. mulario. Cada usuario necesita una Por ltimo, si vamos a llevar el sistema Koha nos permite automatizar el ciclo de cuenta de usuario de OPAC para loguearse a Internet, deberamos activar el soporte produccin de una biblioteca a travs de en Koha. Cuando hayamos terminado, SSL en la instalacin. No voy a entrar en una interfaz de usuario intuitiva basada simplemente pulsamos Save. muchos detalles sobre eso, porque el en Web y es relativamente fcil de confiSi no hacemos nada ms, las credenciasoporte SSL en Apache es bastante sencigurar. Aprender a gestionar Koha puede les que utilizamos para este usuario slo llo. Para Koha, tenemos que editar el llevar un tiempo, ya que es un sistema se utilizan para que se loguee como un fichero de configuracin y aadir SSL muy completo. En este artculo nos hemos cliente habitual (usuario de biblioteca). Si como nueva directiva de host virtual en el centrado en instalar y configurar Koha necesitamos crear algn otro usuario, puerto 443. Tambin podemos agregar el desde el punto de vista del administrador. tenemos que editar los permisos de acceso cifrado SSL en el puerto 8080 para las Despus de eso, le toca a los bibliotecarios del usuario. Para ello, vamos a Home | conexiones de intranet (no olvide activar agregar contenido, usuarios y utilizar el Patrons y elegimos la cuenta del cliente. el mdulo SSL de Apache). software adecuadamente. I Podemos localizar al cliente buscando por nombre parcial, o con un nmero de su Uso de Koha tarjeta. Alternativamente, podemos naveRECURSOS Lo que ve un usuario al visitar su sitio gar por los clientes por apellido. [1] Koha: http://www.koha.org/ web es la interfaz del Catlogo de Acceso Supongamos, por ejemplo, que tenemos [2] openSUSE Linux: http://www.opensuse.org Pblico en lnea (OPAC) similar a la que un cliente llamado Account Tester. Si lo [3] Servidor web Apache: se ve en la Figura 3. Los usuarios pueden buscamos por test, se obtendr una lista de http://www.apache.org usuarios (en este caso, [4] MySQL AB: http://www.mysql.com un usuario demo), como [5] Descarga de openSUSE: se ve en la Figura 4. http://software.opensuse.org [6] Repositorio Perl en openSUSE: El nombre del cliente http://download.opensuse.org/ ser un enlace. Al pulsar repositories/devel:/languages:/perl/ en ese enlace nos lleva a openSUSE_11.3 la pgina del cliente. Ele[7] CPAN: http://www.cpan.org gimos More | Set permis[8] Zebra: http://www.indexdata.com/ zebra sions para ir a la pgina [9] Manuales de Koha: http://koha.org/ Figura 3: El catlogo de acceso pblico en lnea (OPAC) visto por de permisos. Las opciodocumentation/manual un usuario annimo. nes de permiso se mues-

WWW.LINUX- MAGAZINE.ES

Nmero 78

33

PRCTICO MySQL Buddy y Adminer

Ante todo simplicidad: Herramientas ligeras para la administracin de MySQL

HERRAMIENTAS MYSQL
Albergar sitios web tanto en nuestro servidor local como en servidores remotos casi siempre implica el uso de una base de datos MySQL. Por ello siempre debemos tener en nuestro arsenal alguna herramienta decente para su administracin. POR DMITRI POPOV
cin Create a New Database, se puede crear rpidamente una base de datos nueva introduciendo su nombre, seleccionando un juego de caracteres y presionando el botn Submit. SQL Buddy soporta atajos de teclado, de modo que pueden realizarse ciertas operaciones sin tener que abandonar el teclado en la pgina principal podemos encontrar un listado con estos atajos. La barra de navegacin lateral de la izquierda se encuentra dividida en dos grupos. Los enlaces de navegacin en la parte superior de la barra lateral permiten acceder de forma rpida a otras pginas de SQL Buddy tales como Users, Query, Import y Export. Debajo de estos enlaces se encuentra una lista desplegable con todas las bases de datos disponibles. Para utilizar una base de datos hay que hacer clic sobre ella, o bien, hacer clic en el tringulo que se encuentra

unque se pueda manejar la base de datos MySQL desde la lnea de comandos, siempre es preferible utilizar una herramienta grfica. phpMyAdmin [1] es la eleccin de muchos usuarios, pero no es la nica que existe. De hecho, si hace falta configurar una base de datos ocasional o ajustar algunos parmetros de la base de datos de vez en cuando, la cantidad de funciones de phpMyAdmin podra ser exagerada para estas necesidades. Afortunadamente, tenemos disponible varias alternativas sencillas para la administracin de MySQL, y en este artculo vamos a echarle un vistazo a varias de ellas.

SQL Buddy
Aunque SQL Buddy [2] no se encuentra actualmente en desarrollo, an sigue siendo

la mejor herramienta de administracin ligera para MySQL. Su facilidad de uso y la lgica de su interfaz con Ajax hacen que la tarea de crear y administrar bases de datos MySQL sea pan comido, incluso para los usuarios normales. Escrita enteramente en PHP, SQL Buddy no requiere ninguna instalacin; tan slo hay que obtener la ltima versin del sitio web del proyecto, descomprimir el archivo, mover el directorio resultante al directorio raz del servidor web y listo. SQL Buddy utiliza la tabla users de MySQL para la autenticacin, de modo que el usuario puede conectarse usando cualquiera de los usuarios de MySQL existentes, incluyendo el usuario root. Una vez conectados, se mostrar la pgina principal (Figura 1). Aqu se puede seleccionar un idioma (SQL Buddy soporta 47 idiomas) y un tema (a escoger entre Bittersweet que viene por defecto y el Figura 1: SQL Buddy posee una interfaz intuitiva y soporta atatema Classic). En la sec- jos de teclado.

Sergey Konyakin, 123RF

34

Nmero 78

WWW.LINUX- MAGAZINE.ES

MsSQL Buddy y Adminer PRCTICO

Figura 3: SQL Buddy facilita la exportacin de las bases de datos y de los datos.

Figura 2: Aadiendo un usuario nuevo.

junto a la base de datos para ver todas sus tablas. Como probablemente haya adivinado ya, la pgina Users proporciona las herramientas esenciales para la gestin de los usuarios. Tambin aqu, la simplicidad es la clave. Para crear un usuario nuevo se introduce el host, el nombre del usuario y la contrasea en los campos apropiados, luego con las opciones disponibles se le autoriza el acceso a las bases de datos y se le asignan los privilegios. Haciendo clic en el botn Submit se aade el usuario al sistema (Figura 2). La edicin de las cuentas de los usuarios existentes es igual de fcil: se selecciona el usuario que se desee editar y se presiona el botn Edit, luego slo hay que modificar los valores apropiados. La pgina Query proporciona un editor SQL que permite la construccin y la ejecucin de consultas SQL. De hecho, tan slo es un cuadro de texto sin ningn tipo de floritura como el coloreado de cdigo. Para trabajar con esta funcin hay que saber SQL. SQL Buddy facilita la realizacin de copias de seguridad de las bases de datos MySQL y de los datos almacenados en ellas por medio de la pgina Export. Se pueden seleccionar todas o algunas de las bases de datos de la lista Databases y elegir si se quiere exportar la base de datos, los datos o ambos. Para guardar el fichero como .sql se debe seleccionar como opcin de salida Text file, asignar un nombre al fichero de la copia de seguridad y presionar Submit (Figura 3). Para restaurar las bases de datos y los datos

(o importar los datos a partir de otras bases de datos), en la pgina Import se selecciona el fichero .sql que contenga la copia de seguridad y se pulsa el botn Submit. La intuitiva interfaz de usuario de SQL Buddy tambin facilita el trabajo con las bases de datos. Haciendo clic en Databases, que se encuentra en la barra de navegacin, se accede a la pgina de mantenimiento. Aqu se pueden aadir tablas y campos a la base de datos, adems de manipular las tablas existentes. La creacin de tablas y

campos es bastante sencilla. En la seccin Create a New Table, se le da un nombre a la tabla, se especifica el juego de caracteres, se aaden tantos campos como se necesiten y se presiona Submit. Tambin se pueden seleccionar las tablas existentes y realizar diversas acciones sobre ellas, como Empty (borra todos los registros de las tablas seleccionadas), Drop (borra las tablas seleccionadas) y Optimize (optimiza las tablas seleccionadas) (Figura 4). Por supuesto, es posible utilizar SQL Buddy para moverse y ver los registros de las tablas de la base de datos. Haciendo clic en el icono

Figura 4: Trabajando con bases de datos en SQL Buddy.

WWW.LINUX- MAGAZINE.ES

Nmero 78

35

PRCTICO MySQL Buddy y Adminer

triangular se pueden explorar y recorrer los registros. Para editar un registro, se selecciona y se presiona el enlace Edit. En resumen, SQL Buddy es una herramienta para la administracin de MySQL bastante agradable. Su intuitiva interfaz de usuario hace que el trabajo con las bases de datos sea menos tedioso, incluso para los usuarios sin experiencia. El nico inconveniente es que su desarrollador original ya no sigue mantenindola, pero tengo la esperanza de que la comunidad d un paso adelante y contine el desarrollo de esta gil herramienta.

Adminer
Hay dos cosas que diferencian a Adminer [3] del resto de las herramientas de administracin de MySQL. Primero, la herramienta completa consiste en un nico fichero PHP, de modo que es ridculamente fcil la instalacin: descargamos la ltima versin de Adminer del sitio web del proyecto y copiamos el fichero al directorio raz del servidor web. Y eso es todo. Segundo, Adminer es impresionantemente rpida, lo que puede ser un punto a favor cuando hace falta administrar una base de datos MySQL remota por medio de una conexin lenta. Adems de MySQL, Adminer tambin puede manejar las bases de datos PostgreSQL, SQLite, MS SQL y Oracle. La interfaz de usuario de Adminer no ganara ningn concurso de diseo, y si la comparamos con la de SQL Buddy, podemos decir que es totalmente plana (Figura 5); sin embargo, es la carencia de elementos visuales lo que hace que Adminer sea tan rpida. Y aunque la interfaz no sea bonita, es funcional y permite que se pueda realizar el trabajo.

Figura 6: Modificacin de un usuario existente.

De forma similar a SQL Buddy, Adminer utiliza la tabla users de MySQL para la autenticacin de los usuarios, de modo que podemos conectarnos usando cualquier cuenta de usuario existente en el servidor MySQL. La pgina principal muestra un listado de las bases de datos existentes y proporciona unos cuantos enlaces con los comandos ms utilizados, con los cuales se puede crear una base de datos nueva; ver, modificar y aadir usuarios; y echarle un ojo a los procesos en ejecucin. La creacin de una base de datos nueva es un proceso bastante sencillo. Para comenzar, hay que hacer clic en el enlace Create new database, luego se especifica el nombre, la codificacin y se pulsa el botn Save. El aadido de usuarios nuevos tampoco es particularmente difcil. Para poder rellenar los campos requeridos y especificar los privilegios hay que hacer clic en el enlace Privileges de la pgina principal y luego en Create user (Figura 6). Para finalizar se pulsa Save. Si se desea modificar un usuario existente, es suficiente con hacer clic en el enlace editar que se encuentra junto al usuario deseado. Para ir a una base de datos especfica, o bien se pulsa el enlace correspondiente de la lista de bases de datos, o bien se selecciona Figura 5: La interfaz de Adminer es decididamente bsica. de la lista desplegable de la

barra de navegacin de la parte izquierda. De esta forma se abre la pgina Tables and Views que contiene un resumen de todas las tablas de la base de datos (Figura 7). El campo Search puede ser til para buscar registros en una tabla. Por ejemplo, si se teclea monkey y se presiona el botn Search, nos devolver una lista de tablas que contienen algn registro que coincide con la bsqueda. Al pulsar sobre una de estas tablas se podrn ver los registros obtenidos como resultado de la bsqueda. Los botones en la parte inferior de la lista permiten realizar diversas acciones tiles. Es posible optimizar, comprobar y reparar tablas simplemente presionando el botn apropiado. Para examinar la estructura de una tabla especfica slo hay que pulsar sobre ella en la vista resumen. Para poder ver los registros de la tabla, se debe pulsar el enlace Select data. Se pueden editar los registros de forma individual con tan slo hacer clic en el enlace edit que aparece junto a ellos, y si se quiere aadir un registro nuevo, lo nico que hay que hacer es pulsar el enlace New item. Como cualquier herramienta para la administracin de MySQL que valga la pena, Adminer permite importar y exportar datos, y para ello dispone de varias formas de hacerlo. Cuando se est viendo una tabla, se puede exportar su estructura y registros haciendo clic en el enlace Export que se encuentra al pie de la pgina y seleccionando el tipo de salida que se desee (por ejemplo, abrir el fichero de exportacin en el navegador, guardarlo, o comprimirlo y guar-

36

Nmero 78

WWW.LINUX- MAGAZINE.ES

MsSQL Buddy y Adminer PRCTICO

Figura 7: Trabajando con tablas en Adminer.

para la administracin de MySQL es competente, fcil de instalar y extremadamente rpida. Gracias a sus flexibles opciones de exportacin y soporte para operaciones avanzadas como son las funciones, los triggers y los procedimientos almacenados, es perfecta para los usuarios casuales de MySQL y para los avanzados.

Conclusin
As que, cul de estas dos herramientas de administracin de MySQL debemos elegir? Si slo Figura 8: Adminer dispone de una utilidad de exportacin tenemos que crear bases de flexible. datos ocasionales o realizar algn ajuste de vez en cuando, darlo). Adminer tambin soporta tres formaentonces SQL Buddy ser una buena electos populares de exportacin: SQL, CSV cin. No nos agobiar con funciones avan(valores separados por coma) y TSV (valores zadas y adems, engloba todas sus funcioseparados por tabuladores); slo hay que nes en una interfaz elegante. Si lo que neceseleccionar el deseado y pulsar el botn sitamos es una herramienta rpida y Export. La importacin de datos en la tabla potente, y no nos dejamos asustar por interactual tambin es muy fcil: Hay que hacer faces que exponen funciones complejas, en clic en el enlace Import, seleccionar el ese caso Adminer es lo que andamos busfichero fuente y presionar Import. El cando. I comando Dump en la barra de navegacin permite exportar la base de datos que actualRECURSOS mente se est viendo entera o todas las [1] phpMyAdmin: www.phpmyadmin. bases de datos juntas si se invoca desde la net [2] SQL Buddy: http://www.sqlbuddy. pgina principal (Figura 8). com/ En resumen, no hay que dejarse engaar [3] Adminer: www.adminer.org por el aspecto de Adminer. Esta herramienta

WWW.LINUX- MAGAZINE.ES

Nmero 78

37

DESARROLLO Python: Django y Mongo DB

Integracin de Django y MongoDB

GIGANTESCO
Noel Powell, 123RF.com

En una serie de dos artculos comprobaremos cmo podemos hacer uso de toda la potencia de MongoDB desde Django de forma sencilla. POR JOS MARA RUZ
l ORM de Django (la librera que nos permite interactuar con la base de datos) fue diseado de forma que su evolucin futura no quedase bloqueada por decisiones tomadas en el pasado. Siempre se ha comparado este ORM con uno de los ms populares en Python, SQLAlchemy [1]. Pero el propio nombre de este competidor deja claro su objetivo: hacer magia con SQL. Sin embargo, el ORM de Django se concebi mirando desde la otra parte del camino. En lugar de centrarse en crear un sistema que permitiese interactuar con bases de datos relacionales (que generalmente usan SQL como len-

guaje) se dise para poder almacenar comienza a perfilarse como vencedor. y rescatar objetos desde un repositorio Su acertada eleccin de caractersticas y abstracto. Quiz llamarlo ORM (Object su comportamiento a medio camino Relational Manager) no fue una decientre base de datos relacional y base de sin muy acertada. datos llave-valor (diccionarios), le ha Despus de la dura batalla entre los hecho ganar muchos puntos en la distintos contendientes por la Modelo mongodb para Vuelo. corona de las 01 from mongoengine import * nuevas bases de 02 datos NoSQL que 03 class Vuelo(Document): compiten por 04 localizador = StringField(required = True) ofrecer diferentes 05 aerolinea = StringField(required=True) alternativas a las 06 origen = StringField(required = True) bases de datos 07 destino = StringField(required = True) relacionales, 08 fecha = DateTimeField(required=True) MongoDB [2]

38

Nmero 78

WWW.LINUX- MAGAZINE.ES

Python: Django y Mongo DB DESARROLLO

comunidad de start-ups software. Otro de los atributos que hace de MongoDB un gran candidato, y que tambin le ha hecho ganar la confianza de muchas empresas establecidas, es su capacidad para crear una infraestructura distribuida (mltiples servidores conectados) de forma prcticamente automtica. En este artculo no nos centraremos en los atributos de MongoDB, sino en cmo podemos emplear MongoDB desde Django de forma muy sencilla gracias a la librera MongoEngine [3].

Muy bien, todo est listo para conectar nuestro proyecto Django con MongoDB, pero antes echemos un vistazo a los problemas que plantea MongoDB .

No Todo el Monte es Organo


MongoDB trae un poco de aire fresco al algo aejo mundo de las bases de datos. Organiza los datos de forma muy sencilla, disponemos de bases de datos, colecciones y subcolecciones. Tenemos libertad absoluta para crear cuantos elementos de cada tipo deseemos. Los documentos almacenados se comportan como ficheros JSON [4], lo que los hace muy sencillos de emplear en Python vienen a ser como diccionarios. Para que no ocupen tanto espacio en disco, MongoDB los almacena en un formato binario llamado BJSON, definiendo tipos para nmeros, booleanos, cadenas, fechas Todo esto es genial, pero tambin plantea varios problemas. Los documentos almacenados en una coleccin pueden ser de cualquier tipo. Podemos juntar peras y manzanas en una misma coleccin, y MongoDB no se quejar. Esta flexibilidad extrema puede volverse en nuestra contra rpidamente a medida que la complejidad de nuestro sistema crezca. Pero esta forma de trabajar tambin es una ventaja, puesto que podremos ampliar nuestros modelos de datos sin la necesidad de sus tediosas y peligrosas migraciones. Simplemente podemos aadir ms campos a nuestros modelos y no habr ningn error. Las nuevas instancias tendrn el nuevo campo y las antiguas no lo tendrn. Como MongoDB difiere de la forma en que queremos usarlo en Django, MongoEngine introduce algunas restricciones para hacerlo ms manejable.

MongoDB
Comencemos creando una instancia de MongoDB. Debemos instalar MongoDB empleando el sistema de paquetes de nuestra distribucin (en cuyo caso debemos instalar un paquete con un nombre parecido a mongodb-server), o bien podemos descargar el cdigo fuente desde la pgina web del proyecto [2]. Es recomendable emplear la versin 2.x del proyecto, puesto que incorpora gran cantidad de mejoras en cuanto a la fiabilidad y proteccin de los datos. En versiones anteriores de MongoDB, el comportamiento del servidor poda provocar prdidas de datos no deseadas. Si hemos instalado correctamente el servidor podemos arrancarlo, pero primero debemos decidir en qu directorio albergaremos los datos. Por defecto, MongoDB tratar de usar el directorio /data/db/, pero podemos seleccionar cualquier directorio que queramos usando la opcin --dbpath:
$ mkdir midirectorio $ mongod --journal --dbpath U midirectorio

Figura 1: Esquema que muestra cmo se estructura MongoEngine.

los modelos del ORM de Django, lo que nos permitir reutilizar todo nuestro conocimiento de Django en su prctica totalidad. Podemos instalar MongoEngine usando el sistema de gestin de paquetes Python pip en un virtualenv (si no conoces estas dos tecnologas, deberas comenzar a usarlas ahora mismo!):
$ pip install mongoengine

En este artculo, voy a suponer que disponemos de un proyecto Django operativo y funcionando. En tal caso deberamos contar con un fichero llamado settings.py donde se configura el comportamiento de Django. Debido a que MongoEngine no forma parte de Python, debemos aadir una serie de lineas en este fichero:
from MongoEngine import connect connect(mi-base-de-datos)

La opcin --journal le indicar a MongoDB que emplee un fichero de log para las operaciones, lo que nos proteger ante prdidas de datos ocasionadas por fallos de alimentacin (tirn del enchufe) a cambio de perder algo de rendimiento. Si entramos en el directorio donde hemos arrancado MongoDB, nos podemos llevar un susto al ver que existen varios ficheros con un tamao de 1 gigabyte. Es algo normal para aumentar el rendimiento MongoDB pre-aloja espacio en disco duro.

MongoEngine

Si bien podemos usar MongoDB directamente desde Django, empleando la librera pymongo [3], MongoEnModelo mongodb para Pasajero. gine nos har la 01 class Pasajero(Document): vida ms senci02 nombre = StringField(required = True) lla, ver Figura 1. 03 apellidos = StringField(required = True) Define una serie 04 nie = StringField(required = True) de clases que se 05 fecha_caduca_nie = DateTimeField(required = True) comportan como

La funcin connect establecer una conexin con la instancia MongoDB que est ejecutndose en otro terminal. Por defecto la buscar en el puerto

WWW.LINUX- MAGAZINE.ES

Nmero 78

39

DESARROLLO Python: Django y Mongo DB

Modelo Empotrado de Empleado


01 class Empleado (EmbeddedDocument): 02 nombre = StringField(required = True) 03 apellidos = StringField(required = True)

Django. Podemos crear un modelo vaco:


>>> v = Vuelo()

MongoDB con el mismo id, aunque pertenezcan a diferentes bases de datos.


>>> v.id ObjectId(4ede0549a261U 7c1306000000) >>> v.pk ObjectId(4ede0549a26U 17c1306000000)

27017 en localhost (127.0.0.1), donde MongoDB arranca si no lo especificamos de otra manera. Si tuvisemos que conectar con una instancia MongoDB ejecutndose en otra IP o puerto deberamos usar:
connect(mi-base-de-datos, U host=192.168.1.30,U port=1999)

Pero si tratamos de guardarlo, se generar un error:


>>> v.save() ... ValidationError: Field U localizador is required >>>

Este id se asigna al guardar el objeto, tal como ocurre en Django. Por ltimo, podemos eliminar un objeto de la forma habitual:
>>> Vuelo.objects.count() 1 >>> v.delete() >>> Vuelo.objects.count() 0

MongoDB tambin nos permite establecer control de acceso a las distintas bases de datos usando un nombre de usuario y una clave, datos que podemos pasar tambin a connect() mediante los parmetros username y password. Por increble que parezca ya hemos realizado toda la configuracin necesaria!

Aunque MongoDB nos permite almacenar cualquier tipo de documento, MongoEngine realiza comprobaciones antes de permitir guardar el modelo. En este caso nos indica que el campo localizador es obligatorio. Podemos asignar valores a cada campo:
>>> v.localizador = AAA1234 >>> v.origen = AGP >>> v.destino = LGW >>> v.aerolinea = U Python airlines >>> from datetime import U datetime >>> v.fecha = U datetime(2011,12,3) >>> v.save()

Tipos de Campos
Por el momento slo hemos empleado la clase StringField, que nos permite almacenar una cadena de caracteres en un campo de nuestro modelo, pero MongoEngine nos ofrece un gran surtido de tipos de campos para nuestros modelos.

Nuestros Primeros Modelos


La forma de trabajar de MongoEngine es idntica a la del ORM de Django. Debemos definir una serie de modelos mediante clases que contendrn campos. Suponiendo que nuestro proyecto Django disponga de una aplicacin llamada main, deberamos editar el fichero main/models.py. La verdad es que podemos poner nuestros modelos mongo donde queramos, pero es recomendable emplear el fichero donde se almacenan los modelos en Django por coherencia. En Django debemos crear clases que hereden de models.Model, pero con MongoEngine nuestras clases deben heredar de la clase Document. MongoDB se define a menudo como una base de datos orientada a documentos, siendo los documentos ficheros JSON. Nuestro fichero models.py deber contener el cdigo del Listado 1. Para poder usar el modelo podemos emplear el shell de Django:
$ python manage.py shell >>> from main.models import *

Modelos Empotrados
MongoDB no posee el concepto de llave fornea, por lo que no es posible conectar los modelos como se hace en Django. Como ya hemos visto, aunque MongoDB no fuerza determinadas restricciones, MongoEngine suple esta deficiencia (o decisin de diseo, depende del punto de vista). Disponemos de campos bsicos como por ejemplo: StringField URLField EmailField IntField FloatField DecimalField DateTimeField ComplexDateTimeField, como DateTimeField pero almacena los microsegundos de forma exacta ObjectIdField BooleanField GeoPointField Pero MongoDB tambin nos ofrece campos de los que no se dispone en Django:

Ahora s hemos podido guardar el modelo. Es posible editar cualquiera de los campos de v y volver a guardar:
>>> v.localizador = BBB4567 >>> v.save()

Para comprobar que efectivamente se ha almacenado el modelo, podemos buscarlo como lo haramos con el ORM de Django:
>>> Vuelo.objects.filter(U localizador = BBB4567) [<Vuelo: Vuelo object>] >>> Vuelo.objects.filter(U localizador = BBB4567U )[0].localizador BBB4567

Los modelos mongodb se comportan de forma idntica a los modelos

Una diferencia entre MongoDB y las bases de datos relacionales es que cada documento almacenado en MongoDB dispone de un id que es nico de forma global. No puede haber dos objetos en

40

Nmero 78

WWW.LINUX- MAGAZINE.ES

Python: Django y Mongo DB DESARROLLO

vuelo. A esto se le llama normalmente desnormalizar el modelo. Por ejemplo, imaginemos que queremos almacenar la informacin de un vuelo y que no queremos que se actualice. El nombre de las personas, sus apellidos o su fecha de caducidad de su documento de identificacin pueden variar con el tiempo. En una base de datos relacional deberamos disponer de una tabla con el histrico de cambios, pero en Figura 2: Esquema relacional vs Esquema de documentos empo- MongoDB simpletrados. mente podemos almacenar los datos dentro ListField del modelo, ver Figura 2. Para ello SortedListField debemos cambiar la definicin de DictField Vuelo a la que aparece en el Listado 3. MapField El campo pasajeros es una lista de ReferenceField objetos de tipo EmbeddedDocument GenericReferenceField Field, que a su vez slo acepta como EmbeddedDocumentField parmetro una clase que herede de GenericEmbeddedDocumentField EmbeddedDocument. MongoEngine FileField nos aporta estructura y validaciones BinaryField donde MongoDB no lo hace. SequenceField Muy bien y cmo podemos aadir MongoDB permite almacenar en los un pasajero a un vuelo? Suponiendo documentos listas y diccionarios de que la variable v es un objeto de tipo forma nativa. Por ejemplo, en nuestra Vuelo con todos sus campos asignados: clase Vuelo podemos disponer de un listado de viajeros de aeropuertos por 01 >>> v.pasajeros los que pasar el vuelo. Todos los cam02 [] pos compuestos permiten almacenar 03 >>> p = Pasajero() en su interior cualquier otro tipo de 04 >>> p.nombre = uPedro campo. Podemos crear un ListField de 05 >>> p.apellidos = uLpez DateTimeField o StringField. Pero si 06 >>> p.nie = 123123 slo pudiera hacer eso, MongoDB no 07 >>> p.fecha_caduca_nie sera tan potente. Existen dos campos = datetime(2011,12,31) especiales: EmbeddedDocumentField y 08 >>> ObjectIdField. 09 >>> v.pasajeros.append(p) Digamos que disponemos de un 10 >>> v.save() modelo llamado Pasajero como el que aparece en el Listado 2. En una base de pasajeros se comporta como una lista datos relacional tendramos que poner de Python. Si quisiramos borrar todos un campo en Pasajero que almacenase los pasajeros: el id de su Vuelo. En MongoDB tambin podemos hacer esto, slo habra >>> v.pasajeros = [] que aadir un campo de tipo Reference>>> v.save() Field en Pasajero apuntando a Vuelo. Pero existe otra opcin: almacenar Pero no slo de listas vivimos los prodirectamente los pasajeros en el propio gramadores, a veces tambin necesita-

mos almacenar diccionarios. Para ello disponemos de la clase MapField, con la que podemos almacenar un diccionario que emplea cadenas como llaves y campos como valores. De nuevo podemos emplear EmbeddedDocumentField como campo a almacenar. En nuestro ejemplo, podemos aadir el modelo Empleado (ver Listado 3) y aadir tambin un nuevo campo a Vuelo llamado empleados:
... empleados = MapField(U EmbeddedDocumentU Field(Empleado))

que nos permitir aadir empleados usando su puesto, por ejemplo, como llave:
>>> v.empleados[capital]U = Empleado(nombre = Gustavo,U apellidos = Carmona) >>> v.save()

Gracias a estas dos clases (y a Sorted ListField y DictField) MongoDB nos permite construir potentes jerarquas de objetos que podremos almacenar y recuperar a toda velocidad.

Conclusin
En este primer artculo slo hemos podido ver las opciones ms sencillas de MongoDB. En el prximo veremos cmo se comportan MongoEngine y Django cuando hagamos uso de las caractersticas ms importantes de MongoDB: el sharding/ replicacin y map/ reduce. Es entonces cuando podremos apreciar la autntica potencia de esta innovadora base de datos. I

RECURSOS
[1] SQLAlchemy: http://www.sqlalchemy.org [2] MongoDB: http://www.mongodb.org/ [3] MongoEngine: http://mongoengine.org/ [4] JSON: http://www.json.org/

EL AUTOR
Jos Mara Ruiz Aguilera es un emprendedor enamorado de Python, la ciencia y la informtica.

WWW.LINUX- MAGAZINE.ES

Nmero 78

41

DESARROLLO Perl: Etiquetas OpenOffice

No lo escriba, pguelo!

ETIQUETA INDEPENDIENTE
OpenOffice ofrece una seleccin de formatos preconfigurados para usuarios que necesitan imprimir sus propias etiquetas autoadhesivas. Perl suministra los datos de direccin al documento. POR MIKE SCHILLI
pesar de que posiblemente disfrute al escribir tarjetas de felicitacin a mano y luego envindolas por correo, debera considerar ahorrarse la molestia de escribir las direcciones en los sobres, y usar etiquetas adhesivas en su lugar. Las prcticas etiquetas para impresoras lser en hojas tamao carta (vase la Figura 1) cuestan alrededor de medio cntimo por unidad (15 cntimos por hoja). No slo aceleran el proceso de envo por correo, sino que tambin son tiles para etiquetar cables de equipos electrnicos. El script Perl que veremos en este artculo lee el texto separado por comas y lo

imprime lnea por lnea en las etiquetas. Por supuesto, no tenemos por qu restringirnos a las direcciones. Le atrae la idea de etiquetar el lo de cables que tiene debajo de su escritorio para ayudar al saturado administrador de red a encontrar el cable de alimentacin del router en un par de segundos la prxima vez que algo vaya mal?

Tamaos Preconfigurados
OpenOffice Writer ya soporta formatos de etiquetas de una gran variedad de proveedores, y en el men Nuevo | Etiquetas (vase la Figura 2), podemos crear documentos de tipo tabla para que coincidan. En el cuadro de dilogo de la Figura 3 slo tenemos que introducir el fabricante y el cdigo de producto para las etiquetas las dimensiones estn garantizadas. Despus de crear estos documentos, slo tenemos que aadir el cuerpo de texto y pulsar el botn Imprimir, que es sin duda algo ms fcil que escribir nuestro propio programa de posicionamiento de impresin. Debido a que OpenOffice guarda sus documentos en formato abierto ODF, podemos extraer los datos de la tabla desde un archivo CSV con un script Perl antes de inyectarlos en el documento.

Dentro del Archivo .odt


Antes de que nuestra lista de direcciones se pueda agregar a la tabla de etiquetas necesitamos crear una plantilla de OpenOffice y teclear un par de cadenas de prueba (vase la Figura 4). Como revela el comando unzip de la Figura 5, el documento resultante, guardado como tem-

42

Nmero 78

WWW.LINUX- MAGAZINE.ES

Perl: Etiquetas OpenOffice DESARROLLO

plate.odt, consta de un archivo ZIP con los archivos XML, el ms interesante de los cuales, content.xml, es el contenido del texto del documento con marcas XML. Al llamar al script del Listado 1 tecleando oo-dumper template.odt, se revela entonces el contenido del documento y las estructuras de marcado para las cadenas introducidas previamente por el usuario en los elementos de la tabla. El script obtiene el mdulo OpenOffice::OODoc de CPAN y llama a su constructor ooDocument() con el nombre del archivo a investigar. La lnea 18 define content como el member del documento. En otras palabras, estamos interesados en el contenido del documento, no en las cabeceras externas, pies de pgina, definiciones de estilo reutilizables o metadatos.

Explorando el XML
El mtodo selectElements lanza una consulta XPath que revela todos los elementos XML dentro de la etiqueta officce:body, es decir, el documento de texto en s. Los documentos contienen un nico cuerpo, sin embargo, OpenOffice::OODoc insiste en que el lado izquierdo de la asignacin en la lnea 21 sugiere un contexto de lista, lo que explica el parntesis alrededor de $element. El valor de retorno es una referencia a un elemento especfico OpenOffice::OODoc::Element, que entiende tambin los mtodos de ejecucin del parser XML, XML::Twig, por herencia. Este estrafalario mdulo XML, que ya fue revisado en un artculo anterior de esta seccin de Perl [3], proporciona el

mtodo _dump(), lo que genera el formato de texto del sub-rbol XML y lo devuelve como una cadena. En la Figura 6, la etiqueta office:text bajo office:body contiene un par de declaraciones sequence seguidas por texto tipo text:p. Esta lnea es una fila de una tabla con tres Figura 2: La entrada Etiquetas en OpenOffice Writer nos lleva al columnas, para maravilloso mundo de los formatos para etiquetas. cuyos elementos ces todas las etiquetas e inyecta los datos draw:frame dibuja los marcos. Estos marde texto en ellas. cos, a su vez, contienen elementos Para abrir la plantilla .odt, el script usa draw:text-box con elementos text:p en el constructor ooDocument() del archivo donde reside el texto de prueba (test1, ready.odt que se cre anteriormente en la test2, etc.). lnea 31 al copiar template.odt con la funUna consulta XPath como cin cp del mdulo Sysadm::Install. //office:body/office:text/text:p La versin disponible actualmente de OpenOffice::OODoc contiene un error recupera todas las lneas de la tabla (que que hace que se procesen los documena su vez contienen los marcos de la tos codificados en UTF8 incorrectamente columna), mientras que los elementos de si contienen caracteres no ASCII. La la tabla (tres por fila) se almacenan de configuracin forma relativa a stos ms abajo:
local_encoding => .../draw:frame/U draw:text-box/text:p

de la lnea 36 proporciona una solucin temporal, pero el valor debera ser utf8.

El script del Listado 2 utiliza la primera consulta XPath para aadir tantas lneas a la tabla como sea necesario para los datos de direcciones que se desean imprimir. La segunda consulta examina enton-

Aadir los Datos de Direcciones


Los datos en bruto deben almacenarse en un archivo address-book.csv (vase la

Figura 1: Etiquetas para impresora laser: 30 por hoja, 4.200 por caja.

Figura 3: Adems del fabricante de las etiquetas, tambin podemos seleccionar un producto especfico.

WWW.LINUX- MAGAZINE.ES

Nmero 78

43

DESARROLLO Perl: Etiquetas OpenOffice

Figura 7), donde el script label-writer puede recogerlos lnea por lnea con la funcin getline() del mdulo Text::CSV_XS de CPAN. La funcin addresses_scan abre el archivo con el pragma :encoding(utf8) para permitir que Perl analice los caracteres codificados en UTF-8 correctamente en el archivo y fije la bandera UTF-8 para ellos en sus estructuras de datos. En cada iteracin del bucle, la variable $row apunta a una matriz cuyos elementos representan las entradas de lneas

separadas por comas del archivo CSV. Para dejar espacio suficiente en el lado izquierdo de la etiqueta, donde ir ms tarde la entrada de texto, el comando de reemplazo dentro del bucle for a partir de la lnea 99 inserta un espacio en blanco delante de cada lnea de la etiqueta. La lnea 104 concatena las lneas de la direccin para crear una cadena con saltos de lnea y la empuja hasta el final de la matriz @addresses, que es pasada por la funcin de nuevo al programa principal tras completar su trabajo.

No Quiero Desperdiciar Etiquetas!


Para evitar el desperdicio de etiquetas, el script siempre llena por completo una pgina tamao carta si es necesario, mediante la repeticin de las direcciones en el archivo CSV. Si la base de datos de direcciones tiene ms de 30 entradas, el Listado 2 ha de aadir pginas adicionales al final del documento. En este caso tambin se llenar cualquier espacio sobrante en la pgina con datos repetidos.

Listado 1: oo-dumper
01 #!/usr/local/bin/perl -w 02 ############################# 03 # oo-dumper - Dump an 04 # OpenOffice document 05 # Mike Schilli, 2011 06 # (m@perlmeister.com) 07 ############################# 08 use strict; 09 use OpenOffice::OODoc; 10 11 (my $file) = @ARGV; 12 13 die usage: $0 file 14 unless defined $file; 15 16 my $doc = ooDocument( 17 file => $file, 18 member => content, 19 ); 20 21 (my $element) = 22 $doc->selectElements( 23 //office:body); 24 25 print $element->_dump();

Listado 2: label-writer
001 #!/usr/local/bin/perl -w 002 ############################# 003 # label-writer - Use 004 # OpenOffice to write 005 # address labels 006 # Mike Schilli, 2011 007 # (m@perlmeister.com) 008 ############################# 009 use strict; 010 use OpenOffice::OODoc; 011 use Sysadm::Install 012 qw( :all ); 013 use Text::CSV_XS; 014 use POSIX qw(ceil); 015 016 my $template = 017 template.odt; 018 my $file = ready.odt; 019 my $addr_book = 020 address-book.csv; 021 my $labels_per_page = 30; 022 023 my @addresses = 024 addresses_scan($addr_book); 025 026 my $addtl_pages = ceil( 027 scalar @addresses / 028 $labels_per_page) - 1; 029 030 # Put template in place 031 cp $template, $file; 032 033 my $doc = ooDocument( 034 file => $file, 035 type => content, 036 local_encoding => , 037 ); 038 039 # Extend document as 040 # necessary 041 my @rows = 042 $doc->selectElements( 043 //office:body/ . 044 office:text/text:p 045 ); 046 047 for (1 .. $addtl_pages) { 048 for my $row (@rows) { 049 $doc->replicateElement( 050 $row, body); 051 } 052 } 053 054 # All labels, including new ones 055 my @labels = 056 $doc->selectElements( 057 //office:body/ . 058 office:text/text:p/ . 059 draw:frame/ . 060 draw:text-box/text:p 061 ); 062 063 my $addr_idx = 0; 064 065 for my $label (@labels) { 066 $doc->setStyle($label, 067 P1); 068 $doc->setText($label, 069 $addresses[$addr_idx]); 070 $addr_idx++; 071 $addr_idx = 0 072 if $addr_idx > 073 $#addresses; 074 } 075 076 $doc->save(); 077 078 ############################# 079 sub addresses_scan { 080 ############################# 081 my ($addr_book) = @_; 082 083 my @addresses = (); 084 085 open(my $fh, 086 <:encoding(utf8), 087 $addr_book) 088 or die $addr_book: $!; 089 090 my $csv = Text::CSV_XS->new( 091 { binary => 1 }) 092 or die Cannot use CSV: 093 . Text::CSV->error_diag(); 094 095 while (my $row = 096 $csv->getline($fh)) { 097 unshift @$row, ; 098 099 for (@$row) { 100 s/^/ /; 101 } 102 103 push @addresses, 104 join(\n, @$row); 105 } 106 close $fh; 107 108 return @addresses; 109 }

44

Nmero 78

WWW.LINUX- MAGAZINE.ES

Figura 4: El usuario escribe los textos de muestra en los campos de texto del documento OpenOffice.

Figura 5: Una llamada a unzip revela los archivos XML contenidos en el documento de OpenOffice.

La lnea 21 refiere al nmero predefinido de etiquetas por pgina, y la lnea 26 calcula el nmero necesario de pginas del documento de etiquetas mediante la factorizacin del tamao de la base de datos de direcciones. La funcin ceil() del mdulo POSIX redondea hasta el siguiente nmero entero en caso de fracciones. El nmero $addtl_pages (pginas adicionales) es entonces uno menos debido a que el documento de plantilla creado por el usuario ya dispone de la primera pgina. Todas las filas de la tabla en la pgina de prueba se alinean en la matriz @rows despus de la primera consulta de XPath en la lnea 42, y por cada pgina adicional a crear, el bucle for de las lneas 47 a 52 itera en estas entradas de fila duplicndolas con replicateElement() y utiliza el parmetro body para indicar a la funcin que aada duplicados al final del cuerpo del documento. Las lneas de nueva creacin son copias exactas de las lneas de la primera pgina, es decir, todava contienen los datos de prueba o estn vacos. La segunda consulta XPath en la lnea 56 recupera todos los elementos de la tabla (tres por lnea, incluyendo todos los elementos de las pginas de nueva creacin) del documento y los almacena en la matriz @labels. El bucle for de la lnea 65 pasa entonces a travs de ellos y les asigna el estilo P1. El volcado de la Figura 6 muestra que esto aplica el tipo de letra Bitstream Vera Sans al texto. La

DESARROLLO Perl: Etiquetas OpenOffice

slo se haban hecho en la memoria voltil hasta ahora, en el disco. Cuando el usuario abre el archivo en OpenOffice (hemos probado esto con la versin 3.2), el documento se parece al de la Figura 8. Lo nico que necesitamos hacer ahora es insertar una pgina con etiquetas adhesivas en la impresora y seleccionar Imprimir en OpenFigura 6: El mtodo _dump() muestra cmo se anida el documento Office Writer. Para XML. evitar el desperdicio de etiquetas, tiene sentido imprimir una pgina de prueba en una hoja normal de papel y contrastarla a la Figura 7: Datos de direcciones en formato CSV. luz con la hoja de etiquetas para comsiguiente llamada a setText() recoge el probar la alineacin. Para saber si la hoja siguiente registro del archivo de direcciode etiquetas tiene que estar boca arriba o nes y guarda la cadena de texto corresboca abajo en la impresora a la hora de pondiente en el elemento de la tabla que imprimir las etiquetas, y al mismo tiempo se est procesando. descubrir la direccin en la que la impreEl bucle incrementa de forma continua sora carga el papel, ponemos una marca la variable ndice$addr_idx a la matriz de de lpiz en una esquina antes de impridirecciones, empezando desde cero, y se mir el archivo. A continuacin miramos pone a cero de nuevo cuando llega al la posicin de la marca en el resultado final de la base de datos de direcciones final, y hacemos las complejas transforpara reiniciar con la primera direccin. maciones geomtricas en la cabeza para lograr el objetivo con xito. Insercin Correcta Para instalar los scripts necesitamos los El mtodo save() guarda a continuacin mdulos OpenOffice::OODoc, los cambios en el archivo ready.odt, que Sysadm::Install y Text::CSV_XS. Este ltimo es una versin optimizada en velocidad del veterano Text::CSV. Una shell de CPAN se encargar de la instalacin de estos mdulos en caso de no estar disponibles en su distribucin. Seguidamente abrimos la aplicacin OpenOffice Writer y seleccionamos el formato de etiqueta que necesitamos en el cuadro de diFigura 8: Despus de ejecutar el script, el archivo ready.odt de logo Etiquetas. Es necesaOpenOffice contiene todas las direcciones insertadas. rio modificar el valor esta-

Figura 9: Las etiquetas ya impresas.

blecido de 30 etiquetas por lnea, en la lnea 21 del Listado 2, para que coincida con su formato de etiqueta. Si algo sale mal, es una buena idea analizar el archivo ODF con oo-dumper y ajustar cualquier desviacin del formato creando las consultas XPath correspondientes. Despus de llenar un par de campos de prueba, guardamos los resultados como template.odt. El script label-writer debera analizar entonces el archivo de direcciones address-book.csv codificado en UTF-8 y crear la salida read.odt, que entonces enviamos a la impresora. Toda una variedad de otras aplicaciones vienen a la mente con este script: etiquetar cables en los centros de datos o codificar los equipos para la gestin de activos. O, podramos calarnos la visera de contable, arremangarnos, y colocar una etiqueta a todos los libros de nuestra coleccin, de manera que sepamos a qu estante pertenecen, una vez hayamos terI minado de leerlos [5].

RECURSOS
[1] Listados de este artculo: http:// www.linux-magazine.es/Magazine/ Downloads/78 [2] Una sencilla manera de hacer etiquetas en OpenOffice Writer por Solveig Haugland, http:// openoffice.blogs.com/openoffice/ 2007/06/a-simple-way-to.html [3] Perl: XML Parsers por Michael Schilli, Linux Magazine Internacional, Septiembre 2005, http://www. linux-magazine.com/Issues/2005/ 58/SPOILED-FOR-CHOICE [4] The Perl OpenDocument Connector, por Jean-Marie Gouarn, The Perl Review, http://www. theperlreview.com/SamplePages/ ThePerlReview-v3i1.p18.pdf [5] Perl: OpenOffice Access por Michael Schilli, Linux Magazine Internacional, Noviembre 2004, pag. 72.

46

Nmero 78

WWW.LINUX- MAGAZINE.ES

La Columna de Charly ADMINISTRACIN

El da a da del Administrador de Sistemas: dig

Cavando
POR CHARLY KHNAST

Ale ksa ndr Kur gan ov, 123 RF

Muchos administradores confan en herramientas Linux cuyo destino se encuentra ya sellado, pero las fuerzas externas pueden ayudarlos a abandonar los viejos hbitos.

a mayora de los administradores se habrn dado cuenta de que los das de ifconfig estn contados; despus de todo, el comando ip es mucho ms potente y nos ahorra pulsaciones de teclado. Soy consciente de ello tambin, pero sigo usando la vieja herramienta. Lo mismo me sucede cuando se trata de mi antigua amiga nslookup. La heredera al trono, dig, es una herramienta de diagnstico para los problemas de los servidores de nombre. A pesar de ello, la utilidad dig [1] an compite con su antecesora. Sin embargo, debido a la fuerza de los hechos, las cosas estn comenzando a cambiar: la extensin ms compleja de protocolo de la historia del DNS (Domain Name System) se encuentra actualmente en pleno cambio. Me refiero a DNSSEC.

Estas extensiones de seguridad permiten el firmado de la informacin de las zonas y podran ayudar a acabar con las suplantaciones de DNS. DNSSEC [2] crea una cadena de confianza que comienza en la zona raz y se extiende por los dominios genricos (.com, .net, etc) y de pases (.fr, .de, etc), y contina hacia abajo por la estructura jerrquica del DNS. La zona raz, que viene representada por un punto (.) en la nomenclatura DNS, aadi las firmas necesarias a mediados de 2010. En el momento de escribir este articulo, la zona .es an no se ha unido y no hay nign indicativo de cuando la har.

DNSKEY. Si deseamos obtener la clave pblica de la zona raz y escribirla en el fichero root.key, hay que teclear el siguiente comando:
dig DNSKEY . +dnssec >U ./root.key

Armado con esta informacin, puedo trazar la cadena completa de confianza hasta la zona raz usando la herramienta drill, del paquete ldns-utils [3]. En el siguiente ejemplo se muestra el funcionamiento con una web sueca:
drill -D -S -k ./root.keyU www.dnssec.se

Cavando

De modo que si quiero averiguar si un dominio especfico est firmado, nslookup no podr ayudarme, ya que no soporta DNSSEC. Pero dig s, as que que podemos introducir:
dig NS ns1.nic.fr +dnssec

La Figura 1 presenta la cadena de confianza en un grfico realizado con caracteres ASCII. Mi conclusin es que a veces hace falta que nos presionen desde fuera para dejar los viejos hbitos. nslookup, descansa en paz. I

RECURSOS
La salida devuelve la direccin IP correspondiente, tambin muestra los nuevos registros RRSIG, que contienen los datos de la firma, gracias a +dnssec. Las claves pblicas para la validacin se encuentran almacenadas directamente en la zona. Para ello hace falta un registro
[1] Pginas man de dig: http://linux.die. net/man/1/dig [2] DNSSEC: http://www.dnssec.net/ [3] ldns: http://www.nlnetlabs.nl/ projects/ldns

Figura 1: Charly usa Drill para ver si la cadena de confianza del DNS sueco ha perdido algn eslabn.

EL AUTOR
Charly Khnast es Gerente de Sistemas Unix en el centro de datos de Moers, Alemania, cerca del conocido Rhin. Entre sus labores se incluye la seguridad del cortafuegos, la disponibilidad y el cuidado de la DMZ (zona desmilitarizada). Divide su tiempo libre entre el calor, la humedad y oriente, donde se divierte cocinando, visitando acuarios y aprendiendo japons respectivamente.

WWW.LINUX-MAGAZINE.ES

Nmero 78

47

ADMINISTRACIN Inseguridades: Hackeando JTAG

S el dueo de tus cosas!

Jailbreaking
De quin es este aparato? El hecho de que hayamos comprado una cosa no nos legitima para mirar en su interior. Pero en Internet hay muchsimos recursos para los jailbreakers. POR KURT SEIFRIED
ntes de nada me gustara compartir una apreciacin personal: los Linux embebidos, por norma general, me preocupan bastante. La mayora de los sistemas Linux embebidos no se preocupan demasiado por la seguridad. Sus creadores suelen encargarse ms de que funcionen y no tanto de que sean seguros. Para empeorar las cosas, muchos fabricantes tienden a abandonar sus productos, dejando al cliente sin actualizaciones de seguridad, especialmente con los dispositivos de clientes domsticos.

fallo que permite activarlos de manera remota, dejando que un intruso remoto vea lo que se est escaneando. Qu hacemos entonces? No queremos comprar un router inalmbrico o un mvil y que el fabricante deje de mantenerlo, o lo haga a los 6 12 meses. O qu pasa si compramos una consola (por ejemplo una PlayStation) y la queremos usar para otra cosa que no sea jugar? Bueno, lo que se va a explicar en este artculo es cmo cargar firmware personalizado en estos aparatos.

ms. Hay marcas, como Sony, que estn convencidas de que el cliente no tiene ningn derecho a hacer lo que quiera con el hardware que ha comprado. La PlayStation soportaba Linux inicialmente cuando sali al mercado en el 2000, y sigui soportndolo durante casi una dcada. Sin embargo, en 2010 Sony decidi dejar de dar soporte para Linux en la PlayStation, e incluso se esforz bastante para que nadie lo pudiese usar. Entonces, qu pasa si queremos convertir nuestros sistemas PlayStation en mquinas de clculo, como hicieron las Fuerzas Areas de EEUU? [3]

Jailbreaking
Los fabricantes bloquean cada vez ms sus dispositivos en efecto, metiendo al usuario en una jaula con importantes restricciones acerca de lo que pueden hacer o dejar de hacer. El

Por Qu es tan Importante?


En el pasado, los dispositivos embebidos no suponan un problema de seguridad, porque rara vez se conectaban a una red. La nica manera de hacer algn chanchullo con ellos era fsicamente. Pero ahora todo est en red: la impresora, el escner, el termostato y casi cualquier cosa que lleve un procesador, o sea, casi todo. Si un atacante consigue acceso a uno de estos dispositivos, podra realizar ataques manin-the-middle contra cualesquiera otros dispositivos conectados a la misma red.

Cargando Firmware Personalizado


Muchos aparatos permiten la carga de actualizaciones, lo que viene a significar que podemos instalar en ellos firmware personalizado. Normalmente, si hay un firmware alternativo para ellos de software libre, ste suele estar mejor soportado, durante ms tiempo e incluir ms funcionalidades. El ejemplo perfecto son los routers inalmbricos domsticos, que suelen venir capados pero que podemos convertir en servidores de VPN, servidores web, o incluso servidores SIP simplemente cargndoles un firmware personalizado. Ya hemos hablado sobre este tema en un artculo anterior [2]. En menos de 15 minutos, podemos convertir un viejo router inalmbrico en algo que nos pueda servir fielmente durante unos pocos aos ms. Pero no todos los fabricantes nos lo van a poner tan fcil. Quiz sean los telfonos mviles los peores en este aspecto. Los fabricantes de telfonos mviles no quieren ni que nos acerquemos al firmware, eso a pesar de que los suelen mantener slo durante unos meses o un ao a lo

Ejemplo de Seguridad Embebida


Hay un ejemplo que destaca sobre los dems a la hora de demostrar por qu los dispositivos embebidos suponen una gran amenaza: las contraseas predeterminadas. La Default Password List [1] es una lista de contraseas predeterminadas, actualizada por ltima vez a finales de 2010, que contiene casi 1300 contraseas, la mayora de ellas para dispositivos de hardware (Figura 1). Empresas como 3COM, HP, IBM o Cisco aparecen muchas veces en la lista. Pero continuamente surgen nuevos riesgos. Por ejemplo, hay una serie de escneres con capacidad de conexin a la red que por lo visto tienen un

48

Nmero 78

WWW.LINUX- MAGAZINE.ES

Inseguridades: Hackeando JTAG ADMINISTRACIN

arte del Jailbreaking consiste en liberar un dispositivo para eliminar dichas restricciones impuestas por su software. Nota importante: la legalidad del jailbreaking vara considerablemente en funcin del pas en que se resida y del dispositivo de que se trate. Por ejemplo, en los EEUU, la oficina de copyright americana, la U.S. Copyright Office, dictamin que el jailbreaking no est prohibido sobre telfonos mviles. Sin embargo, tambin en los EEUU, segn nuestras fuentes, s que sigue estando prohibido hacer jailbreaking en una consola. Su argumento es que el jailbreaking sobre las consolas promueve la violacin de los derechos de copyright sobre el software. Supongamos que el jailbreaking es legal en nuestro pas, y que tenemos suerte y encontramos un mtodo por software para acceder al aparato. Lo bueno es que la mayora de los fabricantes son psimos en cuanto a seguridad. El jailbreaking por software suele aprovechar problemas como buffer overflows al cargar partidas guardadas, cifrados dbiles en la firmas de actualizaciones o problemas de renderizacin de PDFs. Algunos grupos de software para jailbreaking generan software muy profesional y fcil de usar que permite tomar el control del dispositivo especialmente de iPhones y, cada vez ms, telfonos con Android. Pero, y si el fabricante ha bloqueado el dispositivo de manera que no se pueda hacer jailbreaking? Qu opciones tenemos?

Sobre la Licencia GPLv3


Todos estos problemas que surgen a la hora de intentar acceder a uno de estos aparatos reafirman la necesidad de la existencia de la GPLv3. Cada vez son ms los dispositivos embebidos que llevan Linux en su interior, lo cual es estupendo, porque podemos coger su cdigo fuente y personalizarlo a nuestro gusto, verdad? Pues no. Muchos fabricantes de hardware evitan la GPL usando como estratagema los DRM (Digital Rights Management), impidiendo que los usuarios carguen software en sus propios dispositivos. Para empeorar las cosas, la US DMCA (Digital Millennium copyright act) prohbe saltarse estas medidas DRM mediante las imposicin de multas y penas de crcel. La licencia GPLv3 en su seccin 3 soluciona este problema permitiendo crear software DRM bajo licencia GPLv3 pero con la condicin de que el desarrollador renuncie a todos los derechos que prohban circunvenir el DRM (dicho de otro modo, no se puede imponer la DMCA). En un primer momento puede parecer muy estricto, pero recordemos que virtualmente todo lo que est protegido por DRM tambin lo est por copyright o por patentes; el DRM no es ms que un intento de aplicar una imposicin tecnolgica en un problema social.

JTAG al Rescate
JTAG (Joint Test Action Group) existe como consecuencia directa de la proliferacin de los dispositivos embebidos. Bsicamente, lo que JTAG hace es definir un mtodo de prueba para placas de circuito impresas (o sea, todo lo que use electricidad, desde una tostadora a un router). Es posible incidir sobre unas instrucciones concretas (para depurar un fallo persistente, por ejemplo), introducir puntos de ruptura o, con suerte, cargar firmware en el dispositivo. Hay varios dispositivos que, a pesar de esforzarse por

impedir que se les haga jailbreaking por software, tienen implementaciones JTAG vulnerables que permiten la carga de firmware personalizado. El arte del JTAG hacking, sin embargo, no es apto para nefitos. Se necesitan ciertos conocimientos sobre hardware. Aunque ya han pasado los Figura 1: La lista de contraseas predeterminadas contiene las condas en que la gente traseas de ms de 1300 dispositivos. se tena que hacer su propio hardware con lectura de JTAG, como tope para la puerta, convertirla en actualmente se pueden adquirir dispositiuna mquina Linux, o pintarla de rosa y vos hardware USB que permiten comunillamarla arte moderno, nadie tiene por carse con los sistemas que incorporen qu decirme lo contrario. Le pido al lector puertos JTAG. Lo bueno de JTAG es que, que cuando vaya a comprar el siguiente con suerte, aunque no consigamos cargar aparato se asegure de que est comprando firmware personalizado, an podremos algo que verdaderamente poseer y podr lograr acceder al bus principal para modicontrolar. I ficar la memoria del sistema en ejecucin. De este modo se puede controlar el RECURSOS comportamiento del aparato e incluso [1] Default Password List: http://www. modificar los sistemas de seguridad que phenoelit-us.org/dpl/dpl.html impiden al usuario cargar firmware per[2] Inseguridades: Punto de Acceso, sonalizado. Para saber ms sobre JTAG Linux Magazine Edicin en Castehacking pueden visitar el blog HACK A llano, nmero 70, pg. 10. DAY [4]. Para saber cules son los pins [3] Air Force Playstation SupercompuJTAG de un dispositivo concreto, se ter: http://www.informationweek. puede consultar el buscador del sitio com/news/government/ JTAG Finder [5]. enterprise-architecture/221900487

Conclusin
Creo firmemente en el principio de primera venta, es decir, si compras algo, ya es tuyo. Si quiero usar mi PlayStation 3

[4] HACK A DAY: http://hackaday.com/ tag/jtag/ [5] JTAG Finder: http://www.c3a.de/wiki/ index.php/JTAG_Finder

WWW.LINUX- MAGAZINE.ES

Nmero 78

49

ADMINISTRACIN Monitorizacin ARP

Seguramente tenga el lector un cortafuegos, pero qu pasa si el intruso acta desde dentro? Estas herramientas de monitorizacin de ARPs son capaces de detectar el ms mnimo cambio y alertarnos de un posible ataque local. POR CHRIS BINNIE

Andrea Danti, 123Rf.com

Utilizamos herramientas de monitorizacin de ARP para buscar intrusos en nuestra red local

Estrecha Vigilancia

quipos de desarrollo de todo el mundo trabajan duro para que el software de nuestros sistemas est siempre lo ms actualizado posible. Adems, los cortafuegos impiden que los atacantes accedan a nuestros sistemas y redes desde Internet. Pero qu pasa si el ataque se produce desde dentro de la red local? Uno de los requisitos de casi cualquier red local es la asignacin de direcciones IP. Con el fin de comunicarse con la red de una manera funcional (que no sea, por ejemplo, recolectar datos desde una conexin inalmbrica), los potenciales intrusos deben asignarse primero una direccin IP dentro de la red. Esto es comn tanto a redes cableadas como a inalmbricas. Dicha IP podra ser una direccin libre o incluso una que ya est siendo usada por otro dispositivo. Si el atacante se asigna una IP en uso, suele ser porque planea hacer algn tipo de espionaje o una redireccin de servicios. Bajo ciertas circunstancias, podra tratar de hacer creer al resto de equipos

que l es alguna mquina de la red. Dicho de otro modo, el atacante clona la direccin MAC que en teora es nica para cada tarjeta de red y que siempre es la misma. Aquellos ataques en los que el intruso se asocia una direccin IP existente con el fin de filtrar y suplantar las Arpwatch comunicaciones se denomina comnmente MITM o Man-In-The-Middle, porArpwatch es una herramienta sencilla que el atacante se sita entre las mquique vigila las direcciones IP de la red y nas que intervienen en la comunicacin analiza cambios sospechosos. ARP consa espiar. Redirigir un servicio puede ser truye una tabla que contiene las correstan sencillo como alterar una entrada de pondencias entre los dispositivos de la direccin MAC en una mquina para red y las direcciones IP que usan, prehacerle creer que su servidor de nombres es otro; cuando la mquina engaada quiera acceder al sitio web de su entidad bancaria, resolver su direccin IP usando un servidor de nombres mali- Figura 1: El log de Arpwatch proporciona detalles simples sobre cada cioso y acabar, evento.

por tanto, visitando un sitio falso y proporcionando sus datos personales al atacante. Lo ideal sera que no slo supiramos cundo ha cambiado la direccin MAC asociada a una direccin IP, sino adems saber cundo se ha asignado una nueva IP. En este artculo presentamos varias herramientas tiles con las que, mediante el uso del protocolo ARP (Address Resolution Protocol), podremos conocer los cambios producidos sobre las asignaciones de la red local.

50

Nmero 78

WWW.LINUX- MAGAZINE.ES

guntando a cada dispositivo de la red Quin usa tal direccin IP? hasta que alguno responda Yo tengo esa direccin IP. Su simplicidad hace que sea fcil de depurar, pero tambin propenso a abusos, como por ejemplo los ataques MITM mencionados anteriormente. Arpwatch monitoriza las respuestas ARP en busca de cambios y enva un email al administrador en caso de que ocurra algo sospechoso. Adems de proporcionar una forma sencilla de auditar el nmero de direcciones IP en uso en una red, es un sistema de deteccin temprana que se puede configurar para que escuche en varias interfaces a la vez (tanto de cable como inalmbricas). Cabe aclarar que en algunas redes se utiliza el falseamiento de ARP para redirigir legtimamente el trfico con algn propsito concreto. Imaginemos por ejemplo un cibercaf en el que, hasta que el sitio nos da paso, se redirige a todo el mundo a una pgina con la poltica de uso o las condiciones del local. Mediante el seguimiento de los dispositivos de la red con un archivo de logs por interfaz, donde guarda la informacin relativa a cundo y qu direccin IP se asign a cada direccin MAC, Arpwatch hace fcilmente accesible una informacin que de otro modo pasara prcticamente desapercibida. Los logs de Arpwatch guardan las direcciones MAC, las direcciones IP asociadas, las marcas de tiempo de las ltimas actividades, los nombres de dispositivo (alias o nombres DNS), y las interfaces desde las que se observ dicha actividad. En la Figura 1 se muestran en detalle los logs generados por Arpwatch. Las notificaciones que Arpwatch enva por email pueden alertar al usuario casi al instante. Los informes estn bastante limpios y se podran, por tanto, formatear como mensajes SMS (mensajes de texto) si fuese necesario. En la Figura 2 se puede apreciar la brevedad de dichos emails de notificacin. El primer segmento de una direccin MAC se suele corresponder (aunque no siempre) con la identificacin del fabricante o el distribuidor de la tarjeta de red, que se pueden consultar fcilmente mediante bases de datos en lnea. Tambin existe una asignacin formal de estos identificadores en la IEEE [1], pero no es tan prctico. A travs de esta tabla se facilita la identificacin de los dispositivos desconocidos, minimizando el nmero de falsas alarmas. Una vez sepa la direccin MAC del atacante y posiblemente si se trata de un porttil o smartphone, se pueden utilizar pistas de los datos del proveedor (siempre y cuando no hayan sido alterados) para trazar la actividas del dispositivo en la LAN. Incluso si cambia de direccin MAC, al menos se nos alertar de este hecho.

Arping
La herramienta ms tpica a la hora de comprobar direcciones ARP duplicadas en la red local es Arping. Al igual que Ping, que enva peticiones y queda a la espera de que se

Figura 2: Los hechos: notificacin de Arpwatch por correo electrnico.

ADMINISTRACIN Monitorizacin ARP

preguntarse si existe alguna otra herramienta capaz de ofrecer un mtodo ms sofisticado y automatiFigura 3: Si las respuestas son idnticas, no hay duplicidades en la zado para combatir red. este tipo de ataques localizados. La herramienta se llama ArpON, que sigRendimiento de ArpON nifica Arp handler InspectiON. ArpON ha sido diseado con el objeMientras que Arpwatch slo informa tivo de ser eficiente, de ah que no sea de los problemas detectados, relegando demasiado opulento en lo que a funal usuario las acciones a llevar a cabo, cionalidades se refiere. Existe una ArpON ha sido diseado para automatiherramienta alternativa, llamada S-Arp (ARP Seguro), que aade una capa de zar la resolucin de los problemas cifrado para proporcionar una mayor siguiendo una serie de polticas predefiseguridad, pero que ralentiza el protonidas. En el sitio web de ArpON [2] se colo ARP al incrementar las necesidapueden conocer todos los detalles del des de procesamiento e inyectar datos paquete, incluidos varios diagramas, extra en el flujo de datos. muy tiles para los principiantes. Adems de sus capacidades de moniproduzca una respuesta, Arping enva torizacin bsica de ARP, ArpON cuenta sus peticiones a la red local (o dominio con ms municin en su arsenal. Por de difusin). Algunas implementaciones ejemplo, en las sesiones de ArpON tamde Arping, adems de simplemente prebin se pueden detectar automticaguntar por la direccin MAC de una mente y resolver interceptaciones de direccin IP determinada, pregunta tamsesiones o el secuestro de conversaciobin a la inversa, es decir, qu direccin nes web o de correo electrnico. IP tiene una direccin MAC dada. ArpON mantiene la pizarra siempre Esa funcionalidad extra que posee Arp bien limpia, creando una cach fresca de de comprobar a la inversa es de vital entradas ARP desde el principio, elimiimportancia en ciertos escenarios de atanando as la posibilidad de corromper la que. En el siguiente ejemplo se le pide a cach de ARP con informacin falsa o Arping que busque duplicidades relatiengaosa (a este tipo de ataque se le vas a una direccin IP: conoce como envenenamiento de la cach ARP). A diferencia de otras herraarping -d 97.98.99.100 -I eth1 mientas de monitorizacin de ARP, ArpON impide activamente que se actuaCombinada con las alertas emitidas por licen nuevas entradas sin una entrada de Arpwatch, para informarnos de los camconfianza en su cach, ignorando esenbios ocurridos en la red, esta herracialmente todo lo dems y evitando as el mienta nos dice si hay dispositivos que ataque incluso antes de que comience. comparten una misma direccin IP (que Hay tres niveles de despliegue de pueden derivar en fallos de conexin o ArpON. El despliegue de un nodo de en intentos de ataques MITM). El monitorizacin en un dispositivo puede comando anterior enva cuatro peticioproporcionar proteccin unidireccional, nes a travs de la interfaz de red eth1, mientras que un demonio instalado preguntando Quin tiene esta direcpuede tomar la cach de ARP y contrascin IP? y queda a la espera de respuestar los cambios con efectividad. Para una tas. En la Figura 3 se muestran cuatro proteccin bidireccional hacen falta al respuestas idnticas que indican que menos dos nodos de monitorizacin, slo hay una nica direccin MAC asoposibilitando la interceptacin de trfico ciada a esa direccin IP y que, por tanto, entre ambos nodos, de manera que se no hay duplicidades en la red. pueda descifrar el trfico del ataque y reaccionar en consonancia. Para que ArpON pueda funcionar en modo de proteccin Ahora que ya sabemos cmo detectar distribuida se debe instalar ArpON en ataques ARP y recibir informes, cabe todos los dispositivos de la red. Cabe

aclarar que en este caso quedarn desprotegidos todos los dispositivos que no estn ejecutando ArpON, por lo que este modo de funcionamiento probablemente slo sea adecuado para pequeas redes de dispositivos homogneos, como por ejemplo una pequea red (o subred) de un clster o de servidores de correo. ArpON cuenta con un diseo no-invasivo, tratando de no alterar el protocolo ARP, que fue creado teniendo en mente unas redes de datos muy antiguas y que se podra mejorar para lidiar con los ataques de hoy en da. Independientemente de los problemas inherentes a ARP, ste cuenta con un rendimiento muy alto debido a su simplicidad, rendimiento que no se ve alterado tampoco por ArpON. ArpON es til tambin en redes gestionadas por DHCP, donde los dispositivos obtienen una direccin IP cada vez que acceden a la red. Tambin existe la posibilidad de deshabilitar partes de ArpON para crear un laboratorio de pruebas propio con el que realizar ejercicios interesantes.

Conclusin
ArpON est actualmente disponible para Linux, Mac OS X, FreeBSD, NetBSD y OpenBSD, pero an no ha sido portado a Windows. Existen herramientas parecidas para Windows y otros sistemas operativos. Para Windows, hay un producto llamado WinARP Watch. Para Linux, Unix y BSD tambin est Arpalert. Cada una de estas alternativas vara en cuanto a funcionalidades. Aunque Arpwatch es excelente, ninguna otra herramienta llega al nivel de sofisticacin de ArpON. Conjugadas con los conocimientos de un administrador experimentado, las herramientas de monitorizacin de ARP suponen un medio potentsimo, incluso con la funcin de bloqueo automtico de ataques deshabilitada. Estas herramientas, con el nivel de detalle de sus informes, ofrecen una capa adicional de seguridad y proteccin tanto para redes domsticas como para redes industriales. I

RECURSOS
[1] Relacin entre direcciones MAC y fabricantes: http://standards.ieee. org/develop/regauth/oui/oui.txt [2] ArpON: http://arpon.sourceforge.net

52

Nmero 78

WWW.LINUX- MAGAZINE.ES

Pila Dual IPv4/IPv6 ADMINISTRACIN

Pila dual IPv4/IPv6: Teora y prctica

HILANDO FINO
M

Durante ms de 10 aos, los expertos han estado pronosticando el cambio inevitable a IPv6. NAT y CIDR han mantenido a flote a IPv4 desde entonces, pero todo esto va a cambiar en muy breve. Qu vamos a hacer entonces? POR RALF SPENNEBERG

uchos administradores no tendrn que enfrentarse al problema del cambio a IPv6 durante los prximos dos aos, ya que disponen de suficientes direcciones IPv4 como para garantizar el acceso de sus redes a Internet 4, gracias a la traduccin de direcciones de red. El acceso a Internet 6 no es obligatorio para estos administradores, pues de momento no proporciona ningn servicio crtico imprescindible para sus negocios. Sin embargo, este no es el caso de la mayora de administradores y redes. En algunos casos de uso sera conveniente que los administradores se familiarizasen con IPv6, pero a pesar de esto, debera tenerse claro que una migracin completa de IPv4 a IPv6 va a ser improbable que se produzca en los prximos diez aos. Dicho esto, puede suceder que algunos servicios nuevos slo se encuentren disponibles en Internet 6 en un par de aos, y si los administradores quieren usarlos, no tendrn ms alternativa que migrar sus redes a IPv6. Por qu motivos vamos a querer pasarnos a IPv6? 1.- Su empresa desea ofrecer ms servicios en Internet y necesita direcciones IPv4 adicionales para ello. La solicitud de nuevas direcciones no ha sido hasta ahora ningn problema, pero para RIPE (Redes IP Europeas) en particu-

lar, la situacin podra ser totalmente diferente para finales de ao, ya que para esas fechas se estima que no quede ninguna disponible. Este es el caso actual de la regin asitica (APNIC), donde las direcciones IPv4 slo la suministran los proveedores por un coste elevado hasta que se agoten completamente las reservas algo que ocurrir pronto. En este caso, las empresas no tendrn otra alternativa que utilizar direcciones IPv6. Actualmente no es una solucin muy buena, ya que slo un porcentaje muy bajo de los usuarios que poseen acceso IPv6 pueden acceder a las ofertas de las empresas. 2.- Una empresa trabaja con clientes y socios en Asia. En muchos casos, la empresa asitica dispondr desde hace tiempo de una solucin dual-NAT. Durante muchos aos, algunos proveedores de la regin asitica han asignado slo direcciones IP privadas a sus clientes y han enmascarado estas direcciones. Por otro lado, estos clientes usan routers que convierten las direcciones IP privadas usadas internamente, lo que a menudo causa problemas. Las VPN y VoIP, en particular, son las causantes de la mayora de los problemas de los administradores. Con IPv6, los clientes poseen direcciones globales para cada sistema, con lo que se garantiza una conectividad sin complicaciones. Pero para acceder a los servicios de las empresas, los ordenadores deben poseer una pila dual. Los siste-

WDesigns, 123RF.com

WWW.LINUX- MAGAZINE.ES

Nmero 78

53

ADMINISTRACIN Pila Dual IPv4/IPv6

mas que anteriormente slo posean acceso por medio de IPv4 tambin deben tener asignadas ahora direcciones IPv6.

Simplicidad
Puede que los administradores se estn preguntando as mismos la forma de conseguir direcciones IPv6. Normalmente habr que solicitarlas a los mismos proveedores de direcciones IPv4. Sin embargo, actualmente slo hay unos cuantos que ofrecen acceso IPv6 de forma nativa. Por ahora, se resuelve por medio de tneles: usando IPv4 para crear un tnel a un intermediario de tnel IPv6, que permite el acceso a Internet 6 por medio del tnel. Tambin ofrecen direcciones IPv6 (normalmente en la forma de un prefijo /48) y las enruta por medio del tnel. SixXs [1] y Hurricane Electric [2] proporcionan este servicio a los clientes profesionales. De momento, tras el proceso de registro, ellos le proporcionarn un tnel y algunas direcciones IPv6 de forma gratuita. Luego, introducen estas direcciones en sus servidores whois, permitiendo que las direcciones asignadas puedan ser fcilmente encontradas por terceros. La soluciones utilizadas para configurar los tneles pueden diferir dependiendo de los extremos de las mismas, ya que los clientes pueden tener direcciones IPv4 estticas globales, dinmicas o privadas enmascaradas. En el primero de estos casos, lo nico que hay que hacer en Debian es crear un dispositivo de tnel adicional con la siguiente entrada en el fichero /etc/network/interfaces:

iface ipv6tunnel inet6 v4tunnel endpoint <Direccin_IPv4_U del_Intermediario> local <Direccin_IPv4_local> address <Direccin_IPv6_local> netmask 64 mtu 1480 gateway <Direccin_IPv6_U del_Intermediario> ttl 255

Estas lneas permiten el acceso del sistema a Internet por medio del tnel. Si el intermediario del tnel enruta un prefijo IPv6 por el tnel, el administrador podr utilizar un servicio de aviso de router o DHCPv6 en sus redes. Por otro lado, pueden asignarse direcciones IPv6 estticas. Como los equipos tienen actualmente conectividad IPv4 y IPv6, la solucin se conoce como pila dual.

DS-Lite o NAT64?
A pesar de la escasez de direcciones IPv4, los mtodos DS-Lite (Dual Stack Lite, Pila Dual Lite en espaol) y NAT64 necesitan que el cliente pueda acceder a Internet 4. En ambos casos, el proveedor asigna una direccin IPv6 global para el router y un prefijo para los sistemas que se encuentren ocultos detrs de su cliente. Gracias a esta direccin IPv6 global, tanto el router como los otros sistemas pueden hacer uso de IPv6 para comunicarse con los servidores. Los dos mtodos difieren respecto a la manera de configuracin de los sistemas

del cliente. En el caso de DS-Lite (Figura 1), el proveedor adems tiene que asignarle una direccin IPv4 privada al router del cliente. El propio router usa DHCP para distribuir direcciones IPv4 privadas en el sistema interno. Ahora el sistema posee una direccin IPv6 global y una direccin IPv4 privada, cada una con puertas de enlace por defecto que apuntan al router. Cuando un usuario accede a un sitio web, el sistema realiza primero la resolucin de nombres. Si la respuesta contiene una direccin IPv6, el equipo utilizar su direccin IPv6 global para acceder al servidor. Si la respuesta DNS contiene tanto una direccin IPv4 como una direccin IPv6, los sistemas operativos actuales prefieren IPv6, y de nuevo utilizar este acceso para acceder al servidor. DS-Lite slo entra en juego en el caso de que el servidor slo disponga de una direccin IPv4. El cliente enva un paquete IPv4 con su direccin privada de origen, que inicialmente se encuentra enmascarada por el router que usa su propia direccin privada de origen. Luego el router la encapsula en un paquete IPv6 y utiliza IPv6 para enviarla a un sistema especial en el proveedor que extrae el paquete IPv4 y utiliza NAT64 para convertirla en una direccin IPv4 global. Para ello, el proveedor tiene que suministrar componentes CGN (Carrier Grade NAT). Algunos se refieren a este sistema como AFTR (Address Family Transition

Figura 1: En DS-Lite, el proveedor ahorra las direcciones IPv4 por medio del uso de NAT, traduciendo direcciones IPv4 privadas a direcciones IPv4 globales (NAT44).

54

Nmero 78

WWW.LINUX- MAGAZINE.ES

Pila Dual IPv4/IPv6 ADMINISTRACIN

Router). Un administrador en el lado del proveedor puede implementar AFTR usando Linux y el paquete de software AFTR del Internet Software Consortium [3]. Como el router del lado del cliente ya no posee una direccin IPv4 global, no podr utilizar servicios como DynDNS o el plegado de puertos; ahora funciona con IPv6, pero de una forma muy superior. En el caso de la segunda variante, NAT64, el proveedor usa una solucin diferente para proporcionarle a sus clientes el acceso a Internet 4. Al cliente slo se le asignan direcciones IPv6 globales tanto para su router como para los sistemas que posea tras el router. Lo importante es que estos sistemas slo utilicen el servidor DNS de su proveedor para la resolucin de nombres de tres formas: La resolucin de nombres slo proporciona una direccin IPv6: los clientes usan su direccin IPv6 global para acceder a los servidores. La resolucin de nombres devuelve tanto una direccin IPv4 como una IPv6: el cliente preferir la direccin IPv6 y la usar para acceder al servidor. La resolucin de nombres slo devuelve una direccin IPv4: en este caso interviene el servidor DNS del proveedor, crea una direccin IPv6 adicional y la aade a la respuesta. Para ello, el servidor aade la representacin hexadecimal de la direccin IPv4 a un prefijo IPv6 definido. El administrador del servidor DNS puede utilizar el prefijo reservado 64:FF9B::/96 o un rango libre de su propia reserva de direcciones IPv6. El cliente recibir tanto la direccin IPv4 como la IPv6 en la respuesta del DNS, y preferir la direccin IPv6. El cliente enviar los paquetes correspondientes a la puerta de enlace por defecto del proveedor, donde el router identificar la direccin IPv6 adicio-

nal creada anteriormente evaluando el prefijo. El sistema extraer la direccin IPv4 incluida y realizar tanto NAT como la traduccin de IPv6 a IPv4. Los desarrolladores se refieren a este mtodo como NAT64 (Figura 2), y a la puerta de enlace de la capa de aplicacin DNS como DNS64. Existen varias implementaciones de esto en Linux. Por ejemplo, la ltima versin de BIND ya soporta su uso como servidor DNS64. El componente NAT64 puede ser manejado tanto por la aplicacin del espacio del usuario Tayga [4] como por el componente Ecdysis [5] del kernel. Uno de los problemas del uso de NAT64 es el incremento popular del uso de DNSSEC, que detecta la modificacin y por ello la falsificacin de las respuestas DNS e ignora dichas respuestas.

Para un sistema IPv4, no hay ninguna solucin disponible para acceder a los sistemas que slo posean IPv6. Un proxy con pila dual puede proporcionar una solucin: Los clientes usaran IPv4 para contactar con el proxy y acceder a los sistemas IPv6. Sin embargo, esta tcnica slo soporta los protocolos que permiten el uso de puertas de enlace de la capa de aplicacin, incluyendo DNS, SMTP, HTTP o HTTPS.

El Futuro
Como slo un pequeo porcentaje de los routers DSL actuales soportan IPv6, los proveedores tendrn que reemplazar los dispositivos terminales de los clientes antes de hacer el paso a IPv6 un proceso caro por el que los clientes no estn dispuestos a pagar. Por este motivo, los proveedores retrasarn esta sustitucin tanto como les sea posible, lo que conllevar a que muchos ISP querrn evitar la sobrecarga de administracin de la oferta adicional de sus servicios por medio de IPv6. A pesar del xito del Da IPv6 en junio, en el que numerosos proveedores ofrecieron de forma adicional sus servicios por medio de IPv6 por un da, muchos de los participantes importantes tales como Facebook, Google y YouTube actualmente han cesado sus servicios basados en la pila dual.

NAT-PT
El RFC 2766 defini NAT-PT (NAT/protocol translator) en el 2000; al contrario que NAT64, tambin soporta NAT64, que hace posible no slo para los sistemas IPv6 el acceso arbitrario a servidores IPv4, sino que permite a los sistemas IPv4 acceder de forma arbitraria a los servidores IPv6. Como IPv4 puede incluirse fcilmente en direcciones IPv6 modificadas, NAT64 es mucho ms simple de implementar, aunque el proceso inverso es mucho ms complicado. El espacio de direcciones IPv4 no posee la capacidad necesaria como para incluir direcciones IPv6 dentro de direcciones IPv4 modificadas, impidiendo que DNS64 y NAT64 funcionen de forma independiente el uno del otro, ya que necesitan del intercambio de informacin constante. Aunque existen algunas implementaciones operativas, el RFC 2766 NAT-PT fue modificado en 2007 por razones histricas debido a numerosos problemas (RFC 4966).

Conclusiones
Mientras que los principales proveedores rehsen promocionar el acceso por medio de IPv6, IPv6 no ser del inters de los consumidores. Hasta este cambio, los proveedores de DSL probablemente comenzarn a suministrar a sus clientes direcciones IPv4 privadas de forma similar a lo que ha estado sucediendo en Asia. I

RECURSOS
[1] SixXS: http://www.sixxs.net [2] Hurricane Electric: http://www.he.net [3] AFTR: http://www.isc.org/software/ aftr [4] Tayga: www.litech.org/tayga/ Figura 2: En NAT64, el proveedor modifica una direccin IPv6 para enmascarar el acceso a IPv4. [5] Ecdysis http://ecdysis.viagenie.ca/

WWW.LINUX- MAGAZINE.ES

Nmero 78

55

ADMINISTRACIN Arranque Seguro

Cmo proteger el hardware con IMA y arranque seguro


Sinisa Botas, 123RF.com

CADENA DE CONFIANZA
Las placas base ms completas a veces incorporan chips de computacin de confianza, aunque los usuarios y sistemas operativos rara vez los emplean. El kernel Linux ha conseguido dominar esta tecnologa, y ahora los usuarios de Linux pueden disfrutar de una cadena de confianza completa con TrustedGRUB. POR FALK NEDWAL
na firma digital no es suficiente para garantizar la integridad de un sistema informtico completo. Para tener un entorno realmente seguro debemos poder confiar tanto en el hardware como en los archivos de configuracin y el software, incluyendo aplicaciones, drivers y el propio sistema operativo. Qu componentes intervienen en semejante proceso de verificacin, y cmo podemos conseguir una cadena de confianza completa e infranqueable que ane todos los componentes? La necesidad de proveer un anclaje seguro (o raz) para esta cadena de confianza hizo que varias empresas de informtica, incluidas AMD, Intel, HP, IBM y Microsoft fundasen la TCG (Trusted Computing Group, [1]) en 2003, que actualmente cuenta con ms de 100 miembros. Aunque la TCG se ha diversificado a lo largo del tiempo dando lugar a varias especificaciones de seguridad adicionales, parte de su objetivo original era definir lo que hoy se conoce como TPM (Trusted Platform Module): un chip independiente para el procesamiento

criptogrfico ubicado en la mquina, capaz de gestionar procesos de verificacin de firmas y de anclar una cadena de confianza que garantice la integridad y no manipulacin de la totalidad de los elementos del sistema. El TPM, que se estandariz con la especificacin ISO/IEC 11889, incluye algoritmos criptogrficos, un generador de nmeros aleatorios por hardware y varios mecanismos para la manipulacin segura de claves y certificados digitales (Ver el cuadro titulado Confianza). Durante los ltimos aos, el TPM se ha convertido en un elemento comn en las placas ms completas. En teora, los componentes incluidos en el TPM proporcionan las siguientes funciones: una identidad de plataforma nica memoria de claves segura sellado de datos funciones criptogrficas evaluacin de la integridad del sistema Microsoft era uno de los miembros originales del TCG, y los sistemas Windows Vista y posteriores ofrecen soporte para TPM en forma de autenticacin previa al arranque y cifrado de disco Bitlocker. El

proyecto Trusted Grub [2] proporciona un parche para el cargador de arranque Grub con el que dota a Linux de soporte para TPM.

Cmo Funciona el Arranque Seguro


El arranque seguro comienza cuando se enciende el equipo y se ejecuta el cdigo de la BIOS. El primer paso consiste en una inicializacin bsica del hardware y, en particular, del chip TPM. Con el fin de garantizar que la funcionalidad del TPM se encuentra disponible

Confianza
Para garantizar la confiabilidad del usuario de acuerdo con la especificacin, TMP contiene varios certificados que confirman la validez del proceso de fabricacin. Adems, el chip contiene pares de claves que identifican unvocamente al mdulo y son utilizadas para cifrar y firmar datos. El usuario tambin genera algunas de estas claves. El mdulo adquiere su identidad cuando el usuario genera la primera clave. A este proceso se le conoce como adquisicin de la propiedad.

56

Nmero 78

WWW.LINUX- MAGAZINE.ES

Arranque Seguro ADMINISTRACIN

Listado 1: Extracto de /boot/grub/menu.lst Measurement


01 title Ubuntu-IMA 02 root (hd0,6) 03 checkfile (hd0,6)/boot/grub/grub-check 04 kernel /boot/vmlinuz-2.6.35.4-ima root=/dev/sda7 vga=0x317 ima_tcb=1 05 initrd /boot/initrd.img-2.6.35.4-ima

Integrity

Architecture

en el momento del arranque, el sistema necesita una extensin de la BIOS con el nombre de CRTM (Core Root of Trust for Measurement). CRTM, especificada tambin por la TCG, se encarga de medir los estados del sistema antes del arranque del sistema operativo. La medicin se lleva a cabo hasheando las reas relevantes y guardando los resultados en los registros PCR del TPM (ver el cuadro titulado Platform Configuration Register). En la Figura 1 se ilustra el modo en que el TPM inspecciona por primera vez el cdigo de la BIOS, seguido del cdigo destinado al hardware externo, y por ltimo los datos resultantes de la lectura de la informacin del hardware. Este proceso convierte la configuracin de hardware existente en parte integral de la comprobacin de la integridad. La BIOS busca entonces un dispositivo arrancable. Si detecta un disco duro, entonces lee el primer sector, lo mide y ejecuta el cdigo MBR del mismo. La responsabilidad de CRTM en materia de arranque seguro finaliza en este punto, dando el relevo al cargador de arranque que se encuentra en el MBR para que contine con la cadena de confianza. Ms tarde, el cargador del sistema operativo iniciar el sistema operativo, quien a su vez dispondr los mecanismos necesarios para inspeccionar el cdigo a ejecutar (incluidos los drivers). Debido a que las llamadas al sistema hechas desde el kernel tambin se encargan de iniciar programas, se puede medir cualquier aplicacin que se inicie de este modo. Cuando se inicia el kernel, el cargador de arranque le pasa la cadena de confianza. Las funciones para la integracin del soporte de TPM llevan en el kernel Linux desde 2005. El correspondiente parche del kernel para IMA (Integrity Measurement Architecture) se origin con IBM Research ([3], [4]). IMA contina la cadena de confianza, comprobando si algn archivo ha sido alterado o manipulado.

IMA es parte oficial del kernel Linux desde la versin 2.6.30 de ste, aunque por norma general no viene habilitado, por lo que puede ser necesario recompilarlo con las siguientes opciones: CONFIG_IMA=Y CONFIG_IMA_MEASURE_PCR_ INDEX =10 CONFIG_IMA_AUDIT=Y CONFIG_IMA_LSM_RULES=Y Tambin hace falta una opcin de arranque opcional para el kernel, ima_tcb=1. En el Listado 1 se muestra un extracto de la configuracin de Grub con IMA habilitado y una comprobacin de archivo de Grub. IMA utiliza los hooks LSM (Linux Security Module) del kernel, los mismos en los que se basan SE Linux y las exten-

siones MAC (Mandatory Access Control). Un programador puede registrar funciones internas del kernel mediante estos hooks; se suelen utilizar para funciones relacionadas con la seguridad o para llamadas al sistema. El kernel inicia las funciones IMA para, por ejemplo, los hooks que ejecuta el kernel antes de cargar archivos ejecutables. Esto se cumple con llamadas al sistema como mmap(), execve() o sys_init_module(). El cdigo de IMA siempre se ejecuta por tanto antes de que cargue el sistema o se ejecute cualquier mdulo del kernel, librera, archivo binario o script. El cdigo calcula la suma checksum del archivo en cuestin de la misma manera que lo hace el proceso de arranque previo. Los resultados no siempre se almacenan en el chip TPM, sino que slo van a parar all en los casos de archivos previos y validados o cuyo checksum se ha visto alterado. Un mecanismo de cach garantiza que todo este proceso no acabe derivando en

Platform Configuration Register


Los PCRs (Platform Configuration Registers) juegan un importante papel en la comprobacin de la integridad llevada a cabo en un arranque seguro. Los PCRs son juegos de 16 registros con un ancho de datos de 20 bytes, que es justamente el tamao de los resultados de los hashes criptogrficos (SHA-1). Los PCRs se inicializan a 0 cuando la mquina se reinicia o resetea. De ese modo, es imposible establecerlos con valores predeterminados. La nica posibilidad a la hora de modificar los registros es llamando a la funcin TPM_Extend. Esta funcin se define como TPM_Extend[n] := SHA-1(PCR[n] ||

D). Una porcin de datos de longitud arbitraria D se enlaza al nmero n del valor actual del registro PCR, para ser computado usando la funcin criptogrfica de hasheado SHA-1. El hash de 20 bytes resultante se guarda en el registro PCR n. Debido a las caractersticas de la funcin de hasheado, es virtualmente imposible usar este mecanismo para guardar un valor especfico en un PCR de manera intencionada. El arranque seguro hace uso de ello para almacenar los valores calculados D en un PCR en el momento del arranque, impidiendo as su manipulacin.

Figura 1: La cadena de confianza comienza al encender el PC e idealmente contina hasta que arranca el sistema operativo. En Linux se consigue con la ayuda de Trusted Grub.

WWW.LINUX- MAGAZINE.ES

Nmero 78

57

ADMINISTRACIN Arranque Seguro

prdidas de rendimiento apreciables en condiciones de produccin. Adems, IMA almacena en el kernel una tabla con los nombres de todos los archivos comprobados y sus correspondientes sumas. Esta lista contiene en todo momento el estado actual de los archivos ejecutados hasta ese punto. Mediante la comparacin de estas sumas con los valores determinados (las sumas de las versiones integrales de los archivos correspondientes) se logra detectar cualquier vulneracin de la integridad de los archivos. TPM_Extend tambin guarda las sumas en el chip TPM. Si el checksum de un archivo del sistema vara, se almacenan sumas diferentes en los valores del registro PCR. Sin embargo, la tabla del kernel slo contiene la suma actual de los archivos. IMA ofrece adems una interfaz en espacio de usuario a travs de la cual se puede comprobar la tabla: el administrador puede leer la notacin ASCII de la tabla a travs del archivo /sys/kernel/security/tpm0/ascii_Bios_me asurements (en el Listado 2 se ilustra parte de este archivo); en el Listado 3 se muestra cmo la herramienta head de Linux lee el registro PCR del TPM.

la Fase 1 de Grub verifica el comienzo de la Fase 2 de Grub la Fase 2 de Grub verifica el resto de la Fase 2 de Grub la Fase 2 de Grub verifica adems el kernel del sistema operativo as como los mdulos del kernel a cargar TrustedGRUB nos permite verificar adems cualesquiera otros archivos. Podemos definir dicha comprobacin mediante el uso de una nueva opcin en el archivo de configuracin de Grub, /boot/grub/menu.lst, del siguiente modo:
checkfile U (hdX,X?)/ruta_al_archivo

cancelar el arranque por completo o continuar con el arranque a pesar de los problemas detectados. TPM_Extend enva a los correspondientes registros PCR del TPM las sumas de los archivos.

Verificacin
A pesar de lo elaborado que son los pasos descritos en este artculo, an no se cumple el principio de arranque seguro que garantiza la integridad del proceso de arranque. Para que el arranque sea completamente seguro, el sistema debera comparar continuamente las sumas, as como saber cmo actuar en caso de que se produzca cualquier alteracin. El arranque seguro no aborta el proceso de arranque si encuentra

Arranque Seguro en Linux


Para implementar un sistema de arranque seguro en Linux, lo primero que hay que hacer es habilitar el soporte para TPM en la configuracin de la BIOS. La primera vez que se hace, se crean varias claves internas. Para los pasos siguientes se necesita: el gestor de arranque Trusted Grub un kernel con IMA habilitado En el mtodo descrito en este artculo se utiliza un parche para la versin tradicional de Grub 0.9.7. Como mencionamos anteriormente, este parche pertenece al proyecto TrustedGRUB, un trabajo colaborativo entre Sirrix y la Universidad de Bochum, Alemania, cuyo sitio web [2] alberga el cdigo fuente, una wiki e informacin de instalacin detallada. La actual versin 1.1.5 data de agosto de 2010. Instalando TrustedGRUB en el MBR del disco duro logramos que contine el proceso de arranque con soporte para TPM del siguiente modo: la extensin CRTM de la BIOS verifica la Fase 1 de Grub (cdigo del MBR)

Debemos especificar la particin al modo tradicional de Grub; sin embargo, el tamao del Listado 2: Listado de Sumas en el Sistema archivo est limitado a 8KB. El Activo archivo conten01 # head -5 /sys/kernel/security/ima/ascii_runtime_measurements dr la lista de 02 PCR template-hash filedata-hash filename-hint archivos a verifi03 10 0f7aa9805f51800bf1403c3de856c4bee66dfa21 ima car, as como sus dd16d778c4dbfdea44536cdc10890757684fe1e0 boot_aggregate 04 10 1dfdf1da8cca8248c420f365bbb7cb00ad59597e ima hashes correctos 648090bfe9593bcc2702461433d5c9ef64399ee5 /init (SHA-1; el Lis05 10 afaefb735a3d93f5c6f66f7893b558f04438e8c0 ima tado 4 muestra 5fb8c8479f31574c435aa06d5bae6ae5a737ca81 /init 06 10 08005d2b0ba3ee8c10c40f87eef76f3c4cea41d5 ima un ejemplo). 195b25cdab5501b58858bc0923e51a0eab2447a3 ld-linux.so.2 Durante el 07 10 63d7494f6da7fb0fc3332ab4fce2a2e1d45fbaf2 ima arranque, Grub d3d48ff690110248aba853fdb0748bfe4dd64673 libc.so.6 comprueba una por una las entraListado 3: Registrador PCR Register Visto das de la lista. Si el hash o suma por head calculada no 01 # head -10 /sys/kernel/security/tpm0/ascii_Bios_measurecoincide con la ments 02 6226702b792e3ddd4b33491ce19375c671a8f8a7 08 [S-CRTM Versuma almacesion] nada, el proceso 03 4bb5a4e9f0f392abfa4eab2202b3bd924621dc63 01 [POST CODE] de arranque se 04 1ea0e02ec49aaf3fda0bc8186da2cf246d7cfecf 01 [POST CODE] 05 dd261ca7511a7daf9e16cb572318e8e5fbd22963 01 [POST CODE] detiene y muestra 06 df22cabc0e09aabf938bcb8ff76853dbcaae670d 01 [POST CODE] un mensaje al 07 a0d023a7f94efcdbc8bb95ab415d839bdfd73e9e 01 [POST CODE] usuario. El 08 05ce5aa3a72f4dccdaa251bbac738a03296be1f7 01 [POST CODE] 09 dd261ca7511a7daf9e16cb572318e8e5fbd22963 01 [POST CODE] prompt del Lis10 df22cabc0e09aabf938bcb8ff76853dbcaae670d 01 [POST CODE] tado 5 da a elegir 11 a0d023a7f94efcdbc8bb95ab415d839bdfd73e9e 01 [POST CODE] al usuario entre

Listado 4: /boot/grub/grub-check
01 792f802081e5193a304606026365797e69334adc (hd0,6)/boot/ initrd.img- 2. 6.35.4-ima 02 b6787ae6767deacefc5758ef7a4c0cdcbd0665ca (hd0,6)/boot/vmlinuz-2.6. 35.4-ima

Listado 5: Mensajes del Arranque de Trusted GRUB


01 ****Trusted GRUB now booting Ubuntu-IMA 02 ****Progress:****XX 03 tGRUB: Verifiying (hd0,6)/boot/initrd.img-2.6.35.4-ima -> Integrity Error! 04 tGRUB: Data integrity not Guaranteed, 1 problem(s) occurred 05 tGRUB: Press ESC to stop booting or any other key to continue ...

58

Nmero 78

WWW.LINUX- MAGAZINE.ES

Arranque Seguro ADMINISTRACIN

algn archivo modificado. En lugar de eso, lo que hace es ofrecer al usuario la posibilidad de identificar un sistema cuya integridad ha sido comprometida. La respuesta a tal situacin no es responsabilidad del arranque seguro, sino que se deja a la instancia de verificacin. La comprobacin de la integridad supone el ncleo del arranque seguro. Pero hay un fallo de facto: uno de los principios bsicos en seguridad es que un PC en ejecucin no debe ser quien verifique su propia integridad. Por ese motivo, IMA encomienda la verificacin a un tercero confiable. El proceso terico (del que an no ha aparecido ninguna implementacin factible) se conoce como testimonio remoto y usa un mtodo de desafo/respuesta (ver Figura 2) que consta de los seis pasos siguientes: la entidad comprobadora genera un nmero aleatorio o nonce, (1). transfiere el nonce al sistema objetivo (challenge), (2). el sistema objetivo crea una peticin TPM_Quote request, firma el nonce y el valor del PCR, y devuelve los resultados junto con la lista de sumas, (3). la entidad comprobadora analiza la firma y el nonce para garantizar que se trata de un valor de PCR autntico y actualizado, (4).

recalcula el valor de PCM (TPM_Extend) referenciando la lista de sumas que ha recibido y, si los resultados son idnticos, deduce que la lista es autntica, (5). verifica entonces todos los valores de la lista contra los valores de una base de

Figura 2: El protocolo de testimonio remoto (Remote Attestation) permite verificar la integridad gracias a un sistema remoto. Por desgracia, an no existe ninguna implementacin usable.

Versin con Smartcard y Cifrado Completo


Las smartcards han sido diseadas para ejecutar operaciones criptogrficas, generar nmeros aleatorios y almacenar de forma segura datos y claves. Actan como parte desafiante, asumen el papel de protocolo de testimonio remoto (Remote Attestation) y verifican las sumas. En semejante escenario no es posible iniciar ninguna aplicacin segura en el PC hasta que no se haya llevado a cabo la comprobacin de la integridad del sistema. El truco est en almacenar la aplicacin en el PC en un contenedor cifrado y la clave en la smartcard. La smartcard no proporcionar la clave hasta que el PC haya verificado satisfactoriamente la integridad del sistema. Si el cargador reside en el interior del contenedor, necesitar hacer uso del protocolo de testimonio remoto, acceder a la smartcard y montar el contenedor cifrado (Figura 4). El cargador arranca en el Paso 1; inicializa la smartcard y controla el dilogo con el usuario. El usuario ha de autenticarse ante la smartcard para poder habilitarla (2). El cargador ejecuta entonces el protocolo de testimonio remoto contra la smartcard (3). Tras verificar satisfactoriamente la integridad, proporciona la clave para el montaje del contenedor cifrado (4). El cargador puede montar entonces el contenedor (5) e iniciar la aplicacin en l contenida (6).

Figura 3: Una forma de implementar el arranque seguro es usando una smartcard como instancia de verificacin junto con un cifrado completo de los discos duros.

WWW.LINUX- MAGAZINE.ES

Nmero 78

59

ADMINISTRACIN Arranque Seguro

datos; si los valores son idnticos, los archivos del sistema objetivo estn intactos, (6). Alternativamente, se puede usar una smartcard como entidad de confianza para implementar el protocolo de testimonio remoto. La arquitectura propuesta en el cuadro Versin con Smartcard y Cifrado Completo contempla una autenticacin de doble factor para el usuario y cifrado completo para el disco duro, adems del arranque seguro para garantizar la integridad y confiabilidad del conjunto de los datos. Pero una vez ms, hay una serie de obstculos que dificultan la puesta en produccin de esta solucin. Por ejemplo, la smartcard no puede guardar todas las sumas debido a la limitacin de sus recursos, y el protocolo tardar algn tiempo. Debido a que el kernel Linux ya cuenta con mecanismos similares para el cifrado de discos, como Dm-crypt, Device mapper y la Crypto API, se puede concebir una arquitectura an ms compleja y exhaustiva. La Figura 3 muestra un bosquejo de la extensin para el procedimiento descrito anteriormente. En esta configuracin, el disco duro no contiene datos cifrados aparte de los datos de gestin de las particiones. El sistema usa CRTM y TrustedGRUB para arrancar (pasos 1 a 4) desde un medio USB. Aquellos administradores que busquen un mtodo elegante pueden usar un stick USB con lector de smartcard integrado y llevar consigo todas las credenciales de acceso en el stick. La ramdisk inicial contiene el cdigo necesario para usar la smartcard, autenticar al usuario e incluso lanzar una comprobacin de la identidad y, en caso de que sta tenga xito, leer la clave desde la smartcard para el cifrado transparente del disco duro (pasos 5 a 8). La mquina podr entonces montar el sistema de archivos raz y continuar con el proceso de arranque (pasos 9 a 11). Una vez hecho todo esto, tienen lugar los pasos para iniciar la aplicacin de alta seguridad (pasos 12 a 16).

Claro est que este mtodo tampoco est exento de problemas: la gestin mediante Smartcard y stick USB no es viable con grupos de usuarios de mayor tamao; de hecho, una arquitectura de tal complejidad est ms bien orientada a sistemas dedicados con necesidades de mxima seguridad y para los que est justificado el esfuerzo de administracin que supone.

Windows
Las versiones ms modernas de Windows (a partir de Windows Vista) soportan el chip TPM en forma de autenticacin previa al arranque y cifrado de disco duro mediante Bitlocker [5]. El software verifica la integridad del sistema en las fases ms tempranas del arranque, de manera similar a como lo hace TrustedGRUB. Sin embargo, en ese momento se rompe la cadena de confianza; el kernel no contina con las medidas de integridad del chip TPM. La filosofa para la proteccin de la integridad vara en este punto: Bitlocker hace uso de TPM para garantizar la deteccin de vulneraciones de la integridad slo hasta el momento en que el kernel arranca. Al mismo tiempo, Bitlocker garantiza la confidencialidad de los datos del disco mediante el uso de cifrado completo. De ese modo, los administradores de los sistemas de Microsoft pueden prevenir potenciales ataques consistentes en modificar archivos especficos offline. Estas medidas estn complementadas por funciones como la firma de drivers, proteccin ante parches o control de cuentas de usuario. Tras una valoracin detallada de la seguridad de Windows Vista se concluye que, a pesar de que Microsoft ha mejorado sustancialmente la seguridad de Windows en comparacin con sus productos anteriores, an no ofrece ningn concepto dominante en el sentido de TCG, o al menos no de un modo ya preparado. Microsoft ha podido identificar este error y parece estar trabajando en ello.

En la Build Conference de Septiembre de 2011, los desarrolladores presentaron el nuevo mtodo de Arranque Seguro en Windows 8 basado en la UEFI (Unified Extensible Firmware Interface, [6]) para soportar solamente cargadores de arranque firmados para proteger as el sistema operativo como el Chrome OS de Google. Sin embargo, los chips UEFI no estn muy extendidos entre el hardware de PC.

Conclusin
La integridad de las aplicaciones se puede garantizar en Linux mediante una combinacin de CRTM, TrustedGRUB e IMA, consiguiendo un arranque seguro perfecto. Esta solucin permite al administrador detectar cualquier modificacin realizada sobre aplicaciones sensibles, como por ejemplo las dedicadas a la creacin de firmas digitales. La usabilidad del sistema en entornos productivos depende de un proceso de verificacin confiable. Por desgracia, an no existe ninguna implementacin usable del protocolo de testimonio remoto (Remote Attestation). En comparacin con Windows, IMA definitivamente implementa mucho mejor el concepto de I arranque seguro.

RECURSOS
[1] Trusted Computing Group: http:// www.trustedcomputinggroup.org [2] Trusted Grub: https://projects.sirrix. com/trac/trustedgrub/ [3] IBM Research: http://domino. research.ibm.com/comm/ research_people.nsf/pages/sailer. ima.html [4] Sailer, Zhang, Jaeger, van Doorn, Design and Implementation of a TCG- based Integrity Measurement Architecture: 13th USENIX Security Symposium, 2004 [5] Bitlocker: http://windows.microsoft. com/en-US/windows7/products/ features/bitlocker [6] Unified Extensible Firmware Interface:http://en.wikipedia.org/wiki/ Unified_Extensible_Firmware_Interf ace

Figura 4: Secuencia del protocolo de testimonio usando una smartcard para proteger la aplicacin.

60

Nmero 78

WWW.LINUX- MAGAZINE.ES

LINUX USER Dia

bases de datos o UML y para visualizar flujos de trabajo o estructuras en procesos. Adems, cuenta con soporte limitado para crear elementos a mano alzada. Para comenzar, podemos arrastrar objetos desde la caja de herramientas al espacio de trabajo, y luego organizarlos y enlazarlos cuando sea necesario. Si movemos un objeto, automticamente se actualizarn las flechas que lo enlazan para indicarnos la nueva posicin, evitndonos as el tener que ajustar todos los objetos manualmente cada vez que cambie uno.

Instalacin
Dia se encuentra disponible para Linux, Mac OS X y Windows. Es probable que la versin Linux est en el repositorio de nuestra distribucin favorita. Los usuarios de Ubuntu y Debian necesitan estar atentos a las versiones diferentes. Para ms informacin vase el cuadro Una Versin para Gnome?. La versin porttil para los usuarios de Windows se puede arrancar sin instalacin (por ejemplo, desde un stick USB). A pesar de que tcnicamente la versin de Linux es idntica a la de otros sistemas operativos, como en GIMP, el cuadro de herramientas y el espacio de trabajo se encuentran situados en paneles diferentes (Figura 1). Sin embargo, podemos arrancar Dia con la opcin --integrated para cambiar esta configuracin y editar mltiples documentos Dia al mismo tiempo. En este modo, el programa abre los espacios de trabajo adicionales como pestaas.

Visualizacin de procesos con Dia

Esquemtico
Dibujar diagramas y organigramas resulta difcil con programas de edicin grfica tradicionales tales como GIMP o Inkscape. Dia simplifica esta tarea. POR CHRISTOPH LANGNER Y THOMAS LEICHTENSTERN
uando necesitamos editar una foto, habitualmente elegimos un programa de edicin de imgenes como GIMP o Photoshop. Los programas de dibujo vectoriales como Inkscape, Adobe Illustrator o Corel Draw son ms tiles para dibujos o ilustraciones, pero los diagramas UML o de red son ms difciles de dibujar usando un programa de edicin de imgenes, porque, aunque permiten agrupar objetos, no permiten enlazarlos. El programa bajo licencia GPL Dia [1] es mucho mejor a la hora de automatizar el proceso de actualizacin de objetos enlazados.

Controles
Para crear grficos podemos arrastrar las formas requeridas desde la biblioteca de la izquierda al escritorio. Una vez colocadas, podemos moverlas, reflejarlas o escalarlas de acuerdo con nuestras necesidades. Los elementos se enlazan fcilmente con las distintas lneas disponibles en el Diagram Editor.

Una Versin para Gnome?


Debian y Ubuntu tienen dos versiones diferentes de Dia. Los administradores de paquetes con estas distribuciones incluyen los meta-paquetes dia y diagnome. Si no utiliza el escritorio Gnome, no instale dia-gnome. Si usa KDE o Xfce, este paquete instala un conjunto de dependencias que no necesita. En su lugar, debera instalar el paquete dia, que nos da el mismo programa, pero sin las dependencias.

Multitalento
Dia posee muchos objetos grficos tiles para crear organigramas y diagramas de

62

Nmero 78

WWW.LINUX- MAGAZINE.ES

Dia LINUX USER

seleccionamos Layers | Add layer. Para navegar entre ellas utilizamos la ventana Layers (Figura 2), a la cual podemos acceder a travs de Layers | Layers en el doble panel o accediendo a View | Show Layers en la ventana integrada.

Exportar
Con Dia podemos exportar nuestros grficos a varios formatos, tales como PNG, SVG o PDF, y luego continuar trabajando sobre ellos en otros programas. Versiones ms recientes de Dia tambin pueden leer y producir ficheros en el formato XML que utiliza MS Visio [2], que Microsoft public con la versin 2003. Con esta funcionalidad se soporta la interoperabilidad directa con Visio, aunque Figura 1: La opcin --integrated inicia Dia en una nica ven- pueden darse algunas ligetana en Linux (parte superior). ras diferencias entre ficheros. Para definir la apariencia de los extremos Mis pruebas mostraron que Visio no prede los conectores utilizamos los iconos de senta el texto en documentos exportados la parte inferior del editor. Cuando arrastradesde Dia. La eleccin de otra fuente podra mos una flecha al centro del rectngulo, resolver este problema. Cuando abr los ste se mostrar resaltado en rojo. Cuando ficheros de Visio en Dia, tuve problemas al pulsamos el botn del ratn, la punta de la cargar los grficos ms complejos. Por flecha quedar unida al centro del rectnejemplo, el programa no muestra gradiengulo. Cuando movemos el objeto, ste pertes de color o elementos ms complicados manece enlazado. Este proceso no slo funcorrectamente. El intercambio de datos ciona con el centro de un objeto, sino tamentre Dia y Visio es, en el mejor de los bin con las esquinas y el punto medio de casos, una solucin provisional en este cualquier lado. momento. Al igual que otros programas grficos, Formas Adicionales Dia utiliza capas. Para crear nuevas capas Si la seleccin de formas de las que nos provee Dia no es suficiente para nuestras necesidades, podemos ampliar el programa descargando otras en el formato de paquetes DEB y RPM a travs del programa Diashapes [3]. Estas formas incluyen elementos de estructura y de informtica, componentes electrnicos y formas para elementos pticos. Tambin hay versiones de bibliotecas de formas para Windows y Mac OS X que se pueden descargar desde la pgina de inicio de Dia. Despus de instalar Diashapes, aparecer Figura 2: En Dia, el dilogo Layers nos peren el men Applications | Graphics del mite cambiar entre diferentes capas. escritorio Gnome. Cuando lo iniciamos,

Figura 3: Diashapes instalado.

muestra una lista de todos los objetos disponibles, que podemos seleccionar una vez verificados. Pulsando en Install carga las formas requeridas y las desempaqueta automticamente en ~/.dia/shapes, por lo que ya podremos acceder a ellas desde Other sheets de la lista desplegable en el Diagram Editor (Figura 3).

Conclusiones
Dia no puede competir con el alcance funcional de las alternativas propietarias tales como OmniGraffle [4] o MS Visio, pero, si lo nico que necesitamos son diagramas simples sin complejidades, Dia es una estupenda opcin. Esta aplicacin libre crea diagramas UML y de red con facilidad, y podemos exportarlos tambin fcilmente a formatos populares para su edicin posterior. Sin embargo, es posible que puedan darse algunos problemas con fuentes integradas si exportamos a MS Visio. I

RECURSOS
[1] Dia: http://projects.gnome.org/dia/ [2] MS Visio: http://office.microsoft.com/ en-us/visio/ [3] Diashapes: http://dia-installer.de/ diashapes/index.html.en [4] OmniGraffle: http://www.omnigroup. com/products/omnigraffle/

WWW.LINUX- MAGAZINE.ES

Nmero 78

63

LINUX USER Administracin de Contraseas

Abordamos la generacin y administracin de contraseas

incluso millones de usuarios. En la mayora de los casos, la informacin estaba cifrada, pero con un corpus tan grande con el que trabajar, los atacantes no tendran ninguna dificultad en descubrir las contraseas dbiles. Junto con los nombres de usuario, un atacante puede tratar de acceder a otros servicios e intentar apoderarse de cuentas de otros sitios si estamos usando el mismo nombre de usuario y contrasea para esos otros sitios. As que, cul es la respuesta? Contraseas fuertes y separadas para cada cuenta de cada servicio. Esto probablemente suena como un autntico incordio ms que nada porque lo es, especialmente si hemos intentado elaborar y memorizar cada una de ellas. No es simplemente una molestia para muchos usuarios es una frmula para el fracaso. Naturalmente, no deseo que nadie fracase a la hora de reforzar su seguridad, y no quiero que los malos puedan devorar nuestras contraseas fcilmente. Afortunadamente, Linux est lleno de herramientas para ayudarnos a crearlas y a administrarlas. Comenzar explicando qu hace que una contrasea sea buena, luego mostrar cmo crearla y despus cmo almacenarla (de modo seguro).

PSALO!
Las contraseas fuertes y originales son actualmente una necesidad. Mostramos distintas maneras de generarlas y que sean fciles de recordar. POR JOE ZONKER BROCKMEIER
Joe Zonker Brockmeier es periodista tecnolgico freelance, editor, creador de comunidades y defensor del software libre. Fue Community Manager de OpenSUSE desde el 2008 hasta el 2010. Ahora escribe para Linux Magazine y otras publicaciones tecnolgicas. Puedes encontrarlo en http://www.dissociatedpress.net y en Twitter e Identi.ca como jzb.

Contraseas Fuertes
Qu hace que una contrasea sea fuerte? Probablemente encontraremos distintas opiniones, pero como mnimo deber tener una combinacin de letras maysculas y minsculas, nmeros y caracteres especiales si es posible. Digo si es posible, porque algunos sitios puede que no permitan caracteres especiales o podra limitarnos a utilizar un PIN en vez de una contrasea de verdad. En tales casos, es importante hacerlo lo mejor que podamos. Tambin es importante evitar contraseas de diccionario en la medida de lo posible. Por razones obvias, no es buena idea que nuestra contrasea sea contrasea, password ni ninguna variante. Igualmente tampoco debe ser nuestro nombre, apellidos, nombre de nuestra madre, un insulto, palabra malsonante u obscenidad (los atacantes tambin pueden ser inmaduros) o el nombre de nuestro grupo

as contraseas y su administracin no son precisamente temas excitantes para la mayora de los usuarios. De hecho, muchos de ellos piensan que son un mal necesario, mostrando poco inters en crear contraseas fuertes. Pero esto es un error: los recientes ataques a distintos servicios han comprometido las bases de datos de empresas, permitiendo a terceros hacerse con nombres de usuario y contraseas de miles,

64

EL AUTOR

Nmero 78

WWW.LINUX- MAGAZINE.ES

Administracin de Contraseas LINUX USER

musical favorito a menos que se llame Foof2ouv, grupo que no conoce ni Dios. Pero que se nos ocurra una contrasea fuerte no es sencillo si no podemos utilizar una palabra que podamos recordar con facilidad verdad? Cierto, pero podemos facilitarnos la tarea si utilizamos un generador de contraseas aleatorio. Linux tiene bastantes de donde elegir.

Contraseas Fciles con pwgen


Mi generador de contraseas favorito de la lnea de comandos es una pequea utilidad denominada pwgen, escrita por un tipo del que probablemente haya odo hablar: Ted Tso, el cual, cuando no estaba hackeando sistemas de ficheros, pasaba su tiempo reescribiendo una utilidad que generaba contraseas aleatorias. Aunque no slo eso, ya que pwgen genera contraseas que pretenden ser fciles de recordar. Cmo es esto? Contraseas seguras y fciles de recordar? S, efectivamente. El modo predeterminado de pwgen es crear contraseas que son pronunciables pero que no son una palabra. Tambin pueden incluir al menos una letra en maysculas y un nmero. La manera ms fcil de verlo es a travs de la salida de pwgen. Aqu hay un ejemplo de contraseas generadas por esta tulidad:
to8Tee0j Ook4kep7 caCh4che ma1Saik1 Roo6oen9 miexieX3 Piyairo6 Oyol9Iel Ohpho3po cheiT8ai Gooquae9 AeV8eech ach9SaiG xiezah1K gooPo8qu aiGie0Ae xooqu1Fi Dahh4Oox oosh8Mia ion8beiC tho1Thie Beel9aa8 Baiph6uu Jei9Mahk

de 8 caracteres con varias columnas y filas de contraseas. La idea es generar un conjunto de ellas para tener varias entre las que elegir. Sin embargo, todo esto se puede modificar. Si queremos contraseas ms largas (o ms cortas algo que no recomiendo), usaremos pwgen N, donde N es la longitud de la contrasea. Tambin podemos establecer el nmero de contraseas a generar proporcionando un segundo nmero. De este modo, si slo deseamos 10, ejecutamos pwgen 9 10, que generar 10 contraseas con una longitud de 9 caracteres. En el caso de que slo de seemos especificar el nmero de contraseas, entonces sera pwgen -N 10. Y si queremos aadir un smbolo a nuestra contrasea? Entonces usaremos la opcin -y:
pwgen -y -N 10.

otra gente o incorporar la generacin de contraseas en un script, por ejemplo, podemos invocar a pwgen desde los scripts. Cuando se le llama desde un script, y no interactivamente, pwgen genera una sola contrasea en vez de una pantalla completa de contraseas. La nica desventaja de pwgen es que puede que no se encuentre empaquetada en todas las distribuciones. Est disponible para Debian, Linux Mint, Ubuntu y para el resto de las familias Debian/ Ubuntu y sus derivadas. Sin embargo, este artculo est escrito en Scientific Linux 6.1 alpha, y pwgen no parece encontrarse en los

Figura 1: La ventana por defecto de Revelation.

Ninguna de ellas son fcilmente adivinables y tampoco fciles de crackear, pero podemos elegir algunas que podramos memorizar fcilmente. He usado pwgen desde hace algunos aos para generar unas cuantas contraseas que he memorizado y utilizado para una cuenta slo una cuenta. As que el comportamiento por defecto de pwgen es crear un conjunto de contraseas y permitirle al usuario elegir entre ellas. Como podemos ver aqu, la longitud de la contrasea es

Esto las generar con corchetes, comillas, acentos circunflejos, etc. Ntese que algunas de las salidas pueden ser un poco ambiguas. Puede resultar complicado distinguir entre un 0 y una O o entre un 1 y una l dependiendo de la fuente de terminal que estemos utilizando. Yo no tengo este problema, porque la fuente de mi terminal distingue bastante bien estos caracteres y uso reglas mnemotcnicas para memorizar las contraseas. As, recuerdo la diferencia entre cero y Oh en mi cabeza. Pero si nos resulta confuso o irritante, podemos usar la opcin -B para decirle a pwgen que no utilice caracteres ambiguos. Si necesitamos generar contraseas para

Figura 2: Aadiendo una cuenta shell.

Figura 3: Aadiendo una cuenta de tarjeta de crdito.

WWW.LINUX- MAGAZINE.ES

Nmero 78

65

LINUX USER Administracin de Contraseas

repositorios de Scientific Linux o en los de Red Hat Enterprise Linux (RHEL). Una opcin de la familia RHEL es compilarlo nosotros mismos, siendo posible encontrar el cdigo fuente en SourceForge [1]. Como es un programa sencillo, no necesita actualizarse muy a menudo su ltima actualizacin es de hace algo menos que un ao (Febrero de 2011) y las fuentes se compilan con mucha facilidad.

Revelacin en la Administracin de Contraseas

Durante muchos aos he usado una solucin de baja tecnologa para administrar pares de nombre de usuario/ contrasea. Mantena un fichero de texto Vim cifrado oculto con muchos nombres de usuario y contraseas de sitios. Esto era, por decirlo suavemente, ni completamente escalable ni seguro. Concedo que casi requera acceso fsico a mi mquina para crackearlo, pero el cifrado de Vim no es terriblemente fuerte. Adems, no es una solucin integral. Cuando comenc a buscar una GUI para administrar contraseas, encontr unas cuantas buenas para Linux, especficamente dos, a las que har referencia aqu: Revelation [2] y Figura 4: Creando una nueva cuenta Firefox Sync. Seahorse [3]. Si somos usuario de Gnome, es probable que ya estemos familiarizados con Seahorse, aunque puede que no conozcamos todo lo que Seahorse puede hacer. Tambin me gusta Revelation con una salvedad: su desarrollo se detuvo en Figura 5: Introduciendo informacin de la cuenta. 2007. An se encuentra empaquetado para algunas distros, pero le hara falta un nuevo mantenedor. Si es de sarrollador y lee esto, puede que sea un buen proyecto del cual hacerse cargo. Cuando ejecutemos Revelation, veremos una ventana como la que aparece en la Figura 1. Para empezar a aadir entradas, pulsamos el botn Add Entry situado en la barra de tareas. Luego veremos un dilogo como el de las Figuras Figura 6: Administrando preferencias de Firefox Sync. 2 3. Como podemos

ver, es posible administrar varios tipos de cuentas/ credenciales en Revelation, incluyedo tarjetas de crdito, cuentas shell, sitios web, bloqueos de puertas e incluso claves cifradas con el certificado y los ficheros de claves. Hasta qu punto es seguro mantener todo esto en una GUI de fcil uso? Pues el fichero con nuestra informacin est cifrado con otra contrasea. Despus de que hayamos introducido unas cuantas credenciales, vamos a File y le damos al fichero de datos de Revelation un nombre. Se nos pedir una contrasea y, si no es lo suficientemente fuerte, Revelation se quejar antes de permitirnos usarla. Tambin podemos bloquear Revelation mientras est abierto, de modo que si alguien intenta fisgonear en nuestro escritorio, no tenemos que preocuparnos de que puedan navegar nuestras contraseas. Ntese que no necesitamos usarlo con pwgen, ya que Revelation generar contraseas aleatorias para nosotros. Como he mencionado, Revelation no est activamente mantenido, por lo que posiblemente deseemos probar Seahorse como alternativa. Por qu no comenzar con Seahorse? En primer lugar, porque no es tan flexible como Revelation. Est diseado para administrar claves GPG, cuentas shell y otras credenciales estndar, pero no tarjetas de crdito o contraseas de sitios web donde deseamos guardar algo ms que pares de nombre de usuario/ contrasea. Pero si usa Gnome, puede que ya tenga instalado Seahorse y, si slo necesita administrar un puado de contraseas, esta es una buena manera de hacerlo.

Firefox Sync
Por ltimo, no podemos olvidar mencionar Firefox Sync [4]. Firefox ha tenido la funcionalidad de administrar contraseas durante mucho tiempo, aunque Sync es un sustancial paso adelante, el cual como su nombre indica, sincroniza informacin entre diferentes versiones de Firefox. Segn la versin de Firefox que estemos usando, Sync se encuentra disponible como una extensin o como una funcionalidad nativa del navegador. En

66

Nmero 78

WWW.LINUX- MAGAZINE.ES

Firefox 3.6 necesitaremos instalarlo como extensin, pero a partir de la 4.0 y posteriores, se encuentra incluido por defecto. A menos que tengamos una buena razn para usar 3.6, deberamos actualizarnos a la 4.0 o posteriores. Mucha gente piensa en Firefox Sync como una manera de sincronizar las marcas entre navegadores en diferentes mquinas, pero tambin guardar y sincronizar nuestras contraseas. Tambin podemos hacerlo en Google Chrome o utilizando algo como Xmarks; sin embargo, tiendo a tener ms confianza en Mozilla que en cualquier otra entidad comercial para manipular mi privacidad. Si no ha usado Firefox Sync antes, deber comenzar configurando una cuenta (Figura 4). Tenga en cuenta que tendr dos credenciales privadas nuestra contrasea y una clave Sync. Cuando nos registramos en Firefox Sync, necesitaremos introducir nuestro nombre de usuario o direccin email, as como la clave Sync (Figura 5). Una vez que todo est configurado, podemos administrar lo que Sync vaya a sincronizar. Si nos encontramos seguros con la poltica de privacidad y seguridad de Mozilla, entonces seguimos adelante y le permitimos sincronizar las contraseas. Tambin administrar nuestros favoritos, preferencias, historial y las pestaas dentro de los navegadores (Figura 6). Firefox Sync es de gran ayuda si estamos utilizando Firefox en varios aparatos y, si no lo tenemos instalado, es un autntico incordio intentar administrar contraseas para sitios web en un dispositivo mvil.

Resumen
La administracin de contraseas no es algo atractivo ni excitante, pero merece la pena investigar un poco para poner orden en nuestra privacidad para quedarnos tranquilos. Como Linux tiene un porcentaje bastante alto de usuarios preocupados por una buena administracin y seguridad de contraseas, se encuentra repleto de herramientas que satisfacen estas necesidades. Tenemos que ser unos super-paranoicos acerca de nuestras contraseas? Probablemente no. A nivel personal, mi objetivo es que mis credenciales proporcionen proteccin frente a ataques comunes y aslen cada cuenta de manera que, si los atacantes comprometen un sitio, no puedan abrir una puerta al resto de mi vida online. Este mtodo es diferente si se planea pararle los pies a un atacante que nos tenga como objetivo personalmente, aunque los mismos pasos deberan ayudar tambin a funcionar. Mi recomendacin es que genere contraseas fuertes. Y si no est seguro de sus credenciales bancarias, enveme un email con ellas, y las revisar por usted </ sarcasmo>. I

RECURSOS
[1] SourceForge: http://sourceforge.net/projects/pwgen/ [2] Revelation: http://oss.codepoet.no/revelation/wiki/Home [3] Seahorse: http://projects.gnome.org/seahorse/ [4] Firefox Sync: https://wiki.mozilla.org/Firefox_Sync

LINUX USER Workspace: BilboPlanet

bros tienen blogs. Si queremos seguirlos, tenemos que subscribirnos a todos los feeds RSS individuales. Lo mismo ocurre para todos los miembros de la comunidad: han de subscribirse a cada uno de los restantes feeds RSS de los dems miembros para mantenerse al da. Las cosas incluso se complican ms cuando cada miembro se subscribe a otros feeds que puede que sean importantes para el resto de la comunidad. BilboPlanet ofrece una elegante solucin a este problema agregando y publicando los feeds RSS de los miembros de la comunidad. Y a pesar de estar desarrollada pensando en comunidades y grupos de trabajo, esta aplicacin tambin tiene otros usos. Por ejemplo, podemos utilizarla como una herramienta para publicar contenido de nuestros feeds RSS favoritos.

Comenzamos
Como BilboPlanet se ejecuta en la pila Apache/MySQL/PHP, necesitamos un servidor o un alojamiento web que tenga los componentes requeridos. La aplicacin trae un instalador automtico, de modo que implantar BilboPlanet slo conlleva unos cuantos pasos simples. Para empezar, cogemos la ltima versin de la aplicacin del sitio web del proyecto y desempaquetamos el archivo descargado. Movemos la carpeta BilboPlanet resultante al documento raz de nuestro servidor, luego damos permisos de escritura al directorio BilboPlanet/admin/ cache/ y al fichero Bilboplanet/inc/ config.php. A continuacin apuntamos nuestro navegador a http://127.0.0.1/ Bilboplanet (sustituyendo 127.0.0.1 por la direccin IP o el nombre de dominio de nuestro servidor) para instalar el asistente (Figura 1). Cumplimentamos los campos requeridos y pulsamos Save. En el paso siguiente, proporcionamos informacin sobre nuestra instancia de BilboPlanet, especificamos las credenciales del administrador y pulsamos Save de nuevo. El instalador se encargar del resto. Una vez que BilboPlanet ha sido instalado, podemos eliminar el directorio Bilboplanet/admin/install, y luego pulsar el botn Go to the administration interface para configurarlo. Cuando nos introducimos en la interfaz administrativa de BilboPlanet, aterrizamos automticamente en la seccin Dashboard, la cual ofrece una vista rpida de nuestra instalacin (Figura 2). Esta perspectiva incluye una lista de los ltimos artculos, estadsticas e informacin del sistema. Si necesitamos modificar la configuracin de

Administracin de feeds RSS con BilboPlanet

AGREGAR Y PUBLICAR
En la web, un planeta es una herramienta para reunir y mostrar posts de blogs de los miembros de una comunidad de Internet. Vemos cmo crear uno usando BilboPlanet. POR DMITRI POPOV

A
Dmitri Popov es licenciado en Lengua Rusa y en lenguajes de computacin. Ha estado escribiendo sobre Linux y software de cdigo abierto durante aos, y sus artculos han aparecido en revistas y sitios web daneses, britnicos, norteamericanos, alemanes y rusos.

primera vista, BilboPlanet [1] tiene toda la pinta de otro lector RSS basado en web. Pero si profundizamos un poco, encontraremos que no es un agregador RSS habitual. BilboPlanet es lo que se llama un portal a planeta, una aplicacin que toma contenidos de mltiples fuentes RSS y los presenta de manera que sean fciles de usar. Esta aplicacin est diseada especficamente para comunidades y grupos de trabajo para permitirles a sus miembros seguirse entre ellos y compartir informacin til. Cmo funciona en la prctica? Digamos que tenemos una comunidad en la que todos sus miem-

68

EL AUTOR

Nmero 78

WWW.LINUX- MAGAZINE.ES

Workspace: BilboPlanet LINUX USER

nuestra cuenta, podemos hacerlo en Common | Manage your account. Aqu podemos actualizar nuestra direccin de correo y cambiar la contrasea. Antes de poder poner a BilboPlanet a funcionar, tenemos que rellenarlo con usuarios. Para ello vamos a Administration | Manage users y pulsamos el botn Add a user para proporcionar el nombre del usuario, ID, direccin de correo, contrasea y sitio web. Luego pulsamos Add. De este modo podremos aadir tantos usuarios como necesitemos. Ntese que aunque el campo Website est marcado como opcional en el formulario Add a user, es, de hecho, obligatorio. Debemos especificar al menos un sitio web para cada usuario (habitualmente el blog del usuario o su sitio web personal), porque BilboPlanet no puede asignar feeds RSS a usuarios sin sitios web. Si no aadimos un sitio web cuando creamos un usuario, podemos hacerlo ms tarde pulsando el enlace Add a new website que se encuentra situado junto al usuario en la lista de todas las cuentas existentes. En teora, deberamos aadir un sitio web por cada feed RSS que planeamos asignar al usuario. En la prctica, sin embargo, podemos unir mltiples feeds a un nico sitio web. Este proceso puede sonar ligeramente confuso, pero es bastante fcil de captar cuando comenzamos a aadir feeds RSS. Una vez que hayamos rellenado BilboPlanet con usuarios, podemos aadir feeds RSS. Vamos a Administration | Manage feeds y pulsamos el botn Add a feed (Figura 3). Aqu necesitaremos asignar el feed a un miembro especfico usando la lista desplegable User id. Tambin necesitaremos unir el feed RSS a un sitio web (lo cogemos de la lista desplegable Website id). Como se ha mencionado antes, lo ideal es unir cada feed RSS al sitio web con el que est relacionado. Por ejemplo, el feed RSS de Linux Magazine deber enlazarse a http://www.linux-magazine.com y el feed Slasdot estar conectado a http://slashdot. org/. Pero en realidad, no parece existir ninguna diferencia con los feeds RSS con los que estn asociados los sitios web, de modo que podemos enlazar todos los feeds RSS a un nico sitio web asignado al usuario. El siguiente paso es buscar los artculos ms recientes de los feeds RSS aadidos para asegurarnos de que todo funciona adecuadamente. Para hacer esto manual-

mente apuntamos nuestro navegador a boPlanet ofrece an otro modo de moderar http://wxy.0.0.z/Bilboplanet/inc/ artculos usando la seccin Moderation | update_manual.php (donde wxy.0.0.z es la Moderation (Figura 4). direccin IP de nuestro servidor). Luego, Para deshabilitar un artculo especfico una vez que el script ha hecho su trabajo, pulsaremos el icono Refuse. Luego tenemos podemos comprobar la salida para ver los la opcin de componer y enviar un email al errores. Si todo transcurri sin problemas, usuario que present el artculo explicando veremos nuevos artculos en la pgina prinpor qu ha sido deshabilitado. Habilitar cipal de BilboPlanet. artculos es igual de fcil: pulsamos el Por defecto, BilboPlanet publica automicono Accept que hay junto al artculo que ticamente todos los artculos buscados, aundeseamos y ya est. que podemos administrarlos manualmente a travs de Administration | Manage posts. Aqu podemos cambiar el estado de cada artculo de active a inactive o pending, o borrar el artculo totalmente. Las capacidades de filtrado de BilboPlanet nos permiten mostrar artculos solamente para un determinado usuario o limitar la lista solamente a artculos Figura 1: BilboPlanet cuenta con un asistente de instalacin con un estado especfico. Bil- muy amigable.

Figura 2: Panel Dashboard de BilboPlanet.

Figura 3: Aadiendo un feed.

WWW.LINUX- MAGAZINE.ES

Nmero 78

69

LINUX USER Workspace: BilboPlanet

Adems de actuar como un planeta para los miembros de la comunidad, BilboPlanet tambin se puede usar como solucin de lista de correos interna. En Administration | Newsletter, podemos componer un mensaje y enviarlo a todos los usuarios seleccionados registrados en BilboPlanet. La seccin Configuration nos permite ajustar algunas configuraciones clave. En Planet Author podemos editar nuestra informacin, incluyendo direccin de correo, sitio web, cuenta de mensajera instantnea y resumen de nuestra biografa. La seccin Planet configuration nos permite configurar las configuraciones de nuestra instalacin BilboPlanet. Aqu podemos editar el nombre y descripcin del planeta, elegir un tema diferente y especificar un mensaje de informacin para que se muestre en la pgina principal. Tambin podemos habilitar o deshabilitar la pgina de contacto y la funcionalidad de votacin y moderacin. Si deseamos hacer un seguimiento de las estadsticas del planeta, podemos habilitar la opcin Planet Analytics Engine y especificar el motor de estadsticas que queremos usar. BilboPlanet soporta Google Analytics y su popular alternativa de cdigo abierto, Piwik. Si elegimos el primero, tendremos que proporcionar nuestro identificador Google Analytics para unir nuestro planeta a nuestra cuenta de Google Analytics. Tambin podemos habilitar la opcin de subs-

cripcin para permitir a los visitantes aadir sus propios feeds a nuestro planeta. Si habilitamos la funcionalidad de subscripcin, tambin debemos editar el contenido predeterminado de la pgina de subscripcin, la cual explica las reglas y requerimientos de nuestro planeta. Las opciones de la seccin Import/Export nos permiten Figura 4: BilboPlanet nos permite moderar artculos. exportar datos para su archivado. La exportacin de datos es tan fcil como seleccionar las tablas de la base de datos deseada y pulsar el botn Export. Obtener los datos exportados a BilboPlanet tampoco es particularmente difcil: seleccionamos el fichero de copia de seguridad .json.gz y pulsamos el botn Import. BiboPlanet tambin soporta varias maneras de actualizar los feeds RSS, los cuales podemos habilitar y configurar en Feed fetching (Figura 5) . Probablemente la Figura 5: Configuracin de las opciones de opcin ms fcil sea permitir al sistema bsqueda del feed. actualizarlos cuando un visitante accede a la pgina principal. Para activar esta funcin marcamos el cuadro de comprobacin Finalmente, la seccin System | PermisEnable update on loading of index page. La sions nos permite especificar roles y priviprincipal desventaja de este mtodo es que legios para cada usuario de BilboPlanet. La podra ralentizar nuestro sitio. Afortunadafuncionalidad de acceso de BilboPlanet es mente, BilboPlanet nos permite configurar bastante simplista, pero podemos elegir un trabajo cron para buscar feeds RSS distintos roles y habilitar ciertos privileautomticamente a intervalos regulares. gios, tales como la capacidad de moderar artculos y administrar la instalacin de BilboPlanet. Tal y como podra esperarse, usar BilboPlanet no es particularmente difcil. La pgina principal muestra todos los artculos buscados con sus resmenes cortos (Figura 6). Los visitantes pueden votar los artculos y tambin subscribirse a un feed RSS de BilboPlanet. La pgina principal ofrece adems algunas opciones de filtrado, de modo que los visitantes pueden ver los artculos posteados en el da, semana o mes actual. La pgina Top 10 muestra los artculos con ms votos, y la seccin Archives lista todos los artculos agrupados por mes. En trminos generales, BilboPlanet no sustituir una aplicacin lectora de RSS, pero puede resultar bastante til cuando necesitamos agregar y publicar contenido I de mltiples fuentes RSS.

RECURSOS
Figura 6: BiboPlanet en todo su esplendor, con accesos fciles para los posts ms recientes, los 10 posts Top y los posts filtrados. [1] BilboPlanet: http://www.BilboPlanet. com

70

Nmero 78

WWW.LINUX- MAGAZINE.ES

Lnea de Comandos: GPG (II) LINUX USER

Cifrado de mensajes con GNU Privacy Guard Parte II

Ms GPG
Continuamos nuestro mini-tutorial sobre el uso de GNU Privacy Guard para el cifrado y descifrado de mensajes. POR BRUCE BYFIELD
l mes pasado destaqu las nociones elementales del envo de mensajes cifrados usando GNU Privacy Guard (GPG) [1]. Este mes dar ms detalles acerca de cmo usar GPG en particular, cmo administrarlo y personalizarlo, cmo usar servidores de claves y el papel de firmar claves y crear una red de confianza. Sin embargo, en primer lugar, ah va un rpido resumen: GPG [2] es una imple-

mentacin libre de Pretty Good Privacy. Utiliza dos claves para cifrar y descifrar mensajes: nuestra clave pblica, que distribuimos a la gente con la que queremos intercambiar mensajes, y una clave privada o secreta, que usamos para descifrar mensajes que recibimos. Las claves pblica y privada se denominan par de claves y se guardan en un llavero, junto con las claves pblicas que hemos recogido de nuestros corresponsales. Usando las claves podemos cifrar y descifrar ficheros de texto. Tambin podemos exportarlas a un fichero de texto para compartirlas. Y ahora, profundicemos un poco ms.

Herramientas para la Administracin de Claves


Tres herramientas nos ayudan a administrar claves: El comando gpg, ideado principalmente para claves que se han exportado

a ficheros y para la administracin de alto nivel de claves de nuestro llavero; la lnea de comandos de GPG para las claves de nuestro llavero; y el fichero ~/.gnupg/ gpg.conf, que establece el comportamiento por defecto de GPG en su conjunto. Como cabra esperar, estas herramientas se solapan parcialmente en lo que se refiere a su funcionalidad, aunque las diferencias entre unas y otras nos permiten llevar a cabo varias tareas. El formato para el comando es gpg OPCIONES FICHERO o CLAVE. Como describ en mi artculo del mes pasado, su propsito general es generar claves, exportarlas e importarlas y cifrar y descifrar ficheros de texto. Adems, el comando gpg incluye algunas opciones para ver los contenidos de un llavero. Aparte de las opciones bsicas --list-keys y --fingerprint, tambin podemos especificar --list-public-keys y --list-secretkeys. Este comando es adems til para borrar claves usando el formato --deletekey-nombre o --delete-secret-key nombre. Sin embargo, si tanto la clave pblica como la privada se encuentran en el llavero, debemos eliminar la clave secreta primero o bien usar --delete-secret-

WWW.LINUX- MAGAZINE.ES

Nmero 78

71

LINUX USER Lnea de Comandos: GPG (II)

and-public-key nombre. Tambin podemos deshabilitar una clave con --gen-revoke NOMBRE. Para modificar una clave pblica especfica podemos hacerlo con el comando gpg --edit-key NOMBRE (Listado 1). Cuando lo introducimos se nos mostrar

un resumen de la clave asociada con este nombre incluyendo quin la ha firmado y qu grado de confianza tiene. Luego se muestra el prompt de GPG. Desde este prompt podemos introducir varias docenas de sub-comandos, ninguno de los cuales va precedido de dos guiones.

Listado 1: Edicin de Claves


01 $ gpg --edit-key Bruce Byfield 02 gpg (GnuPG) 1.4.10; Copyright (C) 2008 Free Software Foundation, Inc. 03 This is free software: you are free to change and redistribute it. 04 There is NO WARRANTY, to the extent permitted by law. 05 06 Clave secreta disponible. 07 08 pub 2048R/86C27624 creado: 2011-11-05 caduca: nunca 09 confianza: absoluta validez: absoluta uso: E 10 sub 2048R/61503B0D creado: 2011-11-05 caduca: nunca 11 [ absoluta ] (1). Bruce Byfield (Esto es de prueba) <bbyfield@nanday.com> 12 13 gpg> uso: SC

Listado 2: Comando passwd


01 gpg> passwd 02 La clave est protegida. 03 04 Necesita una frase contrasea para desbloquear la clave secreta 05 del usuario: Bruce Byfield (Esto es de prueba) <bbyfield@nanday.com> 06 clave RSA de 2048 bits, ID 86C27624, creada el 2011-11-05 07 08 Introduzca la nueva frase contrasea para esta clave secreta. 09 10 Repita frase contrasea:

Listado 3: Subclaves
01 gpg> adduid 02 Nombre y apellidos: Paul Brown 03 Direccin de correo electrnico: paul.brown@example.com 04 Comentario: Amiguete 05 Ha seleccionado este ID de usuario: 06 07 08 Cambia (N)ombre, (C)omentario, (D)ireccin o (V)ale/(S)alir? V 09 10 Necesita una frase contrasea para desbloquear la clave secreta 11 del usuario: Bruce Byfield (Esto es de prueba) <bbyfield@nanday.com> 12 clave RSA de 2048 bits, ID 86C27624, creada el 2011-11-05 13 14 pub 2048R/86C27624 creado: 2011-11-05 caduca: nunca 15 confianza: absoluta validez: absoluta uso: E 16 sub 2048R/61503B0D creado: 2011-11-05 caduca: nunca 17 [ absoluta ] (1) Bruce Byfield (Esto es de prueba) <bbyfield@nanday.com> 18 [desconocida] (2). Paul Brown (Amiguete) <paul.brown@example.com> uso: SC Paul Brown (Amiguete) <paul.brown@example.com>

Tampoco tienen efecto hasta que los introducimos, guardamos y salimos del prompt. Si deseamos salir sin hacer cambios permanentes, escribimos quit y pulsamos n cuando se nos pregunta si queremos guardarlos. Los subcomandos disponibles en el prompt varan ampliamente. Por ejemplo, si introducimos list, se repite la informacin mostrada al principio, y con fpr se muestra la huella digital de la clave. Lo que es ms importante, podemos editar los contenidos de la clave. Con expire podremos cambiar su fecha de caducidad, mientras que con passwd cambia la frase de paso para la clave (Listado 2). Tambin podemos habilitarla o deshabilitarla, o cambiar la clave por defecto con primary. Otra opcin especialmente til es crear una subclave. Una subclave posee la mayora de las caractersticas de la clave que hemos creado con el comando gpg --gen-key, pero tiene un ID de usuario diferente y opcionalmente una direccin email distinta. Una subclave tambin puede ser til cuando queremos una nica clave para diferentes destinatarios, tales como una clave para enviar mensajes a nuestra familia y otra para nuestros amigos (Listado 3). En lugar de tener que pasar por el largo proceso que supone generar una clave diferente completamente, podemos introducir adduid y dar el nombre, direccin email y frase de paso. Con deluid NOMBRE la haremos innecesaria, pues la borra. Si queremos cambiar el comportamiento general de GPG podemos editar el fichero ~/.gnupg/gpg.conf. Este fichero de configuracin est extensamente comentado, con cada opcin explicada detalladamente. Podemos usar gpg.conf para cambiar la locale para mostrar y cifrar mensajes, para cambiar la localizacin de los ficheros o para especificar un fichero con opciones adicionales (vase la pgina man). Aunque GPG supone que el primer par de claves que introducimos es la predeterminada es decir, la nuestra podemos usar la pantalla default-key para anularla. Tambin podemos descomentar defaultrecipient-self para asegurarnos de que obtenemos una copia de cada mensaje que enviamos. Aunque probablemente no utilicemos gpg.conf muy a menudo, deberamos considerar editarlo al menos una vez. Con las configuraciones adecuadas, gpg.conf puede ayudarnos a conseguir que

72

Nmero 78

WWW.LINUX- MAGAZINE.ES

Lnea de Comandos: GPG (II) LINUX USER

GPG se comporte exactamente como deseemos.

Uso de Keyservers
Un servidor de claves es exactamente lo que su nombre indica: un sitio web pblico donde se intercambian claves. Podemos pensar en l como un paso ms en lo que a complejidad se refiere de un intercambio informal de claves pblicas entre amigos y asociados. El proyecto GPG mantiene sus propios servidores, pero la mayora de los servidores de claves son para grupos especficos, de modo que existe uno para MIT [3] y otro para Ubuntu [4], por ejemplo. A pesar de esta especializacin, las claves pueden difundirse ampliamente entre servidores de claves, de manera que debemos estar muy seguros de querer difundir las claves pblicas que estamos pensando subir. Muchos servidores de claves tienen sus propias interfaces grficas, aunque GPG en s tiene todas las opciones necesarias. Habitualmente viene con keys.gnupg.net como servidor de claves por defecto, si bien podemos aadir el campo key-server a gpg.conf para cambiar la URL del nuevo servidor predeterminado quitando el http://www. Para localizar una clave en un servidor de claves lo hacemos con la opcin -search-keys NOMBRE. Una vez que hemos localizado la clave pblica que buscamos, usamos --recv-keys NOMBRE para descargarla a nuestro llavero o --send-keys NOMBRE para subirla al servidor.

De manera similar, si nosotros firmamos la clave de otro, estaremos ayudando a terceros a decidir si pueden confiar en la clave. Estas son dos de las razones por las que la firma de claves sea una tradicin en muchos encuentros Debian. En persona, podemos asegurar ms fcilmente la identidad de alguien. Evidentemente, la firma de claves tambin nos da una razn para presentarnos a desconocidos. Podemos firmarlas de distintas maneras. Cuando se trate de una clave exportada, el comando es gpg -s FICHERO o gpg --sign FICHERO. Si la clave que estamos firmando se export a un fichero binario, usaremos --detach sign o -b para colocar nuestra firma en un fichero de firmas adjunto. Desde el prompt gpg, introducimos sign para dejar una firma para la clave pblica que estamos editando. Si confiamos plenamente en el titular de la clave, tambin podemos usar nrsign para crear una firma no revocable. De manera similar, si la firma slo es para nuestros propsitos y no queremos la responsabilidad de declarar la fidelidad del propietario de la clave, podemos usar lsign. Tambin podemos combinar los prefijos para introducir un comando como nrlsign.

Cuando deseamos ver si una clave exportada ha sido firmada, el comando es gpg - verify FICHERO (Listado 5). Para ver una lista de firmas usamos la opcin --check-sigs. Desde el prompt, el comando es check. Para ayudarnos ms a tomar decisiones sobre los titulares de las claves, GPG usa el concepto de confianza en el prompt de GPG para especificar el nivel de confianza que tenemos (Listado 6). Introduciendo el subcomando trust podemos clasificar la confianza de 1 (no s o no quiero comprometerme) a 5 (confo en ltima instancia). Esta informacin se almacena en la base de datos de confianza que est instalada en ~/.gnugp cuando comenzamos a usarla. La definicin exacta de cada nivel puede ser subjetivo (por ejemplo, cul es la diferencia entre confiar plenamente y confiar en ltima instancia?), pero, aunque sea imprecisa esta clasificacin, an nos ayuda a indicar cunto confas en una clave o en su propietario (una distincin que no siempre es clara en GPG). La firma de claves y la confianza se utilizan por GPG para crear una red de confianza una lista de conexiones que sugieren fiabilidad general. Los detalles de una red de confianza dependen de cmo

Listado 4: Firma de Claves


01 gpg> sign Linux Magazine 02 03 pub 1024D/28C77251 creado: 2004-12-23 caduca: nunca 04 confianza: desconocido validez: desconocido uso: SC

Firmas y Webs de Confianza


Si intercambiamos mensajes cifrados con poca gente, entonces presumiblemente podemos confiar en que son quienes dicen ser. Pero qu ocurre si de repente necesitamos una correspondencia cifrada con un amigo de un amigo o un completo desconocido? Cmo sabemos que nuestro nuevo corresponsal es de confianza? Nuestra decisin sobre si confiar en alguien probablemente est basada en elementos que van ms all de los lmites de cualquier aplicacin de software. Sin embargo, GPG incluye funcionalidades que nos facilitan resolver estos problemas. Una de dichas funcionalidades es la capacidad de firmar claves pblicas de otra gente. Basndonos en quin ha firmado una clave, podemos decidir que la persona a la que pertenece es quien dice ser (Listado 4).

05 Huella de clave primaria: B0EA 732B 6DF1 4767 9B5C 55FE FAC7 4165 28C7 7251 06 07 08 09 Est realmente seguro de querer firmar esta clave 10 con su clave: Paul Brown (Amiguete) <paul.brown@example.com> (86C27624)? 11 12 Firmar de verdad? (s/N) s 13 14 Necesita una frase contrasea para desbloquear la clave secreta 15 del usuario: Paul Brown (Amiguete) <paul.brown@example.com> 16 clave RSA de 2048 bits, ID 86C27624, creada el 2011-11-05 Linux Magazine (Linux New Media) <subs@linuxmagazine.com.es>

Listado 5: Verificacin de claves


01 $ gpg --verify LM.gpg.gpg 02 gpg: Firmado el vie 02 dic 2011 23:57:05 CET usando clave RSA ID 86C27624 03 gpg: Firma correcta de Paul Brown (Amiguete) <paul.brown@example.com> 04 gpg: day.com> alias Bruce Byfield (Esto es de prueba) <bbyfield@nan-

WWW.LINUX- MAGAZINE.ES

Nmero 78

73

LINUX USER Lnea de Comandos: GPG (II)

est compilado GPG, aunque generalmente tiene una profundidad limitada. Es decir, si GPG se configur para permitir una profundidad de tres, alguien separado de nosotros por cuatro conexiones no podra validar una clave. Una confianza parcial cuenta menos que una confianza total. Tpicamente, se necesitan dos o tres personas que marquen una clave como parcial para igualar una persona en la que se confa totalmente. Podemos ver cmo se lleva la cuenta de la confianza introduciendo gpg --check-trustdb. La respuesta muestra qu ndices de confianza parciales igualan a un ndice de confianza completa, el alcance, el nmero de claves firmadas y los niveles de confianza en uso (Listado 7).

El Contexto Social
Dos artculos no son suficientes para explicar GPG completamente. Sin embargo,

entre ste y el del mes pasado ya tenemos informacin suficiente para manejar situaciones cotidianas. Si necesitamos ms, siempre podemos consultar la pgina man. Ntese, sin embargo, que la documentacin para el proyecto es generalmente ms completa, especialmente porque nos ofrece ms informacin de fondo que necesitamos para comprender GPG [5]. Incluso as, si nuestra meta es comprender GPG completamente, pasaremos horas con sus herramientas. GPG es una aplicacin compleja incluso para lo que es normal en la lnea de comandos, y an tiene una clasificacin baja en lo que a usabilidad se refiere, incluso a pesar de que sus limitaciones se empezaron a discutir por primera vez hace ms de una dcada [6]. Dada la complejidad de GPG y lo poco amigable que es para el usuario, antes o

Listado 6: Niveles de Confianza


01 gpg> trust 02 pub 1024D/28C77251 creado: 2004-12-23 caduca: nunca 03 confianza: desconocido validez: desconocido uso: E 04 sub 1024g/B55ACCE2 creado: 2004-12-23 caduca: nunca uso: SC

05 [desconocida] (1). Linux Magazine (Linux New Media) <subs@linuxmagazine.com.es> 06 07 Por favor, decida su nivel de confianza en que este usuario 08 verifique correctamente las claves de otros usuarios (mirando 09 pasaportes, comprobando huellas dactilares en diferentes fuentes...) 10 11 12 1 = No lo s o prefiero no decirlo 13 2 = NO tengo confianza 14 3 = Confo un poco 15 4 = Confo totalmente 16 5 = Confo absolutamente 17 m = Volver al men principal 18 19 Su decisin? 4 20 21 pub 1024D/28C77251 creado: 2004-12-23 caduca: nunca 22 confianza: total validez: desconocido uso: E 23 sub 1024g/B55ACCE2 creado: 2004-12-23 caduca: nunca uso: SC

despus probablemente nos preguntaremos si aprender ms merece la pena. Evidentemente, la respuesta depende de lo importante que sea para nosotros la capacidad para enviar mensajes cifrados (y en algunos casos, si GPG es legal en nuestro pas). Slo nosotros tenemos la respuesta. Pero, para algunos, merece la pena indicar que GPG no es simplemente una utilidad, sino parte de un contexto social geeky. El intercambio de claves pblicas, sin decir nada de la firma de claves, puede ser un momento importante de aceptacin en una comunidad. De hecho, el uso de GPG se ha llegado a formalizar en numerosos sitios a travs del software libre. En el proyecto Debian, por ejemplo, la propuesta de una clave pblica y de quin la ha firmado son pasos importantes en la aplicacin para llegar a ser nuevo mantenedor: como parte del proceso de presentacin de candidaturas, los aspirantes a nuevos mantenedores deben presentar una clave firmada por dos mantenedores ya existentes [7]. Este proceso constituye un medio de identificacin prctico. Pero en Debian, la firma de claves se ha convertido en un importante rito social. Tanto es as, que GPG probablemente an sera importante incluso si no existiera la necesidad de identificar a la gente formalmente. En proyectos como Debian, GPG ha ido mucho ms lejos, siendo una til aplicacin y llegando a formar parte de la cultura de sus usuarios. Bajo este contexto, si no entendemos lo bsico de GPG, el riesgo del ostracismo se convierte en una posibilidad I muy real.

RECURSOS
[1] Lnea de Comandos: GPG por Bruce Byfield, Linux Magazine Edicin en Castellano nmero 77. [2] GnuPG: http://www.gnupg.org [3] Servidor de claves MIT: http://pgp.mit. edu/ [4] Servidor de claves de Ubuntu:

24 [desconocida] (1). Linux Magazine (Linux New Media) <subs@linuxmagazine.com.es> 25 Por favor, advierta que la validez de clave mostrada no es necesariamente 26 correcta a menos de que reinicie el programa.

http://keyserver.ubuntu.com:11371/
[5] Documentacin GnuPG: http://www. gnupg.org/documentation/ [6] Usability of Security: A Case Study por Alma Whitten and J. D. Tygar, Carnegie Mellon University, Diciembre 1988: http://reports-archive.adm.cs. cmu.edu/anon/1998/abstracts/98-155. html [7] Rincn de Desarrolladores Debian: http://www.debian.org/devel/join/ nm-step2

Listado 7: Comprobacin Base Datos de Confianza


01 $ gpg --check-trustdb 02 gpg: 3 dudosa(s) necesarias, 1 completa(s) necesarias, 03 modelo de confianza PGP 04 gpg: nivel: 0 validez: 1 firmada: 0 confianza: 0-, 0q, 0n, 0m, 0f, 1u

74

Nmero 78

WWW.LINUX- MAGAZINE.ES

Konsultorio COMUNIDAD

EL CONSULTORIO DE KLAUS
Klaus Knopper es el creador de Knoppix y co-fundador de la LinuxTag Expo. En la actualidad trabaja como profesor, programador y consultor. Si tiene algn problema de
repentino o un simple nmero por pantalla. ;-) Pido disculpas si las tpicas sospechas suenan algo primitivas, pero me aventurar 1. Falta de memoria? Si el proceso de instalacin necesita ms memoria fsica de la que la mquina dispone, especialmente si no se ha creado an ninguna particin swap, el kernel va matando programas de manera ms o menos aleatoria (probablemente el instalador) y muestra un mensaje del tipo no more processes in this runlevel. 2. RAM defectuosa? Suele provocar reinicios repentinos de la mquina o corromper los datos que se leen o escriben en cualquier medio. En el mejor de los casos, el kernel muestra diferentes mensajes de error indicando que la longitud de los datos en la memoria no es la esperada. Lo ms probable es que NO reciba nunca un mensaje que diga la RAM es defectuosa, a menos que el chipset de la mquina incorpore algn mecanismo de deteccin y correccin de errores de memoria. 3. Problemas con el disco o el controlador? Si falla la lectura de algn archivo en un punto crtico del proceso de instalacin, como por ejemplo para la activacin de mdulos del kernel modules (drivers) para algn hardware, o a la hora de desempaquetar la ramdisk del sistema base o alguna librera, lo ms probable es que el sistema se detenga y el kernel informe de que no se puede montar el (nuevo) sistema de archivos o que fall init. Puede deberse a un disco defectuoso, a un controlador de disco con el DMA en mal estado, o simplemente a un cable defectuoso o un contacto en el conector en el caso de una mquina ms antigua. 4. Errores de lectura del disco de instalacin? Aunque me dijo que ha probado varias veces con distros diferentes, su dispositivo de CD-ROM podra estar daado, de manera que no puede leer los datos correctamente despus de estar funcionando durante un rato. A veces incluso se puede or cmo la cabeza lectora se mueve de un lado a otro para intentar localizar un sector. En ese caso, puede intentar repetir la instalacin desde un lector de CD (o DVD) por USB. Si la mquina no permite el arranque desde USB, puede probar a copiar de nuevo el medio de instalacin, poner ambas copias en cada medio y sacar la primera del dispositivo interno en cuanto se carguen el kernel y la ramdisk inicial. El pequeo sistema de la ramdisk debera ser capaz de encontrar el dispositivo USB externo y continuar la instalacin desde l. 5. No se puede montar el sistema de archivos raz? Si la instalacin finaliza correctamente pero el sistema falla inmediatamente despus del primer arranque, lo ms frecuente es que se deba a un mensaje que dice cannot mount root file system. Suele ocurrir cuando el instalador no es capaz de aadir todos los mdulos para activar el controlador del disco duro. Es un fallo del instalador que tiene difcil solucin. Quiz tenga que compilar su propio kernel para que contenga el mdulo necesario y aadirlo al sistema instalado arrancando en modo rescate desde el CD de instalacin, para luego iniciar una terminal chroot en el sistema previamente instalado. 6. Error en un driver de hardware? Una vez ms, si la instalacin finaliz correctamente y el sistema falla incluso antes de intentar acceder al sistema de archi-

configuracin, o simplemente quiere conocer mejor cmo funciona Linux, no dude en escribir sus preguntas a:

preguntas@linux-magazine.es

El Kernel de Fedora Falla


Me gusta el aspecto de Fedora y he intentado instalar varias versiones, desde la Fed 10 a la Fed 14, pero siempre, despus de instalar, me muestra un mensaje de error del kernel unos segundos antes de iniciar el sistema operativo. Una vez, con una versin de Fedora, me mostr el mensaje durante la propia instalacin, y el proceso se detuvo. Curioso pero frustrante a la vez, sabe usted por qu me falla tanto Fedora? John Bennetto Hubiera estado bien disponer del mensaje de error que menciona. El motivo es porque es ms sencillo encontrar el problema con l que con un reinicio

WWW.LINUX-MAGAZINE.ES

Nmero 78

75

COMUNIDAD Konsultorio

Tabla 1: Mdulos del Kernel y Mdulos de Xorg


Tarjeta Intel ATI/AMD NVidia Mdulo del kernel i915 Mdulo de Xorg intel

radeon nouveau (libre), nvidia (privativo) cirrusfb, neofb,

radeon or ati Nouveau (libre) o nvidia (privativo), nv (libre pero actualmente sin desarrollo) fbdev (framebuffer slo) o cirrus, neomagic, (con aceleracin) vesa

Drivers Accelerated acelerados (varios) Genrico

Modo VESA (interno en el kernel)

vos raz, o DESPUS de montar el sistema de archivos raz (en ese caso aparece algo como init verstion xxx starting ), entonces el problema es que un driver de hardware que NO era necesario durante la instalacin pero que arranca en el sistema instalado, como por ejemplo un driver grfico, podra haber fallado. Dependiendo de la causa del fallo (aqu resulta de gran ayuda el mensaje de error concreto), se puede intentar deshabilitar el driver defectuoso editando las opciones de arranque desde el cargador de arranque (en el caso de GRUB, se hace presionando la tecla e de edit y aadiendo las opciones a la lnea de KERNEL). Las ms tpicas son
linux acpi=off noapic U nolapic nomodeset nodma

plazar por la menos invasiva acpi=noirq). 7. De verdad que me hubiera gustado saber lo que deca ese mensaje de error del kernel ;-)

Grficos Borrosos
Los grficos se ven borrosos cuando trato de ejecutar el Live CD que vena con la Especial Linux Shell 1 [Knoppix 6.7]. No estoy muy familiarizado con Linux y pens que me podras ayudar o darme alguna indicacin. Gracias por tu tiempo. Jared. Lo cierto es que algunas tarjetas grficas estn mejor soportadas que otras. Debido a la falta de un estndar comn, los fabricantes suelen aadir funciones especiales que mejoran las estadsticas de sus tarjetas, pero a cambio, las hacen incompatibles con versiones anteriores de las mismas. El subsistema grfico de Linux est compuesto por una parte de componentes del kernel para los drivers de hardware y una parte en espacio de usuario para los drivers de software (Tabla 1) que soporta la mayora (pero pocas veces todas) las funciones de un chipset dado.

Depende totalmente del modelo de tarjeta grfica y de cmo de bien funcione con los drivers, con aceleracin y sin ella (framebuffer, VESA). Una estimacin aproximada es: si la tarjeta es mucho ms nueva que el kernel y que los drivers de Xorg en uso, probablemente no est bien soportada an y no funcionen bien algunas funcionalidades como el 3D, la resolucin de la pantalla no se maneje correctamente, o la pantalla parpadee al no establecerse correctamente las frecuencias del monitor. Con el fin de no tener que tirar la toalla y esperar a una nueva versin de kernel o de Xorg, se suelen utilizar algunos trucos que permiten usar estas tarjetas, aunque sea con unos grficos lentos o de baja calidad. Una caracterstica especfica de Knoppix es que deshabilita la extensin Composite, la cual se encarga de manejar las transparencias y que, aunque atractiva visualmente, consume muchos recursos y slo es til para efectos ajenos al trabajo diario productivo. Esta extensin se puede deshabilitar con los cdigos
knoppix no3d

o
knoppix nocomposite

Si con ello no bastara, puede probar con el modo VESA sin aceleracin:
knoppix xmodule=vesa

pero una vez localizado el driver que provoca el problema, se debe quitar el resto, porque de lo contrario se puede acabar con un disco duro insufriblemente lento (nodma) o con componentes de hardware que no funcionan (por causa de acpi=off, que se puede reem-

Y si tampoco fuese suficiente, puede intentarlo con los modos VESA framebuffer de resolucin fija,
fb800x600

Listado 1: Errores xinput y xkb-data


01 (Reading database 10%dpkg: unrecoverable fatal error, aborting: failed in buffer_read(fd): files list for package `xinput: Input/ output error 02 03 E: Sub-process /usr/bin/dpkg returned an error code (2) 04 05 dpkg: warning: files list file for package `xinput missing, assuming package has no files currently installed 06 07 dpkg: warning: files list file for package `xbk-data missing, assuming package has no files currently installed 08 09 [logs truncated, you can probably delete most of the above, too]

o
fb1024x768

o
fb1280x1024

esta vez sin el knoppix delante. Cabe aclarar que en el modo VESA framebuffer, slo estn soportadas algunas resoluciones, entre las que no se encuentra el modo widescreen. Lo mejor de todo es que estos pequeos trucos funcionan con casi todas las tarjetas, incluso con aquellas

76

Nmero 78

WWW.LINUX-MAGAZINE.ES

Konsultorio COMUNIDAD

que no estn soportadas en absoluto por los mdulos que disponen de aceleracin grfica.

Problemas Arrancando desde Pendrive USB


Hola Klaus: tengo una Ubuntu Lucid 10.04 LTS en un pendrive USB. El kernel que usa es un linux-image2.6.32-26-generic. La lista completa de kernels es linux-generic, linux-image-2.6.3224-generic, linux-image-2.6.32-25-generic, linux-image-2.6.32-26-generic y linuximage-2.6.32-30-generic. He estado arrancando el sistema desde USB en unos porttiles Dell D420 y Lenovo X201s. Lo que ahora quiero hacer es actualizar mi sistema para que use la ltima versin de kernel con el fin de aligerar/aliviar el sistema, pero, por algn motivo, el sistema no funciona correctamente. Mis atajos de teclado no funcionan en absoluto (el escritorio o las ventanas no pueden rotar). He probado a hacer
apt-get update apt-get upgrade apt-get dist-upgrade

y me he encontrado con un problema con dos paquetes, xinput y xkb-data. Al tratar de reinstalarlos, recibo algunos mensajes de error (Listado 1), y tambin cuando intento eliminarlos. Al intentar actualizar el sistema me dice:
Squashfs error: Unable to U read page, block,U Unable to read fragment U cache entry

La informacin sobre el espacio de disco utilizado se puede ver en los listados anexos. Tambin he adjuntado logs de los siguientes archivos:
$ ls -l /var/log /var/log/syslog /var/log/messages /var/log/daemon.log kernel_boot.txt

archivos Live est Listado 2: Extracto de la Salida de incompleta. Puede ser syslog.txt porque no se copi 01 May 16 22:54:37 ubuntu kernel: [ 1515.600386] bien la primera vez, SQUASHFS error: squashfs_read_data failed to read porque se haya reesblock 0x190bfa crito despus acciden02 May 16 22:54:37 ubuntu kernel: [ 1515.600389] talmente, o porque el SQUASHFS error: Unable to read fragment cache dispositivo USB tenga entry [190bfa] problemas de lectura 03 May 16 22:57:41 ubuntu kernel: [ 1700.384133] (en ese caso DEBESQUASHFS error: zlib_inflate error, data probably RAN aparecer errores corrupt en el log del kernel en 04 May 16 22:57:41 ubuntu kernel: [ 1700.384139] forma de block read SQUASHFS error: squashfs_read_data failed to read errors, pero no se ve block 0x190bfa ninguno). 05 ... Los errores de lectura desde el sistema de archivos original pueden derivar en erromi red local. Qu pasos debera llevar a res de todo tipo. Para la instalacin de nuecabo para que sea lo ms seguro posible vos paquetes hay que leer antes varios en ambos casos, tanto en el sistema en s archivos de la base de datos de informacomo en la pasarela de acceso a la red? cin de paquetes de Debian/Ubuntu, de En lo que respecta al cliente de BitTomanera que se conozcan los metadatos rrent, hay alguna forma de restringir los para su posterior almacenamiento. Este torrents que se ejecutan por tracker? No paso siempre falla en sus intentos por quiero acabar compartiendo nada sospeactualizar ciertas partes del servidor de choso. Y otra pregunta, crees que es Xorg; no tiene que ver con los paquetes mejor usar alguna otra distro ms especque est intentando instalar, sino que ocufica para esto? Gracias! Ashwin rrir cada vez que el sistema intente leer Excepto para el acceso pblico de desde el sistema de archivos SquashFS slo lectura, no es recomendable roto. usar FTP para servir archivos, principalLa nica solucin que se me ocurre es mente porque las contraseas viajan sin reemplazar el archivo SquashFS defeccifrar. Al menos para las subidas y todos tuoso con el sistema parado, por ejemplo los accesos personales, yo recomendara desde un sistema distinto, y verificar la algn servicio cifrado como SSH, SSHFS o suma checksum del archivo antes de HTTPS con autenticacin. intentar reiniciarlo. Para estar seguro de que no hay ningn servicio accesible desde el exterior, aparte Seguridad de mi Servidor de los que elija, puede usar las reglas de Hola Klaus! Estoy tratando de insiptables que se muestran en el Listado 3, talar y configurar un servidor. La suponiendo que sea eth0 la interfaz de red idea es que haga de servidor de archivos y externa. puede que de cliente de BitTorrent. Estaba La primera regla crea un nuevo destino pensando en montar un Ubuntu Server y DESDEINTERNET, a la que se pasa cada usar FTP para acceder a los archivos. vez que un paquete llega a travs de eth0 Sin embargo, mi principal preocupacin (segunda regla). La tercera regla permite la es cmo mantenerlo seguro. En este vuelta de todo el trfico generado en las momento no estoy seguro de si hacer que conexiones que ha iniciado el propio servisea accesible desde Internet o slo desde dor, de manera que las descargas hechas

Listado 3: Reglas de iptables


01 iptables -N DESDEINTERNET 02 iptables -I INPUT -i eth0 -j DESDEINTERNET 03 iptables -A DESDEINTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT 04 iptables -A DESDEINTERNET -p tcp -m multiport --dports 21,22,443,6881:6889 -j ACCEPT 05 iptables -A DESDEINTERNET -p icmp --icmp-type echo-request -j ACCEPT 06 iptables -A DESDEINTERNET -j REJECT

Agradecera enormemente tu ayuda. Gibson La parte ms significativa de esos logs es el extracto que se muestra en el Listado 2. Significa que la parte comprimida de slo lectura (SquashFS) del sistema de

WWW.LINUX-MAGAZINE.ES

Nmero 78

77

COMUNIDAD Konsultorio

desde el servidor, las consultas DNS, etctera, funcionen. La cuarta regla abre los puertos 21 (FTP), 22 (SSH), 443 (HTTPS) y 6881 a 6889 (torrent) para que los clientes de Internet puedan acceder a los servicios ofrecidos por el servidor. Si su intencin es usar el cliente de torrent en modo slocliente, probablemente quiera eliminar el rango 6881:6889 para que los intentos de descarga provenientes de los clientes esclavos sean bloqueados mientras usted descarga. La quinta regla le permite comprobar desde el exterior si el servidor est activo o no. Y la ltima regla impide cualquier otra conexin entrante con un mensaje ICMP connection refused. Si le preocupan los ataques de tipo flood, puede usar DROP en lugar de REJECT, que hace que el servidor parezca muerto y no conteste a ningn intento de conexin excepto a aquellos dirigidos a los puertos permitidos. Si tanto el servidor como el proveedor soportan IPv6, deber aplicar estas mismas reglas con ip6tables o, alternativamente, deshabilitar IPv6 para que nadie se salte las reglas aplicadas a IPv4 utilizando IPv6 para llegar hasta el servidor. Si quiere ofrecer HTTP sin cifrar para proporcionar acceso annimo a los archivos, deber abrir tambin el puerto 80. Adems de todo esto, puede que quiera permitir conexiones FTP pasivas, para lo cual tendr que cargar el mdulo de kernel ip_conntrack_ftp con objeto de que las conexiones FTP entrantes puedan acceder a puertos aleatorios para establecer la comunicacin de datos. Esto por supuesto es un riesgo de seguridad potencial, por lo que mi recomendacin es la de no usar FTP en absoluto y que todas las descargas se hagan a travs de HTTP(S):.

algo en la mquina en comparacin con otras distros Live: 1. sudo funciona, as sin ms 2. Knoppix detecta todos los discos y aade las entradas a /etc/fstab. Supongo que son cosas muy simples, pero son tan tiles! Gracias una vez ms y mis mejores deseos para el futuro. Saludos, Jeremy PS: Qu tal una versin DVD de 64 bits? Gracias por sus amables comentarios. Knoppix no es ms que una Debian preconfigurada. Desde que decid que no era buena idea distribuirla con contraseas preestablecidas, no hay ninguna contrasea predefinida. Las nicas formas de hacerse root es con una terminal abierta en la que ya se sea root (consola de texto), o usando sudo sin contrasea. El script que se encarga de poblar /etc/fstab se escribi cuando an no existan HAL ni udev. Ahora el script (rebuildfstab) lo ejecuta directamente udev durante la deteccin de particiones para que los sistemas de archivos se puedan montar fcilmente usando las entradas del archivo /etc/fstab, sin tener que llamar a HAL o udisks, ni tener que ejecutar el gestor de archivos con permisos de root. En cuanto al DVD en versin de 64 bits: por desgracia, no puedo mantener las versiones de 32 y 64 bits en paralelo, pero ahora que junto al kernel de 32 bits se incluye en Knoppix tambin el de 64 bits, quiz sea ms fcil crear derivados con un entorno de 64 bits puro usando Debianamd64 como base y copiando los scripts de arranque y las configuraciones de Knoppix.

Disco Duro
Querido Klaus: Gracias por deleitarnos con tu talento. Aparte de 12.2 Slackware, Fedora 14 y Ubuntu 11.04 (adems de Kubuntu 10.10 durante algn tiempo) como sistemas operativos, mis los tambin han tenido que ver con el cargador de arranque GRUB 2. Al reiniciar con el botn hardware de la mquina, tengo que esperar hasta que expire algn contador, esperar a que la BIOS termine de reconocer el disco duro o reiniciar por software inmediatamente con Ctrl+Alt+Supr. Muchas veces el LED del disco duro contina encendido y puedo esperar sentado. Consegu arreglarlo por un tiempo con update-grub, pero finalmente pude instalar el antiguo GRUB (gra-

Knoppix es una Pasada


Hola Klaus, slo quiero agradecerte todo el trabajo hecho con Knoppix y hacerte saber lo mucho que lo aprecio. Un par de cosas. Hace unos aos, me lo pas genial y aprend un montn sobre Linux creando mi propia distro Live basada en Knoppix (llamada JNX). De hecho, pas ms tiempo y me divert ms personalizndola que usndola! Knoppix cambi mi vida. Hoy me he cargado mi mquina Linux principal y Knoppix 6.5 me ha salvado la vida (una vez ms). Hay un par de cosas que quiz te parezcan triviales, pero que facilitan mucho todo a la hora de arreglar

cias a la ayuda de Linux Magazine); despus de un tiempo, volvi a ocurrir. La ltima vez, apagu el sistema rpidamente y fsck repar el sistema de archivos ext3 daado. Qu est ocurriendo? Una vez se me apag el sistema automticamente sin previo aviso y se reinici al pulsar una tecla al azar! La prueba de algn bot zombi! Adems, otra vez, ejecutando top, me pareci ver un rtkit-daemon. Podras explicarme todo esto? La esencia de GNU/Linux es la libertad. Cmo puedo evitar las trampas que convierten a mi sistema en un esclavo? Ya he hecho dd /dev/zero sobre mis discos duros de 200GB, pero los retardos en el arranque vuelven una y otra vez. Suelo usar Firefox, que ya es lo bastante popular como para convertirse en una pieza codiciada. Ayudara eliminar mi particin DOSe? Debera hacer dd /dev/zero sobre todos mis pendrives USB? Ya empiezo a desconfiar incluso de dd. De un usuario de Linux abrumado, Wilfred En lo que respecta al rtkit-daemon, he de prevenirte de que NO significa rootkit daemon, como pareces creer; rt significa real-time (scheduler). Es una herramienta de ayuda para dotar al kernel de una extensin para tiempo real [1]. Francamente, desconozco la razn por la cual la mquina se reinicia repentinamente o se modifica el cargador de arranque por arte de magia, pero tiene pinta ms bien de un problema de hardware, un cable defectuoso o problemas de RAM. En el caso de problemas de software/kernel, suelen aparecer mensajes de error del kernel indicando que se produjo un fallo o dando algn panic. El sobrecalentamiento de la CPU o de otras partes del chipset por culpa de algn ventilador estropeado tambin podran ser la causa del problema. Otra posibilidad es que la fuente de alimentacin est fallando y provoque oscilaciones en el nivel de potencia, lo que podra dar lugar a cuelgues o reinicios de los discos duros y de otros perifricos. Son errores difciles de encontrar si no es experimentando con las distintas partes del hardware para ver cundo se produce I el problema.

RECURSOS
[1] rtkit: http://packages.ubuntu.com/ lucid/rtkit

78

Nmero 78

WWW.LINUX-MAGAZINE.ES

COMUNIDAD Blogs: Para Mam

PARA MAM
Un cambio de vida hace que maddog revisite el soporte para sus usuarios finales tipo Mam y Pap y pondere un modelo de negocio diferente para los desarrolladores de software. POR JON MADDOG HALL
lar el software, hacer copias de seguridad y configurar las redes. Pas el tiempo y la tecnologa se hizo ms compleja y el equipo de soporte que necesitaba el usuario final Mam y Pap se traslad ms y ms lejos, hasta que finalmente la persona a la que llamabas se encontraba en un pas extranjero. Ya no podas ir tan fcilmente con el problema a alguien y sentarte a averiguar qu estaba mal. En vez de eso, a menudo primero se te preguntaba si estabas sosteniendo el ratn correctamente o si acababas de reiniciar el sistema. La ayuda se volva ms centralizada en nombre de la eficiencia (y rentabilidad) para las personas y las empresas que la prestan. La mayora de las grandes empresas tenan sus propios equipos de soporte, pero las pequeas y los particulares no. En la mayora de los pases, las pequeas y medianas empresas constituyen una gran parte del producto interior bruto (incluso ms con el agregado agrcola), y no suelen tener la ayuda profesional que necesitan. Conozco a un ingeniero elctrico que dirige su propia empresa y que normalmente pasa al menos tres horas por semana cuidando de tres de sus ordenadores. Por supuesto, el software que utiliza es sofisticado, pero l preferira pasar esas tres horas semanales dirigiendo su negocio. A partir de este ejemplo, supongamos que cada usuario final de un ordenador de sobremesa gasta 15 minutos al da, a un coste de cinco dlares, haciendo lo que podra considerarse tareas no esenciales para el negocio. Esto significa que los (aproximadamente) 125 mil millones de ordenadores de sobremesa malgastan 6.250 millones de dlares al da. Si se estima que 300 trabajadores del conocimiento pierden 15 minutos al da, es como si nueve personas nunca se presentaran a trabajar. Muchos creen que la computacin en nube soluciona este problema. La gente que utiliza software en la nube tendr a otras personas que le arreglen las aplicaciones, elimine los virus, haga las copias y dems, pero incluso si el sistema funcionase perfectamente, el software que estn utilizando esas personas no est hecho a la medida de sus necesidades. Tendrn que cambiar la forma en la que trabajan para amoldarse al software, y esto crear ineficiencia en sus negocios. Vivimos en un mundo cada vez ms diverso. Dar soporte a los 5 (o incluso 50) idiomas principales del mundo no es suficiente y cmo van a poder influir las pequeas comunidades de varios cientos de personas en empresas que tienen que satisfacer las necesidades de miles de millones? He odo muchas veces a representantes de las grandes compaias declarar que implementar cierta caracterstica o realizar un cambio en su software no era lo mejor para los intereses de su negocio, haciendo caso omiso de lo que es mejor para los intereses de sus clientes. Como el software era de cdigo cerrado, los clientes no podan tomar sus propias decisiones empresariales sobre la manera de usar el software existente o cambiarlo para satisfacerlas mejor. Necesitamos parar la produccin masiva del software como producto, cambiarlo por la venta de un servicio y volver a introducir el concepto de la venta de desarrollo de software, en el que se adapta el software como un servicio, para satisfacer las necesidades del usuario final. De esta manera, el control del software podr por fin volver a I manos del cliente.

i madre, la clebre mitad del equipo Mam y Pap (TM), muri el 7 de marzo del 2011. He escrito y hablado muchas veces sobre mi madre y mi padre y de su tradicional incapacidad para hacer frente a la tecnologa orientada a los dispositivos, lo cual es tremendamente irnico al ser su hijo ms joven adicto de toda la vida a cualquier cosa tcnica. Hace cuarenta aos, si trabajabas con un ordenador, lo normal es que tuvieras un ttulo universitario en ciencias de la computacin (o en lo que se convirti ciencias de la computacin), tal vez un mster o incluso un doctorado. Si no podas entender lo que estaba mal con tu programa o el sistema, podas preguntar a la persona sentada en el cubculo de al lado, que tena un nivel similar al tuyo. Con el tiempo compartido comenzaron a aumentar el nmero de mainframes, pero an as, slo personas formadas instalaban el software, configuraban la red y realizaban las copias de seguridad. En esencia, se hacan cargo de la mquina por ti. El equipo de soporte con el que se trabajaba en esos das tambin era atendido por titulados en ciencias de la computacin. Luego, hacia 1977, tanto Bill Gates como Steve Jobs pusieron mainframes en las mesas de todos, y se esperaba que cada uno fuera capaz de cuidarlo por si mismo. Es cierto que a los mainframes se les llamaba ordenadores personales y que los sistemas operativos eran simples en comparacin con los de las monstruosas unidades centrales de la poca, pero todava se necesitaba insta-

80

Nmero 78

WWW.LINUX-MAGAZINE.ES

PRXIMO NMERO

HERRAMIENTAS

WEB
Las ms recientes tecnologas web vienen cargadas con nuevas herramientas, nuevas tcnicas, nuevos dispositivos y nuevos modelos de negocios... Parece un buen momento para repasar el mundo cambiante de la administracin y desarrollo web. El mes que viene veremos algunas de las herramientas ms importantes utilizadas en la actividad para la creacin y administracin de la ltima generacin de sitios web
Ya puedes seguir el da a da de lo que sucede en el mundo de GNU/Linux conectando con las noticias diarias en nuestro Facebook: http://www.facebook.com/ linuxmagazine. y Twitter: http://twitter.com/linux_ spain Tambin puedes recibir noticias de lo que te espera en los siguientes nmeros de Linux Magazine, as como ofertas, regalos y novedades subscribindote a nuestro boletn en http://www. linux-magazine.es/Readers/ Newsletter.

Phoosani-fotolia.com

A LA VENTA: FEBRERO 2012


82
Nmero 78
WWW.LINUX- MAGAZINE.ES

Potrebbero piacerti anche