Criptarea de legătură din Firebird 3 și VPN sunt două granițe
Un VPN funcțional nu spune nimic despre cine poate deschide listenerul Firebird sau despre ce a negociat clientul. Verificați separat accesibilitatea, autentificarea și criptarea de legătură.
VPN-ul se conectează, clientul deschide o sesiune și toată lumea presupune că legătura la baza de date este securizată. Tocmai au fost confundate trei lucruri diferite. Dacă listenerul este accesibil, dacă serverul a acceptat utilizatorul și dacă Firebird a negociat criptarea de legătură sunt mecanisme separate cu dovezi separate. Un tunel răspunde doar la prima, și doar pentru sursele pe care le-ați permis.
Două granițe care nu se suprapun
Granița VPN protejează pachetele dintre un client și un gateway. Criptarea de legătură a lui Firebird protejează protocolul bazei de date dintre biblioteca client și procesul serverului. Ambele pot exista, iar niciuna nu o înlocuiește pe cealaltă.
Dacă tunelul se termină înainte de gazda bazei de date, traficul de dincolo de el este protejat doar de ce a negociat sesiunea bazei de date. Exact în acest gol o revizuire găsește de obicei surpriza. Diagrama tunelului se termină la un gateway, iar conexiunea care duce interogarea dumneavoastră continuă dincolo de el. Oricine citește acea diagramă mai târziu moștenește presupunerea.
Prima graniță: cine poate deschide listenerul
Identificați adresa reală a serverului și portul configurat, care este 3050 dacă nu a fost schimbat, apoi permiteți doar sursele VPN aprobate în firewall-ul gazdei și al rețelei. Luați în calcul orice traducere de adrese la gateway-ul VPN și dați gazdei bazei de date o rută de întoarcere către grupul de clienți dacă gateway-ul este separat.
Apoi demonstrați negativul. O cale externă care ar trebui respinsă trebuie să rămână respinsă, pentru că deschiderea tunelului nu restricționează de la sine listenerul Firebird.
A doua graniță: ce negociază Firebird
Firebird 3 a introdus un cadru de criptare de legătură cu o politică de server care poate fi dezactivată, activată sau obligatorie. Politica stabilește pragul minim. Sesiunea reală depinde în continuare de biblioteca client încărcată de aplicație și de pluginurile acceptate de ambele părți.
În notele de lansare ale Firebird 3 Arc4 este listat ca pluginul de criptare de legătură implicit pentru acea versiune. Arc4 este o valoare implicită istorică, nu o recomandare pentru un cifru modern, și nu este același lucru cu protecția VPN exterioară.
Autentificarea este o a treia variabilă în aceeași negociere. Serverul acceptă un set de pluginuri de autentificare, biblioteca client oferă un subset, iar cele două trebuie să se suprapună.
Capcana Legacy_Auth
Suportul pentru Legacy_Auth cere relaxarea politicii implicite de criptare obligatorie a serverului. Acesta este costul de compatibilitate documentat și de aceea reducerea politicii pentru a înăbuși o eroare de conexiune este o schimbare de securitate, nu o remediere.
Dacă un client eșuează brusc după o actualizare a serverului, comparați listele de pluginuri înainte de a slăbi ceva. Eșecul este de obicei o nepotrivire de negociere, iar răspunsul este un plugin acceptat de ambele părți.
Verificați conexiunea care contează
Pe o compilare care oferă variabila de context, această interogare raportează starea de criptare a conexiunii curente:
SELECT RDB$GET_CONTEXT('SYSTEM', 'WIRE_ENCRYPTED')
FROM RDB$DATABASE;
Rulați-o prin conexiunea proprie a aplicației, nu printr-o sesiune de administrator pe același server. O conexiune de administrare criptată nu spune nimic despre sesiunea altei biblioteci client, iar o compilare mai veche care nu acceptă variabila nu este dovada că criptarea este oprită.
Notați împreună versiunea bibliotecii client, compilarea serverului și rezultatul, pentru că niciuna dintre ele singură nu este lizibilă.
Permisiuni și calea de actualizare
Restrângerea surselor și criptarea transportului nu înlocuiesc autentificarea sau permisiunile de privilegiu minim. Verificați permisiunile utilizatorului obișnuit al bazei de date asupra obiectelor pe care le atinge cu adevărat.
În final, tratați o implementare de lungă durată ca pe o problemă de întreținere. Un tunel nu face o bibliotecă client învechită sigură la nesfârșit, iar o cale de actualizare acceptată este mai ieftină decât să descoperiți că pluginul de care are nevoie a fost eliminat.