vpn odjemalec, ki pride s Cisco AnyConnect, se obnaša kot pogovor: izpiše poziv, počaka na vrstico in nato izpiše naslednjega. Če ta pogovor napeljete iz datoteke ali cevi, ista binarna datoteka teče brez nadzora. Tehnika je ena preusmeritev in urejen seznam odgovorov, in prav seznam, ne preusmeritev, odloča, ali je skripta zanesljiva.

V praksi to pokvarita dve stvari. Vrstni red pozivov se premakne, ko prehod zahteva nekaj dodatnega, in shranjeno geslo spremeni eno tipkarsko napako v zaklep računa. Obravnavajte zaporedje kot verzionirane podatke, ki jih lahko primerjate po vsaki spremembi prehoda. Spodletite glasno namesto ponovnega poskusa, ker je zanka ravno pot, po kateri napačno vtipkano geslo postane zaklenjen račun.

Eno zaporedje, v vrstnem redu, v katerem sprašuje odjemalec

Zaženite odjemalec enkrat interaktivno in zapišite vsak poziv v vrstnem redu, v katerem se pojavi. Ta prepis postane datoteka odgovorov. Ko datoteko preusmerite v binarno datoteko, mora biti prva vrstica sama ukaz za povezavo, zato se zaporedje začne z imenom gostitelja in ne z uporabniškim imenom.

connect vpn.example.com
0
<username>
<password>
y
exit

Goli 0 izbere prvi profil povezave, ko prehod ponudi seznam; uporabite indeks, ki ga izpiše vaš prehod. y sprejme pasico za prijavo, zato izbrišite tisto vrstico, če pasice ni, in vstavite eno tam, kjer vaš prehod postavi dodatno vprašanje. Končni exit omogoči odjemalcu, da se čisto konča, ko je zadnji odgovor porabljen.

/opt/cisco/anyconnect/bin/vpn -s < anyconnect.txt

Neinteraktivni način tu ni izbira. Brez -s lahko odjemalec prevzame terminal in prezre preusmerjeni vnos; z njim se odgovori berejo iz toka in proces se vrne. Kjer binarna datoteka potrebuje povišane pravice, ovijte klic v sudo -n, da skripta takoj spodleti, namesto da se blokira na zahtevi za geslo.

Kje datoteka odgovorov pušča

Datoteka z geslom je poverilnica, zato ji dajte pravice poverilnice: način 600, v lasti računa, ki izvaja opravilo, in nikoli znotraj deljene ali sinhronizirane mape. Ustvarite jo z že uporabljenim načinom, namesto da jo popravljate pozneje, ker je datoteka med pisanjem in chmod za hip berljiva vsem.

install -m 600 /dev/null ~/.config/anyconnect.txt
chmod 700 ~/.config

Druga polovica je argv. Geslo, posredovano kot argument, je vidno vsakemu lokalnemu uporabniku, ki izpiše procese, in pristane tudi v zgodovini lupine. Berite ga iz opisnika datoteke ali okoljske spremenljivke, in koristno vsebino postavite v narekovaje, da lupina znotraj ne more ničesar razširiti.

printf '%s\n' 'connect vpn.example.com' '0' "$VPN_USER" "$VPN_PASS" 'y' 'exit' \
  | sudo -n /opt/cisco/anyconnect/bin/vpn -s

Pazite na narekovaje. Znotraj dvojnih narekovajev lahko geslo z ! razširi interaktivna lupina, preden ga odjemalec sploh vidi, in napaka pride kot splošna napaka event-not-found, ki je videti kot težava s protokolom.

Dokažite tunel, nato ga zaprite

Stanje povezano dokaže le, da odjemalec verjame, da ima sejo. Izberite gostitelja, ki odgovarja samo znotraj korporativnega omrežja, in ga enkrat preizkusite, preden storite kar koli drugega. Napaka tam je okvara usmerjanja ali politike, in ponovno zaganjanje prijave tega ne bo spremenilo.

/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

Preverite izhod stanja pred prekinitvijo in po njej. Odjemalec, ki ostane s staro sejo, lahko zavrne naslednjo povezavo, medtem ko skripta še vedno poroča o uspehu, in ta način odpovedi je neviden, če gledate le izhodne kode. Primerjajte oba odčitka, namesto da zaupate drugemu samemu. Vzdevki v profilu lupine zadostujejo za vsakodnevno rabo, medtem ko si vse načrtovano zasluži enak pregled poverilnic in identitete kot vsako drugo opravilo brez nadzora.

Ko fiksni seznam ni več varen

Datoteka odgovorov kodira današnji vrstni red pozivov. Spremenjena pasica, vsiljena menjava gesla ali izziv drugega dejavnika jo spremenijo v zanko, ki lahko zaklene račun, zato mora skripta izstopiti ob prvem nepričakovanem odgovoru, namesto da se znova zažene.

Ujemite, kar je odjemalec izpisal, vrnite status, ki ni nič, in prepustite odločitev klicatelju. Kjer prehod zahteva drugi dejavnik, je pošten odgovor, da prijava brez nadzora za ta profil ni na voljo, ne pa, da zaporedje potrebuje še eno vrstico.

Rotacija spada v isti pregled. Če je poverilnica shranjena, odločite, kdo jo sme brati, kdaj se spremeni in kaj jo odstrani, ko se gostitelj znova zgradi. Skripta, ki deluje leto dni, ker se nihče ni dotaknil gesla, ni zasnova, ampak nesreča, ki čaka na politiko rotacije.

Profili, ki niso AnyConnect

Dva starejša sloga poverilnic Cisco se mešata s tem. Profil vpnc zahteva IPSec ID, kar je v resnici ime skupine, nato skupinsko skrivnost, nato vaše lastne poverilnice, in vse tri pridejo od tistega, ki upravlja prehod. Stari Cisco IPsec je drug protokol kot AnyConnect, zato vpnc ne more doseči storitve, ki je samo AnyConnect; openconnect --protocol=anyconnect je odprt odjemalec za to delo.

Datoteka .pcf opisuje profil starejšega odjemalca. Gostitelja, ime skupine in skupinsko geslo v njej je mogoče ročno znova vnesti v odjemalcu, ki govori Cisco IPsec, čeprav datoteka ni univerzalni uvoz in vsaka nestandardna vrata ali način tuneliranja ob prenosu običajno izgine.

Začnite s tem, kar prehod v resnici ponuja, nato izberite odjemalca, ki govori ta protokol. Kopiranje profila z drugega mesta je pot, po kateri ljudje končajo pri razhroščevanju poverilnic, ki nikoli niso bile težava.

Sorodni članki