ACLs - Configuración
Las listas de acceso (ACLs) filtran tráfico permitiendo o denegando paquetes según criterios (IP origen, destino, protocolo, puertos). Cubre ACLs estándar, extendidas, nombradas e IPv6. La validación está en ACLs - Verificación y el diagnóstico en ACLs - Troubleshooting.
Prerrequisitos
- Tener claro qué tráfico permitir/denegar, y en qué interface y dirección aplicarlo.
Generalidades
- En las listas de acceso trabajamos con “permit” o “deny”.
- El significado de permit/deny depende de la característica que use la ACL. En un access-group (filtrado): un
permitsignifica que el paquete NO se descarta; undenysignifica que el paquete SÍ se descarta. - Al final de toda ACL hay un “deny all” implícito (todo lo que no se permita explícitamente, se descarta).
- Es direccional: se aplica
inuout. - Solo se puede tener una ACL configurada por interface y por dirección.
ACL estándar (numerada)
Permiten identificar paquetes solo en base a la IP de origen. Números: 1 al 99 y 1300 al 1999.
Router(config)# access-list número-ACL {permit | deny} dirección-IP-origen wildcard
Router(config-if)# ip access-group número-ACL {in | out}
Regla de ubicación: las ACL estándar se configuran lo más cerca al destino de los paquetes (porque solo miran el origen, si las pones cerca del origen podrías bloquear tráfico legítimo hacia otros destinos).
ACL extendida (numerada)
Filtran por protocolo, IP origen/destino y puertos. Números: 100 al 199 y 2000 al 2699 (añadido pro).
Router(config)# access-list número-ACL {permit | deny} protocolo dirección-IP-origen wildcard [puerto-origen] dirección-IP-dst wildcard [puerto-destino]
Router(config-if)# ip access-group número-ACL {in | out}
Regla de ubicación: las ACL extendidas se configuran lo más cerca posible al origen (así se descarta el tráfico no deseado cuanto antes).
Añadido pro: para puertos se usan operadores
eq,gt,lt,neq,range(por ejemploeq 23para Telnet,eq 80para HTTP). Palabras clave útiles:host <ip>(una sola IP),any(cualquiera).
ACL nombrada
Permiten identificar la ACL por un nombre en vez de un número. La lógica es la misma.
! Estándar nombrada
Router(config)# ip access-list standard nombre-ACL
Router(config-std-nacl)# {permit | deny} dirección-IP wildcard
! Extendida nombrada
Router(config)# ip access-list extended nombre-ACL
Router(config-ext-nacl)# {permit | deny} protocolo dirección-IP-origen wildcard [puerto-origen] dirección-IP-dst wildcard [puerto-destino]
! Aplicar
Router(config-if)# ip access-group nombre-ACL {in | out}
ACL IPv6
- En IPv6 no existe el concepto de listas numeradas.
- En IPv6 no existen estándar y extendidas: todas son nombradas y extendidas.
- En IPv6 no existe el concepto de wildcards (se usa
/prefijo).
Router(config)# ipv6 access-list nombre-ACL
Router(config-ipv6-acl)# {permit | deny} protocolo dirección-IP-origen/prefijo [puerto-origen] dirección-IP-dst/prefijo [puerto-destino]
Router(config-if)# ipv6 traffic-filter nombre-ACL {in | out}
Nota: en IPv6 se aplica con
ipv6 traffic-filter(noip access-group).
ACLs en switches de capa 2 (añadido pro)
Las ACLs también se usan en switches, no solo en routers. Lo que cambia es cómo se aplican:
- Switch de capa 3 (multicapa): las ACL IP estándar/extendidas se aplican igual que en un router, sobre las SVIs (
interface vlan) o los puertos enrutados, conip access-group. - Port ACL (PACL): se aplica a un puerto de switch de capa 2 (solo entrada), con
ip access-group(IP) omac access-group(MAC). - VLAN ACL / VLAN Access-Map (VACL): filtra el tráfico DENTRO de una VLAN (capa 2), con
vlan access-map+vlan filter. - MAC ACL: filtra por dirección MAC (
mac access-list extended).
Ejemplo de VLAN Access-Map (filtrar tráfico dentro de la VLAN 10):
! ACL que identifica el tráfico
Switch(config)# ip access-list extended TRAFICO-A-BLOQUEAR
Switch(config-ext-nacl)# permit ip host 10.10.10.5 any
Switch(config-ext-nacl)# exit
! Mapa: lo que coincide se descarta, el resto se reenvía
Switch(config)# vlan access-map MAPA-VLAN10 10
Switch(config-access-map)# match ip address TRAFICO-A-BLOQUEAR
Switch(config-access-map)# action drop
Switch(config)# vlan access-map MAPA-VLAN10 20
Switch(config-access-map)# action forward
Switch(config)# exit
! Aplicar el mapa a la VLAN
Switch(config)# vlan filter MAPA-VLAN10 vlan-list 10
ACLs basadas en tiempo (Time-Based ACLs)
Las ACE solo estarán activas durante un periodo definido. Primero se crea un time-range y luego se referencia dentro de una ACE.
Router(config)# time-range NOMBRE
Router(config-time-range)# absolute start 14:00 15 AUG 2021 end 20:00 15 AUG 2021
Router(config-time-range)# periodic weekdays 14:00 to 20:00
Router(config-time-range)# exit
Router(config)# ip access-list extended DENEGAR_PASANTE
Router(config-ext-nacl)# deny ip host 10.10.10.5 host 192.168.10.1 time-range DENEGAR_PASANTE
Router(config-ext-nacl)# permit ip any any
time-range <nombre>: define la ventana de tiempo.absolute start <hora fecha> end <hora fecha>: una única ventana con inicio y fin (formatoHH:MM DD MON YYYY).periodic <días> <HH:MM> to <HH:MM>: se repite. Días válidos:monday..sunday,daily(todos),weekdays(lunes a viernes),weekend(sábado y domingo).- En la ACE se agrega
time-range <nombre>: fuera de la ventana, esa ACE queda inactiva.
Requiere reloj correcto en el dispositivo (idealmente NTP - Configuración, o
clock set), o las ventanas no coincidirán con la hora real.
Operadores de ACL (para puertos)
En las ACL extendidas, al comparar puertos se usa un operador (de tu diapositiva). Solo un operador por ACE.
| Operador | Significado |
|---|---|
eq | Equal (igual a) |
gt | Greater than (mayor que) |
lt | Less than (menor que) |
neq | Not equal (distinto de) |
range | Inclusive Range (rango, ambos incluidos) |
Router(config)# ip access-list extended RANGO
Router(config-ext-nacl)# permit tcp any any eq 22
Router(config-ext-nacl)# deny tcp any any range 23 50
Router(config-ext-nacl)# exit
Router(config)# interface fastEthernet 1/0
Router(config-if)# ip access-group RANGO in
También se puede hacer match por protocolo en una ACL extendida:
permit ospf any any,permit gre host 10.10.10.1 host 10.10.20.1,permit eigrp ..., etc.
Logging de ACL
Agregar log a una ACE genera un mensaje de syslog cada vez que esa regla coincide (útil para auditar qué se está bloqueando/permitiendo).
Router(config)# ip access-list extended AUDITAR
Router(config-ext-nacl)# deny ip host 10.10.10.5 any log
Router(config-ext-nacl)# permit ip any any
log: registra el evento (IP origen/destino, protocolo, número de coincidencias).log-input(variante): además incluye la interface de entrada y la MAC de origen.
Usar con moderación en producción: el logging por ACE consume CPU. Combínalo con Syslog - Configuración para enviar los eventos a un servidor.
Dos ejemplos completos de configuración
Ejemplo 1 — ACL estándar: bloquear un host hacia una red
Diseño (de tu diapositiva): evitar que PC1 (10.20.50.2) se comunique con la red de Gerentes (192.168.10.0/24). Se aplica lo más cerca al destino (en R1, saliendo hacia Gerentes).
R1# configure terminal
! Denegar el host y permitir el resto (si no, el deny implícito bloquea todo)
R1(config)# access-list 10 deny 10.20.50.2
R1(config)# access-list 10 permit any
! Aplicar saliendo hacia la red de Gerentes
R1(config)# interface fastEthernet 0/0
R1(config-if)# ip access-group 10 out
R1(config-if)# end
R1# copy running-config startup-config
Ejemplo 2 — ACL extendida: bloquear Telnet hacia un router + ACL IPv6
Diseño (de tu diapositiva): evitar que las computadoras de Marketing (10.20.50.0/24) accedan al servicio Telnet (TCP 23) de R3 (172.16.10.10). Se aplica lo más cerca al origen (en R2, entrando desde Marketing).
R2# configure terminal
! Denegar Telnet de Marketing hacia R3, permitir el resto
R2(config)# access-list 100 deny tcp 10.20.50.0 0.0.0.255 host 172.16.10.10 eq 23
R2(config)# access-list 100 permit ip any any
! Aplicar entrando desde Marketing (cerca del origen)
R2(config)# interface fastEthernet 0/0
R2(config-if)# ip access-group 100 in
R2(config-if)# exit
! Ejemplo IPv6: bloquear un prefijo hacia un servidor
R2(config)# ipv6 access-list BLOQUEO-V6
R2(config-ipv6-acl)# deny tcp 2001:db8:50::/64 host 2001:db8:16::10 eq 23
R2(config-ipv6-acl)# permit ipv6 any any
R2(config-ipv6-acl)# exit
R2(config)# interface fastEthernet 0/1
R2(config-if)# ipv6 traffic-filter BLOQUEO-V6 in
R2(config-if)# end
R2# write memory
Verificación rápida (comprobar que quedó bien)
La verificación detallada está en ACLs - Verificación.
! Ver las ACL y sus coincidencias
R1# show ip access-list
R1# show running-config
! ¿Dónde está aplicada?
R1# show ip interface fastEthernet 0/0
Qué deberías ver:
- En
show ip access-list, las reglas con su contador de coincidencias (matches). - En
show ip interface, la ACL aplicada in/out en la interface.
Todos los comandos de tus diapositivas están incluidos (estándar, extendida, nombrada, IPv6, reglas de ubicación, deny implícito). Lo añadido (rangos numéricos, operadores de puerto, host/any) va marcado como “pro”. Si quieres que quite algo, dime.