lunes, 23 de junio de 2014

Servidores DNS

Trabajo realizado por: Alejandro Rodríguez Muñoz, Daniel Lorente Cortés y Antonio Martínez García

Este trabajo trata sobre los servidores DNS, sus diferentes tipos y la instalación y configuración de un servidor DNS maestro en Windows Server y Linux.

domingo, 22 de junio de 2014

Google App Engine

Trabajo realizado por: Hans-Manuel Grenner Noguerón y Óscar Sánchez Martínez

Google App Engine se presenta como una de las opciones más competitivas a elegir cuando hay que crear una aplicación contando con pocos conocimientos acerca de servidores, en cuanto a su gestión, mantenimiento, replicación de datos, etc.

No sólo ofrece almacenamiento y tráfico gratuito hasta ciertos límites de consumo, sino también permite lanzar su aplicación en cualquier tipo de dispositivo sin tener que preocuparse de saber Objective-C, Android, etc., haciendo además uso de casi todas las funcionalidades que proporciona Google.

Son varios los lenguajes soportados tales como Java, Python, PHP y Go. Y los entornos de desarrollo junto a los plugins para GAE permiten mediante un simple clic desplegar su aplicación en los servidores de Google. Las aplicaciones resultantes sonmuy robustas y escalables.

El ejemplo desarrollado en el trabajo está disponible en: http://www.aplicacionswap.appspot.com

Costes de instalación de una granja web

Trabajo realizado por: Pablo Maciá Linares y Valentín Corral García

En este trabajo se analizan los costes de la instalación de una granja web simple con unos pocos componentes, analizando desde el coste del hardware hasta los costes de luz e internet, para más tarde comprobar  cómo se dispara el precio en gran medida a la hora de construir y acondicionar una nave industrial para un gran centro de datos.

Para ello analizamos todos los datos que pudimos obtener del centro de datos SoloGigabit de Valencia como el hardware que ellos utilizaban y las medidas de sus instalaciones.

Granja web con Azure

Trabajo realizado por: ANA BELÉN RODRIGUEZ PRADOS, OSCAR R. ZAFRA MEGIAS, ROGELIO GIL GARCÍA y JAIME TORRES BENAVENTE

El objetivo del trabajo es reflejar las posibilidades que ofrece el PAS de Windows, AZURE. En concreto, utilizando cuentas limitadas de los cuatro miembros, vamos a construir una granja web formada por 6 máquinas virtuales: 4 servidores web, un balanceador y un servidor de bases de datos.

Mostraremos como crear estas máquinas y como configurarlas para mostrar un periódico desarrollado en PHP con acceso a una base de datos MySQL.

Azure es una plataforma de nube abierta y flexible que permite compilar, implementar y administrar aplicaciones rápidamente, en una red global de centros de datos administrados por Microsoft. Puede compilar aplicaciones en cualquier lenguaje, herramienta o marco. Y puede integrar sus aplicaciones de nube públicas con el entorno de TI existente.

Es una plataforma general que tiene diferentes servicios para aplicaciones que alojan en alguno de los centros de procesamiento de datos de Microsoft para que se ejecute sobre su infraestructura (Cloud Computing).
Sus servicios más destacados son los siguientes:
  • Máquinas virtuales: Azure permite implementar una imagen de Windows Server o Linux en la nube.
  • Sitios web: Azure permite implementar aplicaciones web en una infraestructura en la nube escalable y confiable.
  • Servicios móviles: Azure proporciona un back-end en la nube escalable para crear aplicaciones de la Tienda Windows, Windows Phone, Apple iOS, Android y HTML/JavaScript.

viernes, 20 de junio de 2014

Android Server

Trabajo realizado por: Rubén Adrados Bretón y Rubén Martín Hidalgo

Cada vez los smartphones tienen más potencia y dada su movilidad se pueden llevar a cualquier parte. Es cierto que por el momento distan mucho de servidores de altas prestaciones, pero dado el avance que estamos teniendo en los últimos años en cuanto a la tecnología no podemos descartar nada para el futuro.

Hay, como en todo, cientos de aplicaciones gratuitas y de pago para montar servidores. En nuestro caso nos descartamos por Palapa Web Server por ser gratuita y su sencilla configuración.

Para el caso de la monitorización usamos Team Viewer para el caso de servidores con interfaz gráfica y JuiceSSH para los que no, es decir, para realizar una consexion ssh.

Google Compute Engine

Trabajo realizado por: David Brao Serrano y Rosa Ortega Romero

Google Compute Engine es un producto que ofrece máquinas virtuales flexibles y autoadministradas alojadas en la nube de Google. Incluye máquinas virtuales basadas en Linux que se ejecutan en KVM1. Consta de opciones de almacenamiento local y permanente una sencilla API basada en REST2 para la configuración y el control.

Puedes tener máquinas virtuales que van desde 2 núcleos hasta la más potente de 16 núcleos, dependiendo de su potencia y capacidad de almacenaje el precio de su uso es uno u otro.

Con Google Compute Engine puedes resolver problemas analítico y de procesamiento a gran escala en la infraestructura de procesamiento, almacenamiento y redes de Google.

lunes, 16 de junio de 2014

Servidores Web en Android

Trabajo realizado por: Juan Moral Fernández

Actualmente, los smartphones poseen una potencia similar a cualquier ordenador de sobremesa básico y crece exponencialmente cada año. Este aumento de rendimiento hace que los dispositivos móviles tengan un amplio abanico de usos y posibilidades. Una nueva posibilidad, es la de usar estos dispositivos como un servidor de cualquier tipo. Podemos crear un servidor web, FTP, de correo o cualquier otro que podamos imaginar o necesitar, basta con encontrar el programa adecuado.

Aquí nos centraremos en configurar un servidor web y como ejemplo, se servirá la página web creada en la asignatura “Tecnologías web”, cuyo tema es un periódico online. Para realizar dicha tarea, nos centraremos en tres programas distintos para servir webs, estos son:
- AndroPHP
- KSWEB
- Servers Ultimate

AndroPHP es el más simple de los tres. Admite PHP y MySQL y su interfaz es muy clara. Sus opciones de configuración son muy básicas, por lo que este programa no está recomendado para un usuario avanzado que necesite una gran variedad de opciones de configuración.

La gran ventaja de KSWEB es que incorpora nginx (en su versión 1.5.10). Además de nginx, también incluye LIGHTTPD, MySQL, PHP y FTP. Las opciones de configuración son muy superiores a AndroPHP, pudiendo incluso modificar los archivos de configuración de nginx y lighttpd (nginx.conf y lighttpd.conf) desde su interfaz de configuración web. Interfaz clara y sencilla.

Por último, Servers Ultimate destaca por la gran variedad de servidores que puede manejar (alrededor de unos 60 tipos), su configuración y por la gran cantidad de herramientas disponibles, que pueden ayudarnos a la configuración y mantenimiento del servidor.

domingo, 15 de junio de 2014

Google Cloud

Trabajo realizado por: Ernesto Alejo Oltra, Alberto Moreno Alcaraz, Santiago Puerta Correa y Francisco Manuel Sánchez Ramos

En este trabajo se repasan de forma rápida las opciones y herramientas que ofrece la nube de Google.

Se empieza por Compute Engine, repasando los conceptos de la arquitectura, qué es una instancia o cómo se organiza el código por regiones y zonas. Se repasa también cómo implementar una red o la seguridad en el firewall entre otras muchas cosas.

Después se sigue con App Engine, explicando los distintos servicios que ofrece a nuestras aplicaciones y qué limitaciones o potenciales tienen cada uno de ellos. Son muchos y nos hemos limitado a los que más importancia cobran si queremos preparar y ejecutar una aplicación en sus servidores.

Por último, se presentan las diferencias o similitudes entre esas tecnologías Google. La idea es tener argumentos generalizados que nos apoyen a la hora de tomar una decisión y decantarnos por uno u otro para hacer nuestra implementación.

Se detalla la prueba de carga en la que se intenta simular un millón de peticiones por segundo, siguiendo las instrucciones ofrecidas por el blog oficial.


sábado, 14 de junio de 2014

Radio Streaming en Granja Web

Trabajo realizado por: Carlos Ibáñez Partera

En este trabajo se explica, paso a paso, cómo hacer de tu equipo un servidor streaming de audio usando Icecast2 (servidor), Internet DJ Console (reproductor y envío de flujo de audio) y Qjackctl (conector de canales de audio).

Por otro lado, usando máquinas virtuales y basándose en la práctica 3 de la asignatura, se explica cómo crear una granja web con balanceador de carga que de soporte a nuestra radio.

Además, como extra, se explica cómo usar como fuente un reproductor de audio cualquiera, siempre que soporte jack, en lugar del reproductor que incluye Internet DJ Console, útil para no tener que volver a organizar la colección de música y que puedas beneficiarte de las funcionalidades de tu reproductor de música favorito.

Configuración Master-Master en MySQL

Trabajo realizado por: Samuel Carmona Soria

En este trabajo se presentan la replicación de la base de datos en mysql con configuraciones Master-Master y Master-Slave.

Se ha realizado una breve introducción a las dos configuraciones y una  comparación entre ellos.

Se muestra detalladamente con capturas propias la configuración  de la replicación master-master  y la configuración (solamente teórica) de master-slave.

Comparativa de cuatro plataformas cloud libres

Trabajo realizado por: Iris García

En este trabajo se lleva a cabo una comparativa de las cuatro plataformas cloud libres más importantes, dónde se analizan las características y servicios más relevantes de cada plataforma, su proceso de instalación, su escalabilidad y soporte de la comunidad. Finalmente se establece un ranking de caracter subjetivo.


Google App Engine

Trabajo realizado por: Bogdan Alin Muresan

Google App Engine es una tecnología PaaS ofrecia por Por Google .

En este trabajo se ha explicado paso a paso cómo preparar el entorno de desarrollo para empezar a usarla.

Se han comentado los lenguajes que soporta y el entorno de desarrollo.

El proceso de instalación del SDKs en linux es muy fácil. Una vez descargado tenemos que crear el directorio de nuestra app junto con el fichero de configuración. Una vez hecho esto, creamos la app en la página oficial de app engine  y procedemos a subir la aplicación creada de local a la infraestructura de Google.

Finalmente, Google App Engine ofrece un panel de administración muy intuitivo de nuestra aplicación.


jueves, 12 de junio de 2014

Microsoft Azure, la plataforma en la nube de Microsoft

Trabajo realizado por: Jacinto Villena Rodríguez, Ángel Jiménez y Juan Pablo Molina

En este trabajo se describen detalladamente las principales utilidades de la plataforma y cómo usar todas las opciones de implementación de las que dispone Azure.

Se han incluido numerosas capturas de pantalla, además de las explicaciones pertinentes, para que todo quede lo más claro posible.


Amazon EC2

Trabajo realizado por: Eduardo Sánchez Sánchez y Félix Parra Martínez

En este trabajo se muestra la instalación y prueba del servicio web de amazon EC2.

Para ello se han desplegado dos servidores web (instancias) en los cuales se instala el entorno LAMP, con un balanceador de carga para estos 2 servidores.

Se hace comparación de precios, diferentes características que nos ofrece el servicio y se explica paso a paso como se hizo la instalación.

Enlace a la presentación:
http://prezi.com/9ph4cbasv3ac/present/?auth_key=80b64s4&follow=eyqxvoktqy5p&kw=present-9ph4cbasv3ac&rc=ref-54273469

miércoles, 11 de junio de 2014

HTTPS e iptables

Trabajo realizado por: Mario Fernández Gómez y Pedro Gázquez Navarrete.

Con este trabajo se ha dado una pincelada de https, que es un protocolo que combina http con la encriptación para conexiones más seguras en la web. Primero se han explicado los pasos a seguir para instalar https en apache.

En el apartado de iptables se ha destacado qué es el firewall del kernel del linux que filtra paquetes en base a algunas reglas.

Por útltimo se ha hecho una demostración con algunas reglas de iptables, denegando servicios (tipo ssh o telnet) a unas ip's concretas y comprobando su correcto funcionamiento.

Se ofrecen algunos enlaces interesantes, como el de las 24 reglas más comunes de iptables, que muestra algunas reglas bastante interesantes, como por ejemplo la prevención de ataques DoS.

Zen Load Balancer

Trabajo realizado por: Jesús García Godoy 

En este trabajo se presenta Zen Load Balancer, un balanceador de carga de código libre, con una interfaz web de configuración muy sencilla e intuitiva que permite montar balancear la carga en la granja web que nosotros creemos.

Se ha detallado el proceso de instalación, que es bastante sencillo e intuitivo.

Además se describen las funcionalidades que ofrece, así como los algoritmos de balanceo que tiene implementados.
Se muestran capturas del balanceador funcionando y viendo cómo distribuye la carga. También la función de monitorización que el propio software posee.

Por último se describe el funcionamiento en clúster, aunque no se detalla dado que no se ha procedido a la implementación del mismo, una breve comparativa con nginx y haproxy, usados en prácticas de la asignatura, y una pequeña conclusión obtenida de la experiencia con el software.

Heartbleed, un problema de seguridad

Trabajo realizado por:  Alfonso Capilla Calvet, Fco Javier Garrido Lumbreras y Jose Antonio Peña Valdearenas

El trabajo realizado trata sobre el problema de seguridad que apareció hace unos meses en la librearía de OpenSSL. Antes de comenzar a hablar del problema de Heartbleed se realiza una introducción en la que se comenta el cifrado simétrico y su funcionamiento entre dos usuarios. A continuación se muestra un análisis del cifrado asimétrico mediante la explicación del uso de clave pública y clave privada.

Ya con los conceptos claros se pasa a explicar qué es OpenSSL, las librerías en las cuales ha aparecido el problema de seguridad, explicando cómo funciona Heartbleed y cómo un atacante puede hacerse con las claves privadas y así poder desencriptar contenido protegido.

Para finalizar se habla de cuales son las acciones que un usuario debe tomar para estar protegido y cómo han actuado las grandes empresas como Google o Yahoo frente al problema.

Comparación de hardware y software de Google, Twitter, Facebook y otros grandes sistemas

Trabajo realizado por: Gabriel Guirado

En este trabajo se ha investigado el software y hardware de grandes empresas como Google, Twitter y Facebook, entre otras.

Se ha realizado una breve comparación entre ellos junto con algunas curiosidades interesantes a lo largo de sus respectivas historias.

Seguridad en la granja web: cortafuegos

Trabajo realizado por: Jose Carlos Sánchez Hurtado y Francisco Toranzo Santiago

Este trabajo trata el tema de la seguridad informática, en su conjunto y de servidores web en particular. En él se hace una breve presentación sobre qué es la seguridad informática y de servidores web. Se expone una serie de posibles razones por las que querer atacar un servidor web, y las formas de llevar acabo dichos ataques. También se plantea la forma de defenderse de ellos, usando diferentes técnicas.

A continuación se presenta en detalle uno de los ataques informáticos más sonados actualmente, y la historia del hacker más buscado de EEUU.

Seguidamente se comenta la base de nuestro trabajo: el cortafuegos o firewall y se expone brevemente en qué consiste su funcionalidad, tipos, limitaciones, y la manera de implementarlos.

En concreto se detalla la herramienta iptables para su creación, y se analiza en profundidad su archivo de configuración. Esta herramienta es la que se ha usado para una pequeña prueba realizada en la granja web creada en prácticas.

Google Cloud Platform - Google Compute Engine

Trabajo realizado por: David Castellón Rodríguez y Samuel Hernández Ballesteros

En este trabajo se hace un resumen de los productos que ofrece la plataforma en la nube de Google (Google Cloud Platform), destacando las características principales de cada producto.

Principalmente se centra en Google Compute Engine, la infraestructura como servicio de Google que permite ejecutar grandes cargas de trabajo a gran escala en máquinas alojadas en la infraestructura, mostrando cómo empezar a trabajar con él creando una máquina virtual paso a paso.

sábado, 7 de junio de 2014

Información sobre el software, hardware y configuración de grandes servidores web

Trabajo realizado por: José Manuel Luque Burgos

En ésta presentación se presenta la configuración que usan dos de los servidores web con mayor porcentaje de carga en el mundo como son Facebook y Twitter.

En primer lugar se analiza la organización hardware de estos sistemas, cómo distribuyen sus servidores y la carga que reciben.

A continuación se realiza un análisis de su software, tanto a nivel de arquitectura como en cuanto a su diseño (en ambos casos modular).

Por último se hace un pequeño análisis sobre los lenguajes en los que están programados.

jueves, 5 de junio de 2014

Windows Azure: Plataforma como servicio

Trabajo realizado por: Daniel Guerra

En este trabajo se presenta Windows Azure, detallando los servicios que ofrece. En la memoria se explican los pasos necesarios para crear nuestra red corporativa en la nube, diseñando la red virtual interna en la que nuestros servidores van a trabajar juntos, incluyendo una granja de servidores.

El trabajo está enfocado a modo de tutorial guiado, explicando cada cosa por separado. También explica cómo montar un servicio web con escalado automático y los modos de escalado que podemos elegir para nuestro servicio web sin el requerimiento de montar una máquina virtual con un servidor web.

Google Cloud Storage vs Otros servicios en la nube

Trabajo realizado por: Rafael Carrasco Ruiz

En este trabajo se lleva a cabo una comparación del servicio “Google Cloud Storage” con el resto de servicios disponibles en la red de almacenamiento en la nube.

Primero se presenta al usuario el concepto de "la nube", sus beneficios y desventajas.

A continuación, se comparan las diferentes características, recursos, precios, etc. que cada uno de estos servicios ofrece.

Google Compute Engine

Trabajo realizado por: Javier Aranda Izquierdo, Juan Marquina García y Eduardo José Polo González

Compute Engine es la plataforma de Google para poder montar y administrar tu propia granja web en sus centros de datos.

En la exposición del trabajo se mostró una breve demostración interactiva de cómo crear una.

En el documento de la memoria se describe cómo hacer una granja web con todo lujo de detalles, explicaciones de cada opción e imágenes de cada paso.

miércoles, 4 de junio de 2014

OpenStack

Trabajo realizado por: Ivan Ortega Alba y Carlos Campos Fuentes

OpenStack es una solución basada en software abierto para montar un servicio de Cloud Computing.

OpenStack nos permite montar un servicio de IaaS (Infraestructure as a Service) con el que podremos virtualizar todos los componentes necesarios para montar una plataforma hardware en la nube.

OpenStack nos permite crear instancias, redes y almacenamiento de forma dinámica según las necesidades del usuario. Es decir, con OpenStack podemos ofrecer un servicio similar a Amazon EC2 o Windows Azure, pero usando nuestra propia granja, ya sea física, virtual o híbrida.

En el trabajo se explica al detalle cómo surge OpenStack, quién lo desarrolla, cómo funciona internamente, cómo implementarlo y qué posibilidades nos ofrece.

Usar el módulo DRBD para crear un RAID-1 distribuido

Trabajo realizado por: Jonathan Mulero López

En este trabajo se presenta el módulo DRBD para crear un RAID-1.

DRBD es un módulo de kernel basado en RAID-1/TCP, muy sencillo de configurar, rápido y sometido a pruebas de error.

Con este módulo podemos crear un RAID-1 (espejo), pero teniendo los discos “distribuidos” en la red. Esto nos permite crear soluciones redundantes en tiempo real, perfectas para utilizar, por ejemplo, como dispositivos para clústeres que necesiten alta disponibilidad.

El funcionamiento es en tiempo real: La replicación se produce de forma continua mientras que las aplicaciones modifican los datos en el dispositivo.

Además, es transparente, por lo que las aplicaciones no necesitan ser conscientes de que los datos se almacenan en varios hosts.

martes, 3 de junio de 2014

Despliegue en infraestructuras virtuales con Azure

Trabajo realizado por: Álvaro Linares Maximino y Juan Antonio Fernández Sánchez

Una visión global de la plataforma en la que repasamos los principales servicios que Azure pone a nuestra disposición para el despliegue completo de una granja web virtualizada: máquinas, balanceadores, almacenamiento, redes, etc, haciendo especial hincapié en balanceo de tráfico y la respuesta ante etapas de gran demanda.

Siguiendo con la idea presentamos un caso concreto de granja en la que veremos como el conjunto de hasta ocho servidores es capaz de responder de forma dinámica a grandes avalanchas de demanda conservando el rendimiento sin menospreciar la seguridad y la recuperación ante desastres.

Como aporte imprescindible incluimos un pequeño estudio de viabilidad que despejará toda duda de aquel que siga pensando que cloud computing es sólo un término de moda.

Todo esto acompañado de algunos video tutoriales donde se puede ver de forma muy sencilla y clara el uso de las características más interesantes de la plataforma. 

Configuración maestro-maestro con MySQL

Trabajo realizado por: Javier García Martínez y Sergio Ruíz Pérez

Este trabajo ha consistido en montar varios servidores de Base de Datos en configuración maestro-maestro. De esta forma, cualquier cambio que realicemos en una de las máquinas, (ya sea inserción, borrado, actualización, creación de nuevas tablas...), se replicará automáticamente en la otra máquina, y por lo tanto tendremos siempre todos los datos replicados en nuestros servidores.

Soluciones de virtualización

Trabajo realizado por: Alberto Romero Cañadas y Victor Coronas Lara

En este trabajo se han recopilado y usado diferentes herramientas de virtualización: VMware, VirtualBox, Parellels, Virtual-PC y XEN.

Se han presentado las características que mejor definen a cada sistema de virtualización y se ha documentado el proceso de una instalación de un sistema operativo, así como la configuración de red en cada virtualizador.

Como caso práctico se ha mostrado cómo virtualizar un sistema operativo  que sirve páginas con Apache y se ha instalado un balanceador en la máquina anfitriona. De este modo, el ordenador anfitrión puede servir páginas web hospedadas en el apache por la máquina virtualizada.

sábado, 31 de mayo de 2014

Aplicación móvil utilizando Google App Engine como fuente de información: Open Cloud Calendar

Trabajo realizado por: Israel Blancas y José Cristóbal López

Google App Engine es la propuesta de alojamiento web que ofrece Google. Es un servicio PaS (Plataforma como Servicio). Sobre el mismo, hemos procedido a desarrollar una aplicación llamada Open Cloud Calendar.

Tras un estudio preliminar sobre las características que ofrece GAE, decidimos utilizar Python como lenguaje de programación y Google App Engine Datastore como base de datos.

Esta aplicación permite crear y publicar una lista de eventos que vayan a tener lugar en el futuro (esto podría ser útil, por ejemplo, en el caso de un congreso o la agenda cultural de un ayuntamiento). Una vez que el evento ha pasado, se borra.
Por otra parte, para permitir a cualquier sistema operativo móvil poder tener una aplicación para consultar los datos que se encuentran alojados en App Engine, se crea un fichero XML con las convocatorias existentes (en el caso de la aplicación Android que hemos desarrollado, el programa toma la URL del XML, lo lee y guarda las convocatorias en distintas estructuras de datos para poder mostrarlas, mediante una interfaz, al usuario).

Ayudándonos de las distintas herramientas de las que nos provee Google (la utilidad cron, el framework webapp2, Google Engine Datastore...) hemos ido consiguiendo los objetivos mínimos de esta aplicación.

Por último, explicamos brevemente una técnica utilizada por algunos usuarios de Google App Engine para sacar más partido a las cuentas gratuítas.

viernes, 30 de mayo de 2014

Redundant Array of Independent Disks (RAID)

Trabajo realizado por: Marcos Jiménez Fernández, Alberto Mesa Navarro y Jesús Navarro Guzmán

En este trabajo se tratan varios temas relacionados con los RAIDs. En primer lugar se situa en un contexto histórico el concepto de RAID y los motivos por los que fue creado, junto con la fecha de creación de los primeros RAIDs.

A continuación se analiza el posible uso que puede tener un RAID, como puede ser para temas de capacidad, seguridad o rendimiento. También se introduce el concepto de paridad, que es un elemento importante a la hora de evitar pérdidas de datos.

También se explican los diferentes tipos de RAIDs junto con sus principales características, así como las principales ventajas e inconvenientes de su uso. En definitiva, podemos agrupar los RAIDs en 3 grandes grupos: Puros, anidados y propietarios. También se ha aportado una tabla que resume las características de cada RAID.

Para finalizar se presentan las arquitecturas RAID y cómo con ellas se pueden adoptar diferentes soluciones. Éstas pueden ser software, híbridas y hardware. Al igual que en anteriores secciones, se ha comentado brevemente las características de cada solución y se han aportado ejemplos.

miércoles, 28 de mayo de 2014

Granjas Web: Windows Server 2008

Trabajo realizado por: Miguel Fabre Navarro y Francisco Porcel Sendrós

En este trabajo se ha realizado la instalación y configuración de una granja web con el sistema operativo Windows Server 2008 r2.

Para ello se ha creado una máquina virtual que se encarga del balanceo de la granja y otras dos máquinas que sirven las páginas web (más detalles en el trabajo y en la presentación).

En la presentación se detallaron los posibles algoritmos de balanceo de carga que nos ofrece Windows Server. Por último, se mostraron los resultados de aplicar tests con Apache Benchmark a la granja, configurando el balanceador con diferentes algoritmos para intentar vislumbrar cuál es más óptimo.

sábado, 24 de mayo de 2014

Seguridad en nuestro servidor

Trabajo realizado por: Pablo Martín-Moreno Ruiz.

En este trabajo se presentaron diversos temas relativos a la seguridad del sistema informático.

1ª Sección. Amenazas de seguridad.
En esta sección se desarrollan las principales amenazas de seguridad y los peligros asociados a esos requisitos. También nos habla de los distintos componentes de los sistemas de información y los peligros asociados a cada componente.

2ª Sección. Protección.
Se exponen las diferentes maneras de proteger los ficheros. Además se explica la importancia de las cuentas de usuario y que gracias a ellas se pueden proteger los datos y cómo hacerlo.

3ª Sección. Intrusos.
Se explican los diferentes tipos de intrusos que existen y sus técnicas de intrusión. Cómo obtienen las claves de las cuentas de usuario, cómo proteger esas cuentas, y técnicas para detectar a los intrusos que hay en el sistema.

4ª Sección. Virus.
Desarrolla los diferentes tipos de virus, sus fases y cómo trabaja un antivirus.

5ª Sección. Sistemas confiables.
Detalla qué son los sistemas confiables y su utilidad.

miércoles, 21 de mayo de 2014

iptables

Trabajo realizado por: Rafael Lachica Garrido

En este trabajo se presenta en detalle la herramienta iptables (el cortafuegos por excelencia de Linux) y como caso práctico, se ofrece la lista de reglas para asegurar un servidor.

El trabajo consta de las siguientes secciones:
1. Introducción
2. Comandos Reglas Básicas
3. Tablas
4. Usos Iptables
5. Redireccionamiento
6. Log y Registro

Primero se presenta y define iptables como una herramienta de cortafuegos que permite filtrar paquetes, además de traducciones de red NAT o mantener registros de log. Fue creado en el 1998 por Rusty Rusell.

A continuación, se muestran las reglas básicas (3 principalmente, OUPTUT, INPUT, ACCEPT) así como las políticas por defecto (denegar todo o aceptar todo).

Posteriormente se detallan las tablas internas: la principal, Filter Table, es la que tiene las cadenas LOCAL_INPUT, OUTPUT, FORWARD,PREROUTING y POSTROUTING.
Además hay destinos que se deben cumplir al final de estas reglas, para lo que se utiliza accept, drop, reject, snat, dnat, log, ulog, masquerade, etc.

Por último, se presentan casos prácticos de configuraciones que se pueden hacer con iptables:
  • Bloquear un puerto de entrada (22 ssh), bloquer IP, bloquear por Mac, bloquear salida hacia una web (twitter,facebook,marca), restringir las conexiones en paralelo con conlimit y ataques PING.
  • Enrutar o redirigir el trafico de paquetes: Prerouting lo redirecciona a la entrada y postrouting a la salida. Se ha mostrado un ejemplo del uso de prerouting y de enmascaramiento de la IP del balanceador con masquerade.
  • Gestión de los logs: se ha mostrado cómo llevar un registro de los sucesos que ocurren en nuestro servidor.

DNS DINÁMICO: Montaje de servidor con No-IP

Trabajo realizado por: Juan Francisco Rodríguez Vílchez y Julio Martínez Martínez-Checa

En este trabajo se ha presentado un servicio que toma la IP dinámica que normalmente tenemos asignada (y que cambia cada poco tiempo) y hace que aparezca como IP fija, de forma que podemos acceder a nuestro servidor aunque su IP no sea fija realmente.

En la primera parte se detalla cómo adquirir un nombre de dominio y los precios de diferentes servicios. A continuación se comenta cómo adquirir una IP pública estática así como precios orientativos.

A continuación se ha mostrado cómo configurar no-ip para disponer de un servidor sin depender de IP fija y gratis. Se ha introducido el concepto de DNS dinámico y cómo adquirirlo. Seguidamente, se han mostrado tres de los DDNS más conocidos y una tabla comparativa entre ellos.

Finalmente, se ha detallado la configuración con No-IP que ha sido el DNS elegido para implementar el servidor y se ha hecho una demo de cómo ha quedado finalmente el servidor con NO-IP correctamente instalado y configurado y con el CMS "OwnCloud".

martes, 20 de mayo de 2014

Final del tema 8 de teoría y comienzo de las presentaciones de trabajos

Esta semana hemos terminado el tema 8 de teoría, en el que hemos estudiado las necesidades de hardware y software de los servidores web de altas prestaciones.

Hemos visto que dimensionar un servidor no es tarea fácil. No hay reglas "fiables" que nos puedan ayudar a determinar las necesidades en cuanto a hardware y software. Sólo podemos hacer una primera estimación y luego aplicar carga y monitorizar todo el tiempo de vida del sistema para comprobar si la configuración es adecuada o hay que modificarla.

Para terminar la teoría, hemos estudiado diferentes productos comerciales de varios fabricantes/desarrolladores (HP, IBM, Dell) así como los desarrollos de Facebook y Google.

Una vez terminada la teoría, hemos comenzado las presentaciones de los trabajos que los alumnos han desarrollado a lo largo del cuatrimestre. En próximas entradas de este blog publicaremos resúmenes de cada trabajo presentado.

martes, 6 de mayo de 2014

Resumen del Tema 7: Almacenamiento de datos

1. Introducción
2. Tecnologías hardware para BD
3. Tecnología RAID
4. SSA
5. SAN
6. NAS
7. Conclusiones
El sistema de almacenamiento de datos resulta clave en un sistema web de altas prestaciones, ya que es la parte del sistema donde se guarda la información, ya sea en una BD o en archivos.

Todo usuario que llegue al sistema accederá a los datos almacenados, y debemos estar preparados para servir datos a un número creciente de usuarios.

El sistema de almacenamiento y de BD es un punto fundamental en cualquier sistema web actual. Una mala configuración afectará a las prestaciones. Así pues, debemos tener en cuenta los siguientes factores al diseñar la arquitectura de BD:
  • El número de sesiones concurrentes en la BD puede afectar al rendimiento de la granja web completa (conexiones costosas).
  • El tipo de accesos a la BD también influye.
  • Una gran cantidad de accesos a la BD por cada petición HTTP puede sobrecargar la conexión de red entre los servidores web y de BD.
  • Las búsquedas que devuelvan resultados muy grandes afectarán al rendimiento de CPU, almacenamiento y red.
  • El tamaño total de la BD determinará el espacio para almacenamiento, y el tiempo necesario para hacer copias de seguridad y restaurarlas.
  • Conviene utilizar hardware redundante para los servidores.
  • Arquitectura de la BD basada en un cluster.
  • Una BD se podrá escalar en el futuro si desde el principio se instaló hardware con capacidad de ampliación (CPU, memoria, etc) y se configuró el software de forma adecuada.
Una tecnología fundamental hoy día para construir sistemas de almacenamiento de altas prestaciones es el RAID.
RAID (conjunto redundante de discos independientes) es un sistema de almacenamiento que usa múltiples discos duros entre los que se distribuyen o replican los datos. Es un sistema que ofrece mayor integridad, mayor tolerancia a fallos, mayor rendimiento y mayor capacidad. La idea inicial es combinar varios dispositivos en un conjunto que ofrece mayor capacidad, fiabilidad y velocidad que un solo dispositivo de última generación más caro.

Hay diversos métodos de almacenamiento, llamados niveles, con diferente complejidad:
  • RAID 0: Conjunto dividido
  • RAID 1: Conjunto en espejo
  • RAID 5: Conjunto dividido con paridad distribuida
Por último, hemos visto tres tipos de dispositivo para organizar el almacenamiento en sistemas de altas prestaciones:
  • Arrays de almacenamiento compartido (SSA)
  • Área de almacenamiento en red (SAN)
  • Almacenamiento conectado a la red (NAS)

Como tarea de clase hemos propuesto la Práctica 6 (opcional, ver el guión el el swad.ugr.es).

Se trata de instalar una máquina virtual con Ubuntu Server. Una vez instalada, añadiremos dos discos virtuales de la misma capacidad.

Hay que configurar ambos discos como un “RAID 1” usando la herramienta mdadm, simular un fallo de disco y comprobar que aún se puede acceder a la información. Documenta el proceso (archivos de configuración, órdenes en línea de comandos, etc.).

Como ayuda, ofrecemos los siguientes tutoriales:

Instalación Ubuntu server con RAID1
http://www.youtube.com/watch?v=DS4uKJ9pfnk

Instalación ubuntu server 12.04 LTS precise pangoline con RAID 1 software
http://www.youtube.com/watch?v=y17EfNs0TBc

Como crear un RAID 1 en Windows
http://www.youtube.com/watch?v=g5I-1IXgwRo

Raid 1 - Sincronización espejo en Windows Server 2008
http://www.youtube.com/watch?v=k92yKphhKYE

viernes, 2 de mayo de 2014

Resumen del Tema 6: Asegurar el sistema web

El éxito de un sitio web depende de la seguridad. Es un aspecto crítico en un sistema web para mantener a salvo de ataques los recursos de la empresa y resulta fundamental para proteger los datos que almacenamos.


Los objetivos de seguridad deben definirse correctamente y se basan en los siguientes conceptos:
  • Confidencialidad: las comunicaciones deben ser secretas.
  • Integridad: los mensajes enviados deben ser exactamente los recibidos.
  • Disponibilidad: la comunicación con cualquier aplicación o servicio de la granja web debe estar disponible en el momento en que sea requerida.
En este tema hemos estudiado:
  • El concepto de defensa en profundidad (diferentes capas de defensa).
  • Establecer políticas de seguridad, incluyendo claves seguras, para todas las cuentas.
  • Asegurar un servidor mediante la eliminación de servicios innecesarios y vulnerabilidades.
  • Usar un cortafuegos: comprender el funcionamiento de los cortafuegos y los beneficios de estos.
Hay que establecer unas políticas de seguridad, y mantenerse al día de vulnerabilidades del software, de posibles ataques, de actualizaciones de software, etc.  En este sentido, visitar y estar al tanto de los temas que se proponen en sitios como http://www.securitybydefault.com/ (muy recomendable, por cierto) es de suma importancia.

La defensa en profundidad implica mantener diferentes capas de seguridad, independientes entre ellas, de forma que si un atacante consigue pasar una, tendrá otra que superar. Así se dificulta en gran medida la consecución final de un ataque.

Se deben diseñar diferentes tipos de acceso y configurar el sistema para facilitar esos accesos exclusivamente, denegando cualquier otro. Para eso, se utiliza principalmente el cortafuegos, que actúa como guardián de la puerta al sistema, permitiendo el tráfico autorizado y denegando el resto.


Concretamente, el cortafuegos tiene varias tareas principales:
  • Bloquear y filtrar paquetes de red
  • Controlar protocolos de aplicación
  • Control del tráfico de red a nivel de protocolo de red
  • Ocultar la verdadera dirección del servidor, actuando como un proxy
  • Proteger los servidores y aplicaciones de ataques y uso indebido
Por último, dejamos las siguientes URLs a tutoriales para aprender a configurar el cortafuegos en Linux con iptables:
http://www.cyberciti.biz/tips/linux-iptables-examples.html
http://bit.ly/17Vqwi3
http://es.tldp.org/Manuales-LuCAS/doc-iptables-firewall/doc-iptables-firewall-html/


Práctica 5: Replicación de BD MySQL

A la hora de hacer copias de seguridad de nuestras bases de datos (BD) MySQL, una opción muy común suele ser la de usar una réplica maestro-esclavo, de manera que nuestro servidor en producción hace de maestro y otro servidor de backup hace de esclavo.

En esta práctica proponemos estudiar dos alternativas:
•    copiar archivos de copia de seguridad de la BD mediante ssh
•    clonar BD entre máquinas mediante una configuración maestro-esclavo


Esta última opción (tener un servidor de backup con MySQL actuando como esclavo de replicación) es una solución asequible y no consume demasiado ancho de banda en un sitio web de tráfico normal, además de que no afecta al rendimiento del maestro en el sistema en producción. Sin embargo, la configuración tanto del maestro como del esclavo son un poco más complejas.

Por otro lado, MySQL ofrece la una herramienta para clonar fácilmente las BD que tenemos en nuestra máquina: mysqldump. En la siguiente URL se detalla cómo utilizarla:
http://dev.mysql.com/doc/refman/5.0/es/mysqldump.html

Es una opción que funciona perfectamente, pero es algo que realiza un operador a mano. MySQL tiene la opción de configurar el demonio para hacer replicación de las BD sobre un esclavo a partir de los datos que almacena el maestro. Se trata de un proceso automático que resulta muy adecuado en un entorno de producción real. Implica realizar algunas configuraciones, tanto en el servidor principal como en el secundario. En las siguientes URLs se detallan estas configuraciones:

http://www.rackspace.com/knowledge_center/article/mysql-replication-masterslave
http://www.howtoforge.com/mysql_database_replication
http://aciddrop.com/2008/01/10/step-by-step-how-to-setup-mysql-database-replication/

Esta última parte de la práctica se propone exclusivamente como tarea opcional.

jueves, 10 de abril de 2014

Anotaciones (imborrables) en pizarra de la Práctica 4

Publico esto más que nada a modo de curiosidad.

Son las anotaciones que hice ayer en pizarra en la clase de prácticas. La curiosidad es que por error usé un rotulador permanente  :|  por lo que no se podrán quitar de esa (pobre) pizarra.

martes, 8 de abril de 2014

Resumen del Tema 5: Medir prestaciones

En este tema hemos estudiado las metodologías y métricas principales para medir las prestaciones de nuestro sistema web, tanto de los servidores finales como de los dispositivos de balanceo.

El objetivo es comprobar si nuestro sistema cumple unos mínimos requisitos de rendimiento, y para ello debemos aplicar una metodología de test de prestaciones para detectar posibles problemas de rendimiento.

Querremos detectar con antelación posibles problemas de rendimiento y/o de degradación de recursos.

Así pues, y según el sitio web, proponemos usar las siguientes métricas:
  • conexiones por segundo: Hace referencia al número de conexiones de entrada que cierto dispositivo puede manejar por segundo. Es un factor determinante, ya que abrir y cerrar conexiones HTTP resulta muy costoso.
  • número total de conexiones concurrentes: Métrica para determinar cuántas sesiones de usuario TCP puede manejar el balanceador al mismo tiempo. Está limitada por la memoria o el procesador del dispositivo.
  • rendimiento (en bits por segundo): Hace referencia a la velocidad a la que el balanceador maneja y pasa el tráfico. Se mide en bits por segundo. Es combinación de las variables "tamaño del paquete" y "paquetes por segundo".

Aunque el tema ha sido más extenso, hemos visto que existe un límite de tráfico de red suficientemente alto que produce una degradación grave en las prestaciones:



En unos casos ese límite es más fácil de alcanzar que en otros, pero llegado a ese límite los tiempos de respuesta en las conexiones HTTP se degradan completamente, haciendo imposible la conexión. Estas degradaciones en las prestaciones se deben a los cuellos de botella.

Por último, para realizar estas pruebas y tests, podemos usar diferentes tipos de software. Esta última parte está estrechamente relacionada con la Práctica 4. En esta penúltima práctica utilizaremos Apache benchmark, httperf y openwebload.


Concretamente los contenidos estudiados en el Tema 5 han sido:
  1. Introducción
  2. Conexiones por segundo
  3. Número de conexiones concurrentes
  4. Rendimiento, en bits por segundo
  5. Tipos de tráfico
  6. Límite en las prestaciones
  7. Software
  8. Apache benchmark
  9. httperf
  10. OpenWebLoad

jueves, 3 de abril de 2014

Práctica 4: medida de prestaciones en servidores web

En la práctica 4 que comenzaremos la semana próxima (del 7 al 11 de abril) y continuaremos tras la Semana Santa, utilizaremos varias herramientas para comprobar el rendimiento de servidores web.

Disponemos de varias herramientas, tanto de línea de comandos como con interfaz gráfica:
  • Apache Benchmark
  • httperf
  • OpenWebLoad
  • The Grinder
  • OpenSTA
  • JMeter
Las de línea de comandos sobrecargan menos las máquinas que estamos usando.

Estas herramientas permiten comprobar el rendimiento de cualquier servidor web (Apache, MS Internet Information Services -IIS-, nginx, Cherokee, Tomcat, lighttpd, thttpd, etc), y se suelen usar para comprobar el rendimiento del hardware, software o de alguna modificación que le hayamos hecho.


Usar Apache Benchmark (ab)
ab no simula con total fidelidad el uso del sitio web que pueden hacer los usuarios habitualmente. Pide la misma página repetidamente. Sin embargo, los usuarios reales no solicitan siempre la misma página, por lo que las medidas dan una idea aproximada del rendimiento del sitio, pero no reflejan el rendimiento real.

Va bien para testear cómo se comporta el servidor antes y después de modificar cierta configuración. Puesto que tenemos los datos del "estado base", podemos comparar cómo afecta una nueva configuración.

Debemos ejecutar el benchmark en otra máquina diferente a la que hace de servidor web. Ambos procesos no deben consumir recursos de la misma máquina (veríamos un menor rendimiento). Así pues, estando las tres máquinas de nuestra granja web en ejecución, desde otro máquina diferente (ya sea la anfitriona u otra máquina virtual) haremos las baterías de ejecuciones pidiendo páginas a la dirección IP del balanceador:


Cada vez que ejecutemos el test obtendremos resultados ligeramente diferentes. Esto es debido a que en el servidor hay diferente número de procesos en cada instante, y además la red puede encontrarse más sobrecargada en un momento que en otro.

Para ejecutar el benchmark ab usamos la sintaxis:

ab -n 1000 -c 5 http://maquina.com/prueba.html
  • -n 1000     =>  se solicita mil veces en total la URL
  • -c 5        =>  se hacen peticiones de 5 en 5 (concurrencia)

Nos quedaremos con las medidas de "Time taken for tests", "Failed requests", "Requests per second", "Time per request".

Una vez que terminemos las baterías de ejecuciones con la granja web, debemos repetirlas (las mismas cargas) contra una sola de las máquinas servidoras finales (p.ej. la IP de la máquina1). Así esperamos poder comparar cómo se comporta una sola máquina frente a la granja web ante diferentes cargas.


Usar httperf

httperf es una herramienta para medir el rendimiento de sitios web desarrollada en los laboratorios de investigación de Hewlett-Packard.

La sintaxis de ejecución es:

httperf --server maquina.com --uri /prueba.html --port 80 --num-conn 5000 --num-call 10 --rate 200 --timeout 5
  
En esa orden estamos haciendo un test del servidor maquina.com, puerto 80. httperf pedirá, de forma repetida, la página llamada "prueba.html" abriendo un total de 5000 conexiones TCP para hacer con cada una de ellas varias peticiones HTTP (implica hacer la petición y esperar la respuesta). Hará 10 peticiones por conexión, y las hará a 200 conexiones por segundo (implica 2000 peticiones/seg). Establece un timeout (número de segundos que el cliente esperará respuesta) tras el cual considerará que la llamada ha fallado.

En este caso nos quedaremos con las medidas de "Request rate" y "Errors".

Tanto en esta herramienta como en la siguiente, repetiremos la forma de proceder que hemos explicado para el ab. Los valores que obtengamos con ab, httperf u OpenWebLoad no son comparables, ya que se trata de métricas diferentes, y obtenidas con software que trabaja de muy diferente forma.


Usar OpenWebLoad

OpenWebLoad es otra herramienta de línea de comandos para medir el rendimiento de servidores web:

openload -l 20 http://maquina.com 10

El programa recibe varios parámetros, muy similares a los de las herramientas anteriores:
  • El tiempo en segundos que queremos ejecutarlo (opción -l).
  • La URL de la página en el servidor.
  • El número de clientes simultáneos que simularemos (es un parámetro opcional y el valor por defecto es 5).
En este caso, recogeremos los valores obtenidos de "Total TPS" y "Avg. Response time".

miércoles, 2 de abril de 2014

Tema 4: Balanceo de carga

En la sesión de ayer de "Servidores Web de Altas Prestaciones" terminamos el Tema 4 de teoría.

Lo comenzamos justificando el paso de los grandes mainframes a las tecnologías basadas en balanceo de carga:

Este tema nos ha llevado tres semanas, y hemos visto los siguientes puntos:

1. Introducción
2. Funcionamiento básico de un servidor
3. Conceptos del balanceo de carga
4. Otras tecnologías
5. Estructura de la red
6. Algoritmos de balanceo de carga
7. Balanceo con dispositivos hardware
8. Balanceo de carga global
9. Ejemplo 1
10. Ejemplo 2
11. Ejemplo 3
12. Futuro de las tecnologías de balanceo
13. Resumen y conclusiones

Las dos partes más importantes han sido los algoritmos de balanceo de carga estudiados y la tecnología de balanceo de carga global.


Los algoritmos de balanceo estudiados han sido:
  • balanceo basado en turnos (round-robin)
  • balanceo basado en el menor número de conexiones
  • balanceo basado en ponderación
  • balanceo basado en prioridad
  • balanceo basado en tiempo de respuesta
  • combinación de los algoritmos de tiempo de respuesta y menor número de conexiones

En cuanto a la implementación del GSLB, en la clase de ayer estudiamos las siguientes opciones:
  • Uso del DNS
  • Redirección HTTP
  • GSLB basado en DNS
  • GSLB usando protocolos de enrutamiento

miércoles, 26 de marzo de 2014

Comenzamos la práctica 3: balanceo de carga

Esta semana comenzaremos la práctica de balanceo de carga.

Se trata de utilizar las herramientas nginx y haproxy para configurar un balanceador de carga que redistribuya el tráfico web que llega a nuestra granja entre los servidores finales.

Todos los detalles de cómo hacer la configuración se pueden estudiar en el guión de la práctica (en el swad.ugr.es).

En principio, con dos servidores finales (los de la práctica 2) es suficiente. Para esta práctica tenemos que instalar una tercera máquina en la que NO debemos instalar Apache, y en la que instalaremos en su momento el nginx y el haproxy según se indica en el guión. Así pues, al realizar la instalación de la máquina balanceadora, aseguraros de que se habilita el servicio SSH pero ninguno más.

martes, 18 de marzo de 2014

Charla de Mario Barchéin sobre Servidores Web de Altas Prestaciones

Esta tarde, en la sesión de teoría, Mario Barchéin (@mbarchein) ha dado una interesante charla sobre servidores web de altas prestaciones.

Mario ha explicado su trabajo como administrador de sistemas, y concretamente su trabajo en Intelligenia administrando la granja web de la UGR.

A continuación enlazo la presentación de la charla:
http://slid.es/marioj-barchein/servidores-web-de-altas-prestaciones

jueves, 13 de marzo de 2014

Problemas del VMPlayer en kernels 3.13

Otro problema que algunos compañeros han detectado es con el VMPlayer en kernels 3.13.

Al lanzarlo por primera vez, vmplayer intenta compilar el módulo necesario para ese kernel y da errores.

Un compañero ha encontrado una buena solución en esta web:
http://ping8888.com/2013/12/13/vmware-modules-kernel-3-13/
Lo ha aplicado en un Fedora 20 (kernel linux 3.13) y le funciona el vmplayer sin problema.

miércoles, 12 de marzo de 2014

Configuración de las máquinas virtuales bajo VirtualBox

Al comenzar la práctica 2 hemos detectado que las máquinas virtuales de Ubuntu Server recibían la misma IP todas. Esto no ocurre con VMPlayer, donde con la configuración NAT, cada una tiene su IP en la red virtualizada, se ven entre sí, y tienen conexión a través del anfitrión.

Para conseguir que bajo VirtualBox las máquinas tengan IP diferentes y se vean entre sí (puedan interaccionar), hay que realizar una configuración ligeramente diferente.

Un compañero nos ofrece un mini-tutorial para realizar la configuración y que todo funcione correctamente. Es bastante sencillo de realizar. La URL a la entrada en su blog es:

http://carloscamposfuentes.wordpress.com/2014/03/12/configurar-red-interna-virtualbox/

Para empezar, la bienvenida al blog de la asignatura

He decidido crear el blog de la asignatura Servidores Web de Altas Prestaciones para tener un recurso docente más con el que compartir información con los alumnos que la cursan.

Aquí iremos publicando tutoriales, soluciones a problemas encontrados, enlaces a páginas interesantes, etc, de forma que todos podamos completar la información ofrecida en las clases de teoría o de prácticas.

Además enviaré avisos a través de la plataforma swad y del Twitter con el hashtag #SWAP_UGR