"Ataques DDoS"
En este trabajo se explica qué son los ataques de denegación de servicio (DDoS) y los diferentes tipos que hay (que englobamos en 3 grandes ramas). Además se comentan algunos de los ataques más famosos y con más impacto, también se habla de las sanciones y las leyes que existen frente a estos ataques. Como curiosidad se muestra quienes pueden hacer estos ataques y cómo hacerlos. Por último, se hace una especie de reto para enseñar cómo defenderse contra estos ataques contratando un servicio para realizar ataques usándolo contra nuestro propio servidor configurando IPTABLES y modificando algunas configuraciones del kernel, y más adelante tras varios intentos fallidos configurando Cloudflare que finalmente consigue mitigar el ataque.
Repositorio:
https://github.com/ajpelaez/SWAP/tree/master/trabajo_final
"Seguridad sobre servidores web Apache"
Este trabajo se divide en tres partes: configuración de apache para reforzar su seguridad, partiendo desde otro punto de vista (el de los 'malos') y cómo reaccionar ante un ataque a nuestro servidor web. En la primera parte se citan unos consejos básicos antes de poner en marcha nuestro Apache y despleglarlo en producción. También se indican una serie de configuraciones sobre ciertas directivas de apache, que nos servirán para ocultar información relevante para posibles atacantes y denegar el acceso a directorios que especifiquemos. La segunda parte comienza definiendo una serie de conceptos relacionados con la seguridad informática que posteriormente se usarán en la presentación. Sabiendo la versión de un servidor web podemos encontrar una serie de bugs que nos permitan realizar una intrusión mediante exploits personalizados. Por último, algo que la mayoría de los administradores de sistemas han sufrido, un ataque sobre nuestras máquinas. Podemos intentar seguir la huella de éste mediante los logs, restablecer el servicio y solucionar la brecha de seguridad lo antes posible.
Presentación:
https://speakerdeck.com/jslirola/seguridad-en-servidores-web-apache
Repositorio:
https://github.com/jslirola/SWAP-UGR
"Configuraciones básicas de seguridad para Nginx y Apache"
En este trabajo se han configurado distintos tipos de seguridad que podemos aplicar a los servidores web nginx y apache. Para Nginx se ha centrado en el control de acceso de HTTP, ocultar la firma y versión del servidor, establecer límites para el buffer y el tiempo de espera, limitar el número de conexiones por IP, configurar la seguridad para PHP y, crear y configurar el certifcado SSL. Para Apache se muestra cómo ocultar la firma y la versión del servidor, deshabilitar el HTTP-Trace, y configurado el ModSecurity. Finalmente, en Apache se ha hecho una prueba para defendernos de ataques de SQL-Injection.
Repositorio:
https://github.com/Andresgp1991/Servidores-web-de-altas-prestaciones/tree/master/Trabajo
"Comparación entre servidores web en Android"
El trabajo ha consistido en realizar una comparación de varios servidores web instalados en móviles con sistema operativo Android. Se han instalado tres servidores web, dos gratuitos y uno de pago (aunque con cinco días de prueba) para analizar sus diferencias en cuanto al uso, ya sea, facilidad para manejar, amplitud de opciones a realizar en cada uno o interfaz más adecuada. Los servidores elegidos son: Palapa Web Server, kWS y KSWEB. Como resultado final del trabajo se han realizado pruebas con apache benchmark, similares a las realizadas en la práctica 4 de SWAP, para poder compararlos entre sí, mostrando gráficas de los resultados para que sea más fácil de visualizar, y usando de la aplicación PowerTutor se ha medido el consumo de las tres aplicaciones sobre la CPU.
Repositorios:
https://github.com/jqueror/SWAP/tree/master/trabajo
https://github.com/Jalg/SWAP/tree/master/Trabajo_exposicion
"node.js: Javascript for scalable web servers"
node.js es un nuevo competidor en el entorno de los servidores web. Esta nueva tecnología utiliza Javascript como lenguaje base para implementar software/servicios flexibles y asíncronos. En este trabajo se describen las etapas de instalación de un servidor Node.js, analizamos algunas plantillas de código, y comparamos las prestaciones con otros servidores web como Apache. Node.js escala a través de la librería Clustering para gestionar procesos con más hebras y permitir proporcionar el servicio a todavía más clientes.
Presentación: http://slides.com/davidegallitelli/deck/fullscreen#/
Repositorio GitHub: https://github.com/UGR2015IT/SWAP/tree/master/trabajo_final
"Modern Honey Network"
Este trabajo trata de los Honeypots, que son máquinas con software especializado en simular vulnerabilidades para atraer a atacantes y poder fijar su atención el este señuelo y poder evitar una intrusión, e incluso desvelar las intenciones de éste. Veremos MHN, el cual es posible tener como servidor para monitorizar toda la red de sensores que despleguemos y centralizar toda la información necesaria para saber qué está pasando en nuestras "trampas". Los sensores que instalaremos serán Dionaea y Suricata, aunque hay muchas más posibilidades.
Repositorio:
https://github.com/pablovilchezg/SWAP1516/tree/master/Trabajo_Honeypot
Asignatura del Grado en Informática de la Universidad de Granada
miércoles, 15 de junio de 2016
Presentación de trabajos de los alumnos. 7 de junio (teoría)
"Netflix OpenConnect Appliance"
Hemos hablado de Netflix y de como está montado sus servidores y como estos distribuyen su contenido multimedia. Hemos definido que era Netflix y en que está basado. Está basado en Amazon (su tecnología web) y el corazón de Netflix se encuentra ahí, en el centro de datos de Amazon. También hemos explicado lo que es OpenConnect y que gracias a esto, Netflix ha implementado sus propios servidores. Los llamado OCA (OpenConnect Appliance). Para que Netflix funcione, tiene asociaciones con proveedores de internet para cederle estos OCA. Tienen su red de distribución de contenido multimedia. Hemos explicado como Netflix transfiere el contenido entre servidores para que el archivo esté en el servidor adecuado en el momento adecuado. Y por último, hemos hablado de los OCA en sí. Tienen instalado el Nginx y también el FreeBSD. Hay varias versiones de los servidores OCA. Rev A, Rev B y Rev C y hemos estado comparando las características entre ellos.
Repositorio:
https://github.com/Maverick94/swap1516/tree/master/trabajos/trabajo_asignatura_netflix
"Bases de Datos Distribuidas"
Este trabajo presenta una pequeña introducción tanto a la parte teórica de las Bases de Datos Distribuidas como a la parte práctica de estas: ventajas y desventajas, y qué es un SGBD y para qué se utiliza. Se detallan los tipos de fragmentación posibles (Vertical, Horizontal y Mixta), y cuándo es conveniente utilizar una BDD u otro tipo de BD. También las configuraciones de red comunes en las Bases de Datos Distribuidas (Totalmente conectada, parcialmente conectada, estrella, árbol y anillo). Finalmente se explican las estructuras de datos útiles, con ejemplos de implementación de éstas, vistas, procedimientos, disparadores (Trigger) e índices.
Repositorio:
https://github.com/jmbarranco/SWAP1516/tree/master/TrabajoSWAP
"OSSEC (sistema de detección de intrusos)"
Este trabajo se presenta la herramienta open-source OSSEC. Es un HIDS, que básicamente es un IDS (Intrusion Detection System) con la arquitectura de cliente servidor. Las principales características de OSSEC son: monitorizar elementos del sistema (log, procesos, archivos, puertos, interfaces, etc); alertar, ya sea via log o via email, de las posibles amenazas que se detecten. Es multiplataforma (Linux, Windows, Mac, Solaris, AIX, etc), y ayuda a cumplir el estándar PCI DSS. En el trabajo explicamos las fases del proceso que sigue OSSEC para analizar un log, y vemos como es un decoder y una regla.
Repositorio:
https://github.com/fjfernandez93/swap1516/tree/master/trabajo
"Cloud Computing - Azure y Bluemix"
Este trabajo se ha centrado en un análisis de dos de las grandes empresas y servicios relacionados con el Cloud Computing. Se ha realizado una pequeña introducción sobre el cloud computing, su historia e implicaciones en la actual sociedad de la información. Tras esto, una breve presentación tanto de Azure como de IBM Bluemix, tras la cual pasamos al meollo de la cuestión, dando información sobre los precios, servicios ofrecidos, y un pequeño "get started" sobre ambos sistemas, donde tras explicar los pasos necesarios para comenzar a trabajar con ellos, se despliegan un servidor web y dos pequeñas apps, una sobre Twitter y un chat. Ambos son funcionales y están accesibles a través de los enlaces que se encuentran más abajo.
Repositorio:
https://github.com/joseangeldiazg/SWAP_ugr/tree/master/Trabajo
Chat: http://chat-swap.mybluemix.net/chat
Servidor web: http://swapweb6667.cloudapp.net
"Balanceadores de Carga y Algoritmos de Balanceo"
Nuestro trabajo trata sobre Balanceadores de Carga. Recordamos qué es un Balanceador y las características que tienen, así como los algoritmos que usan para balancear la carga (Round Robin, Least Connections, Tiempo de Respuesta, por Prioridad, por Ponderación, etc.). Explicamos e intentamos la instalación de ZenLoadBalancer y Octopus, ambos balanceadores de carga, aunque de Octopus no lo conseguimos. Para ZenLoadBalancer explicamos cómo se instala y sobre todo exploramos la interfaz que tiene propia para poder asignar los parámetros y controlar el estado de la granja web, así como todo el proceso de configuración. Para Octopus damos información sobre la configuración, pero no está verificada con las nuevas versiones, ya que con las nuevas versiones no hemos conseguido instalarlo ni configurarlo.
Repositorio:
https://github.com/moulayrchid/swap1516/tree/master/TRABAJO-SWAP
"Convertir Equipo en Router (HostAPd)"
Este trabajo consiste en convertir un ordenador, con tarjeta de red wifi, en un router capaz de crear una red local que permita las conexión de otros equipos a la misma y su correspondiente suministro de servicio de internet a las ips pertenecientes a la red. Dicho trabajo será realizado con un "Raspberri Pi 3 Model B" con una tarjeta de red que sigue el modelo "IEEE 802.11", bajo el sistema operativo "Raspian", que es un sistema basado en Debian. También sería posible realizarlo con cualquier otro equipo con un sistema Debian y que disponga de una tarjeta de red con el modelo antes mencionado.
Repositorio:
https://github.com/josemi777/SWAP/tree/master/Trabajo
"Optimización, recomendaciones y herramientas de análisis de sitios webs"
En este trabajo se enumeran diferentes buenas prácticas para la optimización en la carga de sitios webs pesados, mostrando sus diferencias y progresos en tiempos de carga de la página web así como la experiencia del usuario.También se van a realizar algunas optimizaciones en el servidor apache que utilizaremos durante este trabajo. Aunque en las fechas en las que nos encontramos la velocidad de descarga de internet no tiene nada que ver con lo que era hace unos años, las webs de hoy en día cada vez tienen más contenido visual , lo cual hace que tenga una mayor demora a la hora de poder visualizar la página web. En este apartado se redactarán algunas de las buenas prácticas más utilizadas para que un sitio web sea más óptimo, y cargue más rápido. Como norma general un sitio web no puede tardar más de 5 segundos en cargar, una web lenta puede desesperar al usuario que la está visualizando y por lo cual la abandonará.
Repositorio:
https://github.com/pctmoreno/SWAP/tree/master/Trabajo
Hemos hablado de Netflix y de como está montado sus servidores y como estos distribuyen su contenido multimedia. Hemos definido que era Netflix y en que está basado. Está basado en Amazon (su tecnología web) y el corazón de Netflix se encuentra ahí, en el centro de datos de Amazon. También hemos explicado lo que es OpenConnect y que gracias a esto, Netflix ha implementado sus propios servidores. Los llamado OCA (OpenConnect Appliance). Para que Netflix funcione, tiene asociaciones con proveedores de internet para cederle estos OCA. Tienen su red de distribución de contenido multimedia. Hemos explicado como Netflix transfiere el contenido entre servidores para que el archivo esté en el servidor adecuado en el momento adecuado. Y por último, hemos hablado de los OCA en sí. Tienen instalado el Nginx y también el FreeBSD. Hay varias versiones de los servidores OCA. Rev A, Rev B y Rev C y hemos estado comparando las características entre ellos.
Repositorio:
https://github.com/Maverick94/swap1516/tree/master/trabajos/trabajo_asignatura_netflix
"Bases de Datos Distribuidas"
Este trabajo presenta una pequeña introducción tanto a la parte teórica de las Bases de Datos Distribuidas como a la parte práctica de estas: ventajas y desventajas, y qué es un SGBD y para qué se utiliza. Se detallan los tipos de fragmentación posibles (Vertical, Horizontal y Mixta), y cuándo es conveniente utilizar una BDD u otro tipo de BD. También las configuraciones de red comunes en las Bases de Datos Distribuidas (Totalmente conectada, parcialmente conectada, estrella, árbol y anillo). Finalmente se explican las estructuras de datos útiles, con ejemplos de implementación de éstas, vistas, procedimientos, disparadores (Trigger) e índices.
Repositorio:
https://github.com/jmbarranco/SWAP1516/tree/master/TrabajoSWAP
"OSSEC (sistema de detección de intrusos)"
Este trabajo se presenta la herramienta open-source OSSEC. Es un HIDS, que básicamente es un IDS (Intrusion Detection System) con la arquitectura de cliente servidor. Las principales características de OSSEC son: monitorizar elementos del sistema (log, procesos, archivos, puertos, interfaces, etc); alertar, ya sea via log o via email, de las posibles amenazas que se detecten. Es multiplataforma (Linux, Windows, Mac, Solaris, AIX, etc), y ayuda a cumplir el estándar PCI DSS. En el trabajo explicamos las fases del proceso que sigue OSSEC para analizar un log, y vemos como es un decoder y una regla.
Repositorio:
https://github.com/fjfernandez93/swap1516/tree/master/trabajo
"Cloud Computing - Azure y Bluemix"
Este trabajo se ha centrado en un análisis de dos de las grandes empresas y servicios relacionados con el Cloud Computing. Se ha realizado una pequeña introducción sobre el cloud computing, su historia e implicaciones en la actual sociedad de la información. Tras esto, una breve presentación tanto de Azure como de IBM Bluemix, tras la cual pasamos al meollo de la cuestión, dando información sobre los precios, servicios ofrecidos, y un pequeño "get started" sobre ambos sistemas, donde tras explicar los pasos necesarios para comenzar a trabajar con ellos, se despliegan un servidor web y dos pequeñas apps, una sobre Twitter y un chat. Ambos son funcionales y están accesibles a través de los enlaces que se encuentran más abajo.
Repositorio:
https://github.com/joseangeldiazg/SWAP_ugr/tree/master/Trabajo
Chat: http://chat-swap.mybluemix.net/chat
Servidor web: http://swapweb6667.cloudapp.net
"Balanceadores de Carga y Algoritmos de Balanceo"
Nuestro trabajo trata sobre Balanceadores de Carga. Recordamos qué es un Balanceador y las características que tienen, así como los algoritmos que usan para balancear la carga (Round Robin, Least Connections, Tiempo de Respuesta, por Prioridad, por Ponderación, etc.). Explicamos e intentamos la instalación de ZenLoadBalancer y Octopus, ambos balanceadores de carga, aunque de Octopus no lo conseguimos. Para ZenLoadBalancer explicamos cómo se instala y sobre todo exploramos la interfaz que tiene propia para poder asignar los parámetros y controlar el estado de la granja web, así como todo el proceso de configuración. Para Octopus damos información sobre la configuración, pero no está verificada con las nuevas versiones, ya que con las nuevas versiones no hemos conseguido instalarlo ni configurarlo.
Repositorio:
https://github.com/moulayrchid/swap1516/tree/master/TRABAJO-SWAP
"Convertir Equipo en Router (HostAPd)"
Este trabajo consiste en convertir un ordenador, con tarjeta de red wifi, en un router capaz de crear una red local que permita las conexión de otros equipos a la misma y su correspondiente suministro de servicio de internet a las ips pertenecientes a la red. Dicho trabajo será realizado con un "Raspberri Pi 3 Model B" con una tarjeta de red que sigue el modelo "IEEE 802.11", bajo el sistema operativo "Raspian", que es un sistema basado en Debian. También sería posible realizarlo con cualquier otro equipo con un sistema Debian y que disponga de una tarjeta de red con el modelo antes mencionado.
Repositorio:
https://github.com/josemi777/SWAP/tree/master/Trabajo
"Optimización, recomendaciones y herramientas de análisis de sitios webs"
En este trabajo se enumeran diferentes buenas prácticas para la optimización en la carga de sitios webs pesados, mostrando sus diferencias y progresos en tiempos de carga de la página web así como la experiencia del usuario.También se van a realizar algunas optimizaciones en el servidor apache que utilizaremos durante este trabajo. Aunque en las fechas en las que nos encontramos la velocidad de descarga de internet no tiene nada que ver con lo que era hace unos años, las webs de hoy en día cada vez tienen más contenido visual , lo cual hace que tenga una mayor demora a la hora de poder visualizar la página web. En este apartado se redactarán algunas de las buenas prácticas más utilizadas para que un sitio web sea más óptimo, y cargue más rápido. Como norma general un sitio web no puede tardar más de 5 segundos en cargar, una web lenta puede desesperar al usuario que la está visualizando y por lo cual la abandonará.
Repositorio:
https://github.com/pctmoreno/SWAP/tree/master/Trabajo
martes, 14 de junio de 2016
Presentación de trabajos de los alumnos. 6 de junio
"Sistema de archivos Lustre"
Lustre es un sistema de archivos distribuido capaz de aportar la escalabilidad, el rendimiento y la robustez que los mejores supercomputadores existentes exigen. Nacido como proyecto de investigación universitario, ha cambiado de manos varias veces de manos hasta ser, actualmente, opensource. Es la mejor opción, si consigues instalarlo...
Repositorio:
https://github.com/Loadge/SWAP1516/blob/master/Lustre-Memoria.pdf
"Configuración de un DMZ con IPCOP"
Mediante el cortafuegos IPCOP, se ha realizado la implementación de un DMZ simple usando 4 máquinas virtuales. Para la realización de esta práctica se ha necesitado la previa descarga del cortafuegos IPCOP y la instalación de 4 máquinas virtuales. Cada máquina virtual la adjudicamos a 4 zonas distinguidas.
Repositorios:
https://github.com/guillesiesta/swap_1516/tree/master/trabajos_clase
https://github.com/juanmartinquiros/swap1516
"Ataques a servidores WEB"
En este trabajo se detallan los ataques a servidores más comunes: DoS & DDoS, SQL Injection, Fuerza Bruta y Cross-SIte Scripting (XSS Attacks). De cada uno se han abordado los siguientes puntos: Tipo de ataque (breve descripción), cómo se realizan (métodos) y cómo protegernos (instrucciones de seguridad). Como último punto se han añadido los enlaces de los cuales se ha recabado y resumido la información, por si se desea obtener más información.
Repositorio:
https://github.com/ADoncel/SWAP/tree/master/trabajo_final_teoria
"Granja Web con Raspberry Pi"
En este trabajo se presenta la construcción de una Granja Web utilizando Raspberry-Pi. Para ello hemos configurado tres Raspberry-Pi para que actúen como servidores y otra cuarta Raspberry para usarla como balanceador de carga. Una vez configuradas las raspberrys, y comprobada la conexión entre ellas, hemos realizado diferentes medidas de rendimiento, usando para ello los benchmark vistos en prácticas (Siege, ApacheBenchmark y OpenWebLoad). Además hemos realizado réplicas de datos y de MySQL. Por último, para darle uso a nuestra Granja Web, hemos decidido usar WordPress y crear un ¡Hola Mundo!
Repositorios:
https://github.com/marlenelis/SWAP1516/tree/master/TrabajoFinal
https://github.com/espe90/swap/tree/master/TrabajoFinal
Lustre es un sistema de archivos distribuido capaz de aportar la escalabilidad, el rendimiento y la robustez que los mejores supercomputadores existentes exigen. Nacido como proyecto de investigación universitario, ha cambiado de manos varias veces de manos hasta ser, actualmente, opensource. Es la mejor opción, si consigues instalarlo...
Repositorio:
https://github.com/Loadge/SWAP1516/blob/master/Lustre-Memoria.pdf
"Configuración de un DMZ con IPCOP"
Mediante el cortafuegos IPCOP, se ha realizado la implementación de un DMZ simple usando 4 máquinas virtuales. Para la realización de esta práctica se ha necesitado la previa descarga del cortafuegos IPCOP y la instalación de 4 máquinas virtuales. Cada máquina virtual la adjudicamos a 4 zonas distinguidas.
Repositorios:
https://github.com/guillesiesta/swap_1516/tree/master/trabajos_clase
https://github.com/juanmartinquiros/swap1516
"Ataques a servidores WEB"
En este trabajo se detallan los ataques a servidores más comunes: DoS & DDoS, SQL Injection, Fuerza Bruta y Cross-SIte Scripting (XSS Attacks). De cada uno se han abordado los siguientes puntos: Tipo de ataque (breve descripción), cómo se realizan (métodos) y cómo protegernos (instrucciones de seguridad). Como último punto se han añadido los enlaces de los cuales se ha recabado y resumido la información, por si se desea obtener más información.
Repositorio:
https://github.com/ADoncel/SWAP/tree/master/trabajo_final_teoria
"Granja Web con Raspberry Pi"
En este trabajo se presenta la construcción de una Granja Web utilizando Raspberry-Pi. Para ello hemos configurado tres Raspberry-Pi para que actúen como servidores y otra cuarta Raspberry para usarla como balanceador de carga. Una vez configuradas las raspberrys, y comprobada la conexión entre ellas, hemos realizado diferentes medidas de rendimiento, usando para ello los benchmark vistos en prácticas (Siege, ApacheBenchmark y OpenWebLoad). Además hemos realizado réplicas de datos y de MySQL. Por último, para darle uso a nuestra Granja Web, hemos decidido usar WordPress y crear un ¡Hola Mundo!
Repositorios:
https://github.com/marlenelis/SWAP1516/tree/master/TrabajoFinal
https://github.com/espe90/swap/tree/master/TrabajoFinal
lunes, 13 de junio de 2016
Presentación de trabajos de los alumnos. 3 de junio
"Ataques en servidores web"
En este trabajo se ha hablado sobre ataques a servidores web, en concreto, ataques DOS, DDOS, fuerza bruta, cross site scripting e inyección SQL. De los primeros se da una visión teórica debido a la dificultad para llevarlos a la práctica, y del último se realiza una demostración apoyada en la distribución Kali Linux y su herramienta sqlmap.
Repositorio:
https://github.com/FranGS/swap1516/blob/master/TrabajoFinal/trabajo.md
"websockets: Sockets en la Web"
Este trabajo está basado en el uso de WebSockets, siendo éstos una tecnología que nos permite abrir una comunicación bidireccional, con baja latencia, y basada en el protocolo TCP. Se trata de una solución ideal para juegos en tiempo real, notificaciones instantáneas de redes sociales, aplicaciones de monitorización, herramientas de trabajo colaborativo o incluso información meteorológica. En resumen, podemos tener en cuenta los WebSockets en aplicaciones que requieren una transferencia de datos segura y rápida. Se muestra un ejemplo de uso real como es el caso de WhatsApp Web, así como la implementación de un chat basado en una API de PHP. Los archivos de implementación y diseño del chat así como de la API en PHP se encuentran en el repositorio indicado, por si alguien lo quiere "tunear"
Repositorios:
https://github.com/NiKaJim/SWAP/tree/master/TRABAJO%20WEBSOCKETS
https://github.com/maribhez/SWAP_UGR/tree/master/Trabajo
"Memcached"
En este trabajo se detalla qué es la Memcached, su funcionamiento, así como los resultados que tiene su uso a través de una batería de pruebas. Para dichas pruebas se ha realizado un benchmark de un servidor local con la herramienta AB, primero sin hacer uso de la memcached, y posteriormente haciendo uso de ella. Se han realizado estás pruebas 10 veces. Posteriormente se ha calculado la media de los valores más importante de la herramienta AB, véase "Request per second" y "Time taken for tests". Una vez realizada esta batería de pruebas y tal y como se refleja en el trabajo, se concluye que el uso de la memcached hace que se reduzca el valor "Time taken for tests".
Repositorio:
http://github.com/josegob/swap1516
"HOSTING WEB, CLOUD COMPUTING"
Este trabajo, centrado en el "Hosting Web", consta de 3 partes: En 1º lugar, la definición y características de el "hosting web" incluyendo en esta parte también los distintos tipos de hosting , sus diferentes servicios, comparándolos entre sí, con sus ventajas e inconvenientes, además de una comparativa "práctica" en la que según sus necesidades necesitaría elegir un hosting u otro. En 2º lugar hemos estudiado el "Cloud Computing", diferenciando los distintos tipos y servicios que puede ofrecer el mismo, así como las ventajas y los inconvenientes que tiene este tipo de "hosting web". En 3º lugar hemos hecho una demostración práctica de cómo montar un servidor de "Cloud Computing" de almacenamiento en la nube con el software libre de OwnCloud.
Repositorio:
https://github.com/carlillostole/Carlillostole-swap/tree/master/TRABAJO_FINAL
"MEMCACHED"
Memcached es un sistema de memoria caché distribuida de objetos en memoria RAM para sistemas web.
En el trabajo se explica qué es y cómo se implementa memcached. También se explican las funciones básicas de su API. Mostramos los pasos necesarios para la instalación, para poder probar algunos ejemplos de uso. Y finalmente se comentan las ventajas o beneficios que se consiguen al añadir memcached a un sistema web.
Repositorios:
https://github.com/mapbatanero/swap/tree/master/trabajo_memcached
https://github.com/jomoca/swap1516/blob/master/Trabajo%20Memcached/Memcached.pdf
En este trabajo se ha hablado sobre ataques a servidores web, en concreto, ataques DOS, DDOS, fuerza bruta, cross site scripting e inyección SQL. De los primeros se da una visión teórica debido a la dificultad para llevarlos a la práctica, y del último se realiza una demostración apoyada en la distribución Kali Linux y su herramienta sqlmap.
Repositorio:
https://github.com/FranGS/swap1516/blob/master/TrabajoFinal/trabajo.md
"websockets: Sockets en la Web"
Este trabajo está basado en el uso de WebSockets, siendo éstos una tecnología que nos permite abrir una comunicación bidireccional, con baja latencia, y basada en el protocolo TCP. Se trata de una solución ideal para juegos en tiempo real, notificaciones instantáneas de redes sociales, aplicaciones de monitorización, herramientas de trabajo colaborativo o incluso información meteorológica. En resumen, podemos tener en cuenta los WebSockets en aplicaciones que requieren una transferencia de datos segura y rápida. Se muestra un ejemplo de uso real como es el caso de WhatsApp Web, así como la implementación de un chat basado en una API de PHP. Los archivos de implementación y diseño del chat así como de la API en PHP se encuentran en el repositorio indicado, por si alguien lo quiere "tunear"
Repositorios:
https://github.com/NiKaJim/SWAP/tree/master/TRABAJO%20WEBSOCKETS
https://github.com/maribhez/SWAP_UGR/tree/master/Trabajo
"Memcached"
En este trabajo se detalla qué es la Memcached, su funcionamiento, así como los resultados que tiene su uso a través de una batería de pruebas. Para dichas pruebas se ha realizado un benchmark de un servidor local con la herramienta AB, primero sin hacer uso de la memcached, y posteriormente haciendo uso de ella. Se han realizado estás pruebas 10 veces. Posteriormente se ha calculado la media de los valores más importante de la herramienta AB, véase "Request per second" y "Time taken for tests". Una vez realizada esta batería de pruebas y tal y como se refleja en el trabajo, se concluye que el uso de la memcached hace que se reduzca el valor "Time taken for tests".
Repositorio:
http://github.com/josegob/swap1516
"HOSTING WEB, CLOUD COMPUTING"
Este trabajo, centrado en el "Hosting Web", consta de 3 partes: En 1º lugar, la definición y características de el "hosting web" incluyendo en esta parte también los distintos tipos de hosting , sus diferentes servicios, comparándolos entre sí, con sus ventajas e inconvenientes, además de una comparativa "práctica" en la que según sus necesidades necesitaría elegir un hosting u otro. En 2º lugar hemos estudiado el "Cloud Computing", diferenciando los distintos tipos y servicios que puede ofrecer el mismo, así como las ventajas y los inconvenientes que tiene este tipo de "hosting web". En 3º lugar hemos hecho una demostración práctica de cómo montar un servidor de "Cloud Computing" de almacenamiento en la nube con el software libre de OwnCloud.
Repositorio:
https://github.com/carlillostole/Carlillostole-swap/tree/master/TRABAJO_FINAL
"MEMCACHED"
Memcached es un sistema de memoria caché distribuida de objetos en memoria RAM para sistemas web.
En el trabajo se explica qué es y cómo se implementa memcached. También se explican las funciones básicas de su API. Mostramos los pasos necesarios para la instalación, para poder probar algunos ejemplos de uso. Y finalmente se comentan las ventajas o beneficios que se consiguen al añadir memcached a un sistema web.
Repositorios:
https://github.com/mapbatanero/swap/tree/master/trabajo_memcached
https://github.com/jomoca/swap1516/blob/master/Trabajo%20Memcached/Memcached.pdf
Presentación de trabajos de los alumnos. 2 de junio
"Proceso de creación y despliegue de una aplicación web completa en la plataforma OpenShift"
En nuestro trabajo hemos hablado sobre qué es openshift, un servicio PAAS de cloud computing que permite crear aplicaciones en la nube tales como Wordpress, PHP, etc. Mostramos sus ventajas e inconvenientes, de como crear aplicaciones en nuestra cuenta, así como que necesitamos tener en nuestra máquina instalado para poder editar dichas aplicaciones. Otro tema que hemos tratado ha sido el de la creación de un wordpress y como instalarlo.
Repositorios:
https://github.com/accnono/SWAP1516
https://github.com/GinesNC/SWAP/tree/master/Trabajo%20SWAP
"NAS casero en una raspberry pi 3 raid 0"
Este trabajo consiste en la creación de un RAID 0 junto con su correspondiente configuración y la configuración de Samba para el NAS casero con una Raspberry-3. Se ha instalado y configurado SAMBA para terminar la configuración del NAS. En este caso, se ha permitido acceso público. La conexión se realiza mediante el acceso en el explorador de archivos a la URL smb://IP-RASPBERRY
Repositorios:
https://github.com/antoniovj1/servidores_web_altas_prestaciones_ugr
https://github.com/viictorvm/Servidores-de-Altas-Prestaciones
En nuestro trabajo hemos hablado sobre qué es openshift, un servicio PAAS de cloud computing que permite crear aplicaciones en la nube tales como Wordpress, PHP, etc. Mostramos sus ventajas e inconvenientes, de como crear aplicaciones en nuestra cuenta, así como que necesitamos tener en nuestra máquina instalado para poder editar dichas aplicaciones. Otro tema que hemos tratado ha sido el de la creación de un wordpress y como instalarlo.
Repositorios:
https://github.com/accnono/SWAP1516
https://github.com/GinesNC/SWAP/tree/master/Trabajo%20SWAP
"NAS casero en una raspberry pi 3 raid 0"
Este trabajo consiste en la creación de un RAID 0 junto con su correspondiente configuración y la configuración de Samba para el NAS casero con una Raspberry-3. Se ha instalado y configurado SAMBA para terminar la configuración del NAS. En este caso, se ha permitido acceso público. La conexión se realiza mediante el acceso en el explorador de archivos a la URL smb://IP-RASPBERRY
Repositorios:
https://github.com/antoniovj1/servidores_web_altas_prestaciones_ugr
https://github.com/viictorvm/Servidores-de-Altas-Prestaciones
domingo, 12 de junio de 2016
Presentación de trabajos de los alumnos. 31 de mayo
"SEGURIDAD EN SERVIDORES HTTP EN APACHE. GENERACIÓN DE CERTIFICADOS SSL"
Este trabajo trabajo trata sobre la seguridad en los servidores HTTP Apache. Primero se habla de las características más importantes de Apache y de las de un servidor web en general, además de algunos problemas de seguridad que tuvo este servidor web en sus versiones más antiguas. También se habla sobre algunas de las muchas directivas que podemos usar y modificar para una correcta configuración del servidor y tener una alta seguridad. Por último se habla de los certificados SSL, como crearlos y su configuración.
Repositorio:
https://github.com/Manucall/SWAP15-16/blob/master/Presentacion/memoria.pdf
http://pavocejudo.github.io/#/
Este trabajo trabajo trata sobre la seguridad en los servidores HTTP Apache. Primero se habla de las características más importantes de Apache y de las de un servidor web en general, además de algunos problemas de seguridad que tuvo este servidor web en sus versiones más antiguas. También se habla sobre algunas de las muchas directivas que podemos usar y modificar para una correcta configuración del servidor y tener una alta seguridad. Por último se habla de los certificados SSL, como crearlos y su configuración.
Repositorio:
https://github.com/Manucall/SWAP15-16/blob/master/Presentacion/memoria.pdf
http://pavocejudo.github.io/#/
Presentación de trabajos de los alumnos. 30 de mayo
"Tipos de Servidores y cuál elegir"
En este trabajo se presentan diferentes tipos de alojamiento web (hosting) como alternativa a instalar, configurar y administrar un servidor web propio. Concretamente, se analizan los pros y contras de los servidores dedicados, servidores dedicados administrados, hosting compartido, VPS (Servidores Privados Virtuales), hosting gratuito y alojamiento Web en "la nube".
Repositorio:
https://github.com/pegons/swap2016/tree/master/trabajo%20final
"Granja web con balanceo de carga bajo Windows Server 2012"
En este trabajo explicaremos como montar una granja web con un balanceador de carga con tecnología de Microsoft en máquinas Windows Server 2012 así como los pros y los contras a los que hemos llegado llevando a cabo dicha instalación. Para ello, se explicará paso a paso como instalar y configurar los servidores IIS, como realizar la creación y configuración de un dominio web mediante un servidor de DNS, la configuración e instalación del Network Load Balancing (NLB) y la creación de la granja web así como la creación de un Sistema Distribuido de Archivos (DFS) con el cual replicar el contenido web.
Repositorio:
https://github.com/Koltharius/UGR_Servidores_Web_de_Altas_Prestaciones/tree/master/Trabajo_Final
En este trabajo se presentan diferentes tipos de alojamiento web (hosting) como alternativa a instalar, configurar y administrar un servidor web propio. Concretamente, se analizan los pros y contras de los servidores dedicados, servidores dedicados administrados, hosting compartido, VPS (Servidores Privados Virtuales), hosting gratuito y alojamiento Web en "la nube".
Repositorio:
https://github.com/pegons/swap2016/tree/master/trabajo%20final
"Granja web con balanceo de carga bajo Windows Server 2012"
En este trabajo explicaremos como montar una granja web con un balanceador de carga con tecnología de Microsoft en máquinas Windows Server 2012 así como los pros y los contras a los que hemos llegado llevando a cabo dicha instalación. Para ello, se explicará paso a paso como instalar y configurar los servidores IIS, como realizar la creación y configuración de un dominio web mediante un servidor de DNS, la configuración e instalación del Network Load Balancing (NLB) y la creación de la granja web así como la creación de un Sistema Distribuido de Archivos (DFS) con el cual replicar el contenido web.
Repositorio:
https://github.com/Koltharius/UGR_Servidores_Web_de_Altas_Prestaciones/tree/master/Trabajo_Final
viernes, 10 de junio de 2016
Presentación de trabajos de los alumnos. 24 de mayo
"Certificados SSL"
Introducción al estándar SSL, qué son los certificados SSL y para qué sirven así como los distintos tipos que hay, qué son las entidades certificadores, en qué consiste el proyecto Let's Encrypt y como se puede instalar un certificado SSL gratuito en apache con unos sencillos pasos.
Repositorio:
https://github.com/erseco/ugr_servidores_web_de_altas_prestaciones/tree/master/trabajo_final
"Infraestructura de Spotify Music"
Spotify es un modelo de servicio moderno que ha ido de menos a más en el tiempo para convertirse en un servicio escalable y altamente disponible. Para mantener su nivel de calidad alto para todos sus tipos de clientes, ha transformado en muchas ocasiones su modelo de almacenamiento, pasando de servicios comunes a una tipología de red P2P y finalmente a la nube con servicios más fiables como Amazon y Google.
Repositorio:
https://github.com/JaviMancilla/swap/tree/master/Trabajo%20Final
"Servidor de Almacenamiento NFS"
En este trabajo se propone la instalación y configuración de un servidor de almacenamiento NFS usando un equipo Ubuntu 14.04 con el servidor NFS, otro equipo Ubuntu 16.04 con el cliente NFS, otro equipo Ubuntu 14.04 con el cliente NFS, y un equipo Windows 10 con el cliente NFS. Se llevó a cabo una demostración conectando los 4 equipos en una red local creada a partir de un router sin conexión al exterior para hacer una prueba de funcionamiento creando y eliminando ficheros y carpetas.
Repositorio:
https://github.com/franfermi/SWAP/blob/master/Trabajo/ServidorAlmacenamientoNFS.pdf
"Instalación y configuración de Active Directory en Windows Server 2003"
Instalación y configuración de Active Directory en Windows Server 2003, dónde se han instalado y configurado los servicios de Active Directory, DNS, DHCP y Terminal Server. Además se ha creado un dominio y añadido a él un host Cliente XP. Después se han configurado varios usuarios y grupos de prueba, para acceder desde el host, y se le han asignado distintos permisos.
Repositorios:
https://github.com/Chentaco/asignaturaswap/tree/master/trabajo_SWAP_final
https://github.com/MiguelGonzalezAguilera/swap1516/tree/master/TrabajoFinal
Introducción al estándar SSL, qué son los certificados SSL y para qué sirven así como los distintos tipos que hay, qué son las entidades certificadores, en qué consiste el proyecto Let's Encrypt y como se puede instalar un certificado SSL gratuito en apache con unos sencillos pasos.
Repositorio:
https://github.com/erseco/ugr_servidores_web_de_altas_prestaciones/tree/master/trabajo_final
"Infraestructura de Spotify Music"
Spotify es un modelo de servicio moderno que ha ido de menos a más en el tiempo para convertirse en un servicio escalable y altamente disponible. Para mantener su nivel de calidad alto para todos sus tipos de clientes, ha transformado en muchas ocasiones su modelo de almacenamiento, pasando de servicios comunes a una tipología de red P2P y finalmente a la nube con servicios más fiables como Amazon y Google.
Repositorio:
https://github.com/JaviMancilla/swap/tree/master/Trabajo%20Final
"Servidor de Almacenamiento NFS"
En este trabajo se propone la instalación y configuración de un servidor de almacenamiento NFS usando un equipo Ubuntu 14.04 con el servidor NFS, otro equipo Ubuntu 16.04 con el cliente NFS, otro equipo Ubuntu 14.04 con el cliente NFS, y un equipo Windows 10 con el cliente NFS. Se llevó a cabo una demostración conectando los 4 equipos en una red local creada a partir de un router sin conexión al exterior para hacer una prueba de funcionamiento creando y eliminando ficheros y carpetas.
Repositorio:
https://github.com/franfermi/SWAP/blob/master/Trabajo/ServidorAlmacenamientoNFS.pdf
"Instalación y configuración de Active Directory en Windows Server 2003"
Instalación y configuración de Active Directory en Windows Server 2003, dónde se han instalado y configurado los servicios de Active Directory, DNS, DHCP y Terminal Server. Además se ha creado un dominio y añadido a él un host Cliente XP. Después se han configurado varios usuarios y grupos de prueba, para acceder desde el host, y se le han asignado distintos permisos.
Repositorios:
https://github.com/Chentaco/asignaturaswap/tree/master/trabajo_SWAP_final
https://github.com/MiguelGonzalezAguilera/swap1516/tree/master/TrabajoFinal
jueves, 9 de junio de 2016
Presentación de trabajos de los alumnos. 17 de mayo
"Asegurando IIS, Apache y Nginx. Previniendo ataques de diccionario: Fail2ban"
El trabajo gira en torno a la seguridad de servidores web. En primer lugar se habla sobre el IIS de Windows y en concreto se muestra como permitir tráfico o bloquearlo desde determinadas IPs al servidor web. A continuación configuramos el IIS de tal manera que a determinadas páginas web solamente puedan acceder los usuarios pertenecientes a un grupo en concreto y para afinar un poco más, también mostramos cómo solamente permitir que un usario en concreto pueda acceder a una determinada web.
En segundo lugar hablamos sobre Nginx como servidor web y empezamos tocando su configuración para que al dar un mensaje de error no muestre información de más. Además lo configuramos para que solamente acepte los métodos más comunes de HTTP y explicamos un poco la justifación de todo esto.
Para acabar mostramos el funcionamiento de Fail2ban que nos sirve de defensa ante ataques de diccionario; en concreto hacemos que fail2ban detenga un ataque de diccionario generado con Hydra sobre ssh.
Repositorio:
https://github.com/LuisGi93/swap2016/tree/master/trabajo
"Cloud Center Andalucía (Trevenque)"
En este trabajo se presentan diferentes aspectos a tener en cuenta para convertir una nave industrial vacía en un Cloud Center. Para ello, se contactó con la empresa Grupo Trevenque. Empresa fundada en Granada, hará unos 20 años, que cuenta con uno de los mejores Cloud Center de España (el Cloud Center Andalucía, CCA). Ellos facilitaron información sobre el CCA, que ayudó a hacer una idea de cómo debe ser un Cloud Center, tras entrevistarlos y mostrarnos sus instalaciones.
Repositorios:
https://github.com/naujgs/SWAP1516/tree/master/Trabajo
https://github.com/manuelalonsobraojos/swap1516/tree/master/Trabajo
El trabajo gira en torno a la seguridad de servidores web. En primer lugar se habla sobre el IIS de Windows y en concreto se muestra como permitir tráfico o bloquearlo desde determinadas IPs al servidor web. A continuación configuramos el IIS de tal manera que a determinadas páginas web solamente puedan acceder los usuarios pertenecientes a un grupo en concreto y para afinar un poco más, también mostramos cómo solamente permitir que un usario en concreto pueda acceder a una determinada web.
En segundo lugar hablamos sobre Nginx como servidor web y empezamos tocando su configuración para que al dar un mensaje de error no muestre información de más. Además lo configuramos para que solamente acepte los métodos más comunes de HTTP y explicamos un poco la justifación de todo esto.
Para acabar mostramos el funcionamiento de Fail2ban que nos sirve de defensa ante ataques de diccionario; en concreto hacemos que fail2ban detenga un ataque de diccionario generado con Hydra sobre ssh.
Repositorio:
https://github.com/LuisGi93/swap2016/tree/master/trabajo
"Cloud Center Andalucía (Trevenque)"
En este trabajo se presentan diferentes aspectos a tener en cuenta para convertir una nave industrial vacía en un Cloud Center. Para ello, se contactó con la empresa Grupo Trevenque. Empresa fundada en Granada, hará unos 20 años, que cuenta con uno de los mejores Cloud Center de España (el Cloud Center Andalucía, CCA). Ellos facilitaron información sobre el CCA, que ayudó a hacer una idea de cómo debe ser un Cloud Center, tras entrevistarlos y mostrarnos sus instalaciones.
Repositorios:
https://github.com/naujgs/SWAP1516/tree/master/Trabajo
https://github.com/manuelalonsobraojos/swap1516/tree/master/Trabajo
jueves, 2 de junio de 2016
Tema 7 de teoría: Almacenamiento de datos (SWAP2016)
Un subsistema clave en una granja web de altas prestaciones es el de almacenamiento de datos.
Conviene diseñarlo con mucho cuidado para asegurarnos la escalabilidad del sistema. Como vimos en un tema anterior, se pueden mejorar las prestaciones de un sistema (de almacenamiento también) usando:
Puesto que el almacenamiento de los datos se llevará a cabo en BD, es crucial diseñar la arquitectura de BD teniendo en cuenta los siguientes puntos:
Hacia el final de este tema hemos repasado la configuración de discos en RAID, una configuración muy adecuada para disponer de almacenamiento robusto, de alta capacidad y altas prestaciones.
RAID significa "conjunto redundante de discos independientes" y es un sistema que usa varios discos duros para distribuir o replicar los datos, ofreciendo mayor integridad, mayor tolerancia a fallos, mayor rendimiento y mayor capacidad. Esta tecnología permite combinar varios dispositivos para formar un conjunto con mayor capacidad, fiabilidad y velocidad que un solo dispositivo de última generación más caro. Existen RAID por hardware y por software. El primero es mucho más rápido, pero el último es mucho más flexible.
Hay diversos métodos de almacenamiento, llamados niveles, con diferente complejidad:
Finalmente, en el tema hemos visto tres tipos de sistemas de almacenamiento especializado: SSA, NAS, SAN.
Arrays de almacenamiento compartido: SSA
Nota:
En la siguiente entrada del blog se ofrecen diversos tutoriales para aprender a configurar dispositivos RAID bajo Linux, Windows y OS-X:
http://swap-ugr.blogspot.com.es/2015/05/tema-7-de-teoria-almacenamiento-de-datos.html
Conviene diseñarlo con mucho cuidado para asegurarnos la escalabilidad del sistema. Como vimos en un tema anterior, se pueden mejorar las prestaciones de un sistema (de almacenamiento también) usando:
- ampliación vertical (adquirir un mejor hardware más rápido y actualizado).
- ampliación horizontal (replicar el almacenamiento entre varios servidores), que resulta más efectivo en cuanto a la escalabilidad.
Puesto que el almacenamiento de los datos se llevará a cabo en BD, es crucial diseñar la arquitectura de BD teniendo en cuenta los siguientes puntos:
- El número de sesiones concurrentes en la BD puede afectar al rendimiento de la granja web completa (conexiones costosas).
- 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.
- 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. En ese sentido, se recomienda una arquitectura de BD basada en un cluster.
Hacia el final de este tema hemos repasado la configuración de discos en RAID, una configuración muy adecuada para disponer de almacenamiento robusto, de alta capacidad y altas prestaciones.
RAID significa "conjunto redundante de discos independientes" y es un sistema que usa varios discos duros para distribuir o replicar los datos, ofreciendo mayor integridad, mayor tolerancia a fallos, mayor rendimiento y mayor capacidad. Esta tecnología permite combinar varios dispositivos para formar un conjunto con mayor capacidad, fiabilidad y velocidad que un solo dispositivo de última generación más caro. Existen RAID por hardware y por software. El primero es mucho más rápido, pero el último es mucho más flexible.
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
- RAID 10 o RAID 1+0: División de espejos
Finalmente, en el tema hemos visto tres tipos de sistemas de almacenamiento especializado: SSA, NAS, SAN.
Arrays de almacenamiento compartido: SSA
- Dispositivos con unas especificaciones y herramientas propietarias de cierta empresa.
- Posee una interfaz para conectar los discos a las controladoras (normalmente SCSI).
- Número limitado de puertos para hacer la conexión entre servidores y almacenamiento.
- Se suele usar para disponer del almacenamiento necesario para archivos y BD en clusters.
- Conjunto de dispositivos interconectados (discos, cintas, etc.) y servidores conectados a un canal de comunicación e intercambio de datos común (concentrador de alta velocidad).
- Algunos de los dispositivos pueden ser SSA y NAS.
- Conjunto de discos organizados en un dispositivo de red con IP y que puede conectarse a una red Ethernet.
- Utilizando algún protocolo, como Internetwork Packet Exchange (de Microsoft), NetBEUI (de Microsoft), Network File System (NFS, de Sun) o IPE (de Novell).
- Aparece como otro servidor más en la red.
Nota:
En la siguiente entrada del blog se ofrecen diversos tutoriales para aprender a configurar dispositivos RAID bajo Linux, Windows y OS-X:
http://swap-ugr.blogspot.com.es/2015/05/tema-7-de-teoria-almacenamiento-de-datos.html
Suscribirse a:
Entradas (Atom)