Cortafuegos – Firewall en acción


INTRODUCCIÓN

Asegurar el perímetro es una de las estrategias defensivas más eficaces comúnmente utilizadas desde antaño en el campo de la seguridad. Baste para ello recordar las fortificaciones medievales en las que existía tan sólo un número restringido de puntos de entrada en los que se aplicaba un fuerte control de acceso.
Reducir la superficie de exposición, crear puntos controlados de acceso y centrar las defensas en esos puntos permite optimizar la capacidad defensiva. Para reforzar la eficacia de una fortificación, existían asimismo elementos añadidos de seguridad como guardias, fosos, barreras naturales o perímetros internos a la propia fortificación.

El mundo de las tecnologías de la información ha adoptado estas ideas a lo largo de los últimos años, creando arquitecturas y dispositivos que permitieran realizar las mismas tareas con idéntica eficacia. En el centro de estas tecnologías se encuentran los cortafuegos.

El objetivo del presente manual es ilustrar el uso de las tecnologías actualmente existentes en el campo de los cortafuegos, así como los procedimientos que permitan desplegar dichas tecnologías de manera eficaz y segura dentro de la organización. Para ello se han elegido algunos escenarios comúnmente encontrados en la mayor parte de las organizaciones y se han detallado los procedimientos adecuados para aplicar dichas tecnologías en esos casos concretos.
Los conceptos y procedimientos subyacentes de las tecnologías cortafuegos, descritos a lo largo del curso, son aplicables a casi cualquier producto cortafuegos de los diversos fabricantes que cumplan las mismas condiciones funcionales. Este documento no pretende ser en ningún caso un manual exhaustivo de configuración de ninguno de los productos cortafuegos utilizados durante el curso dado que ya existen otras excelentes referencias que cumplen esa función.

1. Protocolos de red

Entendemos como protocolo una convención o estándar que controla o permite la conexión, comunicación y transferencia de información entre dos entidades.
Una de las principales razones del éxito de la Internet actual se basa en una inteligente combinación de protocolos a diferentes niveles sobre los cuales es posible ofrecer un amplio abanico de servicios.

Para entender conceptualmente las comunicaciones entre dispositivos es imprescindible contemplar una aproximación abstracta por capas acotando en ellas determinadas responsabilidades y funcionalidades.

1.1. Modelo OSI

El modelo de referencia OSI es un modelo conceptual de comunicaciones basado en una abstracción de 7 capas donde se especifican las diferentes funcionalidades de red de los dispositivos. Este enfoque permite independizar las implementaciones de manera que un cambio en una de las capas no afecta a las restantes.

El flujo de información entre capas circula de manera vertical, de manera que las capas superiores encapsulan la información en las denominadas “Protocol Data Units” (PDUs: cabecera + datos) pasándolas a las capas inferiores. Del mismo modo las capas inferiores hacen llegar la información a las superiores desencapsulando las PDUs y posteriormente pasándolas hacia la capa superior. En un mismo dispositivo las capas deben obligatoriamente pasar por las capas adyacentes para llegar a las restantes en un modelo del tipo cliente / servidor donde las capas inferiores ofrecen servicios a las superiores.

1) Física

Transmisión física de la información dependiente del portador (fibra, cobre, inalámbrico, etc.) y de diferentes especificaciones físicas y eléctricas.
PDU conocida con el nombre de trama.

2) Enlace de datos

Estándar de transmisión para transmitir en el medio físico.

PDU conocida con el nombre de datagrama. Ej. Ethernet, Token Ring, etc.

3) Red

Responsable del direccionamiento y entrega de la información entre nodos de la red sin entrar en los mecanismos de entrega fiable.

PDU conocida con el nombre de paquete. Ej: IP, ICMP, IPX.

4) Transporte

Proporciona un mecanismo de comunicaciones lógicas extremo a extremo (circuitos virtuales) y opcionalmente de entrega fiable (completa y ordenada).

PDU conocida por el nombre de segmento (orientado a conexión) o datagrama (no orientado a la conexión). Ej: TCP, UDP.

5) Sesión

Encargada de establecer sesiones lógicas entre programas o procesos superiores.

6) Presentación

Marcado y adaptación de los contenidos de manera que se pueda identificar el formato de los datos y representarlos de una forma adecuada.

7) Aplicación

Capa de abstracción superior donde residen las aplicaciones y protocolos de aplicación donde se generan, reciben y tratan los datos de la comunicación. Ej: Telnet, FTP, HTTP, etc.

Habitualmente las funcionalidades de las capas 1 y 2 son implementadas en hardware mientras que las superiores en software.

Los dispositivos pueden tener implementadas las diferentes capas parcialmente o en su totalidad. Por ejemplo, una estación de trabajo habitualmente cubre las 7 capas mientras que un dispositivo enrutador debido a sus funcionalidades habitualmente cubre hasta la capa 3.

El proceso de encapsulación produce una sobrecarga (overhead) que aumenta la cantidad de información a transmitir. Cabe destacar que entre los diferentes dispositivos que intervienen en la comunicación se produce una comunicación directa entre capas del mismo nivel. Por ejemplo, la información que un emisor A genera en la capa de transporte se recibe tal cual en la capa de transporte del receptor B, aunque por debajo ha existido un proceso constante de encapsulación y desencapsulación de datagramas a nivel de enlace de datos y de paquetes a nivel de red.

La pila de protocolos TCP/IP es una implementación de pila que no coincide exactamente con el marco de referencia OSI donde encontramos de forma diferenciada:

  • Nivel de Aplicación / Presentación / Sesión
  • Transporte
    • TCP, UDP
  • Red
    • IP
    • ICMP, IGMP
  • Red-Enlace de datos
    • ARP/RARP.

Como se puede apreciar en la siguiente figura, las dos partes más importantes son la de red donde IP intenta ser el protocolo que permite transportar la información por la red, y la de transporte donde TCP/UDP intentan permitir comunicaciones lógicas entre los dispositivos extremos. Encontramos además la particularidad de protocolos que participan en más de una capa, como ARP que sirve de nexo de unión entre las capas de red y enlace de datos.

1.2. Capa de enlace de datos

La capa de enlace de datos (nivel 2) proporciona un circuito lógico para la comunicación de sistemas entre nodos adyacentes de un enlace de área extensa (WAN) o entre nodos de una red de área local (LAN).

Algunos ejemplos de esta capa son Ethernet, ATM, HDLC, Token-Ring, etc. Vamos a ver el primero de ellos por ser el más utilizado en gran parte de los entornos.

1.2.1. Ethernet

La tecnología Ethernet gracias a su simplicidad y bajo coste ha sido considerada tras 30 años de vida la tecnología de redes de área local más extendida del mundo. Además su evolución en prestaciones y ancho de banda la está extendiendo a otros ámbitos de manera que se está convirtiendo en la tecnología universal para las dos primeras capas OSI. Un claro ejemplo de ello son las redes metropolitanas Ethernet que nos permiten conseguir redes puramente de nivel 2 en áreas geógrafica extensas.

Ethernet cubre las capas físicas y enlace de datos mediante una correspondiente división en:

  • PHY: transmisión física dependiente del medio portador.
  • MAC/LLC: control de acceso al medio y control de enlace lógico.

La unidad de datos de protocolo Ethernet está principalmente basada en las encapsulaciones Ethernet II y IEEE 802.3, siendo esta última la más habitual y extendida, está conformada por los siguientes campos:

  • Preámbulo
  • Inicio de trama
  • Dirección destino
  • Dirección origen
  • Longitud
  • Datos
  • Control de integridad

La unidad máxima de transferencia, conocida como Maximum Transfer Unit (MTU), de un datagrama Ethernet es de 1500 bytes incluyendo los campos descritos. Posteriormente han aparecido variaciones del estándar que para aumentar la eficiencia en la transmisión de datos permiten datagramas mayores. Ej: baby geant, jumbo frames.

A diferencia del direccionamiento a nivel de red que es de tipo lógico, en Ethernet es de tipo físico. Una dirección de interfaz de red Ethernet, conocida como dirección MAC, son teóricamente únicas y tienen un tamaño de 6 bytes conformado por dos partes:

  • 3 bytes altos: indica el fabricante.
  • 3 bytes bajos: número de la tarjeta.

Este tipo de direccionamiento habitualmente se representa mediante notación hexadecimal.

Podemos encontrar un listado público de códigos Ethernet de fabricante mantenido por el IEEE.
A nivel lógico encontramos tres tipos de direcciones:

    • Unicast. Únicas, correspondencia 1 a 1 con una màquina. Ej: 00-0E-38-58-AE-DE (00-0E-38 fabricante, 58-AE-DE estación).
    • Multicast
      Representan a un grupo de estaciones, correspondencia 1 a n.
      Rango: 01-00-5E-00-00-00 a 01-00-5E-7F-FF-FF
    • Broadcast
      Representan a todos, correspondencia 1 a todos (difusión).
      FF-FF-FF-FF-FF-FF

La dirección origen son únicamente de tipo unicast, mientras que la destino pueden ser unicast, multicast o broadcast. Aunque hablemos de direcciones de tipo física grabadas en la tarjeta de interfaz de red, hay que tener en cuenta que estas pueden modificarse con las herramientas adecuadas.

Ethernet utiliza un mecanismo de acceso al medio llamado Carrier Sense Multiple Access / Collision Detection (CSMA/CD) consistente en escuchar al medio antes de transmitir y con un mecanismo de detección de colisiones durante la transmisión.

1.2.2. Protocolo de resolución de direcciones (ARP)

Las comunicaciones en un segmento de red se realizan mediante las direcciones de enlace de datos (MAC). Al existir también un direccionamiento de tipo lógico en la capa de red es necesario que para interactuar con la capa de enlace de datos exista un mecanismo de mapeado o traducción entre ambos tipos de direcciones.

ARP y RARP son dos protocolos, definidos en su versión Ethernet en los RFC826 y
RFC903 correspondientemente, que nos permiten la traducción entre direccionamiento físico MAC y lógico IP en ambas direcciones. Debido a su naturaleza, estos protocolos se encuentran a medio camino entre las capas de enlace de datos y de red siendo a menudo denominados como protocolos de capa 2-3.

El mapeo entre direcciones no cambia con frecuencia (reemplazo de tarjeta de red, cambio de dirección IP en el interfaz de red) así que para evitar una constante consulta estos protocolos implementan una memoria temporal (caché).

El mecanismo de resolución directa (ARP) consiste en para una comunicación IP entre un sistema A y un sistema B:

1) A consulta si hay una entrada de la IP de B en la caché ARP.

2) A envía un datagrama Ethernet de consulta ARP con su dirección MAC origen dirigido a la dirección de broadcast (todos los dispositivos del segmento).

3) B recibe un datagrama Ethernet de consulta ARP originado por la MAC de A a la dirección de broadcast donde se indica la IP de B.

4) B envía un datagrama Ethernet de respuesta ARP originado con su dirección MAC y dirigido a la dirección MAC de A.

5) A recibe un datagrama Ethernet de respuesta ARP originado por la MAC de B dirigido a su dirección MAC.

6) A guarda el par MAC e IP de B en la caché ARP.
Como se puede apreciar, la consulta ARP es de tipo broadcast y por tanto recibida por todos los nodos de la red mientras que la respuesta es de tipo unicast ya que la pregunta nos indica la dirección física de quién la originó.

El protocolo RARP consiste en el mecanismo inverso, es decir a partir del conocimiento de una dirección física MAC queremos conocer la dirección lógica IP.

Ha sido clásicamente utilizado por estaciones que necesitan autoconfigurar su dirección IP, estas al arrancarse preguntan cuál es su dirección IP correspondiente a su MAC a un servidor RARP de la red. Este mecanismo ha caído en desuso debido a la existencia de
otros protocolos más avanzados como Bootstrap Protocol (BOOTP) y Dynamic Host Configuration Protocol (DHCP).

1.3. Capa de red

Esta capa es la responsable de ofrecer el tránsito de los paquetes extremo a extremo en una red de comunicaciones gracias a un direccionamiento definido y unos nodos de enrutamiento.

1.3.1. Protocolo Internet (IP)

El Protocolo Internet (IP), descrita su versión 4 en el RFC971, reside en la capa de red del modelo de referencia OSI siendo el encargado de proporcionar la transmisión de los paquetes desde el origen hasta el destino pasando por los diferentes nodos de la red.

IP no garantiza la entrega de los paquetes aunque lo hará en la medida de lo posible (besteffort delivery). Si es necesario deben ser los protocolos inferiores y superiores los que se encarguen de una entrega fiable dentro del segmento (nivel de enlace) y entre los extremos (nivel de transporte) correspondientemente.

Cabecera

Los campos que conforman la cabecera IPv4 son los siguientes:

  • Versión (4 bits) . Habitualmente con valor 4 (IPv6) aunque también comienza a ser habitual la 6.
  • Longitud de cabecera (4 bits). Tamaño máximo de la cabecera en palabras de 32 bits (4bytes), siendo 20 bytes el mínimo y 60 el máximo.
  • Tipo de Servicio (8 bits). Campo que permite describir la naturaleza del tráfico para darle un trato diferenciado en calidad de servicio.
  • Tamaño total (16 bits):. Tamaño máximo del paquete IP en bytes siendo el rango hábil de 0 a 65535. Si el tamaño es superior al que nos permita el medio, deberá fragmentarse.
  • IDentificación IP (16 bits). Campo identificador utilizado para identificar unívocamente un paquete. Es de especial utilidad cuando se fragmenta un paquete para identificar que todos los fragmentos pertenecen al mismo paquete.
  • Banderas (3 bits). Bits de Reservado, No Fragmentar y Más Fragmentos que se utilizan en el proceso de fragmentación que se describirá con posterioridad.
  • Desplazamiento de fragmento (13 bits). Representan el desplazamiento en bytes del fragmento dentro del paquete original.
  • Tiempo de Vida (8 bits). Especifica el tiempo de vida del paquete, el cual se decrementa en cada salto y en caso de llegar a cero hace descartar el paquete evitando así cualquier bucle.
  • Protocolo (8 bits). Indica cual es el protocolo transportado en su interior. Los valores más habituales son 1 para ICMP, 6 para TCP y 17 para UDP aunque hay muchos más asignados por la IANA.
  • Suma de integridad de cabecera (16 bits). Suma de redundancia ciclica que permite en cada salto comprobar si la cabecera tiene algún error o no.
  • Dirección IP origen (32 bits)
  • Dirección IP destino (32 bits)
  • Opciones. Campo variable de 0 a 40 bytes con múltiples funcionalidades.
  • Relleno. Bytes a 0 utilizados como relleno para ajustar el tamaño de la cabecera en palabras de 32 bits (4 bytes).

Fragmentación

Uno de los aspectos más desconocidos pero importantes de IP es la fragmentación. Al enviar un paquete a través del medio puede ocurrir que la unidad máxima de transferencia (MTU) sea inferior al tamaño del paquete haciendo necesaria su fragmentación.

La fragmentación se puede dar en cualquier dispositivo IP del camino, por lo tanto puede ser fragmentado múltiples veces siendo la red con menor MTU la que determine el tamaño  de los fragmentos. Sin embargo, es importante saber que el reensamblado tan solo se realiza en el dispositivo final.

Por ejemplo, al enviar un paquete IP de 4482 bytes sobre Ethernet necesitaremos fragmentarlo en datagramas de 1500 bytes.

Todos los fragmentos tendrán el mismo IDentificador IP (IPID) y su posición vendráindicada por el desplazamiento de fragmento:

  • Primer fragmento.Su desplazamiento de fragmento será 0 y tendrá el bit “Más Fragmentos” a 1.Además es de especial importancia porque contendrá la cabecera del protocolo detransporte encapsulado (TCP, UDP, etc).
  • Fragmentos intermedios. Su desplazamiento será diferente de 0 indicando la posición y tendrá el bit “Más Fragmentos” a 1.
  • Fragmento final. Su desplazamiento será diferente de 0 y tendrá el bit “Más Fragmentos” a 0. Con cualquier fragmento podremos saber que protocolo hay encapsulado gracias al campo “Protocolo” de la cabecera IP. Sin embargo tan solo con el primer fragmento, que es donde viaja la cabecera de transporte, podremos saber más particularidades de la capa superior.

La fragmentación es un proceso engorroso que además de añadir sobrecarga al sistema es fuente habitual de problemas tanto de comunicación como de seguridad. Para evitar la fragmentación surgió el protocolo Path MTU Discovery (PMTUd) que permite a un dispositivo enviar una serie de paquetes para averiguar el tamaño de MTU más pequeño de todo el camino.

Direccionamiento
Las direcciones IP en versión 4 tienen una longitud de 32 bits. Su representación humana más habitual és en formato decimal mediante 4 octetos:

A diferencia del nivel de enlace, este direccionamiento es de tipo lógico donde se diferencian dos partes:

  • Dirección de red (network). Determina la dirección común para un grupo de estaciones.
  • Dirección de estación (host). Determina la dirección de una estación dentro de un grupo.

El direccionamiento IP era regulado de manera única por la Internet Assigned Numbers Authority (IANA), adoptándose un la actualidad un modelo jerárquico con delegación en autoridades de registro regionales (RIR) por zonas geográficas:

El modelo inicial de direccionamiento era basado en clases (classful):

  • Clase A. Primer bit a “0”, siendo los 8 primeros bits indicadores de red y los restantes 24 de host. Rango: 1.0.0.0 a 126.255.255.255
  • Clase B. Dos primeros bit “10” siendo los 16 primeros bits indicadores de red y los restantes 16 de host. Rango: 128.0.0.0 a 191.255.255.255
  • Clase C. Tres primeros bits a “110” siendo los 24 primeros bits indicadores de red y los restantes 8 de host. Rango: 192.0.0.0 a 223.255.255.255
  • Clase D. Cuatro primeros bits a “1110”. Utilizado para direcciones multicast. Rango: 224.0.0.0 a 239.255.255.255
  • Clase E. Cuatro primeros bits a “1111”. Están reservadas para usos futuros. Rango: 240.0.0.0 a 255.255.255.254

Este modelo de asignación era poco escalable e ineficiente y por ello se opto por un modelo de direccionamiento sin clases (classless) donde los bits de red y de host pueden asignarse de manera flexible (subnetting) incluso de manera recursiva.