RPKI e ROA: proteggere i tuoi annunci BGP
Come configurare Route Origin Authorization per proteggere i tuoi prefissi da BGP hijacking e route leaks.
RPKI e ROA: proteggere i tuoi annunci BGP
RPKI (Resource Public Key Infrastructure) è un framework crittografico che permette ai titolari di risorse IP di autorizzare specifici ASN ad annunciare i loro prefissi. È la difesa principale contro BGP hijacking e route leaks.
Cos'è un ROA
Un Route Origin Authorization (ROA) è un oggetto crittograficamente firmato che dichiara:
- Quale prefisso IP stai annunciando
- Da quale ASN è autorizzato l'annuncio
- La lunghezza massima del prefisso accettabile
Prefisso: 81.29.157.0/24
ASN origine: AS199920
Max length: /24
Con questo ROA, solo AS199920 può annunciare 81.29.157.0/24. Qualsiasi altro annuncio dello stesso prefisso verrà marcato come Invalid dai router con RPKI validation attiva.
Come funziona la validazione
I router con RPKI validation classificano ogni route BGP in tre stati:
| Stato | Significato | |----------|-------------| | Valid | Il prefisso è annunciato dall'ASN autorizzato nel ROA | | Invalid | Il prefisso è annunciato da un ASN NON autorizzato, o il prefisso è più specifico del max-length | | Not Found | Non esiste nessun ROA per questo prefisso (non filtrato) |
La policy comune è: drop Invalid, accept Valid e Not Found.
Creare un ROA su RIPE NCC
- Accedi a my.ripe.net
- Vai su RPKI → ROAs
- Clicca Add ROA
- Inserisci: prefisso, ASN di origine, max-length
- Firma con le credenziali LIR
Velix configura i ROA automaticamente per tutti i clienti durante il processo di assegnazione.
Verificare i tuoi ROA
Puoi verificare i ROA attivi con:
# Via RIPE Stat API
curl "https://stat.ripe.net/data/rpki-validation/data.json?resource=AS199920&prefix=81.29.157.0/24"
# Via CLI con bgpq4
bgpq4 -A AS199920
BGP Hijacking: un esempio reale
Il caso più famoso è il BGP Hijack di Pakistan Telecom del 2008, che ha reso irraggiungibile YouTube per 2 ore in tutto il mondo. Con RPKI attivo, quell'annuncio sarebbe stato marcato come Invalid e droppato dai router.
Configurare RPKI validation su MikroTik
# RouterOS 7.x — abilita RPKI validation
/routing/bgp/rpki
add address=rpki.cloudflare.com port=8282 refresh-interval=600
# Applica la policy di drop sugli Invalid
/routing/filter/rule
add chain=bgp-in rule="if (rpki-valid == invalid) { reject; }"
Configurare RPKI su FRR
# frr.conf
router bgp 206658
bgp rpki
rpki cache rpki.cloudflare.com 8282 preference 1
# Filtro in ingresso
route-map RPKI-FILTER permit 10
match rpki valid
route-map RPKI-FILTER deny 20
match rpki invalid
Server RPKI validators pubblici
| Provider | Indirizzo | Porta | |--------------|--------------------------|-------| | Cloudflare | rpki.cloudflare.com | 8282 | | RIPE NCC | rpki-validator.ripe.net | 3323 | | NTT | rtr.rpki.ntt.net | 8282 |