Nov 24, 2009

Plugin yum-security: gestión de las actualizaciones de seguridad

Por normal general, en los repositorios de una distribución estable RHEL o CentOS se actualizan únicamente los paquetes cuando una vulnerabilidad o corrección de errores en el código es publicada. En otras palabras, no se incluyen actualizaciones que afectan a la funcionalidad o rendimiento de un determinado paquete. Este tipo de actualizaciones sólo se realiza ante un cambio de versión (CentOS 5.3 --> CentOS 5.4).

Para hacer un listado de todos los paquetes que actualmente se encuentren en condición de ser actualizados en base a las dos normas citadas anteriormente, se puede ejecutar el siguiente comando:
[root@centos ~]# yum list updates

A su vez, la siguiente orden permitirá la actualización de todos esos paquetes en el sistema. Si se quiere actualizar un paquete concreto, por ejemplo Apache, se podrá utilizar el segundo comando.

[root@centos ~]# yum update

[root@centos ~]# yum update httpd

El plugin yum-security permite a la herramienta yum una administración completa de las actualizaciones de seguridad.

[root@centos ~]# yum install yum-security

A través de esta extensión, el administrador puede listar y aplicar aquellas actualizaciones publicadas que conlleven una corrección en aspectos relacionados exclusivamente con la seguridad.

Esto último es una tarea muy importante en entornos de producción, ya que éste es el enclave donde se persigue tener los servidores lo más establemente posible, pero a su vez, no obviar en ningún momento las correcciones de seguridad que eviten aquellos fallos críticos que puedan comprometer a un sistema.

Por lo tanto, la finalidad principal de este plugin no es la de poder instalar la última versión estable de un determinado paquete, sino la de actualizar la versión a otra posterior que únicamente corrija los fallos de seguridad descubiertos.

Para hacer un listado de todas aquellas actualizaciones que afecten meramente a temas de seguridad, hay que ejecutar el siguiente comando:

[root@centos ~]# yum check-update --security

La siguiente orden actualizará todas las correcciones de seguridad disponibles para el sistema, y el segundo comando, las actualizaciones de seguridad disponibles para un paquete concreto.

[root@centos ~]# yum update --security

[root@centos ~]# yum update --security httpd

El plugin yum-security permite también actualizar aquellos paquetes que se vean afectados por un determinado ID de BugZilla (--bz) o CVE (Common Vulnerabilities and Exposures, --cve); por ejemplo:

[root@centos ~]# yum update --cve CVE-2009-0423

Nov 18, 2009

Benchmark bonnie++: Sistemas de almacenamiento compartido en red

Una vez presentados los resultados de benchmarking sobre sistemas de almacenamiento compartido a través del comando cp, ahora le toca el turno a los resultados obtenidos a través de la herramienta bonnie++.

Bonnie++ es un programa utilizado para comprobar el rendimiento de discos duros y sistemas de archivos. Bonnie++ permite la creación de tests de lectura, escritura y borrado de archivos de diversos tamaños, etc.

La prueba que se va a ejecutar va a consistir en lanzar simultáneamente en centos02 y centos03, un test que escriba y lea un fichero de aproximadamente unos 7,5 GB (tamaño que coincide con el doble de la memoria RAM – cifra recomendada por Bonnie++), obteniendo de esta forma la velocidad de escritura, re-escritura, y lectura del archivo. También se realizarán búsquedas aleatorias dentro del mismo fichero.

Otras de las tareas que realizará el test será la creación secuencial de 131.072 archivos vacíos; a continuación los leerá y volverá a borrar, siendo estas dos operaciones también secuenciales. Y ya por último, realizará esta misma acción pero de forma aleatoria.

Las órdenes que se emplearán en cada uno de los dos nodos (centos02 y centos03) para ejecutar el test serán las siguientes, siendo shared02 y shared03 los directorios temporales utilizados para las pruebas y ubicados en el espacio de almacenamiento a testear.
[root@centos02 ~]# bonnie++ -n 128 –s 7544 –x 1 –u 0 –d /shared02

[root@centos03 ~]# bonnie++ -n 128 –s 7544 –x 1 –u 0 –d /shared03


Escritura de un fichero de 7544 MB



Re-Escritura de un fichero de 7544 MB



Lectura de un fichero de 7544 MB



Búsquedas aleatorias dentro de un fichero de 7544 MB



Creación secuencial de 131.072 archivos



Lectura secuencial de 131.072 archivos



Borrado secuencial de 131.072 archivos



Creación aleatoria de 131.072 archivos



Lectura aleatoria de 131.072 archivos



Borrado aleatorio de 131.072 archivos


Nov 10, 2009

Benchmark cp: Sistemas de almacenamiento compartido en red

Para las pruebas de rendimiento sobre sistemas de almacenamiento compartido, vamos a empezar en primer lugar con la herramienta cp.

El comando cp se va a utilizar para medir el tiempo empleado en escribir un directorio en un destino concreto, siendo en nuestro caso de estudio el área de almacenamiento compartido.

Centos02 copiará el directorio /etc (ocupa 122 MB y está formado por 1.999 archivos distribuidos en diferentes subdirectorios) y centos03 el directorio /lib (ocupa 207 MB y está formado por 3.746 archivos distribuidos en diferentes subdirectorios). Las órdenes que se emplearán para realizar dichas transferencias serán las siguientes:

[root@centos02 ~]# time cp –r /etc /shared

[root@centos03 ~]# time cp –r /lib /shared

El directorio /shared será la carpeta temporal utilizada para las pruebas y ubicada en el espacio de almacenamiento a testear. Los comandos de escritura serán lanzados simultáneamente durante la prueba, al igual que los de borrado para la suya.

A su vez, otra de las pruebas consistirá en el borrado de dicha información. Centos02 eliminará el directorio /lib y centos03 /etc.

[root@centos02 ~]# time rm –rf /shared/lib

[root@centos03 ~]# time rm –rf /shared/etc

En las siguientes gráficas puede observarse el tiempo empleado por cada uno de los nodos para los diferentes sistemas de almacenamiento compartido que han sido analizados.


Copiado de directorios recursivamente



Borrado de directorios recursivamente

Nov 3, 2009

Kubuntu 9.10 Karmic Koala

El Jueves 29 de Octubre de 2009 fue liberada la versión 9.10 de Ubuntu/Kubuntu, más conocida como Karmic Koala.



Entre sus principales novedades podemos citar las siguientes:
  • Kernel 2.6.31.
  • KDE 4.3.2.
  • Compilador gcc 4.4.
  • Sistema de archivos ext4 por defecto.
  • GRUB2 como nuevo gestor de arranque.
  • Nuevos plasmoides (Microblogging, Google Calendar, Facebook, conector de imágenes a Flickr y otros sitios de fotos, etc.).
  • Edición especial para notebooks.

Una de las cosas que llama la atención al arrancar Kubuntu 9.10 es la reducción del tiempo de carga del sistema operativo. Para Kubuntu 8.04 teníamos los siguientes tiempos:

  • Arranque: 15 sg
  • Apagado: 12 sg

Y ahora para Kubuntu 9.10:

  • Arranque: 12 sg
  • Apagado: 12 sg

Otra de las características a destacar es la integración de KDE4 con OpenOffice, con lo que todas las aplicaciones de esta suite se mostrarán con el tema de por defecto de KDE4, Oxígeno, aparte de poder utilizar los cuadros de diálogo de abrir y guardar documentos de KDE.


Ayatana ha sido integrado con el propio escritorio. De esta forma todas las notificaciones generadas por las aplicaciones aparecen de forma nativa en la barra de tareas.


Kubuntu 9.10 también incluye la última versión de KPackageKit, el cual ofrece nuevas notificaciones, historial y mayor eficacia debido a la correción de errores.


El popular grabador de CDs/DVDs también ha sido portado a KDE4.


El plasmoide KNetworkManager ha sido notablemente mejorado, ganando en robustez e incorporando nuevas funcionalidades adicionales.


Por otra parte, QtCurve aporta un refinamiento a las aplicaciones GNOME, otorgándolas una apariencia más acorde con KDE. Esta integración con GTK+ puede ser configurada ahora desde KDE.


Y por último, también destacaría el nuevo sistema de navegación para las Preferencias del sistema.

Oct 26, 2009

Pruebas de rendimiento sobre sistemas de almacenamiento compartido

A lo largo de varios artículos se van a analizar distintas arquitecturas de almacenamiento compartido en red, con el objetivo de evaluar sus rendimientos en base a distintos tipos de operaciones: lectura, escritura, latencias, creación de ficheros, búsquedas, etc. Para ello se utilizarán varias herramientas de benchmarking que se tienen en Linux para tal fin: cp, IOZone y Bonnie++.

Un sistema de almacenamiento compartido es una arquitectura formada por un área de datos a la que podrán acceder de manera concurrente múltiples procesos, teniendo en cuenta que dicho espacio deberá estar correctamente protegido por alguna clase de mecanismo que arbitre su acceso, todo ello con el objetivo de evitar posibles casos de corrupción de datos.

La forma tradicional de acceso compartido suele diseñarse en base a un sistema de ficheros ext3 exportado a través de un servicio NFS. Ext3 no es un sistema de archivos válido para compartir datos, ya que no está diseñado para arbitrar bloqueos entre accesos, y en consecuencia, se podrían dar situaciones de corrupción de datos en caso de que varias máquinas montasen paralelamente el mismo sistema de archivos.

Por lo tanto lo que se hace es exportar dicho sistema a través de NFS, el cual sí que proporciona control de acceso, permitiendo de esta forma que varios nodos puedan acceder concurrentemente al mismo área de almacenamiento sin ningún tipo de problema.

Otra de las alternativas pasa por la utilización de sistemas de ficheros (GFS, OCFS, etc.) especialmente diseñados para que varias máquinas puedan acceder simultáneamente a ellos, y sea el propio sistema de archivos el que ofrezca los mecanismos necesarios para arbitrar las operaciones de entrada/salida.

Esta clase de sistemas de archivos podrá exportarse mediante NFS, o bien a través de otras clases de tecnologías (GNBD, iSCSI, etc.) que permitan exportar los dispositivos de bloque directamente en crudo, sin necesidad de tener que montar previamente un sistema de ficheros.

Los sistemas de almacenamiento compartido en red que van a ser analizados en los próximos artículos con el objetivo de evaluar su rendimiento serán los siguientes:

Básicamente se utilizarán dos sistemas de archivos distintos, GFS2 y ext3, los cuales serán accedidos a través de diferentes tecnologías (GNBD, iSCSI y NFS), todas ellas empleando redes TCP/IP de tipo Ethernet.


El espacio de almacenamiento compartido residirá en el nodo centos01, el cual será el encargado de exportarlo a los otros dos nodos restantes que conforman el sistema de almacenamiento en red: centos02 y centos03.

GFS2 (Global File System 2) es un sistema de ficheros nativo creado por Red Hat y distribuido bajo licencia GNU, que puede ser utilizado de forma local (como por ejemplo ext3) o en cluster, de manera que varios nodos puedan estar trabajando simultáneamente sobre él sin peligro a que se corrompan los datos. El tamaño máximo de almacenamiento soportado es de 8 EB.

Ext3 (third EXtended Filesystem) es un sistema de ficheros basado en journaling, en donde se emplean registros temporales o journals antes de realizar el grabado de los datos en los bloques, todo ello con el objetivo de asegurar la integridad de la información. El tamaño máximo de almacenamiento que soporta ext3 es de 32 TB.

GNBD (Global Network Block Device) proporciona acceso a almacenamiento de bloques sobre una red Ethernet. GNBD es una solución totalmente software que permite compartir de forma directa un dispositivo de bloque a través de una LAN.

iSCSI (Internet Small Computer Systems Interface) permite la interconexión directa entre dispositivos de almacenamiento y computadores, encapsulando para ello el protocolo SCSI (familia de protocolos para comunicaciones con dispositivos de entrada/salida, especialmente dispositivos de almacenamiento) a través de una red TCP/IP. iSCSI puede utilizar tarjetas hardware dedicadas o emplear iniciadores iSCSI junto con targets (objetivos) SCSI para establecer la conectividad a través de tarjetas Ethernet.

NFS (Network File System) es un protocolo perteneciente al nivel de aplicación utilizado para crear sistemas de ficheros distribuidos, el cual permite que varios nodos puedan acceder de forma simultánea a distintos archivos remotos. Todas las operaciones de escritura son síncronas, es decir, la tarea se da por finalizada cuando realmente se ha terminado de escribir el último byte.

Los tres nodos empleados se corresponderán con sendas máquinas virtualizadas a través de una VMware ESX Server 3.5. El sistema operativo de cada uno de los equipos será una distribución Linux de tipo CentOS, concretamente la versión estable 5.3 de 64 bits.

Las características hardware asignadas a cada máquina virtual serán las mismas para todas ellas, pudiéndose observar en la siguiente tabla:


El nodo centos01 contará con un disco duro adicional de 64 GB sobre el cual se realizarán las pruebas de rendimiento, y estará compartido para las máquinas centos02 y centos03 a través de una red TCP/IP.

Y ya por último, decir también que todas las áreas de almacenamiento de los tres sistemas residirán en la misma LUN (Logical Unit Number), estando ésta ubicada en un datastore de NetApp (conjunto de discos duros externos accedidos a través de fibra óptica).

Oct 21, 2009

CentOS 5.4 disponible!

Ya se encuentra disponible en los repositorios de CentOS su nueva versión 5.4.

CentOS (Community ENTerprise Operating System) es una distribución de Linux que viene a ser un clon binario de RHEL (Red Hat Enterprise Linux), compilada y generada a partir del código fuente que Red Hat libera, y destinada principalmente al ámbito empresarial o corporativo, ya que es un sistema operativo especialmente diseñado para realizar tareas de servidor.


Entre las principales novedades de CentOS 5.4 cabe destacar las siguientes:
  • El kernel continúa siendo el mismo (2.6.18), pero se ha incluido soporte para el sistema de ficheros ext4.
  • Soporte oficial para KVM como tecnología de virtualización (se mantiene el soporte a XEN hasta el año 2014).
  • Actualización del soporte ofrecido a HBAs (Host Bus Adapter), tarjetas de red y chipsets.
  • Soporte para FCoE (Fiber Channel over Ethernet).
  • Nuevos drivers para tarjetas de red que funcionan a 10 Gb.
  • Activación del parámetro GRO (Generic Receive Offload) en los paquetes TCP/IP, con el objetivo de aumentar el rendimiento de las comunicaciones sobre redes de alta velocidad.
  • Actualización del compilador gcc a la versión 4.4.
  • CIFS clusterizado. La actualización a la versión 3.3 de Samba configurado junto con GFS2, permite implementar un cluster activo-activo de nodos de almacenamiento basados en el protocolo CIFS.
  • FUSE. El módulo de FUSE (Filesystem in Userspace) incluido en el sistema posibilita a los usuarios el montaje de sistemas de archivos basados en esta clase de tecnología (GlusterFS, SSHFS, GmailFS, etc.).
  • KDE 3.5.4 y GNOME 2.16.

Para actualizar desde una versión de CentOS 5.3 a una 5.4, tendríamos que ejecutar los siguientes comandos:

[root@centos ~]# yum -y upgrade --skip-broken

[root@centos ~]# yum -y update

Al finalizar el proceso de actualización, sólo nos que quedará reiniciar el sistema.

Oct 18, 2009

Desbloquear archivos en Windows con Unlocker

Unlocker es una de esas herramientas que cuando te ves obligado a trabajar con sistemas Windows, te puede salvar la vida.

Puede darse el caso de que un momento dado tengamos la necesidad de leer, modificar o borrar un determinado archivo, y también puede ocurrir que ese archivo esté bloqueado.

Un virus por ejemplo ha podido infectar una DLL del sistema y al tratar de borrarla, Windows nos lo impide por tratarse de una librería del sistema operativo. O por ejemplo que una cierta aplicación tenga bloqueado un fichero y nosotros no podamos editarlo debido a que lo tiene abierto.

Para situaciones de este tipo podemos recurrir a una herramienta cuya misión es la de desbloquear dicho archivo bloqueado y darle el control al usuario: Unlocker.

Cuando se instala Unlocker en Windows, éste se integra con el propio explorador, de tal forma que si hacemos clic con el botón derecho del ratón sobre un archivo, tendremos a nuestra disposición un nuevo comando denominado Unlocker, el cual tendrá la finalidad de desbloquear dicho archivo en caso de que éste se encontrara bloqueado.


Además Unlocker da la posibilidad de realizar una serie de acciones adicional en el objeto sobre el que ha sido ejecutado: Eliminar, Renombrar y Mover.