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.