2. Control de accesos por máquinas
2.1. Identificadores
Este tipo de control selecciona a partir de la máquina utilizada para acceder. Por lo tanto, se deben poder identificar las máquinas y diferenciarlas y, si es posible, agruparlos en familias. Una máquina se puede identificar por:
- Número de serie del procesador.
- Dirección MAC.
- Dirección IP o de otro protocolo de red.
- Nombre Internet.
El número de serie del ordenador no se utiliza normalmente. En general los procesadores no tienen números de serie accesibles por el software excepto algunos de estaciones de trabajo.
Actualmente los nuevos Pentium III parece ser que llevarán un número de serie accesible, pero utilizarlo es poco ético. Así hay numerosos grupos de protesta contra esta nueva característica no evitable. En las estaciones de trabajo se utilizan los números de serie en el control de ventas o actualizaciones de software asignado a una máquina, así se evita la piratería informática. Este sistema también se puede realizar con la dirección MAC o IP, pero entonces se puede cambiar de máquina.
Los únicos datos que viajan en los paquetes son las direcciones MAC y las direcciones IP de la maquina origen (emisora) y destino (receptora) como indica la Figura 2.1.1. Así son los únicos identificadores que pueden utilizar legalmente los filtros.
Dirección MAC Dirección IP
Figura 2.1.1: Identificadores del paquete.
Los nombres de las máquinas no están en los paquetes, ¿cómo se puede hacer para seleccionar un acceso con el nombre?. El filtro pide a un servidor de nombres (DNS) el nombre de la máquina a partir de su dirección origen IP, es el proceso de DNS inverso.
2.2. Filtrado por dirección MAC
Las direcciones MAC identifican las máquinas para los protocolos de enlace de las redes LAN. Así estas direcciones están en los paquetes de los protocolos de LAN: Ethernet, Token Ring, ATM, FDDI, etc...
Las desventajas de este método son:
•Números difíciles de tratar
La asignación de la dirección se hace por Hardware, o sea vienen programadas en las tarjetas de red, excepto raras excepciones. Todas las direcciones son únicas en el mundo pero sus valores no tienen más relación entre ellas que el proceso de fabricación, por lo tanto, las direcciones MAC de las tarjetas de los ordenadores de una empresa no tienen ninguna característica común.
•Sólo se pueden utilizar en el entorno de la LAN.
Sólo se utilizan dentro del entorno de una LAN, o sea, una red de Hubs y Switchs, así cambian cuando pasan por un Router y no existen en las máquinas aisladas conectadas telefónicamente a Internet. No se puede realizar control a nivel WAN.
•No pueden discriminar entre servicios.
No se puede discriminar por servicio porque en la cabecera del paquete de la capa MAC no hay información del servicio, sólo de la máquina destino de la misma LAN (puede ser un Router).
•Sólo se pueden realizar desde filtros.
Las aplicaciones no tienen acceso directo a la dirección MAC del paquete que llega, a menos que actúen por debajo del sistema operativo, que no es normal. Así esta forma de control siempre se realiza en la red mediante los equipos de interconexión, los Switchs y sistemas de VLAN.
•Siempre son bidireccionales.
No permiten controles unidireccionales, si se prohibe el acceso a la máquina A a B, B tampoco podrá acceder a A (Ver Figura 2.2.1). Las ventajas son:
•Método difícil de atacar.
Es muy difícil falsificar la dirección origen del paquete. Además no se puede cambiar por software.
•El filtrado es muy rápido.
Como actúan a nivel dos, el filtrado se hace con elementos Hardware y, por lo tanto, es muy rápido.
Se utilizan poco y para casos especiales donde la separación entre las dos áreas quiere ser total y sin unidireccionalidad.
.jpg)
2.3. Filtrado por nombre o dirección de red y puerto.
Estos filtrados se realizan prohibiendo el acceso de una máquina identificada por una dirección IP o un nombre a un puerto concreto otra máquina también identificada por una dirección IP o un nombre. Así se permite realizar un control de accesos a cada servicio.
Tratar con nombres de Internet es más sencillo porque son más fáciles de recordar y tratar, pero tiene el inconveniente de que el nombre no viaja con el paquete. Así cuando el sistema de control filtra sólo conoce la dirección IP de la máquina que envió el paquete. Para saber el nombre debe preguntar a un servidor de nombres (DNS) mediante el protocolo de DNS inverso. Esto debilita la seguridad porque introduce un elemento más para romper por el atacante, se puede modificar temporalmente la información del DNS o suplantar su mensaje de respuesta.
Las direcciones IP y los nombres son mucho más manejables que las direcciones MAC. Se actualizan por software y siempre obedecen a una lógica. Los nombres son elegidos por la empresa y, por lo tanto, están relacionados. Las IPs se agrupan por clases o subclases ligadas a una empresa, una zona geográfica o cualquier grupo, así es fácil realizar filtros que afecten a todo un grupo de máquinas de la misma zona sin necesidad de introducir las direcciones una a una. Los grupos de direcciones IP afines se definen con las máscaras.
Así los filtros de IP se pueden definir prohibiciones o permisos con las siguientes posibilidades:
| Máquina/s origen |
Máquina/s destino |
Prohibición o permiso de |
| IP x.x.x.x |
IP x.x.x.x |
Acceso completo de origen a destino. |
| IP x.x.x.x Máscara x.x.x.x |
IP x.x.x.x |
Acceso completo del grupo de máquinas origen a destino. |
| IP x.x.x.x Máscara x.x.x.x |
IP x.x.x.x Máscara x.x.x.x |
Acceso completo del grupo origen al grupo destino. |
| IP x.x.x.x |
IP x.x.x.x Puerto y |
Acceso de origen a un servicio de destino. |
| IP x.x.x.x Máscara x.x.x.x |
IP x.x.x.x Puerto y |
Acceso del grupo de máquinas origen a un servicio de destino |
| IP x.x.x.x Máscara x.x.x.x |
IP x.x.x.x Máscara x.x.x.x Puerto y |
Acceso de un grupo de máquinas origen a un servicio del grupo destino. |
Tabla 2.3.1: Filtros de IP.
El control se puede hacer desde el servidor o desde un filtro intermedio (Router o Firewall). En los siguientes apartados se analizan las dos posibilidades.
2.4. Filtrado desde el servidor
Las direcciones IP origen son accesibles desde el sistema operativo y las aplicaciones, por lo tanto en el servidor se pueden montar filtros por IP o nombre.
En UNIX existen dos ficheros donde se pueden hacer un listado de las máquinas que tienen acceso o no a los servicios. Los ficheros son:
- Host.allow. Permite el acceso al servicio indicado a la IP o nombre indicado.
- Host.deny. Prohibe el acceso al servicio indicado a la IP o nombre indicado.
Si no se indica el acceso está permitido. La sintaxis es un fichero tipo texto donde cada línea es un filtro. Por ejemplo:
FTP: 145.22.22.22 Telnet: 122.33.33.33 255.255.255.192
ALL: 1195.1.1.0 255.255.255.0 (Para todos los servicios).
Muchas aplicaciones también permiten crear una lista propia de máquinas que tienen el acceso prohibido o necesitan password para acceder. Un ejemplo son los servicios r..., como el rlogin, rusers, rsh, donde se puede crear una lista de nombres con las máquinas que no necesitan password. Estas listas son muy peligrosas, para los atacantes es muy fácil hacer creer que su IP es la que corresponde a un nombre de la lista.
2.5. Filtros con Routers o Firewalls
Muchos Routers permiten crear filtros de IP y máscara origen a IP, máscara y puerto destino, cumplen las necesidades comentadas en los anteriores apartados.
Los Firewalls realizan funciones más avanzadas, permiten filtrar mirando características de la capa de transporte. Así el control se realiza de forma diferente para las distintas capas de transporte, con las siguientes posibilidades:
- En TCP únicamente se controla el paquete de apertura de sesión.
- En UDP y ICMP, que no abren sesiones, se realiza la técnica de inspección de estados.
- Se realizan técnicas especiales para los servicios TCP con asignación dinámica de puertos, como FTP o RPC.
El protocolo TCP es orientado a conexión, por lo tanto, antes de la transmisión de información debe realizar una apertura de sesión correcta y al finalizar un cierre de sesión. La apertura de sesión se realiza mediante 3 mensajes como indica la Figura
2.5.1. Los Firewalls únicamente controlan los paquetes de conexión, que se diferencian de los otros porque llevan el bit de ACK a '0'. Con este procedimiento se consiguen dos mejoras:
- Más velocidad porque el Firewall solamente examina un paquete de cada sesión.
- Unidireccionalidad en los casos de filtros para grupos de puertos.
Cuando el filtro se programa para prohibir el acceso a un puerto determinado normalmente no hay problemas de direccionalidad porque el puerto utilizado como cliente no es el mismo que el utilizado como servidor. Así si se programa prohibido el acceso de la máquina A al puerto 80 de la máquina B, la máquina B no tendrá problemas para acceder al 80 de la máquina A, ya que su puerto origen no será el 80 y recibirá sin problemas las respuestas a sus peticiones, ver Figura 2.5.2.
El problema aparece cuando se realizan prohibiciones como: .jpg)
Figura 2.5.1: Apertura de sesión TCP.
‹ Prohibido el acceso a todos los puertos de la máquina A menos el 80 (una máquina que únicamente da servicio de Webs).
En este caso la máquina A no podrá conectarse a otras máquinas porque normalmente cuando hace de cliente utiliza los puertos de números mayores que 5.000. Así la solución es controlar únicamente el primer mensaje de inicio de conexión y permitir el paso de los mensajes de respuesta, ver Figura 2.5.3.
Los protocolos UDP e ICMP no son orientados a conexión, se envía información sin necesidad de haber abierto una sesión anteriormente. Por lo tanto no se pueden controlar los primeros paquetes, o se controlan todos o no se controla ninguno. Para evitar problemas de direccionalidad se utiliza la técnica de inspección de estados. Cuando se filtra con inspección de estados en principio se permite el paso, pero se guarda memoria de los paquetes que van pasando entre las dos máquinas para cada par de puertos. Así conociendo toda la historia de la comunicación y con la inteligencia de un Firewall puede detectar si se realiza algún ataque y cortar si es necesario.
En algunos servicios, como FTP o los que utilizan RPCs, el servidor utiliza puertos distintos en cada conexión. El cliente realiza siempre la primera conexión al mismo puerto pero durante la transmisión el servidor puede utilizar otros puertos para sesiones concretas, este puerto es comunicado al cliente durante el traspaso de información por el puerto inicial. Si el Firewall quiere hacer una programación como:
‹ Prohibido el acceso a todos los puertos excepto el 80 y 111. .jpg)
.jpg)
.jpg)
El cliente y el servidor no podrán comunicarse por el nuevo puerto asignado dinámicamente ya que estará dentro de los prohibidos, no será ni el 80 ni el 111 (ver Figura 2.5.4.)
Para evitar esto los Firewalls examinan los paquetes de estos servicios y detectan los puertos asignados dinámicamente y así lo abren durante esa conexión.
2.6. Ataques al control por IP o nombre
Existen diversos ataques al control de accesos por IP o nombre. Algunos se saltan el control para acceder a la información restringida y otros están fuera del alcance de los filtros. Se pueden agrupar en:
- Spoofing. Consiste en cambiar la dirección origen por una que es aceptada por el filtro.
- Hijacking. Consiste en secuestrar una sesión, es decir, introducirse en la comunicación aprovechando una sesión que ha abierto un usuario con privilegios. Se deben enviar los mensajes con la IP del usuario que abrió la sesión y recibir las respuestas del servidor antes que el usuario legal.
- Denegación de servicio (DoS) con paquetes UDP o ICMP. Se aprovecha el control débil que se realiza sobre los paquetes no orientados a conexión para realizar ataques para destruir, no para obtener información.
- Tunneling. Se aprovecha un ordenador que está detrás del filtro o tiene permisos de acceso para utilizarlo de plataforma. El ordenador externo recibe una conexión del interno y a partir de ésta realiza los ataques. También se puede hacer utilizando una conexión permitida al ordenador interno y desde ésta pasar a un software capaz de atacar. Para ello se necesita la colaboración de algún usuario interno, poder instalar un caballo de Troya que abra un camino o utilizar un error (bug) de un programa inocente. (Ver Figura 2.6.1)
- Ataques al DNS. Modificar las memorias cachés del DNS falsificando las relaciones IP/nombre, así cuando el filtro pregunta a qué nombre pertenece una IP que pide permiso de entrada se consigue que el DNS conteste un nombre autorizado.