Para ser más precisos a la hora de emparejar un determinado tráfico de red, se utilizan las listas de acceso extendidas. Las listas de acceso extendidas son más difíciles de configurar y requieren más tiempo de procesamiento que las listas de acceso estándar, pero permiten un nivel de control mucho más granular.
Con las listas de acceso extendidas, se puede evaluar información adicional de los paquetes, como:
- dirección IP de origen y destino
- tipo de protocolo TCP/IP (TCP, UDP, IP…)
- número de puerto de origen y destino
Se requieren dos pasos para configurar una lista de acceso extendida:
1. configurar una lista de acceso extendida mediante el siguiente comando:
(config) access list NUMBER permit|deny IP_PROTOCOL SOURCE_ADDRESS WILDCARD_MASK DESTINATION_ADDRESS WILDCARD_MASK PROTOCOL_INFORMATION
2. aplicar una lista de acceso a una interfaz mediante el siguiente comando:
(config) ip access-group ACL_NUMBER in | out
Los números de las listas de acceso extendidas están en rangos de 100 a 199 y de 2000 a 2699. Siempre debe colocar las ACLs extendidas lo más cerca posible del origen de los paquetes que se están evaluando.
Para entender mejor el concepto de las listas de acceso extendidas, considere el siguiente ejemplo:
Queremos permitir el acceso sin restricciones de la estación de trabajo del administrador (10.0.0.1/24) al servidor (192.168.0.1/24). También negaremos cualquier tipo de acceso al Servidor desde la estación de trabajo del usuario (10.0.0.2/24).
Primero, crearemos una sentencia que permita el acceso de la estación de trabajo del administrador al Servidor:
A continuación, debemos crear una sentencia que deniegue el acceso de la estación de trabajo del usuario al Servidor:
Por último, tenemos que aplicar la lista de acceso a la interfaz Fa0/0 en R1:
Esto obligará al router a evaluar todos los paquetes que entren en Fa0/0. Si el administrador intenta acceder al Servidor, el tráfico será permitido, debido a la primera declaración. Sin embargo, si el usuario intenta acceder al servidor, el tráfico será prohibido debido a la segunda declaración ACL.
Al final de cada lista de acceso hay una declaración explícita de denegar todo, por lo que la segunda declaración ACL no era realmente necesaria. Después de aplicar una lista de acceso, todo el tráfico no permitido explícitamente será denegado.
En el lado derecho, tenemos un Servidor que sirve como servidor web, escuchando en el puerto 80. Necesitamos permitir que el Usuario acceda a sitios web en S1 (puerto 80), pero también necesitamos denegar otro tipo de acceso.
Primero, necesitamos permitir el tráfico del Usuario al puerto del Servidor de 80. Podemos hacerlo usando el siguiente comando:
Al usar la palabra clave tcp, podemos filtrar los paquetes por los puertos de origen y destino. En el ejemplo anterior, hemos permitido el tráfico desde 10.0.0.2 (estación de trabajo del usuario) a 192.168.0.1 (servidor) en el puerto 80. La última parte de la declaración, eq 80, especifica el puerto de destino de 80.
Como al final de cada lista de acceso hay una declaración implícita deny all, no necesitamos definir ninguna declaración más. Después de aplicar una lista de acceso, todo el tráfico que no se origine en 10.0.0.2 y se dirija a 192.168.0.1, puerto 80 será denegado.
Necesitamos aplicar la lista de acceso a la interfaz:
Podemos verificar si nuestra configuración fue exitosa tratando de acceder al Servidor desde la estación de trabajo del Usuario usando diferentes métodos. Por ejemplo, el ping fallará:
Telnetting al puerto 21 fallará:
Sin embargo, podremos acceder al Servidor en el puerto 80 usando nuestro navegador: