
tabi — Updated!
Framework para detetar e classificar eventos de sequestro de prefixos IP BGP através do processamento de ficheiros MRT dump, com suporte para múltiplos analisadores de entrada e análise automatizada de conflitos.
Exemplo avançado
Este exemplo demonstra como usar o módulo tabi para detetar todos os possíveis sequestros de BGP vistos a partir de um coletor de BGP.
Requisitos
AVISO: Antes de tentar este exemplo, certifique-se de que tem pelo menos 2GB de memória livre no seu computador.
O procedimento de instalação está descrito no README principal.
Parser de MRT
Este exemplo é compatível com mabo e bgpreader.
Detetar os sequestros
python detect_hijacks.py -c rrc01 -i mabo \
--rpki-roa-file roa.csv \
--irr-ro-file routes.csv \
--irr-mnt-file maintainers.csv \
--irr-org-file organisations.csv \
../../{bview,updates}.*.gz
Este script de exemplo imprime os eventos anómalos que foram detetados pelo módulo tabi. Adicionalmente, tenta filtrar os conflitos que são muito provavelmente legítimos, utilizando os seguintes métodos:
- o anúncio conflituoso é coberto por uma ROA
- o anúncio conflituoso é coberto por um objeto de rota
- existe uma relação administrativa entre os dois AS em conflito
- o
AS_PATHdo sequestrador contém o ASN do AS sequestrado
Estas heurísticas estão documentadas no módulo tabi.annotate.
Interpretar os resultados
Exemplo de atualização
Neste exemplo, o anúncio que atualiza a rota de 2403:8600:ea89::/48 originado pelo AS55441 leva ao provável redirecionamento do tráfego que era inicialmente direcionado para o AS131317. Isto é suspeito porque existem objeto de rota e ROA válidos para a rota original, mas não para a atualização de rota mais recente.
{
"timestamp" : 1451609472,
"collector" : "rrc01",
"peer_ip" : "2001:7f8:4::7992:1",
"peer_as" : 31122,
"announce" : {
"prefix" : "2403:8600:ea89::/48",
"asn" : 55441,
"as_path" : "31122 6939 6453 4755 45820 55441",
"type" : "U"
},
"conflict_with" : {
"prefix" : "2403:8600:ea89::/48",
"asn" : 131317,
"valid" : [
"apnic",
"roa"
]
},
"type" : "ABNORMAL"
}
- timestamp: quando o anúncio foi recebido (timestamp UTC)
- collector: qual o coletor de BGP que recebeu o anúncio
- peer_ip & peer_as: qual o par de BGP que recebeu o anúncio
- announce: informações sobre o anúncio
- type: ou
Use o anúncio foi recebido a partir de uma atualização BGP ouFse foi de uma visão completa de BGP
- type: ou
- conflict_with: informações sobre a entrada RIB que conflita com o anúncio
- valid: objetos de rota ou ROA sobre o par
prefix&asn
- valid: objetos de rota ou ROA sobre o par
Exemplo de retirada
Neste exemplo, o anúncio que retira a rota 23.192.176.0/20 do AS5570 leva ao provável redirecionamento do tráfego para o AS35889, que está a anunciar uma rota para o prefixo menos específico 23.192.0.0/11.
{
"timestamp" : 1451609643,
"collector" : "rrc01",
"peer_ip" : "195.66.224.138",
"peer_as" : 2914,
"withdraw" : {
"asn" : 55740,
"prefix" : "23.192.176.0/20",
"type" : "W"
},
"conflict_with" : {
"prefix" : "23.192.0.0/11",
"asn" : 35994
},
"type" : "ABNORMAL"
}
- timestamp: quando o anúncio foi recebido (timestamp UTC)
- collector: qual o coletor de BGP que recebeu o anúncio
- peer_ip & peer_as: qual o par de BGP que recebeu o anúncio
- withdraw: informações sobre a retirada
- conflict_with: informações sobre a entrada RIB que conflita com o anúncio