Nəzəri əsaslar və memarlıq

Xarici operatorlararası BGP marşrutlaşdırmasının təhlükəsizliyi üç mexanizmə əsaslanır: giriş və çıxışda filtrlər (prefix-list, AS-path), prefiks limitləri (Maximum-Prefix) və RPKI ROV (RFC 6811) ilə marşrutun mənşəyinin yoxlanması. 1. RPKI ROV: ROA (Route Origin Authorization, RFC 6482) "prefiks, icazə verilən mənşə ASN, maxLength" imzalı qeydidir; onu resurs sahibi RIR iyerarxiyası ilə verilmiş sertifikatla imzalayır (RIPE NCC, ARIN, APNIC və digər trust anchor-lar). Validator (Routinator, rpki-client, FORT) repozitorilərini yükləyir, imzaları yoxlayır və etibarlı cütləri marşrutlaşdırıcıya RTR protokolu ilə ötürür (RFC 6810, 1-ci versiya RFC 8210; qeydiyyatdan keçmiş port TCP 323-dür, bir çox validator 3323 kimi imtiyazsız portu dinləyir). Krill sertifikat orqanı proqramıdır, validator deyil. Marşrutlaşdırıcı hər marşrutu təsnif edir: Valid, Invalid (başqa mənşə ASN və ya maxLength-dən uzun prefiks) və ya NotFound (ROA yoxdur). Operator siyasəti: Invalid girişdə rədd edilir, Valid üstün tutula bilər, NotFound qəbul edilir. ROV yalnız mənşə ASN-ni yoxlayır: saxta AS-path-i (forged origin) və marşrut sızmalarını tutmur, RTR sessiyası expire intervalından uzun kəsilərsə, keş təmizlənir və bütün marşrutlar NotFound olur (fail-open). 2. Maximum-Prefix: RIB yaddaşının qorunması. Müştəri və ya peer razılaşdırılandan çox prefiks elan edərsə (məsələn, 100-dən çox), marşrutlaşdırıcı 75-90% hədində xəbərdarlıq edir və limit aşıldıqda sessiyanı kəsir.

BGP-yə niyə xarici qoruma lazımdır

BGP qonşu AS-in prefiksi elan etmək hüququ olub-olmadığını yoxlamır: istənilən pir başqasının şəbəkəsini elan edə bilər (hijack) və ya öz sərhəddini heç vaxt keçməməli olan marşrutu irəli ötürə bilər (route leak). Klassik nümunələr: 2008-ci ildə Pakistan Telecom AS-indən YouTube alt şəbəkəsinin elanı və 2019-cu ildə provayderlər vasitəsilə marşrutların sızması. Qoruma üç qatda qurulur: daxilolmada və çıxışda prefiks və AS-path filtrləri (kimi dinləyirik və nəyi elan edirik), prefiks sayına limitlər (resursların qorunması) və RPKI vasitəsilə marşrutun mənşəyinin yoxlanması (ROV, RFC 6811).

Daxilolmada filtrlər: həmişə nəyi atmaq lazımdır

  • Bogon prefikslər: 0.0.0.0/8, 10.0.0.0/8, 100.64.0.0/10, 127.0.0.0/8, 169.254.0.0/16, 172.16.0.0/12, 192.0.2.0/24, 192.168.0.0/16, 198.18.0.0/15, 224.0.0.0/3 və onların daha uzun hissələri (siyahıda le 32 istifadə olunur). IPv6 üçün də eynidir (::/8, fc00::/7, fe80::/10, ff00::/8, 2001:db8::/32).
  • Çox uzun prefikslər: ictimai şəbəkədə adətən /24-dən (IPv4) və /48-dən (IPv6) uzun olmayana icazə verilir. Daha uzun marşrutlar yayılmır və cədvəlləri doldurur.
  • Razılaşdırılmayıbsa, pirdən gələn default marşrut.
  • Yoldakı bogon ASN-lər: AS 0 (RFC 7607), AS_TRANS 23456, sənədləşmə üçün ayrılmış 64496-64511, xarici aləmdən gələn yolda şəxsi 64512-65534 və 4200000000-4294967294.
  • Müştəri filtrləri sərtdir: müştərinin icazə verilən prefikslərinin siyahısı IRR/AS-SET qeydlərinə görə qurulur (bgpq4 kimi generatorlar) və avtomatik yenilənir; müştəri trafiki provayderlər arasında tranzitə çevrilə bilməməlidir.
  • Çıxış (egress): operator yalnız öz və müştəri prefikslərini elan edir. Pirlərdən və upstream-dən alınan marşrutlar yenidən pirlərə və upstream-ə ötürülmür.

Prefiks limiti

maximum-prefix (Cisco), route-limit (Huawei) və prefix-limit (Junos) RIB/FIB yaddaşını qoruyur və qəflətən həddindən artıq göndərən qonşunun sessiyasını qırır. Dəyər real say üstəgəl ehtiyat kimi seçilir (ictimai peering-lərdə PeeringDB məlumatlarına əsaslanırlar), xəbərdarlıq həddi 75-90%-dir, işə düşdükdən sonra sessiyanı avtomatik yenidən başlatmaq (restart N dəqiqə / idle-timeout) və ya əllə müdaxiləyə qədər düşmüş saxlamaq olar. Hesablama platformalara görə fərqlənir: bəziləri bütün alınmış prefiksləri, bəziləri yalnız siyasətlə qəbul edilənləri sayır. Bunu hədəf relizdə yoxlamaq lazımdır, əks halda daxilolma filtri limitə çatmağa imkan verməyəcək.

RPKI və ROV: komponentlər

  • ROA (Route Origin Authorization, RFC 6482) - imzalanmış qeyddir: prefiks, icazə verilən origin AS və maxLength. RIR-in (RIPE NCC, ARIN, APNIC və digər trust anchor-lar) resurs sertifikatı ilə imzalanır.
  • Relying party / validator (Routinator, rpki-client, FORT, OctoRPKI) repozitoriyaları yükləyir, imzaları yoxlayır və etibarlı bağlamaların (prefiks, maxLength, ASN) siyahısını verir. Krill sertifikat orqanı proqramıdır, validator deyil.
  • RTR (RPKI-to-Router, RFC 6810, 1-ci versiya RFC 8210-da) - marşrutlaşdırıcının bu bağlamaları validatordan aldığı protokoldur. Qeydə alınmış port TCP 323-dür; bir çox validator defolt olaraq imtiyazsız portu dinləyir (məsələn, Routinator - 3323). RTR SSH və ya TLS üzərindən işləyə bilər, lakin laboratoriyalarda adətən açıq TCP istifadə olunur.

ROV alqoritmi (RFC 6811)

Marşrut üçün (prefiks P, origin AS - AS-path-də sonuncu) P-ni əhatə edən bütün ROA-lar axtarılır. Əhatə edən ROA yoxdursa, vəziyyət NotFound-dur. Eyni ASN-li və P uzunluğu maxLength-dən böyük olmayan ROA varsa - Valid. Əks halda - Invalid (yad ASN və ya çox uzun prefiks). ASN 0 olan ROA (RFC 6483) prefiksi həmişə Invalid edir. Operator siyasəti belədir: Invalid atılır, Valid üstün tutula bilər (məsələn, Local-Pref 120), NotFound adi prioritetlə qəbul edilir: prefikslərin əhəmiyyətli hissəsi üçün ROA hələ yaradılmayıb və onları rədd etmək trafikə zərər verərdi.

Platformalarda necə işləyir

  • Cisco IOS-XE: bgp rpki server tcp validatoru təyin edir, route-map match rpki valid|invalid|not-found şərtlərini alır. bgp bestpath prefix-validate allow-invalid Invalid marşrutları ən yaxşı yol namizədi saxlayır ki, onları siyasət idarə etsin (defolt olaraq vəziyyətin özü seçimə təsir edir). Vəziyyət hər keş yenilənməsində yenidən hesablanır, ona görə yenidən qiymətləndirmə imkanı (route refresh və ya Adj-RIB-In saxlanması) lazımdır.
  • Juniper Junos: routing-options validation group ... session validatoru qoşur, siyasət from validation-database valid|invalid|unknown istifadə edir; vəziyyət show route ... detail-də görünür (Validation State).
  • Huawei VRP: prefiks filtrləri, AS-path filtrləri və route-policy-lər dərsin kodunda verilib; ROV konfiqurasiyası relizdən asılıdır və review-ə çıxarılıb.
  • MikroTik RouterOS v7: dərsdə marşrut filtrləri (/routing/filter/rule) və əlaqədə limit istifadə olunur; RouterOS-da ROV üçün quraşdırılmış versiyanın sənədlərini yoxlayın.

Validatorun sıradan çıxması: fail-open

RTR sessiyası expire intervalından uzun müddət əlçatmaz olarsa (RFC 8210-a görə defolt 7200 saniyə), marşrutlaşdırıcı keş qeydlərini silir və bütün marşrutlar NotFound olur: qoruma səssizcə söndürülür. Buna görə ən azı iki validator müxtəlif yerlərdə saxlanılır, keşin seriya nömrəsinə və son yenilənmə vaxtına nəzarət edilir, sessiya itəndə həyəcan siqnalı verilir. Lokal istisnalar (SLURM, RFC 8416) ROA-nı əllə əlavə etməyə və ya ləğv etməyə imkan verir.

Route leak-in qarşısının alınması

Adi üsul - mənbəyə görə community ilə işarələmə: müştəri marşrutları 65000:100, peer marşrutları 65000:200, upstream marşrutları 65000:300 alır, pirlərə və upstream-ə çıxış siyasəti isə yalnız 65000:100 işarəsinə (və öz marşrutlara) icazə verir. Yeni yanaşma - BGP rolları və Only-to-Customer atributu (RFC 9234): tərəflər rolları elan edir (provider, customer, peer, rs-server, rs-client), modeli pozan marşrutlar isə avtomatik atılır. Dəstək relizdən asılıdır.

Sessiyanın özünün qorunması

Qonşunu saxtalaşdırmaq mümkündürsə, filtrlər kömək etmir: TCP MD5 və ya TCP-AO autentifikasiyası (RFC 5925) və GTSM (RFC 5082) hardening laboratoriyasında qurulur. Burada vacib olan odur ki, RPKI və filtrlər elanın məzmununu yoxlayır, TCP seqmentini əslində kimin göndərdiyini yox.