OpenConnect ikkita alohida almashinuvni bitta qisqa muddatli qiymat bilan bog'laydi: veb-kirish va VPN tunnel. Birinchi almashinuv oddiy HTTPS: hisob ma'lumotlari, SAML safari yoki token shlyuzga boradi, javob esa autentifikatsiya cookie'sini olib keladi. Ikkinchi almashinuv shu cookie'ni o'sha shlyuzga veb-bosqich allaqachon bo'lganining isboti sifatida taqdim etadi, va shundan keyingina tunnel ko'tariladi.

Kirish paytida tunnel haqida hech narsa kelishilmaydi. Aynan shuni tushunish kerak, chunki skript xatolarining ko'pchiligi cookie'ni saqlanadigan parol yoki trafikni himoya qiluvchi kalit deb hisoblaydi, aslida esa u muayyan shlyuz sessiyasi uchun tashuvchi chipta.

Mijoz va shlyuz navbat bilan nima almashadi

Autentifikatsiya bosqichi oddiy himoyalangan veb-saytga o'xshaydi. OpenConnect foydalanuvchining hisob ma'lumotlarini yuboradi yoki shlyuzning identifikatsiya provayderiga yo'naltirishini kuzatadi, shlyuz esa autentifikatsiya cookie'sini ichiga olgan hujjat bilan javob beradi. AnyConnect protokolida bu qiymat keyingi so'rovlarda cookie sarlavhasida boradi, odatda webvpn kabi nom ostida, va qo'llanma uni sessiyani oldinga olib boruvchi hisob ma'lumoti deb biladi.

Ikkinchi bosqich shlyuzning VPN oxirgi nuqtasiga shu cookie bilan biriktirilgan CONNECT so'rovi. Shlyuz uni tekshiradi, manzil ajratadi, mijoz TLS ustida CSTP boshlaydi, sessiya paydo bo'lgach DTLS ixtiyoriy tezroq ma'lumot yo'li bo'ladi. Faqat shu paytda tunnel parametrlari, marshrutlar, DNS sozlamalari va sessiyaning trafik kalitlari o'rnatiladi. Cookie mijozni eshikdan o'tkazdi; u hech narsani shifrlamadi.

Ana shu tartib openconnect --authenticate nima uchun borligini tushuntiradi. Uni ishga tushiring, u veb-bosqichni bajaradi, COOKIE, HOST, CONNECT_URL va FINGERPRINT kabi shell o'zgaruvchilarining kichik blokini chiqaradi va har qanday tunnel qurilishidan oldin chiqadi. Keyin o'ram skript shu qiymatlar bilan haqiqiy ulanishni boshlashi mumkin, va bu boshsiz yoki ikki konteynerli joylashtirishga kerak bo'lgan aynan o'sha bo'linish.

Cookie — sessiya tashuvchisi, kalit emas

Bu qiymatga veb-ilovadagi sessiya identifikatoriga qanday munosabatda bo'lsangiz, shunday munosabatda bo'ling. Uni o'z umri davomida ushlab turgan kishi shlyuzdan o'sha sessiya haqli bo'lgan tunnelni so'rashi mumkin, shuning uchun uning maxfiyligi muhim. Lekin nusxa ko'chirish trafikni oshkor qilmaydi, chunki tunnelning maxfiyligi TLS qo'l berib ko'rishishdan va undan olingan kalitlardan keladi, cookie satridan emas.

Bu doimiy ruxsat ham emas. Sessiya qancha yashashini shlyuz va identifikatsiya provayderi hal qiladi, va hanuzgacha kirgan sahifani ko'rsatib turgan brauzer tunnel sessiyasi hali amalda ekani haqida hech narsa demaydi. Muddati tugagach qayta ulanish veb-bosqichni takrorlash va yangi cookie yaratishni bildiradi, va qayta autentifikatsiya maqsadi ham shu, injiniring bilan chetlab o'tiladigan g'alati emas.

Cookie'ni boshqa hisob ma'lumotlarining universal o'rnini bosuvchisi deb qaramang. SAML da'vosi, brauzer paroli va boshqa xizmat chiqargan cookie turli auditoriyaga ega turli obyektlar, va birini ikkinchisining maydoniga yopishtirish odatda shlyuzda muvaffaqiyatsiz bo'ladi yoki undan yomoni, noto'g'ri ishonch chegarasiga qarshi muvaffaqiyat qozonadi.

Cookie'ni nusxalarsiz topshirish

Linuxda eng xavfsiz mexanik topshirish — standart kiritish. --cookie-on-stdin qiymatni stdin'dan o'qiydi, shuning uchun cookie jarayon argumentlari ro'yxatida hech qachon ko'rinmaydi, u yerda har qanday mahalliy foydalanuvchi uni ps orqali o'qishi mumkin. Bir jarayonda autentifikatsiya qilib, boshqasida tunnelni oziqlantiradigan quvur qiymatni fayl yoki muhit o'zgaruvchisida emas, quvurda saqlaydi.

Argumentlar va muhit o'zgaruvchilari turli sabablarga ko'ra zaifroq. Argument mijozning butun umri davomida jarayonlar jadvalida ko'rinadi va ko'pincha shell tarixiga tushadi. Muhit o'zgaruvchisi bola jarayonlarga meros bo'lib o'tadi, va uni birlik faylida o'rnatadigan systemd birligi sirni o'qish mumkin bo'lgan konfiguratsiyada saqlaydi. Agar fayl zarur bo'lsa, uni xizmat hisobiga cheklang va sessiya tugagach o'chiring.

Imtiyoz chegarasini ham ataylab saqlang. Identifikatsiya provayderi bilan gaplashadigan va ehtimol brauzer ochadigan jarayon o'sha kirishga ega foydalanuvchi sifatida ishlashi kerak. Marshrutlar, DNS va tunnel qurilmasini sozlaydigan jarayonga ko'proq imtiyoz kerak bo'lishi mumkin. root egalik qilgan tunnelga cookie yetkazish uchun butun brauzerni root sifatida ishga tushirish noto'g'ri almashinuv, va zamonaviy OpenConnect sozlamalari qiymatni bu chegaradan aniq topshira oladi.

Jurnal yozish ham xuddi shu shubhaga loyiq. Batafsil mijoz chiqishi, yordamchi skriptlar va shlyuz diagnostikasi so'rov materialini takrorlashi mumkin, va har bir jurnal darajasi cookie'ni yashirmaydi. O'zingizga kerak bo'lgan eng kichik xato yozuvini ushlang, uni umumiy kanallardan tashqarida saqlang va chiptaga biriktirishdan oldin yashirilgan namunani tekshiring.

Ikkinchi bosqichda tekshirish va muddatning tugashi

Ikkinchi bosqich hali ham serverni tekshirishi kerak. --authenticate chiqaradigan FINGERPRINT — pin-sha256: shaklidagi sertifikat qadog'i, va uni --servercert bilan tunnel chaqiruviga berish tekshirishni siz autentifikatsiya qilgan shlyuzga bog'lab turadi. Skriptni soddalashtirish uchun sertifikat tekshiruvini o'chirish cookie mo'ljallangan xostga berilayotganining yagona isbotini olib tashlaydi.

Shlyuz cookie'ni rad etsa, yechim yangi autentifikatsiya davrasi, uzoqroq kesh emas. Cookie'ni faqat ulanish umri davomida saqlang, chiqishda vaqtinchalik fayllarni o'chiring, va sessiya oshkor bo'lganda yoki qurilma yo'qolganda identifikatsiya provayderi yoki shlyuzning sessiyani olib tashlash jarayonidan foydalaning. Keshlangan cookie MFA'dan ozod qilish emas.

Buni avtomatlashtirishdan oldin to'rtta narsani tekshiring: tunnel to'g'ri hisob ostida ishlaydi, cookie stdin orqali keladi, sertifikat barmoq izi qadalgan, va tunnel yopilganda sessiya tashlab yuboriladi. Agar biror narsa yetishmasa, avtomatlashtirish qo'lda bajariladigan oqimni qayta hosil qilish o'rniga cookie'ga ishonchni kengaytirgan.

O'xshash maqolalar