Unicast RPF en el borde

10

Se supone que el RPF de unidifusión impide direcciones de origen que difieren de lo que deberían permitirse. Mientras leía la documentación de Cisco para URPF, noté que hay opciones para permitir que se use en una interfaz de enlace ascendente dejándola pasar por la tabla de enrutamiento.

Mi pregunta es, si va por una ruta predeterminada, ¿no se permitirían todas las direcciones de origen? ¿Qué beneficio estaría haciendo URPF en ese momento?

Estoy seguro de que me falta algo, así que realmente me gustaría un punto en la dirección correcta.

codey
fuente

Respuestas:

15

El reenvío de ruta inversa de unidifusión (RPF) funciona en tres modos distintos y puede ayudar a reducir el vector de ataque de un enrutador, específicamente de direcciones IP falsificadas.

Modo estricto

(config-if)#ip verify unicast source reachable-via rx

En modo estricto, un enrutador inspeccionará y verificará la dirección IP de origen de un paquete entrante contra su tabla Base de información de reenvío (FIB) para encontrar una ruta coincidente. Si se puede acceder a la ruta a esa dirección IP de origen a través de la interfaz en la que se recibió , se recibirá el paquete. Por defecto, una ruta predeterminada no se considera en modo estricto (como se configuró anteriormente).

Opciones de modo estricto:

Después de la configuración del modo estricto Unicast RPF en una interfaz determinada, un enrutador ya no puede hacer ping en esa interfaz:

#sh ip int bri | ex unas|Int
FastEthernet0/0            11.0.11.1

#ping 11.0.11.1                                    
.....
Success rate is 0 percent (0/5)

Verificación de los paquetes descartados URPF:

#show ip int fa0/0 | i ^  [1-9]+ verification drops
     5 verification drops
#show ip traffic | i unicast
     0 no route, 5 unicast RPF, 0 forced drop

Este comportamiento puede modificarse agregando la allow-self-pingsintaxis:

(config-if)#ip verify unicast source reachable-via rx allow-self-ping

Además, como se mencionó en su pregunta, el modo estricto puede permitir que las direcciones IP de origen del paquete entrante se verifiquen con una ruta predeterminada. Esto está habilitado por la sintaxis allow-default:

En modo estricto, agregar la sintaxis allow-defaultpor sí sola solo evitará la recepción de la dirección IP de origen del paquete entrante que tenga una ruta a través de una interfaz diferente a la recibida. Esto supone que no hay listas de acceso o rutas nulas configuradas en el enrutador. Todas las direcciones de origen enrutables a las que se puede acceder desde la interfaz que reciben coincidirán con rutas específicas o con la ruta predeterminada.

Sin embargo, si fuera a emplear rutas nulas, la ruta más específica se evaluará primero, antes de que la verificación URPF llegue a la ruta predeterminada, y actuará como una lista negra para los rangos de IP maliciosos conocidos.

Ejemplo: todo el tráfico procedente de 3.0.0.0/8 se eliminará mediante la verificación URPF:

(config-if)#ip verify unicast source reachable-via rx allow-default
(config)#ip route 3.0.0.0 255.0.0.0 null 0

Bad-Source-RTR#ping 11.0.11.1 so l1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 11.0.11.1, timeout is 2 seconds:
Packet sent with a source address of 3.3.3.3 
.....
Success rate is 0 percent (0/5)

Además, puede especificar una Lista de control de acceso (ACL) en lugar de agregar la allow-defaultsintaxis para lograr una lista estructurada de direcciones permitidas y denegadas. Las direcciones a las que se puede acceder desde la interfaz en la que se recibieron y que coinciden en una ACL definida se descartan o se permiten en consecuencia.

!
access-list 23 permit 3.0.0.0 0.255.255.255
access-list 23 deny   4.0.0.0 0.255.255.255 log
access-list 23 permit any
!
(config)#int fa0/0                                 
(config-if)#ip verify unicast source reachable-via rx 23

Finalmente, puede especificar una ACL con la allow-defaultsintaxis, pero no tendrá ningún efecto. Los paquetes no se verificarán con las ACL especificadas con la allow-defaultopción.

#ip verify unicast source reachable-via rx allow-default ? 
  <1-199>          A standard IP access list number
  <1300-2699>      A standard IP expanded access list number

Modo suelto

R1(config-if)#ip verify unicast source reachable-via any

En modo suelto, un enrutador inspeccionará la dirección IP de origen de un paquete entrante y lo comparará con su tabla FIB para encontrar una ruta coincidente. Si se puede acceder a la ruta a esa dirección IP de origen, se puede recibir el paquete, independientemente de la interfaz en la que se recibió. Por defecto, una ruta predeterminada no se considera en modo suelto (como se configuró anteriormente).

El modo suelto y el modo estricto tienen opciones de configuración similares; Las principales diferencias son la sintaxis que se usa ( anyvs. rx) y si la dirección IP de origen del paquete entrante es accesible a través de la interfaz en la que se recibió.

(config-if)#ip verify unicast source reachable-via any ?
  <1-199>          A standard IP access list number
  <1300-2699>      A standard IP expanded access list number
  allow-default    Allow default route to match when checking source address
  allow-self-ping  Allow router to ping itself (opens vulnerability in
                   verification)

Modo VRF

El modo VRF puede aprovechar el modo suelto o estricto en un VRF dado y evaluará la dirección IP de origen de un paquete entrante contra la tabla VRF configurada para un vecino eBGP.


Referencias:
Libro blanco de Cisco URPF
Descripción de la guía de configuración de URPF de reenvío de ruta inversa de unidifusión

una vez
fuente
¿Qué pasa con la aplicación práctica? ¿Realmente tiene sentido / una diferencia ponerlo en su enlace ascendente?
codey
3
@codey No ejecutaría uRPF en el enlace ascendente, solo en las interfaces orientadas al cliente. one.time, +1, buen trabajo, respuestas sólidas, me gustaría señalar que la ruta estática a null0 en algunas plataformas que no son de Cisco no hará que falle el modo 'flojo'. Tal vez en lugar de 'respondido' debería usar 'recibir', es decir, no se recibirán los paquetes con fallas RPF. También tal vez 'contra la tabla de enrutamiento' (RIB) debería cambiarse a 'contra la tabla de enrutamiento' (FIB). Dado que hay un sabor de uRPF llamado 'factible suelto / estricto', que verifica contra RIB (Cisco no lo admite, solo verifican contra FIB).
ytti
@ytti Cuando miré los documentos de Cisco, simplemente dijo en contra de la tabla de enrutamiento. No digo que sea correcto, pero extraño que lo digan si fuera solo la FIB.
codey
Imagine un caso en el que el cliente anunció el prefijo BGP 192.0.2.0/24, también tiene una ruta estática para este apuntando al núcleo. Si la interfaz del cliente tiene uRPF / estricto, descartará los paquetes del cliente que tenga la dirección de origen 192.0.2.42, aunque en RIB (tabla de enrutamiento) esta entrada existe, simplemente no es / best / entry, y en consecuencia no está en FIB. Sin embargo, si ejecuta el paquete 'uRPF / estrictamente factible', no se descartará (JunOS lo admite, por lo que sus documentos proporcionarán información adicional).
ytti