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).