Kako provjeriti server OpenVPN profila prije nego što ga uvezete
Prvo pročitajte remote unose, transportni sloj i pinove povjerenja u tekstualnom uređivaču; razrješavanje imena dokazuje dostupnost, nikada vlasništvo.
Neko vam pošalje profil, vi ga uvezete i trideset sekundi kasnije klijent bira odredište koje niko nije provjerio. Prvo pročitajte datoteku u tekstualnom uređivaču, jer sve što je važno staje u šaku direktiva: remote, proto, port, ca, cert, tls-crypt i verify-x509-name. Sve ostalo su zadane vrijednosti, a iznenađenja žive upravo tamo.
Nabrojite svaku krajnju tačku koju datoteka može koristiti
Počnite od krajnjih tačaka, jer jedan profil može sadržavati nekoliko. grep -nE '^[[:space:]]*(remote|proto|port|remote-random|connection)' profile.ovpn ispisuje svakog kandidata redom iz datoteke, uključujući one ugniježđene u ugrađene blokove <connection>.
Kada direktiva izostavi port, klijent se vraća na zadanu vrijednost slušača, pa samo remote vpn.example.com znači port 1194 s bilo kojim proto koji se pojavi kasnije u datoteci. Nekoliko običnih linija remote su alternative: klijent ih isprobava redom osim ako ih remote-random izmiješa, i nikada tiho ne zamjenjuje host drugog operatera. Dvije linije remote na nepovezanim domenima su tačka na kojoj se zaustavljate i pitate koja je bila namijenjena.
Obratite pažnju i na pisanje proto. tcp se prihvata kao sinonim za tcp-client na strani klijenta, ali tcp-server u klijentskom profilu je konfiguracijska greška koja češće visi nego što čisto pada.
Prvo potvrdite ime, pa port
dig +short vpn.example.com vam kaže postoji li ime i koje adrese vraća, a krajnja tačka s više adresa ili iza proksija može legitimno vratiti nekoliko. Razrješavanje imena je preduslov, ne dokaz vlasništva; svako može usmjeriti ime na adresu, a jedna adresa može odgovarati za mnoga imena.
Zatim provjerite slušača na portu koji ste našli, u skladu s transportom. Preko TCP-a openssl s_client -connect vpn.example.com:1194 -servername vpn.example.com ispisuje lanac koji server predstavlja. Preko UDP-a treba vam DTLS: openssl s_client -dtls1_2 -connect vpn.example.com:1194 vodi isto rukovanje kroz datagrame. Završeno rukovanje dokazuje da nešto sluša i drži certifikat, što je više nego što ping pokazuje i manje nego što zahtijevaju vlastite postavke povjerenja profila.
Kada rukovanje ne uspije a host odgovara na ping, port je vjerovatno pogrešan ili filtriran. Uzmite to kao razlog da zatražite tačan port, a ne kao poziv da premetete obližnje. nc -vzu također prijavljuje uspjeh na nekim stekovima kad ništa ne sluša, pa gola UDP provjera ne znači ništa bez rukovanja iza nje.
Pinove povjerenja čitajte odvojeno od adrese
Adresa odlučuje kuda klijent ide; blok povjerenja odlučuje kome vjeruje kad stigne. verify-x509-name "vpn.example.com" name prikiva opće ime subjekta, a remote-cert-tls server zahtijeva proširenu upotrebu ključa za autentifikaciju servera. Profil koji vam preda operater treba nositi oboje.
Tražite ca, ugrađeni blok <ca> i bilo tls-crypt bilo tls-auth. Profilu s tls-auth treba key-direction 1 na klijentu kada strana servera koristi smjer 0, a neusklađenost obara rukovanje TLS greškom koja se čita kao kvar certifikata. Ugrađeni CA koji ne pripada operateru čije ste ime upravo razriješili znači da je datoteka sastavljena iz dva izvora, i to je slučaj koji valja odbiti bez razgovora.
verify-x509-name prihvata režime name, name-prefix ili subject, a posljednji očekuje puno razlikovno ime u tačnom redu kojim ga server ispisuje. Odaberite režim koji odgovara obliku vrijednosti, jer klijent odbija svaku vezu umjesto da upozori na blizu promašaj. Za datoteku koju niste sastavili, name s običnim imenom hosta je najmanje iznenađujući izbor.
Provjerite opcije koje tiho padaju
OpenVPN 2.6 pregovara šifre kroz data-ciphers, a profil koji nosi samo stari red cipher AES-256-CBC može završiti kontrolni kanal i zatim zastati na podacima. Čitanje te vrijednosti kaže vam da li datoteka prethodi serveru kojem se pridružujete; stranica priručnika za 2.6 navodi red pregovaranja ako to trebate citirati operateru.
auth-user-pass bez imena datoteke znači da će klijent pitati, pa profil koji izgleda samostalan ipak treba akreditive. auth-user-pass credentials.txt znači da očekuje datoteku koja vam vjerovatno nije poslana. nobind i resolv-retry infinite su obični i bezopasni, dok je explicit-exit-notify samo za UDP i besmislen preko TCP-a.
Ništa od ovoga ne mijenja kuda se profil povezuje, ali svako mijenja hoće li se uopće povezati, i ništa od toga nije vidljivo u dijalogu za uvoz klijenta.
Odlučite, pa zapišite šta ste odlučili
Nakon ovog čitanja postoje tri ishoda i samo jedan je uvoz. Kada se krajnja tačka i pinovi slažu s uputama koje ste dobili drugim kanalom, uvezite ga. Kada krajnja tačka izgleda ispravno ali se pinovi ili CA ne slažu, zatražite ispravljenu datoteku. Kada datoteka miješa krajnje tačke ili CA materijal iz različitih izvora, obrišite je i zatražite svježu kopiju.
Zapišite hash koji ste pregledali, da sljedeća osoba može znati je li se datoteka promijenila: sha256sum profile.ovpn, zalijepljen pored krajnje tačke u vašim bilješkama. Profil je cjelovit raspored, a ne spisak adresa, pa nikada ne spajajte radni remote u tuđi blok povjerenja zadržavajući njihove akreditive.
Držite privatne ključeve i lozinke izvan snimaka ekrana i chat niti dok upoređujete bilješke. Krajnja tačka i ne-tajne opcije dovoljne su za precizno pitanje, a ostalo pripada datoteci.
Ako ga ipak uvezete i prvi pokušaj ne uspije, pokrenite klijent s --verb 3 i pročitajte prvih deset redova: razriješena adresa remote, dogovoreni proto i TLS greška pojavljuju se tim redom, što vam kaže koju ste od provjera gore preskočili.