← Documentazione
Sicurezza BGP

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

  1. Accedi a my.ripe.net
  2. Vai su RPKI → ROAs
  3. Clicca Add ROA
  4. Inserisci: prefisso, ASN di origine, max-length
  5. 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 |

#RPKI#ROA#BGP#sicurezza#RIPE NCC