SSTP qatlamlari tushuntirildi: ichki paket hali nimani oshkor qiladi
SSTP PPP va ichki paketni TLS ichiga o’raydi, lekin tashqi TCP ulanishi kim kim bilan gaplashganini hali ham ko’rsatadi. Har bir qatlamni yozib olishdan oldin belgilang.
Ko’pchilik tushuntirishlarda SSTP haqidagi ikki fakt birlashadi va aynan shu birlashuv yozib olishlarni chalkashtiradi. Ilova paketi himoyalangan kanal ichida saqlanib qoladi, o’sha kanalni tashuvchi TCP ulanish esa butun yo’l davomida o’z manzillarini saqlaydi. Sim bo’ylab tashuvchi va uning yuki o’tadi, hech qachon ulardan birining o’rnini bosuvchi emas. Stekni tashqaridan ichkariga qarab yuring va kesib o’tgan har bir chegarani belgilang.
Tashqi tashuvchidan boshlang
Simdagi birinchi narsa 443 portiga oddiy TCP ulanishi bo’lib, routerlar uzatadigan haqiqiy manzillarga ega. Aynan shu ulanish tarmoq manzillari tarjimasidan omon qoladi va kirish provayderi sanashi mumkin bo’lgan narsa ham shudir. Yukni himoya qilish tashuvchini olib tashlamaydi va u hajmni ham, vaqtni ham yashirmaydi.
Bu nuqtadan keyingi hamma narsa marshrutlanmaydi, balki tashiladi. Ichki almashinuv muvaffaqiyatsiz bo’lsa ham tashuvchi ishlashda davom etadi.
Inkapsulyatsiyani ichkariga kuzatib boring
Himoyalangan kanal ichida SSTP boshqaruv almashinuvi, so’ngra PPP sessiyasi, so’ngra mijoz yetkazilishini istagan tarmoq paketi joylashgan. Har bir qatlamning o’z muzokarasi, o’z xato xabarlari va o’z holat mashinasi bor. Shuning uchun nosozlik bir qarashda TLS nosozligidek, boshqasida PPP nosozligidek ko’rinishi mumkin. Qatlamlarni tartib bilan o’qish qaysi holat mashinasi to’xtaganini aytadi.
Bitta yozib olish butun stekni kamdan-kam ko’rsatadi. Tashqi sarlavhalar faqat oxirgi nuqtadan tashqarida ko’rinadi, ichkilari esa faqat dekapsulyatsiyadan keyin. Bu assimetriya protokoldan emas, siz turgan joydan keladi.
Quyidagi diagramma qatlamlarni guruhlaydi, shunda ular haqida umuman gapirish mumkin bo’ladi. U bayt tartibi emas, har bir paketga bitta yozuv va’da qilmaydi va bitta amalga oshirish qancha kriptografik operatsiya bajarishi haqida hech narsa demaydi.
outer IP header
TCP to port 443
TLS record layer
SSTP control and data packets
PPP frames
inner IP packet
application transport and payload
Yozib olishni o’qishdan oldin kuzatuvchini belgilang
Bitta sessiyaning ikkita yozib olinishi turli savollarga javob beradi va qaysi savolga qaysi biri javob berishini ular olingan interfeys belgilaydi. Kirish yo’lida siz tashuvchini va TLS yozuvlarini ko’rasiz, ichki manzilni ko’rmasdan o’lcham va intervallarni o’lchashingiz mumkin. Oxirgi nuqtada, dekapsulyatsiyadan keyin, ichki paket xususiy yo’naltirish siyosati ostidagi oddiy trafikdir.
Har bir yozib olishni talqin qilishdan oldin unga interfeys va yo’nalishni yozing. Jismoniy adapterdan olingan iz hech qachon ichki ilova manzillarini oddiy tashqi maydonlar sifatida ko’rsatmaydi va bu yo’qlikni shifrlash nosozligi deb o’qish keng tarqalgan xatodir. Tunnel ichidan olingan iz hech qanday tashuvchini ko’rsatmaydi, shuning uchun provayderning qarashi haqidagi savolga javob bera olmaydi. Xuddi shu intizom oxirgi nuqta jurnallariga ham tegishli; ular mazmunni emas, muzokara tartibini qayd etadi.
Diagramma isbotlay olmaydigan tekshiruvlarni saqlang
Qatlamlar tartibi biron joylashtirish server sertifikatini tekshirishini, qo’llab-quvvatlanadigan TLS versiyasi bo’yicha muzokara qilishini yoki hisobga ruxsat berishini isbotlamaydi. Ularning har biri inkapsulyatsiyadan mustaqil ravishda muvaffaqiyatsiz bo’ladigan konfiguratsiya qaroridir.
Ularni chizmadan xulosa chiqarish o’rniga nima bo’yicha muzokara qilganini bildiradigan mijoz bilan tekshiring. TLS qo’l berishdan boshlang, so’ngra SSTP almashinuvi, so’ngra PPP va xatoni bildirgan birinchi bosqichda to’xtang. Birinchi buyruq zanjirni va kelishilgan versiyani chop etadi, ikkinchisi yozib olishdagi qo’l berishlarni sanab o’tadi.
openssl s_client -connect vpn.corp.internal:443 -servername vpn.corp.internal
tshark -r sstp.pcap -Y "tls.handshake.type == 1"