Unicast Reverse Path Forwarding, consiste en un mecanismo por el cual se comprueba que la interfaz por la que se recibe unos paquetes sea la interfaz por la que según la tabla de rutas puedo alcanzar esa red. En caso contrario deniego los paquetes.
Esto sirve para evitar ataques basados en spoofing, según los cuales recibo peticiones para que responda a una red interna, y me dedico a “bombardear” esa red interna, sin comprobar que los paquetes no me estan viniendo desde dentro.
Como se puede ver en el gráfico, un router tiene varias LAN consideradas internas, y una conexión a intenet, desde internet se lanzan paquetes contra el router con una dirección ip de destino 10.0.0.33, y con dirección de origen 192.168.1.34. El caso es que según los filtros del router/firewall el tráfico entre esas dos redes esta permitido, por lo que los paquetes pasan, y el resultao de todo esto es que los equipos de la LAN 1, y la LAN 2 estarán constantemente mandándose paquetes de SYN ACK y RESET con el correspondiente aumento de CPU, que llegado el caso puede causar una denegación de servicio.
En el segundo gráfico el router/firewall usa URPF, y como el tráfico viene de un origen que no corresponde a lo que tenemos en la tabla de rutas se deniega el tráfico.
Router(config-if)#ip verify unicast source reachable-via rx <----configura uRPF en una interfaz
Si además quiero que me guarde en el log los paquetes denegados, debería hacer una ACL con log y asignarla al uRPF.
access-list 127 deny ip any any log
Router(config-if)#ip verify unicast source reachable-via rx 127 <---- El 127 es la ACL de arriba
La parte "mala" de URPF es que no permite tráficos asimétricos, por lo que si las tablas de routing de los equipos no coinciden para la ida y la vuelta del tráfico, es posible que haya tráfico que se deniegue.