You are on page 1of 73

DVD

Arranque
Este DVD contiene dos caras, con
Kubuntu 11.04 por un lado y Slackware
13.37 por el otro. Kubuntu viene en
versión “Live” y de instalación, por lo
que puede ser arrancada y probada sin
instalar nada en el disco duro.
Para empezar a usar su Linux, inserte
el DVD en el reproductor y rearranque
el ordenador. Si no aparece el menú
del DVD, tiene que ajustar la BIOS para
arrancar desde el disco. Para hacerlo,
nos a
E C T U OSO? al estado, escríbaera que normalmente ha de pulsar una tecla
DEF está en
m
carlo o
p
¿DVDes que tu DVD sti durante las primeras fases del arran-
diagno
Si cre s para que del ordenador (habitualmente F2 o
azine.e
@ lin ux-mag v o. Supr), buscar el menú que permite
dvd o nue
en viemos un cambiar la secuencia de arranque de
te
dispositivos y colocar el lector de DVDs
en el primer lugar de la secuencia. Pos-
teriormente se guardan los cambios y
se sale de la herramienta de
configuración para que se reinicie el
arranque. Como cada BIOS es dife-

KUBUNTU 11.04 Y rente, recomendamos consultar la


documentación del fabricante para
realizar esta operación.

SLACKWARE 13.37 DVD de dos caras


Este DVD es de dos caras, aunque
funciona igual que un DVD conven-
cional, es decir: el lector siempre lee
a nueva versión de Kubuntu [1] ahora ofrecen un aspecto coherente con el

L
la cara que está hacia abajo. Para evi-
incluye las novedades de Ubuntu resto de aplicaciones gracias al tema Oxy- tar confusiones, la etiqueta de cada
“Natty Narwhal”, más algunos ases gen. distro está en la cara opuesta a la de
que se guarda en la manga. Kubuntu 11.04 Slackware [2] es una de las distros más sus datos. Por tanto, para empezar a
viene con lo último del proyecto KDE, la antiguas del ecosistema GNU/Linux, usar Kubuntu, la etiqueta con la pala-
versión 4.6.6, con todas las mejoras de remontándose sus orígenes al año 1993. El bra “Kubuntu” tiene que estar hacia
estabilidad y funcionalidades que eso énfasis de Slackware no está precisamente arriba, y viceversa para usar Slack-
implica. Además se ha mejorado la inter- en la facilidad de uso, sino en su estabili- ware.
acción con otros sistemas, pudiéndose dad, robustez y el control que confiere al
compartir carpetas con máquinas Linux, usuario/administrador. A pesar de sus
Windows o Mac a través de Dolphin. Otra profundas raíces, Slackware se mantiene RECURSOS
mejora es la integración de OwnCloud, el al día, y esta versión viene con los escrito- [1] Kubuntu: http://www.kubuntu.org/
servidor de almacenamiento remoto de rios KDE 4.5.5 y Xfce 4.6.3, un kernel [2] Slackware: http://www.slackware.
KDE, con el sistema; y de aplicaciones 22.6.37.6 y las últimas versiones de las com/
GTK (como Inkscape o Firefox), que aplicaciones de escritorio más utilizadas.■

WWW.LINUX- MAGAZINE.ES Número 72 3


EDITORIAL

GENES Y MEMES
n el Gen Egoísta, el biólogo britá- fanatismos ideológicos y, por

E
Nos sentimos orgullosos de nuestros
nico Richard Dawkins explica supuesto, los chistes sobre Chuck orígenes como publicación, que
cómo el altruismo, el sacrificio del Norris. se remonta a los primeros días de
la revolución Linux. Nuestra
individuo por sus semejantes (en el sen- Y el software libre también es
revista hermana, la publicación
tido más literal de la palabra, por sus un meme. Sabemos que el soft- alemana Linux Magazine,
hijos, familiares y amigos, su tribu en ware libre trasciende al código y fundada en 1994, fue la primera
suma), es producto de la evolución de la las aplicaciones. Ha contagiado a revista dedicada a Linux en
“necesidad” de los genes de replicarse, las artes, la ciencia y la ingeniería, Europa. Desde aquellas
tempranas fechas hasta hoy,
sublimada en un instinto mucho más y las está transformando. Puede nuestra red y experiencia han
sofisticado que el de la supervivencia. que no todas las “formas de vida” crecido y se han expandido a la
El uso de una envoltura de lípidos para generadas en el proceso sobrevi- par que la comunidad Linux a
protegerse mejor del entorno, dando lugar van y muchas de las que no adop- lo ancho y largo del mundo.
Como lector de Linux
a las primeras células; la asociación de ten el nuevo gen tampoco, pero
Magazine, te unes a una red
esas células en estructuras biológicas más algunas sí lo harán y estarán de información dedicada a
complejas; la evolución de esas estructu- mejor adaptadas a su constante- la distribución del
ras hacia formas de vida animales; el cre- mente cambiante mundo cultural conocimiento y experiencia
cimiento del cráneo para alojar un cere- y a nuestro modo de vida. técnica. No nos limitamos a
informar sobre el movimiento
bro cada vez más grande; el desarrollo de La metáfora biológica va Linux y de Software Libre, sino
la empatía y el sacrificio… todos esos incluso más allá del par gen/ que somos parte integral de él.
hitos de los seres vivos, se pueden expli- meme. Cuando se empezó a utili-
car en función de que los genes del orga- zar (despectivamente) el término
nismo que los alcanza tiene mayores “viral” para describir las licencias tipo su código en laboratorios estériles donde
garantías de que su réplica sobreviva… GPL, en realidad no se podía haber usado las modificaciones están estrictamente
para replicarse de nuevo. un adjetivo más acertado. Hay que enten- controladas por criterios basados exclusi-
Al igual que la sucesión de una serie de der que no sólo hay virus que destruyen a vamente en la rentabilidad y donde los
lo que parecen felices coincidencias (cabe los seres que habitan, sino que los hay “dioses” que ejecutan los cambios son
recordar que por cada organismo que que juegan su rol en la evolución, siendo pocos y seleccionados, operando bajo
consigue replicarse hay literalmente agentes de la modificación de las estruc- condiciones igualmente restrictivas.
millones que no lo consiguen, algo que turas del ADN de sus huéspedes, modifi- Mientras tanto, el software libre ha imple-
viene sucediendo a lo largo de más de caciones que, a su vez, dan lugar a nue- mentado un teatro de desarrollo evolutivo
3.000.000.000 de años en una placa de vos seres que puede que se adapten mejor global, animando a que todos seamos dio-
petri del tamaño de un planeta) ha dado a su entorno. Si el código es el gen, las ses, concediéndonos el poder de crear
lugar a la variedad de seres que pueblan licencias son sus virus, esto es, los meca- mutaciones a nuestro antojo. No sólo eso,
la biosfera terrestre, lo mismo sucede en nismos utilizados para su propagación y sino que, mientras las empresas celosas
el ámbito de la noösfera, lugar donde mutación. de su propiedad intelectual pueden estar
millones de ideas nacen, se reproducen La gracia está en que, así como la evo- diseñando el equivalente informático del
(aunque no siempre) y, a veces, mueren. lución de las especies biológicas es ciega ántrax o aplicaciones infectadas de
Algunas de ellas se replican mejor que (la naturaleza no tiene un objetivo defi- viruela (puede que incluso sin querer), la
otras y cogen arraigo en la mente de los nido para ninguno de los seres vivos que impuesta transparencia del software libre
humanos, contagiándose hasta permear existen en su seno), la evolución del soft- obliga a la creación socialmente responsa-
un gran número de individuos o toda la ware sí es dirigida. Cada línea de código ble y de código sano.
especie. Se convierten en los denomina- que se reescribe para hacer un programa Y ese es el mayor argumento a favor de
dos memes (término también acuñado más eficiente, cada nueva funcionalidad su supervivencia. Es sin duda la especie
por Dawkins en la misma obra citada más integrada en una aplicación y cada nueva más apta. ■
arriba). aplicación creada para satisfacer una
Los memes son algo más que vídeos de necesidad, son un paso más hacia una
gatitos tocando el piano, y si bien el tér- mejor integración de la tecnología infor-
mino se suele asociar a las bromas textua- mática con los humanos a quienes sirve.
les o visuales de 4chan, en realidad abar- Esa evolución no se da más rápida-
can los descubrimientos científicos, las mente y con mayor calidad de resultados
corrientes de pensamiento y artísticas, las que en el software libre. Volviendo a las Paul C. Brown
modas, las religiones, los prejuicios, los placas de petri, el software privativo aísla Director

4 Número 72 WWW.LINUX- MAGAZINE.ES


INSEGURIDADES

Cuanto más código, más problemas

MENOS RIESGO
Los plugins proporcionan mucha funcionalidad pero, dependiendo de su calidad, también pueden aportar

agujeros de seguridad. Mostramos cómo protegernos de ellos. POR KURT SEIFRIED

E
l software libre nunca deja de Press contaba con 11231 plugins; Firefox intencionadamente maliciosos, la cruda
sorprender; pocas cosas en el posee actualmente más de 13000). realidad es que la calidad de su código
mundo (excepto los Legos) son Por último, en los casos relativamente deja mucho que desear.
tan fáciles de modificar, moldear, poco frecuentes en los que el autor o la Los proyectos de gran envergadura,
ampliar y mejorar. Son muchos los pro- empresa deciden que sólo pueden pro- como Firefox, TYPO3 o WordPress,
gramas que soportan explícitamente porcionar el código fuente de forma atraen la atención y colaboración de la
plugins y extensiones, facilitando aún cerrada, pueden integrarse partes de las gente; en algunos casos existen equipos
más esta labor. Entre otros, se pueden que de otro modo no se podría disponer. de seguridad dedicados que auditan
contar Firefox, TYPO3, WordPress, y, continuamente el código y trabajan
por supuesto, el kernel Linux. ¿Qué Hay de Malo? codo con codo con la comunidad de
Entonces, ¿por qué suponen un pro- Como decía Stan Lee: “Un gran poder seguridad para intentar resolver de la
blema los plugins (módulos, extensio- conlleva una gran responsabilidad”. Los manera más rápida posible sus proble-
nes, etc.)? Sabemos que permiten pro- plugins casi siempre se ejecutan dentro mas. Algunas empresas especializadas
bar nuevas ideas y conceptos sobre el de un contexto de seguridad y con el en seguridad tienen interés en desvelar
software sin necesidad de obtener el nivel de privilegios de la aplicación a la agujeros de seguridad en este tipo de
beneplácito del proyecto principal. A que pertenecen. Siguiendo esa lógica, programas, puesto que les proporciona
veces, por una serie de razones técnicas, los plugins de Firefox tienen permiso cierto reconocimiento. Por suerte, la
legales, de marketing o políticas, los para acceder a todos los archivos a los mayoría de estas empresas colaboran
proyectos de software no pueden o no que puede acceder nuestra cuenta. con los proyectos para que esos aguje-
quieren ofrecer determinadas funciona- El plugin podría además interactuar ros sean resueltos a la mayor brevedad
lidades (como es el caso de Firefox y con nuestra sesión de login, ejecutar posible sin causar demasiados inconve-
AdBlock Plus). procesos en segundo plano y hacer cual- nientes a los usuarios finales. Pero los
Además, como ocurre con proyectos quier cosa que podamos realizar noso- proyectos de plugins no suelen contar
como TYPO3 o WordPress, que proveen tros con nuestra cuenta – como editar el con este tipo de recursos; en muchos
sistemas de gestión de contenidos crontab o el archivo .profile para ejecu- casos, simplemente es un único des-
(CMS) y funcionalidades de publicación tar scripts o código arbitrarios, incluso arrollador el que libera el código públi-
de blogs (que básicamente son un sub- aunque no hayamos ingresado al sis- camente.
conjunto de lo que es un CMS), la canti- tema. De hecho, algo así ocurrió en
dad de código fuente sería impracticable 2008; un plugin de Firefox llamado Basic TYPO3
si cada una de las funcionalidades dese- Example Plugin for Mozilla difundió Tro- TYPO3 soporta extensiones que van
adas se distribuyese integrada en la jan.PWS.ChromeInject.A, que robaba desde plugins de calendario, hasta
solución (en Septiembre de 2010, Word- cuentas de usuario y contrase- workflow de correo electrónico, editores
ñas [1]. Incluso de textos o soluciones de foro, por citar
cuando no son algunas. El núcleo de TYPO3 consta de
más de 6000 archivos, de los cuales
unos 1200 están escritos en PHP. En
2009 hubo 21 notificaciones de proble-
mas de seguridad que desvelaban 113
problemas relativos a TYPO3. De todos
los reportados, sólo 16 tenían que ver
con el verdadero código fuente del
núcleo de TYPO3 [2]; los otros 97 esta-
ban en extensiones de TYPO3.
Aunque esta cifra no fuese tan mala
como parece ser, según la página TYPO3

8 Número 72 WWW.LINUX- MAGAZINE.ES


INSEGURIDADES

Extension Repository, las versiones que instalan plugins de forma silenciosa


actuales de los diez plugins más popula- (Java, Skype, etc.) y de las que posible-
res han sido descargadas 317 veces, lo mente no estemos al tanto. Algunas
que significa que la mayoría de los plu- extensiones mejor implementadas, Figura 2: Un plugin no tan bueno (Java Con-
gins de TYPO3 han sido descargados como NoScript o AdBlock Plus (Figura sole).
menos de 300 veces (evidentemente, un 1), ofrecen la opción de desinstalarse;
plugin se puede descargar para ser insta- otras no tan bien implementadas, como de un sitio web actualizado y reciente
lado en más de un sitio, pero por norma la consola de Java (Java Console), ilus- suele ser un indicador de que se puede
general estas cifras son bastantes repre- trada en la Figura 2, no ofrecen la usar con algo más de tranquilidad. La
sentativas). De hecho, el equipo de opción de desinstalarlas, sino que tienen ausencia de información de contacto es
seguridad de TYPO3 ha etiquetado un una para deshabilitarlas. mala señal.
buen número de reportes con el texto Hay que evitar siempre las extensio-
“Este CSB (Collective Security Bulletin) nes que no tienen la opción de Deshabi- Soluciones a Largo Plazo
es un listado de extensiones vulnerables, litar o de Desinstalar. Pero, al menos en Una de las mejores soluciones a largo
bien con pocas descargas o con poca Linux, si se tiene instalada una exten- plazo (potencialmente) es un proyecto
importancia para la comunidad de sión sin dichas opciones, se puede elimi- de WordPress. WordPress anunció que
TYPO3” [3]. nar manualmente yendo al directorio de separarían sus plugins en dos conjuntos:
Según las cifras de CVE (Common Vul- inicio, entrando a ~/.mozilla/firefox/, y los plugins del núcleo (core) y el resto.
nerabilities and Exposures) de los últi- eliminando su directorio, que estará Los plugins del núcleo serían los plugins
mos años, el núcleo de TYPO3 acumuló dentro del directorio personal predeter- populares usados por todos y, por tanto,
un total de 20 vulnerabilidades, mien- minado [4]. Los directorios de las exten- con una mayor exposición ante los intru-
tras que las diferentes extensiones tuvie- sos. Estos plugins serían (idealmente)
ron 235 (un ratio que se mantenía en auditados e integrados en WordPress,
2009). Lo mismo ocurre con Firefox y dando como resultado una mayor cali-
WordPress, o con cualquier otro soft- dad del código y una instalación y admi-
ware que soporte el uso de plugins o Figura 1: Un buen plugin (AdBlock Plus). nistración más simples. Si bien, no
extensiones. parece que este proyecto haya evolucio-
siones tienen nombres aleatorios para nado mucho.
El Kernel Linux evitar que los atacantes depositen en
Otro gran ejemplo del uso de plugins (o, ellos sus archivos. El único problema es Conclusión
en este caso, módulos) es el Kernel que hay que averiguar cuál es el directo- Los plugins y extensiones han llegado
Linux. En la mayoría de los sistemas con rio de la extensión; utilizan un GUID para quedarse. Por desgracia, la calidad
kernel de fábrica hay más de 1000 (realmente largo y, supuestamente, del código de muchos de ellos va desde
módulos disponibles (por ejemplo, Cent- único) como nombre de directorio, al lo puramente mediocre a lo literalmente
OS 5.4 tiene 1251 en el momento de estilo de terrible. Nuestro consejo es no usar nin-
escribir estas líneas). El tamaño total de guno que no publique actualizaciones
dichos módulos es de 96MB, lo cual ec8030f7-c20a-464f-9b0e-U regularmente o cuyo comportamiento no
supondría un aumento en el tamaño del 13a3a9e97384 sea todo lo bueno que se esperaba. Por
kernel de los 2MB a 98MB. Para prote- otro lado, ciertos plugins como NoScript,
gerse a sí mismos de los módulos que por lo que hay que utilizar el motor de FlashBlock o AdBlock Plus pueden llegar
sólo son código binario, los desarrolla- búsqueda de turno para saber a qué a mejorar significativamente la seguridad
dores de Linux han implementado un extensión corresponde cada directorio. del sistema – sobre todo teniendo en
sistema que marca el kernel como “con- Los mismos problemas son aplicables a cuenta la cantidad de ataques 0day para
taminado” (tainted) cuando se carga un las aplicaciones web. Funciona con la Adobe Flash en 2010 [5]. ■
módulo con alguna licencia no libre. mayoría de plugins y extensiones, pero,
Debido a que el kernel Linux hace uso si no, se pueden eliminar manualmente. RECURSOS
de los módulos para la mayoría de las No siempre se pueden eliminar los [1] Plugin malicioso de Firefox: http://
funciones periféricas (esto es, que no plugins que suponen una amenaza, aun- blog.mozilla.com/security/2008/12/
pertenecen al núcleo en sí), es relativa- que se pueden hacer otras cosas para 08/malicious-firefox-plugin/
[2] Seguridad de TYPO3: http://typo3.
mente fácil actualizar el sistema sin estar seguros de que se obtienen los
org/teams/security/
tener ni siquiera que reiniciar. mejores plugins posibles. Lo primero a security-bulletins/
tener en cuenta es si son recientes: [3] Boletín de seguridad de TYPO3:
Soluciones a Corto Plazo ¿cuándo fue la última publicación y http://typo3.org/teams/security/
security-bulletins/
Existen varios soluciones a corto y largo cada cuánto tiempo publican? Los plu-
typo3-sa-2010-018/
plazo para lidiar con las vulnerabilida- gins abandonados suelen ser muy peli- [4] Desinstalando add-ons: http://kb.
des. A corto plazo, la solución más grosos; las actualizaciones de seguridad mozillazine.org/
obvia es reducir la superficie de ataque. llevan más tiempo, si es que se produ- Uninstalling_extensions
[5] Zero-day vulnerability: http://en.
Firefox es un gran ejemplo de ello, cen. Además, hay que estar pendientes
wikipedia.org/wiki/Zero-day_attack
puesto que son varias las aplicaciones del sitio web del proyecto. La existencia

WWW.LINUX- MAGAZINE.ES Número 72 9


NOTICIAS

NOTICIAS
Novell Obligada a Recular En un post en el blog de desarrollo del … Y Google no hizo nada para impe-
El impacto en el software libre obliga a proyecto, Rubin alude a los rumores y dirlo.
Novell a anular la venta de sus patentes los tacha de FUD, alegando que Google ¿Alguien dijo FUD? ■
a Microsoft, Apple y Oracle. liberará Honeycomb “cuando esté listo”,
Considerando las alegaciones presen- y añade que el motivo del retraso es que RECURSOS
tadas por la Free Software Foundation y se está adaptando el sistema para teléfo-
[1] Reflexiones de Andy Rubin sobre las
la Open Source Initiative, el Departa- nos móviles.
acusaciones de cerrar el código:
mento de Justicia de EE.UU. invalida la También alude a las noticias de que
http://android-developers.blogspot.
venta de 882 patentes a CPTN, un con- Google exige ciertos requisitos a los com/2011/04/
glomerado de empresas creado por fabricantes antes de certificar la compati- i-think-im-having-gene-amdahl-mo
Microsoft, Oracle y Apple. bilidad del dispositivos, explicando que ment.html
En concreto, Microsoft and Co. ten- no es realista que Google asegure el fun-
[2] Windows 7 Mobile es “Open” según
drán que vender de vuelta las patentes a cionamiento del sistema y sus apps en
Microsoft (y otras barbaridades):
Attachmate, la empresa con la que un amplio abanico de dispositivos
http://www.facebook.com/
Novell anunció su fusión en noviembre. incompatibles entre sí.
linuxmagazine.es/posts/
Los miembros de CPTN podrán adquirir En fin, ¿qué van a decir? Hasta Microsoft
10150113256506302
licencias de uso de las patentes en cues- declara abierta la plataforma Windows de
tión, pero nada más. vez en cuando [2]. Lo que sí convence un [3] Sitio del Asus Eee-Pad. Pulsa
“Download” para acceder a la
La posición dominante en el mercado poco más es el hecho de que Asus (sí,
fuente del kernel de honeycomb:
de Microsoft, Apple y Oracle, en combi- Asus, no Google) liberó el kernel de
http://www.asus.com/Eee/Eee_Pad/
nación con las patentes acumuladas por Honeycomb por su cuenta y riesgo a raíz
Eee_Pad_Transformer_TF101/
Novell a lo largo de su larga historia, del lanzamiento de su Asus Eee-pad…
habrían puesto en peligro la capacidad
de innovación del sector TI en general, y
en especial en el ámbito del software de Una de Cal y Otra de Arena originales por otros customizados (como
código abierto. ■ Sony (sí, Sony, la empresa que ha distri- CyanogenMOD del que hablamos en
buido CDs con rootkits para frenar su nuestro Facebook [2]) y la ejecución de
RECURSOS copia no controlada y perseguido inmi- aplicaciones no certificadas ni por Sony
sericordemente a los hackers empeña- ni Google (el llamado “homebrew”).
[1] Novell ha de anular la venta de sus
dos en abrir sus consolas de videojue- Todos los terminales comercializados
patentes: http://www.pcworld.com/
gos) abre un portal [1] que revela cómo desde principios del 2011 hasta hoy de la
businesscenter/article/225717/
desbloquear sus propios terminales gama Xperia, el cruce entre móvil y PSP
doj_limits_microsofts_purchase_of_
móviles. de la empresa japonesa y que podemos
novell_patents.html
Publicado en su portal “Developer adquirir en nuestro país, pueden ser
World”, y tras las obligadas advertencias desbloqueados. ■
Android Sigue Siendo de los peligros que entraña el proceso
Abierto según Google. (pérdida de la garantía y funcionalida- RECURSOS
Han habido muchas especulaciones des, brickeo de la terminal, etc.), el
[1] Sony te ayuda a desbloquear sus
sobre si Android va a seguir siendo documento explica con todo detalle los
teléfonos: http://unlockbootloader.
abierto o no, sobre todo en el momento 14 pasos para desloquear el bootloader
sonyericsson.com/
en el que Google no publicó (y sigue sin de los terminales móviles comerciali-
publicar a día de hoy) el código fuente zado bajo la marca Sony-Ericsson y [2] El ROM Android libre Cyanogen:
de Honeycomb. Sin embargo, Andy equipados con Android. http://www.facebook.com/
linuxmagazine.es/posts/
Rubin, vicepresidente de ingeniería, des- Este proceso, a todos los efectos, abre
10150150215741302
miente la cerrazón de Android [1]. los móviles a la sustitución de los ROMs

10 Número 72 WWW.LINUX- MAGAZINE.ES


PORTADA • OSSTMM

Conformidad de pruebas con OSSTMM versión 3

VERIFICACIÓN
METÓDICA

El Open Source Security Testing

L
a gobernanza y la conformidad
son una realidad para la mayo-
Methodology Manual proporciona ría de empresas de tecnología
de la información. A menudo se espe- Metodo-
una metodología estándar para cifican requisitos claros para llevar a logías de Seguri-
cabo auditorías de seguridad mediante dad y de Código Abierto
las verificaciones de seguridad.
una política de seguridad interior o (ISECOM) de manera que “ya no tenga
POR RON McCARTY. con una regulación externa, como la que depender de mejores prácticas
Payment Card Industry Data Security generales las evidencias anecdóticas o
Standard (PCI DSS) 2.0, la Health supersticiones, ya que hemos verifi-
Insurance Portability and Accountabi- cado la información específica para
lity Act (HIPAA) de 1996, la Patient nuestras necesidades en la que basar
Safety and Quality Improvement Act nuestras decisiones de seguridad”.
(PSQIA) de 2005, y muchas leyes de Dicho de otra manera, OSSTMM 3 es
Ron McCarty es escritor indepen- privacidad estatales y locales. una metodología estándar, en la que la
diente, consultor de tecnologías Sin embargo, rara vez se cubre una información se puede compartir abier-
de la información y el propietario
metodología para llevar a cabo las tamente (y debatirla y revisarla),
de Your Net Guard LLC, una
pruebas y auditorías internas por el mientras que hasta hace poco, muchas
empresa de consultoría IT ubicada
personal técnico en la política interna auditorías se basaban en la experien-
EL AUTOR

en Dallas, Texas. Ron obtuvo su


Licenciatura en Sistemas de la o requisitos externos. El Open Source cia del auditor principal. La versión 3
Información en la Universidad de Security Testing Methodology Manual es la versión más reciente del docu-
Maryland y tiene un Master en (OSSTMM) proporciona una metodo- mento, aunque la 3.2 está actualmente
Administración por la Capella Uni- logía a seguir para profesionales de la bajo revisión.
versity. Recientemente ha escrito seguridad y los administradores del El OSSTMM versión 3 se puede des-
el libro Ubuntu Linux System sistemas. cargar directamente desde la página
Administration. Puede contactar web de ISECOM [1]. Mantenerlo a la
con él en mccarty@yournetguard. OSSTMM Versión 3 mano como referencia durante la lec-
com o en twitter como @ronmc- El OSSTMM 3 fue desarrollado por tura de este artículo podría ser útil con
carty.
Pete Herzog en el Instituto para las algunos de los ejemplos.

12 Número 72 WWW.LINUX- MAGAZINE.ES


OSSTMM • PORTADA

partida para determinar lo que se Las secciones 11.2.1(a) hasta 11.2(c)


ajuste a nuestras necesidades. cubren la propiedad y el registro de las
Después de revisar el docu- direcciones IP y los dominios de la
mento en detalle, puede empresa auditada.
determinar su propio Para esta parte de la metodología, el
conjunto de herra- comando whois es muy útil. Whois
mientas. Las que está disponible de forma libre, y suele
hemos escogido en ser bastante común en las distribucio-
este artículo están nes de Linux. En mi Ubuntu Server, he
disponibles en for- instalado el paquete con
mato de paquetes
para la mayoría de apt-get install whois
versiones de Linux,
y son fáciles de ins- Whois es fácil de usar, y simplemente
talar y utilizar. lo llamamos con la información que
buscamos. Por ejemplo,
11.2 Logística
El apartado 11.2 del whois mcwrite.net
OSSTMM cubre la parte
logística de la auditoría. mostrará quién ha registrado el domi-
La mayoría de los consulto- nio (véase el Listado 1). El propietario
res y auditores se refieren del dominio es el Titular. En algunos
a este paso como la casos es necesario investigar la estruc-
infraestructura de la audi- tura jurídica de una sociedad si los
toría, en el sentido de que dominios están registrados por una
esta parte de la auditoría empresa subsidiaria.
tiene que ver con identificar De la consulta whois simple pode-
con precisión el alcance y la mos verificar:
configuración
general del Listado 1: whois de mcwrite.net
entorno para “evi-
01 # whois mcwirte.net
tar los falsos positivos
02 Domain Services Provided By:
y falsos negativos”. 03 Your Net Guard LLC, support@yournetguard.com
Si estamos traba- 04 http://www.YourNetGuard.com/
La versión 3 incluye 15 capítulos jando con alguien que 05
que describen tanto la metodología no tiene conocimiento 06 Registrant:
como un informe STAR para la captura de OSSTMM, entonces 07 Ronald McCarty
de los resultados. puede que escuche- 08 14160 Dallas Pky Suite 520
mos terminología de 09 Dallas, TX 75240
Software Libre identificación de red y 10 US
Aunque OSSTMM 3 proporciona infor- de aislamiento 11
mación sobre qué debe ser recogido y durante esta fase. 12 Registrar: DOTSTER
sometido a pruebas, no proporciona la 13 Domain Name: MCWRITE.NET
forma de llevar a cabo los pasos con- 11.2.1 Marco de 14 Created on: 08-JUL-00
Trabajo 15 Expires on: 08-JUL-11
cretos. Por ejemplo, OSSTMM esta-
16 Last Updated on: 18-JUN-10
blece que deberíamos verificar el Esta parte de la meto-
17
registro de la red, pero no especifica dología busca garanti-
18 Administrative, Technical Contact:
con qué herramientas o servicios zar el alcance apro- 19 McCarty, Ronald bills@mcwrite.net
hacerlo. Afortunadamente, muchos de piado de una audito- 20 14160 Dallas Pky Suite 520
los pasos que componen la metodolo- ría a nivel de IP y 21 Dallas, TX 75240
gía se pueden llevar a cabo utilizando dominio e incluye 13 22 US
herramientas de software libre. pruebas (partes a-m). 23 817-680-7351
En este artículo vamos a cubrir el Muchos de los pasos 24
uso de algunas de estas herramientas pueden llevarse a 25
en torno al apartado 11.2 de Logística cabo utilizando la 26 Domain servers in listed order:
del OSSTMM. El uso de herramientas misma herramienta, 27 NS1.AFRAID.ORG
de software libre de ninguna manera de manera que es 28 NS2.AFRAID.ORG
se limita a las que contemplamos aquí, lógico de vez en 29 NS3.AFRAID.ORG
30 NS4.AFRAID.ORG
pero puede proporcionar un punto de cuando agruparlos.

WWW.LINUX- MAGAZINE.ES Número 72 13


PORTADA • OSSTMM

• 11.2.1 (a) Verificar el alcance y el • 11.2.1(d) Verificar el propietario de la empresa auditora, la información de
propietario de los objetivos señalados los objetivos desde la información de registro o sus documentos legales
para la auditoría. El titular es la registro de dominio. El Titular con- deben corregirse. Pueden ocurrir des-
entidad a la que pertenece el domi- tiene el propietario de la empresa, y ajustes cuando una empresa se muda
nio. el contacto administrativo contiene o es adquirida. O, si un contacto admi-
• 11.2.1(b) Determinar la ubicación de a la persona a la que se le permite nistrativo ha cambiado de empresa, la
la propiedad y el propietario de los administrar (cambiar) la informa- información es probable que esté des-
objetivos de housing. De nuevo, el ción de dominio. actualizada.
campo Titular contiene el propieta- Si cualquiera de estas pruebas no coin- Whois puede buscar tanto direccio-
rio y la ubicación del dominio. cide con los registros proporcionados a nes como dominios. Para 11.2.1.(c)
Verificar el propietario de los objetivos
Listado 2: dig para mcwrite.com desde la información de registro de la
01 # dig www.mcwrite.com
red, se necesitan unos pocos coman-
02 dos más. Para investigar las redes se
03 ; <<>> DiG 9.7.0-P1 <<>> www.mcwrite.com necesitará una lista de direcciones de
04 ;; global options: +cmd red desde la DMZ, desde la empresa de
05 ;; Got answer: servicios web, y desde cualquier pro-
06 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45953 veedor de servicios si el correo electró-
07 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 nico u otros servicios están subcontra-
08 tados. A continuación, se puede ejecu-
09 ;; QUESTION SECTION: tar whois para las distintas redes o
10 ;www.mcwrite.com. IN A direcciones IP.
11 Con frecuencia, las direcciones esta-
12 ;; ANSWER SECTION: rán registradas a nombre de otra per-
13 www.mcwrite.com. 86400 IN A 217.160.37.30 sona, ya que las direcciones DMZ a
14 menudo no son portables (es decir, no
15 ;; Query time: 175 msec pueden ser transferidas entre los
16 ;; SERVER: 192.168.1.1#53(192.168.1.1) ISPs), y alojan servidores en otras
17 ;; WHEN: Tue Feb 1 12:09:32 2011 redes. Cada uno de estos registros
18 ;; MSG SIZE rcvd: 49
recabados con whois deberían ser vali-
dados con acuerdos o facturas de ser-
Listado 3: dig Inverso vicios. A veces, estos registros son
correctos, porque los proveedores han
01 # dig -x 204.9.177.195
sido adquiridos por otros.
02
03 ; <<>> DiG 9.7.0-P1 <<>> -x 204.9.177.195
Otra herramienta de software libre,
04 ;; global options: +cmd dig, es muy útil en la investigación de
05 ;; Got answer: hosts específicos y direcciones IP den-
06 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51562 tro del dominio. Dig viene de serie con
07 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 muchos sistemas y está preinstalada
08 en Ubuntu Server 10.4, que se utilizó
09 ;; QUESTION SECTION: para este artículo. Si tenemos que ins-
10 ;195.177.9.204.in-addr.arpa. IN PTR talarla, es parte del paquete bind-utils
11 disponible en la mayoría de versiones
12 ;; ANSWER SECTION: de Linux.
13 195.177.9.204.in-addr.arpa. 75540 IN PTR blogs.typepad.com. Dig se puede utilizar para varias de
14 las siguientes pruebas.
15 ;; Query time: 26 msec • 11.2.1(g) Búsqueda de nombres de
16 ;; SERVER: 192.168.1.1#53(192.168.1.1) dominio similares o mal escritos que
17 ;; WHEN: Tue Feb 1 12:14:17 2011
puede ser confundidos con el obje-
18 ;; MSG SIZE rcvd: 75
tivo. Los auditores deben asegurarse
que no se están ejecutando pruebas
Listado 4: Escaneo Nmap Sólo ping contra dominios que no pertenecen
a la organización. Para el ejemplo
01 # nmap -sP 192.168.1.0/24
anterior hemos utilizado
02 Starting Nmap 5.00 ( http://nmap.org ) at 2011-02-01 12:25 CST
mcwrite.net, pero un error común
03 Host www-internal.mcwrite.net (192.168.1.3) is up (0.076s latency).
sería que alguien auditase contra
04 Host ubuntu.mcwrite.net (192.168.1.7) is up (0.055s latency).
mcwrite.com. Por lo tanto, un whois
05 Host vm.mcwrite.net (192.168.1.18) is up (0.055s latency).
del dominio registrará la diferencia,
06 Nmap done: 256 IP address (1 host up) scanned in 0.12 seconds
y se puede utilizar un dig para

16 Número 72 WWW.LINUX- MAGAZINE.ES


garantizar que la dirección IP se encuentra fuera del
espacio de direcciones de la organización (véase el
Listado 2).
La herramienta dig también puede utilizarse para verifi-
car:
• 11.2.1(h) Verificar que los nombres de dominio obje-
tivo se resuelven en sistemas fuera del control del pro-
pietario, tales como dispositivos de cacheo.
• 11.2.1(i) Verificar qué direcciones IP objetivo se trazan
a ubicaciones diferentes de la localización del propie-
tario.
• 11.2.1(j) Verificar que las resoluciones inversas de
nombres de direcciones del sistema objetivo se corres-
ponden con el alcance y el propietario del alcance.
Para la búsqueda inversa, dig requiere el parámetro -x
(véase el Listado 3).
Si la red es muy grande, puede que tengamos que escri-
bir un contenedor de scripts para dig. Otro paquete de
código abierto, Nmap, también puede funcionar para
esto. Nmap tiene un parámetro rara vez usado, -R, que
devolverá la búsqueda inversa de direcciones IP. (Por lo
general durante los escaneos, la DNS no se desea.) No
es necesario un escaneo completo, y un análisis sola-
mente de ping (-sP) será más que suficiente. La explora-
ción sólo de ping se muestra en el Listado 4, que ejecuta
un escaneo completo desde 192.168.1.0 hasta
192.168.2.25 y devuelve la dirección inversa (véase el
Listado 4). Nmap no suele estar instalado en las distri-
buciones de Linux por defecto, sin embargo, está dispo-
nible para la mayoría de las distribuciones en forma de
paquete. En Ubuntu 10.4 puede ejecutar

apt-get install nmap

para instalarlo. Si Nmap no está disponible en forma de


paquete, su código fuente está disponible en [2].
El uso de dig, Nmap, o ambos puede completar los
apartados 11.2.1 (k) hasta el (m), que giran en torno a
probar o refutar si una máquina es parte de la auditoría.
En aquellas situaciones en las que la dirección IP no
está bajo control exclusivo, deben revisarse los acuer-
dos de servicios, y posiblemente, las notificaciones
enviadas antes de realizar cualquier tipo de pruebas de
penetración, para evitar ejecutar pruebas que pudieran
afectar más allá de los recursos de la organización.

11.2.2 Calidad de Red


El apartado 11.2.1 se centra en identificar correctamente
el alcance de la red para asegurar que las posteriores
pruebas son exactas y se realizan sólo contra los siste-
mas que pertenecen a la organización.
El apartado 11.2.2 Calidad de Red se refiere a las prue-
bas de red y gira en torno a la medición de los tiempos
de respuesta de la red, que a menudo es el programa de
muchas auditorías de infraestructura. Dependiendo del
tipo de aplicaciones dentro del alcance de una auditoría
en particular, elegir herramientas libres en lugar de pro-
pietarias puede no ser posible. Sin embargo, para las
pruebas generales de calidad de la red aquí se puede
PORTADA • OSSTMM

Listado 5: Medición de la Velocidad y la Pérdida de Paquetes con ab


01 ab -n 100 -c 1 http://www.mcwrite.net:80/ 23 Requests per second: 2.58 [#/sec] (mean)
02 This is ApacheBench, Version 2.3 <$Revision: 655654 24 Time per request: 387.960 [ms] (mean)
$> 25 Time per request: 387.960 [ms] (mean, across
03 Copyright 1996 Adam Twiss, Zeus Technology Ltd, all concurrent requests)
http://www.zeustech.net/ 26 Transfer rate: 79.61 [Kbytes/sec] received
04 Licensed to The Apache Software Foundation, 27
http://www.apache.org/ 28 Connection Times (ms)
05 29 min mean[+/-sd] median max
06 Benchmarking www.mcwrite.net (be patient).....done 30 Connect: 59 64 2.5 64 75
07 31 Processing: 250 324 71.8 322 710
08 32 Waiting: 59 63 2.3 63 78
09 Server Software: Apache 33 Total: 312 388 72.2 384 774
10 Server Hostname: www.mcwrite.net 34
11 Server Port: 80 35 Percentage of the requests served within a certain
12 time (ms)
13 Document Path: / 36 50% 384
14 Document Length: 31309 bytes 37 66% 393
15 38 75% 397
16 Concurrency Level: 1 39 80% 400
17 Time taken for tests: 38.796 seconds 40 90% 452
18 Complete requests: 100 41 95% 540
19 Failed requests: 0 42 98% 720
20 Write errors: 0 43 99% 774
21 Total transferred: 3162500 bytes 44 100% 774 (longest request)
22 HTML transferred: 3130900 bytes

Listado 6: Test ICMP con ping


01 ping -c 3 www.mcwrite.net
02 PING www.mcwrite (204.9.177.195) 56(84) bytes of data.
03 64 bytes from blogs.typepad.com (204.9.177.195): icmp_seq=1 ttl=49 time=61.8 ms
04 64 bytes from blogs.typepad.com (204.9.177.195): icmp_seq=2 ttl=49 time=60.0 ms
05 64 bytes from blogs.typepad.com (204.9.177.195): icmp_seq=3 ttl=49 time=60.7 ms
06 ---
07 --- www.mcwrite.net ping statistics ---
08 100 packets transmitted, 100 received, 0% packet loss, time 2003ms
09 rtt min/avg/max/mdev = 60.014/60.874/61.832/0.772 ms

utilizar una combinación de Apache de al menos 100 veces y registre el fácilmente con herramientas de fácil
Bench (ab) y ping. promedio tanto para las peticiones acceso e instalación que se prestan a
Apache Bench es la parte de pruebas de servicio completo como para las su uso por parte del administrador
del paquete apache-utils, y no hay que respuestas de paquetes para cada del sistema para la realización o asis-
instalar Apache para usarlo. Además, uno de los tres protocolos. El tencia de las auditorías, otras áreas
puede utilizarse para probar las res- comando del Listado 5 lleva a cabo del OSSTMM se prestan más a una
puestas a cualquier servidor web – no esta solicitud para TCP (HTTP). utilización más compleja de estas
se limita a los servidores web Apache La prueba 11.2.2(b) requiere seis herramientas (con scripts) o herra-
– y está disponible en la mayoría de medias, y la prueba 11.2.2(c) requiere mientas que requieren un mayor
distribuciones de Linux instalando el el cálculo de los resultados con pérdi- esfuerzo (por ejemplo, Metasploit y
paquete apache-utils. La herramienta das. Estas dos pruebas se pueden BackTrack para 11.4 Auditoría de
ab se puede utilizar para cumplir con satisfacer mediante la ejecución de Visibilidad y 11.5 Verificación de
la siguiente prueba: cron y el calculo de los totales. Para la Acceso). ■
• 11.2.2(a) Medición del índice de prueba con ICMP (ping), el ping están-
velocidad y pérdida de paquetes en el dar de Linux utiliza un simple paráme- RECURSOS
alcance de un servicio solicitado en tro -c (recuento) (véase el Listado 6).
[1] OSSTMM 3: http://www.isecom.org/
TCP, UDP e ICMP tanto para una
mirror/OSSTMM.3.pdf
petición de servicio completo como Resumen
[2] Nmap.org: http://nmap.org/
para un par de petición/respuesta. Aunque las áreas del OSSTMM que
download.html
Repita cada petición en una sucesión hemos cubierto se pueden verificar

18 Número 72 WWW.LINUX- MAGAZINE.ES


Deección de Intrusiones • PORTADA

IDS ampliable e independiente de plataforma con Prelude

CENTRAL DE
ALERTAS
El sistema de gestión de información de seguridad Prelude recibe mensajes IDS basados

tanto en host como en red y los muestra en una práctica interfaz web. Te enseñamos cómo

configurarlo.

POR DAVID RUPPRECHTER


© Bram Janssens - 123RF.com

L
a capacidad de reaccionar en el práctica interfaz web de administración dos pueden incluso crear sus propios
momento justo a veces salva y varios agentes cliente. El esfuerzo de addons.
vidas. Los sistemas de detección y sus desarrolladores a lo largo de estos
prevención de intrusiones (IDS/IPS) ayu- últimos años ha servido para crear un API Libprelude
dan a los administradores de los centros producto maduro capaz de gestionar La librería de Prelude también permite
de datos a evaluar los archivos de logs y entornos a gran escala. Debido a su integrar programas existentes. Libpre-
los mensajes de una gran variedad de arquitectura basada en plugins y a fun- lude proporciona APIs para varios len-
dispositivos y sistemas operativos, a cionalidades como el Correlator Engine, guajes de programación, incluidos
identificar rápidamente las intrusiones y los administradores más experimenta- C++, Python, Perl y Ruby [2]. Algo que
a iniciar la acción oportuna.

Sistema Híbrido: Prelude


Conviene saber muy bien la diferencia
entre un IDS basado en host (HIDS) y
uno basado en red (NIDS). Los IDS basa-
dos en host, como Tripwire, suelen eva-
luar únicamente los archivos del sistema
para detectar ataques locales, mientras
que los IDS basados en red, como Snort,
son capaces de analizar el tráfico de la
red en busca de indicios de ataque o acti-
vidades ilícitas.
Prelude [1] es un IDS híbrido que
combina las ventajas de los HIDS y de
los NIDS. Impresiona por su gran canti- Figura 1: La interfaz web de Prelude se llama Prewikka. Proporciona al usuario una vista tabu-
dad de funcionalidades, incluida una lada de la totalidad de los eventos registrados por los distintos agentes.

WWW.LINUX- MAGAZINE.ES Número 72 19


PORTADA • Detección de Intrusiones

facilita dicha integración es el formato gestor de Prelude se


Intrusion Detection Message Exchange instala fácilmente en
Prewikka como Virtual Host
Format [3], desarrollado por el grupo Debian; basta con eje- Si preferimos ejecutar en Apache la interfaz web de Pre-
IDWG (Intrusion Detection Working cutar aptitude install wikka, se pueden añadir las líneas mostradas en el Listado 1
Group), y que proporciona un formato prelude-manager lib- al directorio /etc/apache2/site-available/ en Debian.
estandarizado para los mensajes IDS que prelude y aparecerá un Para habilitar el host, necesitamos usar el comando a2ensite
pueden ser reenviados a una base de diálogo de archivo_de_vhost . También es posible ponerlo en un archivo
aparte y emplear una directiva Include en
datos SQL centralizada por herramientas configuración de dpkg
00_default_vhost.conf.
software como las soportadas por la API desde el cual podemos
Luego, se reinicia el servidor web con /etc/init.d/apache res-
de Libprelude. seleccionar la base de
tart. Evidentemente, el servidor de Prelude necesita un
Con este método, los administradores datos (MySQL o Pos-
registro de DNS que se pueda resolver. Dependiendo de la
se evitan correlacionar las entradas de tgreSQL) e introducir estructura de la red, quizás haga falta un registro de tipo A
log desde la red, ya que los distintos la contraseña de root para preludehost en el servidor de DNS.
agentes de Prelude envían los datos a un de SQL. El sistema
gestor centralizado a través de conexio- genera entonces la
nes SSL cifradas. El gestor añade los clave SSL. software: Prewikka
datos a la base de datos en tiempo real y Después de configurar la base de datos place: dotlike.net
los dispone para su consulta. Mediante y de crear un perfil de gestión, podemos title: ConsolaPrelude
heartbeats enviados a los agentes, el ges- modificar el archivo de configuración
tor sabe si la conexión está o no activa. /etc/prelude-manager/prelude-manager.c La siguiente sección en el archivo de
En caso de producirse alguna interrup- onf. Para que el sistema pueda recibir los configuración controla el acceso a Pre-
ción, los agentes cachean las entradas registros desde los agentes remotos, hay wikka:
que no se hayan podido transmitir y las que modificar las entradas listen y susti-
envían al restablecerse la conexión. tuir la dirección de loopback por la direc- [database]
Hay agentes disponibles para al menos ción IP de la máquina. type: mysql
las siguientes plataformas: También es necesario modificar la host: localhost
• IDS Snort basado en red [4] configuración de SQL de la sección [db]: user: prewikka
• Open Source Security (OSSEC) basado pass: Contraseña
en host [5] [db] name: prewikka
• Logs de sistemas Linux a través de type = mysql
Prelude-LML [6] host = localhost La configuración predeterminada del
• Autenticación PAM port = 3306 paquete de Debian suele proporcionar
Además, el sistema SIM (Security Infor- name = nombre_base_de_datos unos valores bastante útiles. Una vez
mation Management) es capaz de anali- user = nombre_de_usuario configurado, se puede iniciar la interfaz
zar los logs de los típicos servicios y apa- pass = Contraseña web con el comando prewikka-httpd,
ratos de hardware, incluidos varios apa- que pone a la escucha el servidor web
ratos de Cisco, Exim, Microsoft SQL, Cla- En Debian GNU Linux, necesitamos integrado en el puerto 8000. Para usar
mAV, Nessus, Apache, Tripwire, Netfilter, poner la variable RUN en una instalación de Apache, consultar el
ipchains e ipfw. /etc/default/prelude-manager a YES, la cuadro de texto titulado Prewikka como
OSSEC proporciona también detección cual se encarga de iniciar el gestor de Virtual Host.
de rootkits, monitorización del registro prelude con /etc/init.d/prelude-manager El nombre de usuario y la contraseña
de Windows y comprobación de la inte- start. predeterminados para Prewikka son
gridad de los archivos. Todas estas fun- admin/admin, que debemos cambiar
cionalidades están disponibles indepen- Prewikka desde Settings | My Account al acceder la
dientemente de la plataforma de que se Prewikka, la interfaz web de Prelude, es primera vez. La interfaz web es intuitiva
trate, ya sea Linux, Windows, VMware útil para mostrar la información propor- y proporciona un resumen claro de las
ESX, BSD, Solaris, AIX, HP-UX o Mac OS cionada por lo que pueden ser una gran alertas. Las opciones de filtrado, como
X. Con la integración de syslog remotos cantidad de agentes (Figura 1) [7]. Para source, target, analyzer o classification
se suman aparatos de hardware como los instalarla en Debian, ejecutamos apti- están disponibles para todos los campos.
cortafuegos Cisco PIX/ASA, Juniper tude install prewikka y completamos la El menú de la parte inferior derecha per-
NetScreen y SonicWALL. configuración. Por ejemplo, necesitare- mite establecer el período y el número de
mos una base de datos, que podemos eventos por página.
Gestor de Prelude instalar utilizando el script
En calidad de autoridad central para los /usr/share/prewikka/database/mysql.sql. Sensores de Prelude: LML
cuatro componentes de Prelude (gestor, Este paso colocará la configuración de Uno de los sensores más importantes
sensores, Libprelude, interfaz web), el Prewikka en el archivo para los administradores de Linux es
gestor acepta los datos transferidos por /etc/prewikka/prewikka.conf. Luego, LML (Prelude Log Monitoring Lackey)
los sensores desde las conexiones mane- necesitaremos configurar las variables [6]. Este sensor ejecuta un HIDS y moni-
jadas mediante la librería Libprelude. El software, place y title. Por ejemplo: toriza los archivos de logs especificados,

20 Número 72 WWW.LINUX- MAGAZINE.ES


Deección de Intrusiones • PORTADA

continúan ampliando # La red externa se puede


Listado 1: Configuración de Virtual Host
su juego de reglas, el # dejar como any
para Prewikka administrador debe var RED_EXTERNA any
01 <VirtualHost 192.168.0.1:80> mantener actualiza-
02 ServerName preludehost das las firmas. Al Las funcionalidades de Snort – como la
03 ErrorLog /var/log/apache2/error_log registrarnos gratuita- posibilidad de detectar escaneos de puer-
04 CustomLog /var/log/apache2/access_logcombined
mente en el sitio web tos – dependen de una serie de preproce-
05 <Location “/”>
de Snort [4], recibi- sadores. Dichos preprocesamientos se
06 AllowOverride None
mos un código para la pueden optimizar mediante configura-
07 Options ExecCGI
08 <IfModule mod_mime.c>
actualización automá- ciones granulares, por lo que lo más
09 AddHandler cgi-script .cgi tica de las firmas, que lógico es revisar el archivo de
10 </IfModule> se liberan 30 días des- configuración entero.
11 Order allow,deny pués de su publica- Snort necesita además un perfil Pre-
12 Allow from all ción. Otros programas lude:
13 </Location> de terceros, como
14 Alias /prewikka/ Oinkmaster [8] o prelude-admin register snort U
/usr/share/prewikka/htdocs/ScriptAlias Pulled Pork, permiten “idmef:w admin:r” U
/usr/share/prewikka/cgi-bin/prewikka.cgi automatizar la actuali- <I>Lista_IP_Gestores<I> U
15 </VirtualHost>
zación de las firmas -uid 0 -gid 0
mediante tareas de
enviando los eventos al gestor de Pre- cron. que permitirá la cooperación entre Snort
lude. Para instalar LML en Debian, ejecu- Bleeding Snort [9] es una alternativa a y Prelude.
tamos aptitude install prelude-lml. las reglas oficiales de Snort, y algo simi-
Después de instalar un nuevo sensor, lar a lo que utilizan los aparatos comer- OSSEC
hay que registrarlo en el gestor de Pre- ciales Sourcefire [10]. El sitio web del La independencia de la plataforma es
lude a través de una conexión cifrada. proyecto publica continuamente las importante para nosotros, el IDS basado
Para registrar Prelude-LML, hacemos lo reglas creadas por expertos en redes y en host OSSEC es una opción posible.
siguiente: seguridad. Además, se pueden combinar Una vez obtenida la última versión [5],
libremente ambos juegos de reglas. se pueden instalar fácilmente las libre-
prelude-admin register U Para instalar Snort con una base de rías de desarrollo de Prelude necesarias
prelude-lml U datos MySQL en segundo plano, ejecuta- para la compilación ejecutando aptitude
“idmef:w admin:r” U mos aptitude install snort-mysql, elegi- install libprelude-dev. Después de des-
<I>Lista_IP_Gestores<I> U mos Systemstart como método de arran- comprimir el tarball en el subdirectorio
-uid 0 -gid 0 que, y deshabilitamos Promiscuous src, ejecutamos make setprelude para
Mode. En modo promiscuo, Snort ana- habilitar el soporte de Prelude, y luego
Poco después, Prelude nos insta a ejecu- liza todos y cada uno de los paquetes, install.sh para comenzar la instalación.
tar el comando prelude-admin registra- incluso aunque no vayan dirigidos a la La instalación local está bien para los
tion-server prelude-manager desde una dirección IP de la interfaz de red. El usuarios que no piensen integrar disposi-
segunda terminal. Este paso tiene como envío de los logs por email es opcional; tivos de terminal por hardware u otro
resultado una contraseña de un solo uso obviamente, la base de datos para los tipo de clientes, pero lo más normal es
que el sensor utilizará para autenticarse logs será ahora Prelude. que queramos seleccionar server y habi-
en la sesión de consola existente. Luego, litar el demonio de comprobación de
aparece lo siguiente en la terminal desde Configuración del Sniffer integridad (Integrity Check Daemon) y el
la que se ejecuta el comando: Ha llegado el momento de aplicar una motor de detección de rootkits (Rootkit
serie de cambios al archivo de Detection Engine). Para proporcionar
Approve registration? [y/n]: y configuración /etc/snort/snort.conf. Para protección frente a ataques por fuerza
conseguir que Snort envíe sus datos a bruta, podemos habilitar Active Res-
Cambiando la dirección del servidor en Prelude, añadimos la siguiente sección: ponse y Firewall Drop para bloquear
el archivo de configuración /etc/pre- automáticamente a las máquinas remo-
lude/default/client.conf (línea output alert_prelude: U tas con iptables, ipchains o ipfw, depen-
server-addr = IP) nos aseguramos de profile=snort diendo del sistema en cuestión.
que los agentes locales envíen a partir de Para evitar problemas con falsos posi-
ahora sus datos al servidor especificado. Con los siguientes valores se especifica tivos en la red, se podría especificar tam-
la red a monitorizar: bién una lista blanca de direcciones IP.
Snort El siguiente paso consiste en habilitar la
Para integrar con Prelude el popular soft- # for IPv4: recepción de mensajes de syslog si pla-
ware Snort, se ha de habilitar la detec- var RED_LOCAL 192.168.0.0/24 neamos integrar aparatos de hardware.
ción de intrusiones basada en firmas. # for IPv6 USE flag: Llegados a este punto, ya podemos
Dado que los desarrolladores de Snort ipvar RED_LOCAL 192.168.69.0/24 modificar el archivo /var/ossec/etc/

WWW.LINUX- MAGAZINE.ES Número 72 21


PORTADA • Detección de Intrusiones

menú de consola controlado con el abrirá la conexión utilizando un servicio


teclado (Figura 2). de Windows.
Después de introducir el nombre, hay La funcionalidad de syslog de OSSEC
que introducir la dirección IP. Si la direc- es útil para aparatos hardware como los
ción IP se asigna dinámicamente, se cortafuegos PIX de Cisco. Aunque esta
habrá de especificar la red de clase C en funcionalidad la habilita el proceso de
la que reside el agente (por ejemplo, instalación anteriormente descrito, el
10.21.81.0/24). Luego, elegimos un ID servidor no recibe mensajes de syslog
para el agente; el ID predeterminado por defecto. Para que esto ocurra, debe-
Figura 2: El script “manage_agents” ofrece para el primer agente será 001, y no hay mos añadir al archivo de configuración
un menú simple desde el cual el administra- motivo para cambiarlo. Para asociar el /var/ossec/etc/ossec.conf la dirección IP
dor puede registrar clientes (agentes) en el agente al dispositivo de hardware, nece- desde la cual se permite el envío:
servidor. sitamos además una clave de autentica-
ción. Con el comando <remote>
ossec.conf para decirle a OSSEC que le <connection>syslog</connection>
pase la información a Prelude: /var/ossec/bin/manage_agents U <allowed-ips>
-e 001 10.21.81.4
<ossec_config> </allowed-ips>
<global> creamos una. <allowed-ips>
<email_notification> 10.21.81.9
no Windows y Syslog </allowed-ips>
</email_notification> Si se desea integrar un cliente Windows <port>5140</port>
<prelude_output> con OSSEC y Prelude, es necesario que </remote>
yes Libprelude [11] se encuentre en el sis-
</prelude_output> tema. La instalación no son más que un Con esta configuración, OSSEC procesa
</global> par de clicks de ratón; probablemente los mensajes de syslog de las máquinas
deseemos seleccionar todos los compo- con las direcciones IP 10.21.81.4 y
Por último, necesitamos registrar OSSEC nentes de software desde Source Code 10.21.81.9.
en Prelude: (Figura 3). El motor Prelude Correlator Engine [12]
Después de realizar la instalación, el resulta realmente útil a la hora de seguirle
prelude-admin register OSSEC U administrador de Windows debe ejecutar la pista a los atacantes porque nos ofrece
“idmef:w admin:r” U Manage Agent (desde el menú de inicio la opción de correlacionar los eventos
<I>Lista_IP_Gestores<I> U o desde el directorio OSSEC). Tras intro- IDMEF y generar así las correspondientes
-uid ossec -gid ossec ducir la dirección IP del servidor OSSEC alertas correlacionadas, que contendrán a
(OSSEC Server IP) y la correspondiente su vez las alertas individuales implicadas
Como el servicio de análisis se ejecuta clave de autenticación, la máquina Win- (Figura 5). Para instalar Prelude Correla-
con su cuenta de usuario, tenemos que dows ya puede abrir conexiones con el tor en Debian, basta con ejecutar aptitude
usar ossec como UID y GID. Una vez IDS basado en host (Figura 4). Pulsando install prelude-correlator, luego se puede
completada la instalación, iniciamos el Save se guardan los datos introducidos; registrar el agente con:
HIDS ejecutando /var/ossec/bin/ ossec- para ajustar la
control start. Para que los agentes pue- configuración,
dan conectar con OSSEC, hay que vamos a View |
registrarlos antes en el servidor. El Config. Des-
comando /var/ossec/bin/manage_ pués de reini-
agents nos permite hacerlo desde un ciar, OSSEC

Listado 2: setup.py
01 From setuptools import setup, find_packages
02 setup(
03 name=’PortscanGeoinfoPlugin’,
04 version=’1.0’,
05 description=”Información geográfica de las
máquinas que han escaneado puertos”,
06 author=”David Rupprechter”,
07 packages=find_packages(),
08 entry_points=’’’[PreludeCorrelator.plugins]
PortscanGeoinfoPlugin =
portscangeoinfoplugin:PortscanGeoinfoPlugin’’’ Figura 3: Al instalar los agentes de Windows para OSSEC, se debe selec-
09 )
cionar todo excepto “Source Code”.

22 Número 72 WWW.LINUX- MAGAZINE.ES


Deección de Intrusiones • PORTADA

prelude-admin register U /usr/share/pyshared/PreludeCorrelator/pl se habilita el plugin para fuerza bruta.


prelude-correlator “idmef:rw” U ugins/, y se pueden habilitar en forma de Podemos arrancar el Correlator mediante
<I>Lista_IP_Gestores<I> U entradas en el archivo /etc/prelude-corre- /etc/init.d/prelude-correlator start.
-uid 0 -gid 0 lator/prelude-correlator.conf. Por ejem-
plo, con Plugins Propios
Prelude Correlator ya aporta por sí Si estamos interesados en crear plugins
mismo una serie de plugins. En Debian, [BruteForcePlugin] propios, tendremos que disponer de cier-
los encontramos en el directorio disable = false tos conocimientos previos en Python y

Listado 3: main.py
01 # Descargar work scan of host(s) detected” )
http://geolite.maxmind.com/download/geoip/data- 40 ctx.Set(“alert.classification.text”, “Network
base/GeoLiteCity.dat.gz information for scanning host”)
02 # y añadir el contenido del archivo en 41 ctx.Set(“alert.assessment.impact.severity”,
03 # /usr/share/GeoIP/ para una información “high”)
04 # geográfica más detallada 42 # only create one alert per source
05 43 # GeoIP
06 # Rogamos informe de bugs a rupprechter at dotlike dot 44 # only do GeoIP lookup if IP address is not pri-
net vate
07 # para más información rogamos visite 45 if saddr.find(“10.”, 0, 4) != -1 or
www.dotlike.net/portscangeoinfo.php saddr.find(“172.”, 0, 4) != -1 or saddr.find(“192.”,
08 0, 4) == -1:
09 import os 46 # if GeoIP City Database exists
10 import re 47 if os.path.exists(“/usr/Share/GeoIP/GeoLite-
11 import shlex, subprocess City.dat”) == True:
12 import sys 48 import GeoIP
13 49 gi = GeoIP.open(“/usr/share/GeoIP/GeoLite-
14 from PreludeCorrelator.context import Context City.dat”,GeoIP.GEOIP_STANDARD)
15 from PreludeCorrelator.pluginmanager import Plugin 50 geoinfo = gi.record_by_addr(saddr)
16 from PreludeCorrelator.idmef import IDMEF 51 geo = re.sub(r’\’’, r’’, re.sub(r’: ‘, r’:’,
17 str(geoinfo)) )
18 strout = None 52 idmef = IDMEF()
19 53 idmef.Set(“alert.classification.text”, “Geo-
20 class PortscanGeoinfoPlugin(Plugin): graphical Information for portscanning host”)
21 def run(self, idmef): 54 idmef.Set(“alert.correlation_alert.name”, geo
22 classification = idmef.Get(“alert.classifica- )
tion.text”) 55 idmef.Set(“alert.assessment.impact.severity”,
23 “high”)
24 NMAPFSCAN = “PSNG_TCP_FILTERED_PORTSCAN” 56 idmef.Set(“alert.assessment.impact.descrip-
25 NMAPSCANUDP = “PSNG_UDP_FILTERED_PORTSCAN” tion”, “Geographical information for portscanning
26 NMAPPSNG = “ICMP PING NMAP” host “ + saddr)
27 TCPPSCAN = “(portscan) TCP Portscan” 57 idmef.alert()
28 NMAPSCAN = “PSNG_TCP_PORTSCAN” 58 ctx.update(idmef=idmef)
29 SSHSCAN = “SSH insecure connection attempt (scan).” 59 # else if only GeoIP Country Database exists
30 SSHSCAN2 = “Possible attack on the ssh server (or 60 elif
version gathering).” os.path.exists(“/usr/share/GeoIP/GeoIP.dat”) ==
31 if classification != NMAPPSNG and classification != True:
NMAPFSCAN \ 61 import GeoIP
32 and classification != TCPPSCAN and classification 62 gi = GeoIP.new(GeoIP.GEOIP_MEMORY_CACHE)
!= NMAPSCAN \ 63 idmef = IDMEF()
33 and classification != SSHSCAN and classification != 64 idmef.Set(“alert.classification.text”, “Geo-
SSHSCAN2 and classification != NMAPSCANUDP: graphical Information for portscanning host”)
34 return 65
35 source = idmef.Set(“alert.correlation_alert.name”,str(gi.co
idmef.Get(“alert.source(*).node.address(*).address untry_code_by_addr(saddr)) )
”) 66 idmef.Set(“alert.assessment.impact.severity”,
36 for saddr in source: “high”)
37 ctx = Context((“NETWORK_INFO_PORTSCAN_ATTACKER”, 67 idmef.Set(“alert.assessment.impact.descrip-
saddr), { “expire”: 600, “alert_on_expire”: True }, tion”, “Geographical information for portscanning
update = True, idmef=idmef) host “ + saddr)
38 if ctx.getUpdateCount() == 0: 68 idmef.alert()
39 ctx.Set(“alert.correlation_alert.name”, “Net- 69 ctx.update(idmef=idmef)

WWW.LINUX- MAGAZINE.ES Número 72 23


PORTADA • Detección de Intrusiones

Figura 5: Las alertas correlativas registran los ataques incluso en los casos en los que el atacante se dirige a varios dispositivos; en este ejem-
plo se ilustra un escaneo de puertos.

leer el capítulo 4.2 del IDMEF-RFC [3]. del plugin. Para crear nuestro propio plu- con una instancia de monitorización
Esta sección del RFC está relacionada gin, modificamos los nombres Portscan- centralizada.
con las clases de mensajes que los desa- GeoinfoPlugin y portscangeoinfoplugin y, Mediante el uso de plugins individua-
rrolladores de plugins pueden usar. opcionalmente, corregimos los campos les para la visualización de la informa-
El plugin PortscanGeoinfo, que he cre- description, author y version. ción recogida de alertas correlaciona-
ado como ejemplo, está disponible desde En mi ejemplo, el código del plugin se das en Prewikka, ponemos muy difícil a
[13]. Este programa reacciona antes los encuentra en el directorio portscangeoin- un eventual intruso el acceso a nuestra
escaneos de puertos detectados por foplugin. Aquí, el script también acep- red. ■
Snort y OSSEC, y ofrece al administrador tará comodines. Al introducir
la posibilidad de mostrar información RECURSOS
geográfica acerca de la ubicación del ata- Pluginname = U [1] Prelude: http://www.
cante mediante una alarma de correla- <I>Directorio<I>:Mi_plugin prelude-technologies.com/en/
ción. A fin de permitir a Snort la detec- solutions/universal-sim/index.html
ción de los escaneos de puertos, debe- en el script de instalación, se referencia [2] Libprelude: https://dev.
mos habilitar el preprocesador portscan al plugin Mi_plugin de dentro del direc- prelude-technologies.com/wiki/
en el archivo snort.conf. torio Directorio. Luego, python setup.py prelude/ManualDevel
La alerta correlativa Network Informa- build y python setup.py install comple- [3] RFC 4765: IDMEF: http://www.ietf.
tion for scanning host contiene tanto la tan la instalación. org/rfc/rfc4765.txt
información geográfica sobre la IP como Ahora debemos añadir las siguientes [4] Snort: http://www.snort.org
[5] OSSEC: http://www.ossec.net
las alertas asociadas de los sensores de líneas al archivo /etc/prelude-correlator/
[6] Prelude LML: https://dev.
Snort y OSSEC. El plugin espera durante prelude-correlator.conf para que se habi-
prelude-technologies.com/wiki/1/
cinco minutos, recopila durante este lite el plugin cada vez que se inicie el
PreludeLml
tiempo todos los eventos de portscan Correlator: [7] Prewikka: https://dev.
necesarios, y los reúne en una alerta de prelude-technologies.com/wiki/1/
correlación. Para que esto suceda debe- [PortscanGeoinfoPlugin] Prewikka
mos instalar GeoIP para Python disable = False [8] Oinkmaster: http://oinkmaster.
mediante el comando aptitude install sourceforge.net
geoip-python libgeoip1. Si no nos basta El directorio del plugin contiene los [9] Bleeding Snort: http://www.
con la información sobre el país, la base archivos init.py y main.py (Listado 3). El bleedingsnort.com
de datos GeoIP City Lite de [14] propor- archivo init.py contiene una única línea [10] Sourcefire: http://www.sourcefire.
ciona más detalles. con el nombre del plugin: com
[11] Agente Libprelude para Windows:
Estructura de los Plugins from main import U
http://www.prelude-technologies.
com/download/releases/libprelude/
Cada plugin de correlación contiene un PortscanGeoinfoPlugin
libprelude-1.0.0.exe
archivo llamado setup.py (Listado 2),
[12] Correlation Engine: http://www.
que es el responsable de la instalación El plugin PortscanGeoinfo nos muestra prelude-technologies.com/en/
las impresionantes opciones que ofrece solutions/correlation-engine/index.
Prelude Correlator Engine: con la fun- html
ción Popen integramos los programas de [13] PortscanGeoinfo: http://www.
línea de comandos y sus salidas. dotlike.net/portscangeoinfo.php
[14] Base de datos GeoIP city: http://
Control Absoluto de la Red geolite.maxmind.com/download/
Con la combinación de NIDS y HIDS en geoip/database/GeoLiteCity.dat.gz
forma de sensores de Prelude podemos [15] Listados de código para este artí-
analizar toda la información proporcio- culo: http://www.linux-magazine.es/
Magazine/Downloads/72
nada por nuestras redes, incluida la
información proveniente de los syslog de
EL AUTOR

dispositivos terminales que lo soporten – David Rupprechter trabaja como


todo ello centralizado en una interfaz técnico de TI para un integrador
Figura 4: A diferencia de la integración de web. No importa si tenemos Windows, de sistemas líder, y está centrado
syslog, el agente de Windows utiliza por Cisco, o servidores Linux, ya que esta en la seguridad TI, la progra-
defecto una conexión cifrada segura para configuración permite integrar cualquier mación de tecnologías de redes y
Linux en http://www.dotlike.net.
transferir sus datos. máquina en nuestros centros de datos

24 Número 72 WWW.LINUX- MAGAZINE.ES


Ayudantes de Snort • PORTADA

Snorby, Open FPC y Pulled Pork traen de vuelta a Snort


© lsantilli - 123RF.com

CARNE
FRESCA
Snort es el estándar de facto para la detección de intrusiones en redes

de código abierto. La comunidad de desarrolladores ha mantenido un

perfil bajo durante un par de años, pero las extensiones como Snorby,

OpenFPC y Pulled Pork le han proporcionado al viejo cerdito un poco

más de vida.

POR RALF SPENNEBERG

S
nort es viejo – en la escala TI, mensajes de los análisis en una base de La versión actual de Snort es la
incluso anciano. Marty Roesch datos o registros forenses. En el 2.9.0.3. A diferencia de la anterior, los
comenzó el desarrollo del sniffer pasado, los administradores solían uti- desarrolladores simplemente han corre-
de red [1] en 1998. Su plan original era lizar herramientas como Oinkmaster gido algunos fallos. Antes de compilar
desarrollar uno que pudiera funcionar [3] o BASE [4] para procesar la infor- Snort debemos asegurarnos de tener ins-
en diversos sistemas operativos. La ver- mación de Snort; sin embargo, estos taladas en el sistema las librerías DAQ,
sión inicial, que data de 1998, contenía proyectos han quedado huérfanos o Dnet y PCRE. La Tabla 1 muestra las
1200 líneas de código, pero de estos dormidos. Afortunadamente, algunos posibles modificaciones del script ./con-
humildes comienzos surgió uno de los trabajos nuevos han cubierto este figure de Snort. Aunque podemos tener
motores de IDS de redes más potentes. hueco: Snorby [5], OpenFPC [6] y varias configuraciones de bases de
En 2001, Roesch fundó Sourcefire [2], Pulled Pork [7]. Este artículo muestra la datos, lo más probable es que deseemos
una empresa que hoy es sinónimo de última generación de proyectos que dan evitarlas; vamos a mostrar cómo utilizar
potentes dispositivos de detección de soporte a Snort. Barnyard [12] como base de datos resi-
intrusiones en redes basados en Snort, y dente.
que continúa desarrollando Snort como Sniffer El archivo con el código fuente de
una forma de corresponder a la comuni- Con la versión 2.9, los desarrolladores Snort sólo proporciona un script de
dad de código abierto. de Snort presentaron la nueva DAQ (la comienzo para Red Hat y las distribucio-
Snort es un motor que analiza y librería de adquisición de datos), que nes basadas en Fedora. Probablemente
estandariza el tráfico de red y luego reemplaza a la clásica libpcap. A partir haya que modificar el script para que se
comprueba las firmas para identificar de esta versión, Snort depende de la ajuste a nuestras necesidades de instala-
actividades sospechosas. Snort no pro- librería DAQ, por lo que no se podrá ins- ción – o incluso que tengamos que escri-
porciona herramientas para la gestión talar el sniffer sin ella (véase el cuadro birnos nuestro propio script. Lo impor-
de firmas, ni el almacenamiento de los titulado “DAQ”). tante es recordar que necesitamos ejecu-

WWW.LINUX- MAGAZINE.ES Número 72 27


PORTADA • Ayudantes de Snort

tar Snort por medio de las Emerging Threats. Ambas se sólo hay que copiar el directorio en
/usr/local/bin/snort-c/etc/snort/snort. conf. encuentran disponibles tanto de forma /etc/snort/preproc_rules.
Antes de comenzar a utilizar Snort por gratuita como de pago. Las reglas VRT Por último, las reglas binarias para
primera vez, debemos copiar el conte- gratuitas se diferencian de las comer- Snort se encuentran disponibles en
nido del directorio etc que se encuentra ciales porque se publican 30 días des- so_rules. Necesitamos copiar el subdi-
en el directorio del código fuente a pués que las comerciales, pero permi- rectorio de la distribución (por ejemplo,
/etc/snort/ y crear un directorio ten acceder al conjunto completo de so_rules/precompiled/Ubuntu-10-4/x86-6
/var/log/snort. El cuadro titulado reglas. La edición comercial de las 4/2.9.0.3/*) en /usr/local/lib/ snort_
“snort.conf” contiene la ayuda necesaria reglas Emerging Threats incluye reglas dynamicrules y los ficheros *.rules en el
para modificar el fichero de adicionales que no se suministran en la directorio /etc/snort/so_rules/.
configuración snort.conf. versión gratuita. Sourcefire Vulnerability Research
Los siguientes ejemplos utilizan las Team ofrece algunas reglas sólo en for-
Firmas reglas VRT, que se pueden descargar mato binario. Existen dos razones para
Evidentemente, Snort necesita ahora las como parte de una suscripción comer- el uso del formato binario: por un
firmas que le proporcionarán el conoci- cial o bien obtenerlas gratuitamente con lado, el lenguaje de reglas de Snort es
miento para detectar las intrusiones. un retraso de 30 días (tras registrarse). un lenguaje muy potente pero no es
Existen básicamente tres fuentes de fir- Una vez que nos hayamos subscrito o capaz de identificar paquetes sospe-
mas: registrado, Sourcefire nos proporcionará chosos en algunos ataques. Las libre-
• Las reglas VRT de Sourcefire Vulnera- un “Oink Code” que habrá que incluir rías binarias mejoran considerable-
bility Research Team en la petición de descarga: mente la tasa de detección. La
• Las reglas Emerging Threats segunda razón es que un tercero
• Las reglas GPL wget http://www.snort.org/reg-rU podría haber descubierto una vulnera-
Estas reglas han de mantenerse actuali- ules/snort rules-snapshot-2903.U bilidad en Sourcefire bajo un acuerdo
zadas siempre – en este artículo utili- tar.gz/<oinkcode> -O snortrulesU de confidencialidad (NDA). Si el
zaremos más adelante Pulled Pork para -snapshot-2903.tar.gz equipo de VRT distribuyese la firma en
las actualizaciones. Si tenemos la texto claro, estarían publicando deta-
intención de utilizar Snort en un El conjunto de reglas VRT incluye cuatro lles sin la autorización necesaria.
entorno en producción, es probable directorios: etc contiene los ficheros de
que deseemos utilizar las reglas VRT o configuración que necesitan los conjun- Actualizando con Pulled
tos de reglas Snort Pork
Listado 1: Una Tabla de Atributos de un y Barnyard, que La mayoría de los usuarios utilizan
Host deberemos copiar Oinkmaster para actualizar los conjun-
en el directorio tos de reglas. Como los trabajos de
01 <SNORT_ATTRIBUTES>
/etc/snort. rules, desarrollo de esta herramienta se
02 <ATTRIBUTE_TABLE>
que contiene las encuentran dormidos, Pulled Pork admi-
03 <HOST>
reglas basadas en nistra las tareas en diversos entornos.
04 <IP>10.1.2.3</IP>
texto para Snort, Pulled Pork también procesa las reglas
05 <OPERATING_SYSTEM>
ha de copiarse en binarias y organiza los elementos en los
06 <NAME>
/etc/snort/rules. directorios adecuados. Para la instala-
07 <ATTRIBUTE_VALUE>Windows</ATTRIBUTE_VALUE>
preproc_rules nos ción sólo es necesario descargarse el
08 </NAME>
da las reglas del paquete desde Google Code. La versión
09 <FRAG_POLICY>Windows</FRAG_POLICY>
preprocesador – actual de Pulled pork (0.5.0) requiere
10 <STREAM_POLICY>Win XP</STREAM_POLICY>
11 </OPERATING_SYSTEM>
12 <SERVICES>
Insta-Snorby
13 <SERVICE> Insta-Snorby está basado en la librería TurnKey Linux Virtual
14 <PORT> Appliance [9], que proporciona máquinas virtuales para diver-
15 <ATTRIBUTE_VALUE>80</ATTRIBUTE_VALUE> sos propósitos. Basada en Ubuntu Linux, permite a los adminis-
16 </PORT> tradores probar varias aplicaciones sin tener que instalar nada.
17 <IPPROTO> Insta-Snorby es una imagen ISO; la versión 0.6.0 soporta una
18 <ATTRIBUTE_VALUE>tcp</ATTRIBUTE_VALUE> instalación sin complicaciones en un dispositivo. Contiene:
19 </IPPROTO> • Snort 2.9.0.3
20 <PROTOCOL> • Barnyard 2.19
21 <ATTRIBUTE_VALUE>http</ATTRIBUTE_VALUE> • Snorby 2.2.1
22 </PROTOCOL> • Open FPC
23 </SERVICE> • Pulled Pork
24 </SERVICES> Para instalarla como un dispositivo virtual, necesitaremos pro-
25 </HOST> porcionarle a Insta-Snorby al menos 512 MB de RAM para evi-
26 </ATTRIBUTE_TABLE> tar el uso de una memoria de intercambio.

28 Número 72 WWW.LINUX- MAGAZINE.ES


Ayudantes de Snort • PORTADA

config utc
config daemon
config logdir: /tmp
config waldo_file: /var/logU
/snort/waldo
#output alert_fast: stdout
output database: log, mysql, U
user=snort password=snortpw U
dbname=snortdb host=localhost

Antes de ejecutar Barnyard2, debemos


crear la base de datos:

# cat << EOF | mysql -u root -p


create database snortdb;
grant all on snortdb.* to U
snort@localhost identified U
by “snortpw”;
EOF
Figura 1: El panel de control de Snorby ordena los mensajes según su gravedad. # mysql -u snort -password=U
snortpw snortdb < schemas/U
Perl y los módulos Archive::Tar, Barnyard create_mysql
Crypt::SSLeay y LWP::Simple de Perl, Una vez que se haya instalado Snort con
que se pueden instalar en la mayoría de las especificaciones, registrará los men- La siguiente línea en el script de
las distribuciones por medio del gestor sajes en un fichero binario en formato comienzo automatiza el proceso de
de paquetes. Para instalar Pulled Pork, Unified2, que no podremos leer directa- arranque:
copiamos el directorio etc en mente, de modo que será necesario utili-
/etc/pulledpork y el script de Perl zar otra herramienta para almacenar los barnyard2 -d /var/log/snort/U
pulledpork.pl en /usr/local/bin. El datos en una base de datos. La herra- -f merged.log -c /usr/local/U
fichero de configuración pulledpork. mienta perfecta es Barnyard2, que etc/barnyard2.conf -n
conf también es autoexplicativo. Las adopta el papel del proceso que escribe
únicas tareas importantes son la modi- los datos en la base de datos, redu- La -n le indica a Barnyard2 que sólo pro-
ficación de la regla de la URL con el ciendo por tanto la carga del servidor. El cese los mensajes nuevos que se añadan
Oink Code, las rutas para instalar las archivo con el código fuente de Barn- al fichero de registro de Snort. Para
reglas y las reglas compartidas de obje- yard se encuentra disponible en [12]; su poder ignorar los mensajes antiguos
tos, dependiendo de la distribución que instalación desde el código fuente no cuando se reinicie, insertará un marca-
tengamos. Pulled Pork puede modificar supone ningún problema. dor en un fichero Waldo [13].
las reglas durante la instalación. Para Barnyard necesita escribir ficheros en
hacerlo, referencia cuatro ficheros de el directorio /var/log/snort y escribir el Snorby
configuración adicionales, que pode- contenido del fichero en la base de Snorby, que hace de interfaz de Snort,
mos activar: datos. Snort almacena los ficheros en sólo se encuentra oficialmente disponi-
• dropsid.conf: Pulled Pork cambia este directorio con el patrón ble por medio de su propio repositorio
todas las reglas de este fichero para merged.log.XXXXXXXX, donde Git [14], pero a veces nos podemos tro-
decirle a Snort que descarte los paque- XXXXXXX es la marca de tiempo que pezar con varios archivos comprimidos.
tes. Barnyard referencia para ayudar a igno- Antes de poder instalar Snorby, necesi-
• enablesid.conf y disablesid.conf: rar los ficheros antiguos. Si no se tamos resolver algunas dependencias:
PulledPork activa y desactiva las encuentra la marca de tiempo, habrá Ruby (>=1.8.7), Rubygems y las
reglas de estos ficheros. que eliminar la opción nostamp del siguientes Rubygems: tzinfo, builder,
• modifysid.conf: Pulled Pork modifica fichero de configuración para la salida memcache-client, rack, rack-test, erubis
las reglas en los ficheros especifica- del plugin Unified. Como el fichero de mail, text-format, bundler, thor, i18n,
dos. registro de Unified sólo contiene infor- sqlite3-ruby y rack-mount rails=3.0.0.
El programa se ejecuta tecleando pulled- mación binaria, Barnyard tiene que Los requisitos de Ruby en particular
pork.pl -c /etc/pulledpork/pulledpork. acceder a otros ficheros de implican que tenemos una distribución
conf. Antes de descargar las reglas, configuración de Snort para poder inter- reciente o que estamos preparados para
Pulled Pork utiliza las sumas de compro- pretar el contenido del fichero, así que instalar todos estos paquetes desde el
bación para ver si las reglas en el servi- introducimos las rutas de estos ficheros código fuente. Ubuntu a partir de Kar-
dor son nuevas. El resto lo realiza un en el fichero de configuración mic y Fedora 14 incluyen la versión
trabajo programado de forma diaria en /usr/local/etc/barnyard2.conf y modifi- 1.8.7 de Ruby; ninguna de estas versio-
cron. camos el resto de los parámetros: nes incluyen la versión 3 de Rails.

WWW.LINUX- MAGAZINE.ES Número 72 29


PORTADA • Ayudantes de Snort

Tras descomprimirlo, en el directorio


de Snorby tecleamos bundle install; este
paso instala un par de paquetes adicio-
nales. rake snorby:setup finalmente ins-
tala Snorby. Hay un par de ficheros de
configuración autoexplicativos –
snorby/config/snorby_config.yml y
snorby/config/initializers/mail_config.rb
– que necesitamos modificar, pero luego
podemos ejecutar Snorby tecleando
rails -c para que aparezca la ventana de
inicio de sesión.
Tras iniciar la sesión, veremos el panel
de control de Snorby, una GUI de última
generación con los mensajes entrantes
(Figura 1) que permite ver cada evento
en detalle (Figura 2).

Análisis Forense
Snort sólo detecta los ataques potencia-
les en la red y registra cualquier paquete
sospechoso que haga saltar las alarmas.
A menudo esto sucede demasiado tarde, Figura 2: En la interfaz web de Snorby, los administradores pueden clasificar los resultados,
ya que Snort no puede viajar hacia atrás añadir comentarios y gestionar los sensores y los usuarios.
en el tiempo y registrar los paquetes
enviados previamente. Sólo se pueden basadas en Debian como Ubuntu, la ins- lación openfpc-install.sh install y res-
modificar las firmas para que registren talación es más fácil, ya que podemos pondemos a las preguntas (por ejemplo,
la subsecuencia de paquetes desde la hacer lo siguiente: el nombre de usuario y la contraseña).
misma conexión. Esta complicación El fichero /etc/openfpc/ openfpc- default.
hace que sea prácticamente imposible aptitude install apache2 U conf se usa para otras configuraciones.
analizar un ataque con éxito a nivel de daemonlogger tcpdump U Luego arrancamos el servidor y compro-
red. tshark libarchive-zip-perl U bamos la disponibilidad de los clientes:
El reciente proyecto OpenFPC (cap- libfilesys-df-perl libapache2U
tura completa de paquetes) tiene como -mod-php5 mysql-server php5U openfpc --action start
objetivo resolver este problema. -mysql libdatetime-perl U openfpc-client --action status
OpenFPC es la rama hija de la plantilla libdbi-perl libdate-simple-perlU
de Sourcefire, como Pulled Pork; el php5-mysql libterm-readkey-perlU Para que el programa se ejecute en el
número de versión es bastante bajo libdate-simple-perl momento de arranque del ordenador,
(0.4), y necesitamos instalar primero encontraremos los scripts de arranque
unos cuantos paquetes para cubrir las Tras descomprimir el código fuente de en /etc/init.d. Para integrarlo con
dependencias. En las distribuciones OpenFPC, ejecutamos el script de insta- Snorby, necesitamos hacer un pequeño

Tabla 1: Opciones de Configuración


Opción Función
--enable-ipv6 Activa el soporte IPv6. Incluso si no se desea realmente usar IPv6, se debería activar esta función. Esta es la
única opción para que Snort soporte el parámetro ipvar utilizado en los ficheros de configuración 2.9.
--enable-static-daq Integra una librería DAQ estática. Esto facilita la distribución del binario.
--enable-zlib Muchos servidores comprimen las páginas cuando las sirven. Con este parámetro, Snort podrá analizar tam
bién las páginas web. Sin embargo, implica la incorporación de la librería Zlib al sistema.
--enable-targetbased Activa la configuración del preprocesador específica de un host, tal como se describe en el artículo.
--enable-decoder-preprocessor-rules Permite activar y desactivar las pruebas individuales del preprocesador.
--enable-reload Soporta una recarga simple en el caso de que cambie la configuración de Snort. El reiniciado siempre
implica la pérdida de algunos paquetes.
--enable-reload-error-restart Si falla la recarga, Snort se reinicia.
--enable-normalizer Activa el código normalizador en el modo en línea. Un binario de Snort puede funcionar en el modo en línea
IPS o en modo pasivo IDS si se utiliza la librería DAQ.
--enable-inline-init-failopen Permite a Snort pasar los paquetes sin comprobarlos durante la inicialización del modo en línea.

30 Número 72 WWW.LINUX- MAGAZINE.ES


Ayudantes de Snort • PORTADA

cambio mediante la GUI web. En la Snort también ofrece algunos métodos ques de forma correcta, necesita des-
interfaz administrativa, activamos el avanzados, tales como la reconstrucción fragmentar y reensamblar los paquetes
plugin OpenFPC e introducimos en del tráfico basada en el destino. Los de la misma forma que lo haría el sis-
OpenFPC el path:https://Open-FPC- Ser- investigadores Vern Paxson y Umesh tema objetivo.
ver_ name/ openfpc/cgi-bin/ extract.cgi. Shankar descubrieron en 2003 que dife- Snort posee un par de trucos propios
Luego podemos descargar el fichero rentes sistemas operativos manejan la en respuesta a estos métodos de ataque
Pcap de la conexión entera directa- desfragmentación IP y reensamblan TCP avanzado: soporta los modos de des-
mente desde la alerta en Snorby (Figura de diferentes maneras. Esto le propor- fragmentación de first, last, bsd,
3) y enviarlo a Wireshark para su análi- ciona a un atacante la posibilidad de bsd-right, linux, windows y solaris, con
sis. camuflar un ataque de modo que com- bsd por defecto. Para métodos de reen-
prometa el objetivo pero que no sea samblado más complejos, véase la
La Seguridad Tiene detectado por el IDS. Tabla 2.
Prioridad Para permitir que esto suceda, el ata- Si sólo utiliza uno o dos sistemas ope-
Por razones de seguridad, no debería- cante debería fragmentar el exploit, ade- rativos, la configuración es bastante
mos nunca ejecutar Snort con los privi- más crea el fragmento con la carga ata- simple: sólo hay que editar la sección
legios del root; tiene mucho más sentido cante dos veces. Un fragmento contiene del preprocesador de snort.conf:
crear una cuenta dedicada para Snort y la carga y el otro contiene datos no peli-
añadir el nombre de la cuenta y el grupo grosos. Si se envían los dos en sucesión, preprocessor frag3_engine: U
al fichero de configuración de Snort. el éxito o el fracaso del ataque y la habi- policy linux bind_to [10.1.1.U
Además, podemos encerrar Snort en una lidad del IDS para detectarlo dependerán 12/32,10.1.1.13/32] U
jaula Chroot; el fichero snort.conf que- de cómo responda el sistema objetivo. detect_anomalies
daría de la siguiente forma: ¿Preferirá el primer o el segundo frag- preprocessor frag3_engine: U
mento para la desfragmentación? Esta- policy windows bind_to U
config set_uid: snort bleciendo los parámetros con cuidado, 10.2.1.0/24 detect_anomalies
config set_gid: snort el atacante podría ejecutar el exploit sin
config chroot: /chroot/snort que el IDS lo detecte. Esta configuración está bien para las
Existen diferencias similares con los redes Windows con dos ordenadores
Evidentemente, necesitamos modificar segmentos TCP y el solapamiento de Linux. De forma similar, habría que
algunos permisos y estructuras de direc- los fragmentos y los segmentos. Para modificar el preprocesador Stream5.
torios para evitar que Snort tenga pro- asegurarse de que Snort siempre Para más detalles, léase el fichero
blemas. detecte estos ata-
DAQ
snort.conf Uno de los mayores problemas a la hora de ejecutar Snort en
La mayoría de los parámetros de configuración que se encuen- una red rápida es su propio rendimiento. Si Snort tardara dema-
tran en el fichero snort.conf pueden quedarse tal cual, pero siado en analizar los paquetes y fallase a la hora de obtener los
habrá que hacer unos cuantos cambios. La configuración DAQ paquetes a la velocidad necesaria de la librería Libpcap [10], la
utiliza la interfaz de paquetes AF y proporciona un búffer de 256 librería descartaría el paquete. Es más, los administradores han
MB para utilizarlo de caché para cualquier paquete que aún no usado dos soluciones diferentes para solucionar este problema:
haya procesado. La variable HOME_NET define la red a prote- Phil Wood añadió un búffer de memoria en anillo a Libcap; el
ger. Las variables RULE_PATH, SO_RULE_PATH y tamaño del búffer se especificaba cuando se cargaba la librería.
PREPROC_RULE_PATH hacen referencia a los directorios A partir de la versión 1.0 de Libpcap, el búffer en anillo viene
correctos. El plugin de salida unified2 crea los ficheros de regis- implementado en la librería. Otra solución es la librería PF_ring
tro: [11], que reemplaza a la librería libpcap.
config daemon La versión 2.9 de Snort presenta DAQ (librería para la adquisi-
config interface: eth0 ción de datos) como una alternativa nueva y mucho más sim-
config daq: afpacket ple, que accede directamente a la tarjeta de interfaz de red sin
config daq_mode: passive hacer uso de Libpcap. DAQ es fácil de instalar, sin embargo, la
config daq_var: buffer_size_mb=256 mayoría de las distribuciones no cuentan con los paquetes pre-
ipvar HOME_NET 192.168.0.0/24 compilados con los parámetros correctos. De hecho, la página
var RULE_PATH /etc/snort/rules web de Snort sólo ofrece paquetes RPM. Tras descargar la
var SO_RULE_PATH /etc/snort/so_rules última versión 0.5 del código fuente, sólo hay que seguir los
var PREPROC_RULE_PATH /etc/snort/preproc_rules pasos típicos: ./configure,make,sudo make install. No hay
output unified2: filename merged.log, limit 128, muchas dependencias que resolver. Para asegurarse de que se
vlan_event_types pueden compilar los fuentes, probablemente haya que instalar
Para utilizar reglas de preprocesamiento y reglas de objetos el compilador de C, Flex, Bison y libpcap >= 1.0. Si no va a usar
compartidos, deberemos quitar los signos de comentario que Libpcap, sino que accede a la NIC directamente por medio de la
se encuentran al comienzo de las directivas incluidas en las librería DAQ, puede desactivar Libpcap
correspondientes secciones. usando --disable-pcap-module.

WWW.LINUX- MAGAZINE.ES Número 72 31


PORTADA • Ayudantes de Snort

cesador para indicar la cantidad de RAM


disponible.
Conseguir que Snort maneje redes de
10 Gbps es todo un reto – pero no impo-
sible – con una buena experiencia, el
hardware adecuado y un ajuste óptimo.
La respuesta que Steven Sturges de
Sourcefire da cuando se le pregunta
acerca de cuál es el mayor desafío, es
concisa: “Velocidad”. Y continúa expli-
cando que no es difícil analizar 500
Mbps en tiempo real; el reto está en
intentar hacer lo mismo con ¡10 Gbps! ■

RECURSOS
[1] Snort: http://www.snort.org
[2] Sourcefire: http://www.sourcefire.
com
[3] Oinkmaster: http://oinkmaster.
sourceforge.net
[4] BASE: http://base.secureideas.net
[5] Snorby: http://www.snorby.org
Figura 3: Si usamos el fichero PCAP, podremos definir con precisión qué paquetes queremos
[6] OpenFPC: http://www.openfpc.org/
que extraiga OpenFPC.
[7] Pulled Pork: http://code.google.com/
p/pulledpork/
README.stream5 que se encuentra en mente desde un análisis de Nmap pode-
[8] Insta-Snorby del 19.01.2011 http://
el directorio del código fuente de mos utilizar Hogger [15].
www.snorby.org/Insta-Snorby-0.6.0.
Snort.
iso
Si tenemos muchos sistemas operati- ¡Corre, Cerdito, Corre!
[9] Librería TurnKey Linux Virtual
vos en la LAN, esta clase de administra- Con una combinación inteligente de los
Appliance: http://www.turnkeylinux.
ción es demasiado compleja. En tal componentes adecuados, podemos crear
org
caso, necesitamos una tabla de atributos un sistema de detección de intrusiones
[10] Librería libpcap: http://www.
de los hosts para definir la información en la red con Snort. Obviamente, necesi-
tcpdump.org
en un fichero XML (Listado 1). La tabla tamos utilizar un buen hardware en una
[11] LibreríaPF_ring: http://www.ntop.
se define en snort.conf como red rápida. Dispositivos como el que
org/PF_RING.html
attribute_table filename /path/to/file. La comercializa Sourcefire pueden monito-
[12] Barnyard2 http://www.securixlive.
tabla de atributos de hosts contiene rizar las redes a velocidades de hasta 10
com/barnyard2/index.php
información de cada ordenador indivi- Gbps ejecutanto Snort 2.9 en un hard-
[13] Fichero Waldo: http://en.wikipedia.
dual. Para crear el fichero XML directa- ware altamente especializado.
org/wiki/Waldo_file
Comparado con
[14] Repositorio Snorby Git: https://
Tabla 2: Reensamblado Basado en el esto, el hardware
github.com/Snorby/snorby/tarball/
Objetivo normal habitual-
master
mente alcanza su
Método Efecto [15] Hogger: http://code.google.com/p/
límite a 1 Gbps. Se
first Prefiere el primer segmento de solapamiento hogger/
recomiendan tarje-
last Prefiere el último segmento de solapamiento [16] Napatech: http://www.napatech.
tas interfaces de
bsd Free BSD 4.x, Net BSD 2.x, Open BSD 3.x, AIX com/applications/network_security/
red premium –
intrusion_detection.html
linux Linux 2.4 y 2.6 como las fabrica-
old-linux Linux 2.2 y anteriores das por Napatech
[16], por ejemplo Ralf Spenneberg es profesor free-
windows Windows 98, NT, 2000, XP
– una generosa lance de Unix/Linux, consultor, y
win2003 Windows 2003 Server
EL AUTOR

cantidad de RAM y autor y CEO de Ralf Spenneberg


vista Windows Vista una CPU rápida. Open Source Training. Ralf ha
solaris Solaris 9.x Además, los admi- publicado varios libros sobre
nistradores que detección de intrusiones, SELinux,
hpux10 HPUX 10
buscan rendi- cortafuegos y redes privadas vir-
hpux HPUX 11
miento necesitarán tuales. La segunda edición de su
irix IRIX 6 último libro VPN on Linux se pub-
modificar los pará-
macos MacOS >= 10.3 licó hace unos meses.
metros del prepro-

32 Número 72 WWW.LINUX- MAGAZINE.ES


Vídeodiscos HD • PRÁCTICO

Crea tus propios discos HD y Blu-ray

Alta Definición
Casera

phyzick, 123RF
Ante la falta de oferta comercial de tecnología Blu-ray, los usuarios de Linux han tendido a considerar este

medio con escepticismo. Sin embargo, en Linux podemos crear nuestros propios discos de vídeo HD tanto en

formato Blu-ray como DVD. POR DANIEL KOTTMAIR

C
on paso lento, pero seguro, Blu-ray perar – busque el logotipo AVCHD en el compatible con la versión 2.5 del Formato
se está volviendo atractivo como dispositivo. de Disco Universal (UDF). Como se verá
medio de almacenamiento. La alta MPEG4 AVC, también conocido como más adelante en este artículo, la aplicación
capacidad de los discos ópticos Blu-ray, que H.264, es un códec de alta eficiencia, y el comercial de grabación Nero Linux es la
están diseñados para contener los datos de codificador libre x264 AVC [2] ofrece, con única herramienta para la creación en
hasta seis DVDs estándar, está llamando la diferencia, la mejor calidad para la codifica- Linux de discos compatibles UDF 2.5.
atención como soporte para vídeos de alta ción H.264, especialmente a bitrates bajos.
definición. Por desgracia, Linux ofrece un Si utilizamos primero el codificador x264 Contenido HD
apoyo limitado para Blu-ray. Sin embargo, para convertir vídeo al formato AVCHD, Para crear un disco Blu-ray o AVCHD, pri-
podemos crear – en Linux – nuestros pro- luego podemos empaquetarlo en un disco mero es necesario algún tipo de contenido
pios discos que se reproducirán en disposi- compatible Blu-ray. La configuración de vídeo de alta definición (HD). Los pro-
tivos Blu-ray y otros reproductores de vídeo correcta obtiene hasta 3 horas de vídeo con gramas de edición con capacidad HD como
HD. En este artículo describiremos cómo una resolución de 1080p en un DL-DVD de Kdenlive, OpenShot Video Editor o Cinele-
grabar nuestros propios discos Blu-ray com- 8 GB con una resolución razonable, y si rra permiten editar las películas grabadas
patibles con vídeo de alta definición. sólo hay que poner 1,5 horas de vídeo en el con una cámara de vídeo HD y exportarlas
disco, no habrá prácticamente ninguna
Tostando en Blu-ray diferencia entre la calidad del disco de 8 GB
Estrictamente hablando, no es necesario AVCHD y un disco Blu-ray.
un disco Blu-ray o un grabador Blu-ray a Hasta el momento, Linux no proporciona
juego para crear un disco de vídeo HD una herramienta para crear menús de Blu-
compatible con Blu-ray. El formato AVCHD ray o AVCHD, sin embargo, herramientas
[1] especificado originalmente por Sony y como tsMuxeR [3] permiten preparar una
Panasonic para cámaras de vídeo HD, per- película individual que se pondrá en mar-
mite a los usuarios grabar contenido en cha automáticamente en un reproductor de
alta definición en DVD o DL-DVD, que los Blu-ray después de grabarlo en un BD-R(E)
reproductores Blu-ray pueden reproducir. o en un DVD.
La mayoría de reproductores actuales Por último, habrá que grabar el archivo
entienden el formato AVCHD, aunque de formato AVCHD en un DVD utilizando Figura 1: El dialogo Stream de VLC nos lleva
algunos modelos antiguos se niegan a coo- una herramienta de grabación que sea directamente al asistente de conversión.

WWW.LINUX- MAGAZINE.ES Número 72 33


PRÁCTICO • Vídeodiscos HD

a problemas en el proceso de distribución


[7].

Codificación de Vídeo
El codificador x264, cortesía del proyecto
VideoLAN, es conocido por su eficiencia,
velocidad y excelente nivel de optimiza-
ción. Para controlarlo podemos utilizar
FFmpeg o Mencoder con Libx264; diversos
transcodificadores, como el Asistente para
Exportación de Streaming en VLC, Trans-
mageddon o Arista también usan x264.
Figura 2: Configurando los parámetros com- También hay un programa x264 stand- Figura 3: Se selecciona el fichero y el códec
patibles con el estándar de sonido Dolby alone que sólo acepta como entrada objetivo, y a continuación pulsando Stream
Digital. YUV4MPEG sin comprimir. comienza la conversión del sonido.
Muy pocos frontends x264 permiten la
a un archivo de vídeo HD de gran tamaño. configuración exacta necesaria para crear por lo que emula un medio lento, así que
También se puede encontrar contenido HD un disco Blu-ray o un archivo de vídeo no necesitamos tener cientos de GB de
legal en Internet, como las versiones de alta compatible con AVCHD. Por esta razón, la espacio para el flujo de vídeo YUV4-HD sin
definición de películas de YouTube, o cortos solución descrita en este artículo se basa en comprimir. Debido a que MPlayer puede
libres de Blender, como Elephants Dream, la creación de una tubería con Mplayer y reproducir casi cualquier cosa, necesitamos
Big Buck Bunny y Sintel [4]. Algunos archi- x264. Como no se puede enviar directa- convertir casi cualquier vídeo reproducible
vos de Internet proporcionan películas lega- mente la salida de MPlayer como YUV4- en un flujo de vídeo compatible con Blu-
les en HD, como los dibujos animados Sita MPEG sin comprimir a x264 a través de una ray/AVCHD utilizando esta técnica.
Sings the Blues [5], lanzados bajo la licencia tubería, voy a utilizar un archivo FIFO al
Creative Commons, o el clásico de zombies que acceden ambos programas. El archivo, Codificacion de Vídeo en la
de George Romero “La noche de los muer- que siempre tiene un tamaño de 0 bytes, no Shell
tos vivientes [6], que según se indica está permite la escritura a menos que se esté Instalamos Mplayer y x264 desde los repo-
en el dominio público en los EE.UU. debido produciendo una lectura al mismo tiempo, sitorios de nuestra distribución. Si por

Blu-ray y AVCHD
Los estándares Blu-ray y AVCHD definen qué apariencia deben tener el audio y el vídeo para que se pueda reproducir en un Blu-ray (o
una Playstation 3). La especificación del formato AVCHD es un subconjunto de la especificación Blu-ray, pero hay una gran confusión
sobre las diferencias entre Blu-ray y AVCHD.
Los dos estándares son muy similares, pero los nombres de los archivos y la estructura de AVCHD, son algo diferentes existiendo algu-
nas restricciones adicionales con respecto a las tasas de bits y los codecs.
De vez en cuando nos encontramos (incorrectamente) con denominaciones tales como BD5 o BD9 para AVCHD. Este formato, que fue
propuesto por Warner Home Video pero que nunca fue soportado oficialmente por los reproductores Blu-ray, tiene una estructura de
archivos y una especificación que es 100 por cien idéntica a la de Blu-ray, pero sólo es para discos DVD.
Tal y como indica su nombre, AVCHD sólo es compatible con AVC como códec de vídeo, mientras que Blu-ray también es compatible con
VC-1 – la designación de la Sociedad de Ingenieros de Cine y Televisión (SMPTE) para WMV3 de Microsoft – y MPEG2. Por esta razón, en
este artículo me ceñiré estrictamente a AVC: el código es el más eficiente y adecuado para ambos formatos.
Además del propio códec, también hay que tener en cuenta otros parámetros: las dos variantes asignan una formato 16:9 de alta defini-
ción y píxeles cuadrados. Esto significa que la resolución de vídeo debe ser exactamente 1280x720 (720p) o 1920x1080 (1080p). Sólo hay
una excepción, cuando Sony rompe con sus propias normas de píxeles cuadrados: la resolución anamórfica de 1440x1080. Pero sólo hay
un par de cámaras de vídeo HD que graban en este formato, por lo que puede ignorar esta opción tranquilamente. AVCHD también es
compatible con resoluciones SD como 480p o 576p. Todos los vídeos de alta definición que no son exactamente 1280x720 ó 1920x1080
tienen que escalarse primero a esta resolución, si no tendrá que utilizar el letter-boxing, quedando la imagen entre 2 franjas negras hori-
zontales.
Blu-ray y AVCHD son compatibles con CABAC (codificación aritmética), que mejora enormemente la calidad del AVC. Hay que tener cui-
dado con los cuadros de referencia, ya que tienen que estar completamente en memoria, y la memoria de un reproductor de Blu-ray es
muy limitada: las normas de nivel 4.1 del reproductor de Blu-ray y AVCHD sólo permiten un máximo de seis cuadros de referencia para
720p y cuatro cuadros de referencia para 1080p.
También hay restricciones en las imágenes por segundo: Blu-ray y AVCHD solamente permiten 24 fps para 1080p, 50 ó 60 para 1080i
(entrelazado), y 24, 50 ó 60 fps para 720. Desviaciones menores de esta tasa, como 23.96 fps, 25 fps o 59.9, también funcionarán, pero
tasas tales como 29,97 ó 30 fps no funcionarán de ninguna manera. Si tiene un vídeo de 30 fps, o el dispositivo de salida HD no es com-
patible con 25 fps, puede intentar --fake-interlaced --pic-struct como una opción adicional de x264.
Por último, debe prestar atención a las tasas de bits: Blu-ray es compatible con un flujo mayor global de tasa de bits (hasta 36 Mbps para
BD-R, de 48 Mbps para Blu-rays prensados) en comparación con el formato AVCHD (18 Mbps como máximo), ya que un DVD no entrega
los datos tan rápido como un reproductor de Blu-ray; DVD 2x es equivalente a 2,7 Mbps, pero BD 2x es equivalente a 9 MBps. Para estar
seguros, no ajustaremos un flujo de vídeo de más de 25 Mbps para el formato Blu-ray o más de 13 Mbps para AVCHD.
En lo que respecta al códec de audio, Blu-ray admite LPCM sin comprimir, Dolby Digital (AC3)/Digital +/TrueHD, DTS/DTS-HD y (posterior-
mente a las especificación 2.3) China’s Dynamic Range Audio (DRA). Oficialmente, AVCHD sólo es compatible con Dolby Digital de 1 a 6
canales (64 a 640 kbps) o PCM sin comprimir (hasta 1,5 Mbps, 2 canales), aunque la mayoría de reproductores, saltándose la norma, tam-
bién admiten DTS.

34 Número 72 WWW.LINUX- MAGAZINE.ES


Vídeodiscos HD • PRÁCTICO

Figura 4: tsMuxeR nos deja crear la estructura necesaria para el


archivo. Figura 5: TsRemux es un programa .NET que ya no se mantiene.

casualidad conseguimos una versión define la tasa de bits – y los dos paráme- Para comprobar si todo va como esperába-
“expurgada” de Mplayer a la que se le haya tros --vbv-maxrate y --vbv-bufsize. Para mos, reproducimos el fichero fuente con
quitado el códec por razones de patentes, y DVD, --vbv-bufsize se debe establecer con mplayer sin el parámetro -vo
la versión que tenemos no puede reprodu- un valor de 15000, mientras que para Blu- yuv4mpeg:file=stream.y4m antes de codifi-
cir el archivo, sólo tendremos que descar- ray debe ser de 40000 (--vbv-maxrate) y car.
gar el código fuente [8] y compilar el repro- 30000 (--vbv-bufsize), respectivamente. Para Seleccionaremos la tasa de bits con el fin
ductor. Los desarrolladores de x264 van el modo de vídeo entrelazado 1080i hay de hacer el mejor uso posible del disco de
cambiando los parámetros a los que dan que añadir la opción --interlaced. Las confi- destino. Si la película sólo dura media hora,
soporte; si nuestro x264 no es compatible guraciones que he utilizado aquí son las podemos ir tranquilamente al máximo de
con los parámetros que figuran listados recomendadas por los desarrolladores [9]. 25 Mbps para el formato Blu-ray o 13 Mbps
aquí, deberemos construir nuestra propia Varios parámetros adicionales de Mpla- para AVCHD. Si tenemos tres horas de con-
versión otra vez. yer permiten modificar el vídeo – por ejem- tenido, tendremos que bajar a 5 Mbps para
Para comenzar, creamos el archivo FIFO plo escalarlo, aligerarlo, añadir subtítulos AVCHD en un DL-DVD. Téngase en cuenta
con el comando mkfifo stream.y4m: este embebidos o cambiar el formato. La docu- que es necesario agregar el tamaño de la
archivo es para el flujo YUV4 sin compri- mentación de Mplayer [9] explica todas las secuencia de audio a la secuencia de vídeo
mir. A continuación, agregamos el opciones ampliamente. Para las resolucio- – y no nos olvidemos de la sobrecarga
comando en la línea 1 del Listado 1. En otro nes que no son exactamente 1280x720 ó necesaria para transportar el flujo MPEG,
terminal, empezamos a leer y a codificar 1920x1080, habrá que ampliar o recortar el con lo que el resultado aumenta alrededor
desde el archivo Y4M (Línea 2). Sólo se vídeo a la anchura adecuada, como en: de un 6,5 por ciento. El BD-R (de una sola
pueden ejecutar estos dos comandos suce- capa) puede contener un máximo de
sivamente en un guión mediante el envío -vf dsize=1280:720:0,scale=0:0,U 23,30GB, un DL-DVD 7,95GB y un DVD
del proceso Mplayer a un segundo plano expand=1280:720, 4.37GB. Antes de volver a empaquetar con
utilizando el ampersand (&). tsMuxer, el vídeo y el audio en bruto no
Añadimos los parámetros para los cua- o deberían ocupar más de 21.8, 7.5 ó 4.1GB.
dros de referencia al segundo comando: -r 6 Aunque x264 es un códec de alto rendi-
para 720p o -r 4 para 1080p. Las otras dife- -vf dsize=U miento, la codificación llevará un tiempo
rencias entre AVCHD y Blu-ray sólo afectan 1920:1080:0,scale=0:0,U razonable en una máquina rápida. Su rendi-
al valor para --crf – que fundamentalmente expand=1920:1080 miento dependerá del vídeo en sí – un vídeo

Listado 1: Configuración del Flujo


$ mplayer -vo yuv4mpeg:file=stream.y4m -nosound sourcefile
$ x264 --crf 22 --preset slow --tune film --weightp 0 --nal-hrd vbr --vbv-maxrate 15000 --vbv-bufsize 15000
--aud --keyint 24 --bframes 3 --slices 4 --level 4.1 --b-pyramid strict -o Output.264 stream.y4m

WWW.LINUX- MAGAZINE.ES Número 72 35


PRÁCTICO • Vídeodiscos HD

Figura 6: La configuración UDF es importante para la creación de dis-


cos AVCHD y Blu-ray. Figura 7: Nero está listo para tostar un videodisco HD.

real, que contiene ruido, tarda mucho más Para convertir flujos de audio incompati- Estructura AVCHD/Blu-ray
que un vídeo CGI sin ruido – y de la tasa de bles, utilizamos cualquier codificador de El tsMuxeR de SmartLabs transporta el
bits seleccionada: cuanto mayor sea la tasa audio que admita Dolby Digital. La función flujo multiplexado que empaquetará el
de bits, más lenta será la codificación. Stream file export del VLC media player, del vídeo AVCHD y los componentes de Dolby
Para acelerar el proceso de codificación proyecto VideoLAN, es muy fácil de usar Audio en una estructura de archivos com-
usamos el modo CRF (Factor de Velocidad (menú File), siendo posible convertir fácil- patibles con discos Blu-ray y AVCHD. En el
Constante), que ofrece una calidad similar mente audio en Dolby Digital (AC3 o a52). sitio web de SmartLabs [3] hay una versión
a la codificación de 2 pasadas pero dura el Añadimos el archivo en el cuadro de diá- de tsMuxeR para Linux. Para empezar, ini-
doble de tiempo. Si tenemos 1,5 horas de logo Stream (VLC 1.1.4) – ya sea un vídeo o ciamos el GUI tsMuxeR (Figura 4) y selec-
película, empezamos con un factor de CRF sólo audio – y luego pulsamos Stream cionamos el archivo 264 creado por x264
de 22, y cambiamos el valor si es necesario (Figura 1). que contiene la pista de vídeo y después el
– cuanto mayor sea el factor de CRF, más A continuación, creamos un perfil de archivo de audio Dolby Digital (add), a
pequeño es el archivo y más baja la tasa de audio AC3 a juego: para Encapsulation continuación, hacemos clic para seleccio-
bits. Si queremos asegurar que alcanzamos seleccionamos raw; los archivos AC3 con- nar el idioma de la pista de audio. En la
la tasa de bits de destino en la primera tienen datos en crudo sin las cabeceras de parte inferior, seleccionamos el formato ele-
pasada, reducimos la calidad y utilizamos archivo. Tenemos que deshabilitar Video y gido (Blu-ray disk o AVCHD disk), y luego
una sola pasada con -B bitrate_in_kbps en Subtitles. En la pestaña Audio codec (Figura podemos añadir opciones tales como capí-
lugar de --crf. 2), primero comprobamos que tenemos tulos.
x264 admite hasta ocho núcleos, inclui- a52/AC3 como códec y 48 kHz como Sam- tsMuxeR también nos permite crear
dos los núcleos virtuales proporcionados ple rate en Audio. El Bitrate puede ser de subtítulos, concatenar flujos (suponiendo
por Hyper-Threading de Intel. Con nuestra 64, 96, 112, 128, 160, 192, 224, 256, 320, que la codificación sea idéntica), o dividir
configuración de vídeo de alta calidad, 384, 448, 512, 576 ó 640 kbps. Bitrates por flujos (por ejemplo, para versiones de
hemos conseguido una velocidad casi a encima de 256 kbps sólo se utilizan nor- AVCHD en discos duros FAT32, donde sólo
tiempo real en un equipo de seis núcleos malmente para canales de audio múltiples se permite un tamaño máximo de archivo
Sechskern (Core i7 980X) para un vídeo de en 5.1; una tasa superior a 224 kbps no de 4 GB). Pero no debemos cambiar nin-
720p a 24 fps, es decir, le llevó media hora mejorará la calidad del audio estéreo nor- guna otra configuración para evitar que el
codificar 30 minutos de película. La herra- mal. flujo sea incompatible. Una vez que tene-
mienta MediaInfo [10] debe estar en cual- En el asistente de Streaming, hacemos mos todo configurado, pulsamos Start
quier máquina que se utilice para editar clic en Add en la pestaña File e introduci- muxing, y tsMuxer empaquetará los datos
vídeo. MediaInfo identifica la tasa de bits mos el nombre del archivo de destino de audio y vídeo en un flujo de transporte
del flujo final. (Figura 3). Nos aseguraremos de no poner MPEG-2 (M2TS) y creará una estructura
una extensión de archivo para el archivo de archivos compatible con Blu-ray o
Codificación de Audio de destino, de lo contrario, el proceso de AVCHD.
Si ya tenemos una pista de audio Dolby transcodificación fallará en el inicio. A La única alternativa en Linux a tsMuxeR
Digital, podemos extraerla fácilmente con continuación, iniciamos el proceso de es el programa TsRemux (Figura 5), un pro-
la siguiente orden: transcodificación pulsando Stream. Tras grama. NET que no se ha actualizado en
la transcodificación, agregaremos la mucho tiempo. Nos las arreglamos para
$ mplayer -dumpaudio -dumpfile U extensión de .AC3 al archivo. Pulsamos ejecutar TsRemux en Mono con un par de
audiofile_name.ac3 U Stream para comenzar la conversión del modificaciones (TSremunix.exe). El pro-
moviefile_name sonido. grama es una versión muy prematura, la

36 Número 72 WWW.LINUX- MAGAZINE.ES


Vídeodiscos HD • PRÁCTICO

0.0.21.2, plagada de errores, y que no ofrece a la versión 2.6.26 del kernel, que incluyó
ninguna ventaja sobre tsMuxeR – además, la compatibilidad UDF 2.5 en Linux. Move-
no soporta explícitamente AVCHD. A esto mos las carpetas BDMV y CERTIFICATE al
hay que añadir el hecho de que como directorio raíz del disco, de lo contrario no
entrada sólo admite archivos MPEG-TS, lo funcionará. Escribimos un nombre para el
que significa que primero tenemos que disco y hacemos clic en Burn.
empaquetar el vídeo y el audio en formato
MPEG-TS. Por esta razón, sólo debemos ¡Todo Terminado!
probar TsRemux en el (muy improbable) Una vez finalizado este proceso, debemos
caso de que tsMuxeR no funcione. tener en la bandeja de nuestro dispositivo
Si además deseamos crear una versión grabador un DVD o un Blu-ray con vídeo
del archivo que utilice el formato de archivo HD, y el disco deberá funcionar en repro-
contenedor MKV para reproducirlo en la ductores Blu-ray y en la Playstation 3. Este
amplia variedad de HDs multimedia con disco está libre de protecciones de copias
reproductores compatibles con MKV que DRM que plagan los discos Blu-ray comer-
hay actualmente en el mercado, podemos ciales, por lo que puede duplicarse. Proba-
combinar (“mux”) el flujo de vídeo y audio mos la AVCHDs y los Blu-rays creados con
con MKVmerge. El programa MKVmerge, los siguientes reproductores: BDP-S370/
con su sencilla interfaz gráfica de usuario, S570 Sony y Playstation 3, DMP-BD45/65
es parte del paquete MKVtoolnix, que Panasonic, Pioneer BDP-120, Samsung
podemos encontrar en el repositorio de BDC-6900, LG BX 580, Philips BDP-3000 y
nuestra distribución. Las GUIs de Sharp BD-HP90S. El disco funcionó bien en
MKVmerge y tsMuxeR son muy similares y todos estos dispositivos, a excepción del
enseguida nos haremos con él. En MKV- Sharp, que rechazó el BD-RE, ya que ni
toolnix, a partir de la versión 4.1, es impor- siquiera alcanzaba la velocidad necesaria;
tante que nos aseguremos de establecer a parece un problema de compatibilidad con
None el valor de Compression en la pestaña el BD-RE Verbatim que utilizamos en nue-
Extra Options para las pistas de audio y tras pruebas. ■
vídeo; de lo contrario el archivo no funcio-
nará en la mayoría de los reproductores RECURSOS
hardware. [1] Página de AVCHD: http://www.
avchd-info.org/
Quemando
[2] Página del codificador x264: http://
Lo único que necesitamos hacer ahora es www.videolan.org/developers/x264.
grabar la estructura Blu-ray o AVCHD cre- html
ada por tsMuxeR en el disco adecuado. En [3] tsMuxeR: http://www.smlabs.net/en/
el primer intento, para probar si todo está products/tsmuxer/
funcionando, utilizaremos un DVD-RW
[4] Película con Blender: http://www.
regrabable o un BD-RE. Para grabar el blender.org/features-gallery/movies/
archivo necesitamos Nero 4 Linux [11], que
[5] “Sita Sings the Blues”: http://www.
tiene un precio de 20 euros y es el único archive.org/details/
programa que nos permite configurar el Sita_Sings_the_Blues
nivel UDF en Linux. Decididamente, tanto [6] “The Night of the Living Dead”: http://
para Blu-ray como para AVCHD, necesita- www.archive.org/details/
mos quemar con un nivel UDF de 2.5. night_of_the_living_dead
(Desafortunadamente, el programa [7] Lista de Wikipedia de las películas en
mkudffs utilizado por la mayoría de herra- el dominio público en USA: http://en.
mientas de grabación de Linux, que es wikipedia.org/wiki/
List_of_films_in_the_public_domain_i
parte de las Udftools y que no ha sido
n_the_United_States
actualizado desde hace muchos años, no
puede crear imágenes ISO con un nivel [8] Página del proyecto Mplayer: http://
www.mplayerhq.hu/design7/news.
superior a UDF 2.01). html
En el menú DVD de Nero (Figura 6),
[9] Documentación de Mplayer: http://
vamos a Manual settings para DVD-ROM www.mplayerhq.hu/design7/
(UDF) y lo establecemos en UDF 2.5; el documentation-es.html
planteamiento es idéntico para Bluray.
[10] Mediainfo: http://mediainfo.sf.net/es
Nero nos avisará de que no se puede grabar
UDF 2.5 en Linux, pero podemos pasar por [11] Nero 4 Linux: http://www.nero.com/
enu/linux4.html
alto la advertencia. Este mensaje es anterior

WWW.LINUX- MAGAZINE.ES Número 72 37


PRÁCTICO • Gpredict

Software de seguimiento de satélites

CAÍDO DEL CIELO


Puedes predecir y monitorizar órbitas de satélites y controlar equipos

de radio aficionado con el software de seguimiento de satélites Gpre-

dict. POR MICHAEL GOTTWALD

D
esde el primer satélite artificial, Above [1], que ha ofrecido predicciones Universe de Ubuntu 9.04 sólo ofrece un
el Sputnik, que fue lanzado en durante muchos años trazando órbitas paquete antiguo de Gpredict, el 0.90,
1957, un gran número de naves de satélites en mapas estelares. Además, Ubuntu 10.04 y posteriores vienen con la
espaciales de diferentes diseños han cada vez existen más programas de versión más reciente 1.1. Sin embargo, la
orbitado el planeta: de simples satélites apoyo planetario de localización por última versión de Gpredict es la 1.2.Para
de comunicaciones, a las sondas espacia- satélite y que extraen los satélites artifi- instalarla, descargamos el código fuente
les con complejos instrumentos y la ciales en sus cartas de inicio. Gpredict [3] desde la página web de Gpredict, y a
Estación Espacial Internacional (ISS). La [2] (que viene de Gnome Predict) se cen- continuación debemos prepararnos para
mayoría de estos cuerpos celestes artifi- tra exclusivamente en los satélites, y por hacer frente a una serie de obstáculos.
ciales están en una baja órbita terrestre lo tanto ofrece muchas más opciones Ubuntu 9.04 no es capaz de resolver
en altitudes de entre 200 y 1200 kilóme- que Heavens Above. algunas dependencias de la versión 1.2,
tros. Por el contrario, los satélites de tele- ya que las versiones más recientes de
visión y meteorológicos usan órbitas Variantes de Instalación Gtk+ y GLib no están disponibles como
geoestacionarias a unos 36.000 kilóme- Muchas distribuciones incluyen Gpredict paquetes para 9.04.
tros sobre el ecuador (su velocidad angu- en sus repositorios, como es el caso de A pesar del mensaje de error de que
lar es equivalente a una órbita por día, Ubuntu, que hemos usado en nuestro intltool es demasiado antiguo, fuimos
por lo que un satélite en esta ubicación equipo de laboratorio. Aunque la rama capaces de compilar Gpredict 1.2 en
se mantendrá en la misma posición res- Ubuntu 10.04. Sin embargo, no pudimos
pecto a la superficie de la Tierra). En una Localizador QTH descargar los paquetes necesarios
noche clara podemos ver muchos de También conocido como QRA Maiden- libfreetype6, a pesar de que el gestor de
estos satélites como puntos de luz que head Locator [5], el localizador QTH define paquetes los listaba. En lugar de esto,
cruzan el cielo. Los observadores no una rejilla cuadrada de 84 datos WGS geo- nos dirigimos a la página de búsqueda
expertos tienden a confundirlos con désicos. Desarrollado por aficionados al de paquetes de Ubuntu [4]. Antes de
final de los años 50, y codificado múltiples
aviones. veces, ayuda a calcular la distancia y direc- compilar el código fuente, también tuvi-
Una de las formas más populares de ción entre usuarios de redes de radio. El mos que instalar los paquetes de
identificar satélites y predecir sus órbitas localizador QTH para Chicago, por ejem- desarrollo para las librerías necesarias
es a través de la página web Heavens plo, es EN61EU. relacionadas con Gtk+ 2.12, GLib 2.16,

38 Número 72 WWW.LINUX- MAGAZINE.ES


Gpredict • PRÁCTICO

un número arbitrario de satélites y una


estación terrestre. El programa organiza
los módulos en pestañas, entre las que
puede ir cambiando el usuario. Este
diseño hace que sea posible, por ejem-
plo, organizar los satélites que queremos
monitorizar por temas (Astronomía,
observación, meteorología, etc.) (véase
la Figura 1) o como listas (ciudades,
hoteles, etc.) para diferentes estaciones
terrestres.
Cuando creamos un nuevo módulo
(File | New module), primero tenemos
que asignar un nombre, a continuación
seleccionar la estación terrestre, y final-
mente asignar uno o más satélites (véase
Figura 1: La ventana principal de Gpredict con un mapa del mundo (distorsionado debido a la la Figura 2) – ya sea mediante la selec-
ventana maximizada), información del telescopio espacial Hubble y la vista polar. ción de la lista organizada alfabética-
mente o mediante la búsqueda de un
libcurl 7.16.0, GooCanvas 0.9, libfree- el localizador él solo (consulte la sección satélite, escribiendo su nombre. El algo-
type6, Hamlib (sólo en tiempo de ejecu- “Localizador QTH”). ritmo de búsqueda es un poco peculiar:
ción), y otros, dependiendo de su distri- En la ventana Preferences también se Gpredict no busca un nombre que
bución. define el formato numérico a usar, las comienza con la cadena que hemos tecle-
vistas del módulo, el contenido de las lis- ado, sino que muestra el primer nombre
Centro de Control tas de predicciones, la resolución de que contiene la cadena en cualquier posi-
Tras iniciar Gpredict, veremos algo que tiempo y muchas otras cosas. Si es nece- ción. Esto significa que a medida que
recuerda a un centro de control de misio- sario, también puede configurar su escribimos IRA (para encontrar el satélite
nes espaciales con pantallas que trazan equipo de radio y las unidades de la de infrarrojos IRAS), obtenemos primero
las órbitas de las estaciones espaciales antena desde aquí. Al elegir Show local ARIRANG 1, hasta que, tras teclear el
como líneas en un mapa de la Tierra time instead of UTC en los formatos de nombre completo, obtenemos IRAS. Ade-
(véase la Figura 1). La configuración número, las horas reportadas tendrán más, la función de búsqueda distingue
básica divide la ventana principal en tres más sentido para nosotros. entre mayúsculas y minúsculas, lo que
secciones: el mapa del mundo que aca- Si Gpredict no le indica que lo haga, en realidad no importa porque los nom-
bamos de comentar, las áreas de infor- debería actualizar los elementos de bres de los satélites en la lista están todos
mación de satélites y la vista polar. El órbita de los satélites justo después de la en mayúsculas.
mapa del mundo también muestra todos instalación y luego un par de días
los satélites seleccionados, incluyendo más tarde. Cuando los satélites
sus huellas y el área en la superficie de la orbitan la Tierra, su órbita se ve
Tierra desde donde se puede ver el saté- afectada por la fricción de la
lite. atmósfera residual con el tiempo.
El primer paso es definir nuestra ubi- El efecto es bastante leve, pero
cación, que Gpredict utiliza como esta- puede tener un efecto importante
ción de tierra. Por lo general podemos sobre la exactitud de la predic-
elegir entre una larga lista de lugares, ción. Para actualizar los datos de
que Gpredict ofrece en Edit | Preferences forma rápida y sencilla a través
en la pestaña Ground Stations del menú de Internet seleccionamos Edit |
General. Para facilitar su uso, el pro- Update TLE | From network. La
grama ordena la lista por regiones como actualización descarga los ele-
Europa, Asia, Estados Unidos y así suce- mentos de dos líneas actuales (un
sivamente. formato común para la represen-
Si ninguna de las ciudades que ofrece tación de las órbitas de satélites
Gpredict está cerca de su casa, puede como un bloque de números en
definir la ubicación manualmente. Para dos líneas) de los satélites que
ello es necesario introducir el nombre de hemos seleccionado para obser-
su ubicación y las coordenadas geográfi- var.
cas, todos los demás detalles son opcio-
nales. Al introducir la altitud se puede Modular
predecir la refracción atmosférica en el Gpredict utiliza un diseño modu- Figura 2: Los usuarios pueden seleccionar hasta
cálculo de la órbita. El programa calcula lar, donde cada módulo contiene 1.200 satélites y agruparlos según sus necesidades.

WWW.LINUX- MAGAZINE.ES Número 72 39


PRÁCTICO • Gpredict

eclipsado). Para
tener la mejor vista
de un satélite, ten-
drá que estar en la
luz del sol, mientras
que en nuestra ubi-
cación es de noche,
o por lo menos en el
crepúsculo. Figura 5: El diagrama de visibilidad de satélites en el módulo selec-
Para habilitar esta cionado.
columna, marca-
mos la casilla Visibility during pass en la cardinales. Para modificar la orientación
pestaña Multiple Passes del panel Predict del mapa, dependiendo de nuestra direc-
en Edit | Preferences. Este valor pone a ción de observación, elegimos uno de los
Gpredict en una liga diferente de, por botones de Orientation en la pestaña
ejemplo, Heavens Above, que sólo mues- Polar View del panel Modules en Prefe-
tra pasadas visibles, y también explica rences.
por qué los detalles de los pasadas de los La tercera pestaña, Az/El, contiene un
satélites pueden ser diferentes entre dos gráfico de visibilidad que nos permite
fuentes de información. ver si el satélite seleccionado es visible.
Haciendo doble clic en una línea de la Una pequeña flecha en la parte dere-
lista de satélites, obtenemos una visión cha de cada módulo hace aparecer un
Figura 3: Detalles de la pasada del satélite detallada de la pasada (véase la Figura menú con 10 entradas. Un elemento del
telescopio infrarrojos WISE (Wide-field 3). La pestaña Data es una tabla de posi- menú realmente interesante aquí es Sky
Infrared Survey Explorer) del 7 de diciembre ciones orbitales individuales, incluyendo at a glance, que muestra un gráfico de
de 2010 por la mañana. la fecha y la hora, y las coordenadas en visibilidad de los satélites asignados al
formato de acimut (Az, el ángulo entre el módulo a lo largo de un eje temporal
La posibilidad de mostrar la lista de norte y la proyección perpendicular del (véase la Figura 5). Aquí, podemos ver
selección de un grupo específico es una satélite hacia el horizonte) y elevación qué satélite aparecerá, cuándo y con qué
útil función de búsqueda: por ejemplo, (El). El número de grados en la columna frecuencia dentro del período de tiempo
podemos optar por mostrar el Espacio y El muestra lo alto que estará el satélite configurado (por defecto: ocho horas).
Ciencias de la Tierra, Geoestacionarios o sobre el horizonte local en un momento Gpredict no se limita sólo a la fecha
un grupo más especializado, como los determinado (valor positivo más actual, o a tablas de predicción, sino que
Últimos Lanzamientos. grande). En función de la elevación también puede mostrar una pantalla con
Cada módulo nuevo que creamos está máxima y la altura
organizado en su propia ficha. Los satéli- de la órbita, el saté-
tes asignados al grupo se muestran en el lite cruzará el cielo
mapa del mundo con sus huellas. Si más rápida o más
pasamos el ratón sobre un satélite, vere- lentamente. Esta
mos una burbuja (al menos en las ver- tabla también se
siones posteriores a Gpredict 0.9) con los puede imprimir o
detalles de las coordenadas actuales y el guardar.
tiempo en minutos hasta la próxima
adquisición de la señal (AOS) en la esta- Visualización
ción de tierra. Si el satélite es actual- Para la visualiza-
mente visible por encima de nuestra ción, la segunda
estación de tierra, se muestra el número pestaña contiene un
de minutos hasta la pérdida de la señal diagrama polar
(LOS). Para ver la trayectoria del satélite, (véase la Figura 4,
pulsamos con el botón derecho y selec- que también se pre-
cionamos la función Ground Track en el senta en la parte
cuadro desplegable. inferior izquierda
de la ventana prin-
Traza Terrestre cipal de forma pre-
El menú Future passes nos lleva a una determinada) que
tabla con las pasadas que tendrán lugar muestra el cielo
en los próximos tres días. La columna de local sin estrellas y Figura 4: La vista polar muestra la pasada de la Estación Espacial
la derecha, Vis (visibilidad), indica si el constelaciones, Internacional a través del cielo de Stuttgart, Alemania, en la mañana
paso será visible (V) u oculto (E, de pero con los puntos del 13 de diciembre de 2010.

40 Número 72 WWW.LINUX- MAGAZINE.ES


Figura 6: Los controles de antena y radio de Gpredict.

el tiempo acelerado, o hacer correr el tiempo hacia atrás. Para


ello, seleccionamos Time Controller del menú emergente.

Control Remoto
Por último, no debemos olvidar una característica muy
importante de Gpredict: su función de control de radio y
antena, basada en la librería Hamlib. Las librerías de equi-
pos de radio Ham permiten escribir programas para contro-
lar los equipos de radio aficionados desde nuestro ordena-
dor y actuar sobre rotores de antena especiales de manera
que Gpredict pueda realizar un seguimiento del satélite
seleccionado (véase la Figura 6). Debido a que carecíamos
de este hardware, no hemos podido probar esta funcionali-
dad. El detallado manual de Hamlib en el manual de Gpre-
dict [6] proporciona más detalles.

Conclusiones
Gpredict es un muy buen software de localización de satéli-
tes y predicción de órbitas que también permite el control
de equipos de radio aficionado. La interfaz es intuitiva y
ofrece todo lo que podríamos buscar en una herramienta de
este tipo. El manual en formato PDF de 64 páginas, muy
bien estructurado, ayuda a los usuarios a encontrar su
camino por todo el programa. ■

RECURSOS
[1] Heavens Above: http://www.heavens-above.com/
[2] Página web de Gpredict: http://gpredict.oz9aec.net/
[3] Descarga de Gpredict: http://sourceforge.net/projects/
gpredict/files/
[4] Búsqueda de paquetes de Ubuntu: http://packages.
ubuntu.com
[5] Localizador QTH: http://en.wikipedia.org/wiki/
Maidenhead_Locator_System
[6] Manual de Gpredict: http://voxel.dl.sourceforge.net/
project/gpredict/Gpredict/1.2/gpredict-user-manual-1.2.
pdf
DESARROLLO • Python: ZeroMQ

Redes de alto rendimiento

ZeroMQ

© Sebastian Duda, 123RF.com


Gracias a ZeroMQ es posible crear complejos sistemas de comunicaciones en Python de forma sencilla.

POR JOSÉ MARÍA RUÍZ

L
a comunicación de información aplicación A mande mensajes a B, siempre ocurre), rápidamente buscan
a través de una red es, a día de sino que A no tenga que saber que B mejorarlo. La gente de iMatix com-
hoy, una de las principales quiere sus mensajes. El sistema de probó que los sistemas de cola no
tareas de prácticamente cualquier pro- cola recibirá los mensajes de A y eran lo bastante flexibles. Dependías
grama. Nos resulta casi raro pensar en cualquier aplicación podrá «suscri- de los servidores de cola de mensajes,
un programa que no disponga de la birse» a esa cola y recibir los mensa- software que no controlabas, y no era
capacidad de compartir información jes. De esta forma es posible diseñar posible diseñar sistemas realmente
mediante algún tipo de protocolo. sistemas en los que podemos reem- complejos a partir de ellos. Aunque el
Ya sea mediante TCP/ IP, XMLRPC o plazar los diferentes componentes en protocolo AMQP permitía interactuar
AJAX, el abanico de posibilidades es cualquier momento sin que todo con todos ellos de forma estándar,
inmenso. Existen literalmente cientos caiga como un castillo de naipes (ver cada servidor era incompatible con el
de protocolos de comunicaciones que Figura 1). AMQP fue un éxito, pero resto.
podemos usar, y a pesar de ello apa- era un mero protocolo de comunica- Para suplir estas necesidades, iMa-
rece ZeroMQ ¿cómo se le puede ocu- ción y dependía de los distintos siste- tix decidió crear algo nuevo: un proto-
rrir a alguien crear un nuevo proto- mas de cola (comerciales y libres) colo de comunicaciones que simplifi-
colo de red? que existen. Ejemplos libres de estos case el famoso protocolo TCP/ IP pero
sistemas son por
ZeroMQ ejemplo Rab- Listado 1: Servidor «Hola Mundo»
Los creadores de ZeroMQ pertenecen bitMQ o Acti- 01 import zmq
a la empresa iMatix Corporation. Esta veMQ [2] y [3]. 02
empresa diseñó el protocolo AMQP, Los usuarios 03 context = zmq.Context()
cuyo objetivo era unificar y simplifi- más importantes 04 socket = context.socket(zmq.REP)
car el desarrollo de software que tra- de los sistemas 05 socket.bind(“tcp://127.0.0.1:5000”)
bajase con sistemas de cola de men- de colas de even- 06
sajes. Un sistema de cola permite a tos son las 07 while True:
una aplicación enviar mensajes a otra empresas finan- 08 msg = socket.recv()
aplicación. Dicho así parece una cosa cieras, y cuando 09 print “He recibido: “, msg
muy sencilla, pero esconde muchas algo les funciona 10 socket.send(msg)
dificultades. No sólo queremos que la (cosa que no

42 Número 72 WWW.LINUX- MAGAZINE.ES


Python: ZeroMQ • DESARROLLO

que incorporase las características que sólo son necesa-


más importantes de los sistemas de rias 5 instrucciones
cola y permitiese prescindir de los ser- para tener un servi-
vidores de cola de mensajes si fuese dor que recibe men-
preciso. De este proyecto nació sajes y responde a los
ZeroMQ, cuya implementación iMatix mismos con un alto
liberó como software libre. rendimiento. Las pri-
meras tres lineas pre-
REQ/REP paran el servidor:
Explicar qué es ZeroMQ es más com- • Generamos un con-
plicado que demostrarlo, por lo que texto que prepara y
arrancaremos con un ejemplo sencillo gestionará el tra-
de su potencia. Comencemos con bajo.
nuestro habitual «Hola Mundo». • Creamos un socket,
Vamos a necesitar dos programas, uno con el parámetro
actuará como servidor y el otro como zmq.REP (res-
cliente. El servidor aparece en el Lis- puesta).
tado 1, mientras que el cliente apa- • Vinculamos el soc- Figura 1: Esquema de funcionamiento de las colas de mensajes .
rece en el Listado 2. Debemos arran- ket a un protocolo,
car el servidor como cualquier pro- dirección IP y puerto. innovaciones de ZeroMQ en los
grama Python en un terminal: A continuación entramos en un bucle siguientes apartados.
infinito en el que recibimos un men-
> python servidor.py saje, hacemos algo con él y comunica- PUB/SUB
mos al cliente que lo hemos recibido. ZeroMQ no habría recibido ninguna
El servidor se quedará bloqueado en Los mensajes en ZeroMQ son unas atención si sólo simplificase TCP/ IP.
un bucle infinito esperando recibir cadenas de caracteres. Mientras en Han sido características como las
mensajes, por lo que pasaremos a otros protocolos es preciso trabajar a opciones zmq.PUB y zmq.SUB las que
arrancar el programa cliente en otro bajo nivel con datos binarios, en han atraído la atención de numerosos
terminal: ZeroMQ podemos trabajar con mensa- desarrolladores y empresas.
jes, lo que simplifica bastante nuestro El multicasting (la habilidad de
> python cliente.py trabajo (el mensaje puede ser XML o hacer que varios clientes reciban el
Enviando: hola JSON). mismo mensaje a la vez) ha sido
Enviando: mundo Los primeros 3 pasos del código del siempre difícil con el protocolo TCP/
Enviando: cruel cliente son muy similares, pero en IP. Existen protocolos alternativos que
lugar de crear el socket con el paráme- lo emplean para tareas específicas,
En la consola donde arrancamos el tro zmq.REP, empleamos zmq.REQ como por ejemplo el bombeo (strea-
servidor aparecerá: (request, petición) y conectamos con ming) de vídeo por Internet, pero sue-
el servidor en lugar de vincular el so - len ser bastante complicados de usar.
He recibido: hola cket. Posteriormente enviamos los Si al multicasting añadimos la opción
He recibido: mundo mensajes y esperamos a que el servi- de suscribirse a determinados «even-
He recibido: cruel dor nos comunique que los ha reci- tos», indicando que sólo deseamos
bido. recibir determinados mensajes, enton-
¿Qué ha ocurrido? Uno de los objeti- No hemos hecho nada que no sea ces nos encontramos en un terreno
vos de ZeroMQ es el de simplificar el posible con TCP/ IP, aunque la simpli- que hasta la llegada de ZeroMQ
desarrollo de código que haga uso de cidad de ZeroMQ ya es de por sí todo estaba dominado por las colas de
la red. En el Listado 1 podemos ver un logro. Pasemos a comprobar las eventos.

Listado 2: Cliente «Hola Mundo» Listado 3: Fichero emisor.py


01 import zmq 01 import zmq
02 context = zmq.Context() 02 context = zmq.Context()
03 socket = context.socket(zmq.REQ) 03 socket = context.socket(zmq.REQ)
04 socket.connect(“tcp://127.0.0.1:5000”) 04 socket.connect(“tcp://127.0.0.1:4000”)
05 05
06 for i in [‘hola’, ‘mundo’, ‘cruel’]: 06 for i in [‘@josemaria hola mundo’,
07 07 ‘@linuxmagazine linux mola’,
08 socket.send(i) 08 ‘@otro mensaje aburrido’]:
09 print “Enviando: “, i 09 socket.send(i)
10 msg_in = socket.recv() 10 msg_in = socket.recv()

WWW.LINUX- MAGAZINE.ES Número 72 43


DESARROLLO • Python: ZeroMQ

En el Listado 4 está el código del


emisor de mensajes, que es práctica-
Listado 4: Fichero tuiter.py
mente idéntico al que empleamos en 01 import zmq
el Listado 2. Es en el Listado 5 donde 02 from random import choice
encontramos diferencias. En lugar de 03 context = zmq.Context()
conectarnos al socket del servidor con 04
zmq.REQ, lo hacemos con zmq.SUB. 05 socket_recv =
Este cambio nos permite suscribirnos context.socket(zmq.REP)
a determinados mensajes de una 06 socket_recv.bind
forma bastante sencilla. Empleando el (“tcp://127.0.0.1:4000”)
método setsockiopt() configuramos la 07
conexión para recibir solamente los 08
mensajes que comiencen con las 09 socket =
cadenas “@linuxmagazine” y “@jose- context.socket(zmq.PUB)
maria”. ZeroMQ descartará cualquier 10 socket.bind
mensaje cuyo inicio no coincida con (“tcp://127.0.0.1:5000”)
estos patrones. Podemos suscribirnos 11
a tantas «colas» como deseemos, y 12 while True:
ZeroMQ se encargará de filtrar los 13 msg = socket_recv.recv()
mensajes que seleccionemos por nos- 14 socket_recv.send(msg)
Figura 2: Nuestro «tuiter» . otros de forma eficiente. 15 print “Reenvío:
ZeroMQ da por supuesto que una {0}”.format(msg)
Vamos a crear un ejemplo que simu- vez se haya mandado el mensaje, éste 16 socket.send(msg)
lará cómo funciona más o menos llegará a su destino. Esto significa
Twitter (una empresa que en realidad que no controla si la otra parte ha
es una cola de mensajes gigante). Ten- recibido el mensaje. Esta forma de
dremos un servidor al que un cliente trabajar se diseñó así a propósito, Usando la Figura 3 como referencia,
«emisor» bombeará mensajes y otros buscando aumentar el rendimiento. Si pensemos en un sistema en el que hay
clientes estarán subscritos a determi- queremos de nuevo un mayor nivel de un proceso que recibe o emite una
nados «emisores» – el esquema de la seguridad, podemos hacer que tanto serie de datos. Los datos deben ser
Figura 2 aclara un poco la situación. servidor como cliente comuniquen enviados a otro proceso para ser
En una cola de eventos tradicional que los datos han llegado correcta- manipulados. En nuestro ejemplo
dispondríamos de un servidor (como mente a la otra parte, empleando por serán cadenas de caracteres que se
por ejemplo RabbitMQ) que recibiría ejemplo un mensaje a una conexión
los mensajes, los almacenaría y pasa- REQ/ REP. Listado 5: Fichero origen.py
ría a distribuirlos a los clientes subs- Hemos podido replicar algo tan 01 import zmq
critos a ellos. ZeroMQ se ha diseñado complicado como un sistema de cola 02 import random
como una herramienta para imple- de mensajes con subscriptores en 03
mentar el nivel de seguridad que des- mucho menos de 100 lineas de código 04 context = zmq.Context()
eemos. ZeroMQ no almacena los men- fuente, lo que no está nada mal. 05 envio =
sajes en el disco duro o una base de context.socket(zmq.PUSH)
datos, los almacena en memoria y los PUSH/PULL 06 envio.bind(“tcp://*:5557”)
bombea a gran velocidad. Está en Lo que voy a explicar ahora es un 07
nuestras manos decidir si queremos poco más complicado. Incluso la 08 print “Tenemos que esperar a que
almacenar los mensajes temporal- documentación oficial de ZeroMQ se los workers se conecten”
mente para ofrecer más seguridad vuelve confusa en este punto, pero las 09 raw_input()
(por ejemplo guardándolos en ideas básicas son muy sencillas. 10 print “Comenzamos a bombear
SQlite3). Cuando estamos creando un sistema trabajo...”
Comencemos con el servidor que complejo compuesto por diferentes 11 cadenas = [‘hola’, ‘aloha’,
podemos ver en el Listado 3. El código componentes (sean hebras, procesos o ‘hello’]
no dista mucho del que usamos para programas en distintas máquinas), lo 12 random.seed()
el servidor del anterior apartado. En ideal sería tener la posibilidad de aña- 13
lugar de emplear un solo socket usare- dir nuevas máquinas al sistema de 14 for i in range(0,5):
mos dos. A uno nos vincularemos forma total transparente, y que estas 15 cadena = random.choice
como un servidor tradicional, mien- nuevas máquinas contribuyan hacién- (cadenas)
tras que al otro lo haremos empleando dose cargo de parte del trabajo. Es lo 16 envio.send(cadena)
el modelo PUB/SUB. Recibiremos los que a día de hoy se conoce como 17 print “Enviando: {0}”.
mensajes a través de socket_recv y los «escalar» y la obsesión de casi todas format(cadena)
reenviaremos a través de socket. las empresas de la Web.

44 Número 72 WWW.LINUX- MAGAZINE.ES


Python: ZeroMQ • DESARROLLO

aleatoria, por lo que la carga


Listado 6: Fichero de trabajo se irá repartiendo
worker.py entre los distintos receptores.
01 import zmq
De forma «mágica», ZeroMQ
02 import time
nos da la posibilidad de esca-
03 context = zmq.Context()
lar sin apenas esfuerzo.
04
Para poder ver PUSH/ PULL
05 recepcion =
en acción vamos a tener que
context.socket(zmq.PULL)
arrancar no 3… sino 4 progra-
06 recepcion.connect
mas como mínimo en distin-
(“tcp://localhost:5557”)
tos terminales: origen.py, dos
07
o más instancias de worker.py
08 envio =
(que procesarán los mensa-
context.socket(zmq.PUSH)
jes) y resultado.py. El pro-
09 envio.connect
grama origen.py (Listado 6)
(“tcp://localhost:5558”)
será el único que funcione en
10
modo PUSH. En este tipo de
11 while True:
conexión, todas las conexio-
12 cadena = recepcion.recv()
nes PULL esperan a que se
13 print “Proceso:
emitan datos desde una cone-
{0}”.format(cadena)
xión PUSH. Como se ve en la
14 envio.send(cadena.upper())
Figura 3, worker.py (Listado
15 time.sleep(1)
7) espera los datos de ori-
gen.py, y resultado.py (Lis-
tado 8) espera los datos que Figura 3: Arquitectura PUSH/PULL.
pasarán a mayúsculas. El resultado de provengan de worker.py.
la operación se recibirá en un último Podemos ver todo el sistema como un origen.py, podremos ver cómo los
proceso que hará algo con los datos flujo de datos que arranca en mensajes son procesados por distintas
(como por ejemplo imprimirlos en origen.py y acaba en resultado.py. copias de worker.py y distribuyéndose
pantalla). El sistema escalará si es Para que las instancias de worker.py el trabajo entre ellos.
posible añadir nuevos procesos que se conecten correctamente con ori-
realicen la operación sin tener que gen.py, debemos arrancar primero ori- Conclusión
modificar el código fuente de ninguno gen.py y esperar a que los distintos Sólo hemos visto de forma superficial
de los programas. worker.py se conecten a nosotros las características principales de
ZeroMQ dispone de un sistema para antes de comenzar a emitir datos. ZeroMQ, y aún así queda patente que
poder implementar este tipo de Para ello, origen.py debe detenerse es un proyecto muy interesante.
diseño: los sockets PUSH/ PULL. Si en nada más arrancar, cosa que hacemos ZeroMQ nos proporciona los ingre-
los sockets PUB/ SUB disponemos de esperando una entrada de teclado. dientes básicos para crear una arqui-
un emisor y un número indetermi- Esto nos da tiempo para arrancar las tectura de red de la complejidad que
nado de receptores que reciben un distintas instancias de worker.py. Si queramos sin apenas esfuerzo. El ren-
mensaje, en los sockets PUSH/ PULL arrancáramos worker.py antes que ori- dimiento de ZeroMQ lo hace ideal
sólo uno de los receptores recibirá el gen.py, comprobaríamos que todos para cualquier problema que requiera
mensaje. La elección del receptor será los mensajes enviados desde tiempos de respuesta pequeños. Ade-
origen.py serían procesados por una más, la disponibilidad de librerías
Listado 7: Fichero única instancia worker.py en lugar de ZeroMQ en más de 10 lenguajes de
resultado.py distribuirse el trabajo. Una vez haya- programación lo hacen idóneo para
01 import zmq mos arrancado las dos, o más, copias comunicar programas de todo tipo.
02 de worker.py, podemos arrancar tam- ZeroMQ es, sin lugar a dudas, uno de
03 context = zmq.Context() bién resultado.py. los proyectos más sorprendentes de
04 Para posibilitar que el trabajo se los últimos años. ■
05 recepcion = pueda distribuir entre los distintos
context.socket(zmq.PULL) worker.py, he introducido un retraso RECURSOS
06 recepcion.bind(“tcp://*:5558”) de 1 segundo en el procesado del men- [1] Protocolo ZeroMQ: http://www.
07 saje con time.sleep(). De esta forma, zeromq.org/
08 while True: origen.py mandará los mensajes a la
[2] RabbitMQ, Erlang en acción: http://
09 mensaje = recepcion.recv() instancia de worker.py que esté libre. www.rabbitmq.com/
10 print “Recibo: Cuando, por fin, todo esté arran-
[3] ActiveMQ, proyecto Apache: http://
{0}”.format(mensaje) cado y pulsemos cualquier tecla en el
activemq.apache.org/
terminal donde hayamos arrancado

WWW.LINUX- MAGAZINE.ES Número 72 45


DESARROLLO • API Secret Service

© Desislava Dimitrova - 123RF.com


Servicios universales de anillo de claves con la API Secrets Service

AGENTE
SECRETO
La API Secrets Service proporciona una interfaz unificada en Gnome y

KDE para contenidos confidenciales.

POR MATHIAS HUBER

S
egún el creador del anillo de claves cificación. Gnome y KDE tratan de popu- El servicio se ejecuta dentro de la sesión
de Gnome - Gnome Keyring - Stef larizar la plataforma más concienzuda- de login del usuario. En KDE se llama kse-
Walter, “Un buen software de mente desde el Desktop Summit de 2009 cretserviced. Las versiones de Gnome a
seguridad debería ser tan seguro e inofen- que tuvo lugar en Gran Canaria. El pro- partir de la 2.30 incluyen el borrador de la
sivo, pero tan fácil de usar, como la puerta yecto Secrets Service permitirá a los pro- API en el demonio gnome-keyring-daemon
de una sala de estar”. El proyecto Gnome gramadores el uso de una interfaz común y en aplicaciones como el navegador web
Keyring [1] proporciona un repositorio con la que interactuar con servicios de Epiphany o el cliente de chat Empathy.
central de contraseñas, archivos de claves contraseñas, archivos de claves y certifica- El software almacena multiples secretos
y certificados para los servicios y aplica- dos desde aplicaciones tanto de KDE en una colección. El programador puede
ciones que el usuario necesite. Las aplica- como de Gnome, así como desde el resto usar métodos de la colección para crear o
ciones de Gnome, como Empathy, Evolu- de escritorios que sean capaces de ajus- eliminar el objeto que contiene los secre-
tion o Network Manager acceden al servi- tarse a la plataforma. tos individuales o elementos (items). Las
cio de anillo de claves; la interfaz Seahorse colecciones se identifican por sus rutas de
[2] ayuda con la administración de claves Arquitectura objeto, como por ejemplo /org/freedes-
PGP y SSH. El documento [4] está aún en estado ktop/secrets/collection/xxxx, donde xxxx
El homólogo de Gnome Keyring en el borrador, y los detalles de la versión para es una versión abreviada del nombre de la
escritorio KDE es Kwallet [3], que usa desarrolladores [5] continúa cambiando colección. También es posible crear alias
aplicaciones como Konqueror o Knetat- ocasionalmente, pero la arquitectura de los objetos.
tach. Ambas herramientas cifran sus básica de la API Secrets Service ya está Los secretos se almacenan en un array
colecciones de datos confidenciales prote- definida. de bytes; cada secreto puede contener
giéndolas con una frase de paso. Esta API permite a las aplicaciones varios campos y valores, incluyendo XML.
Aunque hasta entonces Gnome Keyring guardar información secreta enviando También se pueden almacenar atributos
y Kwallet eran incompatibles, en 2009 Stef peticiones a un servicio que cifra y alma- sin cifrar junto con los valores para facili-
Walter y el desarrollador de Kwallet, cena dicha información. El servicio tar la búsqueda de elementos mediante el
Michael Leupold, decidieron aunar esfuer- devuelve entonces los datos cifrados a las método SearchItems().
zos. El resultado de dicha colaboración es aplicaciones que los soliciten. La API tam- El proceso de creación o eliminación,
una nueva interfaz llamada Secrets Service bién es capaz de cifrar el intercambio de así como otras acciones, puede requerir
API. Los desarrolladores eligieron la plata- información que se produce entre el servi- interacción con el usuario. La aplicación
forma Freedesktop.org para alojar la espe- cio y sus clientes. cliente puede llamar al método que mues-

46 Número 72 WWW.LINUX- MAGAZINE.ES


API Secret Service • DESARROLLO

Figura 1: Seahorse, basado en Gnome Keyring, proporciona una inter- Figura 2: La arquitectura del demonio Ksecretserviced de Michael
faz para la gestión de claves GPG y SSH. Leupold prevé frontends para la API antigua y la nueva.

tra el diálogo que puede ser asignado a de la especificación en Gnome Keyring. La Contacto con el Viejo
una ventana de aplicación referenciando librería libgnome-keyring implementa la Mundo
su ID de ventana. parte cliente de la API y se utiliza en ¿Son capaces los desarrolladores de apli-
La API Secrets Service proporciona ade- muchas aplicaciones de Gnome. Walter caciones, aparte de los de KDE y Gnome,
más un mecanismo de bloqueo para con- planea publicar una nueva versión de la de interactuar con la API Secrets Service?
trolar el acceso a elementos y colecciones. librería, posiblemente llamada Gsecrets, “La especificación continúa cambiando”,
Cuando se bloquea un elemento o una que soportará funcionalidades avanzadas. asegura Michael Leupold, “Tras comple-
colección, no se puede acceder al secreto En cuanto a KDE, Michael Leupold está tar las implementaciones de Gnome y
almacenado ni usar un programa cliente trabajando actualmente en Ksecretservi- KDE, queremos publicar una versión ofi-
para modificarlo. El frontend del anillo de ced, un desarrollo completamente nuevo, cial de la especificación. Sería estupendo
claves de Gnome, Seahorse (ver la Figura ya que el actual Kwalletd no se presta a ser que se implicasen otros entornos de
1), también proporciona a los usuarios modificado para soportar la API. Entre escritorio, así como proyectos de soft-
algunas configuraciones de bloqueo; por otras cosas, el software tradicional no ware como el de Mozilla”. ■
ejemplo, se puede bloquear una colección sirve para desbloquear información sensi-
si no hay actividad por parte del usuario ble cuando el usuario inserta una Smart- RECURSOS
durante una cantidad de tiempo determi- card. El software podría no soportar todas
nada. las funcionalidades de la lista de imple- [1] Gnome Keyring: http://live.gnome.
org/GnomeKeyring
mentaciones deseadas, pero aún así es un
Sesiones “reemplazo completo para Kwallet sin [2] Seahorse: http://projects.gnome.
Con el fin de confiar un secreto a Secrets exponer a los usuario a regresiones”, org/seahorse/
Service, o de leer un secreto custodiado como Leupold reveló a Linux Magazine. [3] Kwallet: http://utils.kde.org/
por él, la aplicación cliente tiene que abrir Ksecretserviced usará varios frontends y projects/kwalletmanager/
una sesión con el servicio. La sesión ter- backends (Figura 2). Los frontends sopor- [4] Borrador 0.1 de la API Secrets Ser-
mina cuando se llama al método Close() o tan comunicaciones de cliente: uno de vice: http://people.gnome.org/
bien cuando la aplicación sale de la sesión ellos implementará la nueva API; otro pro- ~stefw/secrets/html/
de D-Bus. El intercambio de información porcionará una interfaz Kwallet por moti- [5] Versión Git de la API: http://
confidencial tiene lugar dentro de la vos de compatibilidad. Y ambos utilizan gitorious.org/+xdg-secrets-api/
sesión. Aunque la API prevé e implementa D-Bus. Otros clientes pueden utilizar fron- xdg-specs/secrets-xdg-specs
para ello el modo de texto-plano, la expe- tends adicionales. [6] D-Bus: http://www.freedesktop.org/
riencia nos dice que el cifrado es infinita- Los backends se encargan del almace- wiki/Software/dbus
mente preferible. La API especifica por namiento y la lectura de los secretos. El [7] PKCS #11: http://www.rsa.com/
tanto un intercambio de claves Diffie-Hell- primer backend, que se encuentra actual- rsalabs/node.asp?id=2133
man, más cifrado AES 128 en modo Chai- mente en desarrollo se usará un nuevo for- [8] PKCS #7: http://www.rsa.com/
ned Block Cipher y Padding en línea con mato con extensión *.ksecret. Además de rsalabs/node.asp?id=2129
PKCS #7. esto, los programadores de KDE también [9] Diagrama de Gnome Keyring:
trabajan para soportar el formato de http://git.gnome.org/browse/
Implementación Gnome Keyring. En un futuro, el software gnome-keyring/plain/docs/
¿Qué hay de las implementaciones? Stef soportará el uso de Smartcards y otros gnome-keyring.svg
Walter casi ha acabado la implementación medios cifrables.

WWW.LINUX- MAGAZINE.ES Número 72 47


DESARROLLO • Perl: Scripting

Evitamos las molestas páginas de bienvenida WiFi

APROBADO
RÁPIDO
Un script en Perl ahorra a los usuarios la molesta tarea de pulsar en las

páginas de bienvenida del proveedor de WiFi, acepta automáticamente

los términos de uso y permite acceder lo más rápido posible sin un

navegador.

POR MICHAEL SCHILLI

A
ntes de que los hoteles, cibercafés o aeropuertos dejen que los nuevos usuarios acce-
dan a sus redes WiFi, redirigen las peticiones del navegador (Figura 1), haciendo que
sus potenciales clientes tengan primero que lidiar con una página de bienvenida
(Figura 2). Al llegar a esa página, lo que se ve son términos de uso sin fin – que nadie lee
de todos modos – casillas de verificación que tenemos que habilitar, anuncios o las
tres cosas.
Los proveedores de WiFi configuran estas páginas de bienvenida como
obstáculos que les permiten centralizar el registro de direcciones MAC del
cliente en la red WiFi y recordar al usuario sus obligaciones como inter-
nauta ejemplar. Una vez que hemos pasado por todas estas etapas obli-
gatorias, el punto de acceso baja su puente levadizo y nos da el acceso
web y la capacidad de abrir conexiones TCP arbitrarias a Internet
(Figura 3).

Sin Web No Hay Acceso


En algunos casos, los usuarios ni siquiera quieren acceder a
la web, sino que sólo desean abrir un túnel SSH. Luego,
con un terminal abierto y el navegador cerrado, se sor-
prenden de que se les asigne una dirección IP, aunque
el cortafuegos, obviamente, está bloqueando el acceso
a Internet. El script Perl splash descrito en este artículo
ayuda a los usuarios con este dilema colándose a tra-
vés de los formularios web que se encuentran entre
el usuario con muchas ganas de empezar y el acceso
pleno a Internet. Para ello, splash pulsa en todos los
enlaces, activa todas las casillas, acepta todas las coo-
kies y las envía gentilmente de regreso al proveedor de
WiFi, que piensa que se trata de un ser humano real y vivo
que está utilizando su navegador para toda esta comunica-
ción.

Figura 1: El usuario ha solicitado google.com, pero previamente la red WiFi


lo lleva a la página de bienvenida del proveedor.

48 Número 72 WWW.LINUX- MAGAZINE.ES


Perl: Scripting • DESARROLLO

Figura 2: El WiFi del hotel redirige la primera petición del navegador a Figura 3: Los usuarios simplemente tienen que pulsar para acceder a
una página de bienvenida. los términos de usuario, y podrán navegar durante 24 horas.

Tácticas de Plugin Flexibles habilita todas las casillas de verificación que intento de acceso no se realiza correcta-
Pero, ¿cómo puede un sencillo script mane- aparecen en el primer formulario web antes mente, el script lo intenta con el siguiente
jar lo que podrían ser miles de configuracio- de pulsar el botón enviar. Los usuarios sólo plugin. De lo contrario, nos devuelve un
nes diferentes de páginas de bienvenida? Los tienen que añadir nuevos plugins en el direc- mensaje de éxito y finaliza.
proveedores de WiFi podrían crear comple- torio de plugins, a continuación el script los
jas formas o incluso utilizar su artillería recoge automáticamente, sin necesidad de Abajo con el Muro
pesada como animaciones Flash o JavaScript ninguna configuración, y lo intenta con ellos La Figura 4 muestra cómo reacciona el script
para defenderse de los scripts automáticos. como una nueva táctica. si la conexión de red no está activa porque el
Para contrarrestar esto, el script confía en Cada vez que un plugin completa su eje- usuario no ha seleccionado ninguna de las
una estrategia de plugin que permite al usua- cución, el script Splash hace una petición a redes WiFi disponibles o no ha introducido
rio, o a un tercero, modificarlo para controlar http:// www. google. com para ver si real- la contraseña WPA. Mientras las peticiones a
los nuevos métodos. Cada plugin prueba su mente devuelve la página web o si aparece Google devuelvan errores, o se congelen
propio enfoque para flanquear la página de otra página de bienvenida en el camino. Si el durante más de cinco segundos, el script se
bienvenida.
Por ejemplo, el plugin ClickAllLinks.pm se Listado 2: ClickAllLinks.pm
hace camino pulsando en todos los enlaces
de la página, mientras que CheckBoxFill.pm 01 ############################# 20
02 package SplashJumper::Plugin:: 21 for
Listado 1: ClickAllLinks; 22 my $link ($mech->links())
SplashJumper.pm 03 ############################# 23 {
04 # Mike Schilli, 2010 24
01 ############################ 05 # (m@perlmeister.com) 25 INFO “Clicking on “,
02 package SplashJumper; 06 ############################# 26 $link->url();
03 ############################ 07 use Log::Log4perl qw(:easy); 27 my $resp =
04 # Mike Schilli, 2010 08 28 $mech->get($link);
05 # (m@perlmeister.com) 09 ############################# 29
06 use strict; 10 sub register { 30 INFO “Got “,
07 use warnings; 11 ############################# 31 length($resp->content()),
08 use Module::Pluggable 12 return “click-all-links”, 32 “ bytes back”;
09 require => 1; 13 10; 33
10 14 } 34 $mech->back();
11 sub new { 15 35 }
12 bless {}, shift; 16 ############################# 36 }
13 } 17 sub process { 37
14 18 ############################# 38 1;
15 1; 19 my ($self, $mech) = @_;

WWW.LINUX- MAGAZINE.ES Número 72 49


DESARROLLO • Perl: Scripting

Figura 4: Si la conexión de red está desactivada, el script intenta


alcanzar el servidor de Google a intervalos de 5 segundos.

toma un breve descanso y luego lo intenta de ejecución, lo lógico


nuevo. Una vez que el cliente tiene una es ejecutar los plu-
dirección IP y las peticiones web al menos gins con mayores Figura 5: Si el script encuentra una página de bienvenida, aplica pri-
muestran la página de bienvenida, el script oportunidades de mero el método click-all-links.
lanza un plugin tras otro en la pared artificial
éxito en primer
(Figura 5) hasta que finalmente la derrumba. lugar. de objetos WWW::Mechanize::Link y utiliza
El Listado 1 muestra la clase de base Splas- Los dos plugins que veremos aquí definen un bucle for para iterar sobre la lista. La fun-
hJumper para todos los plugins, la cual sim- prioridades de 10 y 50, respectivamente, de ción INFO, importada de los tesoros de
plemente define un constructor. Tira del modo que el script siempre probará Clic- Log4perl, le indica al usuario curioso qué
módulo Module::Pluggable de CPAN y le AllLinks primero antes de aplicar la táctica enlace está pulsando actualmente el plugin.
pasa el parámetro require => 1. El módulo que Check- BoxFill muestra en el Listado 3. El método get() del simulador de navegador
comprueba entonces el subdirectorio Splas- Cuando se ejecuta un plugin de contra- ejecuta a continuación la petición web.
hJumper/Plugin en busca de los archivos ataque a la página de bienvenida, el script
.pm, ejecuta una instrucción require, y los llama a su método process() y le pasa el Mecanizar con Autocheck
carga en el script activo. simulador de navegador $mech, un objeto de El control explícito de errores no se realiza
la clase WWW::Mechanize. Este módulo aquí porque WWW:: Mechanize se ejecuta
El Mejor Primero CPAN es perfecto para capturar páginas web, en modo autocheck de forma predetermi-
El Listado 2 muestra un típico plugin con el analizar su contenido y profundizar en sus nada. Genera una excepción por cada error
módulo ClickAllLinks. Cuando se carga el enlaces. A menudo se utiliza para imple- que encuentra, y el bloque eval{} agrupado
script principal del plugin, llama al método mentar screen scrapers, ya que proporciona alrededor de la llamada al plugin en el script
register(), que devuelve el nombre de la tác- más o menos un conjunto completo de fun- principal (véase el Listado 4, línea 81) los
tica actual y un número de prioridad. El cionalidades del navegador (excepto el agrupa antes de que el programa principal
script principal ordena los plugins numérica- código JavaScript o plugins de Flash), acepta pase a gestionar el error.
mente en base a los números de prioridad cookies automáticamente, y los devuelve al En la línea 30 (Listado 2), el plugin utiliza
que reporta, llamando a los plugins con servidor. a continuación la instrucción INFO para indi-
menor valor en primer lugar. Esto significa En el plugin Click-AllLinks, el método car el número de bytes devueltos al pulsar el
que los plugins pueden decidir entre ellos links() identifica todos los enlaces de la enlace, y el método back() en la línea 34
quién va primero. Para reducir el tiempo de página de bienvenida recuperados en forma pulsa el botón Atrás del navegador virtual
para volver a la página de bienvenida.
Listado 3: CheckBoxFill.pm El plugin CheckBoxFill del Listado 3 uti-
liza un enfoque diferente. Busca a través del
01 ############################# 19 archivo HTML de la página de bienvenida
02 package SplashJumper::Plugin:: 20 $mech->form_number(1); con el objetivo de encontrar el primer formu-
CheckBoxFill; 21 lario de la web y luego utiliza la instrucción
03 ############################# 22 my @inputs = form_number(1) para configurarla como
04 # Mike Schilli, 2010 23 $mech->current_form current_form. El método find_input() extrae
05 # (m@perlmeister.com) 24 ->find_input(undef, todos los campos de entrada de tipo “casilla
06 ############################# 25 “checkbox”); de verificación” del formulario, y el bucle for
07 use Log::Log4perl qw(:easy); 26 de las líneas 27-29 los selecciona a todos lla-
08 27 for my $input (@inputs) { mando a sus métodos check(). La línea 32
09 ############################# 28 $input->check(); llama entonces a submit_form() para enviar
10 sub register { 29 } el formulario web de vuelta al servidor, antes
11 ############################# 30 de que la línea 34 vuelva a la página de bien-
12 return “checkbox-fill”, 50; 31 INFO “Submitting form 1”; venida para asegurarse de que el próximo
13 } 32 $mech->submit_form( plugin encuentra las condiciones de partida
14 33 form_number => 1); normales.
15 ############################# 34 $mech->back(); Este método hace posible controlar páginas
16 sub process { 35 } de bienvenida como las que se muestran en
17 ############################# 36 las Figuras 6 y 7, las cuales requieren que el
18 my ($self, $mech) = @_; 37 1; usuario marque una casilla de verificación y
luego pulse un botón que envía el formulario.

50 Número 72 WWW.LINUX- MAGAZINE.ES


Perl: Scripting • DESARROLLO

El Listado 4 finalmente muestra el pro- información que


grama principal, Splash. Empieza por defi- encuentra en una
nir en la línea 13 la URL de prueba, que el matriz y empuja
script recupera para descubrir si la conexión una referencia al
a Internet está activa. La página de Google final de la matriz
es perfecta para esto, porque es ligera y es @ways. La línea
muy probable que esté disponible en una 44 ordena los ele-
conexión a Internet que funcione. La línea mentos de esta
16 inicializa el entorno de trabajo Log4perl matriz numérica-
en el nivel DEBUG para dar al usuario infor- mente por el
mación detallada sobre el plugin en ejecu- campo order, de
ción en ese momento y las acciones que manera que un
está llevando a cabo en el navegador virtual. plugin con una
Gracias a la utilización de Module::Plug- prioridad de 10
gable, los objetos de la clase de base Splash- ejecuciones se Figura 6: La red WiFi del aeropuerto de San Diego requiere que el usua-
Jumper disponen de un método plugins() ejecuta antes rio marque una casilla de verificación y entonces envía el formulario
que devuelve una lista de todos los plugins (before) que un web.
instalados en el subdirectorio de Plugin. La plugin con una
línea 28 comprueba si cada plugin propor- prioridad de 50. tar acceder al servidor de Google. Al final
ciona un método register(), como se El simulador de navegador del bloque, que Perl repite ejecutando un
requiere, y omite plugins no implementados WWW::Mechanize establece su tiempo de redo, al menos la red local WiFi está funcio-
correctamente, devolviendo un mensaje de espera a cinco segundos en la línea 50. Esto nando y al cliente se le asigna una dirección
error en este sentido al mismo tiempo. significa que el bloque del bucle de las IP válida. Sin embargo, el proveedor de
Los plugins correctamente implementa- líneas 53 a 62 sólo se congela en el método WiFi aún podría haber encaminado las peti-
dos devuelven sus tácticas como $algo en la get() durante cinco segundos antes de darse ciones a www.google.com a un servidor
línea 35 y su prioridad numérica preferida por vencido, durmiendo durante cinco interno que produce la página de bienve-
en la variable $order. El script empaqueta la segundos , y a continuación vuelve a inten- nida.
DESARROLLO • Perl: Scripting

error que se pro- ClickAllLinks.pm


duzca en el plu- SplashJumper/Plugin/U
gin, y la línea 88 CheckBoxFill.pm
comprueba la
variable $@ para Algunos plugins adicionales podrían contro-
ver si ha suce- lar múltiples formularios web, o incluso sor-
dido algo. tear los trucos de JavaScript. También nece-
sitan almacenarse en el directorio Plugin. Su
Figura 6: La red WiFi del aeropuerto de San Diego requiere que el usuario Instalación método register() tiene que asignar un nom-
marque una casilla de verificación y entonces envía el formulario web. Para asegurarnos bre para la táctica, y decide una prioridad
de que el script para definir el orden en que se ejecutará.
El bucle for de las líneas 65 a 95 intenta encuentra el módulo SplashJumper, éste Después de abrir la tapa de su portátil en el
burlar la página de bienvenida con una gran deberá estar instalado en la ruta de la bús- aeropuerto, sólo tiene que lanzar el script
variedad de plugins, y una vez que la URL queda del script %INC: la forma más sencilla splash. Su salida nos indica cómo lucha
de la última solicitud es igual a la URL de de hacerlo es poner los dos en el mismo nuestro guerrero de bolsillo en su nuevo
prueba (es decir, no se redirige a la página de directorio. Los plugins se almacenan en el entorno y si logra vencer esos obstáculos
bienvenida), la línea 72 decide que la página recién creado subdirectorio artificiales. ■
de bienvenida ha sido derrotada y la cone- SplashJumper/Plugin, de modo que el
xión a Internet está abierta. diseño del archivo se parece a esto: RECURSOS
Si no es este el caso, la línea 85 llama al
[1] Listados de este artículo: http://
método process() para el próximo plugin en splash
www.linux-magazine.es/Magazine/
línea con igual o mayor prioridad. El bloque SplashJumper.pm Downloads/72
eval{} de las líneas 81 a 86 atrapa cualquier SplashJumper/Plugin/U

Listado 4: Splash
01 #!/usr/local/bin/perl -w 33 } 65 for my $ways (@ways) {
02 ############################# 34 66 eval { $mech->get($url); };
03 # splash - Traverse WiFi 35 my ($algo, $order) = 67
04 # Splash Pages 36 $plugin->register(); 68 my $current_url =
05 # Mike Schilli, 2010 37 69 $mech->response->request
06 # (m@perlmeister.com) 38 push @ways, 70 ->uri;
07 ############################# 39 [ $algo, $plugin, 71
08 use strict; 40 $order ]; 72 if ($current_url eq $url) {
09 use SplashJumper; 41 } 73 INFO “Link is up.”;
10 use WWW::Mechanize; 42 74 last;
11 use Log::Log4perl qw(:easy); 43 # sort by plugin priority 75 } else {
12 44 @ways = sort { 76 INFO “Link still down”;
13 my $url = 45 $a->[2] <=> $b->[2] 77 }
14 “http://www.google.com”; 46 } @ways; 78
15 47 79 my ($algo, $plugin, $order)
16 Log::Log4perl->easy_init( 48 my $mech = 80 = @$ways;
17 $DEBUG); 49 WWW::Mechanize->new(); 81
18 50 $mech->timeout(5); 82 eval {
19 my $sj = SplashJumper->new(); 51 83 INFO “Processing splash “,
20 52 # wait until network is up 84 “page $current_url “,
21 my @ways = (); 53 { 85 “with algo $algo”;
22 54 INFO “Trying $url”; 86 $plugin->process($mech);
23 for 55 eval { $mech->get($url); }; 87 };
24 my $plugin ($sj->plugins()) 56 if ($@) { 88
25 { 57 INFO 89 if ($@) {
26 58 “Connection down, retrying”; 90 ERROR
27 if ( 59 sleep 5; 91 “Algo $algo failed ($@)”;
28 !$plugin->can(“register”)) 60 redo; 92 } else {
29 { 61 } 93 INFO
30 ERROR “$plugin can’t do”, 62 } 94 “Plugin $algo succeeded”;
31 “ register()”; 63 95 }
32 next; 64 # try to get past splash page 96 }

52 Número 72 WWW.LINUX- MAGAZINE.ES


La Columna de Charly • ADMINISTRACIÓN

tiempo fuera demasiado alto, significaría


El día a día del administrador de sistemas: Cluster SSH que ha olvidado actualizar el kernel.

Simultaneidad
Si se crea un fichero de configuración
~/.csshrc para cada usuario, las configu-
raciones en este fichero son complemen-
tarias o reemplazan al fichero /etc/clus-
ters.

Espontánea Renovación
Hay gente a la que no le gusta la ventana
con el terminal negro tal y como se mues-
tra en la captura de pantalla. Con la
entrada
A Charly no le gusta la idea de tener que buscar entre los ficheros de
terminal_bg_style = dark
registros de una docena de servidores proxy cuando la página solici-
podrá añadir la iluminación adecuada a
tada muestra un error. Dado que él ha desarrollado Cluster SSH, puede ese ambiente vampiresco. Para aumen-
tarla, sólo habrá que cambiar dark por
tirar de la cuerda en varios equipos a la vez
light.
Por Charly Kühnast Cluster SSH también puede asignar una
fuente de color para cada servidor, lo cual
puede ser muy útil, ya que cuando la

P
ara balancear la carga y mejorar la user@server1 user@server2 U fuente de color siempre es la misma en el
disponibilidad, primero necesita user@server3 servidor, después de un tiempo, se pue-
organizar los servidores en un den identificar los nodos de un vistazo
cluster. Y para eliminar posibles sorpresas Para optimizar el proceso se pueden agru- simplemente por el tono que presenten
en la gestión del cluster, todos los servido- par los servidores con una etiqueta en el las 24 terminales. Si desea prescindir del
res miembros deben ser idénticos. Esto fichero /etc/clusters: color, puede cerrar la caja de pinturas
facilita dicha tarea de gestión, pero tam- tecleando terminal_colorize = 0. Para
bién la hace realmente aburrida. Cluster proxys admin@proxy1 U cambiar el tamaño estándar de la pantalla
SSH [1], que le ahorrará mucho trabajo admin@proxy2 admin@proxy3 de 24 líneas con 80 caracteres, escriba
con muy poco coste, tiene una interfaz Tk mailserver admin@mailserver1 U algo como:
minimalista con un cuadro de texto de admin@mailserver2 U
entrada. Cualquier comando que teclee admin@mailserver3 terminal_size = 120x32
en el cuadro se ejecutará en todos los ser-
vidores conectados. Por ejemplo, el A continuación, cuando se llama a cssh Mi veredicto: Ningún cluster sin Cluster
comando mostrado en la Figura 1 es htop. proxys, aparecerán las terminales de SSH. ■
todos los servidores proxy que se
han definido. Existe la posibili- RECURSOS
dad de volver a utilizar de nuevo
[1] Cluster SSH: http://sourceforge.net/
las etiquetas en una lista de ser- projects/clusterssh
vidores. Si ahora se añade

allservers proxys mailserver Charly Kühnast


es Gerente de
al fichero /etc/clusters, Cluster Sistemas Unix
en el centro de
SSH abre un terminal para todos
datos de Möers,
los servidores etiquetados como
EL AUTOR

Alemania, cerca
proxys y mailserver cuando se
del conocido
llama a: Rhin. Entre sus
Figura 1: htop se está ejecutando en cada una de las labores se incluye la seguridad del
tres máquinas del cluster. Con Cluster SSH, el admin- cssh allservers cortafuegos, la disponibilidad y el
istrador se evitará tener que visitar cada nodo por cuidado de la DMZ (zona desmilita-
separado. El escritorio se encuentra ahora rizada). Divide su tiempo libre entre
bastante concurrido, pero puede el calor, la humedad y oriente,
Cuando se lanza, Cluster SSH espera ser práctico si se necesita, por ejemplo, donde se divierte cocinando, visi-
una lista de servidores con los que abre comprobar los tiempos de funciona- tando acuarios y aprendiendo
japonés respectivamente.
conexiones SSH – por ejemplo: miento de estos servidores – si este

WWW.LINUX-MAGAZINE.ES Número 72 53
ADMINISTRACIÓN • Btrfs

vanilla y se encuentra soportado oficialmente


por varias distribuciones Linux, incluyendo
Fedora y Ubuntu. Si está utilizando un sis-
tema que no ofrezca Btrfs, habrá que recom-
pilar el kernel para activar Btrfs, además de
compilar el juego de herramientas btrfs-progs
para gestionarlo.
En este artículo mostraremos cómo crear y
administrar un sistema de ficheros Btrfs, y
examinaremos algunas de las funcionalida-
des avanzadas. Sin embargo, hay que tener
en cuenta que Btrfs es relativamente nuevo y
aún se encuentra bajo desarrollo.

La Utilidad de
Administración
Administración de volúmenes de almacenamiento con Btrfs

Tan suave como la


En el momento de redactar este artículo,
Btrfs no es un sistema de ficheros arrancable;
por ello, no podrá contener el directorio

mantequilla
/boot, donde residen las imágenes de arran-
que y del kernel.
Las dos principales utilidades que se nece-
sitan para crear y gestionar un volumen Btrfs
son mkfs.btrfs(8) y btrfs(8). (Muchas guías
Btrfs se presenta como un ganador para los expertos gracias a sus sobre Btrfs también hacen referencia a
btrfsctl, una herramienta antigua que actual-
avanzadas funcionalidades como subvolúmenes, imágenes y redimen- mente ha sido reemplazada por btrfs). La uti-
lidad btrfs es una herramienta de propósito
sionado dinámico de volúmenes.
general que se puede utilizar para adminis-
POR PETROS KOUTOUPIS trar los volúmenes Btrfs, monitorizar su uso,
crear subvolúmenes e imágenes, crear volú-
menes nuevos, añadir o quitar discos de los

B
trfs [1] es un nueva generación de volumen puede referirse a uno o a varios gru- volúmenes existentes y permitir la desfrag-
sistema de ficheros destinado a con- pos de discos o particiones. mentación en línea y el balanceo del volu-
vertirse en el sistema de ficheros por El sistema de ficheros Btrfs permite agru- men.
defecto de muchas distribuciones Linux futu- par varios discos en uno único y (si se especi- Por ejemplo, en un sistema Linux, para
ras. Inicialmente desarrollado por Oracle, fica) en un volumen RAID redundante, el saber si hay algún dispositivo Btrfs introduci-
viene con licencia GPL (General Public redimensionado dinámico de volúmenes, la ríamos el siguiente comando:
License) Versión 2, y a partir de la versión desfragmentación en línea, la verificación de
2.6.29-rc1 del kernel de Linux se aceptó den- las sumas de control, la compresión y $ sudo btrfs device scan
tro del desarrollo principal del kernel. Btrfs es muchas otras características más. A pesar de
el acrónimo de sistema de ficheros B-tree, que algunas de sus funcionalidades aún se Para descubrir todos los sistemas de ficheros
pero normalmente se pronuncia como “But- encuentran incompletas, Btrfs se activa en multidiscos de la máquina deberemos ejecu-
ter FS” (butter significa mantequilla en una configuración por defecto de un kernel tar este comando tras reiniciar o recargar el
inglés). Este innovador sistema de ficheros
está inspirado en el sistema de ficheros ZFS Errores y fsck
de Sun Microsystem (ahora Oracle), que ofi-
La wiki de Btrfs [1] contiene el siguiente aviso: Téngase en cuenta que Btrfs aún no
cialmente nunca se portó al kernel de Linux posee una herramienta fsck que pueda solucionar errores. Aunque Btrfs es estable en
debido a problemas de licencias entre CDDL una máquina estable, es posible que actualmente pueda corromperse el sistema de
(Common Development and Distribution ficheros de forma irrecuperable en el caso de que se produzca algún cuelgue de la
License) y GPL. máquina o un corte del suministro eléctrico de los discos que no permita el volcado de
los datos de forma correcta. Estos problemas se solucionarán cuando la herramienta
Btrfs es conocido como un sistema de fsck se encuentre disponible.
ficheros COW (Copy-On-Write). Cuando se
modifican datos, nunca se modifican en su
lugar. Se crea un bloque de datos o una serie Listado 1: Listando Sistemas de Ficheros Btrfs
de bloques de datos nuevos para almacenar- $ sudo btrfs filesystem show
los. Este concepto sirve de ayuda para que Label: none uuid: f2346c58-64fd-42a5-afdb-10e9e134d0a1
Btrfs pueda soportar funcionalidades avan- Total devices 1 FS bytes used 2.40GB
zadas, como imágenes y subvolúmenes. Un devid 1 size 7.64GB used 4.60GB path /dev/sda6

54 Número 72 WWW.LINUX- MAGAZINE.ES


Btrfs • ADMINISTRACIÓN

módulo btrfs. Si lo que deseamos es listar los $ sudo mkfs.btrfs -m raid10 U


tipos de dispositivos (Listado 1), utilizare- -d raid10 /dev/sdb /dev/sdc U
mos: /dev/sdd /dev/sde

$ sudo btrfs filesystem show Tras crearse un nuevo volumen Btrfs, se


añade una entrada nueva en la lista del sis-
Creación de un Volumen tema de ficheros Btrfs de la máquina. Para
Nuevo listar todos los sistemas de ficheros Btrfs y
Para utilizar el nuevo sistema de ficheros qué dispositivos incluyen, se puede utilizar el
Btrfs debemos formatear y etiquetar un volu- comando btrfs. En el Listado 3 podemos
men consistente en uno o más discos o parti- apreciar el volumen Btrfs recién creado.
ciones. La creación de un volumen Btrfs Para leer y escribir será necesario montar Figura 1: Imagen en la que se aprecia cómo
nuevo es bastante sencilla. Para crear un el volumen desde cualquier dispositivo de los datos se distribuyen a través de un volu-
volumen con un sólo disco tecleamos: bloques especificado cuando se creó el volu- men RAID 0 y cómo se almacenan de forma
men. Los Listados 3 y 4 utilizan /dev/sdb redundante en un volumen RAID 1.
$ sudo mkfs.btrfs /dev/sdb para designar el volumen entero.
Para añadir un disco se utiliza:
Para utilizar múltiples discos, deberemos eje- Añadir y Eliminar Discos
cutar el siguiente comando, listando todos Una de las mejores funcionalidades del sis- $ sudo btrfs device add U
los discos. (Para las opciones de RAID de tema de ficheros Btrfs es la posibilidad de /dev/sdd /mnt/
Btrfs, véase el cuadro titulado “Btrfs y añadir o eliminar dinámicamente discos. Si
RAID”). disponemos de un disco que haya fallado o El Listado 6 muestra el listado actualizado
que deseemos colocar en otro sitio, podemos del sistema de ficheros. En este punto, el sis-
$ sudo mkfs.btrfs /dev/sdb U quitarlo con el comando: tema de ficheros incluye tres discos, pero
/dev/sdc /dev/sdd todos los metadatos y datos se encuentran
$ sudo btrfs device delete U aún almacenados en /dev/sdb y /dev/sdc.
En el Listado 2, mkfs.btrfs configura los dis- /dev/sdd /mnt/ Ahora hay que balancear el sistema de fiche-
cos de modo que los metadatos se distribu- ros y repartir los ficheros por todos los dis-
yan por todos ellos. Para distribuir tanto los Cuando se invoque la opción filesystem cos. El proceso completo de balanceo
datos como los metadatos por todos los dis- show, la utilidad btrfs mostrará que ya no se reparte los datos por todos los discos exis-
cos (sin utilizar una configuración de encuentra uno de los discos (Listado 5). tentes:
espejo), utilizaremos el comando:
Listado 2: Formateando Múltiples Discos
$ sudo mkfs.btrfs -m raid0
$ sudo mkfs.btrfs /dev/sdb /dev/sdc /dev/sdd
/dev/sdb /dev/sdc /dev/sdd WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL
WARNING! - see http://btrfs.wiki.kernel.org before using
Para utilizar una configuración de espejo adding device /dev/sdc id 2
adding device /dev/sdd id 3
tanto de los metadatos como de los datos dis-
fs created label (null) on /dev/sdb
tribuyéndolos por todos los discos, lo hare- nodesize 4096 leafsize 4096 sectorsize 4096 size 6.00GB
mos con:

Btrfs y RAID
RAID (Redundant Array of Independent Disks) es un método por el cual múltiples discos duros independientes conectados a un orde-
nador aparecen como un único disco. Dependiendo del tipo de RAID, el rendimiento puede mejorarse de forma increíble, especial-
mente si se distribuyen los datos por múltiples discos, eliminándose los cuellos de botella de un único disco para las operaciones de
lectura/escritura. La mayoría de los algoritmos de RAID ofrecen una forma de redundancia que puede resistir un número finito de
fallos de disco. Cuando un disco falla en un array redundante, el sistema funcionará en un modo degradado hasta que se restaure. La
tecnología es capaz de restaurar el sistema a un punto anterior al momento del fallo. Existen numerosos tipos de RAID. Hasta la fecha,
Btrfs soporta oficialmente RAID 0, RAID 1 y RAID 10, pudiendo duplicar también los metadatos en un único disco. Existe un parche que
proporciona soporte para RAID 5 y RAID 6, pero oficialmente no ha sido integrado en el proyecto.
Un array RAID 0 consiste en la distribución de los datos por todos los discos que formen el array, escribiendo según el algoritmo de
round-robin. Las operaciones de lectura y escritura acceden a los datos de la misma forma. La escritura o lectura de los datos de forma
concurrente por medio de varios discos tardan menos tiempo que la realización de esa misma operación en un único disco, con lo que
un sistema RAID 0 puede mejorar de forma considerable el rendimiento, aunque RAID 0 no ofrece redundancia. Si uno de los discos
del array fallara, entonces el array entero fallará.
En un array RAID 1 (discos en espejo), uno de los discos almacena una réplica exacta del otro disco. Si uno de los discos fallase, el
segundo entraría en acción y seguiría a partir de donde se quedó el primero. El rendimiento global es igual al rendimiento que se con-
sigue con un único disco. En algunas implementaciones RAID 1, las operaciones de lectura se afinan para que consigan velocidades
mayores por medio de un mecanismo conocido como balanceo de lectura. El balanceo de lectura proporciona la habilidad de obtener
los datos de los dos discos del array.
El sistema híbrido RAID 10 usa las dos técnicas anteriores. La Figura 1 muestra un ejemplo de cómo los datos se escriben en un chunk
a través de múltiples discos en un volumen RAID.

WWW.LINUX- MAGAZINE.ES Número 72 55


ADMINISTRACIÓN • Btrfs

$ sudo btrfs filesystem balanceU Para verificar que el subvolumen existe en la volúmenes más tradicionales requieren que
/mnt/ raíz del volumen Btrfs, se utiliza la opción la imagen se tome de todo el volumen lógico
list: entero. Btrfs, por otro lado, permite crear
Este comando lleva a la configuración mos- imágenes de ficheros individuales o de direc-
trada en el Listado 7. $ sudo btrfs subvolume list /mnt torios enteros que se encuentren en el volu-
La operación de balanceo tarda un poco, ID 256 top level 5 path subvol men Btrfs. (Recuérdese que todo esto es
ya que requiere que todos los datos y meta- posible gracias al diseño COW del sistema
datos del sistema de ficheros se vuelvan a El Listado 8 muestra los contenidos de la raíz de ficheros Btrfs).
leer y reescribir por todos los discos del array, del sistema de ficheros. Para ver cómo funciona el proceso de crea-
incluyendo los discos nuevos añadidos. Si deseamos especificar un subvolumen ción de imágenes, debemos comenzar cre-
como el volumen por defecto cuando se ando un fichero con touch o dd (Listado 9).
Subvolúmenes e Imágenes monte, es necesario obtener el ID del subvo- Ahora que tenemos un fichero, podemos
de Volúmenes lumen (como se puede observar en el crear una imagen de la raíz del sistema de
Un único volumen Btrfs puede contener comando anterior) e invocar la utilidad btrfs ficheros:
múltiples subvolúmenes. Si se define un sub- con la siguiente opción:
volumen como “default” (por defecto) para $ sudo btrfs subvolume snapshotU
el volumen, cuando se monte el volumen, el $ sudo btrfs subvolume U /mnt /mnt/snapshot_of_root
subvolumen aparecerá como raíz; incluso es set-default 256 /mnt
posible montar un subvolumen cuando el Un listado de todos los subvolúmenes del sis-
volumen padre no se encuentre montado. Por otro lado, podemos montar el subvolu- tema de ficheros Btrfs tendrá ahora la imagen
Cada subvolumen puede operar como un men en un directorio separado. incluida.
sistema de ficheros independiente. En Btrfs,
todo el almacenamiento se encuentra en el $ sudo mount -t btrfs -o U $ sudo btrfs subvolume list /mnt
conjunto, y los subvolúmenes se crean a par- subvol=subvol /dev/sdb U ID 256 top level 5 path subvol
tir de este conjunto – no necesitamos hacer /subvol ID 257 top level 5 path U
ninguna partición. Mientras que la capacidad snapshot_of_root
de almacenamiento se mantenga, se pueden Aunque se pudiera pensar que la imagen de
crear todos los subvolúmenes que se deseen. los datos es un subvolumen, difiere en Cuando realicemos esta operación, un lis-
Para crear uno deberemos introducir: implementación. Una imagen es un estado tado de los contenidos de la imagen recién
individual de un volumen de almacena- creada mostrará una imagen raíz del volu-
$ sudo btrfs subvolume createU miento en un momento determinado. Las men Btrfs, con la excepción del directorio de
/mnt/subvol imágenes normalmente se utilizan para el la imagen del subvolumen (Listado 10).
Create subvolume ‘/mnt/subvol’ archivado de datos. Los administradores de Ahora creamos un fichero nuevo en la raíz
del volumen. La imagen aún preservará los
Listado 3: Un Sistema de Ficheros Btrfs Nuevo datos originales del momento que se tomó
(véase la comparativa del Listado 11).
$ sudo btrfs filesystem show
Label: none uuid: f2346c58-64fd-42a5-afdb- Para montar la imagen recién creada en un
10e9e134d0a1 directorio separado, deberemos teclear:
Total devices 1 FS bytes used 2.40GB
devid 1 size 7.64GB used 4.60GB path /dev/sda6
$sudo mkdir /btrfs_snapshot
Label: none uuid: 0fa5bbee-6f69-4d10-a316-ac373e8b5f64
Total devices 3 FS bytes used 28.00KB $sudo mount -t btrfs -o subvol=U
devid 1 size 2.00GB used 531.94MB path /dev/sdb snapshot_of_root U
devid 2 size 2.00GB used 212.75MB path /dev/sdc /dev/sdb /btrfs_snapshot/
devid 3 size 2.00GB used 519.94MB path /dev/sdd

La realización de una copia de seguridad de


Listado 4: Montando y Verificando un volumen entero puede tardar bastante
$ sudo mount /dev/sdb /mnt/ tiempo y consumir grandes cantidades de
$ df -t btrfs espacio de almacenamiento, incluso para los
Filesystem 1K-blocks Used Available Use% Mounted on ficheros que permanecen inalterados. Tam-
/dev/sda6 8011776 2745480 5266296 35% / bién, cuando se realiza una copia de seguri-
/dev/sdb 6291456 56 6291400 1% /mnt
dad de un volumen entero o de un subcon-
junto de volúmenes en un entorno de multi-
Listado 5: Tras Eliminar un Disco procesamiento simétrico, las operaciones de
$ sudo btrfs filesystem show /dev/sdb escritura podrían seguir modificando los
Label: none uuid: 0fa5bbee-6f69-4d10-a316-ac373e8b5f64 datos de los ficheros del volumen, con la posi-
Total devices 3 FS bytes used 36.00KB bilidad de corromper los datos. Diversas
devid 1 size 2.00GB used 156.00MB path /dev/sdb estrategias proporcionan mayores proteccio-
devid 2 size 2.00GB used 136.00MB path /dev/sdc
*** Some devices missing nes. Por ejemplo, el volumen puede ponerse
offline o marcarse como de sólo lectura antes

56 Número 72 WWW.LINUX- MAGAZINE.ES


Btrfs • ADMINISTRACIÓN

de procesar los archivos, pero en los entornos Si deseamos utilizar el tamaño máximo del decrementará el tamaño total (Listado 14).
en producción de alta disponibilidad, esta volumen, teclearemos: Btrfs no permite que el volumen padre se
propuesta puede que no sea muy práctica. mantenga constante y libere espacio
Las imágenes ofrecen una solución más $ sudo btrfs filesystem resize U cuando se encoja un subvolumen.
completa. Podemos utilizarlas para evitar los max /mnt Supongo que este problema se resolverá
retrasos y retener la atomicidad cuando se próximamente, una vez que Btrfs haya
almacenen ficheros enteros, directorios o sis- El Listado 13 muestra la salida de df tras madurado más.
temas de ficheros. En un entorno en produc- volver a redimensionar de nuevo el volu-
ción, no es raro que un administrador de sis- men a 6GB (la capacidad máxima del volu- Comandos y
temas cree un trabajo cron planificado para men). Configuraciones
crear imágenes cada hora, día, semana o La limitación actual es que el módulo de Para ver las páginas man de las utilidades
mes de varios ficheros y directorios, inclu- Btrfs no permite redimensionar un subvo- mkfs.btrfs y btrfs, introduciremos en la línea
yendo los directorios home de los usuarios. lumen sin afectar el tamaño del volumen de comandos:
De esta forma, los administradores pueden padre. Por ejemplo, si el volumen padre
obtener ficheros recientemente modificados está montado en /mnt y el subvolumen en $ man 8 btrfs
o borrados sin muchos quebraderos de /subvol, si se intenta decrementar el
cabeza. tamaño del subvolumen para dejar más A pesar de que el comando df se utilice prin-
Para borrar un subvolumen introducimos: espacio para crear un subvolumen nuevo cipalmente para monitorizar el tamaño y uso
en el futuro, el volumen padre también del sistema de ficheros completo, la herra-
$ sudo btrfs subvolume delete U
/mnt/subvol Listado 6: Tras Añadir un Disco
$ sudo btrfs filesystem show /dev/sdb
Cuando se listan todos los subvolúmenes del Label: none uuid: 0fa5bbee-6f69-4d10-a316-ac373e8b5f64
volumen padre, podrá apreciarse que el sub- Total devices 3 FS bytes used 36.00KB
volumen recientemente borrado no aparece: devid 1 size 2.00GB used 156.00MB path /dev/sdb
devid 2 size 2.00GB used 136.00MB path /dev/sdc
devid 3 size 2.00GB used 0.00 path /dev/sdd
$ sudo btrfs subvolume list /mnt
ID 257 top level 5 path U
snapshot_of_root Listado 7: Tras el Rebalanceo
$ sudo btrfs filesystem show /dev/sdb
También podemos borrar las imágenes de los Label: none uuid: 0fa5bbee-6f69-4d10-a316-ac373e8b5f64
subvolúmenes de la misma forma. Total devices 3 FS bytes used 36.00KB
devid 1 size 2.00GB used 352.75MB path /dev/sdb
devid 2 size 2.00GB used 204.75MB path /dev/sdc
$ sudo btrfs subvolume delete U devid 3 size 2.00GB used 340.75MB path /dev/sdd
/mnt/snapshot_of_root/

Redimensionando un Listado 8: Listando los Contenidos


Volumen $ ls -l /mnt/
Al contrario que la mayoría de los sistemas total 0
de ficheros alternativos, Btrfs permite redi- drwx------ 1 root root 0 2010-12-29 15:51 subvol
mensionar dinámicamente un volumen exis-
tente. Esta opción aún se encuentra limitada
y necesita más tiempo para madurar, aunque Listado 9: Creando un Fichero de Prueba
todavía es útil en algunos entornos. Si quere- $ sudo dd if=/dev/zero of=/mnt/test.dat count=4
mos decrementar el tamaño de un volumen 4+0 records in
de 6 a 5GB debemos introducir: 4+0 records out
2048 bytes (2.0 kB) copied, 0.000383095 s, 5.3 MB/s
$ ls /mnt/
$ sudo btrfs filesystem resize U subvol test.dat
-1G /mnt/
Resize ‘/mnt/’ of ‘-1G’
Listado 10: Comparativa de la Imagen
Ahora el volumen tiene un tamaño de 5GB $ ls -l /mnt/snapshot_of_root/
(véase el Listado 12). Para volver de nuevo a total 2
un sistema de ficheros de 6GB lo haremos drwxr-xr-x 1 root root 0 2010-12-29 15:57 subvol
-rw-r--r-- 1 root root 2048 2010-12-29 15:54 test.dat
con
$ ls -l /mnt/
total 6
$ sudo btrfs filesystem resize U dr-xr-xr-x 1 root root 60 2010-12-29 15:54 snapshot_of_root
+1G /mnt/ drwx------ 1 root root 0 2010-12-29 15:51 subvol
-rw-r--r-- 1 root root 2048 2010-12-29 15:54 test.dat
Resize ‘/mnt/’ of ‘+1G’

WWW.LINUX- MAGAZINE.ES Número 72 57


ADMINISTRACIÓN • Btrfs

mienta btrfs posee su propia versión que cuenta que la desfragmentación tarda más Btrfs también contiene optimizaciones para
muestra más detalles de uso del sistema de en volúmenes más grandes y con más los populares discos de estado sólido basa-
ficheros deseado. datos). Para desfragmentar un volumen dos en tecnología flash (SSD). Para activar
introducimos: las optimizaciones SSD, lo haremos con la
$ btrfs filesystem df / opción -o ssd en el montaje.
Data: total=3.06GB, used=2.24GB $ sudo btrfs filesystem U Téngase en cuenta que, en v2.6.31-rc1,
Metadata: total=783.19MB, U defragment /mnt/ esta opción de montaje se activará si Btrfs es
used=220.93MB capaz de detectar que el sistema de ficheros
System: total=12.00MB, U Del mismo modo que cualquier otro sistema no posee rotación. Los SSD van a representar
used=4.00KB de ficheros en Linux, Btrfs también soporta el una parte importante en el futuro del almace-
$ btrfs filesystem df /mnt/ montaje de un volumen Btrfs con una o namiento de datos, y es conveniente obser-
Data: total=614.25MB, used=0.00 varias opciones de montaje. Por ejemplo, var que los desarrolladores han estado prepa-
Metadata: total=128.00MB, U para desactivar las sumas de comprobación rando su llegada. Véase la página wiki de
used=32.00KB CRC-32C mientras se activa la compresión Btrfs para un listado completo de las opcio-
System: total=12.00MB, U zlib, deberemos teclear: nes de montaje [2].
used=4.00KB Merece la pena mencionar que si desea-
$ sudo mount -t btrfs -o U mos añadir una entrada en el fichero
Como se mencionó anteriormente, Btrfs nodatasum,compress /dev/sdb U /etc/fstab para montar el volumen Btrfs en el
soporta desfragmentación online (téngase en /mnt/ arranque del sistema, podemos hacerlo intro-
duciendo una línea nueva que especifique
Listado 11: Comparativa Actualizada uno de los dispositivos, el punto de montaje,
el sistema de ficheros y la lista de todos los
$ ls -l /mnt/
total 10 dispositivos y opciones:
dr-xr-xr-x 1 root root 60 2010-12-29 15:54 snapshot_of_root
drwx------ 1 root root 0 2010-12-29 15:51 subvol /dev/sdb /mnt btrfs U
-rw-r--r-- 1 root root 2048 2010-12-29 15:59 test_again.dat
device=/dev/sdb,device=U
-rw-r--r-- 1 root root 2048 2010-12-29 15:54 test.dat
$ ls -l /mnt/snapshot_of_root/ /dev/sdc,
total 2 device=/dev/sdd, U
drwxr-xr-x 1 root root 0 2010-12-29 15:57 subvol device=/dev/sde 0 0
-rw-r--r-- 1 root root 2048 2010-12-29 15:54 test.dat

O, podemos utilizar el UUID (como se mues-


Listing 12: Salida de df tra en la salida del comando btrfs filesystem
$ df -t btrfs show) seguido de las entradas típicas de fstab
Filesystem 1K-blocks Used Available Use% Mounted on (Listado 15).
/dev/sda6 8011776 2804452 5207324 36% /
/dev/sdb 5242880 72 5242808 1% /mnt Conclusión
La próxima generación de sistemas de fiche-
Listado 13: Tras Redimensionar ros para Linux está llena de funcionalidades
y características – si nos tomamos el tiempo
$ df -t btrfs
Filesystem 1K-blocks Used Available Use% Mounted on necesario para acostumbrarnos a las herra-
/dev/sda6 8011776 2804456 5207320 36% / mientas. A pesar de que Btrfs posee funcio-
/dev/sdb 6291456 72 6291384 1% /mnt nes no implementadas aún, el sistema de
ficheros proporciona una flexibilidad sor-
Listado 14: Redimensionando un Subvolumen prendente. Como Btrfs está evolucionando,
cabe esperar la aparición de soporte para
$ df -t btrfs
Filesystem 1K-blocks Used Available Use% Mounted on RAID 5 y RAID 6, comprobaciones en línea
/dev/sda6 8011776 2804768 5207008 36% / de la integridad del sistema de ficheros e
/dev/sdb 8388608 80 8388528 1% /mnt incluso el soporte para la reciente deduplica-
/dev/sdc 8388608 80 8388528 1% /subvol ción de datos (una solución ideal para entor-
$ sudo btrfs filesystem resize -1G /mnt/subvol/
Resize ‘/mnt/subvol/’ of ‘-1G’ nos virtualizados). ■
$ df -t btrfs
Filesystem 1K-blocks Used Available Use% Mounted on RECURSOS
/dev/sda6 8011776 2804768 5207008 36% /
/dev/sdb 7340032 80 7339952 1% /mnt [1] Wiki de Btrfs: https://btrfs.wiki.
/dev/sdc 7340032 80 7339952 1% /subvol kernel.org/
[2] Opciones de montaje de Btrfs:
https://btrfs.wiki.kernel.org/index.
php/Getting_started#Mount_Options
Listado 15: UUID y Entradas para fstab [3] Entrada en Wikipedia sobre Btrfs:
01 UUID-0fa5bbee-6f69-4d10-a316-ac373e8b5f64 /mnt btrfs defaults 0 0 http://en.wikipedia.org/wiki/Btrfs

58 Número 72 WWW.LINUX- MAGAZINE.ES


Pinta • LINUX USER

Una alternativa a GIMP más simple y agradable

Artista P
inta captó mi interés durante su
actualización a la versión 5.0,
lo que coincidió con el estreno
mi nueva cámara Nikon. Me he pasado
GIMP es una aplicación fantástica, pero requiere de un usuario con ta- una considerable cantidad de horas
intentando aprender a sacar buenas
lento y muy paciente para sacarle todo su jugo. Pinta, un clon de la fotos, así que necesitaba el mejor editor
de imágenes con el que trabajarlas. A
popular aplicación Paint.Net de Windows, es un programa más simple pesar de que he estado utilizando GIMP
durante bastante tiempo, mis habilida-
para el retoque de nuestras imágenes. des se limitan en gran medida a recortar
fotos para publicarlas en la web o para
POR JOE “ZONKER” BROCKMEIER
utilizarlas para capturas de pantalla.
Así que la idea era probar Pinta y
comprobar si se adecuaba a mis exigen-
cias para su uso diario y ver si era posi-
ble hacer más tareas que con GIMP
EL AUTOR

Joe “Zonker” Brockmeier es periodista tecnológico freelance, editor, creador de (obsérvese que la denominación
comunidades y defensor del software libre. Fue Community Manager de Open- correcta es GIMP, no “El GIMP”). Mis
SUSE desde el 2008 hasta el 2010. Ahora escribe para Linux Magazine y otras pu-
requisitos no eran demasiado comple-
blicaciones tecnológicas. Puedes encontrarlo en http://www.dissociatedpress.net y
jos. Sólo exigía que fuera capaz de lim-
en Twitter e Identi.ca como jzb.
piar fotos, ajustar los niveles de color y

WWW.LINUX- MAGAZINE.ES Número 72 59


LINUX USER • Pinta

quizás incluso editarlas para extraer los u otra aplicación


elementos que afeasen una buena foto. propietaria, Pinta
sería una buena
Con Buena Pinta elección. Ya he
Estoy usando la última versión de Pinta mencionado que
en Linux Mint 10. Siempre podremos Pinta es un clon
hacernos con la versión más reciente de Paint.net, no
añadiendo el repositorio del equipo de un porte. Esto se
desarrollo nocturno a nuestras fuentes debe a que no usa
de software en Linux Mint 10 o Ubuntu mucho código de
10.10. También puede que funcione con Paint.Net, a pesar
versiones anteriores de ambos, aunque de estar basada en
no lo he comprobado. Desde Launch- general en
pad, parece posible obtener los paque- Paint.Net y de
tes para Lucid (10.04) y también para estar diseñada
Maverick (10.10). para copiar la Figura 1: La interfaz de Pinta.
Para añadir el repositorio y obtener interfaz. Utiliza el
Pinta ejecutamos: mismo código, pero no todo. Ambos lo que estamos buscando y algunas fun-
programas se encuentran bajo la licen- cionalidades complicadas. ¿Puede ser la
sudo add-apt-repository ppa: U cia MIT X11, que es una licencia de simplicidad una ventaja? Sí, si no nece-
moonlight-team/pinta software libre no-recíproca. sitamos tantos pitos y flautas que no
sudo apt-get update Si observamos la Figura 1, podremos harían más que molestarnos.
sudo apt-get upgrade ver la interfaz de Pinta cuando se ini- Una de las funcionalidades más nove-
cia. He cargado una imagen de mi gata, dosas que nos ofrece es el Clone Stamp
Dependiendo del sistema que usemos, Lilah, sin efectos aplicados. (o sello de clon). La imagen que apa-
tendremos que descargar además unas Como puede apreciarse, Pinta sigue rece en la Figura 2 muestra un primer
cuantas librerías. Por ejemplo, si ejecu- una interfaz de aplicación más tradicio- plano de una vieja foto Polaroid de
tamos Kubuntu, podremos ejecutar nal que GIMP, con todas las barras de algunos miembros de mi familia. Parti-
Pinta, pero necesitaremos algunas libre- herramientas acopladas en una sola cularmente no me gustaba el sello en la
rías de Gnome o Mono. ventana. Si no deseamos este inicio, foto que indica que es de Crestwood
En caso de que no trabajemos con podemos desacoplar las paletas y tener- Bowl, así que cogí el Clone Stamp y
Ubuntu, tendremos la opción de coger las flotantes, al igual que estarían en copié parte del fondo de la imagen.
el tarball con el fuente o buscar el repo- GIMP o Photoshop. Después de unas cuantas pasadas,
sitorio del paquete de nuestra distribu- conseguí borrar el sello (Figura 3) y
ción favorita. Debo señalar que existen Viaje a Través de Pinta hacer que pareciera razonablemente
versiones disponibles de Pinta para Pinta tiene bastante que ofrecer, aparte bien fusionado con el fondo. Esto lo
Windows y Mac OS X. Si tenemos ami- de una interfaz de ventana única o de hice con un tamaño de pincel de 35
gos o familiares con Windows o Mac múltiples ventanas. Lo que este pro- (por defecto es 2). Si hubiera sido más
instalados y queremos que utilicen una grama nos ofrece y que GIMP o Photos- paciente y hubiera intentado combi-
aplicación FOSS en lugar de Photoshop hop no, es su facilidad para encontrar narlo mejor, habría conseguido que

Figura 2: Imagen antes de la clonación… Figura 3: … y después de la clonación.

60 Número 72 WWW.LINUX- MAGAZINE.ES


Pinta • LINUX USER

fuera más difícil de distinguir, y Pinta completa como el


me hubiese permitido hacerlo. La fun- conjunto de filtros
cionalidad Clone Stamp es relativa- de GIMP, sí pro-
mente nueva y aún presenta algunos porciona un aba-
fallos en la versión 5.0. En lo que se nico de opciones
refiere a rendimiento, Pinta parece estar que no está nada
a una altura similar a GIMP. Cuando se mal. Lo que aún
trabaja con algunas imágenes de no está muy bien
tamaño moderadamente grandes (más implementado son
de 10MB), tanto Pinta como GIMP tar- sus herramientas
dan en cargarlas. Pero cuando trabaja de selección. La
con Clone Stamp, Pinta se vuelve lento Varita Mágica, que
con imágenes grandes. nos facilitaría la
Otra funcionalidad que me gustaría selección de los
destacar es la historia visual. En la distintos elemen-
esquina inferior derecha de la Figura 3 tos en una ima- Figura 4: Estatua sin efectos aplicados.
podemos ver un cuadro conteniendo la gen, funciona muy
historia. Para ver cómo aparecería una mínimamente en
imagen si deshiciésemos o volviéramos Pinta, seleccio-
a realizar algunos pasos, podemos sal- nando sólo unos
tarnos algunos de los que hemos ejecu- cuantos pixels de
tado. Por ejemplo, pulsando sobre un un color similar.
paso, se muestra la imagen en ese En GIMP funciona
punto de la edición. La historia perma- de manera mucho
nece invariable hasta que hagamos algo más eficaz y más
diferente, de modo que si volvemos tres previsible. Esto
pasos y luego llevamos a cabo otra ope- mismo ocurre con
ración, comenzará a crear un nuevo el selector de
historial a partir de aquí. Lazo, que va bien
Para crear un efecto caleidoscópico en GIMP pero se
de una imagen, vamos a echar un vis- comporta un poco
tazo el efecto de Inversión Polar. Lo erráticamente en
seleccionamos desde el menú Efectos | Pinta. Figura 5: El efecto Reflect en acción.
Distorsiones. La Figura 4 es el original, En la mayoría de
y en la Figura 5 he aplicado este efecto. los casos, he podido utilizar Pinta para cuantos días fueron suficientes para lle-
Los ajustes de color, brillo, contraste, hacer retoques mínimos para limpiar varlo al borde del desastre. Además,
etc., los haremos desde el menú Ajus- fotos y para colgarlas en línea o guar- falla ocasionalmente – las funcionalida-
tes. A primera vista no hay mucha dife- darlas para la posteridad – mis necesi- des de Deshacer y algunos efectos no
rencia entre Pinta y GIMP. Ambos ofre- dades son bastante modestas, al igual tienen los resultados esperados.
cen aproximadamente el mismo con- que las de los usuarios a los que está Sin embargo, como cualquier aplica-
junto de opciones, pero la mayoría de destinado Pinta. Por tanto, si piensas ción que consigue llegar a su versión 5,
los de GIMP se encuentran bajo el hacer trabajo profesional, es muy posi- Pinta es extraordinariamente buena, y
menú Colores. Si abrimos ambos y los ble que sigas queriendo trabajar con está repleta de funcionalidades, de
comparamos conjuntamente, veremos GIMP. Para eliminar los ojos rojos, modo que no permitas que unos cuan-
que los diálogos de las opciones de recortar fotos o realizar pequeños reto- tos fallos te impidan probarla. Sospecho
GIMP son un poco más complejos. No ques, aconsejo echar un vistazo a que continuará madurando y posible-
excesivamente complejos, pero Pinta es Pinta, teniendo en cuenta sus limitacio- mente sustituya a GIMP en algunas dis-
definitivamente más amigable para los nes. tribuciones como el editor de fotos e
principiantes. imagen predeterminado. No es tan
Para convertir una imagen a blanco y Desventajas y Resumen compleja como GIMP, pero sí mucho
negro, GIMP exige que los usuarios A pesar de usar Pinta, he de reconocer más amigable para el usuario. Por
entiendan que la opción adecuada se que aún no está lo suficientemente pre- tanto, teniendo en cuenta que sigue
encuentra bajo el menú Modo, en Ima- parado como para ser el sustituto de bajo constante y activo desarrollo, pue-
gen. No puede decirse que sea exacta- GIMP. Ciertamente, es más simple y des contar con ella como nueva herra-
mente obvio. Con Pinta, sólo hemos de fácil de usar, pero carece de la estabili- mienta de edición. ■
ir hasta Ajustes y seleccionar luego dad de GIMP. Han pasado años desde la
Blanco y Negro. Simple ¿verdad? última vez que conseguí que GIMP se RECURSOS
Pinta tiene una relativamente buena colgara con mis simples demandas de
[1] Pinta: http://pinta-project.com/
colección de efectos, que sin ser tan retoque, pero en el caso de Pinta, unos

WWW.LINUX- MAGAZINE.ES Número 72 61


LINUX USER • Diaspora

Ponemos a prueba una alternativa a Facebook

Asuntos Privados
La declaración del fundador de Facebook Mark Zuckerberg acerca de difícil que los usuarios puedan mantener
sus datos bajo control.
que “La era de la privacidad ha terminado”, provocó una ola de indig- De hecho, los más críticos dicen que
las “configuraciones de privacidad” de
nación. En respuesta, cuatro estudiantes fundaron Diaspora en Nueva Facebook deberían llamarse en realidad
“configuraciones de publicidad”. Cual-
York. Seis meses más tarde, hacemos una revisión crítica a su red social
quier cambio en el sistema de privilegios
libre. POR MELA ECKENFELS establece automáticamente un intercam-
bio generoso de datos del usuario como
configuración de la cuenta predetermi-

L
Mela Eckenfels es autora y for- a película La red Social tuvo su nada. Incluso los usuarios de Facebook
madora freelance, y anteriormente estreno cinematográfico en Sep- que escriben sobre protección de datos
EL AUTOR

fue administradora de sistemas tiembre del pasado año. En ella, la en mayúsculas y valientemente se inten-
Unix. Es la coautora del Geek ex-novia del fundador de Facebook, tan abrir paso a través de la jungla de la
Cookbook (O’Reilly, en alemán) Mark Zuckerberg, le comentaba al res- configuración, a menudo no se dan
junto con Petra Hildebrandt, pecto de su súbito ascenso hasta la cima cuenta de que sus datos personales se
donde muestran lo mucho que del éxito: “Internet no está escrito a remiten a empresas que comercian con
tienen en común la cocina y la pro- lápiz, Mark, está escrito con tinta”. La perfiles personales a través de juegos
gramación.
web nunca olvida y Facebook hace muy populares tales como Farmville.

62 Número 72 WWW.LINUX- MAGAZINE.ES


Diaspora • LINUX USER

en la diáspora, en la Friend Key. Si la dirección de la semilla


semilla del usuario. de Alicia es, digamos, http://seed-alice.de
Este método evita la y Alicia transmite un Friend Key de 3345,
falta de control que la semilla de Bob puede alcanzar enton-
caracteriza a otras ces a Alicia en http://seed-alice.de/3345/.
redes sociales – o al Además, las semillas intercambian lla-
menos ese era el plan. ves públicas RSA en el primer contacto.
Cualquier comunicación subsiguiente
Figura 1: La versión del desarrollador advierte claramente a los Distribución entre las semillas siempre utilizará codi-
usuarios de que no publiquen datos privados. Equitativa ficación RSA. Diaspora está basado en
En vez de un servidor central (hub) al Ruby, Ruby on Rails y otros frameworks.
Camino de Datos a la que todos los usuarios necesitan contac- Las versiones actuales del programa
Diaspora tar, un mundo Diaspora ideal sólo utili- almacenan la información en una base
Los problemas relativos a la protección zaría una semilla por host (también de datos Mongo [2], aunque para el
de datos con las redes sociales pueden conocido como un pod – o vaina). Los futuro los desarrolladores están pen-
parecer bastante inocuos, y sobre todo desarrolladores aspiran a ejecutar las sando en un sistema de nube cifrado en
porque nadie fuerza a los usuarios (aún) semillas de Diaspora en cualquier tipo de la forma en que lo hace Tahoe Least
a publicar fotos comprometedoras o a dispositivo, lo que significa que los Authority File System [3].
hablar públicamente sobre sus relacio- smartphones o tablets también pueden La versión de prueba actual de Dias-
nes personales. Sin embargo, la cuestión actuar como pods. La semilla en sí es un pora, que podemos descargar del reposi-
es si un usuario de Internet actual real- servidor web al que un usuario (al que torio Git, ofrece funcionalidades básicas,
mente tiene que soportar los inconve- vamos a llamar Bob) puede acceder con como la capacidad para intercambiar
nientes existentes de las redes sociales su navegador web favorito. Cuando Bob mensajes entre semillas. También se
sólo por intercambiar un par de palabras se conecta, ve su muro, que se presenta encuentran disponibles las APIs para su
con amigos y familia. al estilo del de Facebook, junto con men- conexión a Facebook y Twitter que per-
Si Daniel Grippi, Maxwell Salzberg, sajes o fotos de sus amigos. miten a los usuarios de Diaspora publi-
Illa Zhitomirskiy y Raphael Sofaer consi- Si Alicia envía a Bob una foto de sus car sus mensajes directamente en esas
guen sus objetivos, los usuarios no ten- recientes vacaciones en la nieve, el men- redes. Además, se están llevando a cabo
drán que preocuparse más por este pro- saje viaja directamente de la semilla de los experimentos iniciales con Webfinger
blema. En Febrero de 2010, los cuatro Alicia a la de Bob. Actualmente, este pro- [4], si bien la función tiene bastantes
estudiantes del Courant Institute of ceso está basado en un mecanismo fallos en estos momentos.
Mathematical Sciences de la Universidad denominado “push” (“empujar”): la fun- Los desarrolladores dicen que manten-
de Nueva York asistieron a una conferen- cionalidad complementaria “pull” drán Diaspora lo más agnóstico que les
cia del profesor de Derecho Eben (“tirar”) no ha sido implementada aún. sea posible en lo que se refiere a conte-
Moglen, en la que hizo una crítica a las Bob puede comentar entonces las fotos nido. En otras palabras, el sistema será
redes centralizadas describiéndolas del viaje de Alicia y empujarlas a la capaz de almacenar y transmitir cual-
como “centralizadas con fines de espio- semilla de Alicia. La semilla empuja el quier formato de archivo. Evidente-
naje”. Como consecuencia, los cuatro comentario a las semillas de otros ami- mente, este método implica que tendrán
idearon un servidor web de código gos que también han recibido la foto por que existir módulos o plugins para ayu-
abierto con capacidades de alojamiento ser miembros del mismo grupo que Bob. dar al servidor de Diaspora a reproducir
de una red social como alternativa a El método peer-to-peer de Diaspora se contenido exótico, cómo vídeos y audio,
Facebook – había nacido Diaspora [1]. diferencia del concepto de la red social aunque dichos módulos no se introduci-
A finales de Abril, el grupo presentó el actual y es más una reminiscencia de la rán en la hoja de ruta hasta más tarde.
proyecto en la plataforma de recauda- organización descentralizada de la Blo-
ción de fondos Kickstarter y anunció que gosfera, la cual une multitud de blogs ¿Seguridad?
comenzarían a trabajar tan pronto como individuales con comentarios, track- Algunos proveedores públicos de semi-
consiguieran 10,000 dólares – que logra- backs y pingbacks. Sin embargo, Dias- llas ya ofrecen a los usuarios la opción
ron recaudar en 12 días. Habían conse- pora lleva las cosas un paso más allá: de probar Diaspora sin tener que pelear
guido más de 200,000 antes de que cada semilla es otra instancia de la con lo que actualmente es un procedi-
hubieran escrito una sola línea de misma aplicación que tiene una base de miento de instalación bastante engo-
código. Entre sus donantes se encon- comunicaciones estandarizada. rroso. Pero dichos proveedores están de
traba el propio fundador de Facebook, hecho en conflicto con el método des-
Mark Zuckerberg, quien comentó que La Tripas de Diaspora centralizado de Diaspora, porque en este
Diaspora era una “idea guay”. Los pods utilizan HTTP para intercam- escenario, los usuarios tienen que con-
Pronto encontraron un nombre para el biar datos. Si Bob añade a Alicia a su fiarle nuevamente los datos a una tercera
proyecto. La idea tras él: En lugar de semilla como un amigo, la semilla de parte, aunque ésta disfrute de una repu-
enviar datos de usuarios a un servidor Bob no sólo recuerda la dirección de red tación algo mejor que la de Facebook.
centralizado, como fotos o actualizacio- en la que está localizada la de Alicia, Además, en este escenario se compro-
nes de estado, el sistema deja los datos sino que también guarda una única mete la seguridad en el tránsito de datos

WWW.LINUX- MAGAZINE.ES Número 72 63


LINUX USER • Diaspora

borrado por otro, consti- usuarios, a pesar de que el upload de la


tuiría a su vez una viola- imagen funciona (véase la Figura 2).
ción de privacidad, esta Aunque Firefox en MacOS X soporta
vez del destinatario. Es arrastrar y soltar las imágenes, el nave-
decir, que tus posts gador de Mozilla en un sistema Ubuntu
siguen escritos en tinta y actual insistió en que pulsara Upload a
parece ser que la única photo para hacer exactamente lo mismo.
solución que tiene Bob En este caso, y después de postear
es simplemente no escri- mensajes, tuve que recargar la página en
bir mensajes no destina- el navegador de la máquina de mi labo-
dos al ojo público. ratorio para refrescar la presentación.
En estos momentos Después de añadir un par de amigos (lo
Figura 2: Aunque podemos cargar fotos en la sección de imá- no puedo decir nada cual funciona de manera intermitente),
genes, no podemos seleccionar una imagen como nuestra foto de más acerca de la seguri- Diaspora me dio un muro con bastante
perfil. dad de la aplicación, buena apariencia (Figura 3).
aparte del hecho de que
porque – tengamos o no RSA – las comu- (a día de hoy) no existe. Poco después Conclusiones
nicaciones sólo están cifradas entre pods del lanzamiento de la versión de prueba A causa de su descentralizada adminis-
y no entre navegadores. Diaspora de inicial, muchos de los testers sospecha- tración y cifrado entre semillas, Diaspora
hecho sólo tiene sentido si la semilla se ron que el código estaba poblado de una supone una buena opción para proteger
ejecuta en la misma máquina y se puede horda de fallos y una generosa dosis de la privacidad de los usuarios, además de
acceder a ella, pero no si los usuarios scripting multi-sitio. soportar informes no censurados. Los
están dispersos en última instancia entre bloques de datos, las cuales sólo pueden
200 Facebooks en miniatura. Práctico o Poco Realista distinguirse del tráfico web normal
En realidad, todo lo que se refiere al Si no nos importa instalar desde el repo- mediante la inspección profunda de
control total sobre nuestros datos es una sitorio Git, podemos configurar fácil- paquetes, serán bastante difíciles de blo-
bonita ilusión, pero totalmente carente mente una instancia de Diaspora en quear, a diferencia de lo que ocurrió,
de base en la realidad. Bob sólo necesita nuestro propio servidor. Una guía de ins- digamos, con Twitter o Facebook durante
acceder a su propia semilla para escribir talación útil [5] ayuda a los usuarios a las protestas en Irán y Egipto.
mensajes y publicar fotos, pero todos sus través de la configuración y puesta en Pero actualmente, Diaspora no es más
mensajes serán enviados a las semillas marcha del software. que un sistema de blogging y microblog-
de sus amigos, los cuales los almacena- Como los desarrolladores están conti- ging que comparte mensajes e imágenes
rán a su vez. nuamente trabajando en el código, es pro- con amigos y agrega cuentas de otras
No sé cómo Diaspora pretende asegurar bable que encontremos que una funciona- redes sociales. Una prueba de la versión
que el contenido que sea revocado desde lidad que funcionó ayer no nos vaya hoy. del desarrollador muestra que el soft-
la semilla origen, se revoque en las semi- Esto fue lo que ocurrió con la máquina de ware probablemente no estará listo para
llas destino con absoluta certeza. Además mi laboratorio, la cual, inicialmente, me su uso en producción hasta dentro un
se produce el dilema de que, permitir que dio la opción de interconectarme con par de meses al menos.
un programa acceda a tu semilla en un Facebook y Twitter como servicios exter- Dicho esto, los usuarios preocupados
dispositivo para eliminar un mensaje nos, pero un par de días después se negó a por la seguridad harían bien en seguir el
hacerlo cuando ins- progreso de Diaspora. Una vez hayan
talé la siguiente ver- solucionado los problemas iniciales, esta
sión de Diaspora. Lo red social se convertiría en una pujante y
único que funcionó seria alternativa a Facebook. No puedo
eficazmente fue el asegurar que acabe matando a Facebook
acceso al pod basado – pero al menos no hay planes para inte-
en el navegador, la grar Farmville. ■
creación de nuevas
cuentas (Figura 1) y RECURSOS
su configuración.
[1] Diaspora: http://www.joindiaspora.
Cuando intenté com
enviar invitaciones
[2] MongoDB: http://www.mongodb.org
vía email, en algunos
[3] Tahoe LAFS: http://tahoe-lafs.org
casos el sistema me
devolvió enlaces [4] Webfinger: http://code.google.com/p/
rotos. webfinger
Figura 3: Una vez hemos añadido un contacto a nuestra lista de Diaspora también [5] Guía de instalación de Diaspora:
amigos, podemos compartir mensajes y fotos. El problema de los se niega a mostrar https://github.com/diaspora/diaspora/
avatares estropea la vista. fotos de perfiles de wiki/Installing-and-Running-Diaspora

64 Número 72 WWW.LINUX- MAGAZINE.ES


Workspace: Piwigo • LINUX USER

mos una máquina que tenga instalados y


configurados estos componentes.
De manera alternativa, es posible mon-
tar el paquete XAMPP [2], que incluye
Apache, PHP y MySQL – todo preconfigu-
rado y listo para funcionar.

Instalando Piwigo y
Añadiendo Fotos
Antes de continuar con la instalación
debemos crear una base de datos MySQL
para usarla con Piwigo. Una vez lo haya-
mos hecho, cogemos el script instalador
piwigo-netinstall.php del sitio web del
proyecto y lo copiamos en el documento
raíz de nuestro servidor. Luego, apunta-
mos nuestro navegador al script instala-
dor (por ejemplo, http://127.0.0.1/
piwigo-netinstall.php) para comenzar el
procedimiento de instalación (Figura 1).
Ahora seleccionamos la lengua que dese-
amos, especificamos el directorio para la
Nuestras fotos, a nuestra manera: Alojamos fotos con Piwigo instalación de Piwigo y pulsamos el
botón Cargar y descomprimir Piwigo. Una

Momento
vez que el script de instalación ha bus-
cado la última versión del software, pul-
samos el botón Instalar Piwigo, propor-
cionamos los datos de la conexión a la

Fotográfico
base de datos requerida y la información
de la cuenta del administrador, y pulsa-
mos Empezar la instalación.
Lo primero que haremos una vez que
nuestra galería esté cargada y ejecután-
dose es rellenarla con fotos, y Piwigo nos
ofrece una manera muy conveniente de

H
Vemos cómo controlar nuestros oy día, los servicios para com- hacerlo. Pulsamos el enlace Quiero subir
partir fotos se encuentran a fotos para saltar a la interfaz de carga de
contenidos, alojando una galería patadas y son muy baratos, pero fotos (Figura 2). En la sección Pegar en
aún existen numerosas razones para alo- álbum, introducimos el nombre para el
de fotos personal y publicándola jar nosotros mismos nuestra propia gale- nuevo álbum en el campo Nombre del
ría de fotos. Mediante la publicación de álbum, luego pulsamos el botón Browse y
en nuestro propio servidor con
fotos en nuestro servidor podemos con- seleccionamos las fotos que queremos
Piwigo. POR DMITRI POPOV servar todo el control de nuestro conte- añadir. Para cargar en la categoría especi-
nido, ajustar el software fotográfico a ficada en Piwigo pulsamos el botón
nuestro gusto y sin tener que pagar nin- Subir.
gún extra adicional por funcionalidades Si por casualidad usamos digiKam
especiales. como nuestra aplicación de escritorio de
Evidentemente, para publicar y admi- administración de fotos preferida, pode-
nistrar fotos en nuestro propio servidor mos usar el plugin de exportación Kipi de
necesitamos software que pueda manipu- Piwigo para cargar las fotos directamente
Dmitri Popov es licenciado en lar el trabajo. Y no nos equivocaremos si desde digiKam a Piwigo (Figura 3). Antes
Lengua Rusa y en lenguajes de elegimos el software de galería de fotos de poder cargar las fotos en Piwigo, ten-
EL AUTOR

computación. Ha estado escribi- Piwigo [1]. dremos que crear al menos una categoría.
endo sobre Linux y software de Esta aplicación, diseñada para compar- Para hacerlo, nos registramos en el pro-
código abierto durante años, y sus tir fotos, ofrece un extenso abanico de grama como administrador, vamos hasta
artículos han aparecido en revistas funcionalidades, siendo sumamente fácil Administración | Albums | Administrar y
y sitios web daneses, británicos, de usar y administrar. creamos una nueva categoría. Luego,
norteamericanos, alemanes y Piwigo se ejecuta en la pila Apache/ cambiamos a digiKam, seleccionamos las
rusos. PHP/MySQL, de modo que necesitare- fotos que deseamos subir y elegimos

WWW.LINUX- MAGAZINE.ES Número 72 65


LINUX USER • Workspace: Piwigo

Exportar | Exportar Piwigo se denomina versión de alta defi-


a Piwigo. Tras espe- nición. Este método ayuda a Piwigo a
cificar las configura- renderizar fotos más rápidamente mien-
ciones de las cone- tras permite a los usuarios ver versiones
xiones que se nos de alta resolución de las fotos. A pesar de
solicitan y pulsar que nada nos impide subir las fotos en su
Aceptar, podemos tamaño original, el método de baja/alta
cargar las fotos resolución es más lógico. Para configurar
seleccionadas pul- pLoader con este fin, pulsamos el botón
sando el botón Aña- Preferencias y cambiamos a la sección
dir fotos selecciona- Tamaño foto. A continuación selecciona-
das. mos el elemento Usar original redimen-
¿No quieres usar sionado de la lista desplegable Tamaño
digiKam? Podemos web y especificamos las dimensiones
usar la utilidad pLo- deseadas y calidad de la imagen bajo
ader [3] para trans- Opciones. Seguidamente elegimos el ele-
ferir las fotos desde mento Sí, usar copia de foto original de la
Figura 1: El script NetInstall hace que la instalación de Piwigo sea nuestra máquina a lista desplegable Alta definición. Pulsa-
tremendamente fácil. Piwigo. De hecho, mos Cerrar para guardar las configuracio-
pLoader posee unas nes y cerramos la ventana.
cuantas funcionali-
dades prácticas que Configuración de Piwigo
hacen que sea la Nuestra galería Piwigo está casi lista,
mejor herramienta pero antes de mostrarla deberemos ajus-
para mover fotos tar unas cuantas configuraciones. Para
desde nuestra empezar, nos registramos en la aplicación
máquina a Piwigo. como administrador y cambiamos a la
Por ejemplo, pode- interfaz de administración pulsando el
mos configurarla enlace Administrar en la sección de
para añadir pies de Usuario. Aquí podemos modificar las
fotos a las que que- configuraciones para las cuentas de usua-
remos subir, para rios existentes. Por ejemplo, si subimos
autorotar, cambiar fotos a Piwigo sin modificarles el
el tamaño e incluso tamaño, especificaríamos las configura-
incrustarles marcas ciones de las dimensiones máximas de
de agua. Para confi- presentación. De no hacerlo, Piwigo mos-
Figura 2: Piwigo cuenta con su propio cargador de fotos basado en gurar estas funcio- trará las fotos en sus tamaños originales,
web. nalidades pulsamos lo cual puede ser problemático cuando se
el botón Preferen- trate de imágenes de gran tamaño.
cias de la barra de Para especificar las dimensiones máxi-
herramientas princi- mas de presentación para la cuenta de un
pal y ajustamos las usuario específico, seleccionamos la
configuraciones en cuenta, bajamos hasta Preferencias, intro-
las secciones ade- ducimos los valores deseados en los cam-
cuadas (Figura 4). pos Ancho máximo de las fotos y Altura
Cuando utiliza- máxima de las fotos (800x600 va bien en
mos pLoader para la mayoría de los casos) y pulsamos el
subir fotos, dispone- botón Validar. Para aplicar las configura-
mos de una opción ciones especificadas a todas las cuentas
para cargar dos ver- de usuario existentes de una sola vez,
siones de cada foto: seleccionamos la opción todo antes de
una versión cuyo pulsar Validar. Ya que estamos en ello,
tamaño ha sido podemos configurar el número de imáge-
modificado que nes por fila y el número de filas por
Piwigo usa como página, cambiar las configuraciones de
previsualización y privacidad así como el estado de los
una versión a alta usuarios. También podemos añadir nue-
Figura 3: Es posible cargar fotos directamente desde digiKam a resolución unida a vos usuarios además de borrar los que
Piwigo. ella – y que en existen.

66 Número 72 WWW.LINUX- MAGAZINE.ES


Workspace: Piwigo • LINUX USER

Piwigo ofrece un potente sistema de dad del lote y pulsar


privilegios de usuario, donde a cada Aplicar la acción.
usuario se le asigna un estado (o “esta- Esto aplica las eti-
tuto” en la jerga de Piwigo) específico y quetas especificadas
cada estado tiene un conjunto de dere- a todas las fotos en
chos de acceso predeterminado. Por la categoría. Eviden-
ejemplo, el estatuto Webmaster garantiza temente, es posible
al usuario acceso total a todas las funcio- que sólo queramos
nalidades de Piwigo, mientras que el etiquetar ciertas
estatuto Invitado sólo da acceso limitado fotos en la catego-
al sistema (Figura 5). Además, podemos ría. Para hacerlo,
especificar un nivel de privacidad para marcamos las que
cada usuario, pudiendo seleccionar entre queremos etiquetar,
los niveles Contactos, Amigos, Familia y añadimos las eti-
Admins. Luego, nos permite establecer quetas y selecciona-
un nivel de privacidad para cada foto, de mos la opción selec- Figura 4: pLoader es una herramienta independiente que sirve para
modo que pueda ser vista sólo por usua- ción. En la sección cargar fotos desde nuestra máquina a Piwigo.
rios que poseen el nivel de privacidad Acción también
adecuado. podemos realizar
En lugar de configurar privilegios de otras acciones por
acceso para cada foto individual, es posi- lotes, como asignar
ble configurar grupos para dar acceso a un autor a nuestras
los usuarios a determinadas categorías fotos o establecer el
específicas. Por ejemplo, pongamos que nivel de privacidad
queremos crear un grupo llamado Ami- deseado.
gos de las flores y permitir a sus miem- Finalmente, en la
bros acceso a las categorías privadas sección
Pétalos de flores y Estambres. Para Configuración |
comenzar, necesitamos crear estas cate- Opciones establece-
gorías en la sección Albums | Adminis- remos las configura-
trar. Una vez creadas, establecemos el ciones generales de
tipo de acceso a privacidad. Para hacerlo Piwigo. Bajo la pes-
pulsamos el icono Editar junto a la cate- taña Principal
goría, seleccionamos la opción privaci- podremos sustituir
dad en la sección Opciones y pulsamos el nombre por
Validar. A continuación vamos hasta la defecto de la galería
sección Usuarios | Grupos, creamos el y darle un título
grupo Amigos de la flores, pulsamos el propio, poner o qui- Figura 5: Administración de cuentas de usuario en Piwigo.
icono Permisos y añadimos las categorías tar la funcionalidad
privadas creadas a la lista Autorizados. de clasificación y
Por último, cambiamos a la sección habilitar el registro
Usuarios | Administrar, seleccionamos de usuarios. En la
los usuarios que deseamos añadir al subsección Mostrar
grupo, elegimos el grupo de la lista des- habilitaremos o des-
plegable asociar con grupo y pulsamos habilitaremos las
Validar. presentaciones indi-
Como cualquier aplicación de compar- viduales y las fun-
tición de fotos que merece la pena, cionalidades de bús-
Piwigo soporta etiquetado de imágenes – queda. Aquí especi-
siempre y cuando deseemos etiquetarlas. ficaremos las fun-
Para hacerlo, podemos ir hasta la sección cionalidades a las
Albums | Administrar y pulsar el icono que pueden tener
Administrar fotos del álbum al lado de la acceso los usuarios
categoría que contiene las fotos que que- en la página princi-
remos etiquetar. Ahora podemos despla- pal y qué propieda-
zarnos hacia abajo a la sección Acción des se presentarán
(Figura 6), seleccionar Añadir Etiquetas, para cada foto indi-
introducir nuestras etiquetas en el campo vidual. Para admi-
de texto, seleccionar la opción La totali- nistrar los comenta- Figura 6: Etiquetado de fotos.

WWW.LINUX- MAGAZINE.ES Número 72 67


LINUX USER • Workspace: Piwigo

de navegación que enlace Instalar junto a él. A continuación


se encuentran a la pulsamos la pestaña Lista plugins, pul-
izquierda (Figura sando nuevamente el enlace Instalar que
7). La sección Espe- se encuentra al lado del plugin. Por
ciales, por ejemplo, último, pulsamos el enlace activar para
contiene comandos habilitarlo.
que nos permiten De manera alternativa, es posible insta-
ver fotos marcadas lar plugins manualmente cogiendo el plu-
como favoritas, las gin específico que deseamos del reposito-
mejor valoradas y rio de plugins y desempaquetándolo en el
las imágenes más directorio plugins dentro de nuestra ins-
vistas, aparte de las talación de Piwigo. Para instalarlo y acti-
añadidas más varlo lo haremos en la sección Plugins |
recientemente. La Administrar.
sección Menú posee Los plugins que deseemos instalar
comandos que nos dependerán, evidentemente, de nuestras
Figura 7: Piwigo en toda su belleza. permiten encontrar necesidades específicas, pero existen al
fotos con una eti- menos dos módulos que pueden resultar-
queta específica nos prácticos: RV Akismet [5] y AStat [6].
rápidamente y llevar RV Akismet nos permite utilizar el exce-
a cabo búsquedas lente servicio Akismet para manejar
avanzadas. comentarios de spam en nuestra instala-
En la esquina ción de Piwigo. Para habilitar el plugin,
superior derecha de necesitamos obtener y añadir una clave
la interfaz existen gratuita para el API de Akismet. Con el
una serie de iconos plugin AStat podremos recopilar y anali-
con los que pode- zar estadísticas de Piwigo, incluyendo el
mos cambiar entre número de vistas para categorías indivi-
los diferentes duales y fotos, además de las direcciones
modos de visualiza- IPs de los visitantes (Figura 8).
ción. Por ejemplo,
es posible cambiar a Conclusión
la vista Calendario, Si nos decantamos por alojar nosotros
que agrupa y mues- mismos una solución para compartir
Figura 8: AStat nos permite reunir y analizar estadísticas de Piwigo. tra las fotos según fotos, acertaremos de lleno eligiendo
sus fechas de crea- Piwigo. Esta aplicación alcanza un equili-
rios de las fotos de manera más eficiente ción y carga. Cuando visionamos una brio perfecto entre funcionalidad y facili-
y para combatir los spams, es buena idea foto, podemos valorarla y añadirle dad de uso, permitiendo la configuración
establecer las configuraciones de comen- comentarios, además de marcarla como de plugins para ampliar sus funcionalida-
tarios disponibles bajo la pestaña Comen- favorita y examinar sus metadatos. Como des predeterminadas. Además, Piwigo
tarios. Por ejemplo, podemos evitar que la interfaz de Piwigo no está sobrecar- nos ofrece distintas maneras de cargar
se muestren comentarios sin moderar gada con funcionalidades, nos permite fotos, soportando un flexible sistema de
marcando la casilla de confirmación Vali- explorar las fotos tranquilamente. control de privilegios. En definitiva, tiene
dación, siendo posible configurar opcio- todo lo que necesitamos para alojar fotos
nes de notificación de comentarios de Ampliación de Piwigo en nuestro propio servidor. ■
manera que tanto nosotros como otros Las funcionalidades por defecto de
administradores podamos mantenernos Piwigo pueden ampliarse mediante el RECURSOS
al corriente de las actividades relaciona- uso de plugins, cuyo repositorio oficial
[1] Piwigo: http://piwigo.org
das con los comentarios. Bajo la pestaña [4] nos ofrece una buena variedad de
[2] XAMPP: http://www.apachefriends.
Parámetros Invitados podemos especifi- módulos entre los que elegir. La instala-
org
car las preferencias de la cuenta del invi- ción de plugins en Piwigo puede llevarse
[3] pLoader: http://piwigo.org/ext/
tado. a cabo de dos maneras: manualmente o
extension_view.php?eid=269
bien a través de su interfaz de Adminis-
Uso de Piwigo tración. Si optamos por esta segunda vía, [4] Repositorio de plugins de Piwigo:
http://piwigo.org/ext/
Piwigo viene con una interfaz bastante visitamos la sección Plugins |Adminis-
intuitiva muy fácil de usar. Su página de trar y pulsamos la pestaña Otros plugins [5] Plugin RV Akismet: http://piwigo.org/
inicio ofrece una lista de todas las catego- disponibles para ver una lista de todos ext/extension_view.php?eid=192
rías, siendo posible acceder a todos los los plugins de Piwigo disponibles. Busca- [6] Plugin AStat: http://piwigo.org/ext/
comandos disponibles en las secciones mos el que queremos y pulsamos el extension_view.php?eid=172

68 Número 72 WWW.LINUX- MAGAZINE.ES


Synapse • LINUX USER

Haz más con el lanzador Synapse

Acábalo
Linux va de hacer que todo se haga mas rápida, eficiente y fácilmente. Si buscas acelerar tu trabajo en el

escritorio, echa un vistazo a Synapse – un lanzador similar a Gnome Do, pero con algunas importantes mejo-

ras. POR JOE “ZONKER” BROCKMEIER

M
i escritorio preferido es ahorra tiempo cuando necesitamos eje-
Gnome, porque en la práctica cutar un elevado número de acciones en
lo encuentro muy útil. Sin el escritorio.
embargo, carece de un lanzador por En vez de tener que buscar un pro-
defecto. ¿Que qué es un lanzador? Un grama a través del menú Applications o
lanzador es una aplicación que nos per- de llamar a una ventana de Nautilus
mite arrancar programas o realizar otras para encontrar un fichero, podemos
acciones con unas cuantas pulsaciones encontrar un elemento con unas cuan-
de teclado. tas pulsaciones de teclado. Si te ocurre
Una de los primeros lanzadores más como a mí, que dependes del teclado,
populares fue Quicksilver de Mac OS X un lanzador puede ser tu salvavidas.
[1], en el cual está inspirado Gnome Do
Joe “Zonker” Brockmeier es ¿Por qué Synapse?
[2]. La idea es que el lanzador puede
periodista tecnológico freelance,
ser llamado con un atajo de teclado La idea de un lanzador suena bien – es
editor, creador de comunidades y
desde cualquier aplicación. En el caso probable que ya uses uno de ellos –
EL AUTOR

defensor del software libre. Fue


Community Manager de Open- de Gnome Do y Synapse podemos usar pero ¿por qué utilizar Synapse [3]? Un
SUSE desde el 2008 hasta el 2010. [Ctrl]+[Espacio]. A partir de este problema es el desarrollo actual. El de
Ahora escribe para Linux Maga- momento será posible iniciar aplicacio- Gnome Do se ha desacelerado. Su
zine y otras publicaciones tec- nes, buscar en el diccionario, buscar equipo de desarrollo se ha mantenido
nológicas. Puedes encontrarlo en ficheros y llevar a cabo otras acciones – callado durante el pasado año. Justo
http://www.dissociatedpress.net y de las nos ocuparemos más adelante. Lo cuando escribía este artículo, publica-
en Twitter e Identi.ca como jzb. más importante es que el lanzador nos ron su primera actualización desde

WWW.LINUX- MAGAZINE.ES Número 72 69


LINUX USER • Synapse

Diciembre de 2009. Gnome Do parece


continuar, pero su calendario de actuali-
zaciones es un poco preocupante.
Aparte de esto, Synapse cuenta con
una funcionalidad de la que carece Do:
la integración Zeitgeist. Si no estás
familiarizado con esta tecnología, va
siendo hora de que le eches un vistazo
[4]. Figura 1: Ventana principal de Synapse.
Zeitgeist mantiene un registro de
ficheros que hemos abierto, sitios web importantes. Está bajo desarrollo activo, de datos de Emacs, cogerá Emacs si no
visitados, música reproducida, etc. Por siendo posible que sus paquetes princi- lo tenemos instalado aún.
ejemplo, si hace unos minutos abrimos pales aparezcan en la próxima versión Aconsejo la búsqueda por las fuentes
una imagen y deseamos volverla a ver, de Ubuntu (11.04), aunque los paquetes de datos de Zeitgeist e instalar única-
podemos abrir Synapse y desplazarnos ya se encuentran disponibles en un mente las más apropiadas.
hacia abajo – nuestra actividad habrá Archivo de Paquetes Personales (PPA)
quedado registrada. Y, naturalmente, si para Maverick Meerkat (10.10). El Uso y Personalización de
deseamos ejecutar un programa o llevar código fuente, evidentemente, también Synapse
a acabo un conjunto de acciones, tales está disponible. Synapse se encuentra En este momento podemos comenzar a
como salirnos de Gnome o cerrar el sis- bajo la versión 3 de la GPL. usar Synapse. Para ejecutar el programa
tema, Synapse también nos ayudará con Para extraer Synapse de Launchpad y desde el menú de Aplicaciones vamos a
esto. llevarlo hasta nuestro sistema, necesi- Aplicaciones | Accesorios y lo iniciamos.
El problema es que el programa tiene tamos añadir dos PPAs: el PPA de También podemos utilizar la herra-
que poder comunicarse con Zeitgeist Synapse y el PPA de Markus Korn. Este mienta Gnome Ejecutar Aplicación
para hacer uso de las funcionalidades último también nos permite coger el (Alt+F2) y ejecutar synapse.
de Synapse relativas a los registros de paquete de fuentes de Datos de Zeit- Veremos una ventana como la que
datos. Si estamos usando aplicaciones geist, de modo que, junto con Synapse, aparece en la Figura 1. Se trata de un
Gnome que ya hablan con el demonio también podemos disfrutar de Zeit- simple cuadro de texto con algunas eti-
de Zeitgeist, tendremos todo preparado. geist. quetas para el tipo de datos a los que
Aplicaciones como Evince, Rhythmbox, podemos acceder desde Synapse. Pul-
Totem y Evolution estarán listas para sudo apt-repository ppa: U sando el ratón sobre las etiquetas no
ser utilizadas. Otras, como Firefox, no thekorn/ppa ocurre nada – todo debe hacerse desde
estarán relacionadas automáticamente – sudo apt-add-repository ppa: U el teclado. La única excepción es la
pero eso lo podemos arreglar, y te mos- synapse-core/ppa configuración de las preferencias, pero
traré cómo un poco más adelante. sudo apt-get update nos ocuparemos de esto un poco más
sudo apt-get install synapse adelante.
Comenzamos con Synapse Introducimos el nombre de un
Hasta donde yo sé, Synapse no se distri- Estos comandos recogerán los PPAs comando que nos gustaría ejecutar o el
buye con ninguna de las distros más para las fuentes de datos de Synapse y nombre del fichero que deseamos
Zeitgeist – aunque encontrar, y Synapse comenzará a auto-
nótese que no especi- completar los ficheros y aplicaciones
fica ninguna de ellas. que conoce. Sin embargo, no ofrecerá
Esto se debe a que utilidades de la consola o apps, de
puede que no necesite- modo que introduciendo ls no nos mos-
mos todas las que se trará un enlace a ls. Pero, si comenza-
encuentran disponi- mos escribiendo vim, nos ofrecerá gVim
bles. si se encuentra instalado. Si no encuen-
Por ejemplo, los tra nada que coincida en documentos o
conectores los ofrecen aplicaciones, nos remitirá amablemente
Vim y Emacs, y la a buscar la cadena de texto en el diccio-
mayoría de los usua- nario.
rios no necesitarán ni Podemos navegar entre tipos de docu-
querrán ambos. Ade- mentos usando las teclas de flecha. La
más, puede observarse tecla de la flecha hacia abajo nos des-
que esas fuentes de plaza a través del historial de Zeitgeist.
datos también depen- Las flechas derecha e izquierda permi-
den de los paquetes ten que nos movamos a través de los
principales, por tanto, tipos de documentos, luego podemos
Figura 2: Configuración de los plugins de Synapse. si cogemos las fuentes pulsar [Enter] para seleccionar.

70 Número 72 WWW.LINUX- MAGAZINE.ES


Synapse • LINUX USER

Figura 3: Preferencias generales de Synapse. Figura 4: Desconexión del plugin Gnome Session.

¿Parece sencillo? Eso es porque lo es. ¿Deseamos cambiar el tema? Synapse dir multitud de funcionalidades.
Synapse no es una aplicación especial- nos ofrece cuatro temas por defecto. Synapse parece totalmente estable, aun-
mente compleja. Sólo es muy útil. Son bastante similares, pero si quere- que se podrían incorporar algunas fun-
mos hacer pruebas con ellos, podemos cionalidades adicionales para llegar al
Configuraciones ver las opciones en la pestaña General. nivel de otras aplicaciones – o incluso ir
Si deseamos someter a Synapse a nues- Los temas se encuentran en la parte más allá.
tra voluntad, es decir, realizar cambios derecha, en el menú desplegable, tal y Por ejemplo, me gustaría ver a
a su apariencia o configuración, pode- como muestra la Figura 3. Synapse relacionarse con APT y Yum/
mos pulsar el pequeño punto que se Yo dejo conectados la mayoría de los Zypper de modo que los usuarios pudie-
encuentra en la parte derecha de su plugins, excepto el de Gnome Session. ran buscar paquetes fácilmente desde
ventana. Aquí veremos un menú de No deseo apagar accidentalmente un Synapse si no se encuentran ya instala-
contexto con la opción Preferencias. Si sistema o cerrar la sesión desde dos. Las forjas de Linux Mint lo han
vamos hasta ella y pulsamos la pestaña Synapse, de modo que lo deshabilito, hecho con su menú en Linux Mint 10,
Complementos, veremos una ventana como podemos ver en la Figura 4. permitiéndonos buscar paquetes y
como la de la Figura 2, donde podremos En la Figura 5 puede verse a Synapse comenzar una instalación directamente
conectar o desconectar los plugins que en acción. En ella se muestran algunos desde el Menú de Mint.
añaden funcionalidades a Synapse. documentos que se encuentran disponi- Además, me encantaría tener alguna
Algunos de dichos plugins no estarán bles en el historial de Zeitgeist. Como manera de personalizar las aplicaciones
disponibles si no tenemos instalada la he mencionado, Synapse es muy fácil que se usan para manipular mis cosas.
aplicación. Por ejemplo, Banshee estará de usar y puede resultar bastante útil Es fantástico que Synapse sepa qué
deshabilitado a menos que lo tengamos después de que hayamos creado un his- ficheros he editado con Vim, pero me
instalado. torial de acciones en Zeitgeist. gustaría que luego iniciase Vim cuando
abro el mismo fichero de nuevo en vez
Resumen de abrirlo con gedit.
Synapse se ha Aparte de estas limitaciones, pienso
convertido en una que Synapse es casi perfecto. Por tanto,
de mis aplicacio- si eres usuario de Gnome y deseas que
nes favoritas. Dis- tu escritorio sea más eficiente, te sugiero
fruto con todas las que te hagas con Synapse hoy mismo. ■
que se controlan a
través del teclado, RECURSOS
pues me permiten
[1] Quicksilver: http://en.wikipedia.org/
evitar el uso del wiki/Quicksilver_(software)
ratón. Como este
[2] Gnome Do: http://do.davebsd.com/
software se
encuentra aún en [3] Synapse: https://launchpad.net/
synapse-project
una versión ini-
Figura 5: Seleccionando documentos desde Synapse. cial, nos deja aña- [4] Zeitgeist: http://zeitgeist-project.com/

WWW.LINUX- MAGAZINE.ES Número 72 71


LINUX USER • Línea de Comandos: Usuarios

Administración de usuarios

Amigos para Siempre


Administrar usuarios a través de

L
os recursos para la administración Lo que pocos saben – especialmente
de usuarios constituyen un ejem- los usuarios princpiantes – es que las
la línea de comandos es rápido y plo clásico de las diferencias que normas que rigen todas estas característi-
existen entre las herramientas de la línea cas pueden ser modificadas. Y, lo que es
sencillo gracias a las herramientas de comandos y las gráficas. Si analiza- casi más importante, las cuentas de usua-
mos las herramientas de usuario en rios pueden tener otras características,
creadas para ello.
Fedora o Ubuntu, muy probablemente como una única shell o una fecha de
POR BRUCE BYFIELD pensaremos que son razonablemente caducidad, y todas esas cosas y todos los
completas. No sólo contienen lo esencial usuarios en su conjunto pueden ser con-
para crear y eliminar usuarios, sino que trolados por los administradores
incluyen pestañas avanzadas con herra- mediante unos cuantos comandos.
mientas más complejas. Sin embargo, si
comparamos las herramientas de escrito- Añadimos Usuarios
rio con los comandos y las opciones dis- En la mayoría de las distribuciones, la
ponibles en la línea de comandos, encon- herramienta básica para crear nuevos
traremos las razones por las que los usuarios es el comando useradd. Para
administradores profesionales rehuyen ejecutarla, accedemos como root a un
del escritorio. Las herramientas de admi- shell e introducimos el comando
nistración de usuarios del escritorio son
suficientes para la mayoría de las situa- useradd --create-home U
ciones, pero carecen del amplio abanico --passwd <I>CONTRASEÑA<I>U
de opciones disponibles desde la línea de <I>USUARIO<I>
comandos.
Como la mayoría de los usuarios pro- sustituyendo CONTRASEÑA y USUARIO
bablemente sepan, para registrarse en un por la contraseña del usuario y el nombre
sistema GNU/Linux hemos de tener un de usuario respectivamente. De hecho,
nombre de usuario y una contraseña. podríamos crear el usuario simplemente
Además de eso, típicamente tenemos un con
directorio personal en el que guardar
Figura 1: Ejecución del comando useradd -D nuestros ficheros privados – general- useradd <I>USUARIO<I>
para ver las configuraciones por defecto que mente un subdirectorio de /home –, un
usa el comando cuando crea un nuevo único grupo para acceder a los ficheros y pero la cuenta no estaría preparada para
usuario. un solo ID de usuario. ser usada. useradd se ejecuta sin salida

72 Número 72 WWW.LINUX- MAGAZINE.ES


en la pantalla, de modo que sólo tendremos constancia de
nuestro éxito si buscamos una nueva entrada en la parte
inferior del fichero /etc/passwd.
El nombre de usuario sólo debe estar en minúsculas, sin
mayúsculas o caracteres especiales – limitaciones que apre-
ciaremos cuando vayamos a introducir el nombre en el
prompt del comando.
Otros valores predeterminados se añaden automática-
mente al comando. Podemos ver dichos valores con

useradd -D

Ver Figura 1.
Algunos valores predeterminados de useradd posible-
mente sean adecuados, pero esto dependerá de las circuns-
tancias. Por ejemplo, usar la shell por defecto (general-
mente Bash) será razonable en la mayor parte de los casos,
al igual que el directorio por defecto bajo el cual se ubica
cada nuevo directorio. Sin embargo, aconsejamos ser pru-
dentes cuando creemos un nuevo directorio personal mien-
tras ejecutamos useradd.
De manera similar, en nuestro ordenador doméstico –
que nos preocupará menos en lo que a seguridad se refiere
– no importa demasiado tener una cuenta que nunca
caduca y que no llega a inactivarse una vez que expire.
Además, probablemente tampoco nos preocupe si el usua-
rio está configurado para recibir correo electrónico interno.
Sin embargo, en un servidor de empresa estas configura-
ciones son más importantes por razones de seguridad y pri-
vacidad. Es posible que también deseemos añadir los fiche-
ros que queremos copiar automáticamente a cada nuevo
directorio personal creado añadiendo copias de los mismos
a /etc/skel, lo cual puede ahorrarnos horas de
configuración.
En caso de que necesitemos cambiar los valores predeter-
minados, las opciones de useradd nos permiten modificar-
los directamente durante la creación de nuevos usuarios.
En la mayoría de los casos, podemos fiarnos de los valores
predeterminados para el identificador de grupo (GID), pero
el directorio personal puede especificarse mediante -m
o --create-home o bien especificando un directorio existente
después de -d o --home. De la misma manera, -s o --shell

Figura 2: El comando adduser es fácil de confundir con useradd,


pero es más amigable, siendo un tipo de asistente basado en
texto.
LINUX USER • Línea de Comandos: Usuarios

useradd -d U directorio necesarios sin ninguna interac-


--create_mail_spool yes ción humana, sino que también nos pide
Figura 3: El comando users lista un usuario la contraseña un par de veces para su
por cada inicio de sesión, lo que explica esta la configuraría para que reciba mail confirmación. El comando guarda otra
extraña entrada. interno. información, como el despacho y núme-
Entre otras opciones useradd que pro- ros de teléfono del usuario, lo que puede
seguido de una ruta a un programa shell, bablemente deseemos incluir se encuen- ser de utilidad en un entorno laboral. Si
pueden utilizarse para especificar otra tra - -comment CADENA, la cual añade la no deseamos guardar estos datos adicio-
shell diferente a la preestablecida, o --skel cadena de texto CADENA a la informa- nales, simplemente pulsamos el botón de
DIRECTORIO otro directorio donde ción de la cuenta – a menudo el nombre retorno cuando aparezca cada campo.
encontrar los ficheros a copiar en cada de usuario completo o la información de El comando adduser se configura en
directorio personal. contacto – y, para grandes sistemas, en /etc/adduser.conf, el cual, como la mayo-
Igualmente, el comando los que muy posiblemente tengamos a ría de los ficheros de configuración de
gente trabajando a turnos, también que- Debian, está tan extensamente comen-
useradd --expiredate U rremos usar --system para crear un nuevo tado, que casi cualquier administrador de
<I>AAAA-MM-DD<I> usuario con poderes administrativos. sistemas puede editarlo sin la necesidad
Quizás la opción más importante de recurrir a documentación adicional.
establece una fecha en la que una nueva sea --groups GRUPO1, GRUPO2, que hace Este comando también dispone de
cuenta pasa a estar inactiva. Mientras que la cuenta sea miembro de los dos varias opciones para cambiar su compor-
que en --expiredate --inactive DÍAS, DÍAS grupos adicionales GRUPO1 y GRUPO2. tamiento predeterminado, pero si esta-
es el número de días que han de pasar Los grupos que seleccionamos pueden mos usando adduser en vez de useradd,
antes de que la cuenta pase a inactivarse ser una manera de controlar a qué hard- muy probablemente desearemos no tocar
de manera permanente tras la fecha de ware puede acceder cada usuario, y por la mayor parte de ellos. Las excepciones
caducidad. Un valor de 0 la deshabilita tanto, qué pueden hacer. Por ejemplo, en son - -shell SHELL y --system, los cuales
en la fecha de caducidad, mientras que mi sistema Debian, los usuarios deben crean una cuenta con privilegios de
otro de -1 asegura que nunca expirará. pertenecer al grupo llamado scanner administrador.
Para cambiar las opciones predetermi- antes de que puedan utilizar un escáner,
nadas existentes podemos usar el y al grupo audio para recibir sonido. Lo Información del Usuario
comando: que es más importante, los que no perte- Antes de modificar una cuenta es proba-
necen al grupo cdrom no pueden grabar o ble que deseemos información sobre ella.
useradd -d <I>--CAMPO VALOR<I> reproducir CDs o DVDs. Un usuario que La manera más simple de leer informa-
pertenezca solamente al grupo que com- ción de una cuenta es ejecutando el
Donde CAMPO tiene el mismo nombre parte su nombre de cuenta podría traba- comando
que las opciones useradd, lo que significa jar con sus propios ficheros y usar Inter-
que net, pero nada más. El motivo para esto less /etc/passwd
es minimizar el riesgo que pueden supo-
useradd -D --inactive 3 ner dichos usuarios para el sistema como como usuario root. Cada línea de /etc/
un todo (aunque aún sería posible des- passwd da detalles de un usuario o
haría que la cuenta se inactivara tres días trozar sus propios ficheros con malware grupo. Para usuarios, el formato de cada
después de que expire, y descargado de Internet – si tienen permi- línea es:
tido el acceso a
Internet, que esa es CUENTA:CONTRASEÑA: U
otra historia). UID:GID:COMENTARIOS: U
En Debian, al DIRECTORIO-PERSONAL:SHELL
igual que en algunos
sistemas basados en En un sistema moderno, la contraseña
él, useradd dispone está cifrada, por tanto dicho campo
de un front end muestra únicamente una x. Los comenta-
mucho más amiga- rios incluirían el nombre completo del
ble – es decir, es propietario de la cuenta, además de su
más interactivo y información de contacto, con cada
Figura 4: El comando who -a nos ayuda a ver qué usuarios han inici- requiere una menor campo separado por una coma. Podemos
ado sesión actualmente, aportando más información que users. memorización de revisar cada línea hasta encontrar una
opciones (Figura 2). que comience por el nombre de la cuenta
Llamado adduser (lo que estamos buscando.
que puede llevar a la Para encontrar información cuando
confusión), este tenemos prisa, utilizaremos una de las
Figura 5: El comando groups nos permite ver rápidamente los distin- comando Debian no utilidades Bash. El comando users mues-
tos grupos a los que pertenece el usuario. sólo crea el grupo y tra qué usuarios se encuentran actual-

74 Número 72 WWW.LINUX- MAGAZINE.ES


Línea de Comandos: Usuarios • LINUX USER

mente conectados al sistema; esta ins- borran las cuentas.


trucción es importante porque lo desea- El comando deluser
ble es esperar hasta que se hayan desco- está configurado por
nectado antes de editar sus cuentas, aun- los campos que se Figura 6: Otra opción para ver los miembros de grupos es id -a.
que también puede servir para mostrar a encuentran en /etc/
cuáles deseamos forzar a que abandonen deluser.conf, los cuales establecen que un un signo de exclamación delante de la
el sistema porque no deberían estar allí. valor de 0 es “apagado” y 1 encendido. contraseña codificada en /etc/passwd,
Una particularidad del comando users es Una útil funcionalidad de deluser es la desconectando a todos los usuarios de la
que lista a los usuarios cada vez que ini- salida constante que proporciona sobre lo cuenta. Muy lógicamente, la opción con-
cian sesión. Por tanto, si hemos iniciado que está haciendo, a menos que lo ejecu- traria es --unlock, que restaura la cuenta a
sesión en varios terminales virtuales, temos con la opción --quiet. La su funcionamiento ordinario.
nuestra cuenta se encontrará listada más opción --remove-home hace exactamente
de una vez (Figura 3). Con el comando lo que dice. Nótese, sin embargo, que Conclusión
who -a podemos recibir la misma infor- deluser solamente eliminará ficheros que Los comandos de la shell para adminis-
mación en formato más detallado (Figura se encuentran colocados en la cuenta del tración de usuarios son especialmente
4). directorio personal del usuario. Si por potentes y están muy bien organizados.
Para evitarnos el tedio que supone alguna razón el usuario tenía ficheros en A diferencia de algunos otros relaciona-
escanear /etc/passwd usamos el otro lugar, tendríamos que localizarlos dos, comparten muchas de las mismas
comando groups (Figura 5), el cual, manualmente. opciones, por tanto, pasar de – por
cuando se usa sin opciones, informa de Con todo, la opción más útil de deluser ejemplo – useradd a userdel es relativa-
los grupos a los que pertenece el usuario es --backup, que crea un archivo tar de mente fácil. En la mayoría de los casos
actual. Cuando va seguido por el nombre los ficheros en el directorio personal de la sólo hay que memorizar un único juego
de una cuenta, da información de los cuenta en el directorio / antes de borrar- de opciones. Incluso si comenzamos
grupos de la cuenta especificados. De los (Figura 7). También podemos editando grupos, encontraremos que
manera similar, el comando usar --backup-to DIRECTORIO para espe- groupadd y groupdel están tan próximos
cificar otro lugar para el fichero de res- a useradd y userdel como permiten sus
id -a USUARIO paldo. De cualquier manera, podemos diferencias.
guardar lo que deseemos sin tener que El principal potencial para el descon-
aporta información de la cuenta de un archivarlo usando un comando separado. cierto recae sobre adduser y deluser, con
usuario y los identificadores de grupos Para modificar cuentas sin borrarlas, la sus nombres invertidos. Pero incluso
(Figura 6). Provistos de esta información, herramienta básica es usermod (contrac- aquí, el grado de similitud es aún alto. En
podemos modificar las cuentas de usua- ción de “user modification”). Este cualquier caso, ambos son en realidad
rio de manera más fácil y precisa. comando tiene muchas de las opciones asistentes que nos guían a través del pro-
de useradd, incluyendo --comment ceso de administración de usuarios y nos
Edición de Usuarios CADENA, --home DIRECTORIO, --expire- protegen de tener que recordar sus deta-
Existentes date AAA-MM-DD, --inactive lles. Por otra parte, estas dos innovacio-
La manera más fácil de editar una cuenta DÍAS, --groups GRUPO1, GRUPO2, --pass- nes de Debian son también tan similares
de usuario es borrarla. La herramienta word CONTRASEÑA y --shell SHELL. Sin entre sí como pueden serlo y tienen
básica para eliminar una cuenta de usua- embargo, si especificamos un grupo al opciones que se asemejan a las de sus
rio es userdel. Si usamos este comando cual ya pertenece el usuario cuando usa- homólogos más básicos.
seguido del nombre de la cuenta, la eli- mos la opción -- groups con usermod, No importa qué herramientas elijamos,
minamos, pero mantenemos sus ficheros, entonces borraremos el usuario de dicho las opciones para la administración de
a los cuales puede accederse a través del grupo, a menos que también incluyamos usuarios en la línea de comandos llegan
usuario root. Por ejemplo: la opción --append. mucho más lejos que las que se encuen-
Una opción única para usermod tran disponibles desde el escritorio,
userdel sarah es --login NUEVO-NOMBRE, la cual cam- incluso si nos aventuramos con las pesta-
bia el nombre de la cuenta – aunque no ñas avanzadas que nadie parece utilizar.
eliminará la cuenta sarah, sin mostrar en el directorio personal para la cuenta. Si La administración de usuarios a través de
pantalla ninguna información de lo que queremos que el directorio personal coin- la línea de comandos es sencilla y rápida,
está haciendo. cida con el nombre de la cuenta, como es haciendo más fácil la realización de estas
Si deseamos borrar los ficheros en el habitual, necesitaremos añadir --home tareas. En otras palabras, son precisa-
directorio personal, lo haremos con la DIRECTORIO y transferir luego los fiche- mente lo que querría todo el que necesita
opción --remove. También tenemos el ros al nuevo directorio personal y borrar administrar usuarios. ■
modo “Terminator”: con la opción -- force el antiguo directorio
se eliminará al usuario aún estando en operaciones sepa-
conectado, desconectándolo del sistema. radas.
Al igual que adduser es una fachada Otra opción exclu-
para useradd, deluser lo es de userdel, siva de usermod Figura 7: Al igual que adduser, el comando deluser proporciona un
ofreciendo más control sobre cómo se es --lock, que añade asistente basado en texto para eliminar cuentas.

WWW.LINUX- MAGAZINE.ES Número 72 75


COMUNIDAD · Konsultorio

EL
KONSULTORIO
DE KLAUS
encontrado ninguna ayuda. ¿Podría ordenador y la guarda en un lugar
ayudarme? Gracias, Anónimo. fresco y seco (cosa que recomiendan
La mala noticia es que el “soft- algunos documentos “cómo”), la capa-
ware de desconexión de la bate- cidad se reducirá a la mitad de su valor
ría” incluido en su portátil Dell parece inicial después de unos cuantos años.
ser un elemento aislado que requiere Esto también coincide con mi experien-
un driver especial de acceso al hard- cia personal. No hay forma de refrescar
Klaus Knopper es el creador de ware, tanto en Windows como en las baterías de Li-Ion cuando se agotan,
Linux. Pero si existe un controlador y es peligroso tratar de sobrecargarlas
Knoppix y co-fundador de la para Linux disponible, no fui capaz de con una fuente de alimentación que no
encontrarlo, lo siento. sea adecuada para cargar baterías de
LinuxTag Expo. En la actuali- Por otro lado, muy probablemente la ordenador, cosa que algunos foros reco-
vida de su batería no se degradará sólo miendan.
dad trabaja como profesor,
porque esté conectado al ordenador Por el lado del software, puede reco-
programador y consultor. Si cuando funciona alimentado por la red, pilar información acerca de la batería
incluso cuando la batería está comple- de su portátil desde el kernel de Linux
tiene algún problema de tamente cargada. Esto se debe a que la verificando los archivos bajo
fuente de alimentación apaga automáti- /proc/acpi/power (ruta antigua) y
configuración, o simplemente camente la carga, y el equipo no fun- /sys/class/power_supply/BAT0 (kernels
ciona a través de la batería mientras el actuales).
quiere conocer mejor cómo adaptador de CA está conectado. Dell tiene un FAQ sobre las baterías y
Las razones de pérdida de capacidad cargadores [1] que puede serle útil.
funciona Linux, no dude en en las modernas baterías de iones de
litio (Li-Ion) es simplemente el enveje- Lista de Chequeo de
escribir sus preguntas a: VirtualBox
cimiento de los materiales y el número
preguntas@linux-magazine.es de ciclos de carga/descarga. Descargar Hola Klaus. ¿Podría usted por
completamente antes de cargar no favor ayudarme a configurar Vir-
extiende la vida útil de estas baterías, a tualBox? Tengo problemas con el
diferencia de las baterías recargables famoso mensaje de error “vboxdrv”. He
Desconexión de la Batería que conoce de otros equipos electróni- probado a buscarlo en Google. Como
Hola Klaus, tengo un portátil Dell cos. soy un principiante con Linux, me gus-
Studio 15 con Windows Vista Las recomendaciones sobre guardar taría encontrar un tutorial de la A a la Z
preinstalado (que no me gusta mucho). las baterías de portátiles “desconecta- sobre cómo conseguir poner en marcha
Para trabajar cómodamente con Linux, das de la alimentación” para extender VirtualBox. Gracias, Foudi.
necesito una cosa más: poder desactivar la vida útil son engañosas: la fuente de Creo que te refieres al mensaje
la carga de la batería para prolongar su alimentación de los portátiles moder- común de error “módulo no
vida cuando se utiliza una fuente de ali- nos interrumpe la carga de la batería de encontrado/cargado” que aparece al
mentación externa. No hay interruptor forma automática una vez que se han iniciar VirtualBox.
de hardware para ello, pero sí es posible cargado completamente y sólo se reini- VirtualBox, al igual que varias virtua-
con una aplicación de Dell que viene cia el proceso de carga cuando la bate- lizaciones bajo Linux, consta de dos
instalada en mi Vista OEM, así que ría se autodescarga y alcanza un deter- partes: un programa en “espacio de
supongo que se puede hacer a través de minado nivel por debajo de la carga usuario” y un controlador del kernel
algunas manipulaciones con ACPI. máxima. para el acceso a los recursos comparti-
He buscado en Internet soluciones o Por lo tanto, incluso si usted no usa dos de hardware del sistema real (host).
documentos “COMO”, pero no he la batería en absoluto, la saca de su El programa VirtualBox es bastante fácil

76 Número 72 WWW.LINUX-MAGAZINE.ES
Konsultorio • COMUNIDAD

de instalar, pero el módulo del kernel por lo que no debe haber mayor pro- sudo /etc/init.d/vboxdrv start
vboxdrv, como todos los “controladores blema).
de hardware” en Linux, debe corres- Este es un típico ejemplo de por qué o (para Debian),
ponder exactamente al kernel de Linux VirtualBox está instalado pero no fun-
en ejecución. Además, el módulo ciona. De hecho, se trata de mi propio sudo /etc/init.d/U
vboxdrv también debe coincidir con la portátil (no he usado VirtualBox desde virtualbox-ose start
versión del programa en espacio de hace un tiempo y no me he dado cuenta
usuario. Estas son las dependencias de que ya no funcionaba). Así que, aquí que también creará el dispositivo
que pueden dificultar la instalación de está la solución: /dev/vboxdrv que utiliza VirtualBox.
VirtualBox, o su actualización. 1. En primer lugar trate de instalar Si todo ha ido bien, VirtualBox debe-
Por lo tanto, aquí está su lista de che- VirtualBox y su módulo (del mismo ría volver a iniciarse y ejecutarse.
queo: número de versión y que coincida con
1. ¿Está instalado el programa Vir- la versión del kernel) con el uso de su Configuración de SELinux
tualBox? (La versión gratuita se llama gestor de paquetes. Klaus, acabo de instalar una
“virtualboxose”). 2. Si la opción 1 no es posible porque nueva copia verificada de Fedora
2. ¿Está instalado el módulo del ker- su kernel no tiene precompilado el 13. Abrí la administración de SELinux y
nel de VirtualBox, vboxdrv, y se corres- módulo de VirtualBox o porque utiliza estaba preocupado por algunos de los
ponde exactamente con la versión del un núcleo personalizado, instale el ajustes que se verificaban en la pestaña
programa? paquete de fuentes del módulo del ker- Boolean y siguen estando activos
3. ¿El módulo vboxdrv del kernel de nel de VirtualBox de la misma versión cuando se probó el modo confinado.
VirtualBox coincide exactamente con el que el programa VirtualBox. Asegúrese ¿Cuál sería la mejor configuración a
kernel de Linux en ejecución? de que las cabeceras kernel-headers de aplicar para que un novato se mantenga
Lo siguiente es la comprobación en su kernel están instaladas y compile el alejado de problemas? ¡Me gusta
línea de comandos, que debería funcio- paquete del módulo usted mismo. mucho leer sus artículos! Gracias, un
nar para Debian y Ubuntu: Debian tiene dos asistentes para la estudiante.
compilación de módulos concurrentes: En realidad, para un novato, e
dpkg -l | egrep -e ‘(virtualboxU uno denominado make-kpkg y el otro incluso para un usuario profesio-
|vboxdrv|linux-image|U dkms. El primero tiene que llamarse de nal de GNU/Linux, SELinux es proba-
linux-headers)’ manera manual. Al segundo se le llama blemente algo que en realidad no nece-
automáticamente cada vez que se ins- sita o no quiere tener activo. Está dise-
que puede dar lugar a una salida simi- tala un nuevo núcleo y su paquete de ñado para añadir una capa adicional de
lar a la mostrada en el Listado 1. En la cabeceras. Tenga en cuenta que las ins- seguridad mediante la protección de las
salida puede observar varios elementos: trucciones de compilación son muy llamadas al sistema para los usuarios
• La versión del programa VirtualBox específicas dependiendo de la distribu- locales con un complejo conjunto de
instalado y la de los módulos son ción. El script de init de Ubuntu, que reglas. Pero, de hecho, también puede
ambas 3.1.4-dfsg-1, lo cual es también se utiliza para cargar el hacer que su sistema apenas se pueda
correcto. módulo en el arranque, tiene un pará- usar o provocar comportamientos extra-
• El kernel de Linux aparentemente se metro setup que disparará la recompila- ños, ya que evita que incluso el admi-
ha actualizado a 2.6.35.4, pero la ver- ción del módulo, nistrador tenga acceso a ciertos recur-
sión de virtualbox-ose-modules- sos del sistema, dependiendo de una
2.6.34 está preparada para una ver- sudo /etc/init.d/vboxdrv setup configuración muy compleja. También
sión del kernel anterior. Por lo tanto, puede eludir restricciones para usuarios
el módulo no se carga, y VirtualBox siempre que su configuración sea lo sufi- sin permisos, lo que puede ser peligroso
no puede iniciarse. cientemente completa como para compi- para la seguridad de datos.
• Se podría utilizar un paquete de lar módulos (es decir, que estén instala- Mi consejo es apagar completamente
fuentes del módulo del kernel para la dos el compilador C y las cabeceras del SELinux, a menos que tenga planeado
versión de VirtualBox 3.2.8 (virtual- kernel, así como las utilidades make). utilizar su equipo como un servidor
boxose-source) para compilar un Después de compilar con éxito, con múltiples usuarios y necesite un
nuevo módulo del kernel (las cabece- puede cargar el nuevo módulo con el alto nivel de seguridad local, y que esté
ras kernel-headers están instaladas, siguiente comando (para Ubuntu), dispuesto a aprender su historia com-

Listado 1: Salida de VirtualBox


ii linux-headers-2.6.35.4 2.6.35.4-10.00.Custom Header files related to Linux kernel, specifically,
ii linux-image-2.6.35.4 2.6.35.4-10.00.Custom Linux kernel binary image for version 2.6.35.4
ii virtualbox-ose 3.1.4-dfsg-1 x86 virtualization solution - base binaries
ii virtualbox-ose-modules-2.6.34 3.1.4-dfsg-1+2.6.34-10.0 VirtualBox modules for Linux (kernel 2.6.34)
ii virtualbox-ose-qt 3.1.4-dfsg-1 x86 virtualization solution - Qt based user interface
ii virtualbox-ose-source 3.2.8-dfsg-1 x86 virtualization solution - kernel module source

WWW.LINUX-MAGAZINE.ES Número 72 77
COMUNIDAD · Konsultorio

pleta, a la que puede acceder en la versión? Hasta e incluyendo Fedora 11, interrupciones más altas con objeto de
página web de la NSA [2] . Fedora tam- el propio /etc/inittab podía lanzar la mantener libres las bajas para hardware
bién tiene documentación muy deta- consola de ttyS0. Los problemas muy antiguo, como las tarjetas ISA (que
llada de SELinux con diversos ejemplos comenzaron con Fedora 12 y continua- podrían ni siquiera existir en el
[3]. ron con Fedora 13 [6], que requieren equipo).
ambos una configuración diferente, En cuanto a ACPI, existen algunas
Consola Serie en Fedora porque /etc/inittab desde la versión 12 opciones que podría intentar para cam-
Estimado Klaus, recientemente sólo contiene el nivel de ejecución por biar su manejo de interrupciones sin
he actualizado a Fedora 13. No defecto. necesidad de apagar ACPI por com-
tuve mayores problemas, excepto que Para su información, la configuración pleto. Sin embargo, no puedo prome-
tenía que extender la partición /usr de anterior a Fedora 12 era la siguiente: terle que tenga influencia en el disposi-
1GB, y tuve un problema con la consola tivo de serie. Puede que tenga que des-
serie del sistema, que me gustaría vi /etc/inittab activar la opción “puerto serie no-
comentarle aquí. ... estándar” en la configuración de su ker-
No logré volver a obtener una con- C0:12345:respawn:U nel y volver a compilarlo para obtener
sola de login conectando un emulador /sbin/agetty -LU el mejor resultado.
de terminal a través de un cable serie. ttyS0 57600 vt100
Para resolver el problema, tengo que telinit q linux acpi=noirq
reiniciar el sistema después de hacer las linux acpi_osi=Linux
siguientes modificaciones: También he descubierto la linux pci=noacpi
configuración de consola serie de linux noapic nolapic
vi /etc/init/U Fedora 12 [7]. ¿Podría esto ser intere-
serial-console-ttyS0.conf sante para que lo publique y lo La última línea no tiene nada que ver
start on stopped rc U comente? Gracias! Geert Van Pamel. directamente con ACPI, pero se sabe
RUNLEVEL=[2345] No puedo responder a la pre- que ayuda como una solución si las
stop on starting runlevel [016] gunta de por qué las distribucio- interrupciones están distribuidas inco-
respawn nes cambian las cosas con cada lanza- rrectamente o faltan para ciertos dispo-
exec /sbin/agetty -L U miento, pero probablemente el respon- sitivos. ■
ttyS0 57600 vt100 sable del lanzamiento piensa que es
#exec /sbin/mgetty -r -s 57600 U una buena idea o aparece una nueva RECURSOS
/dev/ttyS0 vt100 funcionalidad que hace que el cambio
[1] FAQ de baterías Dell: http://www.dell.
sea necesario. Seguramente no rom- com/content/topics/global.aspx/
Pero sigo obteniendo errores y el puerto pen las cosas a propósito. A veces, los batteries_sitelet/en/
serie no funciona: drivers nuevos en el kernel tienen batteries_faq?c=us&l=en&cs=19
efectos secundarios inesperados en los [2] SELinux: http://www.nsa.gov/
tail -f /var/log/messages componentes aparentemente no rela- research/selinux/
... kernel: ttyS0: U cionados.
[3] Ejemplos SELinux: http://
LSR safety check engaged! El mensaje “LSR safety check enga- fedoraproject.org/wiki/SELinux
ged” indica que el dispositivo hardware
[4] Red Hat Bugzilla – El puerto serie no
Algunos artículos [4] [5] sugieren el de puerto serie no se puede encontrar o
funciona: https://bugzilla.redhat.com/
uso de la opción de arranque acpi=off. no responde [8]. show_bug.cgi?id=260481
(He intentado con pnpacpi=off, pero Esto puede estar relacionado con
[5] LinuxForums.org: http://www.
esto no ha funcionado.) La solución asignaciones automáticas incorrectas
linuxforums.org/forum/
con la opción de arranque acpi=off de interrupciones, que ya ha descu- redhat-fedora-linux-help/
parece que funciona. Pero, ¿tal vez bierto. Nunca es evidente si se trata 85411-dev-ttys0-nc6000-not-working.
otras funcionalidades hardware podrían de un problema de hardware que html
estar ahora inaccesibles? puede ser evitado con drivers especia- [6] LinuxQuestions.org: http://www.
Esto parece ser un viejo error sin les (como los “board [patch] drivers” linuxquestions.org/questions/
resolver de Fedora que ha provocado un que utiliza Windows para algunos fedora-35/
conflicto IRQ de hardware con un ordenadores) o si el esquema de asig- in-fedora13-etc-event-d-now-etc-sysc
puerto de infrarrojos (que no existe) en nación de interrupciones elegido o onfig-init-827150/
el ordenador portátil Compaq NC6000. predeterminado del kernel de Linux [7] IT Resource Center Forums: http://
(He encontrado informes de errores no funciona con esa placa madre forums13.itrc.hp.com/service/forums/
desde Fedora Core 6.) Parece que los específica. questionanswer.
desarrolladores de Fedora nunca tuvie- El dispositivo de serie por lo general do?threadId=1444559
ron la oportunidad de reparar el pro- solicita una o más interrupciones 3 y 4, [8] HOWTO de puerto serie: http://tldp.
blema. ¿Por qué el equipo de Fedora que se encuentran en el rango de “inte- org/HOWTO/Serial-HOWTO-17.
cambia el comportamiento de la con- rrupciones bajas”, mientras que ACPI html#ss17.17
sola serie y su configuración en cada podría tratar de volver a enrutarlas a

78 Número 72 WWW.LINUX-MAGAZINE.ES
Linux Legal • COMUNIDAD

Jose María Lancho, abogado, contesta a las dudas legales de los lectores

LINUX LEGAL
■ ¿Cómo puede Google no liberar el intención muy clara de controlar el espa- que cualquier obra derivada de código
código de Andoid Honeycomb? ¿No está cio jurídico del contenido de su “plata- GPL debe liberarse en las mismas condi-
violando alguna licencia actuando así? forma” y con un enorme riesgo jurídico ciones. Sin embargo, la estabilidad jurí-
■ Me gusta advertir a mis clientes que el de por medio, es normal que el futuro dica de Android en lo que a software
software libre no sólo ha provocado el completo del proyecto se vea en juego. Y libre se refiere, se basa en que Linux fun-
surgimiento de un buen número de es que Google está conociendo la idea cione siempre debajo del espacio de
modelos de desarrollo nuevos de código, jurídica de lo que es la “nube”, y la tiene usuario, por lo que consigue, virtual-
sino que ha transformado radicalmente precisamente encima de Android. Ya no mente, que se desactiven las libertades
la forma en que se crea, utiliza e imple- son la casi docena de demandas por del código bajo GPL. En esta ocasión
menta el software de código cerrado. patentes que soporta, la demanda adi- Google podría haber cometido un error
Hasta la raíz. cional de Oracle por infringir sus dere- fatal, primero porque la cantidad de
Buena paradoja, pero es que no han chos sobre java... Precisamente una código GPL apropiado podría muy pro-
quedado modelos indemnes, y los nue- empresa auditora de código, OpenLogic, bablemente considerarse como sustan-
vos ecosistemas cerrados, en el mejor de desató la polémica este mes de marzo en cial y difícilmente esquivar su cláusula
los casos, han visto multiplicarse sus la AnDevCon, una conferencia de desa- copyleft, ni siquiera por medio del dere-
costes y han tenido que adaptarse a la rrolladores de Android en San Francisco. cho de competencia. Por otro lado, si no
realidad del software libre. Sí, hablo del Esta empresa examinó 635 aplicaciones procede a un combate legal, cualquier
riesgo legal del software libre para las de Android e iOS y escaneó el código huida hacia delante supondrá un cambio
empresas que desarrollan o utilizan soft- fuente y los binarios de las mismas, fundamental en la estrategia de Android
ware cerrado. dando como resultado que, del escaso y en el control que tiene Google sobre el
Si se filtra código extraño en la “red” porcentaje de aplicaciones que emplean mismo y los fabricantes de aplicaciones
de desarrollo de una empresa, ésta código fuente libre, el 70% de las aplica- para Android.
arriesga mucho. Todos sabemos cómo se ciones no cumplen con las licencias de Rehacer la biblioteca que conecta
hace a veces software: es común que un las mismas (GPL y Apache fundamental- Android y sus aplicaciones con la base
programador busque una función y bus- mente). del núcleo de Linux, por razones de
que un ejemplo y se limite a copiarlo. Al Sí, la versión de Android 3.0 “Honey- tiempo y coste supone una vía técnica-
fin y al cabo, hay un numero finito de comb”, que está siendo actualmente mente muy complicada y compromete el
maneras de hacer una función, un bucle vendida a los consumidores en el tablet crecimiento competitivo de Android. La
... Los ejecutivos saben poco de software Xoom de Motorola, puede estar vulne- plataforma de Google puede que se vea
libre, pero sí de que si sus informáticos rando la cláusula copyleft de la GPL y forzada a tomar el camino de una mayor
introducen código de la Comunidad, además con respecto a una importante apertura y, – ¿por qué no? – definitiva de
pueden estar contaminando su propio cantidad de código. Este código es, su código. Se podría hablar entonces de
código, en el sentido de incluir código encima, un elemento crítico de su arqui- verdadera revolución en las telecomuni-
con especificaciones legales que arries- tectura. El reproche que se le ha hecho a caciones, precisamente por medio de su
gan la forma de propiedad intelectual Google es que se ha colado en 2,5 liberación técnica. ■
que antes tenían. De esta manera, las megabytes de código, correspondientes
empresas someten a “cuarentena” el a al menos 700 ficheros cabecera del ker- EL AUTOR
código que les remiten ciertos proveedo- nel de Linux. Google ha dedicado mucho
Jose María Lan-
res hasta que no se audita. Muchas veces menos espacio en argumentar la sor-
cho es abogado,
obligan a que les sean entregados certifi- prendente aparición de código Linux, fundador de la
cados de que no existe código libre. De afirmando que se trataba de material no asociación Legal
hecho, los abogados actúan a veces sujeto a copyright. Sin embargo, Linus Venture (http://
como verdaderos epidemiólogos y esta- Thorvalds ya dejó claro en 2003 que www.
blecen, si el tamaño de la empresa lo “Usted puede ejecutar el kernel y crear legalventure.
exige así como el valor de los activos programas que no son GPL […] PERO com/), co-fun-
informáticos en juego, complejos diagra- NO PUEDE USAR los ficheros de cabe- dador del Obser-
mas internos de control para aprobar y cera del núcleo para crear archivos bina- vatorio de Neutralidad Tecnológica
(http://neutralidad.es/) y presidente de
verificar los componentes de software rios NO GPL. ¿Comprende?”
Hispalinux. Puedes hacerle llegar tus
que se manejan. La coexistencia de software libre en un
preguntas un correo a
En plataformas multilicencia como contexto jurídicamente tan especial
jmcamelot@gmail.com
Android, por otro lado, que tiene una como Android es difícil. La GPL exige

WWW.LINUX-MAGAZINE.ES Número 72 79
COMUNIDAD · Blogs: Hacking y cerveza en Río

¡DESPEGA!
Maddog va a Río al evento “Hack y Cerveza” y aprende a disfrutar del

viaje. POR JON “MADDOG” HALL

mas para probarlos y almacenarlos en programa siempre devolvía distancias


el Arduino. Existe una biblioteca muy grandes. Me enteré de que se
grande de código fuente en constante había utilizado otro sensor en el código
crecimiento que está disponible para de ejemplo y les pregunté si tenían la
construir sencillos (y no tan sencillos) “hoja de especificaciones” de ese sen-
circuitos electrónicos. Lo mejor de todo sor. Dijeron que no, por lo que sugerí
es que estos componentes electrónicos buscar en Internet el número de pieza
y el propio Arduino son relativamente del sensor para ver si podían localizar
l niño sentado detrás de mí baratos y reutilizables para otras cosas. la hoja de especificaciones, y así lo

E estaba muy entusiasmado con


su primer viaje en avión.
Cuando empezó a despegar, hizo una
Después de repartir algo de picoteo,
refrescos y cervezas, nos dividimos en
cuatro grupos. Uno de ellos lo dirigió
hicieron.
Nuestro sensor tenía tres pines – uno
para la alimentación, uno para tierra y
cuenta atrás muy fuerte hasta “¡Despe- una joven que realizó una demostra- otro con la señal de salida que se pro-
gue!”. Es refrescante escuchar tanto ción básica de la programación del duce cuando el sensor detecta una
entusiasmo, sobre todo porque el trans- Arduino. Otro grupo estaba trabajando onda de audio que ha rebotado – y el
porte aéreo se había convertido para mí en la interconexión de Arduino a un grupo estaba tratando de alimentar una
en un “ascensor mágico”. Las puertas semáforo, que era “difícil”, porque la señal de entrada en el pin de salida.
se cierran en un lugar y se abren en luz necesita una potencia de entrada Empecé a sospechar que el funciona-
otro, pero el viaje tiene poco de emo- mayor que la que el Arduino puede miento de este sensor era completa-
cionante, sólo el destino. generar. mente diferente al del “código de ejem-
Experimenté una emoción similar Mi grupo estaba intentando integrar plo”. Les expliqué que, sin más especi-
con mi primer “Hack y Cerveza” con un sensor de distancia que utilizaba el ficaciones para la unidad, no podía
Arduino. Organizado por mi amigo sonido para medirla. Estaban usando decir el intervalo de tiempo entre el
Álvaro Justen en Río de Janeiro, debo algún software ya desarrollado y publi- “encendido” hasta que emitía el primer
admitir que no estaba muy seguro de cado para Arduino, pero el sensor que pulso. Tampoco sabía cuánto tiempo
conseguir algo significativo con una se utilizó de muestra en el programa estaría presente el pulso de salida en el
sola noche de “hacking” hardware. era bastante caro y habían encontrado pin de salida o si el Arduino sería capaz
La planificación y el debate del otro disponible por mucho menos de capturar ese pulso. Sugerí utilizar
“Hack y Cerveza” ocurrieron rápida- dinero. El sensor ya había llegado y un circuito electrónico conocido como
mente. Se pidió una cantidad para estaban ansiosos por ponerse en mar- “latch” (cerrojo), con el que mis com-
pagar el refrigerio: bocadillos, refrescos cha. pañeros de desarrollo no estaban fami-
y (por supuesto) cerveza. Había cuatro Me invitaron a unirme al proyecto del liarizados. Por desgracia, no estaban
proyectos a tratar y se presentaron grupo del “sensor”. En principio me disponibles las piezas para construirlo.
cerca de 20 personas, así que que en opuse, porque no sabía nada de El sensor no funcionó en esta sesión
cada proyecto trabajaron entre cuatro y Arduino, sólo que tenía un espacio de de “Hack y Cerveza”, pero sé que mi
cinco de ellas. memoria relativamente pequeño. Ade- equipo aprendió mucho de sus esfuer-
Todos los proyectos necesitaban un más, hacía más de 20 años que no zos, y dijeron que seguirían intentán-
Arduino. Arduino es una plataforma hacia ningún trabajo de electrónica, dolo. Estaban emocionados por el viaje,
hardware “abierta” para la que se pue- pero vi que Álvaro necesitaba un poco no por el destino, que es a fin de cuentas
dan hacer distintas variaciones de la de ayuda. Muchos de los asistentes no de lo que tratan los “Hack y Cerveza”. ■
placa base. La mayoría de estas varia- eran estudiantes ni de informática ni de
ciones tienden hacia unidades que se ingeniería electrónica, sino de historia RECURSOS
interconectan fácilmente a placas uni- y de otras disciplinas, y sólo querían
[1] Un álbum en Flickr del Arduino
versales para poder construir simples tener la experiencia de realizar estos
“Hack y Cerveza” en Río: http://
“extensiones” de hardware. Hay una proyectos. www.flickr.com/photos/
serie herramientas de desarrollo en El grupo del “sensor” cargó el código pedromenezes/sets/
cadena (los llamados “toolchains”) que de ejemplo y cableó sus sensores. Por 72157624743215187/
permiten crear fácilmente los progra- desgracia, el sensor no funcionaba; el

80 Número 72 WWW.LINUX-MAGAZINE.ES
PRÓXIMO NÚMERO

Historias
de Nubes
Todo el mundo sueña con un futuro en la nube, pero el lector con conocimientos técnicos
busca algo más que generalidades difusas. El mes que viene vemos la parte práctica de la
computación en cloud. Con artículos sobre Nebula, OpenStack, Amazon y más, analizare-
mos casos concretos de configuración bien de cerca y aprenderemos lo que estos servi-
cios dan de sí.

Juliana Maria Villalobos Espinosa, 123 RF

Ya puedes mantenerte al día de lo que


sucede en el mundo de GNU/Linux sigu-
iendo las noticias diarias en nuestro Face-
book (http://www.facebook.com/
linuxmagazine.es) y Twitter (http://twitter.
com/linux_ spain).
También puedes recibir noticias de lo que
te espera en los siguientes números de
Linux Magazine, así como ofertas, regalos
y novedades subscribiéndote a nuestro
boletín en http://www.linux-magazine.es/
Readers/Newsletter.

A LA VENTA: JUNIO 2011


82 Número 72 WWW.LINUX- MAGAZINE.ES

You might also like