Está en la página 1de 33

ACL

Este capítulo explica los conceptos relativos a las listas de


control de acceso (ACL) para realizar el filtrado de paquetes
a nivel de red y transporte en un router. De esta forma se
puede implementar una política de seguridad básica en una
red.

ACL by Rafael Lozano is licensed under a Creative Commons Reconocimiento-NoComercial-


CompartirIgual 3.0 España License.
Tabla de contenidos

Tabla de contenido

1 Introducción....................................................................................................................................... 1
1.1 ¿Qué es una ACL?.......................................................................................................................................1
1.2 Filtrado de paquetes..................................................................................................................................2
1.3 Funcionamiento de una ACL....................................................................................................................3
1.4 Máscara wildcard en ACL..........................................................................................................................4
1.4.1 Cálculo de la máscara wildcard............................................................................................................. 6
1.4.2 Palabras clave de la máscara wildcard................................................................................................ 6
1.5 Pautas generales para la creación de ACLs.........................................................................................6
1.6 Dónde ubicar las ACLs...............................................................................................................................7
2 ACLs estándar.................................................................................................................................... 8
2.1 ACL estándar numerada...........................................................................................................................9
2.1.1 Crear una ACL estándar numerada...................................................................................................... 9
2.1.2 Aplicar ACLs a las interfaces................................................................................................................. 10
2.2 ACL estándar con nombre.....................................................................................................................11
2.3 Orden de las instrucciones....................................................................................................................12
2.4 Modificar ACLs estándar........................................................................................................................14
2.4.1 Con editor de texto................................................................................................................................ 14
2.4.2 Usar números de secuencia................................................................................................................ 15
2.4.3 Editar ACL estándar con nombre....................................................................................................... 16

3 ACLs extendidas..............................................................................................................................17
3.1 Crear una ACL extendida y las ACEs...................................................................................................19
3.2 Asignar la ACL a la interfaz.....................................................................................................................22
4 Verificar las ACLs............................................................................................................................. 23
4.1 Estadística de las ACLs............................................................................................................................24
5 Protección de puertos VTY con ACL...........................................................................................25
6 Procesamiento de paquetes con ACL........................................................................................27
6.1 Deny any implícita....................................................................................................................................27
6.2 Orden de las ACEs en una ACL.............................................................................................................27
6.3 Reordenamiento de ACLs......................................................................................................................27
7 Bibliografía........................................................................................................................................ 31

Índice I
Rafael Lozano ACLs

ACLs

1 Introducción
Una de las habilidades más importantes que necesita un administrador de redes es el
dominio de las listas de control de acceso (ACL Access Control List) las cuales proporcionan
seguridad a una red. En un router Cisco, puede configurar un firewall simple que
proporcione capacidades básicas de filtrado de tráfico a nivel de red mediante ACLs. Los
administradores utilizan las ACLs para impedir o permitir tráfico en sus redes que cumple
determinadas condiciones.
En este capítulo, se explica cómo configurar y solucionar problemas en las ACL
estándar IPv4 en un router Cisco como parte de una solución de seguridad.

1.1 ¿Qué es una ACL?


Una ACL es una estructura de datos que contiene una lista de reglas sobre un objeto
para controlar si un router reenvía o descarta paquetes en función de la información que se
encuentra en el encabezado del paquete.
Cuando se las configura, las ACLs realizan las siguientes tareas:
✔ Limitan el tráfico de la red para aumentar su rendimiento → Por ejemplo, si la política
corporativa no permite el tráfico de video en la red, se pueden configurar y aplicar
una ACL que bloqueen el tráfico de video. Esto reduciría considerablemente la carga
de la red y aumentaría su rendimiento.
✔ Proporcionan control del flujo de tráfico → Las ACLs pueden restringir la entrega de
actualizaciones de enrutamiento para asegurar que las actualizaciones provienen de
un origen conocido.
✔ Proporcionan un nivel básico de seguridad para el acceso a la red → Las ACLs
pueden permitir y/o limitar el acceso a una parte de la red por parte de los hosts.

Página 1
Rafael Lozano ACLs

✔ Filtran el tráfico según su tipo → Se puede permitir el tráfico de un determinado


servicio, por ejemplo el de correo electrónico, y bloquear el tráfico de otro servicio,
como por ejemplo Telnet.
✔ Filtran a los hosts para permitirles o denegarles el acceso a los servicios de red → Las
ACLs pueden permitir o denegar a los usuarios el acceso a determinados servicios,
como FTP, HTTP, etc.
Esta estructura de datos de forma esquematizada sería algo así:
ACL { Nombre | Número }
Regla 1: Criterio 1 – Acción 1
Regla 2: Criterio 2 – Acción 2
Regla 3: Criterio 3 – Acción 3

Regla n: Criterio n – Acción n

Criterio = Valores de encabezado IP/TCP/UDP/ICMP


Acción = { Permitir | Denegar }
Los routers no tienen ACLs configuradas de manera predeterminada, por lo que no
filtran el tráfico de manera predeterminada. El tráfico que entra en el router se enruta
solamente en función de la información de la tabla de enrutamiento. Sin embargo, cuando se
aplica una ACL a una interfaz, el router realiza la tarea adicional de evaluar todos los
paquetes de red a medida que pasan a través de la interfaz para determinar si el paquete se
puede reenviar.
Además de permitir o denegar tráfico, las ACLs se pueden utilizar para seleccionar
tipos de tráfico para analizar, reenviar o procesar de otras formas. Por ejemplo, se pueden
utilizar ACL para clasificar el tráfico a fin de permitir el procesamiento por prioridad.

1.2 Filtrado de paquetes


Una ACL es una lista secuencial de instrucciones permit (permitir) o deny (denegar)
que permiten o deniega tráfico en función del valor de los campos del encabezado de los
paquetes. Estas instrucciones se conocen como “entradas de control de acceso” (ACE). Las
ACE también se denominan comúnmente “instrucciones de ACL”. Cuando el tráfico de la red
atraviesa una interfaz configurada con una ACL, el router compara la información dentro del
encabezado del paquete con cada ACE, en orden secuencial, para determinar si el paquete
coincide con los criterios de las ACEs. Este proceso se denomina filtrado de paquetes.
El filtrado de paquetes controla el acceso a una red mediante el análisis de los
paquetes entrantes y salientes y la transferencia o el descarte de estos según criterios
determinados. El filtrado de paquetes puede producirse en la capa 3 (red) o capa 4
(transporte). En función de la capa en la que se pueden filtrar los paquetes tenemos dos
tipos de ACLs:
✔ ACL estándar → Filtran tráfico sólo en la capa 3.
✔ ACL extendida → Filtran tráfico en las capas 3 y 4.

Página 2
Rafael Lozano ACLs

El criterio de filtrado establecido en cada ACE de una ACL de IPv4 estándar es la


dirección IPv4 de origen. Un router configurado con una ACL de IPv4 estándar recupera la
dirección IPv4 de origen del encabezado del paquete. El router comienza en la primera ACE
de la ACL y compara la dirección de origen con cada ACE de manera secuencial. Cuando
encuentra una coincidencia, el router ejecuta la instrucción, que puede ser permitir o
denegar el paquete. Una vez que se halla una coincidencia, las ACE restantes de la ACL, si
las hubiera, no se analizan. Si la dirección IPv4 de origen no coincide con ninguna ACE en la
ACL, se descarta el paquete.
La última instrucción de una ACL es siempre una denegación implícita. Esta sentencia
se inserta automáticamente al final de cada ACL, aunque no esté presente físicamente. La
denegación implícita bloquea todo el tráfico. Debido a esta denegación implícita, una ACL
que no tiene, por lo menos, una instrucción permit bloqueará todo el tráfico.
En el caso de las ACLs extendidas el proceso de filtrado de paquetes sería muy similar.
La diferencia estriba en que mientras que en una ACL estándar solamente utiliza la dirección
IP de origen del paquete, en una ACL extendida se puede emplear un conjunto de campos
del encabezado del paquete siendo los más habituales las direcciones IP de origen y
destino, el puerto de origen y destino, o el protocolo de capa 3 o 4 (IP, TCP, UDP, ICMP).
Un algoritmo que reflejaría la forma de filtrar tráfico de red por parte de las ACLs podría
ser el siguiente:
Algoritmo: Filtrado tráfico con ACL
Repetir
Regla_Insp = Regla 1 de ACL
Mientras Regla_Insp.Criterio <> Encabezado Paq/Seg/Dat
Regla_Insp = Siguiente Regla de ACL
Fin Mientras
Si Regla_Insp.Criterio = Encabezado Paq/Seg/Dat
Ejecutar Regla_Insp.Acción
Sino
Denegar Paquete
Fin Si
Por cada paquete que entra/sale por interfaz de red
1.3 Funcionamiento de una ACL
Las ACL definen el conjunto de reglas que proporcionan un control adicional para los
paquetes que entran y salen por las interfaces de red del router. Las ACL no operan sobre
paquetes que se originan en el router mismo. Las ACL se configuran para aplicarse al tráfico
entrante o al tráfico saliente:
✔ ACL de entrada → Los paquetes entrantes se procesan antes de enrutarse a la interfaz
de salida. Las ACLs de entrada son eficaces, porque ahorran la sobrecarga de enrutar
si el paquete se descarta. Si las ACLs permiten el paquete, este se procesa para el
enrutamiento. Las ACLs de entrada son ideales para filtrar los paquetes cuando la red

Página 3
Rafael Lozano ACLs

conectada a una interfaz de entrada es el único origen de los paquetes que se deben
examinar.
✔ ACL de salida → Los paquetes entrantes se enrutan a la interfaz de salida y después
se procesan mediante la ACL de salida. Las ACL de salida son ideales cuando se
aplica el mismo filtro a los paquetes que provienen de varias interfaces de entrada
antes de salir por la misma interfaz de salida.

1.4 Máscara wildcard en ACL


Las ACE de IPv4 incluyen el uso de máscaras wildcard. Una máscara wildcard es una
cadena de 32 dígitos binarios que el router utiliza para determinar qué bits de la dirección
debe examinar para obtener una coincidencia.
Como ocurre con las máscaras de subred, los números 1 y 0 en la máscara wildcard
identifican lo que hay que hacer con los bits de dirección IPv4 correspondientes. Sin
embargo, en una máscara wildcard, estos bits se utilizan para fines diferentes y siguen
diferentes reglas.
Las máscaras de subred utilizan unos y ceros binarios para identificar la red, la subred y
la porción de host de una dirección IPv4. Las máscaras wildcard utilizan unos y ceros
binarios para filtrar direcciones IPv4 individuales o grupos de direcciones IPv4 para permitir o
denegar el acceso a los recursos.
Las máscaras wildcard y las máscaras de subred se diferencian en la forma en que
establecen la coincidencia entre los unos y ceros binarios. Las máscaras wildcard utilizan las
siguientes reglas para establecer la coincidencia entre los unos y ceros binarios:
✔ Bit 0 de máscara wildcard → Indica que se debe establecer coincidencia con el valor
del bit de la dirección IPv4 en la ACE con el correspondiente valor del bit en la
dirección IPv4 del paquete.
✔ Bit 1 de máscara wildcard → Indica que puede ignorarse el valor del bit
correspondiente en la dirección IPv4 del paquete.
En la figura se muestra cómo las diferentes máscaras wildcard filtran las direcciones
IPv4. Recuerde que, en el ejemplo, el valor binario 0 indica un bit que debe coincidir y el
valor binario 1 indica un bit que se puede ignorar.

Página 4
Rafael Lozano ACLs

Figura 1.- Máscara de wildcard

A las máscaras wildcard a menudo se las denomina “máscaras inversas”. La razón es


que, a diferencia de una máscara de subred en la que el 1 binario equivale a una
coincidencia y el 0 binario no es una coincidencia, en las máscaras wildcard es al revés.
En la tabla de la figura, se muestran los resultados de la aplicación de una máscara
wildcard 0.0.255.255 a una dirección IPv4 de 32 bits. Recuerde que un 0 binario indica un
valor con coincidencia.

Figura 2.- Ejemplo de uso de máscara de wildcard

A diferencia de las ACLs de IPv4, las ACLs de IPv6 no utilizan máscaras wildcard. En
cambio, se utiliza la longitud de prefijo para indicar cuánto de una dirección IPv6 de origen o
destino debe coincidir.

Página 5
Rafael Lozano ACLs

1.4.1 Cálculo de la máscara wildcard


El cálculo de máscaras wildcard puede ser difícil. Un método abreviado es restar la
máscara de subred a 255.255.255.255.
Por ejemplo, supongamos que deseamos permitir el acceso a todos los usuarios en la
red 192.168.3.0/24. Dado que la máscara de subred es 255.255.255.0, podría tomar
255.255.255.255 y restarle la máscara de subred 255.255.255.0. El resultado genera la
máscara wildcard 0.0.0.255.
Veamos otro ejemplo, supongamos que deseamos permitir el acceso a la red a los 14
usuarios en la subred 192.168.3.32/28. La máscara de subred para la subred IPv4 es
255.255.255.240; por lo tanto, tomamos 255.255.255.255 y restamos la máscara de subred
255.255.255.240. Esta vez, el resultado genera la máscara wildcard 0.0.0.15.
Supongamos ahora que solo queremos establecer la coincidencia con las redes
192.168.10.0 y 192.168.11.0. Una vez más, tomamos 255.255.255.255 y restamos la máscara de
subred regular que, en este caso, es 255.255.254.0. El resultado es 0.0.1.255.
Por último, consideremos un ejemplo en el cual se deben hacer coincidir las redes en
el rango de 192.168.16.0/24 a 192.168.31.0/24. Estas redes resumirán en 192.168.16.0/20. En
este caso, 0.0.15.255 es la máscara wildcard correcta para configurar una declaración eficaz
de ACL

1.4.2 Palabras clave de la máscara wildcard


Trabajar con representaciones decimales de los bits binarios de máscaras wildcard
puede ser tedioso. Para simplificar esta tarea, las palabras clave host y any ayudan a
identificar los usos más comunes de las máscaras wildcard. Estas palabras clave eliminan la
necesidad de introducir máscaras wildcard para identificar un host específico o toda una red.
También facilitan la lectura de una ACL, ya que proporcionan pistas isuales en cuanto al
origen o el destino de los criterios.
✔ La palabra clave host reemplaza la máscara 0.0.0.0. Esta máscara indica que todos
los bits de direcciones IPv4 deben coincidir para filtrar solo una dirección de host.
✔ La opción any sustituye la dirección IPv4 y la máscara 255.255.255.255. Esta
máscara establece una coincidencia con cualquier dirección.
Por ejemplo, en vez de introducir 192.168.10.10 0.0.0.0, puede utilizar host
192.168.10.10. Por otro lado, en vez de introducir 0.0.0.0 255.255.255.255,
puede utilizar la palabra clave any sola.

1.5 Pautas generales para la creación de ACLs


La creación de las ACLs puede ser una tarea compleja. No nos referimos a la sintaxis
del comando para crearla, sino en la elección de factores como en qué router de la
topología, el protocolo del tráfico afectado, la interfaz de red donde se asigna, etc. Para
cada interfaz, puede haber varias políticas necesarias para administrar el tipo de tráfico que
tiene permitido entrar por la interfaz de red o salir de ella.

Página 6
Rafael Lozano ACLs

Las siguientes son algunas pautas para el uso de ACL:


✔ Utilizar las ACLs en los routers de firewall ubicados entre la red interna y una red
externa, como Internet.
✔ Utilizar las ACLs en un router ubicado entre dos partes de la red interna para controlar
el tráfico que entra a una parte específica de la red o que sale de esta.
✔ Configurar las ACLs en los routers de frontera, es decir, los routers ubicados en los
límites de las redes. Esto proporciona una separación muy básica de la red externa o
entre un área menos controlada y un área más importante de la propia red.
✔ Configurar las ACLs para cada protocolo de red configurado en las interfaces del
router de frontera.
Como norma general estableceremos que se puede configurar una ACL por protocolo,
por sentido y por interfaz:
✔ Una ACL por protocolo.- Para controlar el flujo de tráfico en una interfaz, se debe
definir una ACL para cada protocolo (IPv4 e IPv6) habilitado en la interfaz.
✔ Una ACL por sentido.- Las ACLs controlan el tráfico en una interfaz y en un sentido
(entrada o salida). Se deben crear dos ACLs diferentes para controlar el tráfico
entrante y saliente.
✔ Una ACL por interfaz.- Las ACLs controlan el tráfico para una interfaz, por ejemplo,
GigabitEthernet 0/0.

1.6 Dónde ubicar las ACLs


La correcta colocación de las ACLs puede contribuir a que la red funcione de forma
más eficaz. Se puede colocar una ACL para reducir el tráfico innecesario. Por ejemplo, el
tráfico que se denegará en un destino remoto no se debe reenviar mediante recursos de
red por la ruta hacia ese destino.
Cada ACL se debe colocar donde tenga más impacto en la eficiencia. Las reglas
básicas son las siguientes:
✔ ACL estándar.- Debido a que en las ACL estándar no se especifican las direcciones
de destino, colocarlas tan cerca del destino como sea posible ya que no es posible
determinar por la ACL a donde va dirigido el tráfico.
✔ ACL extendidas.- Colocar las ACL extendidas lo más cerca posible del origen del
tráfico que se filtrará. De esta manera, el tráfico no deseado se deniega cerca de la
red de origen, sin que cruce la infraestructura de red.
La colocación de la ACL y, por lo tanto, el tipo de ACL que se utiliza también puede
depender de lo siguiente:
✔ Alcance del control del administrador de la red.- La colocación de la ACL puede
depender de si el administrador de red controla tanto la red de origen como la de

Página 7
Rafael Lozano ACLs

destino o no.
✔ Ancho de banda de las redes involucradas.- El filtrado del tráfico no deseado en el
origen impide la transmisión de ese tráfico antes de que consuma ancho de banda en
la ruta hacia un destino. Esto es de especial importancia en redes con un ancho de
banda bajo.
✔ Facilidad de configuración.- Si un administrador de red desea denegar el tráfico
proveniente de varias redes, una opción es utilizar una única ACL estándar en el
router más cercano al destino. La desventaja es que el tráfico de dichas redes
utilizará ancho de banda de manera innecesaria. Se puede utilizar una ACL extendida
en cada router donde se origina tráfico. Esto ahorra ancho de banda, ya que el tráfico
se filtra en el origen, pero requiere la creación de ACL extendidas en varios routers.

2 ACLs estándar
En los siguientes apartados vamos a ver los comandos necesarios para gestionar las
ACLs estándar. Para los siguientes ejemplos vamos a utilizar la siguiente topología de red.

Figura 3.- Red de ejemplo para ACLs

Suponemos que todos los dispositivos tienen configuradas sus direcciones IP y los
routers tienen rutas estáticas configuradas para alcanzar cualquier red. Debemos entonces
configurar ACLs para satisfacer los siguientes supuestos:
2. Acceso al servidor Web:
2.1.- El PC1 puede acceder al servidor Web.
2.2.-Todos los PCs de la red 192.168.1.0/24 pueden acceder al servidor Web.
2.3.- El resto de los PCs de la red no pueden acceder al servidor Web.

Página 8
Rafael Lozano ACLs

3. Acceso al servidor DNS:


3.1.- El PC4 no puede acceder al servidor DNS.
3.2.- Los PCs de la red 192.168.0.0/24 no pueden acceder al servidor DNS.
3.3.- El resto de PCs de las otras redes pueden acceder al servidor DNS.

2.1 ACL estándar numerada


Para utilizar una ACL estándar numerada primero hay que crear la ACL estándar y, a
continuación, activarla en una interfaz.

2.1.1 Crear una ACL estándar numerada


El comando de configuración global access-list define una ACL estándar con un
número entre 1 y 99, o entre 1300 y 1999. Esto permite que se genere un máximo de 798
ACL estándar posibles. La sintaxis completa del comando de ACL estándar es la siguiente:

Router(config)# access-list access-list-number { deny |


permit | remark } source [ source-wildcard ][ log ]
Las ACE pueden permitir o denegar un solo host o un rango de direcciones host.
Por ejemplo, vamos a crear una ACL para satisfacer los supuestos de acceso al
servidor web. Para configurar el supuesto 1.1 de nuestra red de ejemplo tendríamos que crear
la siguiente ACL.

R3(config)#access-list 1 permit host 192.168.0.20


Como se puede observar, al ser una ACL estándar se ha configurado en R3 que es el
router más cercano al servidor web al que se pretende permitir el acceso. Tenemos que
poner la dirección IP del PC1 ya que las ACLs se aplican a las direcciones de origen del
paquete.
Si queremos permitir implementar la ACL para el supuesto número 1.2 de nuestro
ejemplo añadimos otra ACE a la ACL que acabamos de crear.

R3(config)#access-list 1 permit 192.168.1.0 0.0.0.255


Para el supuesto 1.3 no es necesario crear una entrada en la ACL ya que hay una regla
implícita deny any que impide a todo paquete que no cumple con las dos entradas
anteriores acceder al servidor web.
Si ejecutamos el comando show running config veremos las dos entradas en
nuestra ACL.


!
access-list 1 permit host 192.168.0.20
access-list 1 permit 192.168.1.0 0.0.0.255

Página 9
Rafael Lozano ACLs

!

En esta situación, y una vez se asigne la ACL a una interfaz de router, solamente se
permite tráfico que se ajuste a las dos entradas anteriores. Recuerde que existe una
denegación implícita de todas las instrucciones que equivalen a agregar la línea access-
list 1 deny 0.0.0.0 255.255.255.255 o access-list deny any al final
de la ACL.
Para eliminar una ACL, se utiliza el comando de configuración global no access-
list. La ejecución del comando show access-list permite listar las ACL
configuradas.
Por lo general, cuando un administrador crea una ACL, conoce y entiende el objetivo
de cada instrucción. Sin embargo, para asegurar que el administrador y otras personas
recuerden el propósito de las instrucciones, se deben incluir comentarios (remarks). La
palabra clave remark se utiliza en los documentos y hace que sea mucho más fácil
comprender las listas de acceso. El texto de cada comentario tiene un límite de 100
caracteres. Cuando se revisa la ACL en la configuración mediante el comando show
running-config, también se muestra el comentario.
A continuación vamos a crear la ACL para el acceso al servidor DNS. En este caso
debemos hacerlo en R1 que es router más cercano al destino. Tendríamos la siguiente ACL
para el supuesto 3.1

R1(config)#access-list 1 deny host 192.168.2.20


El supuesto 3.2 se consigue con el siguiente comando access-list.

R1(config)#access-list 1 deny 192.168.0.0 0.0.0.255


A diferencia de lo que ocurría antes, para el supuesto 2.3 debemos incluir una entrada
en la ACL para permitir a todos los demás acceder al servidor DNS. Sería así

R1(config)#access-list 1 permit any


Ya tenemos las dos ACLs creadas, ya solo queda asignarlas a las interfaces, lo que se
verá en el siguiente epígrafe.

2.1.2 Aplicar ACLs a las interfaces


Después de que se configura una ACL estándar IPv4, se vincula a una interfaz
mediante el comando ip access-group en el modo de configuración de interfaz:

Router(config-if)# ip access-group { access-list-number |


access-list-name } { in | out }
Para eliminar una ACL de una interfaz, primero introducimos el comando no ip
access-group en la interfaz y, a continuación, introducimos el comando global no

Página 10
Rafael Lozano ACLs

access-list para eliminar la ACL completa.


Por ejemplo, vamos a vincular las dos ACLs creadas en el apartado anterior a la interfaz
G0/0, que es la que conecta al servidor web y por tanto el punto más cercano al destino.

R3(config)#interface g0/0
R3(config-if)#ip access-group 1 out
R3(config-if)#
En esta situación solamente podemos hacer ping desde el PC1 y la red 192.168.1.0/24 al
servidor web. Si ejecutamos un show running-config veremos la siguiente
configuración de la interfaz.

!
interface GigabitEthernet0/0
ip address 192.168.4.1 255.255.255.0
ip access-group 1 out
En el router 1 deberemos asignar la ACL que regula el acceso al servidor DNS.

R1(config)#interface g0/0
R1(config-if)#ip access-group 1 out
R1(config-if)#

2.2 ACL estándar con nombre


La asignación de nombres a las ACL hace más fácil comprender su función. Cuando se
identifica la ACL con un nombre en lugar de un número, el modo de configuración y la
sintaxis de los comandos son algo diferentes.
Los pasos necesarios para crear una ACL estándar con nombre son:
1. En el modo de configuración global, usamos el comando ip access-list para
crear una ACL con nombre. Nótese que Las ACL numeradas utilizan el comando de
configuración global access-list, mientras que las ACL de IPv4 con nombre
utilizan el comando ip access-list. Los nombres de las ACL son alfanuméricos,
distinguen mayúsculas de minúsculas y deben ser únicos. El comando ip access-
list standard se usa para crear una ACL con nombre estándar. Después de
introducir el comando, el router se encuentra en el modo de subconfiguración ACL
estándar con nombre (std-nacl).
2. En el modo de subconfiguración de ACL estándar con nombre, utilizamos las
instrucciones permit o deny a fin de especificar una o más condiciones para
determinar si un paquete se reenvía o se descarta. Podemos utilizar remark para
agregar un comentario a la ACL.
3. Aplicar la ACL a una interfaz con el comando ip access-group nombre
indicando si la ACL se debe aplicar a los paquetes cuando ingresan por la interfaz
(in) o cuando salen de la interfaz (out).

Página 11
Rafael Lozano ACLs

Por ejemplo, vamos a repetir la configuración de las ACLs estándar numeradas del
epígrafe anterior, pero en este caso para crear una ACL estándar con nombre. En principio
para regular el acceso al servidor web (supuestos 1.1, 1.2 y 1.3) tendríamos que ejecutar los
siguientes comandos en el router R3, que es el más cercano al destino.

R3(config)#ip access-list standard ACC-WEB


R3(config-std-nacl)# permit host 192.168.0.20
R3(config-std-nacl)# permit 192.168.1.0 0.0.0.255
R3(config-std-nacl)#
Esta ACL se asigna a la interfaz que conecta al servidor web.

R3(config-std-nacl)#interface g0/0
R3(config-if)#ip access-group ACC-WEB out
R3(config-if)#
Ahora vamos a crear una ACL estándar con nombre para los supuestos 2.1, 2.2 y 2.3 de
nuestra red de ejemplo. En este caso configuramos el router R1, ya que es el que se
encuentra más cerca del destino.

R1(config)#ip access-list standard NO-DNS


R1(config-std-nacl)#deny host 192.168.2.20
R1(config-std-nacl)#deny 192.168.0.0 0.0.0.255
R1(config-std-nacl)#permit any
R1(config-std-nacl)#
Finalmente, asignamos la ACL estándar con nombre a la interfaz que conecta al
servidor DNS que es g0/0.

R1(config-std-nacl)#interface g0/0
R1(config-if)#ip access-group NO-DNS out
R1(config-if)#
No es necesario que los nombres de las ACL comiencen con mayúscula, pero esto
hace que destaquen cuando se observa el resultado de show running-config.
También hace que sea menos probable que cree accidentalmente dos ACLs diferentes con
el mismo nombre pero con distinto uso de mayúsculas.

2.3 Orden de las instrucciones


Hasta ahora hemos visto como permitir, o denegar, a una red entera o un host. Sin
embargo no hemos visto como permitir, o denegar, a un conjunto de hosts en una red que
no se pueden representar mediante una dirección IP y una máscara de wildcard. En este
caso hay que decir que podemos incluir tantas instrucciones permit o deny como
necesitemos, pero en redes grandes donde hay que permitir, o denegar, a muchos hosts y
pocas excepciones, no es práctico configurar una ACL con muchas instrucciones permit o
deny.
En esta situación podemos escribir instrucciones conflictivas que permiten y deniegan

Página 12
Rafael Lozano ACLs

a un host o grupo de hosts. Por ejemplo, vamos a modificar los supuestos de nuestra red de
ejemplo de la siguiente forma.
2. Acceso al servidor DNS:
2.1.- El PC4 puede acceder al servidor DNS, pero el resto de hosts de la red
192.168.2.0/24 no puede.
2.2.-Los PCs de la red 192.168.0.0/24 no pueden acceder al servidor DNS excepto el
PC1 que si puede.
2.3.- Los PCs de la red 192.168.1.0/24 no pueden acceder al servidor DNS excepto el
PC3 que si puede.
2.4.- El resto de PCs de las otras redes pueden acceder al servidor DNS.
Aquí se permite el acceso a todos los PCs de las redes 192.168.0.0, 192.168.1.0 y
192.168.2.0/24 excepto un PC de cada red.
Vemos que en cada red puede haber hasta 254 hosts. Si tenemos que escribir 254-1
instrucciones permit para que todos puedan acceder al servidor DNS menos los PCs
excluidos sería largo. Mucho mejor es permitir el acceso a todos los hosts de la red y
denegar las excepciones. Para mostrar como sería reescribiremos la ACL estándar con
nombre que vimos en el epígrafe anterior.
En este caso la configuración sería así

R1(config)#ip access-list standard NO-DNS


R1(config-std-nacl)#permit host 192.168.2.20
R1(config-std-nacl)#deny 192.168.2.0 0.0.0.255
R1(config-std-nacl)#permit host 192.168.0.20
R1(config-std-nacl)#deny 192.168.0.0 0.0.0.255
R1(config-std-nacl)#permit host 192.168.1.10
R1(config-std-nacl)#deny 192.168.1.0 0.0.0.255
R1(config-std-nacl)#permit any
R1(config-std-nacl)#interface g0/0
R1(config-if)#ip access-group NO-DNS out
R1(config-if)#
Si ejecutamos el comando show running-config veremos la siguiente salida en
la ACL.


!
ip access-list standard NO-DNS
permit host 192.168.2.20
deny 192.168.2.0 0.0.0.255
permit host 192.168.0.20
deny 192.168.0.0 0.0.0.255
permit host 192.168.1.10
deny 192.168.1.0 0.0.0.255
permit any
!

Página 13
Rafael Lozano ACLs


Vemos que la ACL tiene siete entradas. Si recordamos al principio del capítulo cuando
el router filtra tráfico con la ACL examina la dirección de origen del paquete con cada una de
las entradas de la ACL. Si hay coincidencia se aplica la acción, permitir o denegar, y no se
evalúan más entradas. Por tanto, cuando queramos excepciones a una regla general,
debemos ponerlas antes para que al evaluarse se apliquen primero.
Si observamos las líneas remarcadas en rojo, primero se permite al PC de cada red que
puede acceder al servidor DNS y luego se deniega al resto de la red. Supongamos que
hubiéramos puesto el siguiente orden para el PC1 y la red 192.168.0.0/24


R1(config-std-nacl)#deny 192.168.0.0 0.0.0.255
R1(config-std-nacl)#permit host 192.168.0.20

R1(config-std-nacl)#permit any
R1(config-std-nacl)#interface g0/0
R1(config-if)#ip access-group NO-DNS out
R1(config-if)#
En este caso cuando un paquete procedente de PC1 se evaluará con deny
192.168.0.0 0.0.0.255 habría coincidencia y se descartaría, no llegando a evaluar la
instrucción permit que hay debajo para autorizar su acceso. Por tanto, las excepciones a
la regla general tienen que ir antes que ésta para que se apliquen.

2.4 Modificar ACLs estándar


Cambiar una ACL no es una tarea trivial en el sentido de que las entradas están
ordenadas por orden de ejecución en el IOS. Las nuevas entradas que se añaden lo hacen
al final de la ACL. Si queremos intercalar una entre varias deberemos eliminar primero con el
comando no access-list las entradas finales, incluir la nueva, y volver a añadir las que
eliminamos primero.
Es necesario recordar que, al utilizar el comando no access-list, las distintas
versiones del software IOS actúan de forma diferente. Si la ACL que se eliminó sigue
estando aplicada a una interfaz, algunas versiones del IOS actúan como si no hubiera
ninguna ACL que proteja la red, mientras que otras deniegan todo el tráfico. Por esta razón,
es aconsejable eliminar la referencia a la lista de acceso de la interfaz antes de modificar la
lista. Si hay un error en la nueva lista, debe deshabilitarla y solucionar el problema. En ese
caso, la red no tiene ninguna ACL durante el proceso de corrección.

2.4.1 Con editor de texto


Después de familiarizarse con el proceso de creación y edición de ACL, puede ser más
fácil generar la ACL mediante un editor de texto plano. Esto permite crear o editar la ACL y
luego pegarla en la interfaz del router. Para una ACL existente, podemos utilizar el comando
show running-config para mostrar la ACL, copiarla y pegarla en el editor de texto,

Página 14
Rafael Lozano ACLs

realizar los cambios necesarios y pegarla nuevamente en la interfaz del router.


Los pasos para editar y corregir una ACL son los siguientes:
1. Mostrar la ACL mediante el comando show running-config.
2. Seleccionar la ACL, copiarla y, luego, pegarla en el editor de texto plano. Editar la lista
según sea necesario. Una vez que la ACL se muestre correctamente, seleccionarla y
copiarla.
3. En el modo de configuración global, eliminar la ACL con el comando no access-
list número. De lo contrario, las nuevas instrucciones se agregarán a la ACL
existente. A continuación, pegar la nueva ACL en la configuración del router.
4. Verificar los cambios mediante el comando show running-config.

2.4.2 Usar números de secuencia


Para editar la ACL con los números de secuencia, seguimos estos pasos:
1. Mostrar la ACL actual mediante el comando show access-lists 1. El resultado
de este comando se analizará en mayor detalle más adelante. El número de
secuencia se muestra al principio de cada instrucción. El número de secuencia se
asignó automáticamente cuando se introdujo la instrucción de la lista de acceso.
2. Ejecutar el comando ip access-lists standard número que se utiliza
para configurar las ACL con nombre, solo que para las ACLs numeradas el número de
la ACL se utiliza como nombre. Primero, la instrucción mal configurada se debe
eliminar con el comando no número, donde número se refiere al número de
secuencia. Luego, se agrega una nueva instrucción de número de secuencia
mediante el comando número deny { ip-origen wildcar | host ip-
origen}. Las instrucciones no se pueden sobrescribir con el mismo número de
secuencia que el de una instrucción existente. Primero se debe eliminar la instrucción
actual y, luego, se puede agregar la nueva.
3. Verificar los cambios mediante el comando show access-lists.
Como se mencionó anteriormente, el IOS de Cisco implementa una lógica interna en
las listas de acceso estándar. Es posible que el orden en que se introducen las ACE estándar
no sea el orden en que se almacenen, se muestren o se procesen en el router. El comando
show access-list muestra las ACE con sus números de secuencia.
Por ejemplo, supongamos que nos hemos equivocado en la primera ACL y en lugar de
introducir el comando access-list 1 permit host 192.168.0.20,
introdujimos access-list 1 permit host 192.168.0.29. Si ejecutamos el
comando show access-lists 1 veremos lo siguiente

R3#show access-lists 1
Standard IP access list 1
10 permit host 192.168.0.29

Página 15
Rafael Lozano ACLs

20 permit 192.168.1.0 0.0.0.255

R3#
Vemos que tenemos que cambiar la regla número 10. Ejecutamos lo siguiente

R3#configure terminal
Enter configuration commands, one per line. End with CNTL/
Z.
R3(config)#ip access-list standard 1
R3(config-std-nacl)#no 10
R3(config-std-nacl)#10 deny host 192.168.0.20
R3(config-std-nacl)#end
R3#
Si volvemos a listar las entradas de la ACL veremos que el error se ha corregido.

R3#show access-lists 1
Standard IP access list 1
10 deny host 192.168.0.20
20 permit 192.168.1.0 0.0.0.255

R3#

2.4.3 Editar ACL estándar con nombre


En el ejemplo anterior, se utilizaron los números de secuencia para editar una ACL
estándar numerada IPv4. Mediante una referencia a los números de secuencia de la
instrucción, se pueden insertar o eliminar fácilmente instrucciones individuales. Este método
también se puede utilizar para editar las ACL estándar con nombre.
Se pueden insertar o eliminar instrucciones desde el modo de configuración de listas
de acceso con nombre. Para agregar una instrucción para denegar otro host se debe
insertar una línea numerada.
Por ejemplo, si listamos la ACL con nombre que hicimos en el apartado anterior
veremos lo siguiente:

R1#show access-lists NO-DNS


Standard IP access list NO-DNS
deny host 192.168.2.20
permit host 192.168.0.20
deny 192.168.0.0 0.0.0.255
permit any

R1#
Si queremos insertar una nueva entrada para permitir al PC con dirección IP
192.168.0.25 tendríamos que hacer lo siguiente

Página 16
Rafael Lozano ACLs

R1(config)#ip access-list standard NO-DNS


R1(config-std-nacl)#25 permit host 192.168.0.25
R1(config-std-nacl)#
Si volvemos a listar la ACL veremos lo siguiente

R1#show ip access-lists NO-DNS


Standard IP access list NO-DNS
deny host 192.168.2.20
permit host 192.168.0.20
permit host 192.168.0.25
deny 192.168.0.0 0.0.0.255
permit any
R1#
En el modo de configuración de listas de acceso con nombre, el comando no
número-secuencia para eliminar rápidamente entradas individuales.

3 ACLs extendidas
Hemos visto en epígrafes anteriores las ACLs estándar, las cuales solamente permiten
establecer como criterio de una regla la dirección IP origen del paquete. Entre las
limitaciones que impone este enfoque están:
✔ La ACL hay que configurarla lo más cerca posible del destino, con lo que tráfico no
deseado recorre la infraestructura de red antes de desecharse.
✔ Solamente se puede realizar filtrado a nivel de red, impidiendo acceso a los hosts de
forma completa en lugar de a determinados servicios.
✔ Se impide tráfico destinado a una subred completa, en lugar de a un host
determinado.
✔ No permite diferenciar tráfico por servicios de red, al no poder utilizar campos del
encabezado de las PDU a nivel de transporte.
Es evidente que este enfoque no es adecuado para implementar una política de
seguridad con un grado de granularidad que permita afinar el tipo de tráfico que se desea
impedir y los hosts que debemos proteger. Debido a ello las ACLs extendidas son
adecuadas en la mayoría de los escenarios ya que disponen de las siguientes
características:
✔ En el criterio de las reglas permiten indicar tanto la dirección IP de origen y destino.
✔ Se puede diferenciar tráfico por servicio de red mediante el empleo de los puertos de
origen y, sobre todo, de destino.
✔ Por lo expuesto anteriormente, filtra tráfico a nivel de red y de transporte en
diferentes protocolos (IPv4, IPv6, TCP, UDP, ICMP)

Página 17
Rafael Lozano ACLs

Las ACLs extendidas pueden ser numeradas o con nombre, tal y como vimos con las
ACLs estándar. La sintaxis de los comandos es similar, salvo que el identificador de la ACL
será un número en el caso de las numeradas o un nombre en el caso de las ACLs con
nombre.
Para ilustrar el uso de las ACLs extendidas vamos a emplear la siguiente topología:

Figura 4: Topología de ejemplo para ACLs extendidas

Sobre esta topología estableceremos la siguiente política de seguridad:


1. No se permite hacer ping al router NAT desde Internet. Desde las LAN internas se
puede hacer ping para comprobar la conectividad con cualquier dispositivo.
2. Acceso al Servidor1:
2.1.- Se accede a DNS desde todas las LANs internas
2.2.-Se accede al servicio WWW desde Internet
2.3.- Se accede al servicio WWW desde LAN2 y LAN4
2.4.- Los PCs 1 y 7 no pueden acceder al servicio WWW
3. Acceso al Servidor2:
3.1.- Se accede a FTP desde Internet
3.2.- Se accede a FTP desde las LAN2 y LAN3
3.3.- Se accede a EMAIL desde Internet
3.4.- Se accede a EMAIL desde las LAN4 y LAN5
3.5.- Los PCs 7 y 10 no pueden acceder a EMAIL
4. Se permite a los PCs de las redes internas acceder a Internet para el servicio WWW.
5. Resto del tráfico no especificado no se permite.
La sintaxis de ACL extendida dependerá del tipo de protocolo y nivel en el que se
configure. Para crearla se ejecuta el siguiente comando en el modo de configuración global.

Router(config)# ip access-list extended {número | nombre }

Página 18
Rafael Lozano ACLs

A partir de ahora, en el modo de subconfiguración de la ACL extendida se añadirán las


reglas con alguno de los siguientes comandos. Para el protocolo IP.

[n.º] { permit | deny } ip origen destino


Para los protocolos TPC o UDP tenemos el siguiente comando:

[n.º] { permit | deny } { tcp | udp }


origen puerto destino puerto [established]
Finalmente, para el protocolo ICMP usamos el siguiente:

[n.º] { permit | deny } icmp


origen destino tipo
Para los argumentos de estos protocolos tendremos en cuenta lo siguiente:
✔ Los argumentos origen y destino se refieren a direcciones IP de origen y
destino con sus correspondientes máscaras de wildcard.
✔ En el argumento puerto se refiere a los puertos de origen y destino; los cuales se
pueden indicar de las siguientes formas:
✔ Un puerto único → Simplemente se indica el operador eq número.
✔ Un puerto diferente a uno especificado → En este caso sería neq número.
✔ Un rango de puertos → En este caso pondremos range inicio fin con el
principio y el final del rango.
✔ Un valor de puerto por encima o debajo de un valor → Tendremos que poner
{ gt | lt } puerto para indicar por encima (gt) o por debajo (lt) del
puerto.
Para puertos de uso común se pueden emplear alias en lugar de número. Por ejemplo:
www para 80, ftp para 21, smtp para 25 y pop3 para 110, …
Ahora para definir el tráfico de origen o destino tenemos la dirección IP, la máscara de
wildcard y el puerto.
Los pasos para crear una ACL extendida son:
1. Crear la ACL extendida (con nombre o numerada)
2. Crear las ACEs (reglas) en la ACL.
3. Asignar la ACL a una interfaz.

3.1 Crear una ACL extendida y las ACEs


Vamos a comenzar a configurar la seguridad en nuestra topología. Comenzamos
regulando el acceso al servidor DNS. Como en cada subred se permite acceso al mismo

Página 19
Rafael Lozano ACLs

tendremos que crear una ACL en cada router (lo más cerca posible del origen). Para la
subred LAN2 se puede acceder al servicio DNS, WWW y FTP, aunque el PC1 no puede
acceder a WWW. Sería así en R1.

R1(config)# ip access-list extended ACL-LAN2


R1(config-ext-nacl)#
Ahora tenemos que añadir la ACE que permite acceder al servicio DNS en el servidor 1.
El servicio DNS emplea el protocolo UDP puerto 53 para realizar consultas.

R1(config-ext-nacl)# 10 permit udp any host 192.168.10.5 eq


53
Hemos puesto un número de secuencia para facilitar posteriormente su modificación.
Generalmente los números de secuencia son múltiplos de 10 para que se tenga suficiente
valores que permitan insertar reglas en cualquier lugar.
Si analizamos la ACE anterior veremos lo siguiente:
✔ Tráfico permitido: permit.
✔ Protocolo: udp
✔ Origen del tráfico: any. Cualquier PC de la subred puede enviar paquetes. Podríamos
haber puesto 192.168.20.0 0.0.0.63 pero en este caso si en algún momento
cambia la dirección IP de la subred, tendríamos que cambiar la ACE. No se indica
puerto de origen, con lo que es indiferente el puerto origen del paquete.
✔ Destino del tráfico: host 192.168.10.5 puerto de destino 53.
Ahora escribimos la ACE para permitir acceso al servicio WWW (puerto 80) y otra para
FTP (puerto 21 en el canal de control).

R1(config-ext-nacl)# 20 deny tcp host 192.168.20.61 host


192.168.10.5 eq 80
R1(config-ext-nacl)# 30 permit tcp any host 192.168.10.5 eq
80
R1(config-ext-nacl)# 40 permit tcp any host 192.168.10.10
eq 21
Desde la LAN3 se permite acceso al servicio DNS y FTP. A continuación debemos
crear un ACL para la LAN3.

R1(config)# ip access-list extended ACL-LAN3


R1(config-ext-nacl)# 10 permit udp any host 192.168.10.5 eq
53
R1(config-ext-nacl)# 20 permit tcp any host 192.168.10.10
eq 21
A continuación tenemos que añadir una regla para permitir el tráfico generado al hacer

Página 20
Rafael Lozano ACLs

ping. En este caso el protocolo es ICMP y este protocolo no emplea números de puerto. En
su lugar hay que indicar el tipo de mensaje de control que para nuestro caso es petición de
eco. Sería así

R1(config)# ip access-list extended ACL-LAN2


R1(config-ext-nacl)# 50 permit icmp any any echo
R1(config-ext-nacl)# 60 permit icmp any any echo-reply
R1(config-ext-nacl)# ip access-list extended ACL-LAN3
R1(config-ext-nacl)# 30 permit icmp any any echo
R1(config-ext-nacl)# 40 permit icmp any any echo-reply
Hemos tenido que introducir dos reglas. La primera permite hacer ping a cualquier host
y la segunda permite responder a una solicitud de eco hecho desde cualquier host.
Se puede comprobar haciendo ping desde cualquier PC en las redes LAN2 o 3.
Llegamos a este punto ya tenemos las ACLs de las redes LAN2 y 3 completadas.
Podemos empezar con las ACLs de las redes LAN4 y 5, las cuales se configuran en el router
R2 que es el más cercano. Comenzamos con R2 para LAN4

R2(config)#ip access-list extended ACL-LAN4


R2(config-ext-nacl)#10 permit udp any host 192.168.10.5 eq
53
R2(config-ext-nacl)#20 deny tcp host 192.168.20.189 host
192.168.10.5 eq 80
R2(config-ext-nacl)#30 permit tcp any host 192.168.10.5
eq 80
R2(config-ext-nacl)#40 deny tcp host 192.168.20.189 host
192.168.10.10 eq 25
R2(config-ext-nacl)#50 deny tcp host 192.168.20.189 host
192.168.10.10 eq 110
R2(config-ext-nacl)#60 permit tcp any host 192.168.10.10 eq
25
R2(config-ext-nacl)#70 permit tcp any host 192.168.10.10 eq
110
R2(config-ext-nacl)#80 permit icmp any any echo
R2(config-ext-nacl)#90 permit icmp any any echo-reply
R2(config-ext-nacl)#
Como se puede apreciar las ACEs anteriores permiten acceso a DNS, WWW (excepto
para el PC7), EMAIL (correo entrante tiene el puerto 25 y correo saliente tiene el puerto 110,
excepto para PC7) y se permite ping a cualquier lugar.
A continuación la ACL de LAN5.

R2(config)#ip access-list extended ACL-LAN5


R2(config-ext-nacl)#10 permit udp any host 192.168.10.5 eq
53
R2(config-ext-nacl)#20 deny tcp host 192.168.20.253 host
192.168.10.10 eq 25

Página 21
Rafael Lozano ACLs

R2(config-ext-nacl)#30 permit tcp any host 192.168.10.10 eq


25
R2(config-ext-nacl)#40 deny tcp host 192.168.20.253 host
192.168.10.10 eq 110
R2(config-ext-nacl)#50 permit tcp any host 192.168.10.10 eq
110
R2(config-ext-nacl)#60 permit icmp any any echo
R2(config-ext-nacl)#70 permit icmp any any echo-reply
R2(config-ext-nacl)#
En esta situación tenemos que desde algunas subredes se accede al servicio WWW
prestado por el Servidor 1. Sin embargo, vemos por el supuesto número 4 que los PCs de
cualquier red interna puede acceder a Internet. Tal y como están escritas las reglas los PCs
de subredes autorizadas pueden acceder al servicio WWW en el Servidor1, pero no a
Internet. Fijémonos en la regla concreta en la ACL-LAN2:

R1(config-ext-nacl)# 20 deny tcp host 192.168.20.61 host


192.168.10.5 eq 80
R1(config-ext-nacl)# 30 permit tcp any host 192.168.10.5 eq
80
Se impide a PC1 acceder al servicio WWW interna y se autoriza al resto de la red. Sin
embargo, cualquiera está autorizado a acceder a Internet. Podemos resolver este problema
modificando la regla 30 la cual solamente permite acceso al servicio WWW del servidor
interno. Si la cambiamos por otra cuyo destino sea any se permitiría el acceso a cualquier
servidor web independientemente de donde se encuentre.

R1(config)# ip access-list extended ACL-LAN2


R1(config-ext-nacl)# no 30
R1(config-ext-nacl)# 30 permit tcp any any eq 80
En este caso el destino sería cualquier host.

3.2 Asignar la ACL a la interfaz


Para asignar una ACL a una interfaz usamos el comando ip access-group del
modo de subconfiguración de la interfaz. Por ejemplo, para asignar las ACLs de LAN2 y 3 a
las interfaces g0/0 y g0/1 respectivamente ejecutaríamos los siguientes comandos.

R1(config)# interface g0/0


R1(config-if)# ip access-group ACL-LAN2 in
R1(config)# interface g0/1
R1(config-if)# ip access-group ACL-LAN3 in
En ambos casos se aplica la ACL en la interfaz para el tráfico de entrada, ya que los
paquetes llegan desde cada subred a la interfaz. Ahora en R2 para las ACLs de las redes
LAN4 y 5.

Página 22
Rafael Lozano ACLs

R1(config)# interface g0/0


R1(config-if)# ip access-group ACL-LAN4 in
R1(config)# interface g0/1
R1(config-if)# ip access-group ACL-LAN5 in

4 Verificar las ACLs


El comando show ip interface se utiliza para verificar la ACL en la interfaz. El
resultado de este comando incluye el número o el nombre de la lista de acceso y el sentido
en el que se aplicó la ACL. Por ejemplo, en la siguiente salida del comando vemos que la
interfaz G0/0 tiene la lista de acceso 1 se aplica en salida, mientras que en entrada no tiene
ninguna ACL configurada.

R3#show ip interface g0/0


GigabitEthernet0/0 is up, line protocol is up (connected)
Internet address is 192.168.4.1/24
Broadcast address is 255.255.255.255
Address determined by setup command
MTU is 1500 bytes
Helper address is not set
Directed broadcast forwarding is disabled
Outgoing access list is 1
Inbound access list is not set

En la salida del siguiente comando se aprecia que la interfaz G0/0 tiene aplicada en
salida la ACL NO-DNS.

R1#show ip interface g0/0


GigabitEthernet0/0 is up, line protocol is up (connected)
Internet address is 192.168.3.1/24
Broadcast address is 255.255.255.255
Address determined by setup command
MTU is 1500 bytes
Helper address is not set
Directed broadcast forwarding is disabled
Outgoing access list is NO-DNS
Inbound access list is not set

El comando show access-lists muestra las listas de acceso. Si se usa como
argumento el número o nombre de la lista mostrará únicamente esa lista.

R1#show access-lists
Standard IP access list NO-DNS
10 deny host 192.168.2.20
20 permit host 192.168.0.20
30 permit host 192.168.0.25

Página 23
Rafael Lozano ACLs

40 deny 192.168.0.0 0.0.0.255


50 permit any
Es posible que las instrucciones de una lista de acceso no muestren en orden de
número de secuencia. Esto se debe al proceso interno del router y se analizará más
adelante en esta sección.

4.1 Estadística de las ACLs


Una vez que la ACL se aplicó a una interfaz y se realizaron algunas pruebas, el
comando show access-lists muestra las estadísticas para cada instrucción que tiene
coincidencias. En el resultado que se muestra en el siguiente código se observa que hay 4
paquetes del host con dirección IP 192.168.2.20 a los que se denegó el reenvío.

R1#show access-lists
Standard IP access list NO-DNS
10 deny host 192.168.2.20 (4 match(es))
20 permit host 192.168.0.20
30 permit host 192.168.0.25
40 deny 192.168.0.0 0.0.0.255
50 permit any
Cuando se genera tráfico que debe coincidir con una instrucción de ACL, las
coincidencias que se muestran en el resultado del comando show access-lists
deberían aumentar. Por ejemplo, en este caso, si se hace ping del PC0 al servidor DNS, en el
resultado se mostrará un aumento en las coincidencias para la instrucción con número de
secuencia 40.

R1#show access-lists
Standard IP access list NO-DNS
10 deny host 192.168.2.20 (4 match(es))
20 permit host 192.168.0.20 (4 match(es))
30 permit host 192.168.0.25
40 deny 192.168.0.0 0.0.0.255 (4 match(es))
50 permit any
Tanto las instrucciones permit como las deny realizan un seguimiento de las
estadísticas de coincidencias; sin embargo, recuerde que cada ACL tiene una instrucción
deny any implícita como última instrucción. Esta instrucción no aparece en el comando
show access-lists, por lo que no se muestran estadísticas para esa instrucción. Para
ver las estadísticas de la instrucción deny any implícita, la instrucción se puede hacer
explícita configurándola manualmente y aparecerá en el resultado.
Durante la prueba de una ACL, se pueden borrar los contadores mediante el comando
clear access-list counters. Este comando se puede utilizar solo o con el
número o el nombre de una ACL específica. Como se muestra en el siguiente código, este
comando borra los contadores de estadísticas para una ACL.

Página 24
Rafael Lozano ACLs

R1#clear access-list counters NO-DNS


R1#show access-lists
Standard IP access list NO-DNS
10 deny host 192.168.2.20
20 permit host 192.168.0.20
30 permit host 192.168.0.25
40 deny 192.168.0.0 0.0.0.255
50 permit any

5 Protección de puertos VTY con ACL


Se puede mejorar la seguridad de las líneas administrativas mediante la restricción del
acceso a VTY. La restricción del acceso a VTY es una técnica que permite definir las
direcciones IP a las que se les permite acceder remotamente al proceso de EXEC del router.
Podemos controlar qué direcciones IP pueden acceder remotamente al router mediante la
configuración de una ACL y una instrucción access-class en las líneas VTY. Utilizamos
esta técnica con SSH para mejorar aún más la seguridad de acceso administrativo.
El comando access-class configurado en el modo de configuración de línea
restringe las conexiones de entrada y salida entre una VTY determinada en un dispositivo y
las direcciones en una lista de acceso. La sintaxis del comando access-class es la
siguiente:

Router (config-line)# access-class número-de-acl { in


[ vrf-also ] | out }
El parámetro in limita las conexiones de entrada entre las direcciones en la lista de
acceso y el dispositivo de Cisco, mientras que el parámetro out limita las conexiones de
salida entre un dispositivo de Cisco y las direcciones en la lista de acceso.
Por ejemplo, supongamos que queremos proteger el acceso al router R3 y que
solamente se pueda hacer desde el PC4. Para ello primero configuramos el acceso a través
de SSH

R3>enable
R3#configure terminal
Enter configuration commands, one per line. End with CNTL/
Z.
R3(config)#ip domain-name cisco.com
R3(config)#crypto key generate rsa
The name for the keys will be: R3.cisco.com
Choose the size of the key modulus in the range of 360 to
2048 for your
General Purpose Keys. Choosing a key modulus greater than
512 may take
a few minutes.

How many bits in the modulus [512]: 1024

Página 25
Rafael Lozano ACLs

% Generating 1024 bit RSA keys, keys will be non-


exportable...[OK]

R3(config)#username usuario secret cisco


*mar 1 0:2:54.238: %SSH-5-ENABLED: SSH 1.99 has been
enabled
R3(config)#line vty 0 15
R3(config-line)#login local
R3(config-line)#transport input ssh
Ahora configuramos la ACL para que solamente el PC4 pueda acceder y la asignamos
a las líneas VTY.

R3(config-line)#access-class 99 in
R3(config-line)#exit
R3(config)#access-list 99 permit host 192.168.2.20
Por último activamos la versión 2 de SSH.

R3(config)#ip ssh version 2


R3(config)#
Podemos comprobar que la ACL está asignada a las líneas VTY con el siguiente
comando.

R3#show access-lists 99
Standard IP access list 99
permit host 192.168.2.20 (3 match(es))
deny any (16 match(es))

R3#
Si desde el PC4 abrimos sesión por SSH con el router veremos lo siguiente

Figura 5.- Sesión SSH

Sin embargo, si intentamos acceder a R3 desde cualquier otro dispositivo con una
dirección IP diferente a la configurada en la ACL veremos lo siguiente.

Página 26
Rafael Lozano ACLs

Figura 6.- Rechazo de apertura de sesión SSH

6 Procesamiento de paquetes con ACL


En los siguientes apartados vamos a ver cuestiones importantes en la configuración de
las ACL.

6.1 Deny any implícita


Una ACL de entrada única con solo una entrada de denegación tiene el efecto de
denegar todo el tráfico. Se debe configurar al menos una ACE permit en una ACL. En caso
contario, se bloquea todo el tráfico.

6.2 Orden de las ACEs en una ACL


El IOS de Cisco aplica una lógica interna al aceptar y procesar las ACE estándar. Como
se mencionó anteriormente, las ACE se procesan de forma secuencial; por lo tanto, el orden
en que se introducen las ACE es importante.
Veamos el siguiente ejemplo. Supongamos que construimos una ACL en R1 para
denegar el acceso a la red 192.168.0.0/24 y permitimos el acceso al host 192.168.0.10. Si
introducimos las ACE en el siguiente orden veremos lo siguiente.

R1(config)#access-list 1 deny 192.168.0.0 0.0.0.255


R1(config)#access-list 1 permit host 192.168.0.10
R1(config)#do show access-lists 1
Standard IP access list 1
10 deny 192.168.0.0 0.0.0.255
20 permit host 192.168.0.10

R1(config)#

6.3 Reordenamiento de ACLs


Es posible que el orden en que se introducen las ACE estándar no sea el orden en que
se almacenen, se muestren o se procesen en el router.
En la siguiente figura se muestra la configuración de una lista de acceso estándar. Las
instrucciones de rango que deniegan tres redes se configuran primero, y después se
configuran cinco instrucciones de host. Las instrucciones de host son todas instrucciones
válidas, porque sus direcciones IPv4 host no forman parte de las instrucciones de rango
introducidas previamente.

Página 27
Rafael Lozano ACLs

Figura 7.- Configuración ACL

El comando show running-config se utiliza para verificar la configuración de la


ACL. Nótese que las instrucciones se enumeran en un orden distinto al orden en que se
introdujeron. Utilizaremos el comando show access-lists para comprender la lógica
detrás de esto.

Página 28
Rafael Lozano ACLs

Figura 8.- Listado de ACLs

Como se muestra en la figura anterior, el comando show access-lists muestra


las ACE junto con sus números de secuencia. Sería de esperar que el orden de las
instrucciones en el resultado reflejara el orden en que se introdujeron. Sin embargo, el
resultado de show access-lists muestra que este no es el caso.
El orden en que se listan las ACE estándar es la secuencia utilizada por el IOS para
procesar la lista. Nótese que las instrucciones se agrupan en dos secciones: las
instrucciones de host seguidas por las instrucciones de rango. El número de secuencia
indica el orden en que se introdujo la instrucción, no el orden en que se procesará.
Las instrucciones de host se enumeran primero, pero no necesariamente en el orden
en que se introdujeron. El IOS ordena las instrucciones de host mediante una función de
hash especial. El orden resultante optimiza la búsqueda de una entrada de ACL de host. Las
instrucciones de rango se muestran después de las instrucciones de host. Estas
instrucciones se enumeran en el orden en que se introdujeron.
Recuerde que las ACL estándar y numeradas se pueden editar con números de
secuencia. Cuando se introduce una nueva instrucción de ACL, el número de secuencia solo
afecta a la ubicación de una instrucción de rango en la lista. Las instrucciones de host
siempre se ordenan con la función de hash.

Página 29
Rafael Lozano ACLs

Siguiendo con el ejemplo, una vez que se guarda la configuración en ejecución, el


router se vuelve a cargar. Como se muestra en la anterior figura, el comando show
access-lists muestra la ACL en el mismo orden, sin embargo, las instrucciones se
volvieron a numerar. Los números de secuencia ahora están en orden numérico.

Página 30
Rafael Lozano ACLs

7 Bibliografía
CISCO, CCNA1 Introducción a las Redes – Versión 6 – NetAcad 2017.
CISCO, CCNA2 Principios básicos de Routing y Switching – Versión 6 – NetAcad 2017.

Página 31

También podría gustarte