Klienti vpn që vjen me Cisco AnyConnect sillet si një bisedë: printon një kërkesë, pret një rresht dhe më pas printon tjetrën. Nëse e ushqen atë bisedë nga një skedar ose një tub, i njëjti binar ekzekutohet pa mbikëqyrje. Teknika është një ridrejtim plus një listë e renditur përgjigjesh, dhe është lista, jo ridrejtimi, ajo që vendos nëse skripti është i besueshëm.

Në praktikë dy gjëra e prishin këtë. Rendi i kërkesave ndryshon kur një portë kërkon diçka shtesë, dhe një fjalëkalim i ruajtur e kthen një gabim shtypi në një bllokim llogarie. Trajto sekuencën si të dhëna të versionuara që mund t'i krahasosh pas çdo ndryshimi të portës. Dështo me zë në vend të riprovosh, sepse cikli është pikërisht mënyra se si një fjalëkalim i shtypur gabim bëhet llogari e bllokuar.

Një sekuencë, sipas rendit që kërkon klienti

Ekzekuto klientin një herë në mënyrë interaktive dhe shkruaj çdo kërkesë sipas rendit që shfaqet. Ai transkript bëhet skedari i përgjigjeve. Kur e ridrejton skedarin në binar, rreshti i parë duhet të jetë vetë komanda e lidhjes, prandaj sekuenca fillon me emrin e hostit dhe jo me emrin e përdoruesit.

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

0 i thjeshtë zgjedh profilin e parë të lidhjes kur porta ofron një listë; përdor indeksin që printon porta jote. y pranon një banderolë hyrjeje, prandaj fshi atë rresht nëse nuk ka banderolë dhe shto një atje ku porta jote bën një pyetje shtesë. exit në fund është ajo që lejon klientin të përfundojë pastër kur përgjigjja e fundit është konsumuar.

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

Modaliteti jo interaktiv nuk është i zgjedhshëm këtu. Pa -s klienti mund të marrë terminalin dhe të injorojë hyrjen e ridrejtuar; me të, përgjigjet lexohen nga rryma dhe procesi kthehet. Kur binari kërkon privilegje të ngritura, mbështill thirrjen në sudo -n që skripti të dështojë menjëherë në vend që të bllokohet në një kërkesë fjalëkalimi.

Ku rrjedh skedari i përgjigjeve

Një skedar që përmban fjalëkalim është një kredenciale, prandaj jepi lejet e një kredenciale: modaliteti 600, në pronësi të llogarisë që ekzekuton punën, dhe kurrë brenda një drejtorie të përbashkët ose të sinkronizuar. Krijoje me modalitetin e aplikuar tashmë në vend që ta rregullosh më pas, sepse një skedar është për një çast i lexueshëm nga të gjithë midis shkrimit dhe chmod.

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

Gjysma tjetër është argv. Një fjalëkalim i kaluar si argument është i dukshëm për çdo përdorues lokal që liston proceset, dhe gjithashtu përfundon në historikun e shell. Lexoje nga një përshkrues skedari ose një variabël mjedisi, dhe vendos ngarkesën në thonjëza që shell të mos mund të zgjerojë asgjë brenda.

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

Kujdes me thonjëzat. Brenda thonjëzave të dyfishta një fjalëkalim që përmban ! mund të zgjerohet nga një shell interaktiv para se klienti ta shohë, dhe dështimi vjen si një gabim i përgjithshëm event-not-found që duket si problem protokolli.

Vërteto tunelin, pastaj mbyll atë

Një gjendje e lidhur vërteton vetëm se klienti beson se ka një sesion. Zgjidh një host që përgjigjet vetëm nga brenda rrjetit të korporatës dhe provoje një herë para se të bësh ndonjë gjë tjetër. Një dështim atje është defekt rrugëtimi ose politike, dhe ekzekutimi përsëri i hyrjes nuk do ta ndryshojë.

/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

Kontrollo daljen e gjendjes para dhe pas shkëputjes. Një klient i lënë me një sesion të vjetruar mund të refuzojë lidhjen tjetër ndërsa skripti vazhdon të raportojë sukses, dhe ai modalitet dështimi është i padukshëm nëse shikon vetëm kodet e daljes. Krahaso dy leximet në vend që t'i besosh të dytit vetëm. Aliaset në një profil shell mjaftojnë për përdorim të përditshëm, ndërsa çdo gjë e planifikuar meriton të njëjtin rishikim kredencialesh dhe identiteti si çdo punë tjetër pa mbikëqyrje.

Kur një listë fikse nuk është më e sigurt

Një skedar përgjigjesh kodon rendin e sotëm të kërkesave. Një banderolë e ndryshuar, një ndryshim i detyruar fjalëkalimi ose një sfidë e faktorit të dytë e kthejnë atë në një cikël që mund të bllokojë llogarinë, prandaj skripti duhet të dalë në përgjigjen e parë të papritur në vend që të riniset.

Kap atë që printoi klienti, kthe një status jo zero dhe lëre vendimin te thirrësi. Aty ku porta kërkon një faktor të dytë, përgjigjja e sinqertë është se një hyrje pa mbikëqyrje nuk ofrohet për atë profil, jo se sekuenca ka nevojë për një rresht më shumë.

Rrotullimi i përket të njëjtit rishikim. Nëse kredencialja ruhet, vendos kush mund ta lexojë, kur ndryshon dhe çfarë e heq kur hosti rindërtohet. Një skript që funksionon një vit sepse askush nuk e ka prekur fjalëkalimin nuk është dizajn, por një aksident që pret një politikë rrotullimi.

Profile që nuk janë AnyConnect

Dy stile më të vjetra kredencialesh Cisco ngatërrohen me këtë. Një profil vpnc kërkon një IPSec ID, që në fakt është emri i grupit, pastaj një sekret grupi, pastaj kredencialet e tua, dhe të treja vijnë nga ai që drejton portën. Cisco IPsec i vjetër është protokoll tjetër nga AnyConnect, prandaj vpnc nuk mund të arrijë një shërbim vetëm-AnyConnect; openconnect --protocol=anyconnect është klienti i hapur për atë punë.

Një skedar .pcf përshkruan profilin e klientit më të vjetër. Hosti, emri i grupit dhe fjalëkalimi i grupit brenda tij mund të rifuten me dorë në një klient që flet Cisco IPsec, megjithëse skedari nuk është import universal dhe çdo port ose modalitet tunelimi jo standard zakonisht humbet në transferim.

Fillo nga ajo që porta ofron vërtet, pastaj zgjidh klientin që flet atë protokoll. Kopjimi i një profili nga një sajt tjetër është mënyra se si njerëzit përfundojnë duke korrigjuar kredenciale që nuk ishin kurrë problemi.

Artikuj të ngjashëm