Passa al contenuto principale

4.4.1. Il database delle politiche di sicurezza (The Security Policy Database, SPD)

Una SA è una costruzione di gestione utilizzata per applicare le politiche di sicurezza per il traffico che attraversa il confine IPsec. Pertanto, un elemento essenziale dell'elaborazione delle SA è un database delle politiche di sicurezza (Security Policy Database, SPD) sottostante che specifica quali servizi devono essere offerti ai datagrammi IP e in che modo. La forma del database e la sua interfaccia sono al di fuori dell'ambito di questa specifica. Tuttavia, questa sezione specifica la funzionalità di gestione minima che deve essere fornita per consentire a un utente o amministratore di sistema di controllare se e come IPsec viene applicato al traffico trasmesso o ricevuto da un host o in transito attraverso un gateway di sicurezza. La SPD, o le cache pertinenti, devono essere consultate durante l'elaborazione di tutto il traffico (in entrata e in uscita), incluso il traffico non protetto da IPsec, che attraversa il confine IPsec. Ciò include il traffico di gestione IPsec come IKE.

Requisiti SPD

Un'implementazione IPsec DEVE avere almeno una SPD e PUÒ supportare più SPD, se appropriato per il contesto in cui opera l'implementazione IPsec. Non vi è alcun requisito di mantenere le SPD su base per interfaccia, come specificato in RFC 2401. Tuttavia, se un'implementazione supporta più SPD, allora DEVE includere una funzione esplicita di selezione SPD che viene invocata per selezionare la SPD appropriata per l'elaborazione del traffico in uscita. Gli input a questa funzione sono il pacchetto in uscita e qualsiasi metadato locale (ad esempio, l'interfaccia tramite la quale è arrivato il pacchetto) richiesto per effettuare la funzione di selezione SPD. L'output della funzione è un identificatore SPD (SPD-ID).

Database ordinato

La SPD è un database ordinato, coerente con l'uso di liste di controllo degli accessi (Access Control Lists, ACL) o filtri di pacchetti nei firewall, router, ecc. Il requisito di ordinamento sorge perché le voci spesso si sovrappongono a causa della presenza di intervalli (non banali) come valori per i selettori. Pertanto, un utente o amministratore DEVE essere in grado di ordinare le voci per esprimere una politica di controllo degli accessi desiderata. Non esiste un modo per imporre un ordine canonico generale sulle voci SPD, a causa dell'uso consentito di caratteri jolly per i valori dei selettori e perché i diversi tipi di selettori non sono correlati gerarchicamente.

Scelte di elaborazione: DISCARD, BYPASS, PROTECT

Una SPD deve discriminare tra il traffico che riceve protezione IPsec e il traffico a cui è consentito bypassare IPsec. Ciò si applica alla protezione IPsec da applicare da parte di un mittente e alla protezione IPsec che deve essere presente presso il ricevitore. Per qualsiasi datagramma in uscita o in entrata, sono possibili tre scelte di elaborazione: DISCARD, BYPASS IPsec o PROTECT utilizzando IPsec.

  • DISCARD: Traffico che non è autorizzato ad attraversare il confine IPsec (nella direzione specificata).
  • BYPASS: Traffico autorizzato ad attraversare il confine IPsec senza protezione IPsec.
  • PROTECT: Traffico che riceve protezione IPsec. Per tale traffico, la SPD deve specificare i protocolli di sicurezza da utilizzare, la loro modalità, le opzioni del servizio di sicurezza e gli algoritmi crittografici da utilizzare.

SPD-S, SPD-I, SPD-O

Una SPD è logicamente divisa in tre parti:

  • SPD-S (traffico sicuro secure traffic): Contiene voci per tutto il traffico soggetto alla protezione IPsec.
  • SPD-O (in uscita outbound): Contiene voci per tutto il traffico in uscita che deve essere bypassato o scartato.
  • SPD-I (in entrata inbound): Applicato al traffico in entrata che verrà bypassato o scartato.

Tutte e tre queste possono essere decorrelate per facilitare il caching. Se un'implementazione IPsec supporta solo una SPD, allora la SPD è costituita da tutte e tre le parti. Se sono supportate più SPD, alcune di esse possono essere parziali, ad esempio, alcune SPD potrebbero contenere solo voci SPD-I, per controllare il traffico in entrata bypassato su base per interfaccia. La suddivisione consente di consultare SPD-I senza dover consultare SPD-S, per tale traffico.

Poiché SPD-I è solo una parte della SPD, se un pacchetto che viene cercato in SPD-I non può essere abbinato a una voce lì, allora il pacchetto DEVE essere scartato. Si noti che per il traffico in uscita, se non viene trovata una corrispondenza in SPD-S, allora SPD-O deve essere controllato per vedere se il traffico deve essere bypassato. Allo stesso modo, se SPD-O viene controllato per primo e non viene trovata alcuna corrispondenza, allora SPD-S deve essere controllato. In una SPD ordinata non decorrelata, le voci per SPD-S, SPD-I e SPD-O sono intercalate. Quindi c'è una ricerca nella SPD.

Voci SPD

Ogni voce SPD specifica la disposizione del pacchetto come BYPASS, DISCARD o PROTECT. La voce è indicizzata da un elenco di uno o più selettori. La SPD contiene un elenco ordinato di queste voci. I tipi di selettori richiesti sono definiti nella sezione 4.4.1.1. Questi selettori vengono utilizzati per definire la granularità delle SA create in risposta a un pacchetto in uscita o in risposta a una proposta da un peer. La struttura dettagliata di una voce SPD è descritta nella sezione 4.4.1.2. Ogni SPD DOVREBBE avere una voce finale nominale che corrisponde a qualsiasi cosa non corrisponda altrimenti e la scarta.

La SPD DEVE consentire a un utente o amministratore di specificare le voci di politica come segue:

  • SPD-I: Per il traffico in entrata che deve essere bypassato o scartato, la voce è costituita dai valori dei selettori che si applicano al traffico da bypassare o scartare.

  • SPD-O: Per il traffico in uscita che deve essere bypassato o scartato, la voce è costituita dai valori dei selettori che si applicano al traffico da bypassare o scartare.

  • SPD-S: Per il traffico che deve essere protetto utilizzando IPsec, la voce è costituita dai valori dei selettori che si applicano al traffico da proteggere tramite AH o ESP, controlli su come creare SA basate su questi selettori e i parametri necessari per effettuare questa protezione (ad esempio, algoritmi, modalità, ecc.). Si noti che una voce SPD-S contiene anche informazioni come il flag "popolare dal pacchetto" (populate from packet, PFP) e bit che indicano se la ricerca SA utilizza gli indirizzi IP locali e remoti oltre all'SPI.

Rappresentazione della direzionalità in una voce SPD

Per il traffico protetto da IPsec, gli indirizzi e le porte locali e remote in una voce SPD vengono scambiati per rappresentare la direzionalità, coerentemente con le convenzioni IKE. In generale, i protocolli trattati da IPsec hanno la proprietà di richiedere SA simmetriche con indirizzi IP locali/remoti invertiti. Tuttavia, per ICMP, spesso non esiste tale requisito di autorizzazione bidirezionale. Tuttavia, per uniformità e semplicità, le voci SPD per ICMP sono specificate nello stesso modo degli altri protocolli. Si noti inoltre che per ICMP, l'intestazione di mobilità e i frammenti non iniziali, non ci sono campi porta in questi pacchetti.

OPAQUE e ANY

Per ciascun selettore in una voce SPD, oltre ai valori letterali che definiscono una corrispondenza, ci sono due valori speciali: ANY e OPAQUE.

  • ANY: Un carattere jolly che corrisponde a qualsiasi valore nel campo corrispondente del pacchetto, o che corrisponde a pacchetti in cui quel campo non è presente o è oscurato.

  • OPAQUE: Indica che il campo selettore corrispondente non è disponibile per l'esame perché potrebbe non essere presente in un frammento, non esiste per il protocollo di livello successivo dato, o l'applicazione precedente di IPsec potrebbe aver crittografato il valore.

Il valore ANY comprende il valore OPAQUE. Pertanto, OPAQUE deve essere utilizzato solo quando è necessario distinguere tra il caso di qualsiasi valore consentito per un campo, rispetto all'assenza o non disponibilità (ad esempio, a causa della crittografia) del campo.

Sezioni correlate