RPF de difusão ponto a ponto

10

O RPF de difusão ponto a ponto deve impedir que endereços de origem diferentes do que deveriam ser permitidos. Ao ler a documentação da Cisco para URPF, notei que existem opções para permitir que ela seja usada em uma interface de uplink, deixando-a passar pela tabela de roteamento.

Minha pergunta é: se estiver seguindo uma rota padrão, todos os endereços de origem não serão permitidos? Que benefício a URPF estaria fazendo naquele momento?

Tenho certeza de que estou perdendo alguma coisa, então eu realmente gostaria de um ponto na direção certa.

codey
fonte

Respostas:

15

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-pingsintaxe:

(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-defaultpor 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-defaultsintaxe 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-defaultsintaxe, mas ela não terá efeito. Os pacotes não serão verificados em relação às ACLs especificadas com a allow-defaultopçã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 ( anyvs. 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

um tempo
fonte
E a aplicação prática? Realmente faz algum sentido / diferença colocá-lo no seu uplink?
Codey 7/09/13
3
@ codey Eu não executaria o uRPF no uplink, apenas nas interfaces voltadas para o cliente. one.time, +1, bom trabalho, respostas sólidas, gostaria de salientar que a rota estática para null0 em algumas plataformas que não são da Cisco não fará com que o modo 'loose' falhe. Talvez em vez de 'respondido' você deva usar 'receber', ou seja, pacotes com falha no RPF não serão recebidos. Além disso, talvez 'contra a tabela de roteamento' (RIB) deva ser alterado para 'contra a tabela de encaminhamento' (FIB). Como existe um sabor de uRPF chamado 'solto / estrito possível', que é checado contra o RIB (a Cisco não o suporta, eles checam apenas contra o FIB).
ytti 7/09/13
@ytti Quando olhei para os documentos da Cisco, simplesmente dizia contra a tabela de roteamento. Não estou dizendo que isso esteja correto, mas estranho que eles diriam isso se fosse apenas o FIB.
Codev7 set13
Imagine o caso em que o cliente anunciou o prefixo BGP 192.0.2.0/24, você também tem uma rota estática para esse apontar para o núcleo. Se a interface do cliente tiver uRPF / strict, você descartará pacotes do cliente com endereço de origem 192.0.2.42, mesmo que na RIB (tabela de roteamento) essa entrada exista, ela não é a melhor opção / entrada e, consequentemente, não está no FIB. No entanto, se você executar o pacote 'uRPF / estritamente possível' não será descartado (o JunOS suporta viável, portanto, seus documentos fornecerão informações adicionais).
ytti