Curso de arquitectura de servidores con software libre - Segunda sesión - Seguridad - Cifrado y firma digital - IPv6

La sesión de 1 de abril de 2011 hizo una aproximación al tema de la seguridad.

IPv6

Comenzamos con la conferencia invitada sobre IPv6 de Eva Castro, profesora de la URJC. Primero se introdujo un poco de evolución del sistema de IPs para pasar directamente a las razones de por qué hay que implementar IPv6 lo antes posible, ya que NAT no resuelve completamente el problema y es mas bien un parche. Después nos metimos en la parte técnica revisando los cambios en el datagrama (más simplificado y, como consecuencia de esto, más rápido de manejar), el formato de direcciones (seria una locura expresar 128 bits en decimal, así que se toman grupos de 4 dígitos hexadecimales con ciertas simplificaciones incluso), las partes de una dirección, (prefijo de red, subred y host), direcciones reservadas y direcciones unicast, anycast y multicast. Esta ultima parte me resultó un poco confusa pero será cuestión de mirarlo con detenimiento ya que parece que todo es mucho más coherente y potente comparándolo con IPv4. A continuación vimos otras de las partes que han sido rediseñadas para la implantación de IPv6 que es el ICMPv6 que engloba 3 protocolos típicos de IPv4: ICMP, IGMP y ARP. Una cosa importante a destacar en este apartado es el PMTU (Path Maximum Transfer Unit) ya que en IPv6 se ha eliminado la fragmentación de datagramas. Si un paquete se encuentra con una MTU menor que su tamaño en la ruta se informa al host de que debe reenviarlo, en vez de fragmentarlo y volverlo a armar en el destino, por eso es interesante saber cual es el máximo tamaño de datagrama que podemos generar en origen. Otra ventaja de ICMPv6 es que el proceso de ND (Neighbor Discovery - descubrimiento de vecinos) ya no usa broadcast, utiliza multicast por lo que solo los nodos interesados participarán en este proceso.

Para las posibles soluciones para implementar IPv6 en un entorno en que predomina IPv4 se dieron tres alternativas. Primero, el encapsulamiento de datagramas IPv6 dentro de datagramas IPv4 (túnel) a la hora de atravesar redes IPv4 que añade gran sobrecarga pero asegura que el datagrama IPv6 llega íntegro. la segunda la doble pila de modo que un nodo puede procesar ambos tipos de datagramas y por último la traducción que se utiliza a la hora de que un nodo IPv4 se comunique con un nodo que solo comprenda IPv6 (que no es tan simple como rellenar la dirección de 32 bits hasta 128).

También hablamos de la necesidad de no solo adaptar la red a IPv6 sino tambien las aplicaciones y varias consideraciones que se han de tener en cuenta a la hora de usar aplicaciones "legacy" (solo IPv4) y adaptar código para poder trabajar en cualquier tipo de nodo (IPv4/IPv6 dual, solo IPv4, solo IPv6).

La verdad es que fue una conferencia brillante que me ayudó a comprender los conceptos mucho más que las sesiones a las que he asistido en la universidad sobre este tema.

transparencias: ipv6.pdf

Criptografía de clave pública

 

 

 

La siguiente parte del curso que impartió Israel Herraiz trataba sobre criptografía de clave pública o asimétrica en la que no hace falta que comparta un secreto entre las partes para mantener una comunicación segura. Tiene dos usos principales, enviar mensajes a un recipiente determinado para que sólo lo pueda leer él y firmar ficheros de modo que se reconozca al firmante unívocamente y se asegure que el fichero firmado no ha sido manipulado. 

Primero vimos la necesidad del cifrado para que los datos solo puedan ser leídos en el destino y los programas estandar que existen para ponerlo en práctica. PGP es el privativo y GnuPG (GPG) es el clon libre. después pasamos a ver los principios matemáticos de este tipo de cifrado basado en la dificultad del problema de factorizar un número en sus componentes primos.

Vimos que existen servidores de claves públicas federados(comparten claves entre ellos) para que el sistema funcione y podamos establecer comunicaciones cifradas con cualquiera del que dispongamos su clave publica (un dato que se debe difundir).

Es muy importante el concepto de cadenas de confianza y certificación ya que en internet tenemos la clave publica de una persona que no es más que un fichero pero nada nos asegura que esa persona es quien dice ser por lo que existen métodos de comprobación de identidad física como las key signing party. Este proceso se lleva a cabo firmando las claves públicas de las personas en las que se confía. ¿Por qué cadenas? esto es debido a que la confianza se propaga, si confío en cierta persona las claves que certifica esa persona también serán confiables para mi, tan simple como "los amigos de mis amigos son mis amigos". 

 

 

 

Como ejercicio se dejo la generación de nuestra propia clave y subirla a un servidor de claves. Aquí teneis la mia.

La sesión se alargo bastante sin dejar mucho espacio para la siguiente pero aun así dio la sensación de quedarse corta ya que el tema da para más más rato. Antes de esta sesión la criptografía de clave pública era un poco magia para mi pero se explicó tan claramente que a partir de esta base ya se puede profundizar más en el tema si uno quiere. como curiosidad también he estado mirando la herramienta gráfica seahorse de GNOME para realizar operaciones con GPG (tengo que quitarme esta fea adicción a las interfaces gráficas smiley).

transparencias: criptografia_slides.pdf

Seguridad

Pedro Coca fue el encargado de impartir esta pequeña introducción a la seguridad en un entorno de servidores.

Rápidamente repasamos conceptos básicos sobre seguridad y tomamos ciertas consideraciones acerca de si la visibilidad pública del código fuente hace que un software sea más seguro, diversos estudios y la ubicuidad del las herramientas de software libre en el mundo de la seguridad parecen indicarnos que sí. También existen empresas que se dedican a hacer análisis automatizado sobre código para detectar posibles malas prácticas desde el punto de vista de la seguridad como por ejemplo Coverity.

Después pasamos a la parte de gestión de seguridad para ver conceptos como vulnerabilidad, amenaza, riesgo, exposición y salvaguarda. Para tener controlada la seguridad en nuestra empresa tenemos que prestar atención a cada uno de estos puntos llevando a cabo análisis, concienciando a las personas de la organización de acerca de los problemas de seguridad o teniendo en cuenta el balance entre el coste la salvaguarda que se activa para proteger el activo de la empresa y el coste de perder ese activo (impacto de la amenaza) como ejemplos. Me gustaría destacar lo que se comentó acerca de que en la mayoría de ocasiones lo que hacemos es jugar con la probabilidad y aceptar un cierto porcentaje de riesgo con el que aceptamos llevar a cabo nuestra actividad ya que pocas cosas pueden ser aseguradas al 100%.

También se hablo brevemente de la importancia del control de acceso y de los diferentes modelos de acceso generales que existen. Lo más destacable es de esta parte fue los niveles de seguridad que se determinan según los datos que toman del sujeto a identificar:

  • algo que sabes (Pin, contraseña,...)
  • algo tienes (llave, tarjeta...)
  • algo que eres (datos biométricos)

Un sistema se considera fuerte si implementa dos de estas técnicas simultáneamente.

Luego reflexionamos sobre las contraseñas y lo vulnerable que puede llegar a ser una contraseña débil o almacenada incorrectamente (una nota encima de la mesa por ejemplo). Como ejercicio se propuso usar el software john the ripper, para probar la fortaleza de la contraseña de los usuarios de sistema. estas contraseñas se almacenan en el fichero /etc/shadow Y en la realización del ejercicio descubrí que a partir de debian 6.0 squeeze estas contraseñas se almacenan con la función de hash sha-512 y la versión de john the ripper de los repositorios oficiales no tenia soporte para este tipo de hash. No quise complicarme más y finalicé ahí el ejercicio.

Está muy bien tener un enfoque general de todos los riesgos que hay que tener en cuenta no solo en cuestiones de software sino también en los riesgos físicos que pueden tener nuestras maquinas y por extensión los datos que contienen que generalmente es lo más valioso. La seguridad no es un tema que se deba dejar para las fases avanzadas de un proyecto ya que un buen planeamiento nos puede evitar futuros quebraderos de cabeza.

transparencias: seguridad.pdf