La VPN si connette, il client apre una sessione e tutti danno per scontato che la connessione al database sia protetta. Sono appena state confuse tre cose diverse. Se il listener è raggiungibile, se il server ha accettato l'utente e se Firebird ha negoziato la cifratura di collegamento sono meccanismi separati con prove separate. Il tunnel risponde solo alla prima, e solo per le origini che avete consentito.

Due confini che non si sovrappongono

Il confine della VPN protegge i pacchetti tra un client e un gateway. La cifratura di collegamento di Firebird protegge il protocollo del database tra la libreria client e il processo server. Entrambi possono essere presenti e nessuno sostituisce l'altro.

Se il tunnel termina prima dell'host del database, il traffico oltre di esso è protetto solo da ciò che ha negoziato la sessione del database. È in questo varco che una revisione di solito trova la sorpresa. Lo schema del tunnel termina a un gateway, e la connessione che porta la vostra query prosegue oltre. Chiunque legga quello schema in seguito eredita l'assunzione.

Confine uno: chi può aprire il listener

Identificate l'indirizzo reale del server e la porta configurata, che è 3050 salvo modifiche, poi consentite solo le origini VPN approvate sui firewall dell'host e della rete. Tenete conto di qualsiasi traduzione di indirizzi al gateway VPN e date all'host del database una rotta di ritorno verso il pool di client se il gateway è separato.

Poi dimostrate il negativo. Un percorso esterno che dovrebbe essere negato deve restare negato, perché aprire il tunnel non limita da solo il listener di Firebird.

Confine due: cosa negozia Firebird

Firebird 3 ha introdotto un quadro di cifratura di collegamento con una politica del server che può essere disabilitata, abilitata o richiesta. La politica fissa il minimo. La sessione effettiva dipende ancora dalla libreria client caricata dall'applicazione e dai plugin supportati da entrambe le parti.

Nelle note di rilascio di Firebird 3 Arc4 è elencato come plugin di cifratura di collegamento predefinito per quella versione. Arc4 è un valore predefinito storico, non una raccomandazione per un cifrario moderno, e non è la stessa cosa della protezione VPN esterna.

L'autenticazione è una terza variabile nella stessa negoziazione. Il server accetta un insieme di plugin di autenticazione, la libreria client ne offre un sottoinsieme e i due devono sovrapporsi.

La trappola Legacy_Auth

Supportare Legacy_Auth richiede di allentare la politica predefinita di cifratura obbligatoria del server. È il costo di compatibilità documentato, ed è per questo che abbassare la politica per silenziare un errore di connessione è un cambiamento di sicurezza e non una correzione.

Se un client fallisce all'improvviso dopo un aggiornamento del server, confrontate gli elenchi dei plugin prima di indebolire qualcosa. Il guasto è di solito un disallineamento di negoziazione, e la risposta è un plugin supportato su entrambi i lati.

Controllate la connessione che conta

Su una build che fornisce la variabile di contesto, questa query riporta lo stato di cifratura della connessione corrente:

SELECT RDB$GET_CONTEXT('SYSTEM', 'WIRE_ENCRYPTED')
FROM RDB$DATABASE;

Eseguitela tramite la connessione propria dell'applicazione, non tramite una sessione di amministratore sullo stesso server. Una connessione amministrativa cifrata non dice nulla sulla sessione di un'altra libreria client, e una build più vecchia che non supporta la variabile non è prova che la cifratura sia disattivata.

Annotate insieme la versione della libreria client, la build del server e il risultato, perché nessuno di essi da solo è leggibile.

Permessi e percorso di aggiornamento

Limitare le origini e cifrare il trasporto non sostituiscono l'autenticazione né i permessi di minimo privilegio. Controllate i permessi dell'utente ordinario del database sugli oggetti che tocca davvero.

Infine, trattate un dispiegamento di lunga durata come una questione di manutenzione. Un tunnel non rende una libreria client obsoleta sicura all'infinito, e un percorso di aggiornamento supportato costa meno che scoprire che il plugin necessario è stato rimosso.

Articoli correlati