Seguridad Activa – Acceso a Redes

En una empresa es raro encontrar una máquina aislada. Generalmente están conectadas a una red de área local o red LAN [Local Area Network] para utilizar los recursos de otras máquinas y para que otras máquinas aprovechen los suyos (discos en red NAS). El mismo empeño puesto en la vigilancia de la actividad que ocurre dentro de la máquina hay que mantenerlo cuando los datos salen y entran por alguna de sus interfaces de red.

31-Jul-2016

Redes Cableadas

Cuando un equipo ofrece servicios TCP/IP debe de abrir ciertos puertos (interface a nivel lógico que permite enviar y recibir datos). A estos puertos pueden solicitar conexión máquinas fiables siguiendo el protocolo estándar, o máquinas maliciosas siguiendo una variación del protocolo que puede provocar fallos en nuestro servidor. Las consecuencias de este fallo pueden ser: el servicio queda interrumpido o el atacante puede tomar el control de la máquina.

Arquitectura en BUS

Las primeras redes cableadas seguían la topología o arquitectura en BUS donde todas estaban conectadas al mismo cable, de manera que cualquiera podía escuchar todas las conversaciones, no solo aquellas en las que participaba.

Arquitectura en BUS

Arquitectura en ESTRELLA

Actualmente se utilizan las topologías en estrella, donde cada equipo tiene un cable directo a un puerto de un conmutador de red (switch) y por ahí envían sus paquetes; el switch los recibe y decide por qué puerto va a enviarlos para que lleguen al destino. Esta arquitectura nos permite mejorar en seguridad y rendimiento.

Arquitectura en ESTRELLA

Sin embargo, las redes conmutadas tienen sus propias vulnerabilidades:

  • Hay que proteger el switch físicamente: encerrarlo en un armario/rack con llave dentro de una sala con control de acceso.
  • Hay que proteger el switch lógicamente: poner usuario/contraseña para acceder a su configuración.
  • Hay que hacer grupos de puertos para cada departamento de la empresa creando las llamadas VLAN.
  • Hay que controlar qué equipos se pueden conectar y a qué puertos.

VLAN

LAN Virtual

Los grupos de puertos que hacemos en un switch gestionable para aislar un conjunto de máquinas constituyen una VLAN (LAN virtual). Se le llama virtual porque parece que están en una LAN propia, que la red está montada para ellos solos. Utilizar VLAN mejora el rendimiento y la seguridad, porque esas máquinas solo hablan entre ellas y nadie extraño les escucha. Al mismo tiempo, si ocurre un problema en una VLAN (un ataque, un problema de un servidor DHCP descontrolado), las otras VLAN no se ven afectadas. Pero un exceso de tráfico en una VLAN sí afectaría a todos porque, al fin y al cabo, comparten el switch.

Esquema de una VLAN

Una VLAN no tiene por qué estar limitada a un único switch, ya que uno de los puertos del switch puede estar conectado a otro siwtch lo que nos permite aumentar la VLAN.

Las VLAN no suelen estar aisladas del resto del mundo. Como mínimo necesitan acceso a Internet, así como estar conectados a servidores internos de la empresa.

Capas de comunicación

Para interconectar distintas VLAN (capa 2) se utiliza un enrutador o router (capa 3).

  • Capa 2. En el modelo TCP/IP la capa 2 o capa de enlace tiene una visión local de la red: sabe cómo intercambiar paquetes de datos (llamados tramas) con los equipos que están en su misma red. La comunicación es directa entre origen y destino (aunque cruce uno o varios switch).
  • Capa 3. La capa 3 o capa de red tiene una visión global de la red: sabe cómo hacer llegar paquetes de datos hasta equipos que no están en su misma red. La comunicación es indirecta, necesita pasar por una máquina más: el router o enrutador de paquetes.

VLAN Etiquetada

Utilizada para crear diseños de la capa 3, donde una máquina hace de router. En este modelo el switch que conectará las VLAN al router VLAN tiene una configuración distinta: el switch añadirá una etiqueta (un número) a los paquetes de datos (tramas) que salen por ese puerto. Estos paquetes ya pueden viajar por el mismo cable que los paquetes de otras VLAN sin interferirse entre ellos (conservamos el aislamiento entre VLAN), porque llegarán solo a los puertos donde la interfaz de red sea capaz de interpretar ese tag (etiqueta, número).

Esquema VLAN Etiquetada

Autenticación en el puerto. MAC y 802.1x

Para evitar que se puedan suplantar los equipos que están conectados formando una VLAN, los switch permiten establecer autenticación en el puerto: solo podrá conectar aquel cuya MAC esté dentro de una lista definida en el propio switch, o, dado que las MAC son fácilmente falsificables (las tarjetas emiten los paquetes que genera el software de red del sistema operativo), el que sea autentificado mediante RADIUS en el estándar 802.1X.

Redes Inalámbricas

WLAN

En las redes inalámbricas o WLAN (Wireless LAN), el medio de transmisión (el aire) es compartido por todos los equipos y cualquier tarjeta en modo promiscuo puede perfectamente escuchar lo que no debe.

Aunque se pueden hacer redes inalámbricas entre equipos (redes ad hoc), lo más habitual son las redes de tipo infraestructura: un equipo llamado access point (AP, punto de acceso) hace de switch, de manera que los demás ordenadores se conectan a él, le envían sus paquetes y él decide cómo hacerlos llegar al destino, que puede ser enviarlo de nuevo al aire o sacarlo por el cable que le lleva al resto de la red. Salir por el cable es la configuración más habitual en las empresas, donde la WLAN se considera una extensión de la red cableada.

WLAN en modo Infraestructura

Hay que controlar:

  • Proteger el access point físicamente. La protección física es más complicada que en el caso del switch, porque el AP tiene que estar cerca de los usuarios para que puedan captar la señal inalámbrica, mientras que para conectar la toma de red de la mesa con el switch podemos utilizar cable de varias decenas de metros.
  • Proteger el access point lógicamente (usuario/contraseña).
  • Controlar qué clientes pueden conectarse a él (autenticación).
  • Podemos separar dos grupos de usuarios, haciendo que el mismo AP emita varias SSID distintas, con autenticaciones distintas. Estas distintas SSID suelen tener asociada una VLAN etiquetada.
  • Sobre todo, hay que encriptar la transmisión entre el ordenador y el AP. Así, aunque alguien capture nuestras comunicaciones, no podrá sacar nada en claro.

Asociación y Transmisión

Para poder trabajar en una red inalámbrica se establecen dos fases: asociación y transmisión.

Asociación

Se realiza la conexión, se negocian los protocolos y se solicita la autenticación.

  • El usuario elige la SSID a la que se quiere conectar y entonces su tarjeta inalámbrica contacta con el AP que ofrece esa SSID.
  • Negocian varias características de la comunicación (protocolo b/g/n, velocidad, etc.)
  • El AP puede solicitar algún tipo de autenticación para decidir si debe dejarle asociarse o no.

Generalmente es una clave alfanumérica que se registra en la configuración del AP y que el usuario debe introducir para poder trabajar con él.

La autenticación es más habitual en redes inalámbricas que en redes cableadas porque, para poder llegar a conectar un cable, primero tenemos que entrar en la empresa, en cambio, podemos captar la señal inalámbrica desde un coche aparcado junto a la fachada, sentados en un bar en la planta baja, etc.

Tipos de autenticación de los AP:

  • Abierta: no hay autenticación, cualquier equipo puede asociarse con el AP.
  • Compartida: la misma clave que utilizamos para cifrar la usamos para autenticar.
  • Acceso seguro: usamos distintas claves para autenticar y cifrar. El usuario solo necesita saber una, la clave de autenticación: la clave de cifrado se genera automáticamente durante la asociación.
  • Autenticación por MAC: el AP mantiene una lista de MAC autorizadas y solo ellas pueden asociarse.

Transmisión

Una vez asociados al AP, podemos comenzar la transmisión, durante la cual el cliente y el AP deberán de activar el cifrado de cada paquete. El tipo de cifrado lo habrán negociado durante la asociación.
El AP admite varias combinaciones:

  • Autenticación abierta y sin cifrado: se utiliza en lugares públicos (bibliotecas, cafeterías, etc.). La intención es no molestar al usuario introduciendo claves. En estos casos, el sistema operativo nos avisa de que vamos a conectarnos a una red sin seguridad.
  • Autenticación abierta y transmisión cifrada: es el esquema habitual de las primeras redes wifi.
  • Autenticación compartida y transmisión cifrada: es una mala combinación, porque la autenticación es muy vulnerable y, conocida esa clave, tendrán acceso a descifrar las comunicaciones de cualquier ordenador conectado a ese AP.
  • Autenticación segura y transmisión cifrada: es la mejor solución porque utiliza una clave distinta para cada cosa. La más conocida es WPA.

Cifrado: WEP, WPA y WPA2

Cifrado de la WLAN

La necesidad de encriptar las comunicaciones inalámbricas apareció desde el primer momento. El primer estándar se llamó WEP (Wireline Equivalent Privacy, privacidad equivalente al cable), intentando compensar las dos realidades:

  • En redes cableadas es difícil el acceso al cable, pero si alguien lo consigue, puede capturar cualquier comunicación que pase por ahí.
  • En redes inalámbricas cualquiera puede capturar las comunicaciones, pero, como van cifradas, no le servirá de nada.

Sin embargo, en poco tiempo se encontraron debilidades al algoritmo de cifrado utilizado en WEP. Capturando cierto número de tramas, en poco tiempo cualquiera podía obtener la clave WEP.

Para solucionar las deficiencias del primer estándar se desarrolló posteriormente el estándar WPA (Wi-Fi Protected Access) que introduce muchas mejoras:

  • Nuevos algoritmos más seguros (TKIP, AES), tanto por el algoritmo en sí como por el aumento de longitud de las claves, lo que dificulta los ataques.
  • Rotación automática de claves (WPA2). Cada cierto tiempo (varios minutos) el AP y el cliente negocian una nueva clave. Por tanto, si algún atacante lograra acertar con la clave de una comunicación, solo le serviría para descifrar la información intercambiada durante ese intervalo de tiempo, pero no la anterior ni la siguiente.
  • Por primera vez se distingue entre los ámbitos personal y empresarial. En el ámbito personal es suficiente con el esquema habitual de una única clave que conocen todos (WPA le llama PSK [Pre-Shared Key]); en el ámbito empresarial no tiene sentido, porque si una persona abandona la empresa, habría que cambiar la clave y comunicarlo de nuevo a todos los empleados. Para resolverlo, WPA empresarial introduce un servidor RADIUS donde poder almacenar un usuario y una clave para cada empleado.

En general conviene tener todas las redes en WPA; pero en cada caso habrá que estudiar si el AP lo tiene y si todos los posibles equipos que queremos conectarle lo permiten, tanto en hardware (el cifrado se hace en la tarjeta) como en software.

WPA Empresarial: RADIUS

Para las necesidades de seguridad de una empresa no es suficiente con la solución de clave única compartida por todos (rotación de empleados, robo de portátiles o teléfonos móviles que saben o almacenan la clave única).

El esquema de funcionamiento de WPA empresarial es el siguiente:

  • Dentro de la LAN de la empresa hay un ordenador que ejecuta un software servidor RADIUS. En este servidor hay una base de datos de usuarios y contraseñas, y el servidor admite preguntas sobre ellos.
  • Los AP de la empresa tienen conexión con ese ordenador.
  • Los AP ejecutan un software cliente RADIUS. Este software es capaz de formular las preguntas y analizar las respuestas.
  • El servidor RADIUS tiene la lista de las direcciones IP de los AP que le pueden preguntar. Además de estar en la lista, el AP necesita que le configuremos una contraseña definida en el servidor (una dirección IP es fácilmente falsificable).
  • Cuando un cliente quiere asociarse a un AP, le solicita usuario y contraseña. Pero no las comprueba él mismo, sino que formula la pregunta al servidor RADIUS utilizando la contraseña configurada para ese servidor. Dependiendo de la respuesta, el AP acepta la asociación o no.
Esquema autenticación con RADIUS

Además de mejorar la seguridad, porque cada usuario tiene su contraseña (con su caducidad) y en cualquier momento podemos añadir o eliminar un usuario, con WPA empresarial podemos llevar un registro de quién entra a la red en cada momento.

VPN

Red Privada Virtual

Las empresas tienen redes LAN y WLAN para sus oficinas, pero también suelen necesitar que los empleados puedan entrar a esa misma red desde cualquier otro lugar de Internet (su casa, la sede de otra empresa, etc.), por cualquier motivo (buscar información en la intranet, recuperar un fichero del disco compartido, actualizar un pedido, etc.). Algo como establecer una VLAN entre el ordenador del empleado y la LAN de la empresa, utilizando Internet como transporte. Estamos hablando de montar una VPN (Virtual Private Network, Red Privada Virtual).

El objetivo final de la VPN es que el empleado (más bien, su ordenador) no note si está en la empresa o fuera de ella. En ambos casos recibe una configuración IP privada (direcciones 10.X.X.X, por ejemplo), por lo que no necesita cambiar nada en la configuración de sus aplicaciones (correo, intranet, etc.).

Esquema conexión VPN

El responsable de conseguir esta transparencia es el software de la VPN. En el ordenador del empleado hay que instalar un software cliente VPN. Este software instala un driver de red, de manera que para el sistema operativo es una tarjeta más. Ese driver se encarga de contactar con una máquina de la empresa, donde ejecuta un software servidor VPN que gestiona la conexión, para introducir los paquetes en la LAN.

La gestión consiste en:

  • Autentificar al cliente VPN. No podemos dejar que entre cualquiera, por lo que se utiliza el típico usuario/contraseña, tarjetas inteligentes, etc.
  • Establecer un túnel a través de Internet. El driver de la VPN en el cliente le ofrece una dirección privada de la LAN de la empresa (la 10.0.1.45, por ejemplo), pero cualquier paquete que intente salir por esa tarjeta es encapsulado dentro de otro paquete. Este segundo paquete viaja por Internet desde la IP pública del empleado hasta la IP pública del servidor VPN en la empresa. Una vez allí, se extrae el paquete y se inyecta en la LAN. En envío de paquetes desde el servidor al cliente se realiza de forma similar.
  • Proteger el túnel. Como estamos atravesando Internet, hay que encriptar las comunicaciones (sobre todo si somos una empresa). Los paquetes encapsulados irán cifrados.
  • Liberar el túnel. El cliente o el servidor pueden interrumpir la conexión cuando lo consideren necesario.

El software VPN en el cliente suele llevar una opción para que las conexiones a Internet se hagan directamente en la conexión del usuario, sin tener que pasar por el túnel y salir por la conexión a Internet de la empresa. Es decir, el túnel se usa solo para comunicaciones internas.

Servicios de Red: Nmap y Netstat

Nmap

El software de los servicios de red es especialmente delicado. Debemos vigilar qué software tenemos activo y qué actualizaciones tiene pendientes (haciendo conexiones o esperándolas). Para conocer el software de red activo, podemos utilizar un par de herramientas sencillas: Nmap y netstat.

La herramienta Nmap, disponible para sistemas Linux y Windows (descargar desde nmap.org), además del escaneo de puertos para determinar los servicios disponibles en una máquina, nos permite conectarnos a cada uno de ellos. Después analiza los mensajes que generan estos servidores para identificar la versión concreta del sistema operativo y la versión concreta del software de servidor (server fingerprint) que está escuchando en cada puerto.

Es decir, aunque intentemos despistar arrancando servicios en puertos que no son los esperados (80 para HTTP y otros), la herramienta reconoce el puerto como abierto y consigue identificar el servicio.

La información de versión es muy útil para un atacante porque puede consultar en su base de datos las vulnerabilidades de cada versión de un servicio y así elegir mejor el tipo de ataque que puede lanzar contra la máquina.

Para cada puerto, la herramienta ofrece cuatro posibles estados:

  • open (abierto): la máquina acepta paquetes dirigidos a ese puerto, donde algún servidor está escuchando y los procesará adecuadamente.
  • closed (cerrado): no hay ningún servidor escuchando.
  • filtered: Nmap no puede decir si ese puerto está abierto o cerrado porque alguien está bloqueando el intento de conexión (router, firewall).
  • unfiltered: el puerto no está bloqueado, pero no se puede concluir si está abierto o cerrado.

Comando nmap sobre la ip del router que hace de puerta de enlace en una máquina Windows.

C:\Program Files (x86)\Nmap>nmap -F --system-dns 192.168.1.1

Starting Nmap 7.12 ( https://nmap.org ) at 2016-07-31 10:34 Hora de verano romance
Nmap scan report for SMBSHARE (192.168.1.1)
Host is up (0.041s latency).
Not shown: 96 closed ports
PORT    STATE SERVICE
23/tcp  open  telnet
80/tcp  open  http
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds
MAC Address: 88:A8:2C:21:53:18 (zte)

Nmap done: 1 IP address (1 host up) scanned in 4.89 seconds

Comando nmap sobre la ip de la máquina virtual donde está corriendo el servidor web Apache.

C:\Program Files (x86)\Nmap>nmap -F --system-dns 192.168.1.10

Starting Nmap 7.12 ( https://nmap.org ) at 2016-07-31 10:38 Hora de verano romance
Nmap scan report for 192.168.1.10
Host is up (0.00s latency).
Not shown: 95 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
80/tcp   open  http
443/tcp  open  https
3306/tcp open  mysql
MAC Address: 08:00:27:2C:8B:77 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 4.71 seconds

NetStat

Netstat (network statistics) es una herramienta que se ejecuta desde la línea de comandos que nos muestra un listado de las conexiones activas de nuestro equipo, tanto entrantes como salientes.

Existen versiones de este comando en varios sistemas como Unix, GNU/Linux, Mac OS X, Windows y BeOS.

La información que obtenemos con este comando incluye el protocolo en uso, las tablas de ruteo, las estadísticas de las interfaces y el estado de la conexión. Existen, además de la versión para línea de comandos, herramientas con interfaz gráfica (GUI) en casi todos los sistemas operativos desarrollados por terceros.

Para cada puerto, la herramienta ofrece los estados:

  • ESTABLISHED El socket tiene una conexión establecida
  • SYN_SENT El socket está intentando iniciar una conexión
  • SYN_RECV Una petición de conexión fue recibida por la red
  • FIN_WAIT1 El socket está cerrado, y la conexión está finalizándose
  • FIN_WAIT2 La conexión está cerrada, y el socket está esperando que finalice la conexión remota
  • TIME_WAIT El socket está esperando después de cerrarse que concluyan los paquetes que siguen en la red
  • CLOSED El socket no está siendo usado
  • CLOSE_WAIT La conexión remota ha finalizado, y se espera que se cierre el socket
  • LAST_ACK La conexión remota ha finalizado, y se espera que se cierre el socket. Esperando el acknowledgement.
  • LISTEN El socket está esperando posibles conexiones entrantes
  • CLOSING Ambos sockets han finalizado pero aún no fueron enviados todos los datos
  • UNKNOWN El estado del socket no se conoce
  • DELETE_TCB Se está eliminando el búfer del control de transmisión (TCB) para la conexión TCP.

Comando netstat en un equipo de sobremesa con Windows.

C:\WINDOWS\system32>netstat

Conexiones activas

  Proto  Dirección local        Dirección remota       Estado
  TCP    127.0.0.1:1559         lmlicenses:5939        ESTABLISHED
  TCP    127.0.0.1:1611         lmlicenses:1612        ESTABLISHED
  TCP    127.0.0.1:1612         lmlicenses:1611        ESTABLISHED
  TCP    127.0.0.1:5939         lmlicenses:1559        ESTABLISHED
  TCP    192.168.1.5:1556       server24002:5938       ESTABLISHED
  TCP    192.168.1.5:1793       wo-in-f188:5228        ESTABLISHED
  TCP    192.168.1.5:1918       123:https              TIME_WAIT
  TCP    192.168.1.5:1936       198.41.214.68:https    ESTABLISHED
  TCP    192.168.1.5:1937       wo-in-f95:https        ESTABLISHED
  TCP    192.168.1.5:1938       82:https               ESTABLISHED
  TCP    192.168.1.5:1956       ec2-52-28-2-204:https  ESTABLISHED
  TCP    [::1]:80               i5-luis:1940           TIME_WAIT
  TCP    [::1]:80               i5-luis:close-combat   TIME_WAIT
  TCP    [::1]:80               i5-luis:1945           TIME_WAIT
  TCP    [::1]:80               i5-luis:1946           TIME_WAIT
  TCP    [::1]:80               i5-luis:1949           TIME_WAIT
  TCP    [::1]:1584             i5-luis:1586           ESTABLISHED
  TCP    [::1]:1586             i5-luis:1584           ESTABLISHED
  TCP    [::1]:1950             i5-luis:http           TIME_WAIT

Comando netstat en una sesión de telnet con el servidor web Apache.

root@srvweb:/ # netstat
Active Internet connections
Proto Recv-Q Send-Q Local Address          Foreign Address        (state)
tcp4       0      0 192.168.1.10.http      192.168.1.5.1984       ESTABLISHED
tcp4       0     64 192.168.1.10.ssh       192.168.1.5.1977       ESTABLISHED
Active UNIX domain sockets
Address  Type   Recv-Q Send-Q    Inode     Conn     Refs  Nextref Addr
fffff8000936d1e0 stream      0      0        0 fffff8000936d690        0        0
fffff8000936d690 stream      0      0        0 fffff8000936d1e0        0        0
fffff8000936d3c0 stream      0      0 fffff800095fcce8        0        0        0 /var/run/clamav/clamd.sock
fffff8000936d4b0 stream      0      0 fffff8000999fce8        0        0        0 /tmp/mysql.sock
fffff800095c3b40 stream      0      0 fffff800095dd3b0        0        0        0 /var/run/devd.pipe
fffff8000936d0f0 dgram       0      0        0 fffff800095c3960        0 fffff8000936d2d0
fffff8000936d5a0 dgram       0      0        0 fffff800095c3a50        0        0
fffff8000936d2d0 dgram       0      0        0 fffff800095c3960        0        0
fffff800095c3960 dgram       0      0 fffff800092bfb10        0 fffff8000936d0f0        0 /var/run/logpriv
fffff800095c3a50 dgram       0      0 fffff800092bfce8        0 fffff8000936d5a0        0 /var/run/log
fffff8000936d870 seqpac      0      0 fffff800095dd1d8        0        0        0 /var/run/devd.seqpacket.pipe