Hedapen-etiketak dira jendeak funtzio honetara jotzeko arrazoi ohikoa: konexio bakoitzak gune edo rol moduko zerbait eraman behar du, eta zerbitzariak hori irakurri behar du bigarren kredentzial-formatu bat asmatu gabe. Komunitateko OpenVPN-ek badu mekanismoa jada, eta txikia da. Mina ematen duen zatia itxaropenak dira. Bezeroaren profilean aldagai arrunt bat ezartzeak ez du ezer egiten zerbitzarian, eta iristen den balio batek bezeroak bidali zuela baino ez du frogatzen.

Hau funtzionatzen duen bidearen gida da, zer iritsi zen benetan erakusten duen egiaztapen-urratsa eta konfigurazio erdiko hook-ik uzten ez duen atzera-egitea. Ezerk ez du ziurtagiri berririk, plugin berririk edo protokolo-luzapenik behar hemen.

Ezarri aldagaia eta gaitu bidea

Bi lerrok egiten dute lana bezeroaren profilean, eta biak beharrezkoak dira. Lehenengo gabe ez dago bidaltzeko ezer; bigarren gabe bezeroak ez du pareko informaziorik eskaintzen. Ordenak ez du axola, eta hori jakitea merezi du bi lerrok askotan profil sortu baten zati desberdinetan amaitzen dutelako. Garrantzitsua da biak bizirik irautea profilean berridazten duen edozer baino lehen, bezeroak irakurri aurretik.

setenv UV_DEPLOY field-support
push-peer-info

UV_ aurrizkia ez da apaingarria. DEPLOY aldagai arrunta bezeroaren prozesuan bertan geratzen da eta ez da inoiz birbidaltzen, aurrizkidun formak protokoloak erabiltzaileak definitutako eremuei gordetzen dien izen-espazioa da bitartean. Utzi gainerako profil onartua ukitu gabe eta egiaztatu zabaltzen duzun bezeroaren bertsioak bi direktibak onartzen dituela hedatu aurretik.

Egiaztapen praktiko bat hemen dagokio, ez amaieran: ziurtatu direktiba bezeroaren binariora iristen dela eta ez duela bilgarri batek irentsi. Bere komando-lerroa sortzen duen bezero grafiko batek, edo gordetako profila berriz kargatzen duen kudeaketa-interfaze batek, ezagutzen ez dituen lerroak bota ditzake. Zerbitzariak ezer ikusten ez badu, hori da begiratzeko lehen lekua.

Irakurri eremua zerbitzariko hook batetik

Zerbitzariaren aldean, jasotako pareko informazioa balioztatu eta konexioaren lan-fluxuaren ingurunera txertatzen da, eta horrek egiten du hook batetik irakurgarri zure protokolo-lanik gabe. Zerbitzariak ez du kontrol-kanala aztertu behar edo zuretzat ezer gorde; balioa hor dago konexioa ezartzen ari den bitartean. Etiketa autentifikatutako izenaren ondoan erregistratzen duen client-connect script minimoak itxura hau du.

#!/bin/sh
# /etc/openvpn/server/hooks/label.sh
printf '%s %s\n' "$common_name" "${UV_DEPLOY:-unset}" \
  >> /var/log/openvpn/deploy-labels.log

Irakurri aldagaia ingurunearen bidez, erregistroa aztertu beharrean, eta eman beti balio lehenetsi bat. ${UV_DEPLOY:-unset} scriptak funtzionatzen jarraitzen du eremua inoiz bidaltzen ez duten bezeroentzat, hau da, hedapen mailakatu batean ohiko egoera. Ez bota ingurune osoa erregistro batera izena aurkitzeko; etiketak baino askoz gehiago dauka, gorde nahi ez zenituen balioak barne.

Exekutatu scripta eskuz eta unset jakinaraziko du denetarako, shell eskuzko batek ez baitu konexioaren ingurunea eramaten. Hori ez da scriptaren akats bat eta ez da eremua falta den froga. Probatu konexio erreal baten bidez, aldagaia existitzen den testuinguru bakarra.

Egiaztatu zer iritsi zen benetan

Konektatu bezero bat etiketarekin eta beste bat gabe, eta gero irakurri fitxategia. Bikotea da proba: lerro batek balioa eraman behar du eta besteak lehenetsia, eta biek espero duzun identitate autentifikatu bera izendatu behar dute.

tail -n 5 /var/log/openvpn/deploy-labels.log
# field-support deployed-client-07
# unset         legacy-laptop-02

Iruzkin-lerro horiek irteeraren forma dira, ez zure zerbitzariko transkripzioa; irakurri zure fitxategia. Bigarren bezeroak ere balio bat erakusten badu, aldagaia ingurunean beste nonbait ezarrita dago, eta zaharkitutako ezarpen bat irakurtzen ari zara, pareko eremua ez ezik.

Egiaztatu zerbitzariaren erregistroa konexiorako ere. Pareko informazioa han ager daiteke, eta hori erosoa da arazketarako eta balioak aspergarri edukitzeko arrazoia: ez pertsonen izenik, ez tiket-zenbakirik, ez erregistroa irakurtzen duenari erakustea gustatuko ez zenukeen ezer.

Hartu etiketa baieztapen gisa, ez identitate gisa

Bezeroaren profila editatu dezakeen edonork alda dezake etiketa, eta tunela autentifikatuta egoteak ez du etiketa autoritario bihurtzen. Garraioak balioa babesten du bidean; ez du baieztapena ziurtatzen. Baimena identitate autentifikatuarena eta zerbitzariak duen inskripzio-erregistro batena izaten jarraitzen du, etiketa erregistro horrekin alderatuta garrantzitsua denean.

Bereizketa horrek erabakitzen du non erabil daitekeen etiketa. Erabilera onak saio bat erregistro-fitxategi egokira bideratzea, panel batean bistaratze-talde bat aukeratzea edo laguntza-saio bat etiketatzea dira, geroago pertsona batek aurkitu dezan. Erabilera txarrak gailu bat azpisare batera onartzea, suebaki-politika bat hautatzea edo saioak zein bezeroren datuak irakur ditzakeen erabakitzea dira.

Balioztatu balioa bide, kontsulta edo shell-komando batera iritsi aurretik. Espero diren kateen baimen-zerrenda nahikoa da hedapen-etiketa baterako, eta ez du ezer kostatzen. Ez txertatu inoiz parekoak emandako kate bat shell-komando lerroan, eta mugatu gordetako edozein behaketa saiora, eta ez hurrengo bezeroak berrerabiliko duen tunel-helbide batera.

case "${UV_DEPLOY:-}" in
  field-support|field-qa|lab) : ;;
  *) UV_DEPLOY=unknown ;;
esac

Itzuli garbi

Funtzioa kentzea bi ezabaketa eta egiaztapen bat dira. Kendu setenv eta push-peer-info lerroak bezeroaren profiletik, eta gero kendu edo desgaitu hook-a eta haren erregistro-helmuga zerbitzarian.

grep -rn 'UV_DEPLOY\|push-peer-info' /etc/openvpn/
tail -n 3 /var/log/openvpn/deploy-labels.log

Konektatu berriro bezero bat ondoren eta egiaztatu erregistro-lerroa agertzeari uzten diola. Profil-aldaketaren ondoren martxan jarraitzen duen hook bat proba-gailu batean oraindik hedatuta dagoen bigarren profil bat izan ohi da, eta orain aurkitzea auditoria batean aurkitzea baino merkeagoa da.

Amaieran geratzen dena jatorri dokumentatua duen saio-metadatu zati txiki eta mugatu bat da: bezeroak baieztatzen du, zerbitzariak erregistratzen du, eta sarbideari buruzko ezer ez da horren mendean. Hori da funtzioaren bertsio erabilgarria, eta ez du kredentzial berririk behar horra iristeko.

Erlazionatutako artikuluak