Kako preveriti strežnik profila OpenVPN pred uvozom
Najprej v urejevalniku besedila preberite vnose remote, transportni sloj in zatiče zaupanja; razrešitev imena dokazuje dosegljivost, nikoli lastništva.
Nekdo vam pošlje profil, vi ga uvozite in trideset sekund pozneje klient kliče cilj, ki ga ni nihče preveril. Najprej preberite datoteko v urejevalniku besedila, ker se vse pomembno zbere v peščici direktiv: remote, proto, port, ca, cert, tls-crypt in verify-x509-name. Vse drugo so privzete vrednosti in prav tam živijo presenečenja.
Naštejte vse končne točke, ki jih datoteka lahko uporabi
Začnite s končnimi točkami, ker lahko en profil vsebuje več. grep -nE '^[[:space:]]*(remote|proto|port|remote-random|connection)' profile.ovpn izpiše vsakega kandidata v vrstnem redu datoteke, vključno s tistimi, ki so vgnezdeni v vgrajene bloke <connection>.
Ko direktiva izpusti vrata, klient pade nazaj na privzeto vrednost poslušalca, zato samo remote vpn.example.com pomeni vrata 1194 s katerimkoli proto, ki se pojavi pozneje v datoteki. Več preprostih vrstic remote so alternative: klient jih poskusi po vrsti, razen če jih remote-random premeša, in nikoli tiho ne zamenja gostitelja drugega operaterja. Dve vrstici remote na nepovezanih domenah sta točka, kjer se ustavite in vprašate, katera je bila mišljena.
Bodite pozorni tudi na zapis proto. tcp je sprejet kot sopomenka za tcp-client na strani klienta, vendar je tcp-server v klientovem profilu konfiguracijska napaka, ki raje obvisi, kot da bi se čisto končala.
Najprej potrdite ime, nato vrata
dig +short vpn.example.com vam pove, ali ime obstaja in katere naslove vrača, končna točka z več naslovi ali za posrednikom pa lahko zakonito vrne več. Razrešitev imena je predpogoj, ne dokaz lastništva; vsakdo lahko usmeri ime na naslov in en naslov lahko odgovarja za veliko imen.
Nato preverite poslušalca na najdenih vratih, v skladu s transportom. Prek TCP openssl s_client -connect vpn.example.com:1194 -servername vpn.example.com izpiše verigo, ki jo strežnik predstavi. Prek UDP potrebujete DTLS: openssl s_client -dtls1_2 -connect vpn.example.com:1194 izvede isto rokovanje prek podatkovnih paketov. Dokončano rokovanje dokaže, da nekaj posluša in ima potrdilo, kar je več, kot pokaže ping, in manj, kot zahtevajo lastne nastavitve zaupanja profila.
Ko rokovanje ne uspe in gostitelj odgovarja na ping, so vrata verjetno napačna ali filtrirana. Vzemite to kot razlog, da zahtevate prava vrata, ne kot povabilo, da prečešete sosednja. nc -vzu tudi na nekaterih skladih poroča o uspehu, ko nič ne posluša, zato gola preiskava UDP ne pomeni nič brez rokovanja za njo.
Zatiče zaupanja berite ločeno od naslova
Naslov odloči, kam gre klient; blok zaupanja odloči, komu verjame, ko prispe. verify-x509-name "vpn.example.com" name pripne splošno ime subjekta, remote-cert-tls server pa zahteva razširjeno uporabo ključa za preverjanje pristnosti strežnika. Profil, ki vam ga preda operater, bi moral nositi oboje.
Iščite ca, vgrajen blok <ca> ter bodisi tls-crypt bodisi tls-auth. Profil z tls-auth potrebuje na klientu key-direction 1, ko stran strežnika uporablja smer 0, in neujemanje podre rokovanje z napako TLS, ki se bere kot okvara potrdila. Vgrajeni CA, ki ne pripada operaterju, katerega ime ste pravkar razrešili, pomeni, da je bila datoteka sestavljena iz dveh virov, in to je primer, ki si zasluži odločno zavrnitev.
verify-x509-name sprejema načine name, name-prefix ali subject, zadnji pa pričakuje polno razločevalno ime v točno tistem vrstnem redu, v katerem ga izpiše strežnik. Izberite način, ki ustreza obliki vrednosti, ker klient zavrne vsako povezavo, namesto da bi opozoril na skorajšnji zadetek. Za datoteko, ki je niste napisali, je name s preprostim imenom gostitelja najmanj presenetljiva izbira.
Preverite možnosti, ki tiho odpovejo
OpenVPN 2.6 se o šifrah pogaja prek data-ciphers, profil samo s staro vrstico cipher AES-256-CBC pa lahko dokonča nadzorni kanal in se nato ustavi na podatkih. Branje te vrednosti vam pove, ali je datoteka starejša od strežnika, ki se mu pridružujete; stran v priročniku različice 2.6 navaja vrstni red pogajanj, če jo morate citirati operaterju.
auth-user-pass brez imena datoteke pomeni, da bo klient vprašal, zato profil, ki je videti samostojen, še vedno potrebuje poverilnice. auth-user-pass credentials.txt pomeni, da pričakuje datoteko, ki vam je verjetno niso poslali. nobind in resolv-retry infinite sta običajna in neškodljiva, medtem ko je explicit-exit-notify samo za UDP in nesmiseln prek TCP.
Nič od tega ne spremeni, kam se profil poveže, vsak pa spremeni, ali se sploh poveže, in nič od tega ni vidno v klientovem pogovornem oknu za uvoz.
Odločite in nato zapišite, kaj ste odločili
Po tem branju so trije izidi in samo eden je uvoz. Ko se končna točka in zatiči ujemajo z navodili, prejetimi po ločenem kanalu, ga uvozite. Ko je končna točka videti pravilna, zatiči ali CA pa se ne ujemajo, prosite za popravljeno datoteko. Ko datoteka meša končne točke ali material CA iz različnih virov, jo izbrišite in prosite za svežo kopijo.
Zapišite zgoščeno vrednost, ki ste jo pregledali, da bo naslednja oseba vedela, ali se je datoteka spremenila: sha256sum profile.ovpn, prilepljeno poleg končne točke v vaših zapiskih. Profil je celotna ureditev, ne seznam naslovov, zato nikoli ne vstavite delujočega remote v tuj blok zaupanja, medtem ko obdržite njihove poverilnice.
Zasebne ključe in gesla imejte stran od posnetkov zaslona in klepetalnih niti, ko primerjate zapiske. Končna točka in nejavne možnosti zadostujejo za natančno vprašanje, ostalo pa spada v datoteko.
Če ga vseeno uvozite in prvi poskus ne uspe, zaženite klienta z --verb 3 in preberite prvih deset vrstic: razrešen naslov remote, dogovorjeni proto in napaka TLS se pojavijo v tem vrstnem redu, kar vam pove, katero od zgornjih preverjanj ste izpustili.