Um dos meus clientes de transporte público BGP me pediu uma solução para facilitar o tráfego de buracos na nossa rede quando ele está sofrendo ataques DDoS. Normalmente, o BGP blackholing é feito blackholing no alvo , no entanto, meu cliente está procurando uma solução para o blackhole com base no endereço de origem, para que o alvo do ataque não seja colocado offline.
Construir uma solução blackhole com base no endereço de destino não é tão difícil: basta que o cliente anuncie o destino como uma rota mais específica por meio de uma sessão separada do BGP ou faça com que ele o marque com uma comunidade específica e use uma política de roteamento para definir o caminho. próximo salto para alguma interface de descarte.
Construir uma solução blackhole onde as fontes do ataque (que não estão dentro do espaço IP do cliente) são destruídas parece um pouco mais difícil. Se eu usasse a mesma solução para filtrar destinos, meu problema é que só quero descartar o tráfego de fontes específicas para esse cliente específico, portanto, inserir rotas de descarte na minha tabela de roteamento não é mais aceitável, pois afetaria outros clientes como bem. Então, preciso de uma maneira de criar um filtro que se aplique apenas a esse cliente específico.
A primeira solução em que eu estava pensando era usar o BGPFlowspec. Infelizmente, isso não funcionará para esse cliente específico, pois o equipamento dele não é compatível.
Então, o que eu procurava é uma maneira de criar um filtro de firewall dinâmico com base em alguma propriedade de roteamento, provavelmente uma comunidade definida por nosso cliente ou por nós ao receber uma rota específica por meio de uma sessão dedicada do BGP blackhole. Esse filtro pode ser aplicado nas interfaces do cliente para bloquear o tráfego indesejado. Infelizmente, não encontrei uma maneira fácil de criar um filtro de firewall (ou lista de prefixos) dessa maneira.
Eu encontrei http://thomas.mangin.com/posts/bgp-firewall.html , que 'utiliza indevidamente' o SCU / DCU para alcançar mais ou menos o que estou procurando, mas soa como um hack .
Uma das outras soluções em que posso pensar é criar um filtro estático em nossas rotas e criar uma interface que permita ao cliente modificar a lista de prefixos usada por esse filtro. No entanto, enviar alterações de configuração nos meus roteadores toda vez que o cliente deseja adicionar um buraco negro não é realmente o que eu quero. Alguma solução usando BGP seria preferida.
Do nosso lado, o roteamento é feito no Juniper, para uma solução, eu preferiria ter algo que possa ser usado em uma variedade de plataformas; portanto, basicamente devemos usar o BGP por meio de uma sessão separada ou rotear rotas por uma comunidade específica. Dessa forma, também posso usá-lo para outros clientes.
Estou realmente interessado se alguém tiver uma boa solução para isso (além da SCU / DCU).
fonte
Respostas:
A GRNET (rede grega de pesquisa e educação) desenvolveu um aplicativo da Web para os clientes fazerem isso com a Flowspec. O portal da web possui um back-end BGP Flowspec que injeta o flowpec na sua rede. Altamente configurável e em uso no backbone pan-europeu GEANT de 500-1.000 Gbps: https://www.noc.grnet.gr/en/fod
fonte
Para (finalmente) responder minha própria pergunta:
Isso não é possível da maneira que eu quero implementar isso com as versões atualmente suportadas do JunOS. Sim, existem outras maneiras de atingir a meta, como mencionado na outra resposta e nos comentários, mas minha pergunta específica era ser capaz de sinalizar blackholing usando uma sessão do BGP.
fonte
A criação dinâmica de regras de firewall não é apenas para redirecionar o tráfego para um blachole, mas também para permitir que o tráfego entre datacenters, empresas e intranet distribuído geograficamente, tenha políticas de firewall definidas com abstração de IP, usando alguma rotulagem no roteamento dinâmico para preencher objetos de firewall e, em seguida, permitir o controle do tráfego. Procurei uma solução como essa há alguns anos com o Juniper, mas não tive nenhum feedback. Existem alguns scripts no Junos que podem ajudar no assunto, mas a população de objetos não foi completamente concluída em resposta ao roteamento de eventos de troca. Também não havia a possibilidade de marcar rotas diretas para classificá-las de acordo com as necessidades:
O FlowSpec pode ser uma ajuda e um firewall que pode se conectar diretamente ao núcleo dos mpls, pois um PE também seria uma ajuda. Alguém sabe sobre essa solução?
fonte