Salvestad ühenduse aadressile 10.20.4.15, VPN katkeb ja klient ühendub ikkagi. See pole hea uudis. Privaatne aadress on asukoht ükskõik millises marsruutimiskontekstis, milles parasjagu oled, ja paljud võrgud kasutavad samu vahemikke. Klient jõudis MySQL-i serverini, lihtsalt võib-olla mitte sinu omani.

Parandusel on kaks poolt ja ainult üks neist puudutab võrku. Hoia ühendus ettenähtud teel ja pane klient autentima serverit, kellega ta räägib. Esimene pool on see, kus VPN aitab; teine pool tuleb seadistada.

Krüpteeritud millega, täpsemalt?

TLS kaitseb vestlust igaühe eest vahepeal ega ütle midagi selle kohta, kes lõpp-punkt väidab end olevat, kui klient seda ei kontrolli. Sertifikaat, mis valideerub usaldusväärse asutuse vastu, tõestab, et sertifikaat pärineb sellelt asutuselt. See ei tõesta, et sertifikaat väljastati hostinimele, milleni jõuda tahtsid, ja need on erinevad küsimused.

See pole teoreetiline lünk. Captive-portaalid, vale VRF-i vead ja kattuvad aadressiplaanid tekitavad kõik serveri, mis on täiesti valmis sinuga TLS-i läbi rääkima. Kui klient nõuab ainult krüpteerimist, on sessioon privaatne ja suunatud vale andmebaasi.

Seega asjakohane küsimus pole see, kas ühendus on krüpteeritud, vaid kas see on krüpteeritud identiteedini, mida mõtlesid. MySQL-i kliendis elab see erinevus täielikult sättel ssl-mode.

Viis ssl-mode’i väärtust praktikas

Väärtusi on viis ja ainult üks neist vastab selle juhendi küsimusele. Tabel loetleb, mida igaüks tegelikult tagab, mitte mida selle nimi vihjab.

ModeWhat it guarantees
DISABLEDNo TLS at all; everything on the wire is readable
PREFERREDTries TLS and falls back to plaintext when the account and server allow it, so it is not a fail-closed requirement
REQUIREDRefuses to connect without TLS, and does not validate the certificate
VERIFY_CAValidates the server certificate against the configured CA and does not check the hostname
VERIFY_IDENTITYValidates the CA and checks that the certificate names the host the client used

Selle artikli küsimusele vastab ainult viimane rida. PREFERRED väärib eraldi esiletõstmist, sest klient, mis vaikselt lihttekstile langeb, on hullem kui see, mis keeldub: sa usud, et sul on krüpteerimine, ja paketipüük on vastupidisel arvamusel.

Ühendus, mida saad täna käivitada

Allolev käsk on vorm, mida kasutada, kahe kohahoidjaga: kinnitatud andmebaasi nimi ja kinnitatud kanali kaudu hangitud CA-fail. Kumbagi ei tohiks võtta sellest, mida server sulle esimesel kontaktil pakub.

mysql --host=db.corp.example --user=app_reader \
  --ssl-mode=VERIFY_IDENTITY \
  --ssl-ca=/approved/path/ca.pem --password

--password ilma väärtuseta küsib sisestust, mis hoiab saladuse protsesside loendist ja sinu shelli ajaloost väljas. See on väike harjumus suure kasuga jagatud hüppehostidel, kus käsurida on teistele kasutajatele nähtav.

Kui see ebaõnnestub, eristab veatekst juhtumeid paremini kui intuitsioon. CA viga tähendab, et ahel ei valideeru ja peaksid vaatama, milline CA serveri sertifikaadile alla kirjutas. Hostinime viga tähendab, et ahel on korras ja nimi ei klapi, mis tavaliselt tähendab, et ühendusid õige serveriga vale nime all, mitte vale serveriga.

Küsimuse ilmumine ei ole tõestus, et parool on juba edastatud, ja ebaõnnestunud ühendus ei tõesta, et klientist ei lahkunud midagi. Kui rekonstrueerid minevikusündmust, tuvasta klient, selle konfiguratsioon, autentimisplugin ja ebaõnnestunud etapp. Kokkupuute hindamine viimasest veateatest on oletamine.

Kui nimi tuleb tunnelist

Kohaliku pordi edastamine rikub identiteedikontrolli viisil, mis inimesi üllatab. Kui edastad kohaliku pordi andmebaasile ja ühendud aadressiga localhost, valideerib klient sertifikaati aadressi localhost vastu, ja selle nime jaoks ei väljastatud ühtegi sertifikaati. Ühendus võib olla täiesti turvaline ja kontroll ebaõnnestub ikkagi, mis ongi kontroll, mis töötab ettenähtud viisil.

On kaks ausat vastust. Anna edastatud lõpp-punktile nimi, mis laheneb loopback-aadressiks ja esineb serveri sertifikaadis, või kasuta hostinime algusest lõpuni, et klient kontrolliks tegelikku identiteeti. Esimene on arendajatele mugav ja nõuab sertifikaaditööd; teine on lihtsam läbi mõelda ja sageli õige vaikeväärtus automatiseerimiseks. Kontrolli väljalülitamine, et edastus töötaks, viskab ära omaduse, mida üritasid lisada.

Vastuvõtt on kolm tingimust

Kirjuta vastuvõtutest kolme eraldi väitena: ühendus kasutas ettenähtud marsruuti, krüpteerimine oli nõutud, mitte eelistatud, ja serveri identiteet kontrolliti usaldusväärse materjali vastu. Roheline VPN-i ikoon ei taga ühtegi neist.

GUI-klientide ja MariaDB puhul kontrolli müüja enda dokumentatsiooni, selle asemel et eeldada, et lipu kirjapilt kandub üle. MySQL-i dokumentatsioon krüpteeritud ühenduste kohta katab režiimide erinevused ja CA levitamise nõude ning on viide, mida kontrollida enne tootmisühenduse stringi muutmist.

Seotud artiklid