# Listas de control de acceso en routers CISCO.

## Listas de control de acceso.

Las ACL son listas con reglas.
Cada regla define una condición que puede cumplir un paquete.
Cada regla define una acción(permit,deny) a ejecutar sobre el paquete que cumpla su condición. Siempre hay una regla al final que desecha cualquier paquete.

### Numeración.

Se identifican por un número:

- Estándar:
  - 1 a 99
  - 1300 a 1999
- Ampliadas:
  - 100 a 199
  - 2000 a 2699

En versiones recientes de IOS (11.2) se pueden usar también nombres de ACL. Una interfaz puede tener una ACL asociada en cada sentido.

- Entrada de paquetes (Inbound).
- Salida de paquetes (Outbound).

## Procesamiento de ACL

Al llegar un paquete:

- Si la interfaz no tiene ACL de entrada, se acepta.
- Si tiene ACL, se revisan las reglas de la lista.
  - Se comprueba en orden
  - Si alguna deniega el paquete, se rechaza.
  - Si alguna acepta el paquete, se acepta.
  - Si ninguna se aplica al paquete, se rechaza.

Antes de enviar un paquete:

- Si la interfaz no tiene ACL de salida, se envía.
- Si tiene ACL, se revisan las reglas de la lista:
  - Se comprueban en orden.
  - Si alguna deniega el paquete, se desecha.
  - Si alguna acepta el paquete, se envía.
  - Si ninguna se aplica al paquete, se desecha.

## Comandos útiles.

Una vez creada una ACL es necesario:
- Asignar y desasignar ACL a interfaces.
- Borrar y consultar ACl creadas.

### Borrar una ACL

> `no access-list X`

### Mostrar las ACL existentes.

> `show ip access-list`

### ACL asociada a una interfaz.

> `show ip interface <interfaz>`

Es necesario mirar el apartado Inbound y Outbound

### Asociar una ACL a una interfaz.

> `interface <interfaz> ip access-group <numero ACL> <out o in>`

### Eliminar una ACL de una interfaz.

> `interface <interfsaz> no ip access-group <numero ACL> < in o out>`

## ACL estándar.

> `access-list access-list-number {permit|deny} {host|source source-wildcard|any}`

Solo hacen referencia a las direcciones IP de origen.
Se puede especificar:

- Una Red: Se especifica con IP y WILDCARD (no IP y máscara). El WILDCARD es la máscara de red con ceros y unos invertidos. Ejemplo:
  La red 192.168.1.0/24 se especifica como

  > `192.168.1.0 0.0.0.255`

- Una dirección IP. las sigueintes especificaciones son equivalentes:

  > `192.168.1.1 192.168.1.1 0.0.0.0`

- Todas las direcciones:Las sigueintes especificaciones son equivalentes:

  > `any 0.0.0.0 255.255.255.255`

Ejemplo: No dejar pasar el tráfico con origen en la red 192.168.1.0/8

> `access-list 0 deny 192.168.1.0 0.0.0.255`

### Ejercicio

Se desea que la red 10.0.0.0/15 no sea enrutada, excepto el equipo 10..1.1, que es del administrador.

#### Solución propuesta.

Se leige un número libre de ACL (1, por ej.).
Se introducen en orden todas las reglas de la ACL
Se recomienda hacer explícita la regla final de denegación.
El resultado es:

> `

>         - Permitir el host de admin (10.0.1.1)
>         access-list 1 permit host 10.0.1.1
>         - Prohibir la red 10.0.0.0/15
>         access-list  deny 10.0.0.0 0.1.255.255
>         - Permitirel resto de redes
>         access-list 1 permit any
>         - Explicitar la regla final de denegación.
>         access-list 1 deny any
>         - Asociar esta ACL a la interfaz de entrada de la red 10.0.0.0/15
>         interface Fa0/0
>         ip access-group 1 in

> `

## ACL Ampliadas.

Pueden hacer referencia a otras características del paquete:

- Dirección de origen y destino
- ProtocoloICMP,TCP o UDP
- Puerto
- Conexión previamente establecida

### Operadores (para puertos TCP/UDP).

Operador | Segnificado
eq | = igual
lt | < Menor
ne | ≠ No igual
gt | > Mayor

### IP

Ejemplo: Prohibir el tráfico hacia la red 172.16.0.0/12

> `access-list 101 deny ip any 172.16.0.0 0.0.15.255`

### Protoclo de mensajes de control de Internet (ICMP)

ccess-list access-list-number [dynamic dynamic-name [timeout minutes]] {deny | permit} icmp source source-wildcard destination destination-wildcard [icmp-type [icmp-code] | [icmp-message]] [precedenceprecedence] [tos tos] [log | log-input] [time-range time-range-name][fragments]

### Protoclo de control de transporte (TCP)

Ejemplo: Permite ek protocolo TCP desde la red 192.16.3.0/24 con puerto de origen 21 hacia la red 172.16.1.0/24.

> `access-list 101 permit tcp 172.16.3.0 0.0.0.255 eq 21 172.16.1.0 0.0.0.255`

Ejemplo 2: Permite la comunicación TCP hacia la red 10.0.0.0/8 si ya se ha establecido conexión(la red 10.0.0.0/8 es la que tiene el cliente).

> `access-list 102 permittcp any 10.0.0.0 0.0.0.255 established`

### Protoclo de datagrama de usuario (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][fragments]

## Proceso de definición de ACL's.

Para definir las ACL de un router es necesario: Determinar las interfaces del router. Pos cada interfaz:

- Determinar qué tráfico será permitido
- Determinar qué tráfico debe ser prohibido
- Ordenar las reglas para que no entren en conflicto.

Es posible que se generen reglas redundantes. Pueden eliminarse, teniendo en cuenta que el tráfico prohibido es mejor eliminarlo cuanto antes de la red.