
tabi — Updated!
Инструмент для обнаружения и классификации событий перехвата IP-префиксов BGP путём обработки MRT-дампов, с поддержкой нескольких парсеров входных данных и автоматизированного анализа конфликтов.
Расширенный пример
В этом примере показано, как использовать модуль tabi для обнаружения всех возможных BGP-перехватов, наблюдаемых с BGP-коллектора.
Требования
ПРЕДУПРЕЖДЕНИЕ: Прежде чем запускать этот пример, убедитесь, что на вашем компьютере есть как минимум 2 ГБ свободной памяти.
Процедура установки описана в основном README.
Парсер MRT
Этот пример совместим с mabo и bgpreader.
Обнаружение перехватов
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
Этот скрипт выводит аномальные события, обнаруженные модулем tabi. Кроме того, он пытается отфильтровать конфликты, которые, скорее всего, являются легитимными, используя следующие методы:
- конфликтующее объявление покрыто ROA
- конфликтующее объявление покрыто объектом маршрута
- между двумя конфликтующими AS существует административная связь
AS_PATHперехватчика содержит ASN перехваченной стороны
Эти эвристики описаны в модуле tabi.annotate.
Интерпретация результатов
Пример обновления (Update)
В этом примере объявление, обновляющее маршрут 2403:8600:ea89::/48, исходящее от AS55441, приводит к вероятному перенаправлению трафика, который изначально направлялся в сторону AS131317. Это подозрительно, поскольку для исходного маршрута существуют валидные объект маршрута и ROA, а для последнего обновления маршрута — нет.
{
"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: время получения объявления (метка времени UTC)
- collector: какой BGP-коллектор получил объявление
- peer_ip и peer_as: какой BGP-пир получил объявление
- announce: информация об объявлении
- type:
U, если объявление было получено из BGP-обновления, илиF, если из полного BGP-представления (full view)
- type:
- conflict_with: информация о записи RIB, конфликтующей с объявлением
- valid: объекты маршрута или ROA для пары
prefixиasn
- valid: объекты маршрута или ROA для пары
Пример отзыва (Withdraw)
В этом примере объявление, отзывающее маршрут 23.192.176.0/20 у AS5570, приводит к вероятному перенаправлению трафика в сторону AS35889, который объявляет маршрут для менее специфичного префикса 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: время получения объявления (метка времени UTC)
- collector: какой BGP-коллектор получил объявление
- peer_ip и peer_as: какой BGP-пир получил объявление
- withdraw: информация об отзыве
- conflict_with: информация о записи RIB, конфликтующей с объявлением