Está en la página 1de 12

Uso de listas de acceso en entornos Cisco

por Antonio Gallego de Torres, autor del libro "Enrutadores Cisco". © 2003. Se autoriza la difusión total o parcial siempre que se cite procedencia. LISTAS DE ACCESO. PRESENTACION Los routers Cisco proporcionan varios métodos de selección de tráfico. En el presente artículo exploraremos las posibilidades de las listas de acceso. Las listas de acceso son conjuntos de reglas que indican al router como seleccionar paquetes. Una vez seleccionados los paquetes pueden ser tratados de diversas formas. Uno de los usos más extendidos de las listas de acceso es el de controlar el flujo de tráfico entrante y saliente de un router. El presente artículo se divide en dos bloques: una exposición teórica de las listas de acceso (estructura, tipos, formación de las condiciones que las conforman) y una serie de ejemplos prácticos que aclararán rápidamente todos los conceptos establecidos en la primera parte.

I. TEORIA DE LAS LISTAS DE ACCESO
LISTAS DE ACCESO. ESTRUCTURA BASICA Las reglas que componen las listas de acceso tienen tres partes: un número que identifica la lista, una instrucción deny o permit y una condición access-list número_identificador [permit|deny] condición El número utilizado para identificar una lista concreta debe ser seleccionado de un rango numérico acorde con el uso concreto de la lista. En la Tabla 1 vemos los principales tipos de listas disponibles. En este artículo nos centraremos especialmente en las listas IP, en sus formas Estándar y Extendida. Tabla 1. Numeración de las listas de acceso. PROTOCOLO IP IP Ethernet DECnet RANGO FILTRA POR 1-99 y 1300-1999 el origen 100-199 y 2000Extendidas el origen, destino, protocolo, puerto... 2699 Código 200-299 el tipo de código Ethernet (Type) Protocol 300-399 el origen TIPO Estándar

puerto. Versiones posteriores de IOS extienden esta característica al protocolo IPX..2. y para listas IP. Service Access Point) SINTAXIS DE LAS LISTAS DE ACCESO Ya hemos visto la sintaxis general de las listas de acceso (Standar ACLs): access-list número_identificador [permit|deny] condición Mostramos a continuación la sintaxis de las listas de acceso extendidas (extended ACLs): Para el protocolo IP: access-list access-list-number [dynamic dynamic-name [timeout minutes]] {deny | permit} protocol source source-wildcard destination destination-wildcard [precedence precedence] [tos tos] [log | log-input] [time-range time-range-name] Para el protocolo ICMP: access-list access-list-number [dynamic dynamic-name [timeout minutes]] {deny | permit} icmp source source-wildcard destination destination-wildcard [icmp-type | [[icmp-type icmp-code] | [icmp-message]] [precedenceprecedence] [tos tos] [log | log-input] [time-range time-range-name] Para el protocolo TCP: access-list access-list-number [dynamic dynamic-name [timeout minutes]] {deny | permit} tcp source source-wildcard [operator [port]] destination destination-wildcard [operator [port]] [established] [precedence precedence] [tos tos] [log | log-input] [time-range time-range-name] Para el protocolo UDP: access-list access-list-number [dynamic dynamic-name [timeout minutes]] {deny | permit} udp source source-wildcard [operator [port]] destination destination-wildcard [operator [port]] [precedence precedence] [tos tos] [log | log-input] [time-range time-range-name] Desde la versión de Cisco IOS 11. A este tipo de listas se les llama "Listas de acceso con nombre" (Named ACLs) y su forma es la siguiente: . obligatoriamente alfabético). destino. protocolo. el identificador numérico de la lista puede ser reemplazado por un identificador alfanumérico de hasta 64 caracteres (el primero.Appletalk Ethernet IPX IPX IPX Suite Protocol Suite Direcciones Estándar Extendida SAP 600-699 799-799 800-899 900-999 1000-1099 el origen la dirección MAC el origen el origen.. tipo de aplicación (SAP.

10. la máscara comodín para la red 10.ip access-list [standar|extended] nombre condicion ESPECIFICACION DE CONDICIONES Las condiciones de las listas de acceso permiten identificar las direcciones de origen y destino de los paquetes. Si tenemos.10.255 . Decimal 10.00000000.255.00001010.255.9. A las máscaras de las listas de acceso se les denomina wildcard mask o máscaras comodín.0.0 0.255.0.10. Sumarizando subredes.10.10. o dicho de otra forma las direcciones de la forma 10.10.255.7 no cumple la condición (el tercer byte de la dirección es distinto en la dirección y en la condición.255. por ejemplo.0 sería 255.0 hasta la 10. Concretamente los ceros de las máscaras significan que el bit correspondiente de la dirección es relevante. Por ejemplo la dirección 10.10.0.255.10.255 (inversa.0 (normal) = 0.0 0.10.255 con una máscara normal 255.11111111 Dirección Máscara Esta condición selecciona las direcciones que comprenden desde la 10.0.255.00000000.10.00001010.x.00000000 00000000. al pasar a binario la dirección y la máscara podemos ver qué parte de la dirección será tenida en cuenta a la hora de determinar si un paquete concreto cumple la condición (puede usar la calculadora de Windows en modo Científico para ayudarse al convertir entre decimal y binario): Tabla 2. la condición 10.0. Junto con las direcciones se especifican máscaras que permiten identificar la parte de la dirección que debe coincidir exactamente y la parte que puede ser ignorada Las máscaras de las listas de acceso son distintas a las máscaras de red y subred utilizadas para configurar interfaces o rutas estáticas.10.255. comodín) El uso adecuado de las máscaras comodín puede ayudarnos a seleccionar subconjuntos de direcciones.0.254 si que cumpliría las condiciones especificadas por la condición del ejemplo.10. Las máscara inversa de las listas de acceso también puede ser determinada sustrayendo la máscara normal de la máscara 255.255.10. Direcciones y Máscaras comodín.255.255.10.255. tal como se indican los ceros de la máscara para este tercer octeto) pero la dirección 10. mientras que los unos significan que el bit correspondiente de la dirección no ha de ser tenido en cuenta a la hora de decidir si la condición se cumple. y este tercer byte es relevante. En el ejemplo. En el siguiente ejemplo queremos crear una lista de acceso capaz de seleccionar las redes Tabla 3. .255 Binario 00001010.10.

1.00000000/11111111.11111111.34.00000000/11111111.00000000 10.0/24 00001010.1.00100000.00100101.00100001.11111111.32.1.00000000 (usando para construirla los bits comunes a todas las subredes y el resto a cero). separando las partes variables de las fijas 32 33 34 35 36 37 38 39 00100 000 00100 001 00100 010 00100 011 00100 100 00100 101 00100 110 00100 111 00000 111 podemos observar que la parte común a todas estas direcciones es la que comprende los cinco bits de la derecha (los que ponemos a cero en la última fila.00100100.00000000 10.10.0/24 00001010.00100000.11111111.00000000/11111111.0/24 00001010.0/24 00001010. * * * Y ahora.00000001.00000000 10.33. La dirección de red que comprende las subredes del ejemplo será en binario 00001010.00000000 10.00000001.00100010.1.00000001. Para el conjunto de redes de nuestro ejemplo la máscara 0.00000000 10.11111111.0/24 00001010.00000000 10.11111111.00100000.00000000/11111111.7. ¿cómo se traduce esto en la práctica? .00000001.11111111.11111111.11111111.11111111.11111111 El valor del tercer octeto de la máscara es en este caso 00000111.00000001.11111111.00000000 10.1.00000000.1.11111111.00000001.0/24 00001010.00000000/11111111.35.00100110.11111111. Construiremos la máscara inversa o comodín usando ceros para la parte que queremos seleccionar y unos para la que nos es indiferente que cambie: 00001010.0/24 00001010.00000000/11111111.00000001.37.38. Si examinamos la columna correspondiente al mismo en su forma binaria.00000000/11111111.0/24 00001010. y pasado a decimal es 7.11111111.00100011.11111111.1.11111111.11111111.00000000/11111111.00100111.39.00000111.00000000 00000000.255 es capaz de seleccionar todas las subredes.0.00000001.00000001.1.36.00000000 Está claro que la diferencia radica en el tercer octeto.00000001.

10 en lugar de access-list permit 192. host y any. la máscara inversa wildcard se calcula wildcard = 255 . que ya veremos en alguna otra ocasión como también son utilizadas en la configuración de los protocolos de enrutamiento OSPF y EIGRP) Tabla 4.0 La palabra clave any se usa como atajo para especificar cualquier dirección: access-list 10 deny any II. A continuación expondremos unos ejemplos de listas de acceso que demuestran su uso en la práctica.0.Máscara de Subred En definitiva.168.10 0.0. buscaremos la máscara de red (o subred) que mejor recoja la condición que queremos especificar y usaremos la fórmula anterior o una tabla como la 4 para convertir de la máscara directa (la normal.5. APLICACIONES PRACTICAS DE LAS LISTAS DE ACCESO Basta de teoría.Por si no ha quedado suficientemente claro. Transformación de las máscaras de red en máscaras inversas.5. La máscara 255 254 252 248 240 224 192 128 0 11111111 11111110 11111100 11111000 11110000 11100000 11000000 10000000 00000000 se transforma en la máscara inversa (wildcard) 0 00000000 1 00000001 3 00000011 7 00000111 15 00001111 31 00011111 63 00111111 127 01111111 255 11111111 Terminaremos presentando dos palabras clave bastante útiles a la hora de especificar ciertas máscaras de uso muy corriente. La configuración de listas de acceso consta de dos dos pasos: . Por ejemplo access-list permit host 192.168. La palabra clave host se usa como atajo para especificar una dirección única (la de una máquina específica). la que usamos para configurar interfaces o rutas estáticas) en una máscara inversa (el complemento de la máscara normal.

208.0 access-list 1 permit any La última línea es fundamental.1.1/24 CONTROL SENCILLO DE TRAFICO MEDIANTE LISTAS DE ACCESO Queremos filtrar en el router B aquellos paquetes que provienen de las máquinas 10.35.0.60.172. Siempre tiene que haber una condición permit en una lista (si queremos que deje pasar algo)..0.25 access-list 1 permit any .60.0. pertenecientes a la red local del router A access-list 1 deny 10.35.25.60.0.60.0 denegaría todo.60. en general.208. de forma que la lista access-list 1 deny 10. debido a una especial característica de las listas de acceso: siempre añaden de forma automática una denegación implícita del total (un deny any).0 access-list 1 deny 10.208.208.60.35.1..0.1.46/30 --WAN LINK-.10 0.Aplicarla en la interfaz correspondiente (o.172.0 access-list 1 deny 10.Crear la lista de acceso 2.35.208.1.25 0.60.208. utilizarla en el proceso deseado) Para muchos de los ejemplos IP usaremos la siguiente red: Concretamente asignaremos las siguientes direcciones IPs por interfaz: 10.10 access-list 1 deny host 10.1/24 eth ---[router A]--.0. Por cierto.10 y 10.50/30 se0 ---[router C]--.49/30 --WAN LINK-.208.10 0.se0 172.se1 172.1.60. podemos configurar lo anterior de una forma más compacta mediante el uso de host: access-list 1 deny host 10.48.eth 10.0.208.45/30 se0 ---[router B]--.208.208.60.0.25 0.

reset y loopback: Puede llamar a la delegación remota y pedir que reinicien el router (Manolo de seguridad puede darle sin problemas el botonazo al "vídeo oscuro" del rack de la sala de comunicaciones).. Puede ver como anda de tiempo con show reload. aplicaremos el filtro a los paquetes que cumplan la condición de la lista de acceso 1 pero sólo chequearemos contra esta lista los paquetes que entran al router B por la interfaz serial 0. por ejemplo reload in 5 (que reinicia el router a los 5 minutos) o reload at 22:15 (que reinicia el equipo a la hora especificada). Cuando le pase no se lo tome a mal.Las listas de acceso sólo chequean los paquetes que pasan por la interfaz donde están aplicadas y sólo en el sentido en el que están aplicadas. El router le avisará un minuto antes del reinicio.10 y 10. Con las listas de acceso se filtra el tráfico: los efectos de las listas de acceso en la practica son bastante potentes.. La situación tiene varios remedios que se me ocurran de primeras: reload. e incluso si pasan por la interfaz serial0 en sentido saliente. esto es.60. La lista anterior dejaría pasar paquetes con origen en las máquinas 10. Lo de entrante (in) o saliente (out) es siempre desde el punto de vista del router donde se aplica la lista. u olvidarse de dar paso a los paquetes con origen la red local desde la que gestiona el equipo. más bien siéntase parte de la corporación: quedarse sin gestión de un equipo en red forma parte del folklore.208. haga sus cambios y cancele el reinicio con reload cancel. Quedará con la configuración que tenía la última vez que se grabó con write o con copy running startup.Vamos a aplicar la lista de acceso 1 en la interfaz serial 0 del router B. Por supuesto habrá perdido las últimas configuraciones realizadas. Para aplicar la lista de acceso se usa la órden accessgroup en la interfaz adecuada: interface serial 0 ip access-group 1 in Dos ideas muy importantes: 1. y los usuarios que se ven afectados por ellas lo manifestarán sin duda de formas muy claras. Recuerde que si aplica una lista de acceso en una interfaz que le está dando en ese momento a Usted acceso al router (un caso típico. dado que los routers son equipos de red y generalmente se gestionan de forma remota) se la "está jugando": es muy fácil crear una lista de acceso que filtre más de la cuenta. Nada más aplicar la lista el router le echará. Programe un reload. Consulte la documentación de su versión de IOS .25 si estos paquetes pasan por cualquier otra interfaz del router en cuelquier sentido. Una segunda alternativa es el uso de la orden de IOS reload in o reload at. Antes de continuar con el resto de ejemplo de uso de las listas acceso vamos a ver una serie de indicaciones acerca de su manipulación práctica MANIPULACION DE LAS LISTAS DE ACCESO Esto se puede leer también como "consejos desde la trinchera".Necesitamos al menos una condición permit para dejar pasar paquetes 2. Lo haremos "de entrada".60.208.

10 access-list 1 deny host 10..60. lo que no es exactamente lo que teníamos pensado (no access-list 1 deny 10. aunque inexistente.12.para ver más detalles sobre el uso de esta instrucción.208. En próximos artículos abordaré este tipo de técnicas.208.60.208. sigue aplicada en la interfaz. Osea. porque la lista. que si configuro access-list 1 deny host 10. da igual lo que yo le diga: hasta que no lo experimente Ud.60. por que la lista de acceso 1 queda access-list 1 deny host 10. borramos la lista entera (y mucho ojo. En general.10 access-list 1 deny host 10.12 con un deny any implicito a continuación. Cree la lista con un editor de texto y copiela en el router una vez creada C.. es mejor escribir las listas en un editor de texto tipo vi o notepad y copiar/pegar las configuraciones en el router.208. siendo una de las más importantes que al borrar una línea (una condición) de una lista de acceso.60. Esto es por varias razones. Aplique (o vuelva a aplicar) la lista en la interfaz. no?) y hacer un telnet extendido (telnet ip_router /source-interface loopback_número). La tercera vía es algo más sofisticada. línea o dónde sea que la estemos usando). por ejemplo para dejar pasar los paquetes con origen en la LAN del router A hostname RouterB ! . Pero créame. Desaplique la lista de donde está en uso (evidentemente.60.10 equivale a no access-list 1 que equivale a borrar la lista entera).25 access-list 1 permit any y me doy cuenta de que no quiero filtrar a Juan de contabilidad 10. puede crear una interfaz virtual (loopback interface) con una dirección de las que permite la lista de acceso (porque. esto sólo es de apliación si la lista ya está en uso) B. Antes de hacer cambios: A. Sin entrar en muchos detalles. sabiendo la lista configurada. ¿puso un permit.60.208.208.10 sino a Julio de recursos humanos 10.60.208.12 y ahí comienzan los problemas. mismo no verá porqué hay que hacerlo de esta manera. OTRAS POSIBILIDADES DE LAS LISTAS DE ACCESO Podemos realizar un filtrado extendido. línea o proceso donde tenga pensado usarla. voy y configuro no access-list 1 deny host 10.60.208.

Podemos filtrar todas estas líneas y puertos por medio de la instrucción access-class. A veces podemos ser víctimas de un ataque de denegación de servicio distribuido. el puerto Auxiliar (AUX) y las líneas Asíncronas (ASYNC).0. por ejemplo.60.60.48.208.0. tales como las líneas virtuales (VTY).0 0.0.255 access−list 20 deny any ! line vty 0 4 access-class 20 in login Si queremos filtar el acceso Telnet (puerto 23) al routerC: hostname RouterC ! interface serial0 ip access−group 105 in ! access−list 105 deny tcp any any eq 23 access−list 105 permit ip any any Digamos que queremos dejar navegar por internet . Probemos con hostname RouterC ! interface serial0 ip access−group 130 in ! access−list 130 deny icmp any any . el puerto de consola (CON).0 0.255 10.208. La siguiente lista permite el acceso por los cinco terminales virtuales (del 0 al 4) a aquellas máquinas que tengan por origen la LAN de A access−list 20 permit 10.0.0 0.interface ethernet0 ip access−group 101 in ! access−list 101 permit ip 10. Podemos ser inundados con peticiones ping (ICMP) de muy diversos origenes.208.0. hacer telnet y el correo: hostname RouterB ! interface Serial0 ip access−group 120 in ! access−list 120 permit tcp any any eq www access−list 120 permit tcp any any eq telnet access−list 120 permit tcp any any eq smtp access−list 120 permit tcp any any pop3 Una lista como la anterior no dejaría pasar el tráfico ftp.0.255 Con la orden show line puede ver las líneas de acceso al router.

quizás un poco excesivo. ¿Cómo? access-list 120 permit ip 10.0.0.208.. Podemos convertir el router en un analizador de tráfico con un par de instrucciones: hostname RouterB ! interface serial0 ip access−group 140 in ip access−group 150 out ! access−list 140 permit ip any any log access−list 150 permit ip any any log Este era el mecanismo usado en el artículo sobre ping para ver el origen y destino de los paquetes. porque estas miran el destino. no el origen de los paquetes) ¿Puede hacerse? Si. Veamos más usos: A veces queremos que en función del origen los paquetes vayan por una ruta (es distinto a usar rutas estáticas..access−list 130 permit ip any any Un uso muy interesante es el de la instrucción log. si ponemos access−list 130 deny icmp any any log access−list 130 permit ip any any Quedarán registrados en el log del router (show logg) todos los origenes y destinos de los paquetes que encajan con la condición. Más ejemplos: con listas de acceso horarias podemos controlar el uso de determinados servicios en función de la hora time-range bloquear-internet periodic weekdays 8:30 to 17:45 ! access−list 150 deny any any eq www time-range bloquear-internet access−list 150 permit any any ! interface ethernet0 ip access−group 150 in Vaya.255 any ! route-map AL_FIREWALL permit 10 match ip address 120 set ip next-hop 10.0 0.15 ! interface serial 0 ip policy route-map AL_FIREWALL Las listas de acceso sirven también para especificar el tráfico interesante capaz de lanzar .48.208.60.

que en nuestro caso permite lanzar aquellas llamadas que cumplan con la condición expresada en la lista de acceso 8 Otra interesante aplicación es el uso de listas de acceso en la redistribución de rutas entre protocolos de enrutamiento. Una vez que un conjunto de paquetes ha sido seleccionado el router puede realizar diversas tareas sobre ellos. RESUMEN Las listas de acceso son el mecanismo por excelencia para seleccionar tráfico.254 152. Es mi intención abordarlo de forma específica en próximos artículos.254 netmask 255. por ejemplo interface Dialer1 dialer-group 1 ! dialer-list 1 protocol ip list 8 La instrucción dialer-group 1 conecta con la orden dialer-list 1. el uso ajustado de la orden debug y el filtrado dinámico (con estado) de sesiones.58.24. pero de momento veamos como mediante el uso de listas de acceso se especifica el origen de los paquetes a traducir.58.24. El proceso de configuración de listas de acceso consta de . y serán traducidos a una dirección del pool denominado TRADUCCION (que consta de una única dirección "pública". la IP 152.255. en nuestro ejemplo se procesarán mediante NAT los paquetes que encajen con la lista de acceso 9. Por ejemplo. Uno de los usos más extendidos de las listas de acceso es el de controlar el flujo de tráfico entrante y saliente de un router.24. Veremos en próximos artículos algunos de estos usos.255. pero hemos visto otras muchas aplicaciones prácticas.una llamada bajo demanda tipo RDSI.254): ip nat pool TRADUCCION 152. la siguiente configuración propagará junto con los anuncios de enrutamiento EIGRP las rutas estáticas configuradas en el router que encajen con la condición expresada en la lista de acceso 10: router eigrp 1 redistribute static route-map filtro ! route-map filtro permit 10 match ip address 10 Sobre el protocolo de traducción de direcciones NAT (Network Address Translation) se podría escribir un libro entero.58.0 ip nat inside source list 9 pool TRADUCCION ! interface ethernet 0 ip nat inside ! interface serial 0 ip nat outside Otras aplicaciones interesantes de las listas de acceso son la priorización por protocolo.

Hay que tomar unas precauciones generales a la hora de aplicar listas de acceso. en el proceso deseado).dos pasos generales. reset y loopback . Hemos mencionado tres mecanismos para prvenir o corregir los problemas derivados de una mala configuración. de forma más general. la creación de la lista de acceso en sí y su aplicación en la interfaz correspondiente (o. recuerde: reload.