¿Cómo funcionan las ACLs? IV: ACLs complejas

Spread the love

escribí 5 entradas completas sobre ACLs a manera de Tutorial, se las recomiendo.

¿Qué son ACL complejas?
CCNA Exploration varios tipos de ACLs no vistos en las versiones anteriores del currículo, las denomina ACLs complejas. La idea de las ACLs complejas es complementar lo que ya sabemos sobre ACLs estándar y extendidas con comportamientos que las hacen útiles en contextos más interesantes. Para comprender correctamente el tema de las ACL complejas debe entender bien todo lo relacionado con ACLs. Si usted no entiende perfectamente el tema del filtrado de tráfico con ACLs le recomiendo que lea las entradas anteriores de esta serie, en su orden: Dentro de las ACLs complejas tenemos 3 tipos: dinámicas, reflexivas y basadas en tiempo pero en el currículo oficial no se ven muy a fondo ni se dan mayores ejemplos. A continuación les describo cada una de ellas y al final de la entrada describo las acl nombradas son un tipo de acl que facilita la configuración y administración de ACLs.
ACLs dinámicas
Éstas usan un mecanismo básico de autenticación, generalmente Telnet, para activar la ACL, lo que permite usar una ACL como mecanismo de autenticación o vincular una ACL con la autenticación de los usuarios con medios reconocidos. La idea consiste en crear una regla en la ACL que sólo se activará si es disparada por algún evento, en éste caso un acceso por telnet al enrutador. La regla en cuestión agrega antes de la acción (permit/deny) las palabras reservadas dynamic testlist timeout <n>, donde n es la cantidad de minutos que la regla será activa una vez que es disparada, luego de estos parámetros va la regla ordinaria que se hará activa, por ejemplo permit ip host 10.1.1.1 any.  Como esta última regla está asociada con un acceso por telnet como disparador, en las líneas de vty se debe poner un comando especial autocommand access-enable host timeout 5, que establece el acceso permitido al telnet como disparador de la acl dinámica.
  • access-list 101 permit ip any host 10.1.1.1 eq telnet
  • access-list 101 dynamic testlist timeout 10 permit ip 172.16.0.0 0.0.255.255 172.17.0.0 0.0.255.255
  • interface fa 0/0
  • ip access-group 101 in
  • username cesarcabrera password cecab123
  • line vty 0 4
  • login local
  • autocommand access-enable host timeout 5
El anterior listado de comandos instala una lista de acceso dinámica de entrada en la interfaz fa 0/0 que sólo después que un usuario cesar abre exitosamente una sesión por telnet con la clave cecab123 con el enrutador se activa, permitiendo acceso de la red 172.16.0.0/16 a la 172.17.0.0/16. Valga la aclaración que el comando autocommand cierra automáticamente la sesión de telnet pero dispara la acl, es decir, la sesión de telnet es sólo un disparador de la acl y no tiene que quedar activa para que la acl esté en funcionamiento.
ACLs reflexivas
Las reflexivas son un tipo de firewall primitivo que permite el tráfico sólo si es iniciado en una dirección, pero sin usar las banderas de conexión de TCP. Ya en las ACLs extendidas habíamos visto que en vez de ip se pueden poner otros protocolos y al final poner criterios adicionales particulares al protocolo en cuestión. Específicamente, tcp permite agregar al final del identificador de origen o destino un identificador de puerto en incluso banderas de conexión como established, que indica que la conexión ya se abrió. Éste caso particular de tcp es muy útil cuando se tienen dos redes de las cuales una es confiable y la otra no, entonces es preferible permitir sólo conexiones cuya solicitud provenga de la red confiable, es decir, que se abran desde la red interna y no se puedan abrir conexiones desde la externa. Con el truco de la bandera established (ack activo) se puede permitir de entrada sólo los paquetes con ésta condición, de tal manera que si llegan paquetes solicitando una conexión desde fuera (todavía no tienen el bit ack activo) se rechazan, mientras que si las conexiones se abren desde adentro, todos los paquetes entrantes deberán tener el ack activo y por lo tanto se van a permitir. Pero ¿qué pasa con UDP y otros protocolo no orientados a la conexión? Pues ahí entran en juego las acl reflexivas. La idea es hacer lo mismo que el truco de established, pero basandose sólo en los parámetros básicos de capa 3 y 4. Las acls reflexivas son un poco complejas en su configuración, ya que se aplican varios comandos para establecer las entradas temporales, adicionalmente las ACLs reflexivas son un caso particular de ACL nombrada extendida, por lo tanto no se pueden configurar en acl numeradas ni en acls nombradas estándar. Primero, en una de las direcciones del tráfico se debe marcar la regla cuyo tráfico de vuelta se va a permitir con la palabra clave reflect <nombre>, donde nombre es un identificador arbitrario que le ponemos a esta instancia, luego en la dirección de vuelta del tráfico (la acl que se va a instalar en la dirección contraria) se agrega la sentencia evaluate <nombre> donde nombre es el identificador arbitrario que pusimos en la otra dirección. En otras palabras, se le pone un identificador al tráfico que inicia la acl reflexiva, luego en la otra dirección se le ordena que evalúe si el tráfico corresponde con la regla marcada para permitirlo si coincide. Finalmente se instalan las listas, una de entrada y otra de salida en la misma interfaz (el tráfico entra y sale por la misma interfaz).
  • ip access-list extended OUTB
  • permit udp 172.16.0.0 0.0.255.255 any reflect UDPTRAFFIC
  • permit icmp 172.16.0.0.0.0.255.255 any reflect ICMPTRAFF
  • ip access-list extended INB
  • evaluate UDPTRAFFIC
  • evaluate ICMPTRAFF
  • interface ser 0/0
  • ip access-group OUTB out
  • ip access-group INB in
El listado anterior instala una lista de acceso reflexiva que permite el tráfico de UDP e ICMP sólo si se originó en la red 172.16.0.0/16.
ACLs basadas en fechas/horarios
Finalmente, las más simples de comprender son las basadas en fechas/horarios. La idea de estas acls son que se activan en las fechas y horarios que se hayan establecido previamente, la precondición evidente es que el enrutador debe tener configuradas su hora y fecha correctamente, para ésto se puede configurar manualmente, confiando que el equipo no se vaya a reiniciar por ningún motivo y que el administrador va a mantener actualizado el reloj en caso contrario. Otra alternativa (más confiable) es configurar un servidor ntp para que el enrutador mantenga su tiempo actualizado. La configuración de las acls basadas en tiempo consiste en crear un rango de tiempo (time-range) el cual es después usado en las reglas de la ACL.
  • time-range NOCHES
  • periodic Monday Tuesday Wednesday Thursday Friday 17:00 to 00:00
  • access-list 101 permit tcp 172.16.0.0 0.0.255.255 any eq www time-range NOCHES
  • int fa 0/0
  • ip access-group 101 out
El anterior listado crea una lista de acceso que se permite el acceso a Internet para la red 172.16.0.0 sólo después de las 17hrs en días de trabajo (Lunes a Viernes).
ACL nombradas
Finalmente, hay una forma más fácil de editar las listas de acceso llamadas listas de acceso nombradas. La idea básica de éstas ACLs es permitir una administración mnemónica de las ACL, ya que en vez de números se usan nombres arbitrarios. Éstas listas pueden ser extendidas o nombradas con las mismas características que las ACLs numeradas y abren un modo especial de configuración (nacl) en el que se introducen las reglas una por una empezando por la acción (permit/deny).  Después de la versión 12.3 del IOS, éstas listas de acceso permiten eliminar y crear reglas particulares entre las reglas existentes, contrario a la edición ordinaria de ACLs en la que tocaba eliminar completamente una ACL para poder modificarla. En su configuración las palabras clave son ip access-list, lo que hemos visto hasta este momento, todas las listas de acceso comienzan con la palabra reservada access-list, éstas comienzan con ip access-list, seguidas del tipo de lista extended/standard y el nombre (arbitrario). Luego se entra en el modo especial de configuración.
  • ip access-list extended INB
  • (config-ext-nacl)#permit 172.16.0.0 0.0.255.255 172.17.0.0 0.0.255.255
  • (config-ext-nacl)#deny any any
Éstas listas se aplican como se aplican todas las acls y se verifican con los mismos comandos. show ip access-list y show ip interface.
Conclusión
Como podemos ver, las listas de control de acceso en Cisco son mucho más versátiles de lo que creíamos y eso que no hemos visto sino la aplicación en filtrado de tráfico. Como les dije en la primera entrada de la serie: las ACL son un mecanismo para clasificar tráfico y por lo tanto se usan en muchas tecnologías en los enrutadores, por ejemplo para redireccionar tráfico usando PBR (policy based routing). Para la próxima entrega haremos muchos ejemplos en una topología compleja en la que podamos ver en la práctica todo lo que hemos explorado tan teóricamente. [relatedPosts]]]>

6 comentarios en “¿Cómo funcionan las ACLs? IV: ACLs complejas”

    1. Hola Nikolás,

      gracias por el comentario. La pregunta no aplica, las acls nombradas pueden ser estándar o extendidas y se les aplica la norma respectiva: estándar más cerca del destino y extendidas más cerca del origen.

      Gracias y hasta pronto.

  1. como puedo hacer una ACL nombrada desde un rango definido es decir como por ejemplo desde una ip .30-.60 hacia otra red de .100-200
    denegando solo este rango

    ejemplo

    4. Denegar Ping de los host 30-60 de la VLAN40 hacia los Host 100-200 de la NETB
    la vlan 40 ip 172.16.4.0/24
    LA NetB ip 192.168.200.0/24
    muchas gracias

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.