Como ya hemos comentado en alguna ocasión en este blog, las listas de control acceso en dispositivos Cisco, en adelante ACLs, nos ayudan a identificar tráfico ‘interesante’ para que posteriormente sea procesado por el sistema. Las ACLs pueden usarse por varios motivos, siendo el más habitual la identificación de tráfico para su filtrado posterior sobre una de las interfaces del dispositivo (access-group). Otro uso habitual es la indentificación de tráfico interesante dentro de un cryptomap de una conexión VPN o cuando usamos NAT.
Sin entrar en detalle, podríamos considerar como las ACLs más usadas las siguientes:
- ACL estándar: nos permite identificar (autorizar o denegar) tráfico basándonos únicamente en la IP origen.
- ACL extendida: nos permite identificar tráfico a nivel 4, es decir, aparte por las direcciones IP origen/destino, podemos identificar protocolos o puertos TCP/UDP (incluido el flag established).
No obstante, existen otros tipos de ACLs, algunos de ellos que no aparecen nombrados aquí, que al menos yo prácticamente no he usado nunca:
- ACL nombrada: similar a las anteriores pero con la posibilidad de usar nombres en lugar de números.
- ACL dinamica (lock-and-key): donde necesitamos establecer una sesión autenticada con el dispositivo para autorizar el tráfico.
- ACL reflexiva: donde se autorizan las conexiones salientes y permitiendo la respuesta de dichas conexiones.
- ACL basada en tiempo: similar a la extendida pero con la posibilidad de poder establecer un control de acceso según un patrón horario.
- ACL basada en contexto (CBAC): donde podemos inspeccionar el tráfico para permitir accesos temporales a las sesiones establecidas, como retorno de las mismas o como conexiones adicionales.
Un caso que quizás nos podría llevar a confusión (a mi me pasó la primera vez que lo ví), sería por ejemplo cuando trabajamos con un switch de capa3, como podría ser el Cisco 3750, en donde podemos aplicar VACLs, es decir, aplicar ACLs a las Vlans existentes. Supongamos por ejemplo que tenemos una ACL como la siguiente:
ip access-list extended ACL_FILTRADO deny ip host 192.168.1.100 any permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
Si nos centramos únicamente en esta configuración, podríamos asumir que el tráfico de la dirección IP 192.168.1.100 será denegado; el tráfico desde la red 192.168.1.0/24 a la red 192.168.2.0/24 será permitido y finalmente, el resto de tráfico será denegado por defecto, ya que habitualmente asociamos las ACLs a un filtrado de tráfico en una interfaz, pero recordemos que estamos identificando tráfico para su procesado posterior.
Efectivamente, si después encontramos un comando access-group en una interfaz del dispositivo, nuestra suposición será correcta. No obstante, podemos encontrar una VACL sobre una de nuestras VLAN, en este caso la 22, de la forma:
vlan access-map VACL_FILTRADO 10 match ip address ACL_FILTRADO action drop vlan access-map VACL_FILTRADO 20 action forward vlan filter VACL_FILTRADO vlan-list 22
Según esta configuración, la ACL se comporta al contrario de lo que habíamos supuesto. El tráfico que hace match con ella la ACL (permit), será denegado (action drop), y el resto de tráfico se reenviará para su procesado.
Es muy importante tener presente que en una ACL estamos identificando tráfico el cual será procesado más tarde y no asumir por error, aunque es lo habitual, que un deny será tráfico denegado en el dispositivo. Esto nos ayudará a reducir el tiempo en un proceso de troubleshooting a nivel de red para centrarnos identificar y solucionar el verdadero problema.
Si queremos más información de ACLs en Cisco, podemos consultar los siguientes enlaces: