Cisco Secure Client-en saioa Linux shell batetik, GUIrik gabe
Here-document bat ez da saio-hasierako protokolo bat. Idatz ezazu gonbidapenen benetako ordena, erabili expect aldatzen denean, eta eduki pasahitza argv eta historiatik kanpo.
Ustea da lau lerroko here-document bat saio-hasiera ez-interaktibo osoa dela, eta uste horrek eusten du atebideak bi talde eskaini, banner bat inprimatu edo pasahitzaren ondoren token bat eskatu arte. Orduan script berak pasahitza zenbaki bat espero zuen menu batean idazten du. Linuxeko komando-lerroko bezeroa scripteatu daiteke, baina soilik benetan espero duena ematen badiozu, tutorialak suposatu zuena eman beharrean.
Here-document finkoa mitoa da
Ciscoren Linux bezeroak programa txiki bat instalatzen du /opt/cisco/anyconnect/bin/vpn-en, eta Secure Client 5-ek oraindik bidaltzen du. vpnagentd zerbitzua martxan dagoela, -s flagak erantzunak irakurtzen ditu sarrera estandarretik bezeroak eskatzen dituen ordenan. Ordena hori ez da finkoa zerbitzarien artean.
Talde-menu batek lerro bat gehitzen du. Saio-hasierako banner batek beste bat gehitzen du. Pasahitzaren ondorengo token eskaera batek lau lerroko script bat erabat hausten du, bosgarren lerroa ez zelako inoiz token izango. Hutsegitea isila da: bezeroak kate okerra jasotzen du, konexio-saioak amaitzen du, eta scriptak ez du ezer erabilgarririk jakinarazten.
Exekutatu bezeroa eskuz behin atebide eta bertsio beraren aurka, eta idatz itzazu gonbidapenak agertzen diren ordenan. Transkripzio hori da zure scriptak bete behar duen zehaztapena.
Zer espero duen bezeroak
Talde bakarreko ohiko kasuan segida hau da: erabiltzaile-izena, pasahitza eta batzuetan banner baten berrespena. Here-document baten lehen lerroa menu-indize bihurtzen da zerbitzariak benetan menu bat aurkezten duenean soilik, eta horregatik script bera leku batean dabil eta hurrengoan huts egiten du.
/opt/cisco/anyconnect/bin/vpn -s connect vpn.example.net <<EOF
0
alice
$VPN_PASSWORD
y
EOF
Irakur ezazu hori lau galdera posibleetako lau erantzun gisa, ez protokolo finko gisa. Zeroa menu-hautaketa bat da, ez pasahitza, eta amaierako y-k inoiz bidaltzen ez duten banner bat onartzen du.
Erabili expect ordena aurreikustea ez denean
Gonbidapenen ordena aldatzen denean, utzi lerroak zenbatzeari eta itxaron gonbidapenari. expect script batek connect komandoa abiarazten du, erabiltzaile-izenaren gonbidapenaren zain egoten da, bidaltzen du, pasahitzaren gonbidapenaren zain egoten da, bidaltzen du, eta gero konektatutako egoeraren zain geratzen da. Itxaronaldi bakoitzak bere denbora-muga du.
Hartu denbora-muga gainditzea hutsegite gisa eta irten. Gonbidapen ustekabeko baten ondoren sarrera bidaltzen jarraitzen duen script batek pozik idatziko du pasahitza shell batean, menu batean edo irakurtzen ari den edozein tokitan. Horrela bihurtzen da saio-hasierako script bat gertakari.
expect-ek sekretua kenduta erregistra dezakezun transkripzio bat ere ematen dizu, eta horrek irteera-kodeak baino balio handiagoa du atebideak eguneraketa baten ondoren bere gonbidapenak aldatzen dituenean.
Sekretuak nonbait bizi behar du
Arazo honen bertsio guztiek ahulezia bera dute: pasahitzak bezeroak irakur dezakeen forma batean egon behar du. Argumentu gisa pasatzeak prozesuen taulan uzten du agerian. Hodi baten bidez oihukatzeak shell historialean jartzen du sarritan. Biak irakur ditzakete beste erabiltzaile lokal batzuek partekatutako jauzi-host batean.
install -m 600 /dev/null ~/.vpn-secret
umask 077; VPN_PASSWORD=$(cat ~/.vpn-secret) /opt/cisco/anyconnect/bin/vpn -s connect vpn.example.net
Kontuaren jabetzako 600 moduko fitxategi bat da gutxienekoa, eta oraindik testu arrunteko sekretua da diskan. secret-tool lookup Linux gako-eraztunetik irakurtzen du, eta macOS-en security find-generic-password -w-k egiten du lan bera. Erakundeak ziurtagiri edo SAML autentifikazioa onartzen duen tokian, hobetsi hura, gordetako pasahitz batek eta MFAk batera ere ezin baitute gizakirik gabe saio-hasiera osatu.
Egiaztatu tunela, eta gero hartu itzaltzearen ardura
Ez fidatu errore-testurik ez egoteaz. Galdetu bezeroari bere egoeraren berri eta egiaztatu interfazea modu independentean:
/opt/cisco/anyconnect/bin/vpn state
ip -brief address
Egoerak Connected esan beharko luke, eta tunel-interfaze batek helbide bat izan beharko luke. Gero eskatu tunelak iritsi behar duen baliabide bat, ibilbiderik gabeko egoera konektatu bat emaitza erreala baita eta erraz alde batera uzten dena.
Deskonektatu vpn disconnect erabiliz, eta utzi tunela abiarazi zuen scriptari itzaltzearen ardura hartzen. Saioa irekita uzten duen lan hutsak lizentzia-leku bat kontsumitzen du eta hurrengo saiatzen denarentzat autentifikazio-arazo bat bezala ikusten da.
Lan-ordena: egiaztatu vpnagentd, harrapatu gonbidapenen benetako ordena, aukeratu here-document edo expect, eduki sekretua argv eta historiatik kanpo, egiaztatu egoera eta baliabide bat, eta gero deskonektatu script beran.