İnanc budur ki, dörd sətirdən ibarət here-sənəd tam qeyri-interaktiv girişdir və bu, şlüz iki qrup təqdim edənə, banner çap edənə və ya paroldan sonra token istəyənə qədər doğru görünür. Sonra həmin skript parolu rəqəm gözləyən menyuya yazır. Linux-dakı əmr sətri müştərisi skriptlənə bilər, ancaq ona təlimatın güman etdiyini deyil, həqiqətən gözlədiyini versəniz.

Sabit here-sənəd mifdir

Cisco-nun Linux müştərisi /opt/cisco/anyconnect/bin/vpn ünvanında kiçik bir proqram quraşdırır və Secure Client 5 onu hələ də təqdim edir. vpnagentd xidməti işlədiyi halda -s açarı cavabları standart girişdən müştərinin onları istədiyi sıra ilə oxuyur. Bu sıra serverlər arasında sabit deyil.

Qrup menyusu bir sətir əlavə edir. Giriş banneri daha birini əlavə edir. Paroldan sonra gələn token sorğusu dörd sətirlik skripti tamamilə pozur, çünki beşinci sətir heç vaxt token olmayacaqdı. Nasazlıq səssizdir: müştəri yanlış sətir alır, bağlantı cəhdi bitir və skript faydalı heç nə bildirmir.

Müştərini eyni şlüz və versiya qarşısında bir dəfə əl ilə işə salın və sorğuları göründükləri sıra ilə yazın. Həmin transkript skriptinizin ödəməli olduğu spesifikasiyadır.

Müştəri nəyi gözləyir

Adi tək qrup halında ardıcıllıq istifadəçi adı, parol və bəzən banner təsdiqidir. Here-sənədin birinci sətri yalnız server həqiqətən menyu göstərdikdə menyu indeksinə çevrilir, buna görə eyni skript bir yerdə işləyir, digərində uğursuz olur.

/opt/cisco/anyconnect/bin/vpn -s connect vpn.example.net <<EOF
0
alice
$VPN_PASSWORD
y
EOF

Bunu sabit protokol kimi deyil, dörd mümkün suala dörd cavab kimi oxuyun. Sıfır menyu seçimidir, parol deyil, sonda gələn y isə bir çox şlüzün heç vaxt göndərmədiyi banneri qəbul edir.

Sıra proqnozlaşdırıla bilmədikdə expect istifadə edin

Sorğu sırası dəyişdikdə sətirləri saymağı dayandırın və əvəzində sorğunu gözləyin. Expect skripti connect əmrini işə salır, istifadəçi adı sorğusunu gözləyir, göndərir, parol sorğusunu gözləyir, göndərir və sonra bağlı vəziyyəti gözləyir. Hər gözləmənin öz taym-autu var.

Taym-autu nasazlıq kimi qəbul edin və çıxın. Gözlənilməz sorğudan sonra girişi göndərməyə davam edən skript parolu həvəslə qabığa, menyuya və ya oxuyan başqa nə varsa ona yazacaq. Giriş skripti beləcə insidentə çevrilir.

Expect həm də sirri çıxarılmış şəkildə qeyd edə biləcəyiniz transkript verir və bu, şlüz yenilənmədən sonra sorğularını dəyişdikdə çıxış kodundan daha dəyərlidir.

Sirr haradasa yaşamalıdır

Bu problemin hər versiyasında bir zəiflik var: parol müştərinin oxuya biləcəyi formada mövcud olmalıdır. Onu arqument kimi ötürmək proses cədvəlində açıq qoyur. Boru vasitəsilə əks etdirmək isə çox vaxt onu qabıq tarixçəsinə salır. Hər ikisi ortaq jump host-da digər yerli istifadəçilər üçün oxunaqlıdır.

install -m 600 /dev/null ~/.vpn-secret
umask 077; VPN_PASSWORD=$(cat ~/.vpn-secret) /opt/cisco/anyconnect/bin/vpn -s connect vpn.example.net

Hesaba məxsus 600 rejimli fayl minimumdur və o, hələ də diskdə açıq mətn sirridir. secret-tool lookup Linux açar halqasından oxuyur, macOS-də isə eyni işi security find-generic-password -w görür. Təşkilat sertifikat və ya SAML autentifikasiyasını dəstəklədiyi yerdə ona üstünlük verin, çünki saxlanmış parol üstəgəl MFA insan olmadan girişi hələ də tamamlaya bilmir.

Tuneli təsdiqləyin, sonra ayrılmanı öz üzərinizə götürün

Xəta mətninin olmamasına güvənməyin. Müştəridən vəziyyətini soruşun və interfeysi müstəqil yoxlayın:

/opt/cisco/anyconnect/bin/vpn state
ip -brief address

Vəziyyət Connected oxunmalı və tunel interfeysi ünvan daşımalıdır. Sonra tunelin çatmalı olduğu bir resursu sorğulayın, çünki marşrutsuz bağlı vəziyyət real nəticədir və asanlıqla gözdən qaçır.

vpn disconnect ilə ayrılın və tuneli başladan skriptin ayrılmanı öz üzərinə götürməsinə icazə verin. Sessiyanı açıq qoyan uğursuz iş lisenziya yeri tutur və növbəti cəhd edənə autentifikasiya problemi kimi görünür.

İş sırası: vpnagentd-ni təsdiqləyin, həqiqi sorğu sırasını qeyd edin, here-sənəd və ya expect seçin, sirri argv və tarixçədən kənarda saxlayın, vəziyyəti və bir resursu yoxlayın, sonra həmin skriptdə ayrılın.

Əlaqəli məqalələr