Seguridad perimetral

Hace no mucho tiempo, definir el perímetro de la red era muy sencillo. Estaba claro cual era el router o los routers de borde, y se trataba de un castillo, un muro y el exterior. En la actualidad todo es mucho más complicado. El perímetro está donde el usuario, por lo siguiente:

  • Aplicaciones que traspasan los firewalls
  • Dispositivos móviles
  • Dispositivos dentro de la red accesibles desde el exterior.
  • Puntos de acceso inalámbricos no controlados.
  • Dispositivos que acceden a Internet directamente, sin pasar por el control de los firewalls.

Como vemos, todo es mucho más complicado hoy en día. A pesar de ello, no se pueden desdeñar las soluciones clásicas, a las que se deben añadir nuevas medidas.

Firewalls

Descarga la siguiente presentación sobre firewalls. Las hice hace dos años, pero sigue siendo buena: Presentación sobre Firewalls

Iptables

Una vez conocidas las principales arquitecturas de firewall perimetral, vamos a ver una tecnología de firewall statefull: iptables. Iptables tienen ya sus añitos, pero sigue siendo una herramienta básica para el filtrado del tráfico. Como referencia, aconsejo un clásico: www.pello.info/filez/firewall/iptables.html. También os dejo aquí estas transparencias: iptables.

Práctica 1. Consulta el siguiente script del manual "IPTABLES manual practico, tutorial de iptables con ejemplos" de Pello Xabier Altadill Izura. Estudia cada una de las reglas y añade un comentario que las explique.

#!/bin/sh ## SCRIPT de IPTABLES - ejemplo del manual de iptables ## Ejemplo de script para proteger la propia máquina ## Pello Xabier Altadill Izura ## www.pello.info - pello@pello.info echo -n Aplicando Reglas de Firewall... ## FLUSH de reglas iptables -F iptables -X iptables -Z iptables -t nat -F ### EXPLICA: iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT ## Empezamos a filtrar ### EXPLICA: /sbin/iptables -A INPUT -i lo -j ACCEPT ### EXPLICA: iptables -A INPUT -s 195.65.34.234 -j ACCEPT ### EXPLICA: iptables -A INPUT -s 231.45.134.23 -p tcp --dport 3306 -j ACCEPT ### EXPLICA: iptables -A INPUT -s 80.37.45.194 -p tcp -dport 20:21 -j ACCEPT ### EXPLICA: iptables -A INPUT -p tcp --dport 80 -j ACCEPT ### EXPLICA: iptables -A INPUT -p tcp --dport 20:21 -j DROP iptables -A INPUT -p tcp --dport 3306 -j DROP iptables -A INPUT -p tcp --dport 22 -j DROP iptables -A INPUT -p tcp --dport 10000 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L -n" # Fin del script

Práctica 2. En la siguiente topología se muestra un firewall iptables, conetado a una LAN y a una DMZ. Empleando máquinas virtuales, configura el firewall para que se cumplan los siguientes requisitos:

  1. Los usuarios de la LAN pueden salir a Internet libremente.
  2. Desde Internet no se puede acceder a las máquinas de la LAN salvo que la conexión se iniciase desde éstas.
  3. Los usuarios de la LAN pueden acceder a la DMZ libremente.
  4. Desde la DMZ no se puede acceder a las máquinas de la LAN salvo que la conexión se iniciase desde éstas.
  5. Desde Internet se puede acceder al servidor de la DMZ, pero solo a los servicios HTTP, FTP y DNS. La ip del servidor es privada, así que un visitante empleará la IP pública de firewall y éste redirigirá el tráfico hacia el servidor.
  6. Para FTP, ten en cuenta que el servicio funcionará en modo pasivo.

  7. El servidor solo puede salir al exterior con tráfico HTTP, FTP o DNS.

Finalmente haz un análisis de puertos contra el firewall y el servidor desde el exterior y desde la LAN.

Entregar: 1. script iptables. 2. Captura de los análisis de puertos. 3. Demostración en vivo.

ACL

Bueno, las listas de control de acceso, las vimos el año pasado. No vamos a insistir en esto, aunque sí un breve repaso: Transparencias sobre ACL

Firewall para la gestión integral de la red

En el mercado existen soluciones integrales para las redes (principalmente Windows) que trabajan a diferentes niveles, incluyendo enrutamiento avanzado (multiwan), firewall, proxy, VPN, cuotas y políticas de acceso, etc. Entre las soluciones software, podemos encontrar algunas propiedad de Microsoft, como ISA Server y Forefront TMG. También existen otras alternativas que no dependen de Microsoft, como Kerio Control.

Kerio Technologies Inc. es una empresa ubicada en San Jose (California), lugar que también da cobijo a empresas como Adobe Systems, Cisco Systems, Ebay, Paypal, 3dfx Interactive, etc. Kerio desarrolla soluciones de seguridad, mensajería, voz y colaboración para empresas pequeñas y medianas (de hasta 500 empleados). Tiene oficinas en Europa, Rusia, Australia y Estados Unidos.

Aunque Kerio tiene varios productos interesantes, nos vamos a centrar en Kerio Control como solución integral para la seguridad perimetral. Para descargar Kerio Control, hay que ir a http://www.kerio.com/control y descargar una versión de prueba (que caduca a los 30 días).

Kerio Control permite la gestión de los usuarios. Dichos usuarios pueden ser creados localmente en la base de datos de Kerio, o bien se pueden usar los usuarios de algún servicio de directorio, como Active Directory. En nuestro caso, vamos a trabajar en el siguiente contexto: Un dominio Active Directory con las siguientes máquinas:

  • Un controlador de dominio Active Directory.
  • Un Servidor que hará las veces de Gateway.
    • Dos tarjetas de red, una de ellas conectada al exterior, y otra conectada a la red local.
    • En este servidor se instalará Kerio Control.
  • Dos clientes Windows, unidos al dominio.

Instalar Kerio Control

Empezamos instalando la última versión de Kerio Control (en el momento de escribir esto, dicha versión es 7.2.2):

  1. Ejecutar el archivo kerio-control-whql-7.2.2-3443-win32.exe.
  2. Seguir el proceso habitual de instalación, aceptando la licencia, lugar de instalación e instalación completa.
  3. Después Kerio nos indica que hay algunos servicios que deberán desactivarse para que no entren en conflicto con Kerio Control, a saber: Conexión compartida a internet o ICS (para el caso de clientes Windows que comparten su conexión a Internet con otros equipos), detección SSDP (para el descubrimiento y anuncio de servicios) y UPnP (para el descubrimiento de dispositivos en la red). Si están desactivados dichos servicios, solo se informará de que no se encuentran activados.
  4. La casilla "Voy a instalar Kerio Control remotamente" solo se activará para instalar Kerio en remoto, para evitar la desconexión cuando se instale Kerio. En nuestro caso quedará desactivado.
  5. A continuación continuamos la instalación normalmente.

Si se produce algún error durante la instalación, reiniciamos y volvemos a instalar.

Administrar Kerio

Una vez que terminemos de instalar Kerio Control, se iniciará el servicio (mostrando un icono en la barra de iconos), y se abrirá la consola de administración web de Kerio Control. Se trata de algo muy similar a la configuración de un CMS. Durante la instalación, se nos pregunta si deseamos Registrar Kerio. En nuestro caso, elegiremos la opción "Activar la versión de prueba libre".

Una vez instalado Kerio Control, nos vamos al menú de inicio e iniciamos "Kerio Control Administration". Después completamos el registro, indicando nuestros datos. Finalmente, asignaremos una contraseña al usuario "admin", que es el usuario predefinido de Kerio.

Finalmente, aparecerá un prompt de usuario. Para iniciar, usaremos las credenciales del usuario "admin". Entonces aparecerá la consola de administración de Kerio Control. Al principio, aparecerán algunas ventanas con sugerencias para configurar distintos aspectos de Kerio. Las podemos cerrar pulsando "cancelar" puesto después las configuraremos una a una.

Vamos a dar un repaso a algunas secciones del panel de control de Kerio Control:

  • Política de tráfico\Reglas de tráfico: panel de administración del firewall. Con lo que ya hemos hecho con Iptables, deberíamos entender sin problemas esta consola.
  • Política de tráfico\Intrusion Prevention: configuración del IPS de Kerio Control. Se puede decidir que hacer ante las amenazas detectadas.
  • Política de tráfico\Configuración de seguridad: se pueden establecer filtros MAC, anti-spoofing, límites de conexión, etc.
  • Mando del ancho de banda y QoS:En esta sección se pueden definir reglas para optimizar el uso del ancho de banda disponible. Por ejemplo, podemos reservar una banda de 160 Kbps para telefonía IP, otra banda de 1Mbps para las transferencias FTP, 2Mbps para el tráfico web, y hacer que los usuarios que superaron su cuota de Internet estén limitados a 64kbps.
  • Filtro de contenido\Política HTTP:En este apartado se busca controlar el acceso a páginas web y filtrar los archivos descargados. Estas reglas no son aplicables al tráfico HTTPS (ya que su contenido no se puede leer).
  • Filtro de contenido\Política FTP: Sección donde se puede controlar y denegar la transmisión de archivos via FTP. Estas reglas no son aplicables a FTPS.
  • Filtro de contenido\Antivirus:Kerio Control puede usar como antivirus el motor integrado o bien uno externo (AVG, Avast, Clam...), para detectar las transferencias maliciosas via HTTP o FTP.
  • Servidor DHCP:Kerio Control integra el servicio DHCP.
  • DNS:También incluye un módulo de reenvío DNS, para la aceleración en las consultas DNS.
  • Definiciones: En esta sección se pueden definir nombres para definir objetos o conjuntos de objetos, que después pueden emplearse en otras secciones. De este modo se pueden hacer referencia a dichos objetos manteniendo la semántica de los mismos, lo que hace la administración más sencilla.
  • Tabla de enrutamiento:Kerio Control permite ver y editar la tabla de rutas del sistema. Pero también permite mantener una tabla propia de rutas estáticas, independiente del sistema operativo.
  • Accounting:En esta sección se pueden establecer los parámetros para el registro de estadísticas y alertas enviadas al administrador y otros usuarios.
  • Usuarios y grupos\usuarios: Desde aquí se puede configurar cada usuario válido por separado, estableciendo cosas como las cuotas de acceso a internet.
  • Usuarios y grupos\grupos: Además de usuarios, se pueden emplear grupos, para agrupar usuarios y configurar muchos usuarios con poco esfuerzo.
  • Usuarios y grupos\Dominios e Inicio de sesión de usuarios: En esta sección se puede indicar la ubicación de la base de datos de usuarios, los lugares y la forma de autenticación de los usuarios activos.
  • Estado: Este apartado permite monitorizar el funcionamiento de Kerio Control, desde los hosts activos, hasta las estadísticas de los usuarios, donde podemos comprobar el nivel de consumo de ancho de banda.
  • Registro: Se trata del log de Kerio Control.

Kerio Control y AD

Kerio Control permite que los usuarios sean tomados desde Active Directory, o bien creados en la base de datos interna de Kerio. Con la infraestructura que tenemos, podemos utilizar Active Directory:

  1. Ir a "Usuarios y grupos\Dominios e Inicio de sesión de usuarios\Servicios de directorios".
  2. Marcar "Asignar cuentas de usuarios y grupos de servicio de directorios"
  3. En "Tipo de servicio de directorios", debe aparecer "Microsoft Active Directory".
  4. En "Nombre de usuario" debemos poner la cuenta de administrador del dominio, o bien una cuenta con permisos de lectura de Active Directory.
  5. Si hemos seguido la topología descrita en la imagen anterior, en el apartado "Conexión" debemos marcar "Conectar a los servidores de directorios especificados", y escribir como servidor primario (el único que tenemos) 172.16.0.2.
  6. Finalmente hacemos clic en "Aplicar".

Una vez hecho esto, si vamos a "Usuarios y grupos\Usuarios", y seleccionamos el nombre de nuestro dominio en "Dominio", podremos ver los usuarios del dominio registrados en Kerio Control.

Autenticación de los usuarios

Como ya se ha comentado, Kerio permite establecer cuotas a los usuarios. Pero para ello, en primier lugar, el usuario debe ser registrado como activo. Para ello, se emplea el acceso a la web para pedir sus credenciales al usuario, momento en que se identificará y puede de este modo ser monitoreado. En realidad existen otras formas de identificar a los usuarios, por ejemplo asociando una IP a un usuario (lo que puede funcionar en muchos casos). Para que un usuario se autentique al iniciar su navegación, haremos lo siguiente:

  1. Ir a "Usuarios y grupos\Dominios e Inicio de sesión de usuarios".
  2. Marcar "Requerir siempre la autenticación de los usuarios al acceder a páginas web.
  3. Marcar "Habilitar la autenticación del usuario realizada automáticamente por los servidores web.
  4. Aplicar los cambios.

El otro modo de autenticar a los usuarios, es asociarlos a una IP. De este modo cuando un usuario inicia sesión, es identificado por la IP del host en que suele estar. Este esquema no funciona si los usuarios utilizan IPs diferentes cada vez, o cambian de sitio habitualmente (con perfiles móviles). Para hacer esto, seguiremos los siguientes pasos:

  1. Ir a "Usuarios y grupos\usuarios", y hacer clic derecho sobre el usuario elegido. Seleccionar la opción "editar".
  2. Seleccionar la pestaña "Direcciones IP", marcar la casilla "Direcciones IP de host específico".
  3. En el cuadro de texto asociado, escribir la IP asociada al usuario.
  4. Aceptar

Cuotas de usuario

Podemos limitar el ancho de banda que consume un usuario en el tiempo mediante cuotas. Para configurar una cuota, podemos hacerlo mediante plantilla o bien de forma concreta para un usuario. Para configurar la plantilla, podemos hacer lo siguiente:

  1. Vamos a "Usuarios y grupos\Usuarios", y hacemos clic en el botón "Plantilla".
  2. Una vez abierta la plantilla, podemos configurar los "Permisos", la "Cuota" y las "Preferencias".

La plantilla se aplica a todos los usuarios del dominio. Después de forma particular se puede configurar cada usuario por separado:

  1. Hacemos clic derecho sobre el usuario, y marcamos el botón de radio "Este usuario utiliza una configuración separada".
  2. Seleccionamos cualquiera de las pestañas "Permisos", "Cuota" o bien "Preferencias" y establecemos la configuración deseada.

Cuando un usuario supera su cuota

Qué ocurre cuando un usuario supera su cuota. Existen dos opciones: o bien se bloquea su tráfico, o bien se reduce su ancho de banda disponible a un valor especificado. Para hacer esto:

  1. En la pestaña de cuota, nos vamos a la sección "Acción de superación de cuota":
  2. Dependiendo de nuestras preferencias, seleccionar:
    • Bloquear otro tráfico
    • No bloquear otro tráfico (Limitar sólo el ancho de banda según la configuración del Mando del ancho de banda. Si elegimos esta opción, debemos haber definido una regla en "Mando del ancho de banda y QoS, indicando qué ancho de banda tienen los usuarios que han superado su cuota.

Práctica 3. Crea una infraestructura como la mostrada en la imagen siguiente.

Configura Kerio Control según las siguientes especificaciones:

  • Los usuarios de la red local pueden usar los servicios siguientes: FTP, HTTP, HTTPS y DNS.
  • Desde el exterior no se puede acceder a la red local
  • El CPD aloja un servidor web, y FTP, al que se puede acceder desde el exterior y desde la red local. A ningún otro servicio.
  • Desde el CPD no se puede acceder a la red local salvo desde el servidor web.

Si tuviésemos un firewall stateful podríamos crear una regla para que no se puduiera acceder a la red local desde la DMZ salvo que la conexión la iniciase una máquina de la LAN.

También debes configurar las cuotas de usuario, para que no superen ciertos límites:

  • Los usuarios corresponden al dominio AD.
  • Un usuario será autenticado al iniciar su navegación.
  • Un usuario no puede superar los 100 MB de descarga. Cuando los supera, el ancho de banda pasa a ser de 56Kbps.

Otra cuestión a atender es la gestión del ancho de banda. Configura el gateway para que reserve las siguientes bandas:

  • Reserva 1Mbps en bajada y 500Kbps en subida para el tráfico web. Para probarlo, puedes descargar un programa de Internet, como OpenOffice.org.
  • Reserva 1Mbps en subida y 2Mbps en bajada para el tráfico FTP. Para probarlo, puedes subir al servidor un archivo grande.

Por último, crea las reglas necesarias, para que el usuario no pueda abrir páginas pornográficas.

DMZ

Como vimos en la introducción sobre firewalls, cuando se diseña una red, es importante determinar qué equipos estarán expuestos ofreciendo servicios, y cuales no. Ya hemos hablado sobre la DMZ y sobre las diferentes topologías que nos pueden permitir definirla.

Práctica 4. Prueba a resolver el problema anterior, pero en este caso empleando una topología "screened network", tal como se muestra en la siguiente topología.

Proxy

Como ya vimos con anterioridad, un servidor proxy es un tipo de firewall a nivel de aplicación. En su forma más pura, un proxy es un "dual-homed-host", es decir, una máquina que está conectada a dos redes diferentes, pero que es incapaz de enrutar el tráfico procedente de una red hacia la otra. En lugar de eso, un proxy es capaz de hacer solicitudes a servidores en "representación" de otros ordenadores.

Cuando un usuario que navega a través de un proxy accede a una página web (por ejemplo), en realidad no llega a acceder al servidor que contiene la página. Lo que ocurre en la práctica es que obtiene una copia, cortesía del servidor Proxy, que está suficientemente actualizada.

Os dejo aquí las transparencias de Squid que hice hace un par de años, que siguen siendo válidas: Transparencias sobre Squid.


Nota inicial para los ejercicios: Para importar las cadenas de texto que hayan dentro de un cierto fichero en una acl, debemos seguir el siguiente formato:

acl "/etc/squid/lista_de_algo.txt"

suponiendo que el fichero está en /etc/squid

Práctica 5. Crea un archivo de configuración para denegar el acceso a todos los equipos a la dirección www.google.es

NOTA: utiliza una acl del tipo dstdomain.

Práctica 6. Crea un archivo de configuración que deniegue el acceso a las direcciones www.google.es y www.mauriciomatamala.net.

NOTA: utiliza una acl del tipo dstdomain. Comprueba que las reglas se aplican correctamente.

Práctica 7. Crea en tu carpeta personal un archivo llamado no_permitidos que contenga las cadenas de texto siguientes: www.google.es, es.yahoo.com y es.msn.com. A continuación crea un archivo de configuración squid.conf que deniegue las conexiones a las direcciones que se encuentran en el archivo no_permitidos.

NOTA: utiliza una acl del tipo url_regex.

¿Qué diferencia hay con la configuración anterior?

Práctica 8. Se dispone de una red local con dirección 172.16.0.x/28. Crear un archivo de configuración squid.conf que permita el acceso a Squid a todos los ordenadores de la red y no lo permita a los restantes.

NOTA: utiliza una acl del tipo src.

Práctica 9. Se desea permitir el acceso a Squid a ciertos ordenadores de la red local. Crea un fichero llamado ip_permitidas que tenga estas direcciones (cada dirección en una línea diferente). Denegar el acceso a las restantes.

NOTA: utiliza una acl del tipo src.

Práctica 10. Deniega las conexiones a todos los equipos en horario de 18:00 a 21:00 horas.

NOTA: utiliza una acl del tipo time.

Práctica 11. Deniega las conexiones a todos los equipos en horario de 18:00 a 21:00 horas, pero sólo los lunes, martes y miércoles.

NOTA: utiliza una acl del tipo time.

Práctica 12. Deniega el acceso a Squid a un equipo de la LAN. Permite el resto de accesos.

Práctica 13. Restringe el acceso a todo el contenido con extensión .mp3 a los ordenadores de la LAN.

NOTA: utiliza una acl del tipo urlpath_regex.

En mi opinión, nos va a faltar una cosa: software de control de contenidos especializado. En condiciones normales, veríamos Dans Guardian, que es algo así como un proxy para Squid (un proxy para un proxy) que está especializado en el filtro de contenidos, dando facilidades para usar extensas listas negras y complejas listas de expresiones regulares. Además permite diferenciar entre el tráfico de diferentes máquinas, y aplicar así unos u otros filtros. Si al final no podemos darlo, pues os recomiendo que le echeis un ojo.

Saludos