Spiga

Comparación: OpenStack vs VMware vCloud


Este post trata de realizar una comparación, desde diferentes puntos de vista, de dos de las soluciones IaaS más implantadas del momento, como son OpenStack y VMware vCloud. Sin embargo, establecer una comparación directa entre ambas soluciones no es una tarea sencilla, ya que, aunque hay algunas partes de la funcionalidad de los proyectos OpenStack y los productos de VMware que compiten en cierto sentido, el enfoque general y la filosofía de ambos ecosistemas es totalmente diferente [1].

Las soluciones Vmware como ESXi hypervisor,  vSphere y vCenter están enfocadas a la virtualización y no a clouds privados, por lo que no incorporan muchas de las funcionalidades ofrecidas por OpenStack (en especial las referidas a la orquestación, automatización, elasticidad, análisis de errores y almacenamiento de objetos [2, 3, 4]). Por consiguiente, se ha escogido vCloud para este artículo, al estimarse que es el producto VMware que podría ser más equivalente a OpenStack para realizar la comparación.


Funcionalidades técnicas
 
La siguiente tabla recoge una comparación simple y de alto nivel [5] de las funcionalidades ofrecidas por OpenStack y Vmware vCloud:



Funcionalidad
OpenStack
Vmware vCloud
Capa de virtualización
Virtualización tipo 2 – Libvirt sobre Linux. Soporta varios hypervisores: XEN, KVM, HyperV, ESX…
Virtualización tipo 1 – bare metal; sólo soporta vSphere.
Gestión
Open API, Command line, consola Web, herramientas de orquestación. Componentes distribuidos: almacenamiento, redes, computación…
Consola web, API. Requiere contar con vCenter para gestionar de forma centralizada los pools de recursos, nodos y almacenamiento.
Almacenamiento
Almacenamiento de bloques u objetos, escalado vertical u horizontal,  compatible con dispositivos NAS.
Sistema de ficheros tradicional, como NFS, o la solución propietaria VMFS con vCenter.
Redes
Direct connected, non-routable, DHCP. Gestionadas desde la línea de comandos, API o consola web…
Direct connected, non-routable, DHCP. Requiere vCloud Networking and Security.
Monitorización del uso de recursos
Todos los componentes envían mensajes por cada evento.  Éstos se gestionan por un AMQP.
Requiere VMware Chargeback Manager
Instancias
Se pueden lanzar instancias desde imágenes o instantáneas.
vApps o VMs existentes deben ser importadas y entonces se ofrecen como servicio.
Compatibilidad
con clouds
públicos
Compatibilidad con AWS CloudFormation y la API de EC2.
vCloud Connector conecta un vCloud privado con VMware vCloud público.
Soporte / Dependencia del
fabricante
Cientos de empresas de todo el mundo ofrecen soporte técnico y soluciones a medida
vCloud es un producto que pertenece y es comercializado por VMware.
Licencia
Libre
Propietaria

Tabla 1 – Funcionalidades técnicas ofrecidas por OpenStack y VMware vCloud


Coste de adquisición de las licencias

La política de precios de los productos VMware no es sencilla, por lo que es recomendable contactar con un partner que comercialice los productos en España para realizar un estudio a medida. Sin embargo, la tabla 2 permite hacerse una idea del coste adquisición de las licencias para nuestra infraestructura



Producto
Precio de licencia
1 año de soporte y suscripción
VMware vCloud Suite Standard
EUR 4,495.00
Basic
EUR 943.37
Production
EUR 1,123.23
VMware vCloud Suite Advanced
EUR 6,745.00
Basic
EUR 1,415.50
Production
EUR 1,685.29
VMware vCloud Suite Enterprise
EUR 10,350.00
Basic
EUR 2,170.91
Production
EUR 2,584.59

Tabla 2 – Precios de licencia y 1 año de soporte de vCloud Suite

Las licencias de vCloud Suite se conceden por procesador, como vSphere Enterprise Plus, que actúa como base para todas las ediciones de vCloud Suite. Todas las máquinas virtuales de las CPU de vCloud Suite 5 tienen derecho a todos los componentes incluidos en esa edición de vCloud Suite [6].

OpenStack, por su parte, se distribuye con una licencia libre que permite su uso sin restricciones de forma gratuita.

Tipo de licencia


Elegir una solución privativa para un componente tan importante en una organización como es el software para la infraestructura de cloud, es hacer depender toda la infraestructura de la organización del pago constante de licencias de uso y enormes limitaciones en cuanto a la extensión, modificación o adaptación del mismo a las características propias [7].

Optar por software libre no es solo una cuestión económica a corto plazo, es un planteamiento de independencia tecnológica y fomento de la libre competencia
y del desarrollo innovador local. El software privativo está dominado por poderosas empresas estadounidenses (como VMware) y la alternativa que debería plantearse firmemente en Europa, tal y como se recoge en los informes sobre cloud computing de la Comisión Europea [8,9], es optar incondicionalmente por el software libre, que permite que las empresas compitan entre sí de forma justa y equitativa.


Tendencia y previsiones


El desarrollo de software para IaaS ha sido uno de los temas candentes de los últimos años en las tecnologías de la información, y en concreto el software OpenStack se ha convertido en foco de atención de todo el sector, como puede comprobarse en la figura siguiente obtenida de Google Trends, que compara las búsquedas en función de palabras claves.



Imagen 1 - Comparación en las búsquedas de los últimos años en Google de los términos vCloud y OpenStack

Esta diferencia en el número de búsquedas en Google no se produce por casualidad, sino que se debe, por un lado, al impresionante ritmo de desarrollo que se sigue en OpenStack (con una nueva versión cada 6 meses) y, por otra parte, a su acogida en el mundo empresarial, donde todo tipo de compañías y organismos están utilizando esta plataforma para instalar sus clouds públicos y privados.

Por estos motivos, optar por una opción de software libre para el software del cloud no sólo incluye enormes ventajas desde el punto de vista de la independencia tecnológica o de gastos por las licencias de uso, sino que además desde un punto de vista puramente técnico y de usabilidad, los proyecto de software libre para IaaS son una opción competitiva con cualquier producto privativo hoy en día y parece ser que serán en muchos aspectos mejores en un futuro muy cercano dado el enorme ritmo de desarrollo que tienen en el momento actual [10].


Con todos estos datos, ¿adivináis qué solución es la que se decidió utilizar para montar el cloud privado del IES Gonzalo Nazareno? :-)

Midiendo el impacto del Carrier-Grade NAT sobre las aplicaciones en red

Este post es un resumen del rfc7021 'Assessing the Impact of Carrier-Grade NAT on Network Applications', que trata de evaluar el posible impacto del uso de NAT444 por parte los ISPs para seguir ofreciendo servicio IPv4 a sus clientes durante la transición a IPv6. Esta tecnología añade un Carrier-Grade NAT (CGN) en la red del proveedor de servicios de internet, lo que implica realizar NAT dos veces, una en la conexión del cliente a la red del ISP y otra en la red del ISP. Un grupo de organizaciones ha probado el impacto de NAT444 sobre el funcionamiento de muchos servicios y aplicaciones populares de Internet utilizando diferentes escenarios, topologías de red y equipamiento de distintos fabricantes, identificando las áreas donde esta segunda capa de NAT provoca problemas de comunicación.





Servicios que dejaron de funcionar

Varias aplicaciones peer-to-peer fallaron y no superaron los tests, en concreto juegos peer-to-peer con Xbox y llamadas SIP peer-to-peer con el cliente PJSIP. Muchos dispositivos CGN usan NAT "full cone" de forma que una vez se mapea un puerto para un servicio externo se acepten conexiones de entrada en ese puerto. Sin embargo, algunas aplicaciones no enviarion tráfico saliente primero y, por tanto, no se abrió el puerto a través del CGN. Otras aplicaciones trataron de abrir un puerto fijo; en estos casos el servicio funciona para un único usuario, pero falla cuando varios usuarios tratan de usar el mismo puerto. Tampoco funcionaron correctamente aplicaciones como BitTorrent y uTorrent cuando realizaron peer-to-peer seeding.Sesiones FTP con servidores detrás de dos NAT también fallaron. Y el tráfico multicast tampoco se envió a través del CGN.

Servicios que sufrieron un impacto en el rendimiento

Transferencias de ficheros de gran tamaño (entre 750 MB y 1.4 GB) y sesiones múltiples de streaming de vídeo iniciadas en un único cliente en la misma red detrás del CGN sufrieron una reducción del rendimiento comparándolo con los resultados obtenidos en la misma red sin usar NAT.

Otros retos de CGN

  • Pérdida de información de geoposicionamiento.
  • Identificación de la responsabilidad al producirse un abuso.
  • Anti-spoofing. Pueden producirse situaciones en las que se disparen mecanismos antispoofing o antiDDOS, produciendo pérdida de conectividad para algunos usuarios, al superarse los límites de conexiones permitidas desde una dirección IP.


Consideraciones relativas a la seguridad

En general, como un dispositivo CGN comparte una dirección IPv4 con múltiples usuarios, estos dispositivos suponen un objetivo atractivo para realizar ataques DOS. Además, si una dirección IP es añadida a una lista negra (por ej. de SPAM) se podría producir un problema de conectividad al resto de usuarios legítimos de ese CGN.

Mitigación del impacto del CGN

Afortunadamente existen varios métodos que podrían reducir el impacto del CGN en los servicios de internet:
  • Peer-to-peer y gaming--> Uso de un proxy.
  • Geoposicionamiento --> Desplegar el CGN cerca del borde de la red; usar asignación de IP y puerto regional.
  • Registro de peticiones para problemas legales --> Registro determinístico; compresión de datos; registro puertos bulk.
 Aunque, sin duda, la situación ideal sería que los ISPs acelerasen la transición a IPv6 y comenzaran a ofrecer este servicio a sus usuarios.

Resumen del curso OpenGoverment en UPO

Esta semana he asistido a un curso de verano sobre Gobierno Abierto organizado por la Universidad Pablo Olavide de Sevilla. Este curso, desarrollado en dos jornadas, tenía el objetivo de presentar los conceptos básicos sobre gobierno abierto, datos abiertos y reutilización de información pública; ofrecer a los asistentes la posibilidad de utilizar herramientas que permiten la apertura de datos en entidades locales; y la de conocer de primera mano las experiencias de organismos con veteranía en transparencia y participación ciudadana, como el ayuntamiento de Zaragoza.

Jueves 18

La primera charla fue impartida por César Calderón, director ejecutivo en Pensamiento Público y autor del libro (disponible para consulta y descarga) Open Goverment, en la que se realizó una introducción a la idea de gobierno abierto, se habló sobre transparencia, participación y colaboración y se presentaron unas líneas generales de medidas a realizar para poder ofrecer a los ciudadanos un gobierno abierto.

A continuación, María Jesús Fernández, responsable de la web municipal y del proyecto Open Data del Ayuntamiento de Zaragoza, nos contó de primera mano cómo se habían planteado estas ideas en Zaragoza, cómo habían ido evolucionando, qué problemas se han encontrado durante estos años y, en definitiva, nos habló desde su experiencia de los beneficios que ha supuesto para los ciudadanos (y también para las administraciones) esta apertura de datos con ejemplos reales de la mejora en la eficiencia y la eficacia de los servicios municipales.

Ya por la tarde, Antoni Gutierrez-Rubí, socio director de Laboratorio de Tendencias y director de Ideograma, en una charla muy filosófica nos ofreció su visión sobre cómo debe ser la comunicación en un gobierno abierto y nos habló de su ideal de portal web como servicio al ciudadano, donde una administración con datos sobre cada individuo podría ofrecer servicios personalizados de forma que los recursos se administraran de manera más eficiente. Durante su ponencia, Antoni expuso sus ideas sobre los cambios en la concepción de las naciones, pasando de la nación territorio a la nación red, y redefinió el espacio público como un acuerdo entre ciudadanía, administraciones públicas y corporaciones, cada uno desde sus competencias. Para finalizar Antoni nos habló de su experiencia como ponente en la tramitación de la Ley de Transparencia española y nos presentó MAPO, una herramienta para visualizar las intervenciones de los expertos ponentes.


Para finalizar la jornada, Pablo Martín, arquitecto de código abierto, científico de datos y miembro fundador de OpenKratio, impartió un taller para ayudar a corporaciones locales con pocos recursos a ofrecer un gobierno abierto a sus ciudadanos utilizando herramientas de software libre como CKAN o DataHub.


Viernes 19

La mañana del viernes comenzó con Alberto Abella, presidente de la Open Knowledge Foundation Spain, que analizó los impactos de la publicación de datos públicos, las necesidades de su acceso y las perspectivas y necesidades de futuro desde un punto de vista empresarial y ciudadano. Alberto nos habló, entre otras cosas, de Meloda, MEthdoLOgy for assessing open DAta sources, una metodología que evalúa el nivel de apertura y calidad de los datasets publicados equivalente a la métrica 5 estrellas de Tim Berners-Lee, pero teniendo en cuenta los aspectos legales; y nos presentó también la iniciativa School of data, que pretende enseñar buenas prácticas para publicar datos de forma correcta.

Y, para finalizar el curso, José Félix Ontañón, también de OpenKratio, impartió un taller sobre reutilización de la información pública en el ámbito local, con tres ejemplos prácticos en los que se mostró la crowdtranscripción de los presupuestos del ayuntamiento de Sevilla utilizando la aplicación CrowdCrafting; se realizaron visualizaciónes con OpenSpending y diagramas de Sanky; y se realizó una visualización de los presupuestos de Gijón (publicados en diferentes formatos estructurados y enlazados) con Tableausoftware.


Puedes encontrar más información en el Pad del curso y en el hashtag de twitter.

Saludos!

Packer, imágenes idénticas para múltiples plataformas

Hola!

A través de la lista de correo de madrid-devops he conocido Packer, una herramienta libre que permite crear imágenes idénticas para diferentes plataformas partiendo de un único fichero de configuración. Packer es ligero, multiplataforma, tiene un rendimiento muy bueno, ya que crea las imágenes en paralelo, y es posible integrarlo con Chef o Puppet para instalar y configurar software en las imágenes.

Una herramienta como Packer presenta unas características muy interesantes, ya que permite lanzar máquinas totalmente operativas y configuradas en segundos y además permite tener exactamente el mismo equipo (con unas configuraciones idénticas) en, por ejemplo, una máquina en producción en AWS, otra para pruebas en un cloud privado como OpenStack y otra en el equipo del desarrollador en VMWare o VirtualBox.

Actualmente se pueden crear imágenes para Amazon EC2 (AMI), DigitalOcean, VirtualBox (OVF) y VMWare (VMX), pero el proyecto está trabajando para ampliar la lista y además permite que cualquiera pueda colaborar para soportar más plataformas a través de plugins.

En la sección de documentación de la web de Packer pueden encontrarse  ejemplos de configuración. Así, el siguiente ejemplo muestra cómo se lanzaría una imagen Amazon EC2 AMI con Redis preinstalado.  Para ello es necesario crear una plantilla (template) que define qué queremos construir y cómo queremos configurarlo. El formato elegido para las plantillas es JSON, ya que permite que sea editado fácilmente por personas y que sea generado de forma automática por un equipo.

El contenido del template ejemplo.json sería el siguiente:

{
  "builders": [{
    "type": "amazon-ebs",
    "access_key": "YOUR KEY HERE",
    "secret_key": "YOUR SECRET KEY HERE",
    "region": "us-east-1",
    "source_ami": "ami-de0d9eb7",
    "instance_type": "t1.micro",
    "ssh_username": "ubuntu",
    "ami_name": "packer-example {{.CreateTime}}"
  }],

  "provisioners": [{
    "type": "shell",
    "inline": [
      "sudo apt-get update",
      "sudo apt-get install -y redis-server"
    ]
  }]
}

A continuación, lo único que habría que hacer para lanzar la imagen sería validar la plantilla:

$ packer validate ejemplo.json

Y, por último, lanzar la imagen:

$ packer build ejemplo.json


Packer se trata por tanto de una herramienta ideal para la integración y la entrega continua (continuous delivery), ya que se puede usar para generar una nueva máquina para múltiples plataformas por cada cambio que se produzca en Chef o Puppet, lo que no sólo se traduce en mejoras en la estabilidad frente cambios en la infraestructura, sino que es un sistema perfecto para mantener la consistencia en el entorno de trabajo desde el desarrollo hasta los equipos en producción.
 

Acceso a la universidad y movilidad social

En Reino Unido, uno de los países del mundo con peores datos de movilidad social donde los jóvenes que pertenecen al 20% más privilegiado (económicamente) tienen 8 veces más probabilidades de estudiar en una de las mejores universidades que los jóvenes del 20% menos aventajado, se acaban de publicar dos nuevos informes que demuestran que los alumnos de institutos públicos obtienen mejores resultados en la universidad que los estudiantes de institutos privados.

Estos estudios de las Universidades de Cardiff y Oxford Brookes, que analizan los resultados de sus estudiantes en los últimos años teniendo en cuenta diversos factores, concluyen que "fijando el resto de factores analizados, los alumnos que provienen de institutos privados consiguen peores resultados que los alumnos que han estudiado en institutos públicos".

Estos informes se unen a la lista de estudios que denuncian esta situación y solicitan modificar las políticas de admisión de las universidades británicas, cuyo primer filtro suele limitarse a comparar las notas obtenidas en el instituto, para incrementar el número de estudiantes de centros públicos, ya que queda demostrado que su rendimiento será superior. Así, en uno de los informes se afirma que "si seleccionas dos estudiantes con las mismas notas, que estén estudiando el mismo curso, uno que provenga de un centro público y otro de un centro privado, las estadísticas indican que el del centro público tendrá unos resultados superiores al del centro privado".

Lo escandaloso de esta situación es que, aunque en Reino Unido sólo hay un 6% de estudiantes de institutos privados, año tras año las mejores universidades seleccionan a gran cantidad de esta minoría de alumnos discriminando a estudiantes de institutos públicos, ya que cada universidad define sus propios criterios de admisión.

En España, donde hasta el momento tenemos unos datos de movilidad social mejores que los de Reino Unido, el examen de Selectividad ha servido durante décadas como un medio para certificar los conocimientos adquiridos por los estudiantes y para determinar un orden de acceso a las universidades españolas. Esta prueba permitía que alumnos de centros públicos con un expediente notable que obtuvieran una buena nota en Selectividad pudieran competir por acceder a cualquier universidad con estudiantes de centros privados con un (muy habitual) expediente sobresaliente que en Selectividad no conseguían una nota tan alta.

La nueva ley de educación, LOMCE, ha eliminado este examen de acceso a la educación universitaria y, a partir de 2014, cada universidad establecerá sus propios criterios de acceso. Esta modificación de la selección del alumnado solicitante (descrita en el Artículo 38 de la ley) podría llevar a nuestro país a una situación similar al bochornoso caso del Reino Unido. Si además se tiene en cuenta que los alumnos tendrán que visitar distintas universidades para realizar las diferentes pruebas de acceso, es evidente que los estudiantes con menos ingresos tendrán más problemas para poder realizar pruebas en centros de distintas localidades, lo que vulneraría los principios de igualdad, mérito y capacidad que deben regir las universidades públicas.

Por tanto, teniendo en cuenta el imprescindible papel que juega la universidad en el desarrollo de la movilidad social y que los países que tienen una mayor movilidad social tienen una mejor calidad de vida (que repercute en una menor tasa de asesinatos, de enfermedades mentales, de obesidad, de encarcelamientos, de embarazos no deseados en adolescentes o de abuso de drogas, entre otros muchos parámetros), la eliminación de la Selectividad y el establecimiento de criterios propios de acceso por universidades no puede más que calificarse como una medida injusta, que perjudica a la igualdad de oportunidades que todos deberíamos desear y que, de mantenerse en el futuro, va a repercutir de forma negativa en la calidad de vida de todos los ciudadanos españoles.

Resolución de problemas tras instalación de NetGUI

Al instalar NetGUI en algunas máquinas Debian Wheezy hemos detectado ciertos problemas de funcionamiento en la herramienta. A pesar de que parecía instalarse correctamente y de que era posible abrir escenarios, añadir máquinas y routers y conectar interfaces a los switches, a la hora de arrancar los dispositivos no aparecían sus consolas de administración.

Tras ponerme en contacto con Eva M. Castro, del grupo GSYC de la Universidad Rey Juan Carlos (creadores del proyecto), me ha explicado unos sencillos pasos para poder detectar posibles errores. Para ello se puede hacer uso del script check_configuration.sh, que comprueba si se cuenta con todo lo necesario para el correcto funcionamiento de Netkit:

$ cd /usr/local/netkit
$ export NETKIT_HOME=/usr/local/netkit
$ export PATH=/usr/local/netkit/bin:$PATH

$ export MANPATH=:/usr/local/netkit/man
$ ./check_configuration.sh

La salida del script informa al usuario de los componentes que no se encuentran disponibles y, por tanto, de cómo subsanar el problema. En un par de casos que hemos probado esta mañana el problema se debía a que el sistema, de 64 bits, no podía ejecutar aplicaciones de 32 bits, por lo que instalando el paquete libc6-i386 se ha resuelto la situación.

Por otra parte, en ocasiones es necesario aumentar la memoria de las máquinas virtuales de NetGUI al menos a 24 MB o 32 MB, valor que por defecto se encuentra configurado a 16 MB. Para ello es suficiente con ejecutar la siguiente instrucción:

export NETKIT_MEMORY=24

Saludos!

Mis materiales son míos... ¿no?

Hay pocas cosas más molestas en Internet que tratar de acceder a los materiales didácticos desarrollados para cursos de universidades o de institutos y encontrarte con que el acceso a los contenidos está bloqueado y sólo es accesible para los usuarios registrados. Tanto en mi época de estudiante como ahora que soy profesor, cada vez que me encuentro con este tipo de situaciones me siento totalmente decepcionado. Sobre todo si se trata de webs de centros educativos públicos o, peor aún, si estoy mirando los sitios que tienen enlaces a mis materiales y decido seguirlos para ver si encuentro algo nuevo, distinto o con otro enfoque, y me doy con la puerta en las narices.

En ocasiones, cuando hablo de este tema con amigos que no son docentes ni informáticos y que no están al tanto del mundo de la cultura libre, me cuesta hacerles entender mi postura y las razones por las que publico todos los materiales que desarrollo con una licencia libre. Por tanto, voy a tratar de explicar mis motivaciones:

  • Quizás el primer motivo tiene que ver con no hacer sentir esa misma frustración de la que hablaba a la gente que visite mi sitio web. 
  • Pero además, si un alumno de otro instituto o universidad consulta mi documentación y consigue entender algún aspecto que de otra forma no hubiera sido posible, es evidente que, como profesor que quiere transmitir conocimiento, me alegro y considero que es positivo. 
  • Si es un profesor el que usa mi documentación para preparar sus clases y eso hace que sus clases sean mejores, pues también me alegro. Y creo que también es positivo para él y para sus alumnos. 
  • Pero es que, además, los materiales que yo preparo están basados en su mayor parte en cosas que he leído o escuchado en un artículo, unas transparencias, un vídeo o una conferencia, y yo, honestamente, aporto muy poco que sea realmente nuevo o propio. Se trata, por tanto, desde este punto de vista, de una deuda moral con la gente que ya publica sus materiales.
  • Por otra parte, al publicar mis materiales en Internet y saber que antes o después alguien los leerá y puede que se distribuyan, la vergüenza torera hace que ponga especial cuidado antes de publicarlos, tratando de evitar despistes, descuidos o afirmaciones erróneas. Y, de esta forma, mis estudiantes se benefician al recibir una documentación que ha sido repasada a conciencia.
  • Y, por último, aunque no pueda parecerlo, hay mucha gente interesada en los mismos temas que uno publica, sea los que sean, y al colgarlos en Internet seguro que alguien con tus mismas aficiones contactará contigo para felicitarte, realizar algún comentario u ofrecerte algún tipo de colaboración, y eso siempre resulta muy gratificante.
Por tanto, ¡todo son ventajas! La verdad es que me esfuerzo por entender por qué alguien quiere restringir el acceso a sus materiales, pero no lo consigo, siempre que partamos de la base de que se trata de un profesional que hace su trabajo lo mejor posible. Y menos aún si se trata de material elaborado para impartir algún curso de un centro educativo público y, por consiguiente, ha sido pagado con el dinero de todos. No creo que restringir el acceso a los materiales didácticos sea beneficioso para la sociedad en ningún sentido, sino más bien lo contrario.

Y a ti, ¿qué te mueve a publicar o no publicar tus materiales?

Clústers de Alta Disponibilidad

En el último tema del curso Seguridad Informática y Alta Disponibilidad del ciclo Administración de Sistemas Informáticos en Red hemos estudiado cómo funcionan y cómo se configuran clústers de alta disponibilidad con software libre. Las diapositivas que hemos utilizado para las sesiones, que están basadas en una serie de artículos publicados por Miguel Vidal y José Castro de FLOSSystems y contienen enlaces a los talleres de STR Sistemas, siguen el siguiente esquema:

  • ¿Qué es un clúster de Alta Disponibilidad?
  • Tipos de configuraciones
  • Conceptos básicos: failover, heartbeat, split-brain, quorum, STONITH
  • Linux-HA: Corosync, Pacemaker
  • Práctica 1: Sencillo clúster de alta disponibilidad con Linux-HA
  • Práctica 2: Replicación de MySQL
  • Práctica 3: Balanceadores: ldirectord vs haproxy
  • Práctica 4: Clúster Apache + PHP + Memcached


Clústers Alta Disponibilidad from Jesús Moreno León


Espero que os puedan resultar interesantes. ¡Un saludo! 

Test de intrusión (y II)

Hola,

Estas diapositivas del curso Seguridad Informática y Alta Disponibilidad del Ciclo Formativo de Grado Superior de Administración de Sistemas en red , son la segunda parte de un tema en el que estamos estudiando las técnicas de ataques y los tipos de amenazas a las que se enfrentan las organizaciones en la actualidad.

En concreto, en esta segunda entrega seguimos hablando de los Test de intrusión o test de penetración (pentest), un método para evaluar la seguridad de un sistema informático simulando un ataque desde una fuente maliciosa.

Si en la primera parte  nos centramos en las técnicas de recopilación de información, hoy vamos a estudiar la búsqueda de vulnerabilidades para los sistemas descubiertos, la explotación de dichas vulnerabilidades y la generación de informes para su corrección.

Estas presentaciones son obras derivadas del artículo Test de intrusión de Chema Alonso y de los seminarios de formación impartidos por Antonio Guzmán y Marta Beltrán de la URJC de Móstoles.



Preparar una charla sobre Scratch para 80 niños de 8 años

Junto a mi compañero Alberto Molina el viernes pasado ofrecimos una charla sobre Scratch a unos 80 niños de 2º de primaria (7 u 8 años) del CEIP Ortiz de Zúñiga de Sevilla. La experiencia fue magnífica tanto para los alumnos, tal y como nos han transmitido sus maestras, como para nosotros, que pasamos un ratito muy divertido y emocionante... ¡nunca nos habían ovacionado así! :-)

En esta entrada quiero contar cómo preparamos la charla, las actividades previas que se realizaron en el colegio y los resultados de la misma, por si puede servirle a alguien para animarse a realizar iniciativas de este tipo con estudiantes tan jóvenes.

Tras ponerse en contacto las maestras con nosotros, ya que estaban trabajando la unidad del ordenador en clase, nos pidieron si podíamos enseñarles otros usos del ordenador más allá de los tradicionales. Así que pensamos que deberíamos preparar una sesión que ayudara a los niños a ver que los ordenadores no son máquinas que vienen ya hechas y simplemente las usamos, sino que se pueden tocar, cambiando el esquema de consumidores a creadores. En esta línea pensamos que Scratch, el software de creación de videojuegos desarrollado por el MIT, podría ser la herramienta a utilizar, ya que permite realizar cosas muy vistosas y llamativas de forma muy sencilla. Además, esta aplicación está instalada en los ordenadores de los centros educativos andaluces y los propios estudiantes serían capaces de instalarla y utilizarla en sus casas si así lo desearan.

Fase I: actividades previas

En lugar de crear los videojuegos que se nos ocurrieran a nosotros, pensamos que podría ser más interesante si utilizábamos personajes e ideas de los propios alumnos, así que las maestras les pidieron que se inventaran un videojuego y que realizaran una redacción en la que describieran el argumento junto con los dibujos de los personajes. Con estos argumentos (¡¡hay que ver qué imaginación tienen a esa edad!!), preparamos la base de varios juegos para terminarlos con ellos durante la sesión.






Imagen 1. Dibujos de los personajes de los videojuegos inventados por los alumnos


Fase II: La sesión

Comenzamos la actividad explicando por qué estábamos allí (ya que las maestras no habían querido contar nada para que fuera una sorpresa) y, para llamar su atención, elegimos un juego que todos conocieran para editarlo y modificarlo a nuestro antojo. El elegido fue esta versión de angry birds para Scratch. Tras enseñárselo y jugar una partida rápida, les mostramos el código del juego y les explicamos que esas instrucciones marcaban el comportamiento de los personajes, y que podíamos modificarlas a nuestro gusto. Y así fuimos preguntándoles qué cosas querían cambiar y realizando modificaciones, como aumentar la velocidad, hacer que los pájaros rebotasen contra las paredes, cambiar los sonidos, provocar explosiones...

A continuación, ya con el público entregado ;-), creamos un par de juegos partiendo de la base que habíamos preparado previamente utilizando los personajes y los argumentos que ellos habían ideado.



 
 Imagen 2. Juego de un hada perseguida por un monstruo



 Imagen 3. Juego de la hamburguesera


A continuación realizamos un juego sobre las tablas de multiplicar, que los alumnos están trabajando en este momento del año, ambientado con una fotografía de una de sus clases que nos habían pasado las maestras.


 Imagen 4.Juego de las tablas de multiplicar
 

Y terminamos la sesión con una serie de preguntas para que los estudiantes pudieran resolver las dudas que les hubieran surgido. Durante toda la charla fuimos entregando pegatinas de Scratch que habíamos preparado para que todos los niños pudieran llevarse una a casa.



Fase III: actividades posteriores

Al finalizar la sesión se le hizo entrega de una carta para los padres de los alumnos en la que se explicaba el objetivo de la visita y se les daba información por si estaban interesados en seguir investigando en casa con sus hijos:


Estimados padres y madres,

Aprovechando que estos días hemos trabajado una unidad sobre ordenadores y tecnología, en el día de hoy 
hemos tenido la visita de dos profesores de informática que han colaborado con nosotros
en el desarrollo de la actividad "Aprendiendo a programar con scratch". El objetivo de esta
actividad es hacer ver a los niños cómo funciona un programa de ordenador, pero hacerlo de una 
forma divertida y amena mediante la aplicación "scratch" que permite que los niños creen sus propios juegos
de manera sencilla.

Este tipo de actividades se enmarca dentro de un movimiento global que fomenta un cambio de actitud en los 
niños frente a la tecnología, para que pasen de ser simples consumidores a creadores.

http://sociedad.elpais.com/sociedad/2013/03/07/actualidad/1362689630_904553.html

En la actividad de hoy hemos creado varios juegos con la ayuda de los niños y los tendréis a vuestra 
disposición en el blog del colegio.

Si estáis interesados en saber más acerca de este tipo de actividades o si queréis continuar aprendiendo
en casa con vuestros hijos podéis visitar el sitio web de scratch:

http://scratch.mit.edu
 


Y durante los días posteriores las maestras han seguido realizando tareas en el colegio relacionadas con la sesión de Scratch. Por ejemplo, han pedido que enviaran una postal a un amigo contándole la experiencia, y les han solicitado también que nos envíen una carta explicándonos lo que les pareció la actividad. Todas las cartas que hemos recibido son muy divertidas, pero hay dos que nos han encantado y de las que os ponemos un pequeño extracto:

Queridos Alberto y Jesús, quiero daros las gracias por todo. Quiero invitaros a un helado. Pago yo.

Hola, Alberto y Jesús. Me gustó mucho lo del otro día. Lo hice en mi casa y estaba muy chulo. Hacéis unas cosas chulísimas.

En conclusión, fue una experiencia estupenda de la que disfrutamos muchísimo. Y consideramos que es una forma sencilla de acercar a los estudiantes más jóvenes a las creaciones tecnológicas, fomentando un uso diferente de las TIC.

¡Un saludo!

Configuración de VLANs 802.1q en Linux

En esta entrada vamos a presentar un ejemplo de configuración de VLANs 802.1q en un switch gestionable Dell Power Connect 3024 y en un servidor GNU/Linux (Debian) para ilustrar el funcionamiento de este estándar. La división de la red en diferentes VLANs tiene el objetivo de aislar el tráfico entre los equipos que pertenecen a distintas VLANs, incluyendo el tráfico de broadcast, mejorando así el rendimiento y la seguridad.

La red que se quiere configurar se resume en el siguiente diagrama, en el que se puede observar que se cuenta con dos equipos, pertenecientes a las VLAN 2 y 3 y que se encuentran conectados a los puertos 2 y 3 respectivamente, y un servidor Debian con una única interfaz de red que se encuentra conectado al puerto 1. 



Por defecto, el switch viene configurado con una única VLAN 1, de la que son miembros todos los puertos del switch.


Por tanto, es necesario crear las otras dos VLANs, seleccionando los puertos adecuados.  En este paso hay que definir si los puertos que pertenecen a cada VLAN son etiquetados (Tagged) o no etiquetados (Untagged).
  • Los puertos etiquetados son aquellos por los que el switch envía las tramas añadiendo una etiqueta de 4 bytes que, básicamente, identifica la VLAN a la que pertenece cada trama. Estos enlaces por los que viajan tramas que pueden pertenecer a diferentes VLANs se llaman trunks, y a ellos suelen conectarse otros switches que necesitan conocer de qué VLAN viene cada trama para decidir si debe o no enviarla por el puerto destino, servidores que implementen VLANs o, por ejemplo, puntos de acceso MultiSSID que hagan uso de este estándar.
  • En los puertos no etiquetados se encuentran conectados máquinas o dispositivos que no requieren conocer la VLAN a la que pertenece la trama, por lo que la etiqueta no es enviada.
En nuestro ejemplo, los puertos a los que están conectadas las máquinas serán marcados como Untagged, mientras que el puerto al que se conecta el servidor Debian, que sí requiere conocer la VLAN a la que pertenece cada trama, será marcado como Tagged.



Además de definir los puertos miembros de cada VLAN, es necesario configurar el PVID (Primary VID o Default Port VLAN) de cada puerto, que establece la VLAN con la que se etiquetará cada trama que llegue desde un puerto cuando ésta venga sin etiquetar.


La configuración del switch ya está lista. Ahora debemos configurar las VLANs en el servidor Debian.

Para ello, en primer lugar, es necesario cargar el módulo 8021q:

# modprobe 8021q

La herramienta de espacio de usuario que permite al administrador configurar VLANs es vconfig, que en Debian se encuentra en el paquete vlan, y su sintaxis es muy sencilla:

vconfig add interfaz vlanID

En nuestro ejemplo, como el servidor sólo dispone de una interfaz, eth0, se configuran las VLANs 2 y 3 sobre este adaptador (evidentemente el ID de las VLANs debe coincidir con los que se usan en el switch):

# vconfig add eth0 2
# vconfig add eth0 3

Puede comprobarse en el fichero /proc/net/vlan/config si las VLANs se han creado correctamente:

# more /proc/net/vlan/config

VLAN Dev name     | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
eth0.2         | 2  | eth0
eth0.3         | 3  | eth0


Como puede verse, se han generado dos interfaces virtuales (eth0.2 y eth0.3) asociadas a eth0, y estas interfaces deben levantarse y configurarse con la dirección que corresponda. Por ejemplo:

# ifconfig eth0.2 up
# ifconfig eth0.2 192.168.2.1

# ifconfig eth0.3 up
# ifconfig eth0.3 192.168.3.1

(Suponiendo que  en la VLAN 2 se está usando el direccionamiento 192.168.2.0/24 y en la VLAN 3 se utiliza el 192.168.3.0/24)

¿Cómo funciona esta implementación en Linux? Cada vez que se envíe un paquete desde la interfaz eth0.2, se añadirá a la trama la etiqueta con el ID 2 y se enviará al switch a través de eth0. Y cada vez que se reciba un paquete en eth0 que venga etiquetado con el ID 2, se retirará la etiqueta y se reenviará a la interfaz virtual eth0.2.

¡Y esto es todo! A partir de este momento las máquinas sólo tendrán comunicación con la interfaz del servidor que pertenece a su VLAN, y estarán aisladas del resto de equipos conectados a otras VLANs.

Monitorizar puertos de un switch con Nagios

Hola!

Durante esta semana pasada, en mis clases del curso Seguridad y Alta Disponibilidad del CFGS Administración de Sistemas en Red hemos estado trasteando con Nagios y con SNMP para monitorizar el estado de los servidores,  los servicios y de los dispositivos de red de nuestra infraestructura.


Nagios es un proyecto maduro y del que existe gran cantidad de información, por lo que tan sólo me voy a centrar en esta entrada en explicar una de las características que nos ha costado algo de trabajo configurar, que es la de monitorizar el estado de los puertos de un switch por SNMP.

El primer paso consiste en identificar los OIDs soportados por tu switch, para conocer qué tipo de parámetros vas a poder monitorizar. Para esta tarea, si la documentación del fabricante no es muy detallada, puede utilizarse la orden snmpwalk, cuya salida consiste en el valor de cada uno de los objetos gestionados del dispositivo junto con su OID:

$ snmpwalk -v1 -c public 172.22.100.6 -m ALL .1 > oids.txt
$ more oids.txt
[...]
iso.0.8802.1.1.2.1.3.1.0 = INTEGER: 4
iso.0.8802.1.1.2.1.3.2.0 = Hex-STRING: B8 A3 86 72 A5 A3
iso.0.8802.1.1.2.1.3.3.0 = STRING: "swdlinkcab"
iso.0.8802.1.1.2.1.3.4.0 = STRING: "DGS-1500-52 1.00.015"
iso.0.8802.1.1.2.1.3.7.1.2.1 = INTEGER: 1
iso.0.8802.1.1.2.1.3.7.1.2.2 = INTEGER: 1
iso.0.8802.1.1.2.1.3.7.1.2.3 = INTEGER: 1
iso.0.8802.1.1.2.1.3.7.1.2.4 = INTEGER: 1
iso.0.8802.1.1.2.1.3.7.1.2.5 = INTEGER: 1
iso.0.8802.1.1.2.1.3.7.1.2.6 = INTEGER: 1

[...]

En mi caso, el switch dlink 1500DGS con el que estábamos trabajando permite ofrecer gran cantidad de información al NMS, y navegando por el archivo oids.txt encontramos el OID iso.0.8802.1.1.2.1.5.4623.1.2.1.1.1, que informa del estado de cada uno de los puertos del switch y que se representa por un entero que puede tomar los siguientes valores: 

1 : up
2 : down
3 : testing
4 : unknown
5 : dormant
6 : notPresent
7 : lowerLayerDown


Por ejemplo, para conocer el estado operacional del puerto 48 podríamos usar el plugin check_snmp (que utiliza la orden getsnmp) con las siguientes opciones:

$ /usr/lib/nagios/plugins/check_snmp -H 172.22.100.6 -c public -o 1.0.8802.1.1.2.1.5.4623.1.2.1.1.1.48
SNMP OK - 1 | iso.0.8802.1.1.2.1.5.4623.1.2.1.1.1.48=1


Por tanto, lo único que tendríamos que realizar a continuación es añadir un nuevo servicio para realizar esta comprobación, y asegurarnos de que el plugin check_snmp está configurado.

En el fichero /etc/nagios3/conf.d/servicios-switches.cfg se añade el servicio para monitorizar el puerto deseado:
#Monitorización del estado del puerto 48
define service{
       use generic-service
       host_name swdlinkcab
       service_description P.48
       check_command check_snmp!1!public!1.0.8802.1.1.2.1.5.4623.1.2.1.1.1.48
}


En el fichero /etc/nagios3/conf.d/comandos.cfg se configura el plugin check_snmp:
#'check_snmp' command definition
define command{
       command_name check_snmp
       command_line /usr/lib/nagios/plugins/check_snmp -P '$ARG1$' -H '$HOSTADDRESS$' -C '$ARG2$' -o '$ARG3$'
}

Y en el fichero /etc/nagios3/conf.d/switchs.cfg se encuentra la definición del switch:
 define host{
        use  generic-switch
        host_name  swdlinkcab
        alias  swdlinkcab
        address  172.22.100.6
        hostgroups  switches
        parents  macaco
        icon_image cook/network_switch.png
        icon_image_alt  Switch Dlink DGS-1500
        vrml_image  network_switch.png
        statusmap_image cook/network_switch.gd2

}

En la imagen podemos ver el estado actual de este switch en el que se están monitorizando los puertos utilizados, el Uptime y la conexión con el NMS.


Si se desea, porque alguno de estos puertos es especialmente importante, puede configurarse Nagios para que muestre un error crítico si el estado del puerto es down. Para ello se utiliza la opción -r regex. Por tanto, habría que añadir este cuarto parámetro tanto en el servicio como en la configuración de la orden check_snmp.

/etc/nagios3/conf.d/servicios-swithes.cfg
#Monitorización del estado del puerto 48
define service{
       use generic-service
       host_name swdlinkcab
       service_description P.48
       check_command check_snmp!1!public!1.0.8802.1.1.2.1.5.4623.1.2.1.1.1.48!1
}


/etc/nagios3/conf.d/comandos.cfg
#'check_snmp' command definition
define command{
       command_name check_snmp
       command_line /usr/lib/nagios/plugins/check_snmp -P '$ARG1$' -H '$HOSTADDRESS$' -C '$ARG2$' -o '$ARG3$' -r '$ARG4$' 
}


Con esta nueva configuración, si el estado del puerto es up (1), Nagios muestra un OK, ya que coincide con la expresión regular que el administrador ha configurado con la opción -r. Si el estado del puerto monitorizado es down (2), o cualquier otro valor que no sea 1, Nagios mostrará un error crítico.

Un saludo!