Aldoni --csd-wrapper al profilo transdonas lokan skripton al demono, kiu plenumas ĝin dum ensaluto, do la decido antaŭ vi estas koda revizio, ne preferenca ŝaltilo. La opcio ekzistas por ke la gastkontrola komponanto de enirejo povu esti anstataŭigita, kaj ĝi prenas vojon al skripto, kiun vi provizas. Ĉio sube supozas, ke la posedanto de la deplojo jam diris, kiu kontrolo de aparata stato estas bezonata; se tiu parto ankoraŭ malfermas, solvu ĝin unue. La gvidilo havas kvar paŝojn: trovu la malsukcesan etapon, legu la skripton, elektu la identecon sub kiu ĝi ruliĝas, kaj pruvu la rezulton.

Paŝo 1: Trovu la malsukcesan etapon

La lasta mesaĝo de la kliento kutime temas pri kuketo, kio estas la fino de ĉeno, ne ĝia komenco. HTTPS-ensaluto, kontrolo de servila atestilo, aŭtentiga interŝanĝo kaj stato-komponanto ĉiuj staras antaŭ tiu mesaĝo.

Notu la version kaj la uzatan ensalutan adreson, poste ripetu la provon kun detala eligo konservata sur via propra terminalo. Legu la unuan eraron, kiu ne estas reprovo, ne la lastan linion de la transskribo. Se la protokolo haltas antaŭ ol nomiĝas iu ajn taksa komponanto, la envolvilo ankoraŭ ne estas via problemo. Aldoni ĝin en tiu punkto nur larĝigas la surfacon, kiun vi devos defendi poste.

openconnect --version
openconnect --verbose --user="$VPN_USER" vpn.example.com </dev/null

Konservu la transskribon loke, ĉar kuketoj kaj aŭtentigaj respondoj estas alira materialo. Spuro algluita en babilejo estas liko de akreditaĵoj eĉ kiam la taksa paŝo aspektas sendanĝera. Kunhavigu la eraran tekston kaj la punkton en la fluo, kie ĝi aperis, neniam la utilan ŝarĝon.

Paŝo 2: Legu la skripton antaŭ ol ĝi eniros profilon

Envolvilo estas nur tiom fidinda, kiom la revizio, kiun vi ekzamenis, do fiksu tiun revizion kaj konservu ĝian haŝon apud la aproba noto. La du komandoj sube donas al vi fingrospuron kaj malmultekostan sintaksan kontrolon antaŭ ol vi legos eĉ unu linion. Ili ankaŭ donas al la sekva persono fiksan referencon, kio gravas kiam la dosiero vivas ekster pakaĵadministrado. Neniu el la komandoj diras, kion la skripto faras, do rulu ilin kaj daŭre legu.

sha256sum ./vpn-csd-wrapper.sh
bash -n ./vpn-csd-wrapper.sh

Legu la tutan dosieron kun kvar demandoj en la kapo: ĉu ĝi faras elirajn HTTP-vokojn, ĉu ĝi legas akreditaĵajn dosierojn aŭ medivariablojn, ĉu ĝi skribas ekster provizoran dosierujon, kaj ĉu iu branĉo raportas pasintan staton sen mezuri ion ajn. Tiu lasta ŝablono estas preteriro de politiko kun alkroĉita protokollinio. Kopiitaj envolvilo emas kaŝi ĝin malantaŭ kredinda aspektanta kontrolo. Se la skripto decidas, ke la aparato estas en ordo antaŭ ol rigardi la aparaton, haltu tie.

Kontrolu ankaŭ pakitajn ŝarĝojn, ĉar legebla kaplinio pruvas nenion pri la resto de la dosiero. Elŝuti skripton el forumfadeno ne faras ĝin fidinda nur ĉar ĝia nomo resonas veran gastkontrolan komponanton. Notu, kiu instalas ĝin, de kie ĝi venis kaj kiel ĝi estos ĝisdatigita.

grep -nE 'base64 -d|xxd -r|eval |curl |wget ' ./vpn-csd-wrapper.sh

Paŝo 3: Elektu la identecon, sub kiu la envolvilo ruliĝas

--csd-user malaltigas privilegiojn dum la programo CSD, TNCC aŭ HIP plenumiĝas. Tiu konto estas parto de la loka plenuma aranĝo, ne la uzantnomo sendata al la enirejo.

Donu al la envolvilo dediĉitan konton sen interaga ŝelo, sen sudo-rajtoj kaj sen grupaj membrecoj, kiujn ĝi ne bezonas. Donu legan aliron al la skripto kaj al la koncernaj dosieroj, kiujn ĝi inspektas, poste testu la malaltigon antaŭ ol tuŝi la VPN-profilon. Trovi la problemon ĉi tie estas pli malmultekosta ol trovi ĝin ene de la kliento.

sudo -u vpn-csd /usr/local/libexec/vpn-csd-wrapper.sh

Malaltigi privilegiojn limigas la damaĝon, kiun malbona skripto povas fari. Ĝi ne revizias la kodon, ne igas la raporton vera, nek pruvas, ke la enireja administranto akceptas ĉi tiun efektivigon kiel plenumon de la aparata politiko.

Paŝo 4: Konservu la ŝanĝon reigebla

Faru sekurkopion de la profilo antaŭ ol redakti ĝin, kaj tenu la envolvilon sub versia kontrolo por ke reigo restarigu konatan haŝon anstataŭ serĉi kopion. Notu la skriptan vojon, haŝon, plenuman uzanton kaj aprobanton en unu loko.

Por reigi, forigu la opcion, restartigu la klienton kaj konfirmu, ke la origina eraro revenas. Se la enirejo daŭre rifuzas la ensaluton post la reigo, io alia ankaŭ ŝanĝiĝis, kaj trovi tiun diferencon venas antaŭ ol reprovi la envolvilon. Konservu la antaŭan kopion dum la tuta ŝanĝa fenestro, kio por plej multaj teamoj signifas ĝis pasos la sekva bontenada fenestro.

Post sukcesa deplojo, kontrolu du aferojn anstataŭ unu: la tunelo ekfunkcias, kaj aparato, kiu devus malsukcesi la stato-kontrolon, ankoraŭ rifuziĝas. Konekto, kiu funkcias por ĉiuj, ne estas pruvo, ke la taksado postvivis vian ŝanĝon.

Mallongigoj, kiuj kreas duan problemon

Ne lasu la helpanton raporti konforman staton sen ruli la postulatajn kontrolojn, kaj ne anstataŭigu la platforman identecon por kongrui kun alia operaciumo. Pretendi alian platformon ne estas pruvo, ke la reala aparato plenumas la politikon. Ĝi lasas vin kun kliento, kiu mensogas ĉe ĉiu estonta ensaluto.

Malŝalti servilan kontrolon, reludi malnovan kuketon kaj staki nekontrolitajn skriptojn ĉiuj interŝanĝas videblan malsukceson kontraŭ nevidebla. Se la instalita kliento ne povas fini la subtenatan fluon, petu aprobitan alternativon anstataŭ fleksi la vian.

La gvidilo de OpenConnect dokumentas --csd-wrapper kaj --csd-user aparte, kaj tio estas la signo, kiu gravas: la skripto kaj la identeco estas du decidoj. Reviziu ilin aparte kaj notu ambaŭ. Tiam la ensaluta invito ĉesas esti enigmo, kiun vi solvas algluante kodon.

Rilataj artikoloj