Cisco AnyConnect bilan keladigan vpn mijozi suhbat kabi ishlaydi: so'rov chiqaradi, bir satr kutadi, keyin keyingisini chiqaradi. Bu suhbatni fayl yoki quvurdan kiritsangiz, o'sha ikkilik fayl nazoratsiz ishlaydi. Usul bitta qayta yo'naltirish va tartiblangan javoblar ro'yxati, va skript ishonchli ekanini qayta yo'naltirish emas, aynan ro'yxat hal qiladi.

Amalda buni ikki narsa buzadi. Darvoza qo'shimcha narsa so'raganda so'rovlar tartibi siljiydi, va saqlangan parol bitta yozuv xatosini hisob bloklanishiga aylantiradi. Ketma-ketlikka darvozaning har qanday o'zgarishidan keyin solishtirish mumkin bo'lgan versiyalangan ma'lumot sifatida qarang. Qayta urinish o'rniga baland ovozda muvaffaqiyatsiz bo'ling, chunki tsikl — noto'g'ri terilgan parolning bloklangan hisobga aylanishining aynan yo'li.

Bitta ketma-ketlik, mijoz so'ragan tartibda

Mijozni bir marta interaktiv ishga tushiring va har bir so'rovni ko'ringan tartibda yozib oling. O'sha yozuv javoblar fayliga aylanadi. Faylni ikkilik faylga qayta yo'naltirganingizda birinchi satr ulanish buyrug'ining o'zi bo'lishi kerak, shuning uchun ketma-ketlik foydalanuvchi nomi bilan emas, xost nomi bilan boshlanadi.

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

Yalang'och 0 darvoza ro'yxat taklif qilganda birinchi ulanish profilini tanlaydi; darvozangiz chiqaradigan indeksdan foydalaning. y kirish bannerini qabul qiladi, shuning uchun banner bo'lmasa o'sha satrni o'chiring va darvozangiz qo'shimcha savol beradigan joyga bitta satr qo'shing. Oxiridagi exit oxirgi javob ishlatilgandan keyin mijozning toza tugashiga imkon beradi.

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

Interaktiv bo'lmagan rejim bu yerda majburiy. -s bo'lmasa mijoz terminalni egallab, qayta yo'naltirilgan kiritishni e'tiborsiz qoldirishi mumkin; u bilan javoblar oqimdan o'qiladi va jarayon qaytadi. Ikkilik faylga yuqori imtiyozlar kerak bo'lgan joyda chaqiruvni sudo -n ichiga o'rang, shunda skript parol so'rovida bloklanmasdan darhol muvaffaqiyatsiz bo'ladi.

Javoblar fayli qayerdan oqib chiqadi

Parol saqlagan fayl — bu hisob ma'lumoti, shuning uchun unga hisob ma'lumoti huquqlarini bering: rejim 600, ishni bajaruvchi hisob egaligida va hech qachon umumiy yoki sinxronlangan papkada bo'lmasin. Keyin tuzatish o'rniga rejim allaqachon qo'llangan holda yarating, chunki fayl yozish va chmod orasida qisqa vaqt hammaga o'qiladi.

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

Ikkinchi yarmi — argv. Argument sifatida berilgan parol jarayonlarni sanaydigan har bir mahalliy foydalanuvchiga ko'rinadi va shell tarixiga ham tushadi. Uning o'rniga uni fayl deskriptori yoki muhit o'zgaruvchisidan o'qing va yukni qo'shtirnoq ichiga oling, shunda shell ichida hech narsani kengaytira olmaydi.

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

Qo'shtirnoqlarga e'tibor bering. Qo'sh qo'shtirnoq ichida ! bor parolni interaktiv shell mijoz ko'rishidan oldin kengaytirishi mumkin, va xato protokol muammosiga o'xshaydigan umumiy event-not-found xatosi sifatida keladi.

Tunnelni isbotlang, keyin yoping

Ulangan holat faqat mijoz sessiyasi bor deb ishonishini isbotlaydi. Faqat korporativ tarmoq ichidan javob beradigan xostni tanlang va boshqa narsa qilishdan oldin uni bir marta sinab ko'ring. U yerdagi muvaffaqiyatsizlik marshrutlash yoki siyosat nuqsoni, va kirishni qayta ishga tushirish buni o'zgartirmaydi.

/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

Ulanish uzilishidan oldin va keyin holat chiqishini tekshiring. Eskirgan sessiya bilan qoldirilgan mijoz keyingi ulanishni rad etishi mumkin, holbuki skript hali ham muvaffaqiyat haqida xabar beradi, va bu nosozlik turi faqat chiqish kodlariga qarasangiz ko'rinmaydi. Ikkinchi o'qishga yolg'iz ishonish o'rniga ikkalasini solishtiring. Shell profilidagi taxalluslar kundalik foydalanish uchun yetarli, ammo rejalashtirilgan har qanday ish boshqa har qanday nazoratsiz ish kabi hisob ma'lumotlari va shaxsni ko'rib chiqishga loyiq.

Qat'iy ro'yxat xavfsiz bo'lmaganda

Javoblar fayli bugungi so'rovlar tartibini kodlaydi. O'zgargan banner, majburiy parol almashtirishi yoki ikkinchi omil sinovi uni hisobni bloklashi mumkin bo'lgan tsiklga aylantiradi, shuning uchun skript qayta boshlash o'rniga birinchi kutilmagan javobda chiqishi kerak.

Mijoz chiqargan narsani ushlang, nolga teng bo'lmagan holat qaytaring va qaror qabul qilishni chaqiruvchiga qoldiring. Darvoza ikkinchi omilni talab qiladigan joyda, halol javob — bu profil uchun nazoratsiz kirish mavjud emas, ketma-ketlikka yana bitta satr kerak degani emas.

Aylantirish ham xuddi shu ko'rib chiqishga tegishli. Agar hisob ma'lumoti saqlansa, uni kim o'qiy olishini, qachon o'zgarishini va xost qayta qurilganda uni nima olib tashlashini hal qiling. Hech kim parolga tegmagani uchun bir yil ishlaydigan skript dizayn emas, aylantirish siyosatini kutayotgan avariya.

AnyConnect bo'lmagan profillar

Cisco'ning ikki eski hisob ma'lumoti uslubi bu bilan aralashtiriladi. vpnc profili IPSec ID so'raydi, u aslida guruh nomi, keyin guruh siri, keyin o'zingizning hisob ma'lumotlaringiz, va uchtasi ham darvozani boshqaradigan kishidan keladi. Eski Cisco IPsec AnyConnect'dan boshqa protokol, shuning uchun vpnc faqat AnyConnect xizmatiga yeta olmaydi; openconnect --protocol=anyconnect bu ish uchun ochiq mijoz.

.pcf fayli eski mijoz profilini tavsiflaydi. Undagi xost, guruh nomi va guruh parolini Cisco IPsec gapiradigan mijozda qo'lda qayta kiritish mumkin, ammo fayl universal import emas va har qanday nostandart port yoki tunnel rejimi odatda ko'chirishda yo'qoladi.

Darvoza haqiqatan taklif qilgan narsadan boshlang, keyin o'sha protokolda gapiradigan mijozni tanlang. Profilni boshqa saytdan nusxalash — odamlar hech qachon muammo bo'lmagan hisob ma'lumotlarini tuzatishga keladigan yo'l.

O'xshash maqolalar