AnyConnect lórí Linux: kíkọ ìtẹ̀lé ìwọlé ní ààbò
Fáìlì vpn ti Cisco AnyConnect ń ka àwọn ìdáhùn láti stdin, ìyẹn sì tó fún ìwọlé tí a lè tún ṣe. Kọ́ ìtẹ̀lé náà, dáàbò bo fáìlì, ṣàyẹ̀wò kí o sì dúró.
Ẹ̀rọ vpn tí ó wá pẹ̀lú Cisco AnyConnect ń ṣe bí ìfọ̀rọ̀wérọ̀: ó ń tẹ̀ ìbéèrè, ó ń dúró de ìlà kan, lẹ́yìn náà ó tẹ̀ èyí tí ó tẹ̀lé. Tí o bá fi ìfọ̀rọ̀wérọ̀ yẹn wọlé láti fáìlì tàbí pípù, bínárì kan náà ń ṣiṣẹ́ láìsí àbójútó. Ọ̀nà náà ni ìtọ́ni kan pẹ̀lú àkójọ àwọn ìdáhùn tí a tò lẹ́sẹẹsẹ, àti àkójọ náà, kì í ṣe ìtọ́ni, ni ó ń pinnu bóyá script náà ṣe é gbẹ́kẹ̀lé.
Ní ìṣe, ohun méjì ń ba èyí jẹ́. Ọ̀nà àwọn ìbéèrè ń yí padà nígbà tí ẹnubodè kan béèrè ohun àfikún, àti ọ̀rọ̀ìpamọ́ tí a fipamọ́ ń sọ àṣìṣe títẹ̀ kan di títì pa mó account. Wo ìtẹ̀lé náà gẹ́gẹ́ bí dátà oní-ẹ̀yà tí o lè fi wé lẹ́yìn gbogbo ìyípadà ẹnubodè. Kùnà ní ariwo dípò gbìyànjú lẹ́ẹ̀kan sí i, nítorí ìdì ni ọ̀nà gan-an tí ọ̀rọ̀ìpamọ́ tí a tẹ̀ lédè ń di account tí a tì pa mó.
Ìtẹ̀lé kan, ní ọ̀nà tí ẹ̀rọ náà ń béèrè
Ṣiṣẹ́ ẹ̀rọ náà ní ọ̀nà ìbáṣepọ̀ lẹ́ẹ̀kan kí o sì kọ gbogbo ìbéèrè ní ọ̀nà tí wọ́n ń farahàn. Àkọsílẹ̀ yẹn yóò di fáìlì ìdáhùn. Nígbà tí o bá tọ́ fáìlì náà sínú bínárì, ìlà àkọ́kọ́ gbọ́dọ̀ jẹ́ àṣẹ ìsopọ̀ fúnra rẹ̀, ìdí nìyẹn tí ìtẹ̀lé náà fi bẹ̀rẹ̀ pẹ̀lú orúkọ agbàlejò dípò orúkọ olùṣe.
connect vpn.example.com
0
<username>
<password>
y
exit
0 òfo ń yan profáìlì ìsopọ̀ àkọ́kọ́ nígbà tí ẹnubodè bá pèsè àkójọ; lo àtọ́ka tí ẹnubodè rẹ ń tẹ̀. y ń gba banner ìwọlé, nítorí náà pa ìlà yẹn rẹ́ tí kò bá sí banner kí o sì fi ọ̀kan kún ibi tí ẹnubodè rẹ ń béèrè ìbéèrè àfikún. exit ní ìparí ni ó ń jẹ́ kí ẹ̀rọ náà parí dáadáa nígbà tí a bá lo ìdáhùn ìkẹyìn tán.
/opt/cisco/anyconnect/bin/vpn -s < anyconnect.txt
Ipò àìṣe-ìbáṣepọ̀ kì í ṣe àṣàyàn níbí. Láìsí -s ẹ̀rọ náà lè gba terminal kí ó sì fojú pa ìwọlé tí a tọ́ sí; pẹ̀lú rẹ̀, a ń ka àwọn ìdáhùn láti inú ìṣàn àti pé ìlànà náà padà. Níbi tí bínárì náà nílò àṣẹ gíga, fi ìpè náà pa mọ́ inú sudo -n kí script náà kùnà lẹ́sẹ̀kẹsẹ̀ dípò kí ó dúró lórí ìbéèrè ọ̀rọ̀ìpamọ́.
Ibí tí fáìlì ìdáhùn ń ṣàn jáde
Fáìlì tí ó ní ọ̀rọ̀ìpamọ́ ni ẹ̀rí ìdánimọ̀, nítorí náà fún un ní àwọn àṣẹ ẹ̀rí ìdánimọ̀: ipò 600, ní ìní account tí ó ń ṣiṣẹ́ náà, kì í sì í ṣe nínú àpò tí a pín tàbí tí a mú wà ní ìbámu rárá. Dá a pẹ̀lú ipò tí a ti fi sílẹ̀ tẹ́lẹ̀ dípò títún un ṣe lẹ́yìn, nítorí fáìlì máa ń jẹ́ kí gbogbo ènìyàn kà á fún ìṣẹ́jú díẹ̀ láàrín kíkọ àti chmod.
install -m 600 /dev/null ~/.config/anyconnect.txt
chmod 700 ~/.config
Ìdajì kejì ni argv. Ọ̀rọ̀ìpamọ́ tí a gbà kọjá gẹ́gẹ́ bí àríyanjú máa ń hàn sí gbogbo olùṣe ìbílẹ̀ tí ó ń ṣe àkójọ àwọn ìlànà, ó sì tún ń lọ sínú ìtàn shell. Kà á láti inú apàpà fáìlì tàbí oníyípadà àyíká dípò, kí o sì fi ẹrù náà sínú àmì àsọye kí shell má baà lè gbòòrò ohunkóhun nínú rẹ̀.
printf '%s\n' 'connect vpn.example.com' '0' "$VPN_USER" "$VPN_PASS" 'y' 'exit' \
| sudo -n /opt/cisco/anyconnect/bin/vpn -s
Ṣọ́ra fún àwọn àmì àsọye. Nínú àmì àsọye méjì, shell oní-ìbáṣepọ̀ lè gbòòrò ọ̀rọ̀ìpamọ́ tí ó ní ! kí ẹ̀rọ náà tó rí i pàápàá, àti ìkùnà náà ń wá gẹ́gẹ́ bí àṣìṣe event-not-found gbogbogbò tí ó dàbí ìṣòro ìlànà.
Fì ẹ̀rí hàn lórí ọ̀nà, lẹ́yìn náà pa á
Ipò ìsopọ̀ ń fi ẹ̀rí hàn kìkì pé ẹ̀rọ náà gbàgbọ́ pé ó ní àpéjọ. Yan agbàlejò tí ó ń dáhùn láti inú nẹ́tíwọ́kì ilé-iṣẹ́ nìkan kí o sì dán an wò lẹ́ẹ̀kan kí o tó ṣe ohunkóhun mìíràn. Ìkùnà níbẹ̀ jẹ́ àṣìṣe ọ̀nà tàbí ìlànà, àti pé ṣíṣe ìwọlé lẹ́ẹ̀kan sí i kò ní yí i padà.
/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
Ṣàyẹ̀wò àbájáde ipò kí o tó já ìsopọ̀ kúrò àti lẹ́yìn náà. Ẹ̀rọ tí a fi sílẹ̀ pẹ̀lú àpéjọ àtijọ́ lè kọ ìsopọ̀ tó kàn sílẹ̀ nígbà tí script náà ṣì ń ròyìn àṣeyọrí, àti pé irú ìkùnà yẹn kò hàn bí o bá kàn wo àwọn kóòdù àbájáde. Fi àwọn ìkà méjèèjì wé dípò gbẹ́kẹ̀lé èkejì nìkan. Àwọn orúkọ àfipè nínú profáìlì shell tó fún ìlò ojoojúmọ́, àmọ́ ohunkóhun tí a ṣètò yẹ fún àyẹ̀wò ẹ̀rí ìdánimọ̀ àti ìdánimọ̀ kan náà gẹ́gẹ́ bí iṣẹ́ mìíràn tí kò ní àbójútó.
Nígbà tí àkójọ tí ó dúró kò bá tún ní ààbò
Fáìlì ìdáhùn ń kódà ọ̀nà àwọn ìbéèrè òní. Banner tí ó yí padà, ìyípadà ọ̀rọ̀ìpamọ́ tí a fipá mú, tàbí ìpèníjà kókó kejì ń sọ ọ́ di ìdì tí ó lè tì account pa mó, ìdí nìyẹn tí script náà fi gbọ́dọ̀ jáde ní ìdáhùn àkọ́kọ́ tí kò ṣe é retí dípò kí ó tún bẹ̀rẹ̀.
Mú ohun tí ẹ̀rọ náà tẹ̀ kí o sì dá ipò tí kì í ṣe òdo padà, kí o sì fi ìpinnu sílẹ̀ fún ẹni tí ó pè. Níbi tí ẹnubodè ń béèrè kókó kejì, ìdáhùn olóòtítọ́ ni pé ìwọlé láìsí àbójútó kò sí fún profáìlì yẹn, kì í ṣe pé ìtẹ̀lé náà nílò ìlà mìíràn.
Yíyí padà wà nínú àyẹ̀wò kan náà. Bí a bá fi ẹ̀rí ìdánimọ̀ pamọ́, pinnu ẹni tí ó lè kà á, ìgbà tí ó ń yí padà àti ohun tí ó ń yọ ọ́ kúrò nígbà tí a bá tún agbàlejò kọ́. Script tí ó ń ṣiṣẹ́ fún ọdún kan nítorí pé ẹnìkan kò fọwọ́ kan ọ̀rọ̀ìpamọ́ kì í ṣe àpẹrẹ, ó jẹ́ àjálù tí ó ń dúró de ìlànà yíyí.
Àwọn profáìlì tí kì í ṣe AnyConnect
A máa ń dà àwọn ọ̀nà ẹ̀rí ìdánimọ̀ Cisco méjì àtijọ́ pọ̀ mọ́ èyí. Profáìlì vpnc ń béèrè IPSec ID, tí ó jẹ́ orúkọ ẹgbẹ́ ní ti gidi, lẹ́yìn náà àṣírí ẹgbẹ́, lẹ́yìn náà àwọn ẹ̀rí ìdánimọ̀ rẹ fúnra rẹ, àti pé àwọn mẹ́tẹ̀ẹ̀ta wá láti ọ̀dọ̀ ẹni tí ó ń ṣiṣẹ́ ẹnubodè. Cisco IPsec àtijọ́ jẹ́ ìlànà tí ó yàtọ̀ sí AnyConnect, nítorí náà vpnc kò lè dé iṣẹ́ AnyConnect nìkan; openconnect --protocol=anyconnect ni ẹ̀rọ ṣíṣí fún iṣẹ́ yẹn.
Fáìlì .pcf ń ṣàlàyé profáìlì ẹ̀rọ àtijọ́. Agbàlejò, orúkọ ẹgbẹ́ àti ọ̀rọ̀ìpamọ́ ẹgbẹ́ tí ó wà nínú rẹ̀ ni a lè tún fi ọwọ́ tẹ̀ sínú ẹ̀rọ tí ó ń sọ Cisco IPsec, bó tilẹ̀ jẹ́ pé fáìlì náà kì í ṣe ìgbéwọlé gbogbo àgbáyé àti pé gbogbo ibùdókọ̀ tàbí ipò ọ̀nà àbẹ̀wò tí kì í ṣe àìpẹ́ máa ń sọnù nínú gbígbé.
Bẹ̀rẹ̀ láti inú ohun tí ẹnubodè ń pèsè ní ti gidi, lẹ́yìn náà yan ẹ̀rọ tí ó ń sọ ìlànà yẹn. Dídà profáìlì wọlé láti ojú-ìwé mìíràn ni ọ̀nà tí àwọn ènìyàn fi ń parí ní ṣíṣe àtúnṣe àwọn ẹ̀rí ìdánimọ̀ tí kò tilẹ̀ jẹ́ ìṣòro rí.