TEMA 3
Seguridad en redes (Internet)
 

3.1 Criprografía en las redes

La criptografía en las redes es una forma sencilla de asegurar la confidencialidad y autenticidd de los datos que circluan en la red.

3.1.1 Cifrado de enlace

Este cifrado sirve para todos los procesos que se realizan en la red. El cifrado de enlace se realiza a la hora de enviar las comunicaciones entre entre los usuarios, es decir, cifra la información cunado antes de ser enviada. Dicha información cifrada, al llegar a su destinatario es descifrada cuando llega a la red del destinatario.
 


 

Una de las ventajas del cifrado enlace es uqe todas las aplicaciones se benefician, en contra hay que confiar en la seguridad del sistema. Otro de los inconvenientes del cifrado de enlace es que supone una dificulatad su implantación para redes muy grandes.

IPSEC permite extender en Internet el cifrado de enlace, este cifrado mediante el IPSEC sería a nivel de IP.
 

3.1.2 Cifrado extremo a extremo (TLS)

El cifrado extremo a extremo es utilizado en diversos protocolos como el SSL de Nescape o el protocolo TLS que es utilizado en páginas web o para realizar cualquier tipo de comunicación o conexión. En cuanto al correo electrónico, se utiliza software criptográfico como el PGP o el SMIME.
La característica principal del difrado extremo a extremo, es que la comunicación cifrada se realiza en las aplicaciones finales que utilizan los usuarios para comunicarse entre sí.
 


 

En el campo del correo electrónico, si se realiza una comparativa entre el cifrado de enlace, y el cifrado extremo a extremo, se observa que el cifrado extremo a extremo es más seguro i ofrece una mayor integridad; puesto que el correo electrónico enviado al llegar al destinatario puede quedarse en el buzón y ahí en el caso del cifrado de enlace la información que contendría el correo electrónico estaría descifrada. Lo cual no ocurriría en el caso de utilizar cifrado extremo a extremo ya que el correo electrónico se descifraría en la aplicación de correo.

El protocolo TLS es un derivado del protocolo SSL (Netscape), con un 99% de código igual pero en este caso es público (para mayor información).

El protocolo SSL, SSL2, SSL3 tiene unos propósitos bine definidos que son:

- Confidencialidad

- Autentificación del servidor

- Autentificación del cliente (optativa)

Este protocolo fué desarrollado para la protección del cliente y dar una cierta confianza a este, opcionalmente el servidor podrá pedir una autentificación al cliente.
Para que funcione el protocolo SSL se requiere que el servidor posea un par de llaves, estas llaves irán acompañadas de su certificado, y este certificado será expedido por una autoridad certificadora. El cliente y el servidor deberán ponerse de acuerdo en cuanto al nivel criptográfico, almenós deberán coincidir en un algoritmo (DES, DES128, RCA).
Posteriormente el servidor envia su firma en su correspondiente certificado, y el cliente con la llave pública de la autoridad certificadora descifrará la firma, observando si es o no es válida.
Lo que se comprueba es que si los datos del servidor son correctos, es decir, auténticos, al compararlos con los de la autoridad certificadora.
En el Common Name (CN) del servidor el nombre será su dirección web.
Nos faltaría comprobar que el certificado pertenece al servidor, puesto que el servidor tiene las claves privadas. Para ello el cliente lanza un reto, cifrando algo con la clave pública, y el sevidor debe poder descifrarlo con la clave privada. Normalmente en el reto se envía la clave de la sesión, de esta fora si el servidor lo descifra entonces ambos pueden continuar su sesión pero ahora la sesión será de tipo confidenial, todo ello devido a la clave de sesión.

Diferencias entre protocolo TSL y el protocolo SSL:

- Alerta de certificado
En respuesta al mensaje CertificateRequest los clientes que no tiene certificado sólo contestan con un mensaje de alerta si son SSL.

- Claves de sesión
Se calculan de forma diferente.

- Algoritmos de intercambio de claves
El protocolo TLS no puede soportar el algoritmo Fortezza Kea del SSL, el cual es un algoritmo secreto y de propiedad privada.

- Campos incluidos en el MAC
En el protocolo TLS se utilizan dos campos más del lenguaje que en el protocolo SLL para el cálculo del MAC, lo que lo hace más seguro.


3.1.3 Seguridad del correo electrónico (SMIME)

Está compuesto por cabecera y cuerpo, entre la cabecera y el cuerpo existe una linea en blanco. En la cabecera irá especificada cada linea de un campo, y además se especifica los campos y valores. El cuerpo contendrá lo que queramos enviar en el mail, ya sea texto, ... . Se considera que es de tipo SMIME cuando hay un campo en la cabecera que indica:

MIME (version): 1.0
Sólo enviaremos código ASCII entre la posición 32 (blanco) al 126 (~). Del 128 (Ç) al 255 (blanco) hay que advertirlo (8 bits), no podremos enviar código ASCII que sean menores del 32. Contamos con la posibilidad de ppoder reorganizar la información con base 64, para enviar por ejemplo imagenes.
Pese a la limitación de enviar sólo 7 bits, lo podemos codificar en base 64 y enviar lo que queramos, pero informando que es de tipo SMIME.
Cuando un subtipo se indica con un tipo desconocido, hay qye indicarlo.
En un tipo pondremos lo que vamos a enviar que no sea texto, comopodría ser imagen, video, ...
Si tenemos toda la información en modo texto, no utilizaremos el tipo de campo content type.
SMIME consta de tipos de campos:
Content_type tipo/subtipo
Content_transfer_encoding (7 bits, 8 bits, base 64, quoted_printable)


Ejemplo de cabecera:

MIME 1.0
Content_type : application / x - shockwave_flash - preview, name "0 -hibhird -swf"
Content_transfer_encoding: base 64
Atatchment:
El atatchment es un concepto erroneo, permite cargar un fichero para ser enviado junto con el correo electrónico.
Al utilizar lo,  el destinatario del correo, recibe el fichero, y además recibe un texto ya que nos vemos obligados a enviar un texto para poder enviar el fichero.

Si queremos enviar texto y fichero en un mail utilizaremos unos cuerpos especiales de SMIME llamados multipart (Signed, Mixed, Related, Alternative).

- Multipart / Mixed
Es una forma de indicar que el mail se compone de una colección de entidades MIME.
Ejemplo:

MIME 1.0
Content_type: Multipart / Mixed, boundary = _________churro________
Donde boundary es una secuencia de caracteres que lo hacen único.
No escribiremos nada más en la cabecera, ya que tendremos más partes MIME que formarán las partes. El servidor de correo no debería mostrar nada que no este fuera de las partes. Las partes MIME se componen exactamente de:
[linea en blanco]
--_________churro________ (nos indica que comienza una parte)
Content_type text / plain
[linea en blanco]
Hola que tal??? (Texto a transmitir)
[linea en blanco]
--_________churro________ (nos indica que empieza otra parte)
Content_type image / jpg
Content_transfer_encoding: base 64
(lugar en el que estaría la imagen a transmitir)
--_________churro________- ( Este último voundary nos indica que no hay más partes, porque lleva un guión a la izquierda)
En el SMIME expandimos el MIME con algunos tipos nuevos, propios de SMIME que permitirán cifrar y descifrar. Si está cifrado ocultará las multipartes.
Ejemplo:
MIME version 1.0
Content_type: aplication / x -pkcs7 - name
Content_transfer_encoding: base 64
[linea en blanco]
(Texto que queramos enviar)
En este ejemplo el mensaje iría cifrado. El destinatario al descifrarlo eliminaría la cabecera y eliminaría la linea en blanco. Entonces al descifrar lo que hubieramos enviado, pega la nueva cabecera descifrada al principio y de este modo ya puede leer el mensaje.

- Mail firmado mediante SMIME
El lector que recibe el mail podrá leer el mail qunque no pueda comprobar la firma. La estructura tiene dos partes: Mail y firma.
Ejemplo:

MIME version 1.0
Context_type: multipart / signed, protocolo = "aplication /x -pkcs7 -signature", micaly = shar, boundary = "lamascletaeseldia2"
--lamascletaeseldia2
(Texto que queramos enviar)
--lamascletaeseldia2
Context_type: aplication /x -pkcs7 -signature
Content_transfer_encoding: base 64
[linea en blanco]
(firma digital)
--lamascletaeseldia2-


3.2 Vulnerabilidades

- Sniffing (Escuchar)
Es la posibilidad de que un atacante escuche "la conversación" en la red, el sniffing puede ser útil sólo si la información no es cofrada, si la información fuera cifrada el atacante no la podría utilizar tal cual.
Diversos modos de evitar el snifing:

* Conexión mediante switch
Si el atacante solamente "pincha" un cable no podrá sniffar toda la comunicación, esto es debido a que los paquetes de información se transmiten por distintos cables.
El switch crea enlaces virtuales entre redes.


* Conexión mediante hup
La conexión de una red mediante un hup sería comparable, por no decir igual, a la red que está enlazada formada mediante cable coaxial.
Estos dos sistems son fáciles de sniffar, debido a que los paquetes de información pasan todos por el mismo sitio, sin tener diversas rutas.
El hup sólo hace posible una conexión, si un usuario escribe, el otro debe esperar a que acabe.
 


- Sporffing (Suplantación de identidad)
El sporfing es un ataque a la autenticidad. Se analizará mediante el contenido, ya sea en un correo electrónico o durante una sesión.

- Hijacking (Suplantación de una conexión)
Este tipo de vulnerabilidad se da en el momento de realizar una conexión. Cuando un usuario A se conecta con otro usuario B, una vez vez el usuario A ya está autentificado con el usuario B y comienza la sesión. Aparece el hijacking que suplanta al usuario A, elimando a este o en otro coexistiendo con él.
Existen diversas técnicas para evitarlo:

* Realizar las conexiones cifradas, y la clave de acceso o el password también este cifrado.

* Utilando protocolos como el protocolo PPP, aunque es un protocolo que realiza las conexiones sin cifrar.
Este protocolo, no transmite la password tal cual, sino que envia un reto (de esta forma evita el sporffing). Para evitar el hijacking cada cierto periodo de tiempo, será un periodo de tiempo de x segundos. De esta forma envia retos para autentificar el usuario, si no se verifica cierra la conexión.

- DOS (Denegación de servicio)
Atacar un punto de la red, de forma que los servicios que esté prestando en ese momento se cierran y dejan de prestar servicio. Estos ataques son relativamente faciles, debido a los fallos de diseño de arquitectura de un servidor. Existen programas como el nue que se utilizan para atacar un determinado software para posteriormente dejar de atacar.
Existen dos tipos de ataques de denegación de servicio, como el orientado a una aplicación y el orientado al servidor.

- Intrusión
Ataque para entrar en una máquina, sin especificar una autentificación concreta.

En los diversos tipos de vulnerabilidades, los tipos más preocupantes son la denegación de servicio y la intrusión. Estas vulnerabilidades son debidas a los fallos del software, que permiten al atacante, mediante el envio de un "requed" abrir una puerta o el servidor se quede colapsado y se cierre.
La mejor medida para inuvalidar posibles ataques es tener un software competente, y actualizarlo periodicamente. Como no suele ser posible, aparecen los cortafuegos. Los cortafuegos son aplicaciones que pretenden mantener la seguridad de la red corporativa.
 

3.3 Firewalls

Un firewall o también llamados cortafuegos, es cualquier sistema que se utiliza para proteger una máquina o subred, protegiéndola de servicios y protocolos que desde el exterior puedan suponer una amenaza a su seguridad. Consiste en decidir que paquetes del protocolo permitiremos que entren en nuestro sistema o red, y cuales no.
Los firewalls estan basados en políticas de acceso entre redes. El objetivo principal de las políticas reside en evitar el acceso no autorizado entre dos redes, pero manteniendo intactos los accesos autorizados. Se tienen dos políticas principales:

- Política abierta
Realizamos una política de seguridad y luego se restringe la entrada.

- Política cerrada
Realizamos una política de segurida y luego se permite el acceso.

Como es de suponer, la política más segura es no tener conexión entre nuestro sistema y otros sistemas por medio de una red.
 

3.3.1 Componentes

3.3.1.1 Filtrado de paquetes

Las reglas de filtrado se utilizan para reducir la carga de la red. Las reglas de filtrado no permiten paquetes cuyo ttl ha llegado a cero, tampoco admiten paquetes con un control de errores erróneos.
El filtrado de paquetes se puede utilizar también para definir las distintas políticas de seguridad que seguirá un firewall.
Su funcionamiento consiste en analizar la cabecera de cada uno de los paquetes que entran o salen, según hayamos definido reglas que seguirá el filtrado, el paquete es bloqueado o se le permite seguir su camino. Estas reglas abarcan los protocolos, las direcciones fuente y destino, y el puerto destino.

Generalmente las reglas se definen en sentencia de condiciones y acciones que se consulta en orden hasta encontrar una regla que permita tomar una decisión sobre el bloqueo o el reenvio del paquete.Algo muy importante es el orden en el que ponemos las reglas, ya que podríamos violar la política definida.
Si llega un paquete que no cumple ninguna de nuestras reglas, el responsable de permitir su acceso o denegarlo a nuestro sistema estará condicionada según la política tomada, para ello lo mejor es insertar siempre una regla por defecto al final de nuestras reglas, a la hora de definir las condiones y acciones de filtrado.
 

3.3.1.2 Proxys

Se define el proxy de aplicación como aquellas aplicaciones software para reenviar o bloquear conexiones a servicios como finger, telnet o ftp.
Los servicios proxy permiten únicamente la utilización de servicios para los que existe un proxy, por lo que si sólo contamos proxies para telnet, http y ftp, el resto de servicios no estarán disponibles. Las máquina donde se ejecutan los proxys de aplicación se les llama pasarela de aplicación.

A diferencia del filtrado de paquetes, en un proxy es posible filtrar protocolos basándose en algo más que la cabecera de las tramas, por lo que podríamos tener habilitado un servicio como ftp pero con órdenes restringidas (podríamos bloquear todos los comandos get para que nadie pueda bajar ficheros).
Los proxys permiten un grado de ocultación de la estructura de la red protegida, un ejemplo: la pasarela es el único sistema cuyo nombre está disponible hacia el exterior. Este cierto grado de ocultación permite la autentificación del tráfico sospechoso antes de que alcance el host destino
y además simplifica enormemente las reglas de filtrado implementadas en el router, ya que  sólo hemos de permitir el tráfico hacia la pasarela, bloqueando el resto.

El  inconveniente que ofrecen los proxy es que a la hora de instalar una pasarela de aplicación, es necesario que cada servicio que ofrecezca la pasarela tenga su propio proxy.
 

3.3.1.3 Monitorización de la actividad

Monitorizar la actividad de nuestro cortafuegos es algo indispensable para mantener la seguridad. La monitorización nos facilitará información sobre los distinto intentos de ataque que estemos sufriendo (origen, franjas horarias, tipos de acceso. . . ), así como la existencia de tramas que aunque no supongan un ataque a priori si que son al menos sospechosas.

Un monitor además de los registros estándar ( los que incluyen estadísticas de tipos de paquetes recibidos, frecuencias, o direcciones fuente y destino)  recomienda regoger información de la conexión (origen y destino, nombre de usuari, duración, ...), intentos de uso de protocolos denegados, intentos de falsificación de di-rección ( paquetes que llegan desde la red externa con la dirección de un equipo interno), además de tramas recibidas desde routers desconocidos.
Evidentemente, todos esos registros han de ser leidos con frecuencia, por lo que se han de tomar medidas si se detectan actividades sospechosas; si la cantidad de logs generada es considerable nos puede interesar el uso de herramientas que filtren dicha información.

Para incrementar nuestra seguridad se pueden utilizar mecanismos que sustituyan servicios reales en el cortafuegos por programas trampa. La idea es sencilla: se trata de pequeñas aplicaciones que simulan un determinado servicio, de forma que un posible atacante piense que dicho servicio está habilitado y prosiga su ataque, pero que realmente nos está enviando toda la información posible sobre el pirata.
Este tipo de programas, una especie de troyano, suele tener una finalidad múltiple: aparte de detectar y notificar ataques, el atacante permanece entretenido intentando un ataque que cree factible, lo que por un lado nos beneficia directamente y por otro lado nos permite entretener al pirata ante
una posible traza de su conexión.
Evidentemente, nos estamos arriesgando a que nuestro atacante descubra el mecanismo y lance ataques más peligrosos, pero como el nivel de conocimientos de los atacantes de redes habituales en general no es muy elevado, este mecanismo nos permite descubrir posibles exploits utilizados por los piratas, observar a que tipo de atacantes nos enfrentamos.
 

3.3.2 Técnicas

3.3.2.1 Cortafuegos de filtrado de paquetes

Un firewall sencillo puede consistir en un dispositivo capaz de filtrar paquetes, un choke; se trata del modelo de cortafuegos más antiguo, basado simplemente en aprovechar la capacidad de algunos routers para bloquear o filtrar paquetes en función de su protocolo, su servicio o su dirección IP de forma que el router actue como gateway de la subred. Los accesos desde la red interna al exterior no bloqueados son directos (no hay necesidad de utilizar proxies, como sucede en los cortafuegos basados en una máquina con dos tarjetas de red), por lo que esta arquitectura es la más simple de implementar y la más utilizada.

Si instalamos un cortafuegos tan sencillo las reglas de filtrado pueden llegar a ser complejas de establecer, y por tanto es difícil comprobar su corrección. Si decidimos utilizar un router como filtro de paquetes, es recomendable bloquear todos los servicios que no se utilicen desde el exterior (NIS, NFS, X-Window y TFTP), así como el acceso desde máquinas no confiables hacia nuestra subred, es también importante para la seguridad bloquear los paquetes con encaminamiento en origen activado.
 

3.3.2.2 Dual-Homed Host

El sistema dual-homed host está formado por simples máquinas Unix equipadas con dos tarjetas de red y denominadas anfitriones de dos bases, en las que una de las tarjetas se suele conectar a la red interna a proteger, y la otra a la red externa a la organización. En esta configuración el choke y el bastión coinciden en el mismo equipo: la máquina Unix.
El sistema Unix ha de ejecutar al menos un servidor proxy para cada uno de los servicios que deseemos pasar a través del cortafuegos, y también es necesario que el IP Forwarding esté deshabilitado en el equipo: aunque una m´aquina con dos tarjetas puede actuar como un router, para aislar el tráfico entre la red interna y la externa es necesario que el choke no enrute paquetes entre ellas.
Todo el intercambio de datos entre las redes se ha de realizar a través de servidores proxy situados en el host bastión, o bien permitiendo a los usuarios conectar directamente al mismo. Esto es algo muy poco recomendable, ya que un usuario que consiga aumentar su nivel de privilegios en el sistema puede romper toda la protección del cortafuegos.
 

3.3.2.3 Screened Host

Un paso más en la seguridad de los cortafuegos es la técnica screened host o choke-gate, que combina un router con un host bastión, y donde el principal nivel de seguridad proviene del filtrado de paquetes. En la máquina bastión, único sistema accesible desde el exterior, se ejecutan los proxies de las aplicaciones, mientras que el choke se encarga de filtrar los paquetes que se puedan considerar peligrosos para la seguridad de la red interna, permitiendo únicamente la comunicacióncon un reducido número de servicios.
Se recomienda situar el router entre la red exterior y el host bastión, de esta forma, cuando una máquina de la red interna desea comunicarse con el exterior ha de hacerlo a través de servidores proxy situados en el host bastión, y los usuarios externos sólo pueden acceder a la red interna también a través de este sistema.
 

3.3.2.4 Screened Subnet ( DMZ )

Esta técnica de firewall  añade un nivel de seguridad en las arquitecturas de cortafuegos situando una subred ( DMZ ) entre las redes externa e interna, de forma que se consiguen reducir los efectos de un ataque exitoso al host bastión: en los modelos anteriores toda la seguridad se centraba en el bastión 1 , de forma que si la seguridad del mismo se veía comprometida, la amenaza se extendía automáticamente al resto de la red. Como la máquina bastión es un objetivo interesante para muchos piratas, la arquitectura DMZ intenta aislarla en una red perimétrica de forma que un intruso que accede a esta máquinano consiga un acceso total a la subred protegida.

Screened subnet es la arquitectura más segura, pero también la más compleja; se utilizan dos routers, denominados exterior e interior, conectados ambos a la red perimétrica.
En esta red perimétrica, que constituye el sistema cortafuegos, se incluye el host bastión y también se podrán incluir sistemas que requieran un acceso controlado, como baterías de modems o el servidor de correo, que serán los únicos elementos visibles desde fuera de nuestra red.
El router exterior tiene como misión bloquear el tráfico no deseado en ambos sentidos ( haciala red perimétrica y hacia la red externa ), mientras que el interior hace lo mismo pero con el tráfico entre la red interna y la perimérica; de esta forma, un atacante habrá de romper la seguridad de ambos routers para acceder a la red protegida. Incluso es posible si se desean mayores niveles niveles de seguridad definir varias redes perimétricas en serie, situando los servicios que requieran de menor fiabilidad en las redes más externas, de este modo, el atacante habrá de saltar por todas y cada una de ellas para acceder a nuestros equipos. Evidentemente, si en cada red perimétrica se siguen las mismas reglas de filtrado, los niveles adicionales no proporcionan mayor seguridad.

Evidentemente existen problemas relacionados con este modelo, por ejemplo: se puede utilizar el firewall para que los servicios fiables pasen directamente sin acceder al bastión, lo que puede dar lugar a un incumplimiento de la política de la organización.
Un segundo problema, es que la mayor parte de la seguridad reside en los routers utilizados; como hemos dicho antes las reglas de filtrado sobre estos elementos pueden ser complicadas de configurar y comprobar, lo que puede dar lugar a errores que abran importantes brechas de seguridad en nuestro sistema.
 

3.3.3 Tipos

Los firewalls se pueden clasificar según el protocolo que utilizan y según el tipo de conexión a la que pertenecen.
Los firewallls los distinguiremos a nivle de protocolo IP, siendo:

- IP destino
- IP origen
Y según el protocolo TCP tiene la influencia en el puerto, siendo:
- Puerto origen
- Puerto serie
Con estas cuatro distinciones podemos aceptar o rechazar según sean del destino o del origen.

Estos son los tipos de escenarios que puede encontrar un firewall:

- Sin conexión a redes o sistemas

- Sobre Internet

- Sobre redes privadas

Cuando el IP se asigna dentro de una red privada. El firewall debe determinar que paquetes entrán y salen de la red.
La circulación se denomina el reenvio de paquetes (forwarding). Mediante software se controlará el input y el output, si no entra ni sale un paquete entonces no actua el forwarding. Es decir, primero input, segundo output y tercero reenvio.
Lo principal es el input, ya que si no generamos un input, no generaremos un reenvio ni un output.
El firewall debe hacer dos cosas sobre el paquete:
- Reject
Rechaza el paquetes y el usuario lo puede percibir.

- Discard
Elimina paquetes y el usuario no lo percibe.

Ejemplo de un comando mediante firewall:

-I -a accep -s % -d IP/32 1024/65333 -k -P tcp
Donde el origen viene determinado por -s, -d indica el destino. IP/32 indic que son redes de 32 bits y ademas el número de IP. Y 1024/65333 nos indica el puerto sobre el que actua el firewall.