O RPF (Unicast Reverse Path Forwarding) funciona em três modos distintos e pode ajudar a reduzir o vetor de ataque de um roteador, especificamente a partir de endereços IP falsificados.
modo estrito
(config-if)#ip verify unicast source reachable-via rx
No modo estrito, um roteador inspeciona e verifica o endereço IP de origem de um pacote recebido em sua tabela FIB (Forwarding Information Base) para uma rota correspondente. Se a rota para esse endereço IP de origem estiver acessível através da interface em que foi recebida , o pacote será recebido. Por padrão, uma rota padrão não é considerada no modo estrito (conforme configurado acima).
Opções de modo estrito:
Após a configuração do modo estrito Unicast RPF em uma determinada interface, um roteador não pode mais executar ping nessa interface:
#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)
Verificação de pacotes 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
Esse comportamento pode ser alterado adicionando a allow-self-ping
sintaxe:
(config-if)#ip verify unicast source reachable-via rx allow-self-ping
Além disso, como mencionado na sua pergunta, o modo estrito pode permitir que os endereços IP de origem dos pacotes recebidos sejam verificados em relação a uma rota padrão. Isso é ativado pela sintaxe allow-default
:
No modo estrito, adicionar a sintaxe allow-default
por si só impedirá o recebimento do endereço IP de origem do pacote recebido que tenha uma rota através de uma interface diferente da recebida. Isso pressupõe que não haja listas de acesso ou rotas nulas configuradas no roteador. Todos os endereços de origem roteáveis acessíveis pela interface recebida corresponderão a rotas específicas ou à rota padrão.
No entanto, se você empregar rotas nulas, a rota mais específica será avaliada primeiro, antes que a verificação URPF chegue à rota padrão e atuará como uma lista negra de intervalos de IP maliciosos conhecidos.
Exemplo - Todo o tráfego originado de 3.0.0.0/8 será eliminado pela verificação 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)
Além disso, você pode especificar uma lista de controle de acesso (ACL) em vez de adicionar a allow-default
sintaxe para realizar uma lista estruturada de endereços permitidos e negados. Os endereços acessíveis pela interface em que foram recebidos e correspondentes a uma ACL definida são descartados ou permitidos.
!
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
Por fim, você pode especificar uma ACL com a allow-default
sintaxe, mas ela não terá efeito. Os pacotes não serão verificados em relação às ACLs especificadas com a allow-default
opção
#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 solto
R1(config-if)#ip verify unicast source reachable-via any
No modo loose, um roteador inspeciona o endereço IP de origem de um pacote recebido e verifica se há uma rota correspondente na tabela FIB. Se a rota para esse endereço IP de origem estiver acessível, o pacote poderá ser recebido, independentemente da interface em que foi recebido. Por padrão, uma rota padrão não é considerada no modo frouxo (como configurado acima).
O modo frouxo e o modo estrito têm opções de configuração semelhantes; As principais diferenças são a sintaxe usada ( any
vs. rx
) e se o endereço IP de origem do pacote recebido é alcançável ou não através da interface em que foi recebido.
(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
O modo VRF pode alavancar o modo frouxo ou estrito em um determinado VRF e avaliará o endereço IP de origem do pacote recebido em relação à tabela VRF configurada para um vizinho eBGP.
Referências:
White paper da Cisco URPF
Noções básicas sobre o encaminhamento de caminho reverso unicast
Guia de configuração do URPF