Oanmelde by Cisco Secure Client fanôf in Linux-shell, sûnder de GUI
In here-document is gjin oanmeldprotokol. Skriuw de wiere folchoarder fan prompts op, brûk expect as dy feroaret, en hâld it wachtwurd bûten argv en skiednis.
De oertsjûging is dat in here-document mei fjouwer rigels in folsleine net-ynteraktive oanmelding is, en dy hâldt krekt oant de gateway twa groepen biedt, in banner printsje lit of nei it wachtwurd om in token freget. Dan typt itselde skript it wachtwurd yn in menu dat in nûmer ferwachte. De kommandorige-klant op Linux is skriptber, mar allinnich as jo him jouwe wat er wier ferwachtet, en net wat de tutorial oannaam.
It fêste here-document is in myte
Cisco syn Linux-klant ynstallearret in lyts programma op /opt/cisco/anyconnect/bin/vpn, en Secure Client 5 leveret it noch altyd. As de tsjinst vpnagentd rint, lêst de flagge -s antwurden fan standertynfier yn de folchoarder dy’t de klant freget. Dy folchoarder is net fêst oer servers hinne.
In groepsmenu foeget ien rigel ta. In oanmeldbanner foeget der noch ien ta. In token-fraach nei it wachtwurd brekt in skript fan fjouwer rigels folslein, om’t de fyfde rigel nea it token wêze soe. De flater is stil: de klant krijt de ferkearde tekenrige, de ferbiningspoging einiget, en it skript meldt neat nuttichs.
Run de klant ien kear mei de hân tsjin deselde gateway en ferzje, en skriuw de prompts op yn de folchoarder wêryn’t se komme. Dat transkript is de spesifikaasje dy’t jo skript foldwaan moat.
Wêr’t de klant op wachtet
Yn it gewoane gefal fan ien groep is de folchoarder brûkersnamme, wachtwurd en soms in bannerbefêstiging. De earste rigel fan in here-document wurdt pas in menu-yndeks as de server echt in menu toant, en dêrom wurket itselde skript op it iene plak en mislearret op it folgjende.
/opt/cisco/anyconnect/bin/vpn -s connect vpn.example.net <<EOF
0
alice
$VPN_PASSWORD
y
EOF
Lês dat as fjouwer antwurden op fjouwer mooglike fragen, net as in fêst protokol. De nul is in menukeuze, net in wachtwurd, en de efterste y akseptearret in banner dy’t in protte gateways nea stjoere.
Brûk expect as de folchoarder net foarsisber is
As de folchoarder fan prompts feroaret, stopje dan mei rigels tellen en wachtsje op de prompt. In expect-skript start it kommando connect, wachtet op de brûkersnamme-prompt, stjoert, wachtet op de wachtwurd-prompt, stjoert, en wachtet dan op de ferbûne steat. Eltse wachtsjen hat syn eigen tiidlimit.
Behannel in tiidlimit as in flater en stopje. In skript dat nei in ûnferwachte prompt trochgiet mei ynfier stjoeren, sil it wachtwurd grif yn in shell, in menu of wat dan ek dat tafallich lêst typt. Sa wurdt in oanmeldskript in ynsidint.
expect jout jo ek in transkript dat jo mei it geheim fuortsnien fêstlizze kinne, en dat is mear wurdich as de útgongskoad as in gateway nei in upgrade syn prompts feroaret.
It geheim moat earne libje
Elke ferzje fan dit probleem hat ien swakkens: it wachtwurd moat bestean yn in foarm dy’t de klant lêze kin. It as argumint trochjaan lit it yn de prosestabel sjen. It troch in piip ekkoo jout it faak yn de shell-skiednis. Beide binne lêsber foar oare lokale brûkers op in dielde springhost.
install -m 600 /dev/null ~/.vpn-secret
umask 077; VPN_PASSWORD=$(cat ~/.vpn-secret) /opt/cisco/anyconnect/bin/vpn -s connect vpn.example.net
In bestân mei modus 600 yn eigendom fan it akkount is it minimum, en it is noch altyd in geheim yn platte tekst op de skiif. secret-tool lookup lêst út de Linux-kaairing, en op macOS docht security find-generic-password -w itselde wurk. Wêr’t de organisaasje sertifikaat- of SAML-autentikaasje stipet, jou dat foarkar, om’t in bewarre wachtwurd plus MFA noch altyd gjin oanmelding foltôgje kin sûnder in minske.
Befêstigje de tunnel, en nim dan it ôfsluten op jo
Fertrou net op it ûntbrekken fan flatertekst. Freegje de klant nei syn steat en kontrolearje de ynterface apart:
/opt/cisco/anyconnect/bin/vpn state
ip -brief address
De steat heart Connected te wêzen, en in tunnel-ynterface heart in adres te hawwen. Freegje dan ien boarne op dy’t de tunnel berikke moat, om’t in ferbûne steat sûnder rûte in echt resultaat is en maklik oer de holle sjoen.
Ferbrek mei vpn disconnect, en lit it skript dat de tunnel starte it ôfsluten op him nimme. In mislearre baan dy’t in sesje iepen lit, brûkt in lisinsjeplak en liket foar de folgjende persoan dy’t it probearret op in autentikaasjeprobleem.
Wurkfolchoarder: befêstigje vpnagentd, fêstlizje de wiere folchoarder fan prompts, kies here-document of expect, hâld it geheim bûten argv en skiednis, ferifiearje steat en ien boarne, en ferbrek dan yn itselde skript.