En el mundo Cisco las reglas de Firewall básicas y avanzadas se relacionan con Reglas de Control de Acceso: ACL (Access Control List).
Según la complejidad de lo que se quiere hacer estas pueden llegar a ser complicadas de administrar. Lo recomendable es tener siempre una documentación fuera del router o comentar los item de las ACLs para hacer más fácil el troubleshooting de las mismas.
En este documento pretendo analizar de forma simple las mismas ya que el alcance completo se va a exceder del proyecto de red empresarial mediana.
Sin más les cuento un poco de que tratan las Access Control List.
Access Control List
Las ACLs o listas de control de acceso son un conjunto de reglas que se utilizan para permitir o negar el tráfico en dispositivos de red, como los routers y switches de Cisco. Funcionan como un filtro de seguridad que controla el acceso a segmentos de la red basándose en direcciones IP, protocolos y puertos.
En el mundo Cisco de reglas de seguridad hay un concepto para aprender que son las «Wildcard».
Que son las Wilcards
La wildcard funcionan al revés que una máscara de subred tradicional. En una máscara de subred, un 1 en la máscara indica un bit que debe coincidir exactamente y un 0 indica un bit que puede variar. En las wildcards, es al revés: un 0 significa «este bit debe coincidir» y un 1 significa «este bit puede ser cualquier cosa».
Por ejemplo, si tenés una dirección IP como 192.168.10.0 y usás una wildcard de 0.0.0.255, esto indica que las primeras tres partes de la IP (192.168.10) deben coincidir exactamente, pero la última parte (el último byte) puede ser cualquier número entre 0 y 255.
¿Por qué se usan?
Las wildcards se usan porque te dan una flexibilidad enorme para especificar rangos de direcciones IP en las reglas de las ACLs. En lugar de tener que escribir muchas reglas para cubrir múltiples direcciones IP específicas, podés usar una wildcard para abarcar todo un rango con una sola regla. Esto hace que la configuración sea más simple y más rápida, además de que reduce la cantidad de recursos que el router necesita para procesar las ACLs.
Por ejemplo, si querés permitir el acceso solo a la subred 192.168.10.0/24, podrías usar una wildcard de 0.0.0.255 junto con la dirección base 192.168.10.0. Esto cubre todas las direcciones desde 192.168.10.0 hasta 192.168.10.255.
Tipos de ACLs
Hay dos tipos principales de ACLs en dispositivos Cisco:
Standard ACLs: Estas son más simples y controlan el tráfico basándose únicamente en las direcciones IP de origen.
Extended ACLs: Son más detalladas y pueden filtrar el tráfico basándose en las direcciones IP de origen y destino, además de los protocolos (TCP, UDP, ICMP, etc.) y los números de puerto.
Configuración
Para configurar ACLs en un dispositivo Cisco, entramos al modo config en el exec privilegiado(#conf terminal).
#ACL estandar
Router(config)# access-list [número] deny|permit [dirección origen] [wildcard mask]
#ACL extendida
Router(config)# access-list [número] deny|permit [protocolo] [ip origen] [wildcard origen] [ip destino] [wildcard destino] [opciones]
Donde…
[número]: es el número de identificación de la ACL (1-99 para estándar, 100-199 para extendida).
deny|permit: especifica si la regla bloquea o permite el tráfico.
[protocolo]: puede ser TCP, UDP, ICMP, etc.
[dirección origen/destino]: IP de origen o destino.
[wildcard mask]: máscara que indica qué bits de la dirección IP deben coincidir.
in|out: aplica la ACL en tráfico entrante o saliente de la interfaz.
De esa forma creamos la ACL que mejor nos cuadre. De todas formas ninguna ACL entrará en funcionamiento hasta que no la «agreguemos» a la interfaz que queremos filtrar especificando si la regla afectará a los paquetes entrantes o salientes (IN/OUT).
De esta forma podemos especificar el orden del tráfico que vamos a filtrar.
Router(config-if)# ip access-group [número de lista] in|out
Un dato para recordar (y lo pinto de rojo):
EL ORDEN DE LAS REGLAS IMPORTA
Al filtrar en Cisco, como en cualquier Firewall el paquete se comparará con cada regla de la lista hasta «Matchear» con la regla correspondiente y luego no se compara más. Por lo tanto, los permitir van arriba de los prohibir en la mayoría de los casos.
Ejemplo, si quiero permitir que un host solamente de una red acceda a otra debería ordenar las reglas de la siguiente manera:
1 – Permito el único host que pasa
2 – Bloqueo todos los demás
Te pongo un ejemplo en práctica
Supongamos que querés impedir que una LAN (192.168.10.0/24) acceda a la DMZ (192.168.20.0/24), pero permitir que un host específico de la LAN (192.168.10.50) pueda acceder a un servidor web (192.168.20.100) en la DMZ.
Router(config)# access-list 101 permit tcp host 192.168.10.50 host 192.168.20.100 eq www
Router(config)# access-list 101 deny ip 192.168.10.0 0.0.0.255 192.168.20.0 0.0.0.255
#con el comando Show access-list vemos las listas que configuramos y su orden
Router#show access-lists
Extended IP access list 101
10 permit tcp host 192.168.10.50 host 192.168.20.100 eq www
20 deny ip 192.168.10.0 0.0.0.255 192.168.20.0 0.0.0.255
#Aplicar la ACL a la interfaz correspondiente (suponiendo que es la interfaz de salida hacia la LAN):
Router(config-if)# ip access-group 101 in
Y si queremos editar una lista?
Primero tené en cuenta que las ACLs en los dispositivos Cisco no se pueden editar directamente en la configuración actual. Tendrás que eliminar la regla que querés modificar y luego volver a escribir la versión corregida. Esto puede sonar un poco molesto, pero una vez que lo hacés un par de veces, te vas a acostumbrar. Tené un block de notas a mano y andá pasando todo lo que puedas.
Con #show access-lists podes ver las listas y sus reglas, copiar y pegar. Es la forma más práctica a menos que uses la interfáz gráfica que traen algunos routers o firewalls de cisco.
Siguiendo con la Saga
Retomando el laboratorio con el que empezamos, vamos a aplicar las ACLs correspondientes para que la LAN y la DMZ no se vean.
access-list 101 deny ip 192.168.10.0 0.0.0.255 10.0.10.0 0.0.0.255
access-list 101 permit ip 192.168.10.0 0.0.0.255 any
access-list 102 deny ip 10.0.10.0 0.0.0.255 192.168.10.0 0.0.0.255
access-list 102 permit ip 10.0.10.0 0.0.0.255 any
interface GigabitEthernet 0/0/1
ip access-group 101 in
interface GigabitEthernet0/0/2
ip access-group 102 in
La próxima vez que nos encontremos vamos a hablar de redundancia.
Y si se les complica o necesitan ayuda, no duden en escribir.