Imani ni kwamba hati ya here yenye mistari minne ni kuingia kamili bila mwingiliano, na hiyo inashikilia hadi lango litakapotoa makundi mawili, kuchapisha bango, au kuomba token baada ya nenosiri. Wakati huo script hiyo hiyo inaandika nenosiri kwenye menyu iliyokuwa ikitarajia namba. Mteja wa mstari wa amri kwenye Linux anaweza kuandikiwa script, lakini tu ikiwa unampa anachosubiri kweli, si kile ambacho mwongozo ulidhania.

Hati ya here isiyobadilika ni hadithi

Mteja wa Linux wa Cisco husakinisha programu ndogo katika /opt/cisco/anyconnect/bin/vpn, na Secure Client 5 bado anaitoa. Wakati huduma ya vpnagentd inaendesha, bendera -s inasoma majibu kutoka ingizo la kawaida kwa mpangilio ambao mteja anayaomba. Mpangilio huo si thabiti kati ya seva.

Menyu ya makundi huongeza mstari mmoja. Bango la kuingia huongeza mwingine. Ombi la token baada ya nenosiri huvunja kabisa script ya mistari minne, kwa sababu mstari wa tano haungekuwa token kamwe. Kushindikana ni kimya: mteja hupokea mfuatano usio sahihi, jaribio la kuunganisha huisha, na script haitoi taarifa yoyote yenye manufaa.

Endesha mteja kwa mkono mara moja dhidi ya lango na toleo lile lile, na uandike vidokezo kwa mpangilio vinavyoonekana. Nakala hiyo ni vipimo ambavyo script yako inapaswa kutimiza.

Mteja anasubiri nini

Katika hali ya kawaida ya kundi moja, mfuatano ni jina la mtumiaji, nenosiri na wakati mwingine uthibitisho wa bango. Mstari wa kwanza wa hati ya here huwa kielekezi cha menyu tu wakati seva inaonyesha menyu kweli, ndiyo sababu script moja inafanya kazi mahali pamoja na kushindikana mahali pengine.

/opt/cisco/anyconnect/bin/vpn -s connect vpn.example.net <<EOF
0
alice
$VPN_PASSWORD
y
EOF

Soma hii kama majibu manne kwa maswali manne yanayowezekana, si kama itifaki isiyobadilika. Sufuri ni uchaguzi wa menyu, si nenosiri, na y ya mwisho inakubali bango ambalo lango nyingi hazilizindui kamwe.

Tumia expect pale mpangilio usipotabirika

Mpangilio wa vidokezo unapobadilika, acha kuhesabu mistari na subiri kidokezo badala yake. Script ya expect huanzisha amri ya connect, husubiri kidokezo cha jina la mtumiaji, hutuma, husubiri kidokezo cha nenosiri, hutuma, kisha husubiri hali ya kuunganishwa. Kila kusubiri kina muda wake wa kikomo.

Chukua muda wa kikomo kama kushindikana na utoke. Script inayoendelea kutuma ingizo baada ya kidokezo kisichotarajiwa itaandika nenosiri kwa furaha kwenye shell, menyu au kitu kingine chochote kinachosoma. Hivyo ndivyo script ya kuingia inavyokuwa tukio.

Expect pia inakupa nakala unayoweza kuiweka kwenye kumbukumbu ikiwa na siri imeondolewa, na hiyo ina thamani zaidi kuliko msimbo wa kutoka wakati lango linabadilisha vidokezo vyake baada ya kusasishwa.

Siri lazima iishi mahali fulani

Kila toleo la tatizo hili lina udhaifu mmoja: nenosiri lazima liwepo kwa namna ambayo mteja anaweza kuisoma. Kulipitisha kama hoja kunalia dhihirisha kwenye jedwali la michakato. Kulitoa kupitia bomba mara nyingi kuliweka kwenye historia ya shell. Yote mawili yanasomwa na watumiaji wengine wa ndani kwenye mwenyeji wa kuruka unaoshirikiwa.

install -m 600 /dev/null ~/.vpn-secret
umask 077; VPN_PASSWORD=$(cat ~/.vpn-secret) /opt/cisco/anyconnect/bin/vpn -s connect vpn.example.net

Faili yenye hali 600 inayomilikiwa na akaunti ni kiwango cha chini, na bado ni siri ya maandishi wazi kwenye diski. secret-tool lookup inasoma kutoka pete ya funguo ya Linux, na kwenye macOS kazi hiyo hiyo inafanywa na security find-generic-password -w. Pale ambapo shirika linatumia uthibitishaji wa cheti au SAML, ipendelee, kwa sababu nenosiri lililohifadhiwa pamoja na MFA bado haviwezi kukamilisha kuingia bila mtu.

Thibitisha handaki, kisha chukua umiliki wa kukatisha

Usiamini kutokuwepo kwa maandishi ya hitilafu. Muulize mteja hali yake na ukague kiolesura kwa kujitegemea:

/opt/cisco/anyconnect/bin/vpn state
ip -brief address

Hali inapaswa kusomeka Connected, na kiolesura cha handaki kinapaswa kuwa na anwani. Kisha omba rasilimali moja ambayo handaki inapaswa kuifikia, kwa sababu hali iliyounganishwa bila njia ni matokeo halisi na ni rahisi kuikosa.

Katisha kwa vpn disconnect, na uache script iliyoanzisha handaki ichukue umiliki wa kukatisha. Kazi iliyoshindikana inayoacha kipindi wazi hutumia nafasi ya leseni na inaonekana kama tatizo la uthibitishaji kwa mtu anayefuata anayejaribu.

Mpangilio wa kazi: thibitisha vpnagentd, rekodi mpangilio halisi wa vidokezo, chagua hati ya here au expect, weka siri nje ya argv na historia, thibitisha hali na rasilimali moja, kisha katisha katika script hiyo hiyo.

Makala zinazohusiana