AnyConnect fuq Linux: tiskriptja s-sekwenza tal-login b'mod sigur
Il-binarju vpn ta' Cisco AnyConnect jaqra t-tweġibiet minn stdin, u dak biżżejjed għal login li jista' jiġi ripetut. Ibni s-sekwenza, ipproteġi l-fajl, ivverifika u waqaf.
Il-klijent vpn li jiġi ma' Cisco AnyConnect iġib ruħu bħal konversazzjoni: jistampa mistoqsija, jistenna linja, imbagħad jistampa li jmiss. Jekk tħaddan dik il-konversazzjoni minn fajl jew minn pajp, l-istess binarju jaħdem mingħajr sorveljanza. It-teknika hija direzzjoni waħda mill-ġdid flimkien ma' lista ordnata ta' tweġibiet, u hija l-lista, mhux id-direzzjoni mill-ġdid, li tiddetermina jekk l-iskript huwiex affidabbli.
Żewġ affarijiet ikissru dan fil-prattika. L-ordni tal-mistoqsijiet tinbidel meta l-gateway jistaqsi xi ħaġa żejda, u password maħżun ibiddel żball wieħed tat-tipjip f'lockout tal-kont. Ittratta s-sekwenza bħala data vverżjonata li tista' tqabbel wara kull bidla fil-gateway. Falli b'ħoss qawwi minflok terġa' tipprova, għax iċ-ċiklu huwa eżattament il-mod kif password miktuba ħażin issir kont imsakkar.
Sekwenza waħda, fl-ordni li fiha l-klijent jistaqsi
Ħaddem il-klijent b'mod interattiv darba u ikteb kull mistoqsija fl-ordni li fiha tidher. Dak it-traskrizzjoni jsir il-fajl tat-tweġibiet. Meta tidderieġi l-fajl fil-binarju, l-ewwel linja trid tkun il-kmand tal-konnessjoni nnifsu, għalhekk is-sekwenza tibda b'isem ta' host u mhux b'isem tal-utent.
connect vpn.example.com
0
<username>
<password>
y
exit
Il-0 vojt jagħżel l-ewwel profil tal-konnessjoni meta l-gateway joffri lista; uża l-indeks li jistampa l-gateway tiegħek. y jaċċetta banner tal-login, għalhekk ħassar dik il-linja jekk m'hemmx banner u daħħal waħda fejn il-gateway tiegħek jistaqsi mistoqsija addizzjonali. exit fl-aħħar huwa dak li jħalli lill-klijent jispiċċa b'mod nadif meta l-aħħar tweġiba tkun ġiet ikkunsmata.
/opt/cisco/anyconnect/bin/vpn -s < anyconnect.txt
Il-mod mhux interattiv hawn mhuwiex fakultattiv. Mingħajr -s il-klijent jista' jieħu t-terminal u jinjora l-input dirett mill-ġdid; bih it-tweġibiet jinqraw mill-fluss u l-proċess jerġa' lura. Fejn il-binarju jeħtieġ privileġġi ogħla, dawwar is-sejħa f'sudo -n biex l-iskript ifalli minnufih minflok ma jimblokka fuq talba tal-password.
Fejn tnixxi l-fajl tat-tweġibiet
Fajl li fih password huwa kredenzjali, għalhekk agħtih il-permessi ta' waħda: mod 600, proprjetà tal-kont li jmexxi x-xogħol, u qatt ġewwa direttorju maqsum jew sinkronizzat. Oħolqu bil-mod diġà applikat minflok ma ssewwih wara, għax fajl għal ftit ħin jinqara minn kulħadd bejn il-kitba u l-chmod.
install -m 600 /dev/null ~/.config/anyconnect.txt
chmod 700 ~/.config
In-nofs l-ieħor huwa argv. Password mgħoddi bħala argument jidher lil kull utent lokali li jelenka l-proċessi, u jispiċċa wkoll fl-istorja tas-shell. Aqrah minn deskrittur tal-fajl jew minn varjabbli tal-ambjent minflok, u qiegħed it-tagħbija fil-virgoletti biex is-shell ma tkunx tista' tespandi xejn ġo fiha.
printf '%s\n' 'connect vpn.example.com' '0' "$VPN_USER" "$VPN_PASS" 'y' 'exit' \
| sudo -n /opt/cisco/anyconnect/bin/vpn -s
Oqgħod attent għall-virgoletti. Ġewwa virgoletti doppji password li fiha ! tista' tiġi estiża minn shell interattiv qabel ma l-klijent jaraha, u l-falliment jiġi bħala żball ġeneriku event-not-found li jidher bħal problema tal-protokoll.
Ipprova t-tunnel, imbagħad agħlqu
Stat konness jipprova biss li l-klijent jemmen li għandu sessjoni. Agħżel host li jwieġeb biss minn ġewwa n-netwerk korporattiv u ippruvah darba qabel tagħmel xi ħaġa oħra. Falliment hemmhekk huwa difett fir-rotta jew fil-politika, u li terġa' tmexxi l-login mhux se jibdlu.
/opt/cisco/anyconnect/bin/vpn state
curl -sS -o /dev/null -w '%{http_code}\n' --max-time 10 https://<internal-host>/
/opt/cisco/anyconnect/bin/vpn disconnect
Iċċekkja l-output tal-istat qabel u wara s-skonnessjoni. Klijent li jitħalla b'sessjoni skaduta jista' jirrifjuta l-konnessjoni li jmiss waqt li l-iskript għadu jirrapporta suċċess, u dak il-mod ta' falliment huwa inviżibbli jekk tħares biss lejn il-kodiċijiet tal-ħruġ. Qabbel iż-żewġ qari minflok ma tafda fit-tieni waħdu. L-alias fil-profil tas-shell biżżejjed għall-użu ta' kuljum, filwaqt li kull ħaġa skedata jistħoqqilha l-istess reviżjoni tal-kredenzjali u tal-identità bħal kull xogħol ieħor mingħajr sorveljanza.
Meta lista fissa tieqaf tkun sigura
Fajl tat-tweġibiet jikkodifika l-ordni tal-mistoqsijiet tal-lum. Banner mibdul, tibdil sfurzat tal-password jew sfida tat-tieni fattur ibiddluh f'ċiklu li jista' jsakkar il-kont, għalhekk l-iskript irid joħroġ fl-ewwel tweġiba mhux mistennija minflok ma jerġa' jibda.
Aqbad dak li stampa l-klijent, irritorna status mhux żero u ħalli lill-min jissejjaħ jiddeċiedi. Fejn il-gateway jitlob it-tieni fattur, it-tweġiba onesta hija li login mingħajr sorveljanza mhuwiex disponibbli għal dak il-profil, mhux li s-sekwenza għandha bżonn linja oħra.
Ir-rotazzjoni tappartjeni għall-istess reviżjoni. Jekk il-kredenzjali jinħażnu, iddeċiedi min jista' jaqrahom, meta jinbidlu u x'ineħħihom meta l-host jinbena mill-ġdid. Skript li jaħdem sena għax ħadd ma mess il-password mhuwiex disinn, iżda inċident li jistenna politika tar-rotazzjoni.
Profili li mhumiex AnyConnect
Żewġ stili eqdem ta' kredenzjali Cisco jiġu mħawda ma' dan. Profil vpnc jitlob IPSec ID, li fil-fatt huwa l-isem tal-grupp, imbagħad sigriet tal-grupp, imbagħad il-kredenzjali tiegħek stess, u t-tlieta jiġu minn min imexxi l-gateway. Cisco IPsec antik huwa protokoll differenti minn AnyConnect, għalhekk vpnc ma jistax jilħaq servizz biss AnyConnect; openconnect --protocol=anyconnect huwa l-klijent miftuħ għal dak ix-xogħol.
Fajl .pcf jiddeskrivi l-profil tal-klijent eqdem. L-host, l-isem tal-grupp u l-password tal-grupp ġo fih jistgħu jerġgħu jiddaħħlu bl-idejn fi klijent li jitkellem Cisco IPsec, għalkemm il-fajl mhuwiex import universali u kull port jew mod ta' tunneling mhux awtomatiku normalment jisparixxi fit-trasferiment.
Ibda minn dak li l-gateway verament joffri, imbagħad agħżel il-klijent li jitkellem dak il-protokoll. L-ikkupjar ta' profil minn sit ieħor huwa l-mod kif in-nies jispiċċaw jiddebaggjaw kredenzjali li qatt ma kienu l-problema.