SSTP sluoksniai paaiškinti: ką dar atskleidžia vidinis paketas
SSTP įvynioja PPP ir vidinį paketą į TLS, tačiau išorinė TCP jungtis vis tiek rodo, kas su kuo kalbėjosi. Pažymėkite kiekvieną sluoksnį prieš skaitydami įrašą.
Daugumoje paaiškinimų du faktai apie SSTP susilieja, ir būtent tas susiliejimas daro įrašus painius. Programos paketas išlieka apsaugotame kanale, o tą kanalą nešanti TCP jungtis visą laiką išlaiko savo adresus. Per laidą eina nešėjas su savo kroviniu, niekada ne vieno iš jų pakaitalas. Pereikite krūvą iš išorės į vidų ir pažymėkite kiekvieną ribą, kurią kertate.
Pradėkite nuo išorinio nešėjo
Pirmas dalykas laide yra įprasta TCP jungtis į 443 prievadą su tikrais adresais, kuriuos maršrutizatoriai persiunčia. Būtent ši jungtis išlieka po tinklo adresų vertimo ir yra tai, ką prieigos tiekėjas gali suskaičiuoti. Naudingosios apkrovos apsauga nepašalina nešėjo, ir ji nepaslepia apimties ar laiko.
Viskas po šio taško yra nešama, o ne maršrutizuojama. Nešėjas veikia toliau net tada, kai vidinis apsikeitimas nepavyksta.
Sekite inkapsuliavimą į vidų
Apsaugotame kanale yra SSTP valdymo apsikeitimas, paskui PPP sesija, paskui tinklo paketas, kurį klientas nori gauti. Kiekvienas sluoksnis turi savo derybas, savo klaidų pranešimus ir savo būsenos mašiną. Todėl gedimas iš vieno požiūrio gali atrodyti kaip TLS gedimas, o iš kito kaip PPP gedimas. Skaitydami sluoksnius iš eilės sužinosite, kuri būsenos mašina sustojo.
Vienas įrašas retai parodo visą krūvą. Išorinės antraštės matomos tik už galinio taško, o vidinės tik po dekapsuliavimo. Šis asimetriškumas kyla iš to, kur stovite, o ne iš protokolo.
Toliau pateikta schema sugrupuoja sluoksnius, kad apie juos apskritai būtų galima kalbėti. Tai ne baitų išdėstymas, ji nežada vieno įrašo vienam paketui ir nieko nesako apie tai, kiek kriptografinių operacijų atlieka įgyvendinimas.
outer IP header
TCP to port 443
TLS record layer
SSTP control and data packets
PPP frames
inner IP packet
application transport and payload
Pažymėkite stebėtoją prieš skaitydami įrašą
Du tos pačios sesijos įrašai atsako į skirtingus klausimus, ir sąsaja, kurioje jie padaryti, nulemia, į kuriuos. Prieigos kelyje matote nešėją ir TLS įrašus, ir galite matuoti dydžius bei intervalus nematydami vidinio adreso. Galiniame taške, po dekapsuliavimo, vidinis paketas yra įprastas srautas pagal privačią perdavimo politiką.
Užrašykite sąsają ir kryptį kiekviename įraše prieš jį aiškindami. Pėdsakas iš fizinio adapterio niekada neparodys vidinės programos adresų kaip įprastų išorinių laukų, o šio nebuvimo skaitymas kaip šifravimo gedimo yra dažna klaida. Pėdsakas iš tunelio vidaus visai neparodo nešėjo, todėl negali atsakyti į klausimą apie tiekėjo požiūrį. Ta pati disciplina galioja galinio taško žurnalams, kurie fiksuoja derybų eiliškumą, o ne turinį.
Išsaugokite patikras, kurių schema negali įrodyti
Sluoksnių tvarka neįrodo, kad diegimas tikrina serverio sertifikatą, derasi dėl palaikomos TLS versijos ar suteikia teisę paskyrai. Kiekvienas iš jų yra konfigūracijos sprendimas, kuris nepavyksta nepriklausomai nuo inkapsuliavimo.
Patikrinkite juos klientu, kuris praneša, dėl ko derėjosi, o ne spręskite iš brėžinio. Pradėkite nuo TLS rankos paspaudimo, paskui SSTP apsikeitimo, paskui PPP ir sustokite pirmame etape, kuris praneša apie klaidą. Pirmoji komanda išspausdina grandinę ir suderintą versiją, o antroji išvardija įraše esančius rankos paspaudimus.
openssl s_client -connect vpn.corp.internal:443 -servername vpn.corp.internal
tshark -r sstp.pcap -Y "tls.handshake.type == 1"