MySQL fuq VPN: ivverifika s-server, mhux biss il-kriptaġġ
Il-kriptaġġ lejn host żbaljat xorta waħda żbaljat. Qabbel il-valuri ssl-mode, imbagħad wettaq konnessjoni li ssemmi s-server li kellok fi ħsieb u li tipprova dan.
Inti tħaddan konnessjoni għal 10.20.4.15, il-VPN taqa’, u l-klijent xorta jikkonnettja. Dawn mhumiex aħbar tajba. Indirizz privat huwa post ġewwa kwalunkwe kuntest ta’ routjar li tkun fih, u ħafna netwerks jużaw l-istess meded. Il-klijent wasal għal server MySQL, forsi biss mhux tiegħek.
Is-soluzzjoni għandha żewġ nofsijiet, u waħda biss minnhom hija dwar in-netwerk. Żomm il-konnessjoni fit-triq maħsuba tagħha, u ġġiegħel lill-klijent jawtentika s-server li qiegħed jitkellem miegħu. L-ewwel nofs huwa fejn VPN tgħin; it-tieni nofs trid tiġi kkonfigurata.
Kriptat għal xiex, eżattament?
TLS jipproteġi l-konversazzjoni minn kulmin fin-nofs, u ma jgħid xejn dwar min il-punt aħħari jgħid li hu, sakemm il-klijent ma jiċċekkjax. Ċertifikat li jivvalida kontra awtorità fdati jipprova li ċ-ċertifikat ġie minn dik l-awtorità. Ma jipprovax li ċ-ċertifikat inħareġ għall-isem tal-host li ridt tilħaq, u dawn huma mistoqsijiet differenti.
Din mhix lakuna teoretika. Portali captive, żbalji b’VRF żbaljat u pjanijiet ta’ indirizzi li jaqtgħu għal xulxin kollha jipproduċu server li huwa għal kollox lest li jinnegozja TLS miegħek. Jekk il-klijent jitlob biss il-kriptaġġ, is-sessjoni hija privata u hija diretta lejn id-database żbaljata.
Għalhekk il-mistoqsija rilevanti mhix jekk il-konnessjoni hijiex kriptata, iżda jekk hijiex kriptata lejn l-identità li kellok fi ħsieb. Fil-klijent ta’ MySQL, din id-differenza tgħix għal kollox fil-konfigurazzjoni ssl-mode.
Il-ħames valuri ssl-mode fil-prattika
Hemm ħames valuri, u wieħed biss minnhom iwieġeb il-mistoqsija ta’ dan il-manwal. It-tabella telenka dak li kull wieħed verament jiggarantixxi, mhux dak li jissuġġerixxi ismu.
| Mode | What it guarantees |
|---|---|
DISABLED | No TLS at all; everything on the wire is readable |
PREFERRED | Tries TLS and falls back to plaintext when the account and server allow it, so it is not a fail-closed requirement |
REQUIRED | Refuses to connect without TLS, and does not validate the certificate |
VERIFY_CA | Validates the server certificate against the configured CA and does not check the hostname |
VERIFY_IDENTITY | Validates the CA and checks that the certificate names the host the client used |
Biss l-aħħar ringiela twieġeb il-mistoqsija f’dan l-artiklu. PREFERRED jistħoqlu li jiġi enfasizzat waħdu, għax klijent li jaqa’ bil-kwiet għal test sempliċi huwa agħar minn wieħed li jirrifjuta: taħseb li għandek kriptaġġ u l-qbid tal-pakketti ma jaqbilx.
Konnessjoni li tista’ twettaq illum
Il-kmand hawn taħt huwa l-forma li għandha tintuża, b’żewġ placeholders: l-isem tad-database approvat u fajl CA miksub permezz ta’ kanal approvat. L-ebda waħda minnhom m’għandha tittieħed minn dak li s-server joffrilek fl-ewwel kuntatt.
mysql --host=db.corp.example --user=app_reader \
--ssl-mode=VERIFY_IDENTITY \
--ssl-ca=/approved/path/ca.pem --password
--password mingħajr valur jitlob input, li jżomm is-sigriet barra mill-lista tal-proċessi u barra mill-istorja tal-shell tiegħek. Din hija drawwa żgħira b’benefiċċju kbir fuq hosts ta’ qbiż maqsuma, fejn il-linja tal-kmand tidher għal utenti oħra.
Meta dan ifalli, it-test tal-iżball jiddistingwi l-każijiet aħjar mill-intuwizzjoni. Falliment ta’ CA ifisser li l-katina ma tivvalidax u għandek tara liema CA iffirmat iċ-ċertifikat tas-server. Falliment tal-isem tal-host ifisser li l-katina hija tajba u l-isem ma jaqbilx, li normalment ifisser li kkonnettjejt mas-server it-tajjeb bl-isem żbaljat u mhux mas-server żbaljat.
Id-dehra ta’ prompt mhix prova li password diġà ntbagħtet, u konnessjoni falluta ma tipprovax li xejn ħareġ mill-klijent. Jekk qed terġa’ tibni avveniment tal-passat, identifika l-klijent, il-konfigurazzjoni tiegħu, il-plugin tal-awtentikazzjoni u l-istadju li falla. L-istima tal-espożizzjoni mill-aħħar messaġġ ta’ żball hija raden.
Meta l-isem jiġi minn tunnel
Il-forwarding tal-port lokali jkisser il-verifika tal-identità b’mod li jissorprendi lin-nies. Jekk tifforvardja port lokali għad-database u tikkonnettja ma’ localhost, il-klijent jivvalida ċ-ċertifikat kontra localhost, u l-ebda ċertifikat ma nħareġ għal dak l-isem. Il-konnessjoni tista’ tkun totalment sigura u l-verifika xorta tfalli, li hija l-verifika taħdem kif maħsub.
Hemm żewġ tweġibiet onesti. Agħti lill-punt aħħari mibgħut isem li jiġi riżolt għall-indirizz loopback u li jidher fiċ-ċertifikat tas-server, jew uża l-isem tal-host minn tarf għal tarf sabiex il-klijent jivverifika l-identità vera. L-ewwel huwa konvenjenti għall-iżviluppaturi u jirrikjedi xogħol taċ-ċertifikati; it-tieni huwa eħfef biex tirraġuna u spiss il-valur default tajjeb għall-awtomazzjoni. L-iżattivar tal-verifika biex il-forwarding jaħdem iwaddab il-proprjetà li kont qed tipprova żżid.
L-aċċettazzjoni hija tliet kundizzjonijiet
Ikteb it-test tal-aċċettazzjoni bħala tliet stqarrijiet separati: il-konnessjoni użat ir-rotta maħsuba, il-kriptaġġ kien meħtieġ mhux preferut, u l-identità tas-server ġiet ivverifikata kontra materjal affidabbli. Ikona VPN ħadra ma tistabbilixxi l-ebda waħda minnhom.
Għall-klijenti GUI u għal MariaDB, iċċekkja d-dokumentazzjoni tal-fornitur stess minflok ma tassumi li l-ortografija tal-bandiera tinġarr. Id-dokumentazzjoni tal-MySQL dwar konnessjonijiet kriptati tkopri d-differenzi bejn il-modi u r-rekwiżit tad-distribuzzjoni tas-CA, u hija r-referenza li għandha tiġi ċċekkjata qabel ma tbiddel string tal-konnessjoni tal-produzzjoni.